From 3ec67daa35d554403fa6f69a6f74e4c13b1fd3aa Mon Sep 17 00:00:00 2001 From: ProxySU Date: Sun, 27 Sep 2020 20:36:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=BB=93=E6=9E=84=EF=BC=8C=E5=AF=B9Padavan=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=9B=BA=E4=BB=B6=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProxySU/MainWindow.xaml | 20 +- ProxySU/MainWindow.xaml.cs | 797 +++++++++++++----- ProxySU/Properties/AssemblyInfo.cs | 4 +- ProxySU/ProxySU.csproj | 2 +- ProxySU/Translations/ProxySU.en-US.xaml | 1 + ProxySU/Translations/ProxySU.zh-CN.xaml | 1 + ProxySU/Translations/ProxySU.zh-TW.xaml | 1 + ProxySU/bin/Beta/Beta.zip | Bin 547279 -> 564314 bytes TemplateConfg/Http2Web_client_config.json | 52 -- TemplateConfg/Http2Web_server_config.json | 33 - .../Http2selfSigned_client_config.json | 52 -- .../Http2selfSigned_server_config.json | 34 - .../WebSocketTLSWeb_client_config.json | 49 -- .../WebSocketTLSWeb_server_config.json | 29 - ...WebSocketTLS_selfSigned_client_config.json | 52 -- ...WebSocketTLS_selfSigned_server_config.json | 34 - .../WebSocket_TLS_client_config.json | 49 -- .../WebSocket_TLS_server_config.json | 37 - TemplateConfg/http2_client_config.json | 49 -- TemplateConfg/http2_server_config.json | 37 - TemplateConfg/mkcp_client_config.json | 54 -- TemplateConfg/mkcp_server_config.json | 34 - .../naive_client_config.json} | 0 .../naive_server_config.json} | 0 TemplateConfg/quic_client_config.json | 51 -- TemplateConfg/quic_server_config.json | 33 - .../WebSocketTLSWeb.caddyfile} | 0 .../ss_obfs_http_web_config.caddyfile | 0 TemplateConfg/{ => ss}/ss_server_config.json | 0 .../ss_tls_caddy_config.caddyfile} | 0 TemplateConfg/ssr/ssr_tls.caddyfile | 8 + .../tcpTLSselfSigned_client_config.json | 49 -- .../tcpTLSselfSigned_server_config.json | 31 - TemplateConfg/tcp_TLS_server_config.json | 34 - TemplateConfg/tcp_client_config.json | 45 - TemplateConfg/tcp_http_client_config.json | 75 -- TemplateConfg/tcp_http_server_config.json | 50 -- TemplateConfg/tcp_server_config.json | 22 - .../trojan-go.caddyfile} | 0 .../{ => trojan-go}/trojan-go_all_config.json | 0 TemplateConfg/trojan/trojan.caddyfile | 8 + .../{ => trojan}/trojan_client_config.json | 0 .../{ => trojan}/trojan_server_config.json | 0 TemplateConfg/v2ray/base.json | 12 + .../caddy/Http2Web.caddyfile} | 0 .../v2ray/caddy/WebSocketTLSWeb.caddyfile | 16 + .../v2ray/caddy/vlessTcpTlsWeb.caddyfile | 8 + TemplateConfg/v2ray/client/00_log/00_log.json | 5 + TemplateConfg/v2ray/client/01_api/01_api.json | 3 + TemplateConfg/v2ray/client/02_dns/02_dns.json | 3 + .../v2ray/client/03_routing/03_routing.json | 3 + .../v2ray/client/04_policy/04_policy.json | 3 + .../v2ray/client/05_inbounds/05_inbounds.json | 22 + .../client/06_outbounds/06_outbounds.json | 3 + .../06_outbounds/Http2Web_client_config.json | 32 + .../Http2selfSigned_client_config.json | 32 + .../WebSocketTLSWeb_client_config.json | 29 + ...WebSocketTLS_selfSigned_client_config.json | 32 + .../WebSocket_TLS_client_config.json | 29 + .../06_outbounds/http2_client_config.json | 29 + .../06_outbounds/mkcp_client_config.json | 34 + .../06_outbounds/quic_client_config.json | 31 + .../tcpTLSselfSigned_client_config.json | 29 + .../06_outbounds}/tcp_TLS_client_config.json | 20 - .../06_outbounds/tcp_client_config.json | 25 + .../06_outbounds/tcp_http_client_config.json | 55 ++ .../tcp_vless_tls_caddy_cilent_config.json | 17 - .../06_outbounds/webSocket_client_config.json | 25 + .../client/07_transport/07_transport.json | 3 + .../v2ray/client/08_stats/08_stats.json | 3 + .../v2ray/client/09_reverse/09_reverse.json | 3 + TemplateConfg/v2ray/server/00_log/00_log.json | 5 + TemplateConfg/v2ray/server/01_api/01_api.json | 3 + TemplateConfg/v2ray/server/02_dns/02_dns.json | 3 + .../v2ray/server/03_routing/03_routing.json | 14 + .../v2ray/server/04_policy/04_policy.json | 3 + .../server/05_inbounds/00_padavan_router.json | 9 + .../v2ray/server/05_inbounds/05_inbounds.json | 3 + .../05_inbounds/Http2Web_server_config.json | 27 + .../Http2selfSigned_server_config.json | 28 + .../WebSocketTLSWeb_server_config.json | 23 + ...WebSocketTLS_selfSigned_server_config.json | 28 + .../WebSocket_TLS_server_config.json | 31 + .../05_inbounds/http2_server_config.json | 31 + .../05_inbounds/mkcp_server_config.json | 28 + .../05_inbounds/quic_server_config.json | 26 + .../tcpTLSselfSigned_server_config.json | 25 + .../05_inbounds/tcp_TLS_server_config.json | 28 + .../05_inbounds/tcp_http_server_config.json | 44 + .../server/05_inbounds/tcp_server_config.json | 16 + .../tcp_vless_tls_caddy_server_config.json | 8 - .../05_inbounds/webSocket_server_config.json | 19 + .../server/06_outbounds/06_outbounds.json | 12 + .../server/07_transport/07_transport.json | 3 + .../v2ray/server/08_stats/08_stats.json | 3 + .../v2ray/server/09_reverse/09_reverse.json | 3 + TemplateConfg/webSocket_client_config.json | 45 - TemplateConfg/webSocket_server_config.json | 25 - 98 files changed, 1489 insertions(+), 1337 deletions(-) delete mode 100644 TemplateConfg/Http2Web_client_config.json delete mode 100644 TemplateConfg/Http2Web_server_config.json delete mode 100644 TemplateConfg/Http2selfSigned_client_config.json delete mode 100644 TemplateConfg/Http2selfSigned_server_config.json delete mode 100644 TemplateConfg/WebSocketTLSWeb_client_config.json delete mode 100644 TemplateConfg/WebSocketTLSWeb_server_config.json delete mode 100644 TemplateConfg/WebSocketTLS_selfSigned_client_config.json delete mode 100644 TemplateConfg/WebSocketTLS_selfSigned_server_config.json delete mode 100644 TemplateConfg/WebSocket_TLS_client_config.json delete mode 100644 TemplateConfg/WebSocket_TLS_server_config.json delete mode 100644 TemplateConfg/http2_client_config.json delete mode 100644 TemplateConfg/http2_server_config.json delete mode 100644 TemplateConfg/mkcp_client_config.json delete mode 100644 TemplateConfg/mkcp_server_config.json rename TemplateConfg/{Naiveproxy_client_config.json => naive/naive_client_config.json} (100%) rename TemplateConfg/{Naiveproxy_server_config.json => naive/naive_server_config.json} (100%) delete mode 100644 TemplateConfg/quic_client_config.json delete mode 100644 TemplateConfg/quic_server_config.json rename TemplateConfg/{WebSocketTLSWeb_server_config.caddyfile => ss/WebSocketTLSWeb.caddyfile} (100%) rename TemplateConfg/{ => ss}/ss_obfs_http_web_config.caddyfile (100%) rename TemplateConfg/{ => ss}/ss_server_config.json (100%) rename TemplateConfg/{ssr_tls_caddy_config.caddyfile => ss/ss_tls_caddy_config.caddyfile} (100%) create mode 100644 TemplateConfg/ssr/ssr_tls.caddyfile delete mode 100644 TemplateConfg/tcpTLSselfSigned_client_config.json delete mode 100644 TemplateConfg/tcpTLSselfSigned_server_config.json delete mode 100644 TemplateConfg/tcp_TLS_server_config.json delete mode 100644 TemplateConfg/tcp_client_config.json delete mode 100644 TemplateConfg/tcp_http_client_config.json delete mode 100644 TemplateConfg/tcp_http_server_config.json delete mode 100644 TemplateConfg/tcp_server_config.json rename TemplateConfg/{trojan_caddy_config.caddyfile => trojan-go/trojan-go.caddyfile} (100%) rename TemplateConfg/{ => trojan-go}/trojan-go_all_config.json (100%) create mode 100644 TemplateConfg/trojan/trojan.caddyfile rename TemplateConfg/{ => trojan}/trojan_client_config.json (100%) rename TemplateConfg/{ => trojan}/trojan_server_config.json (100%) create mode 100644 TemplateConfg/v2ray/base.json rename TemplateConfg/{Http2Web_server_config.caddyfile => v2ray/caddy/Http2Web.caddyfile} (100%) create mode 100644 TemplateConfg/v2ray/caddy/WebSocketTLSWeb.caddyfile create mode 100644 TemplateConfg/v2ray/caddy/vlessTcpTlsWeb.caddyfile create mode 100644 TemplateConfg/v2ray/client/00_log/00_log.json create mode 100644 TemplateConfg/v2ray/client/01_api/01_api.json create mode 100644 TemplateConfg/v2ray/client/02_dns/02_dns.json create mode 100644 TemplateConfg/v2ray/client/03_routing/03_routing.json create mode 100644 TemplateConfg/v2ray/client/04_policy/04_policy.json create mode 100644 TemplateConfg/v2ray/client/05_inbounds/05_inbounds.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/06_outbounds.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/Http2Web_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/Http2selfSigned_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/WebSocketTLSWeb_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/WebSocketTLS_selfSigned_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/WebSocket_TLS_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/http2_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/mkcp_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/quic_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/tcpTLSselfSigned_client_config.json rename TemplateConfg/{ => v2ray/client/06_outbounds}/tcp_TLS_client_config.json (60%) create mode 100644 TemplateConfg/v2ray/client/06_outbounds/tcp_client_config.json create mode 100644 TemplateConfg/v2ray/client/06_outbounds/tcp_http_client_config.json rename TemplateConfg/{ => v2ray/client/06_outbounds}/tcp_vless_tls_caddy_cilent_config.json (66%) create mode 100644 TemplateConfg/v2ray/client/06_outbounds/webSocket_client_config.json create mode 100644 TemplateConfg/v2ray/client/07_transport/07_transport.json create mode 100644 TemplateConfg/v2ray/client/08_stats/08_stats.json create mode 100644 TemplateConfg/v2ray/client/09_reverse/09_reverse.json create mode 100644 TemplateConfg/v2ray/server/00_log/00_log.json create mode 100644 TemplateConfg/v2ray/server/01_api/01_api.json create mode 100644 TemplateConfg/v2ray/server/02_dns/02_dns.json create mode 100644 TemplateConfg/v2ray/server/03_routing/03_routing.json create mode 100644 TemplateConfg/v2ray/server/04_policy/04_policy.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/00_padavan_router.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/05_inbounds.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/Http2Web_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/Http2selfSigned_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/WebSocketTLSWeb_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/WebSocketTLS_selfSigned_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/WebSocket_TLS_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/http2_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/mkcp_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/quic_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/tcpTLSselfSigned_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/tcp_TLS_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/tcp_http_server_config.json create mode 100644 TemplateConfg/v2ray/server/05_inbounds/tcp_server_config.json rename TemplateConfg/{ => v2ray/server/05_inbounds}/tcp_vless_tls_caddy_server_config.json (88%) create mode 100644 TemplateConfg/v2ray/server/05_inbounds/webSocket_server_config.json create mode 100644 TemplateConfg/v2ray/server/06_outbounds/06_outbounds.json create mode 100644 TemplateConfg/v2ray/server/07_transport/07_transport.json create mode 100644 TemplateConfg/v2ray/server/08_stats/08_stats.json create mode 100644 TemplateConfg/v2ray/server/09_reverse/09_reverse.json delete mode 100644 TemplateConfg/webSocket_client_config.json delete mode 100644 TemplateConfg/webSocket_server_config.json diff --git a/ProxySU/MainWindow.xaml b/ProxySU/MainWindow.xaml index 5267ef5..944709d 100644 --- a/ProxySU/MainWindow.xaml +++ b/ProxySU/MainWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ProxySU" mc:Ignorable="d" - Title="ProxySU - v2.2.2" Height="675" Width="620"> + Title="ProxySU - v2.2.3" Height="675" Width="620"> @@ -77,10 +77,10 @@ - - + + - + @@ -94,12 +94,12 @@ - + - - + + @@ -139,13 +139,13 @@ - + - + - + diff --git a/ProxySU/MainWindow.xaml.cs b/ProxySU/MainWindow.xaml.cs index 666e703..4d3fdea 100644 --- a/ProxySU/MainWindow.xaml.cs +++ b/ProxySU/MainWindow.xaml.cs @@ -129,6 +129,7 @@ namespace ProxySU } #region 端口数字防错代码,密钥选择代码 检测新版本代码 + //检测ProxySU新版本 private void TestLatestVersionProxySU(TextBlock TextBlockLastVersionProxySU,TextBlock TextBlockNewVersionReminder,Button ButtonUpgradeProxySU) { @@ -138,17 +139,37 @@ namespace ProxySU JObject lastVerJsonObj = JObject.Parse(strJson); string lastVersion = (string)lastVerJsonObj["tag_name"];//得到远程版本信息 + string lastVersionNoV = lastVersion.Replace("v", String.Empty); + Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; - string cerversion = "v" + version.ToString().Substring(0, 5); //获取本地版本信息 + string cerversion = version.ToString().Substring(0, 5); //获取本地版本信息 + //MessageBox.Show(cerversion); + string[] lastVerComp = lastVersionNoV.Split('.'); + string[] localVerComp = cerversion.Split('.'); //版本信息不相同,则认为新版本发布,显示出新版本信息及更新提醒,下载按钮 - if (String.Equals(lastVersion, cerversion) == false) + if (int.Parse(lastVerComp[0]) > int.Parse(localVerComp[0])) { TextBlockLastVersionProxySU.Dispatcher.BeginInvoke(updateNewVersionProxySUAction, TextBlockLastVersionProxySU, TextBlockNewVersionReminder, ButtonUpgradeProxySU, lastVersion); + return; + } + else if (int.Parse(lastVerComp[0]) == int.Parse(localVerComp[0])) + { + if (int.Parse(lastVerComp[1]) > int.Parse(localVerComp[1])) + { + TextBlockLastVersionProxySU.Dispatcher.BeginInvoke(updateNewVersionProxySUAction, TextBlockLastVersionProxySU, TextBlockNewVersionReminder, ButtonUpgradeProxySU, lastVersion); + return; + } + else if (int.Parse(lastVerComp[1]) == int.Parse(localVerComp[1])) + { + if (int.Parse(lastVerComp[2]) > int.Parse(localVerComp[2])) + { + TextBlockLastVersionProxySU.Dispatcher.BeginInvoke(updateNewVersionProxySUAction, TextBlockLastVersionProxySU, TextBlockNewVersionReminder, ButtonUpgradeProxySU, lastVersion); + return; + } + } } - } - } //下载最新版ProxySU @@ -833,11 +854,7 @@ namespace ProxySU return; } - //读取模板配置 - - string serverConfig=""; //服务端配置文件 - string clientConfig = ""; //生成的客户端配置文件 - string upLoadPath = "/usr/local/etc/v2ray/config.json"; //服务端文件位置 + //生成客户端配置时,连接的服务主机的IP或者域名 if (String.IsNullOrEmpty(ReceiveConfigurationParameters[4])==true) { @@ -851,98 +868,33 @@ namespace ProxySU MessageBox.Show(Application.Current.FindResource("MessageBoxShow_ChooseTemplate").ToString()); return; } - else if (String.Equals(ReceiveConfigurationParameters[0], "TCP")) + else if (String.Equals(ReceiveConfigurationParameters[0], "TCP") + || String.Equals(ReceiveConfigurationParameters[0], "TCPhttp") + || String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") + || String.Equals(ReceiveConfigurationParameters[0], "webSocket") + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") + || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") + || ReceiveConfigurationParameters[0].Contains("mKCP") + || ReceiveConfigurationParameters[0].Contains("Quic")) { testDomain = false; - serverConfig = "TemplateConfg\\tcp_server_config.json"; - clientConfig = "TemplateConfg\\tcp_client_config.json"; + } - else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")) - { - testDomain = false; - serverConfig = "TemplateConfg\\tcp_http_server_config.json"; - clientConfig = "TemplateConfg\\tcp_http_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS")) + else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS") + || String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") + || String.Equals(ReceiveConfigurationParameters[0], "Http2") + || String.Equals(ReceiveConfigurationParameters[0], "http2Web")) { testDomain = true; - serverConfig = "TemplateConfg\\tcp_TLS_server_config.json"; - clientConfig = "TemplateConfg\\tcp_TLS_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")) - { - testDomain = false; - serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json"; - clientConfig = "TemplateConfg\\tcpTLSselfSigned_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) - { - testDomain = true; - serverConfig = "TemplateConfg\\tcp_vless_tls_caddy_server_config.json"; - clientConfig = "TemplateConfg\\tcp_vless_tls_caddy_cilent_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket")) - { - testDomain = false; - serverConfig = "TemplateConfg\\webSocket_server_config.json"; - clientConfig = "TemplateConfg\\webSocket_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS")) - { - testDomain = true; - serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json"; - clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")) - { - testDomain = false; - serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json"; - clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) - { - testDomain = true; - serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json"; - clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "Http2")) - { - testDomain = true; - serverConfig = "TemplateConfg\\http2_server_config.json"; - clientConfig = "TemplateConfg\\http2_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web")) - { - testDomain = true; - serverConfig = "TemplateConfg\\Http2Web_server_config.json"; - clientConfig = "TemplateConfg\\Http2Web_client_config.json"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")) - { - testDomain = false; - serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json"; - clientConfig = "TemplateConfg\\Http2selfSigned_client_config.json"; - } - //else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard")) - else if (ReceiveConfigurationParameters[0].Contains("mKCP")) - { - testDomain = false; - serverConfig = "TemplateConfg\\mkcp_server_config.json"; - clientConfig = "TemplateConfg\\mkcp_client_config.json"; + } - // else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard")) - else if (ReceiveConfigurationParameters[0].Contains("Quic")) - { - testDomain = false; - serverConfig = "TemplateConfg\\quic_server_config.json"; - clientConfig = "TemplateConfg\\quic_client_config.json"; - } //Thread thread //SetUpProgressBarProcessing(0); //重置安装进度 installationDegree = 0; - Thread thread = new Thread(() => StartSetUpV2ray(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); + Thread thread = new Thread(() => StartSetUpV2ray(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); // Task task = new Task(() => StartSetUpRemoteHost(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); @@ -951,7 +903,7 @@ namespace ProxySU } //登录远程主机布署V2ray程序 - private void StartSetUpV2ray(ConnectionInfo connectionInfo,TextBlock textBlockName, ProgressBar progressBar, string serverConfig,string clientConfig,string upLoadPath) + private void StartSetUpV2ray(ConnectionInfo connectionInfo,TextBlock textBlockName, ProgressBar progressBar) { //******"正在登录远程主机......"****** @@ -1663,62 +1615,254 @@ namespace ProxySU //Thread.Sleep(1000); //生成服务端配置 - //serverConfig = @""; - using (StreamReader reader = File.OpenText(serverConfig)) + + //依据所选择的模式选择配置文件 + string logConfigJson = @"TemplateConfg\v2ray\server\00_log\00_log.json"; + string apiConfigJson = @"TemplateConfg\v2ray\server\01_api\01_api.json"; + string dnsConfigJson = @"TemplateConfg\v2ray\server\02_dns\02_dns.json"; + string routingConfigJson = @"TemplateConfg\v2ray\server\03_routing\03_routing.json"; + string policyConfigJson = @"TemplateConfg\v2ray\server\04_policy\04_policy.json"; + string inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\05_inbounds.json"; + string outboundsConfigJson = @"TemplateConfg\v2ray\server\06_outbounds\06_outbounds.json"; + string transportConfigJson = @"TemplateConfg\v2ray\server\07_transport\07_transport.json"; + string statsConfigJson = @"TemplateConfg\v2ray\server\08_stats\08_stats.json"; + string reverseConfigJson = @"TemplateConfg\v2ray\server\09_reverse\09_reverse.json"; + string baseConfigJson = @"TemplateConfg\v2ray\base.json"; + string serverRemoteConfig = @"/usr/local/etc/v2ray/config.json"; + + using (StreamReader reader = File.OpenText(baseConfigJson)) { JObject serverJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader)); - //设置uuid - serverJson["inbounds"][0]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2]; - //除WebSocketTLSWeb/http2Web/VlessTcpTlsWeb模式外设置监听端口 - if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == false && String.Equals(ReceiveConfigurationParameters[0], "http2Web") == false && String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == false) + //读取"log" + using (StreamReader readerJson = File.OpenText(logConfigJson)) { - serverJson["inbounds"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]); + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["log"] = jObjectJson["log"]; } - if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true) + //读取"api" + using (StreamReader readerJson = File.OpenText(apiConfigJson)) { - //设置Caddy随机监听的端口,用于Trojan-go,Trojan,V2Ray vless TLS - //Random random = new Random(); - randomCaddyListenPort = GetRandomPort(); - //指向Caddy监听的随机端口 - serverJson["inbounds"][0]["settings"]["fallbacks"][0]["dest"] = randomCaddyListenPort; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["api"] = jObjectJson["api"]; } - //TLS自签证书/WebSocketTLS(自签证书)/http2自签证书模式下,使用v2ctl 生成自签证书 - if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true || String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + //读取"dns" + using (StreamReader readerJson = File.OpenText(dnsConfigJson)) { - string selfSignedCa = client.RunCommand("/usr/local/bin/v2ctl cert --ca").Result; - JObject selfSignedCaJObject = JObject.Parse(selfSignedCa); - serverJson["inbounds"][0]["streamSettings"]["tlsSettings"]["certificates"][0] = selfSignedCaJObject; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["dns"] = jObjectJson["dns"]; } - //如果是WebSocketTLSWeb/WebSocketTLS/WebSocketTLS(自签证书)模式,则设置路径 - if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true) + //读取"routing" + using (StreamReader readerJson = File.OpenText(routingConfigJson)) { - serverJson["inbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3]; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["routing"] = jObjectJson["routing"]; } - //如果是Http2/http2Web/http2自签模式下,设置路径 - if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + //读取"policy" + using (StreamReader readerJson = File.OpenText(policyConfigJson)) { - serverJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["policy"] = jObjectJson["policy"]; } - //如果是Http2Web模式下,设置host - if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) + //读取"inbounds" + using (StreamReader readerJson = File.OpenText(inboundsConfigJson)) { - // serverJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; - serverJson["inbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4]; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["inbounds"] = jObjectJson["inbounds"]; } - //mkcp模式下,设置伪装类型 - if (ReceiveConfigurationParameters[0].Contains("mKCP") == true) + //读取"outbounds" + using (StreamReader readerJson = File.OpenText(outboundsConfigJson)) { - serverJson["inbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; - if (String.IsNullOrEmpty(ReceiveConfigurationParameters[6])==false ) + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["outbounds"] = jObjectJson["outbounds"]; + } + //读取"transport" + using (StreamReader readerJson = File.OpenText(transportConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["transport"] = jObjectJson["transport"]; + } + //读取"stats" + using (StreamReader readerJson = File.OpenText(statsConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["stats"] = jObjectJson["stats"]; + } + //读取"reverse" + using (StreamReader readerJson = File.OpenText(reverseConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + serverJson["reverse"] = jObjectJson["reverse"]; + } + + //依据安装模式读取相应模板 + if (String.Equals(ReceiveConfigurationParameters[0], "TCP")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_server_config.json"; + //serverConfig = "TemplateConfg\\tcp_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_http_server_config.json"; + //serverConfig = "TemplateConfg\\tcp_http_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_http_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_TLS_server_config.json"; + //serverConfig = "TemplateConfg\\tcp_TLS_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_TLS_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcpTLSselfSigned_server_config.json"; + //serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json"; + //clientConfig = "TemplateConfg\\tcpTLSselfSigned_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\tcp_vless_tls_caddy_server_config.json"; + //serverConfig = "TemplateConfg\\tcp_vless_tls_caddy_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_vless_tls_caddy_cilent_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\webSocket_server_config.json"; + //serverConfig = "TemplateConfg\\webSocket_server_config.json"; + //clientConfig = "TemplateConfg\\webSocket_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocket_TLS_server_config.json"; + //serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json"; + //clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLS_selfSigned_server_config.json"; + //serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json"; + //clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\WebSocketTLSWeb_server_config.json"; + //serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json"; + //clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "Http2")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\http2_server_config.json"; + //serverConfig = "TemplateConfg\\http2_server_config.json"; + //clientConfig = @"TemplateConfg\http2_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\Http2Web_server_config.json"; + //serverConfig = "TemplateConfg\\Http2Web_server_config.json"; + //clientConfig = "TemplateConfg\\Http2Web_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\Http2selfSigned_server_config.json"; + //serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json"; + //clientConfig = "TemplateConfg\\Http2selfSigned_client_config.json"; + } + //else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard")) + else if (ReceiveConfigurationParameters[0].Contains("mKCP")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\mkcp_server_config.json"; + //serverConfig = "TemplateConfg\\mkcp_server_config.json"; + //clientConfig = "TemplateConfg\\mkcp_client_config.json"; + } + + // else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard")) + else if (ReceiveConfigurationParameters[0].Contains("Quic")) + { + inboundsConfigJson = @"TemplateConfg\v2ray\server\05_inbounds\quic_server_config.json"; + //serverConfig = "TemplateConfg\\quic_server_config.json"; + //clientConfig = "TemplateConfg\\quic_client_config.json"; + } + + //读取"inbounds" + using (StreamReader readerJson = File.OpenText(inboundsConfigJson)) + { + JObject jObjectJsonTmp = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + var jObjectJson = (dynamic)jObjectJsonTmp; + + //Padavan路由固件服务端设置(因为客户端分流有问题所以在服务端弥补) + string sniffingAddServer = @"TemplateConfg\v2ray\server\05_inbounds\00_padavan_router.json"; + using (StreamReader readerSniffingJson = File.OpenText(sniffingAddServer)) { - serverJson["inbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6]; + JObject jObjectSniffingJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerSniffingJson)); + //JObject sniffing = (JObject)jObjectSniffingJson["sniffing"]; + //jObjectJson.Property("streamSettings").AddAfterSelf(new JProperty("sniffing", sniffing)); + //jObjectJson["inbounds"][0]["protocol"].AddAfterSelf(new JProperty("sniffing", sniffing)); + jObjectJson["inbounds"][0]["sniffing"] = jObjectSniffingJson["sniffing"]; + } - } - //quic模式下设置伪装类型及密钥 - if (ReceiveConfigurationParameters[0].Contains("Quic") == true) - { - serverJson["inbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; - serverJson["inbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6]; + + //设置uuid + jObjectJson["inbounds"][0]["settings"]["clients"][0]["id"] = ReceiveConfigurationParameters[2]; + //除WebSocketTLSWeb/http2Web/VlessTcpTlsWeb模式外设置监听端口 + if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == false + && String.Equals(ReceiveConfigurationParameters[0], "http2Web") == false + && String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == false) + { + jObjectJson["inbounds"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]); + } + if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb") == true) + { + //设置Caddy随机监听的端口,用于Trojan-go,Trojan,V2Ray vless TLS + //Random random = new Random(); + randomCaddyListenPort = GetRandomPort(); + //指向Caddy监听的随机端口 + jObjectJson["inbounds"][0]["settings"]["fallbacks"][0]["dest"] = randomCaddyListenPort; + } + //TLS自签证书/WebSocketTLS(自签证书)/http2自签证书模式下,使用v2ctl 生成自签证书 + if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + { + string selfSignedCa = client.RunCommand("/usr/local/bin/v2ctl cert --ca").Result; + JObject selfSignedCaJObject = JObject.Parse(selfSignedCa); + jObjectJson["inbounds"][0]["streamSettings"]["tlsSettings"]["certificates"][0] = selfSignedCaJObject; + } + //如果是WebSocketTLSWeb/WebSocketTLS/WebSocketTLS(自签证书)模式,则设置路径 + if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true + || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true) + { + jObjectJson["inbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3]; + } + //如果是Http2/http2Web/http2自签模式下,设置路径 + if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true + || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + { + jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + } + //如果是Http2Web模式下,设置host + if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) + { + // jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + jObjectJson["inbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4]; + } + //mkcp模式下,设置伪装类型 + if (ReceiveConfigurationParameters[0].Contains("mKCP") == true) + { + jObjectJson["inbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; + if (String.IsNullOrEmpty(ReceiveConfigurationParameters[6]) == false) + { + jObjectJson["inbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6]; + } + } + //quic模式下设置伪装类型及密钥 + if (ReceiveConfigurationParameters[0].Contains("Quic") == true) + { + jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; + jObjectJson["inbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6]; + } + serverJson["inbounds"] = jObjectJson["inbounds"]; } using (StreamWriter sw = new StreamWriter(@"config.json")) @@ -1726,8 +1870,8 @@ namespace ProxySU sw.Write(serverJson.ToString()); } } - //upLoadPath="/usr/local/etc/v2ray/config.json"; - UploadConfig(connectionInfo, @"config.json",upLoadPath); + //"/usr/local/etc/v2ray/config.json"; + UploadConfig(connectionInfo, @"config.json", serverRemoteConfig); File.Delete(@"config.json"); @@ -1754,7 +1898,13 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 - + //解决搬瓦工CentOS缺少问题 + sshShellCommand = $"{sshCmdInstall}automake autoconf libtool"; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 + currentShellCommandResult = client.RunCommand(sshShellCommand).Result; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + + sshShellCommand = @"curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | INSTALLONLINE=1 sh"; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 currentShellCommandResult = client.RunCommand(sshShellCommand).Result; @@ -1882,7 +2032,9 @@ namespace ProxySU } //如果是WebSocket+TLS+Web/http2Web/vlessTcpTlsWeb模式,需要安装Caddy - if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") ==true || ReceiveConfigurationParameters[0].Contains("http2Web") == true || ReceiveConfigurationParameters[0].Contains("VlessTcpTlsWeb") == true) + if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") ==true + || ReceiveConfigurationParameters[0].Contains("http2Web") == true + || ReceiveConfigurationParameters[0].Contains("VlessTcpTlsWeb") == true) { //****** "安装Caddy......" ******28 SetUpProgressBarProcessing(70); @@ -2054,7 +2206,7 @@ namespace ProxySU TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 //Thread.Sleep(1000); - + string serverConfig = ""; sshShellCommand = @"mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak"; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 currentShellCommandResult = client.RunCommand(sshShellCommand).Result; @@ -2062,17 +2214,17 @@ namespace ProxySU if (ReceiveConfigurationParameters[0].Contains("WebSocketTLS2Web") == true) { - serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.caddyfile"; + serverConfig = @"TemplateConfg\v2ray\caddy\WebSocketTLSWeb.caddyfile"; } else if (ReceiveConfigurationParameters[0].Contains("http2Web") == true) { - serverConfig = "TemplateConfg\\Http2Web_server_config.caddyfile"; + serverConfig = @"TemplateConfg\v2ray\caddy\Http2Web.caddyfile"; } else if(ReceiveConfigurationParameters[0].Contains("VlessTcpTlsWeb")==true) { - serverConfig = "TemplateConfg\\trojan_caddy_config.caddyfile"; + serverConfig = @"TemplateConfg\v2ray\caddy\vlessTcpTlsWeb.caddyfile"; } - upLoadPath = "/etc/caddy/Caddyfile"; + string upLoadPath = "/etc/caddy/Caddyfile"; client.RunCommand("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak"); UploadConfig(connectionInfo, serverConfig, upLoadPath); @@ -2333,6 +2485,29 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + sshShellCommand = @"sysctl net.ipv4.tcp_congestion_control | grep bbr"; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 + currentShellCommandResult = client.RunCommand(sshShellCommand).Result; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + + if (currentShellCommandResult.Contains("bbr") == true) + { + //****** "BBR启用成功!" ****** + currentStatus = Application.Current.FindResource("DisplayInstallInfo_BBREnabledSuccess").ToString(); + textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); + currentShellCommandResult = currentStatus; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + + } + else + { + //****** "系统不满足启用BBR的条件,启用失败!" ****** + currentStatus = Application.Current.FindResource("DisplayInstallInfo_BBRFailed").ToString(); + textBlockName.Dispatcher.BeginInvoke(updateAction, textBlockName, progressBar, currentStatus); + currentShellCommandResult = currentStatus; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + + } } else if (resultCmdTestBBR.Contains("bbr") == true) { @@ -2361,53 +2536,220 @@ namespace ProxySU currentShellCommandResult = currentStatus; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + logConfigJson = @"TemplateConfg\v2ray\client\00_log\00_log.json"; + apiConfigJson = @"TemplateConfg\v2ray\client\01_api\01_api.json"; + dnsConfigJson = @"TemplateConfg\v2ray\client\02_dns\02_dns.json"; + routingConfigJson = @"TemplateConfg\v2ray\client\03_routing\03_routing.json"; + policyConfigJson = @"TemplateConfg\v2ray\client\04_policy\04_policy.json"; + inboundsConfigJson = @"TemplateConfg\v2ray\client\05_inbounds\05_inbounds.json"; + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\06_outbounds.json"; + transportConfigJson = @"TemplateConfg\v2ray\client\07_transport\07_transport.json"; + statsConfigJson = @"TemplateConfg\v2ray\client\08_stats\08_stats.json"; + reverseConfigJson = @"TemplateConfg\v2ray\client\09_reverse\09_reverse.json"; + baseConfigJson = @"TemplateConfg\v2ray\base.json"; //Thread.Sleep(1000); if (!Directory.Exists("v2ray_config"))//如果不存在就创建file文件夹      { Directory.CreateDirectory("v2ray_config");//创建该文件夹   } - using (StreamReader reader = File.OpenText(clientConfig)) + using (StreamReader reader = File.OpenText(baseConfigJson)) { JObject clientJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader)); - //设置客户端的地址/端口/id - clientJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4]; - clientJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]); - clientJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2]; - //设置WebSocket系统模式下的path - if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true) + //读取"log" + using (StreamReader readerJson = File.OpenText(logConfigJson)) { - clientJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3]; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["log"] = jObjectJson["log"]; } - //设置http2模式下的path - if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true|| String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + //读取"api" + using (StreamReader readerJson = File.OpenText(apiConfigJson)) { - clientJson["outbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["api"] = jObjectJson["api"]; } - //设置http2web模式下的host - if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) + //读取"dns" + using (StreamReader readerJson = File.OpenText(dnsConfigJson)) { - clientJson["outbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4]; + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["dns"] = jObjectJson["dns"]; } - if (ReceiveConfigurationParameters[0].Contains("mKCP") ==true) + //读取"routing" + using (StreamReader readerJson = File.OpenText(routingConfigJson)) { - clientJson["outbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; - if (String.IsNullOrEmpty(ReceiveConfigurationParameters[6]) == false) + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["routing"] = jObjectJson["routing"]; + } + //读取"policy" + using (StreamReader readerJson = File.OpenText(policyConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["policy"] = jObjectJson["policy"]; + } + //读取"inbounds" + using (StreamReader readerJson = File.OpenText(inboundsConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["inbounds"] = jObjectJson["inbounds"]; + } + //读取"outbounds" + using (StreamReader readerJson = File.OpenText(outboundsConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["outbounds"] = jObjectJson["outbounds"]; + } + //读取"transport" + using (StreamReader readerJson = File.OpenText(transportConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["transport"] = jObjectJson["transport"]; + } + //读取"stats" + using (StreamReader readerJson = File.OpenText(statsConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["stats"] = jObjectJson["stats"]; + } + //读取"reverse" + using (StreamReader readerJson = File.OpenText(reverseConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + clientJson["reverse"] = jObjectJson["reverse"]; + } + + if (String.Equals(ReceiveConfigurationParameters[0], "TCP")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_client_config.json"; + //serverConfig = "TemplateConfg\\tcp_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "TCPhttp")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_http_client_config.json"; + //serverConfig = "TemplateConfg\\tcp_http_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_http_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLS")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_TLS_client_config.json"; + //serverConfig = "TemplateConfg\\tcp_TLS_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_TLS_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "tcpTLSselfSigned")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcpTLSselfSigned_client_config.json"; + //serverConfig = "TemplateConfg\\tcpTLSselfSigned_server_config.json"; + //clientConfig = "TemplateConfg\\tcpTLSselfSigned_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "VlessTcpTlsWeb")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\tcp_vless_tls_caddy_cilent_config.json"; + //serverConfig = "TemplateConfg\\tcp_vless_tls_caddy_server_config.json"; + //clientConfig = "TemplateConfg\\tcp_vless_tls_caddy_cilent_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "webSocket")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\webSocket_client_config.json"; + //serverConfig = "TemplateConfg\\webSocket_server_config.json"; + //clientConfig = "TemplateConfg\\webSocket_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocket_TLS_client_config.json"; + //serverConfig = "TemplateConfg\\WebSocket_TLS_server_config.json"; + //clientConfig = "TemplateConfg\\WebSocket_TLS_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLS_selfSigned_client_config.json"; + //serverConfig = "TemplateConfg\\WebSocketTLS_selfSigned_server_config.json"; + //clientConfig = "TemplateConfg\\WebSocketTLS_selfSigned_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\WebSocketTLSWeb_client_config.json"; + //serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.json"; + //clientConfig = "TemplateConfg\\WebSocketTLSWeb_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "Http2")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\http2_client_config.json"; + //serverConfig = "TemplateConfg\\http2_server_config.json"; + //clientConfig = @"TemplateConfg\http2_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "http2Web")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2Web_client_config.json"; + //serverConfig = "TemplateConfg\\Http2Web_server_config.json"; + //clientConfig = "TemplateConfg\\Http2Web_client_config.json"; + } + else if (String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\Http2selfSigned_client_config.json"; + //serverConfig = "TemplateConfg\\Http2selfSigned_server_config.json"; + //clientConfig = "TemplateConfg\\Http2selfSigned_client_config.json"; + } + //else if (String.Equals(ReceiveConfigurationParameters[0], "MkcpNone")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2SRTP")||String.Equals(ReceiveConfigurationParameters[0], "mKCPuTP")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WechatVideo")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2DTLS")|| String.Equals(ReceiveConfigurationParameters[0], "mKCP2WireGuard")) + else if (ReceiveConfigurationParameters[0].Contains("mKCP")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\mkcp_client_config.json"; + //serverConfig = "TemplateConfg\\mkcp_server_config.json"; + //clientConfig = "TemplateConfg\\mkcp_client_config.json"; + } + + // else if (String.Equals(ReceiveConfigurationParameters[0], "QuicNone") || String.Equals(ReceiveConfigurationParameters[0], "QuicSRTP") || String.Equals(ReceiveConfigurationParameters[0], "Quic2uTP") || String.Equals(ReceiveConfigurationParameters[0], "QuicWechatVideo") || String.Equals(ReceiveConfigurationParameters[0], "QuicDTLS") || String.Equals(ReceiveConfigurationParameters[0], "QuicWireGuard")) + else if (ReceiveConfigurationParameters[0].Contains("Quic")) + { + outboundsConfigJson = @"TemplateConfg\v2ray\client\06_outbounds\quic_client_config.json"; + //serverConfig = "TemplateConfg\\quic_server_config.json"; + //clientConfig = "TemplateConfg\\quic_client_config.json"; + } + + //读取"相应模板的outbounds" + using (StreamReader readerJson = File.OpenText(outboundsConfigJson)) + { + JObject jObjectJson = (JObject)JToken.ReadFrom(new JsonTextReader(readerJson)); + //设置客户端的地址/端口/id + jObjectJson["outbounds"][0]["settings"]["vnext"][0]["address"] = ReceiveConfigurationParameters[4]; + jObjectJson["outbounds"][0]["settings"]["vnext"][0]["port"] = int.Parse(ReceiveConfigurationParameters[1]); + jObjectJson["outbounds"][0]["settings"]["vnext"][0]["users"][0]["id"] = ReceiveConfigurationParameters[2]; + //设置WebSocket系统模式下的path + if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSselfSigned") == true || String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLS2Web") == true) { - clientJson["outbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6]; + jObjectJson["outbounds"][0]["streamSettings"]["wsSettings"]["path"] = ReceiveConfigurationParameters[3]; + } + //设置http2模式下的path + if (String.Equals(ReceiveConfigurationParameters[0], "Http2") == true || String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true || String.Equals(ReceiveConfigurationParameters[0], "http2selfSigned") == true) + { + jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["path"] = ReceiveConfigurationParameters[3]; + } + //设置http2web模式下的host + if (String.Equals(ReceiveConfigurationParameters[0], "http2Web") == true) + { + jObjectJson["outbounds"][0]["streamSettings"]["httpSettings"]["host"][0] = ReceiveConfigurationParameters[4]; + } + if (ReceiveConfigurationParameters[0].Contains("mKCP") == true) + { + jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; + if (String.IsNullOrEmpty(ReceiveConfigurationParameters[6]) == false) + { + jObjectJson["outbounds"][0]["streamSettings"]["kcpSettings"]["seed"] = ReceiveConfigurationParameters[6]; + } + } + if (ReceiveConfigurationParameters[0].Contains("Quic") == true) + { + jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; + jObjectJson["outbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6]; } - } - if (ReceiveConfigurationParameters[0].Contains("Quic") == true) - { - clientJson["outbounds"][0]["streamSettings"]["quicSettings"]["header"]["type"] = ReceiveConfigurationParameters[5]; - clientJson["outbounds"][0]["streamSettings"]["quicSettings"]["key"] = ReceiveConfigurationParameters[6]; - } + clientJson["outbounds"] = jObjectJson["outbounds"]; + } using (StreamWriter sw = new StreamWriter(@"v2ray_config\config.json")) { sw.Write(clientJson.ToString()); } + } //****** "V2Ray安装成功,祝你玩的愉快!!" ******40 SetUpProgressBarProcessing(100); @@ -2996,9 +3338,7 @@ namespace ProxySU MessageBox.Show(Application.Current.FindResource("MessageBoxShow_ErrorHostConnection").ToString()); return; } - string serverConfig = "TemplateConfg\\trojan-go_all_config.json"; //服务端配置文件 - string clientConfig = "TemplateConfg\\trojan-go_all_config.json"; //生成的客户端配置文件 - string upLoadPath = "/usr/local/etc/trojan-go/config.json"; //服务端文件位置 + if (String.IsNullOrEmpty(ReceiveConfigurationParameters[0]) == true) @@ -3014,13 +3354,13 @@ namespace ProxySU return; } installationDegree = 0; - Thread thread = new Thread(() => StartSetUpTrojanGo(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); + Thread thread = new Thread(() => StartSetUpTrojanGo(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } //登录远程主机布署Trojan-Go程序 - private void StartSetUpTrojanGo(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar, string serverConfig, string clientConfig, string upLoadPath) + private void StartSetUpTrojanGo(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar) { //******"正在登录远程主机......"****** SetUpProgressBarProcessing(1); @@ -3633,6 +3973,9 @@ namespace ProxySU //Thread.Sleep(1000); + string serverConfig = @"TemplateConfg\trojan-go\trojan-go_all_config.json"; //服务端配置文件 + string upLoadPath = @"/usr/local/etc/trojan-go/config.json"; //服务端文件位置 + //生成服务端配置 using (StreamReader reader = File.OpenText(serverConfig)) { @@ -3689,6 +4032,12 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + //解决搬瓦工CentOS缺少问题 + sshShellCommand = $"{sshCmdInstall}automake autoconf libtool"; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 + currentShellCommandResult = client.RunCommand(sshShellCommand).Result; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + sshShellCommand = @"curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | INSTALLONLINE=1 sh"; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 currentShellCommandResult = client.RunCommand(sshShellCommand).Result; @@ -3939,7 +4288,7 @@ namespace ProxySU TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 - string caddyConfig = "TemplateConfg\\trojan_caddy_config.caddyfile"; + string caddyConfig = @"TemplateConfg\trojan-go\trojan-go.caddyfile"; upLoadPath = "/etc/caddy/Caddyfile"; UploadConfig(connectionInfo, caddyConfig, upLoadPath); @@ -4227,11 +4576,14 @@ namespace ProxySU TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 //Thread.Sleep(1000); + if (!Directory.Exists("trojan-go_config"))//如果不存在就创建file文件夹      { Directory.CreateDirectory("trojan-go_config");//创建该文件夹   } - clientConfig = "TemplateConfg\\trojan-go_all_config.json"; + + string clientConfig = @"TemplateConfg\trojan-go\trojan-go_all_config.json"; //生成的客户端配置文件 + using (StreamReader reader = File.OpenText(clientConfig)) { JObject clientJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader)); @@ -4628,20 +4980,16 @@ namespace ProxySU ReceiveConfigurationParameters[1] = "443"; //传递密码(uuid) ReceiveConfigurationParameters[2] = TextBoxTrojanPassword.Text.ToString(); - - string serverConfig = "TemplateConfg\\trojan_server_config.json"; //服务端配置文件 - string clientConfig = "TemplateConfg\\trojan_client_config.json"; //生成的客户端配置文件 - string upLoadPath = "/usr/local/etc/trojan/config.json"; //服务端文件位置 - + //启动布署进程 installationDegree = 0; - Thread thread = new Thread(() => StartSetUpTrojan(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); + Thread thread = new Thread(() => StartSetUpTrojan(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } //登录远程主机布署Trojan程序 - private void StartSetUpTrojan(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar, string serverConfig, string clientConfig, string upLoadPath) + private void StartSetUpTrojan(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar) { //******"正在登录远程主机......"****** SetUpProgressBarProcessing(1); @@ -5278,6 +5626,9 @@ namespace ProxySU //Thread.Sleep(1000); + string serverConfig = @"TemplateConfg\trojan\trojan_server_config.json"; //服务端配置文件 + string upLoadPath = @"/usr/local/etc/trojan/config.json"; //服务端文件位置 + //生成服务端配置 using (StreamReader reader = File.OpenText(serverConfig)) { @@ -5321,6 +5672,13 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + //解决搬瓦工CentOS缺少问题 + sshShellCommand = $"{sshCmdInstall}automake autoconf libtool"; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 + currentShellCommandResult = client.RunCommand(sshShellCommand).Result; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + + sshShellCommand = @"curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | INSTALLONLINE=1 sh"; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 currentShellCommandResult = client.RunCommand(sshShellCommand).Result; @@ -5573,8 +5931,8 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 - string caddyConfig = "TemplateConfg\\trojan_caddy_config.caddyfile"; - upLoadPath = "/etc/caddy/Caddyfile"; + string caddyConfig = @"TemplateConfg\trojan\trojan.caddyfile"; + upLoadPath = @"/etc/caddy/Caddyfile"; UploadConfig(connectionInfo, caddyConfig, upLoadPath); @@ -5864,8 +6222,8 @@ namespace ProxySU { Directory.CreateDirectory("trojan_config");//创建该文件夹   } - //string clientConfig = "TemplateConfg\\tcp_client_config.json"; - clientConfig = "TemplateConfg\\trojan_client_config.json"; + + string clientConfig = @"TemplateConfg\trojan\trojan_client_config.json"; //生成的客户端配置文件 using (StreamReader reader = File.OpenText(clientConfig)) { JObject clientJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader)); @@ -6255,10 +6613,7 @@ namespace ProxySU MessageBox.Show(Application.Current.FindResource("MessageBoxShow_ErrorHostConnection").ToString()); return; } - string serverConfig = "TemplateConfg\\Naiveproxy_server_config.json"; //服务端配置文件 - string clientConfig = "TemplateConfg\\Naiveproxy_client_config.json"; //生成的客户端配置文件 - string upLoadPath = "/etc/caddy/config.json"; //Caddy服务端文件位置 - + //传递参数 ReceiveConfigurationParameters[4] = TextBoxNaiveHostDomain.Text;//传递域名 ReceiveConfigurationParameters[3] = TextBoxNaiveUser.Text;//传递用户名 @@ -6277,15 +6632,15 @@ namespace ProxySU ReceiveConfigurationParameters[7] = "http:\\/\\/" + TextBoxNaiveSites.Text; } } - + //启动布署进程 installationDegree = 0; - Thread thread = new Thread(() => StartSetUpNaive(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); + Thread thread = new Thread(() => StartSetUpNaive(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } //登录远程主机布署NaiveProxy程序 - private void StartSetUpNaive(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar, string serverConfig, string clientConfig, string upLoadPath) + private void StartSetUpNaive(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar) { //******"正在登录远程主机......"****** SetUpProgressBarProcessing(1); @@ -6997,7 +7352,8 @@ namespace ProxySU //生成服务端配置 - string caddyConfig = "TemplateConfg\\Naiveproxy_server_config.json"; + + string caddyConfig = @"TemplateConfg\naive\naive_server_config.json"; using (StreamReader reader = File.OpenText(caddyConfig)) { JObject serverJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader)); @@ -7016,7 +7372,7 @@ namespace ProxySU sw.Write(serverJson.ToString()); } } - upLoadPath = "/etc/caddy/config.json"; + string upLoadPath = @"/etc/caddy/config.json"; UploadConfig(connectionInfo, @"config.json", upLoadPath); File.Delete(@"config.json"); @@ -7334,6 +7690,7 @@ namespace ProxySU Directory.CreateDirectory("naive_config");//创建该文件夹   } + string clientConfig = @"TemplateConfg\naive\naive_client_config.json"; //生成的客户端配置文件 using (StreamReader reader = File.OpenText(clientConfig)) { JObject clientJson = (JObject)JToken.ReadFrom(new JsonTextReader(reader)); @@ -7461,18 +7818,14 @@ namespace ProxySU ReceiveConfigurationParameters[2] = TextBoxSSRPassword.Text.ToString(); - string serverConfig = ""; //服务端配置文件 - string clientConfig = ""; //生成的客户端配置文件 - string upLoadPath = ""; //服务端文件位置 - installationDegree = 0; - Thread thread = new Thread(() => StartSetUpSSR(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); + Thread thread = new Thread(() => StartSetUpSSR(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } //登录远程主机布署SSR+TLS+Caddy程序 - private void StartSetUpSSR(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar, string serverConfig, string clientConfig, string upLoadPath) + private void StartSetUpSSR(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar) { //******"正在登录远程主机......"****** SetUpProgressBarProcessing(1); @@ -8114,7 +8467,7 @@ namespace ProxySU //生成服务端配置 //serverConfig = @"/etc/shadowsocks.json"; - upLoadPath = @"/etc/shadowsocks.json"; + string upLoadPath = @"/etc/shadowsocks.json"; //设置指向Caddy监听的随机端口 //Random random = new Random(); randomCaddyListenPort = GetRandomPort(); @@ -8262,8 +8615,8 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 - string caddyConfig = "TemplateConfg\\ssr_tls_caddy_config.caddyfile"; - upLoadPath = "/etc/caddy/Caddyfile"; + string caddyConfig = @"TemplateConfg\ssr\ssr_tls.caddyfile"; + upLoadPath = @"/etc/caddy/Caddyfile"; UploadConfig(connectionInfo, caddyConfig, upLoadPath); @@ -8737,9 +9090,6 @@ namespace ProxySU //读取模板配置 - string serverConfig = "TemplateConfg\\ss_server_config.json"; //服务端配置文件 - string clientConfig = ""; //生成的客户端配置文件 - string upLoadPath = "/etc/shadowsocks-libev/config.json"; //服务端文件位置 //生成客户端配置时,连接的服务主机的IP或者域名 if (String.IsNullOrEmpty(ReceiveConfigurationParameters[4]) == true) { @@ -8771,11 +9121,9 @@ namespace ProxySU testDomain = true; } - - //Thread thread installationDegree = 0; - Thread thread = new Thread(() => StartSetUpSS(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); + Thread thread = new Thread(() => StartSetUpSS(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); // Task task = new Task(() => StartSetUpRemoteHost(connectionInfo, TextBlockSetUpProcessing, ProgressBarSetUpProcessing, serverConfig, clientConfig, upLoadPath)); @@ -8784,7 +9132,7 @@ namespace ProxySU } //登录远程主机布署SS程序 - private void StartSetUpSS(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar, string serverConfig, string clientConfig, string upLoadPath) + private void StartSetUpSS(ConnectionInfo connectionInfo, TextBlock textBlockName, ProgressBar progressBar) { //******"正在登录远程主机......"****** @@ -9481,8 +9829,8 @@ namespace ProxySU string getIpv6 = client.RunCommand(@"wget -qO- -t1 -T2 ipv6.icanhazip.com").Result; //生成服务端配置 - //serverConfig = @""; - serverConfig = "TemplateConfg\\ss_server_config.json"; + + string serverConfig = @"TemplateConfg\ss\ss_server_config.json"; string ssPluginType = ""; using (StreamReader reader = File.OpenText(serverConfig)) { @@ -9648,8 +9996,8 @@ namespace ProxySU sw.Write(serverJson.ToString()); } } - //upLoadPath="/usr/local/etc/v2ray/config.json"; - upLoadPath = "/etc/shadowsocks-libev/config.json"; + + string upLoadPath = @"/etc/shadowsocks-libev/config.json"; UploadConfig(connectionInfo, @"config.json", upLoadPath); File.Delete(@"config.json"); @@ -9908,6 +10256,12 @@ namespace ProxySU currentShellCommandResult = client.RunCommand(sshShellCommand).Result; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + //解决搬瓦工CentOS缺少问题 + sshShellCommand = $"{sshCmdInstall}automake autoconf libtool"; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 + currentShellCommandResult = client.RunCommand(sshShellCommand).Result; + TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, currentShellCommandResult);//显示命令执行的结果 + sshShellCommand = @"curl https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh | INSTALLONLINE=1 sh"; TextBoxMonitorCommandResults.Dispatcher.BeginInvoke(updateMonitorAction, TextBoxMonitorCommandResults, sshShellCommand);//显示执行的命令 @@ -10128,26 +10482,21 @@ namespace ProxySU if (String.Equals( ReceiveConfigurationParameters[0], "ObfsPluginHttpWebSS") == true) { - serverConfig = "TemplateConfg\\ss_obfs_http_web_config.caddyfile"; + serverConfig = @"TemplateConfg\ss\ss_obfs_http_web_config.caddyfile"; } - else if (String.Equals(ReceiveConfigurationParameters[0], "ObfsPluginHttpsWebSS") == true) + else if (String.Equals(ReceiveConfigurationParameters[0], "ObfsPluginHttpsWebSS") == true + || String.Equals(ReceiveConfigurationParameters[0], "GoQuietPluginSS") == true + || String.Equals(ReceiveConfigurationParameters[0], "CloakPluginSS") == true) { - serverConfig = "TemplateConfg\\ssr_tls_caddy_config.caddyfile"; + serverConfig = @"TemplateConfg\ss\ss_tls_caddy_config.caddyfile"; } else if (String.Equals(ReceiveConfigurationParameters[0], "WebSocketTLSWebFrontSS") == true) { - serverConfig = "TemplateConfg\\WebSocketTLSWeb_server_config.caddyfile"; + serverConfig = @"TemplateConfg\ss\WebSocketTLSWeb.caddyfile"; } - else if (String.Equals(ReceiveConfigurationParameters[0], "GoQuietPluginSS") == true) - { - serverConfig = "TemplateConfg\\ssr_tls_caddy_config.caddyfile"; - } - else if (String.Equals(ReceiveConfigurationParameters[0], "CloakPluginSS") == true) - { - serverConfig = "TemplateConfg\\ssr_tls_caddy_config.caddyfile"; - } - upLoadPath = "/etc/caddy/Caddyfile"; - client.RunCommand("mv /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak"); + + upLoadPath = @"/etc/caddy/Caddyfile"; + UploadConfig(connectionInfo, serverConfig, upLoadPath); //设置Caddyfile文件中的tls 邮箱,在caddy2中已经不需要设置。 diff --git a/ProxySU/Properties/AssemblyInfo.cs b/ProxySU/Properties/AssemblyInfo.cs index ecb7493..16d0827 100644 --- a/ProxySU/Properties/AssemblyInfo.cs +++ b/ProxySU/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ using System.Windows; // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 方法是按如下所示使用“*”: : // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.2.2.0")] -[assembly: AssemblyFileVersion("2.2.2.0")] +[assembly: AssemblyVersion("2.2.3.0")] +[assembly: AssemblyFileVersion("2.2.3.0")] diff --git a/ProxySU/ProxySU.csproj b/ProxySU/ProxySU.csproj index 3f8fac2..e186f18 100644 --- a/ProxySU/ProxySU.csproj +++ b/ProxySU/ProxySU.csproj @@ -182,7 +182,7 @@ del "$(TargetDir)*.pdb" del "$(TargetDir)*.zip" mkdir "$(TargetDir)TemplateConfg" -copy /Y "$(TargetDir)..\..\..\TemplateConfg\*.*" "$(TargetDir)TemplateConfg\" +xcopy /Y /E /R "$(TargetDir)..\..\..\TemplateConfg\*.*" "$(TargetDir)TemplateConfg\" "$(TargetDir)..\..\..\7z\7z.exe" a $(TargetDir)Release.zip $(TargetDir) -xr!*config rmdir /S /Q "$(TargetDir)..\Beta" mkdir "$(TargetDir)..\Beta" diff --git a/ProxySU/Translations/ProxySU.en-US.xaml b/ProxySU/Translations/ProxySU.en-US.xaml index 4da5c47..8d350fd 100644 --- a/ProxySU/Translations/ProxySU.en-US.xaml +++ b/ProxySU/Translations/ProxySU.en-US.xaml @@ -269,6 +269,7 @@ Enable BBR... BBR has been enabled! The system does not meet the conditions for enabling BBR, and the enabling failed! + BBR is successfully activated! Generate client configuration... The installation is successful, Enjoy it!! Host login failed! diff --git a/ProxySU/Translations/ProxySU.zh-CN.xaml b/ProxySU/Translations/ProxySU.zh-CN.xaml index f33cd28..5819505 100644 --- a/ProxySU/Translations/ProxySU.zh-CN.xaml +++ b/ProxySU/Translations/ProxySU.zh-CN.xaml @@ -278,6 +278,7 @@ 正在启用BBR...... BBR已经启用了! 系统不满足启用BBR的条件,启用失败! + BBR 启用成功! 生成客户端配置...... 安装成功,祝你玩的愉快!! 主机登录失败! diff --git a/ProxySU/Translations/ProxySU.zh-TW.xaml b/ProxySU/Translations/ProxySU.zh-TW.xaml index 9b517fe..49d8d4f 100644 --- a/ProxySU/Translations/ProxySU.zh-TW.xaml +++ b/ProxySU/Translations/ProxySU.zh-TW.xaml @@ -271,6 +271,7 @@ 正在啟用BBR...... BBR已經啟用了! 系統不滿足啟用BBR的條件,啟用失敗! + BBR 啟用成功! 生成客戶端配置...... 安裝成功,祝你玩的愉快! ! 主機登錄失敗! diff --git a/ProxySU/bin/Beta/Beta.zip b/ProxySU/bin/Beta/Beta.zip index a9e5168a7a586e35f2f52181ed00873ffc8d63b2..9920787c06877fa0c5c0c82d3ac149a4108438af 100644 GIT binary patch delta 123640 zcmXte18^W+6K%9HHp#}eZ6_PscCtw}wlT47+qP}nwzILZZ@>S&H&xx$(=+$f>C<=W z*3`W-4Mgj$#0Uz~;1EAR{=1Y5dHfK95I}z zd4Dz$@>1XQDE?dlcnF>0K5H{>Vy~CBV*pbb@22NWHcM@34$8fy@%jcSbz1En{!O)Z zFV(VobMLeD$D)Jc8G1gNP6t(MIXP2()se_se@3>AYjGm z?pLEIv0L-w7xekJ%<>v*?WUrr*Q|#kxi{b5*rkBUzOReynLw&V(Mt8~ut( zZWj2+wbO=j%d#Nb$h9e?bFLYY$Q0?;UE6%dPA1_|5U)7G)|_g4SX4YjqU|1k#8@Y_ zV1l+^Cc>T<2+gJxnjgdB zt{sC5rEh=^bO>!5bhM9IwK6?q?t>7eEF-3G&oas|s=u&HHDwBOAqTF*<{mTWD{slT z_b#qhZ8ed28)V~zcUqA!!nlwiYyD2rMf?P)g3o{kHHgwH^VX7$Yb!zTHK1<#U{E)K zg72j?`eTvVW~P@qcF=`lkchV7CuD=ew>AO6Y!WOGRj|fFkIc&;%3q#z)#`nD#kgKI zrW)*ws%A7f7ujmm-po#`p}(S$NX|&&9^xdzucBA~&>nz39(v?Ms35c;EA~iZ!Dj#V zYv&b4NZh$f*xW34i27r(1P0L7bm`evr<^`YcAr~RZFncfA zu37sRI{gO~MoLhrTimQ|TO@53j=^!?%p5`MD|oGZtkL!2O-%fW{8JeT*Lp%ww2c}2#twY<$nQpwoG)}v zjnEpl0Krt3nm4cs<~K5btGO!C9T)^PRD|(dRrwj%aT{ zy5`phrNUCAaW39Kg-1Rsk#(p2SrM5t$W6hz@DQg3-FOcy7`_3V`a$o=t>L}S5cpEN zw7y3}2E_)pZeYj1EV+c}D8whmRvg+{Ql9*zsp*+M(7|U+Uc4dytg!yD!1iE{hJugw zN)X8-pOa3YoO1|wL+tnK8aLMZRW4o;3<$yFn8G)NIP3fYA>M;Am;{pE|p4VkYlF%L`rsuNKa1;wX;I_f~U7fBu?n_9V@F@Hk;(i;Bb1c zi<1YRU*IT-=XQM{%{+$DxZwbC@;nPZw* zGL@{(<|az262F9JX#^I;N>&%T+ z2Rgbv#CiaiuyL%(IwN+B5t!nR_!&Be#Sd%h$=T!N*IzbR5)L++h;|A=?vP<8AqM|LOU|E&|ddxif8oZNp>eG`JyTf|tm+AwUp15`mT|+7#LTRZ<1juYT zFb=%CIe9@3XglfrF-dd?5~n%x60a{}wHTqaFDSy4O)k=FC?Xu7Jy4D?Vd9XQfO&09 zZUL4Hnt18IXZODyt1J_=gkBAVMbJUuOYSN{;LGkZLEu|zhi&jCOIhiJlWf?bM5BYn zkls*&#gN}%g2kBB4*l`Q&lqNrqyUV_5>_dP^sdV1l&uK*u=@pT)_Jjc>e_HRC!Dr* zl3H{Rs<=a#x6KT_bj&h^umqYIeX3ZV3V_G}Z){_vB>P5r+aU$UmbUJU8jutB7yl}X zhIsjafUYYk=&Cf^NNb+b#^*BN1GXA{0}i?oEoIN zrvM4TBciKJe4vf5zmljSq8f>QV2^L#h}#xds>VAbA$_eP?MG^Gu?DYOt@?l=ld42f z-6)$ZX_pD0H$LeV(6Ae%#m+1zN*6I?h0!_Ik_-_QJ2w|E2SMdM-_vAG*;{9fLz{fM zyzytv>QY7XNVG5rp!-~tF$2Eg#*X1+=2WqQ7X=vJ;fnEoLu7jwRc2Q&oD7ngtJ?Wy zPeK=Ro&Qp+jN>ql?K`V>p|jc1a`|V`jVv}DYBtYmO!F!()9Ze7T%(V}T7*EcM^$;o z2Df$KKJ7M(_F6^FgbW(>iNfjWTbxZd>RGY00~O#;`ylObTeq4eI|A%O&xf8CHWVcM zX(6E^5Uz&gI7#(NO+{7Rh(0Y8FG%>p%_4P;kkVSOqM50=GQInd(~d)$v=VL?XKUy8 z7lF#+GF`rqtz4Va%welL7BTy*3TyIoTJFS;t5kAY-XmY$Jgvl$sr)*v{%8K?N)&Au5&!bY};2*RPli9|(PrEYWep_i)jdJV(#Fsu=cq$s1X= z#P~b-vyj~NI&GJ6s%~(?ZJcK>{;)&xaS%K(%LHUoa0*D9$6iA6{nJgQ-jb+89!=pG ztge9<+EQZ5&dj~L9?{X$k4MbLuO8nK&hXRx5SD+TKevdqFJ^hxaaj<_8&reTWS*JZB8gLVB{*s*eOGo9TG_9?1pF|>|Ai+h9qRUF0 zSU5X~XJVHaNS z*7;_niDvIsfvbUUd`tYaBc}tqA}HRNfkqE|@!1{(Vj3nbPlkk~^C4!Bk?WKUVR9b) z+>+4HVNZLE6rat~1hn3*w3zAydOvt?fw$T+Pkw@}l@g9CriY}C_#VYmwDIc+#()H?7H1!y_4)smG zd~Oeb1?h)K{qpb*38d2&Nu=eHxLa^%ej8yoKT|<( zwR~!QQ`NH)r)ZeDRLt0(eO)jD3KLapbp(1Sdk~Glu>YD6wexJvP!xlV^v=g(8X&K|S%UQxC zW29MS=`O0~U9(1flu}kJeYBlwAn`}tBJs=qv#EbJP+6Ir!Gw7F`3BL(snku@UM5Pu ztO#jYd3r?`&3_gqha#O1#A6pEEQ?cYVP`$upBCchl@`L}wPMe-&9U*~WgXH+Nu^_E zIY~OrUqDig9~nQW_(ZK1>hW;PtVHjWz5?t=&mltB?r!*3$|?4;n%BF=(Wj+}7@)h* zIl(a|H)ff9{Swu}7P|eRuQyh%GdD`??eqb{lnkAjJwtV1a(FaA+99ok}yB0uOo=V6mwHMA+dgDM0wQXif3fu?}k!9NvAva z9N~<6uGdU?#;MoMzSlHFvYHn5j*3|d@0zeQlM_Oz^{-wE80>jEO;IvQC%90Km4dOaz`-MIn)%kB)UNtv`U2W`YskX<(v z`T(`gZU9*=EQX|<#%sAm*x@-X(yIz>B9%wL90=mDQZA-Mz67v`wBy89L&cji(J1Vo*8d5v+@x(H zAreijPa>!T*2ntbt4DTZ-II@;g>R+&x+dljotLtjURgBh_Lw4c3|wDs(2~iO^rs5D zgXi9`O%~OmQ13gkmP)t}8#E5mG%MA@4oRK&jh*YGS75?pJ#Nc|o_A---6QMhD(nfS z?_(E6;4Y7J^a5y9(8^(I%zAxiQ6T&~n)BiElD+o;Ms|!NS#-o4$`m1|&O6BBOdg$u z{hI+kY{chS<|F|F<&$9psexLVMk?FI>Zvc7QSTx);ILIfJc2JUIsx}aN&_N;Jr5(2`-SP9UXwC^;tf)GNbct#bxi%zE zrSn%{^u%=-*$u+oz$hQl5hj2+x|byMK?JY5v2(?_{!0%dAW<;w%2T(7JL% z6^0VD5?dj;1S;WFaO018&DiFj?a=e8u{Oa@0)-<)UC?JBg-Ar+d#rDha7R7g#Ziz9|>RkEi`vMtd*!K2kKhF0+If@E2!T=Cm;E3?GG06U5^R3pOH7N)s_5S5BjP z$eJrVolyBBJ$lD~Iu_|#$L-99Pc&r7`0qcXe`l=->8t4(J%owQ+O6%kH}tNktp3CRO3QsK@z#K3I zuQ7N*$3qI7F|4JuRb3&@uZ@Yicgsp0F2=p04L+&=u9CHfXbYZOg`b~wWWPxN5Xgh+ z!@s+C6=@5FTVFBWm1#?Oc=Ezt7pz2g>)7j-JBPy`qdU06op`dv3N7J7p*!Bj<-C%| z+k$|$lQs05ni2Ts{1ab)M6&-Fuw_cs?_e-6qaDG{Ww1XT&`VrF8mqTH7 zT3`)&+?vFMt)v?qRg@Y^+2C6`X)@OdGCM6bok#1B8zq|&>$Ly)K-K!|a8FCtDre@D z8K6acI(l!g!yN+&?Qx*Lhnh-6$gM=(Ls2ajrV%wWrsG%Pf zEtav$!QTj4AdYxbKOdWHiIrpc2?c_ceF8^So#X=LH)ZdMdWm}GB?!nn;l z;i_Ycih6LvR^_CikEu`tLa#~&*_pZLM?EYK6I&w<*f+;?4HB{#nsZDObVM@+8pzFA-oiKR5g6Dgf&GL zb@AmCLayMN{IsgU(5(^ds(Synw%#6#e|$lO{`D)k+1ZvoKG0&d z?0PqyUbY8Wq18peP8OAt>(~4FM&la?BUqBq1@{BIH{Lkm(Q9|}g~E_wrEtU;w-a>X zw{v`3io%m6&wwq1OG{r?jCnN)454<|`GVN&fCutI20|_w%OTa+9}*ixx?tu=g&Ra& z@MX8C$Sa;rR@q!pa`7bxg{U#&n~zTkhghR50r&8=Cuv~-FN^VcS`cpor+gOQjMZTp z-oi5OVH&FP4ArQkluUNpC<{k%mHQ|QLvi-&D9esqOgAKFlH5DStoh%ciF%_&P*@8- z)Lo%cIbuZ^1rJ8_e6xBUVbqMiMAC`|R2aVvz;;Z*QWX457B?L%Y`#g=?9K;VO;r`n zSCl@SIjJ@R>Gf54R+e+4S~i8lUk6+lv1WKDWlgln)1faaOYrQIqSXk~Zwz`koPi96 z8RP^LbwtY}IgwoR6vS!PR*X||&8Bq~OT(+_kY(xJh3V|;liIMi?^Ib)-ij3{+81JV zpB5Q$t&DFHI%RKruHOZIyuU6i6`LO&y^Liqzx-SVGO&NM1znOZE}|~N>|+vXq7H0#&vjH$Y+ zp1gNX#!N9~RZ(GVtc=i4TZ=1aj{MG9^I{ze(;eEmXQXHuqz$l!B%?3EHp}&M zj5eME1SGq-Dd=nRmpMOQ=&}Fj0r>!{op%2aXV!1f6p9j}mX}8w5SPX^3Eo;~WyNxW{ z7Pel<*w>*mZm4YAhL&FORksYd&BH)g#;*uETp;1=%|YezKd zx|YqSq3X6qMEjs;xU2SlpT!4>%_qC+HpME+wuPe`GAf5);{{^rMabgg{Ryv#3q$3bVswC(;@) ztF$NyT7NC}o@iX3b9tl>xBk^=@r#?yL9r42H=EJrxvo`Dg{$PRW^;@ghZ+OnZ4@YU!=hFMR%{izgU3j3-4OObc%<( zexV{+4ALjQZAF@Y)Ez}&agi7)-&F#mQ4Pqwr9M3mzU?hTLy4UZ%{#6#6Y;;{6R15C ziSL-Ze`pSaR|igD5}Lq&ASFrHbfA`ZZ%1fW`>N5SR{p@Wex?@V*}J%2O}YR3m^SU; zgJ!=4ecFxrKPr6`z0Se~fB4DO(a=L;wRY;R)L;`i+A)?rIX6pW{wNRf0l54*shJ<% z==eTYHgGGJn@4ePeY)92Jqv&CT4|=9RjOC6%NQljv~4`)Oh2D5bpJa#PV%18YRsQ%j>U)3DL*L&R#wH8CK^F25e*Ty*iT&7JRgi!qvJP>A zE5sn|LO5e2O+mF1h84nw1I!@{7YMVU&XgopgxXQ(X=1kn9+(PcFjfN>G3G@iqAGOV zfMM_vYqR<;%PZ3<%?HydkIjeS1LS9j_Y7piLzt1nHD6vF&KXS4?5NR(xckVa6UA8Z zJ>G*$cdfXRr2EL06LaD0=2Q=MqM71U{+uXYGso<(C*F)WGsnpnz)C2aF7t%cGutut zBr~W7mvxknPlcEm6s>hOk5`WKK7(D zmG^{X=9S64+mClAbj%U-PUm~V$!qQ{6+gGATt`{xwS36f@i&@r~0GL zu4h4`73cjsXUif70r!;6pNP*$<+gSl2OF+6gf)yd93?h+s~)1}^uG0J>@AhHKA(a& zcBi>j?7A!g=k=MeXrF4w4EJi(Hm(6LESwYuqxY&`$L=_Ow(5q~h#Wki-k`cUpgT6> z>eVZ1FiHQ`|5d&>ok*eat|!MjU94f9N}NpHLsv)iQpY-Wi4&oAg!zEjZ2t$EN4{Y| z_#A;7Tf9#Q$K=@%YJ240ZpwSy3*=#&-~D6@L6~jfz^JT~T}PS{_Zf&I+<8~fMV7Gu z@0L`NZNYp?!NZl#+Yiq(p3;Xbl{fmt?g;6bW`fN>fLL}1*UTm~epNN~(g_6Qg|mB& zUJ5))(j;sZ^O3GqX=!Dx%AdpKg;kdIy&yYy{c$n2<$6~ZC7}`Tb6fvCtQ+dGs_*iR8gZ`NlM$6?FkNcAy|TlvTh`U4n2vtTOW!AR+- zNEy@-q^evCKU)NpKi$xRc z;czY)+|g7O8c(rPkFN!Q>#JrHASnkQ#gyZzCpHh6DY*zBTG%- z6{ezM@Y+w}`=rrjhdlJK>st=1n62f<4o2fkN(N1?PT3+eSW2Z~O1PX?Opb|*h0dB{ zYqGfA5v3V+dmX!$t)jpUY?awJOTLzR?k)sGe0Q|nCDhKU78dlD!}v{nw-YT-HWn`^ zV`gA|fTV9hVg3C!+d}ZQKrsXtEd&BMcrERL)zr7F={SJ{CdTZ3Ut7qpYQ3X77X&|A&2P(#Y zuxh{fsLexZY`gCD>c!6tq#QmzPnXCoZO3tJS79uKo=ZiuH`-bKuOgzwyybHK23hb}mg7eQ{*!!Hu0;3jXKXZtJ2+a61s}oLADVtVN z`sI6tI=eXn z<@7c0ogpE6Bm-u9ZKVx{n4o&Smecod@TluV-6>k*PM@(+AXN;E?!cehh|3!kp3cd3 zOI0NOmy%U^%^HtygaiP{ZOg*}k4+JNr~PP6{l)e7R!X-`@y(cq=?`ogICwGDwe572 z768udbfd^2JX7UZa>ANo`yATN(*G>rX5?W`D+t?6JC&LCjW}ACv9S% z$DiXTG;Tyyi__)VGr+^ijs6JJz3i?@t$mYMz+sQj-45xiZTv@z#FsYdU$*$a*ke2L zch3nQEs|dwq<`_^|00eF2;L#Zez;10b$E2EeKo^>MN%?2#wH5nrtFLY|1c!~hY|N5 zhUI@4JvoQhB_FyU24z$~?L~-*9dyN^6VI#5hFJko-W`Q<9QOZ@$E&X$K)y|1~Ih30DN_eVRHdM{E$R*sAL*wVzc>APr+%M=#GGq>>L;+gC-nzohkvW0{Vp#VbQ)=Tc*4c61$^-t!TBY2^_gB)A!Yuu=~s9f$E0|I?&}fqKeM0xL1_7S za*zckVy2cMXnW8$obXsT4#)FwebH@fD7zX>?L+N=!QBFyGaE}R#F8d>N!H?l$>rGs zrOQS0i6tW2v2$xV&LxXKj20r5~Co22Lws%%S$6}8tIbCu>r@xlA3 zpIcG`eB;o2)r*G`r~#G3U&|mN&Nx$PQCQ;()H@gZ{{AZyu32I0{He@y-It=^6szpv>bd-!P3ne3En1C$2ohbP~ z9l@DUad!NUwHUbZj8V1odIdHYi;4ICIqJq&^4WG+nTXLLfDK)8EMZq{I$>Czj1g-| zGPY_lIQ0xy_HoiulX+EvRZV?`8jg~OTaqVhp*bde4=*JYvA@5*#8F@+D7Vmt-w>6X zP^pR!LF~StHs?ViC{>ws6V+z}Lb?)VhROvU@>9|d66f}kRukX6AA|ChFXp+}WK5;B zh(j!ZlnMLM-GIebNuvQdNns*N1F5*WvoHu zj^4Wc=k=W#n}!))=AD}`b;sk~<7IoI^stG!fz%}+J&pZx2fn&~OPG;tZ8rP7_S3NZ z5NsTe`-m)Sp0LgDu1qct(mc^?OgW(h96m92LD(iPa{=09Sa+g~DG%fZVNV3Se~dt!Yy zsIf5_z)4#tK{6ATSN&q9)m;$+Opb0E)4nv6oO{SUyG9W$v@%1;8?XUxhxfD=tM1vv$OFuYVV2J8O+xMkz2B z6QPZ8iRRpHX-JwzK7(zkxBs;+vlGw1VD3Xd z?)2M%oyIESLtL=@;k?i38md|_uPQK}WX?ht44I%RNC@`H&C4mzgIbx@Ket_0fWh`) zL`eGg_9+tfTLm_0b)Hl?vt=nHLXnIxTc!+lxu9@TIZ=vbX`BTxiESYyOt+u__YVbo zR-wS+#t{L$5Y!aGIoI&Vf&$dPG-$4&Z#hwnWogR!6gIZt0B&&}s2n-MV{V?_(rkhy zCM5!^B_;&+G9yC3?yq^q@2v1DY!I!%ee(tl!9=-vQRbLn|4{mJ4H;Jq+_&4fwc8B9 zEU%+Z%x0l-0EBuwlz8>;^*e^K4Eu-nftwkz4HU#}nXw}%cXXMT+(U>@Y@2N2!m{&>N^%5Pnpty=<%f`>ZWDYd*2G(`MpB>Q) z!6N)eQ|5gMacTzMn;QjQQ07|71k?y@>h=ZuIgqBYz$PhM+SnA{z$)qk30O^oXXu?F z;luhPA1*Ao`(4O~=!YJ5B7q9gtGdjTxD~wFU1{Oximwad`lJ&gG53AJd7^-6y3YVB zn`Qo0k4gG>Yblil3K``D^7StsLF9OBclEz~zaaVn1NE4#@0ev+a#|CANpLRn&Nze? zZ1-h*0Ar`Sy;oGnps|AZC;2p*&}gYf1vn6|!7yssgsPoZ=SaM8c2Jz&wGCWw<=0fr_&0Vk{cxjxPqQANJ#&}c~&)M0n{@N;{7 zV}cX2rr+f|GcdsPPYW1j<>=8!eYiCqd=$ak!-7c6(Et=aqfj}i#!SpQNy>6@__?ru zWJ6{Dku?g45=mQ_`K%ukrBFLq*B=9SvmUtZbFq;(}6q zT9Fd6B6IBU^Yrh0TvW0Y1*O$6b7lVsh_RuGK8gjMCW^4-$tx?UJe!Am7r@G{V5>$T zX5|Zknrpnkt>?32(NVu$ln(#ic>uoS^vO$hpY8Jcjs>7t1(y6{)Zlk(Z?=F3B&&M;1AuC^F~&k8V~{dX!0Wx<{L3Zon=F_lM{;<{wHz% zKXMrwf%zU8f=-72O^Bd>6QYsvi~Tl6CQAIhbSS0LL}OVySEA5lo!nWg^z@c*F(`<=EI!geBxK7x_7vs1}h{tq<$A4BJA zA;m6kWZkU)awTu>?bA4mT$g?CNcs= z5mjVz*Kis|*;VrCf8CHJ^f3LeU=~G{=d;P`^}#QK*bQOA{f#wUyG>|5NL?Wqx|?la``N4WCHTe{%$Y{l|ssc4eF57{6+};B2)Y z_YB9)8&X4D96sd`s2}J_H5?AAywYbH2(^(bht5z`VdytiM(+Ph&LJ7xFL$fZtz7v5 z)9o}V;J~YcO`mi-6NtCxHQ;B-R^VbH}z&aEH^JMNi#3O%6@-q-Geg>U?N&XLTr zoW;h_jR&wMZnA$`c}Ur0WOH6SH%>}ic;an_NuD|XTw^D(PUzjGrpI z{w9GE*}g^v6TH0KQaHTX7h$=|X39!+iey&u#sf(0XF4^xn)KrykS$)E6h7B2_P3qE zg4@0kOfR7uU_e(YMv_GBAGA?@K`R}YycGl>+~<1@oPR+3>)7*ta9y- zIT2~fs=|@CBe`_?{*7S9aR$6mUl8+&^+k5rdwoCiY|-+CE#ky>@t<9uLUVXCt`cHY zior@)mAFvl1ksu2n=Nd#Eh=|yr8+oV8I}mFB>}6K7{Ah%5e75^y_e==y<3>wYygux z$Y}$ALTTQ5XqMN=$=)K8+Lc~=6YtXqsrsG#l0jQ^n|h!T-0Cm zrn1|{MGe}|Dq#eE4o~Iq$#dtgzrh%5H;Ievts*F<@gLoXVNk}O$Q#;9zc)%zABU9# ztwlAQJ2wjUdjD!41FJj>yOiOSAo9UeHgco2V>bP0B5`CeeS?IO3PenTtt1X2qPJ?i z8kZ2DsFDglLi6+c0`4Nij}*6$tlf9Le{2UO=YPzi41t4DhVNfw8+)3%GyoZ?SNJj| z)I41^o^M@eJ`F5e3-^2pX6USU4&s#J9mdxUYiGsyv{MbG2%q8EiGK2HudEC&R^&aG zauG9o8{d7mwzjPvuGVxA?vE+gOiqlJRS?U$#dE%837c-nmAsjsb6LHel{>nzK{;ei z$UaVes5m|eES;TpOoU9E>;vXS_mPzHo|xtzip)8t--J~Ej^3x9&h&(y?Ulzc9B#6d z>BkXfkccwmh_|wRVtlumLg_pU;P1YuGiPF*oSf$XBRHX8-W*Z6`_eil)S>rKYiApJM#=#|S#y9{Lqhx-(szRl@ zj6E!j5NOP@JzZDkk6k{An*lQpVTpj67fh-%Ai^_Z3bx4DH(6JvR$j#>lEKBEkTkZ8T`Y(YV2_~u4|Pmo;1|n?X*u(f)&Og1-uD&8sp+~jST-3pN2_9* zg(|j5-~Yx3XBo2qcowNP$E%B!Y|GfuA^)<+ZagE!kQSv(j#j4BELCioAZ*{Gr(j&7 zr({YEi_?r*q|;2Q4A~bIVk}dwPgW=Wu}wvfSFMKm|3r<}rMV!FMGw}!X8saCT+OVH z{UyG?dP%m1%*B2YK+1zMVtPXyj~8ZqPdXMoTE}%}6psgl88;;S3OQL_B#FmJHooT= zgPW-{uOe|bx`4n9p`b+Z<{8l}oq~>;MlcmpCwR?l^ zeY0NHtd|L3l`h=P(Zu5X6=!6jlYy#0FC{7(UA-qq@)((%ug{tPWA+*?Iy8^#A^fam zqxAgJwpAB3p)13`Z? z#Z>{*SC^M;&<$_&Hn5S776GSIw+1hHg(aR}ahm)danu46#QMc!99oAAzwZcW?|RtW zw}(t$S0hwkgV0}LWxqm2yCoC;n#NHOtLjBg-i4)iZWGT`q!c3cUH{cFN`BTYZ{GO6 zI)BHI>wQcvIggC)4sL@J>ka;wO6jx){|f^Mu;Te(7g zd;V0)v}tA4+H@shf2F}2B6pPzN{eS*RID3&cMO%y&LH+raK+5zEn>)qxf~$jb}tT< ztCk(%N9ci*{DI+7aBI-$VE=+4y~w{f!RYfU;+Qq%O&Z1>UVoiXM>FU5$JWTvESDPC zKvp`A{e2blFpPkbi(UAELjH!}|7@LdP)Nv)l1ozQUiS1AL0xBEal00 zO0#0uBwWERv*D+rEQHqCS;gs?XOs$az%1S@O(086Y?xADGOfBQ@EC0hXeEy)J{Y2` zaC7gN^{#6ECObR}ZGn$#MM=ljZ@R$b%PT1POa4vVHlg)NB^V~B3yGsk3#J2N8s|ED%e|k*oR~xR_HnJ-rLh+F{%F^*aTZ|p?gW_ z_lCUH5+TjRO%IL>BiSzfK5qeh1#MO#i!BP$yxN8Q6Gm@8A=bWj-Qu?;i(D1XbXDHW zsJG;bfV}^GZWr5N~D9LHkb=Xaf zLg61b&|iU1CcV^`_l*lV;CfMS;(CF!KRag6%thnnG3xU<_NNPRX07n8VR z_lmS%xle0DyUPF`J);-noWyqRLS(eBOZ%T?%~b@pjpt*A*+)7E?lUGKFO98zGdD7n z1fHPDuVQTI_RqTxnUjLE?S0YCPFbKd_MFGsu+D!sY{49p5(9PMlXeBL6sdcXQrR`F z$24L0XwT**M71-bLvdoA3_n=7Vw!g5JV*9-=DHtF|4IPlZwX>AD*fxIgu=3%kEDfn zC8WZ`pJKy2Vq$gs{+aqwxJ4o}V`?bkzw+nEJf>Os#BUR!OeB9glj-n*R#D9{wC=?3 z@pqN(KB16LMRo5jL!L6&lppC3EG?=>8O<*``~i_VTP{eYe9V2`JN+3|BqvE4(7^=- z(QW)gAJP>tU~M@VF}Fo2$HoKOT8umnFISb7Qj1SK6ikAAz?6BtS|~_+u{J-AZ_SAk zQ`K}fA2d8`SHc~*NmnY#kwZ#x;LAGPBx>wPWIp30y*gMD?-GQLWF9VL0|=O?%7!DZ z1C}s$x?t0xTqwh1C@S&UxO;=yjf4^9aT0%&*C<(eFR5QubbD=-&4IEvBIC3^C1vtN za;N1OIWnINF!${xu6J22j<@|gU>MI7nTW0+#b8pf7@&t^+_9lZwb(Iy)4rb95Pe+i z0mlI>;V-(#1XjBpVd{zHF}#*-Pslc9YD;8=Cymtm$gp;#t;7`w(X^KFC*@d-@TL@i z+}K7o#V9}Gvadis%5~eflAhUGDab=P4%d0YVd_rIu<4x?Yfa;ce!?P@8O)!RemIyT zw}bO{np6Mir-8BorAg26{~5kA9x|%JJck6hr3mbiC=~Q~AkG)k2y&moMl^nh2+;3E z$~g**ZG=t9GNbE&hM1_+QeImkEZRrSvbEN=e z&G-}e)KJTFCO*SsP;*%7cJ<1Ft8b! zo9(u7Ph^+UW0>6%k*8@@<>&4*VsNoYv%ol0m>(YP#KAD4}-RXrH`51Q*zX$;SgxQIdw z%!}g1Z_4~bX1ZiY>L2ISWkeNcY;uIMunl)(HP!Ld&S`3ruZBq~r|z7(9*U`Ks$ZoS zh5c2IcdoV5V+77w3n4&w_cWFEnA%6Nv)tM@e6kIVlfwX8e(qlAw#Nfx0|?zTOukBq z=*mO8z--mV@=2Dzc@`fbhP6cpyq&J0q*+K?0^`I2jEZzSCF`_10z&bKes|z>caSeR z(Df_jS29gnv0eJsF&N0bmF2S773a+1s!g~hILQ=)*bMuR(FcGie9-&AUi7|Hm>aTv zPq{NbZBp#zpc^tgIa+3eKcA6PXx-FYf$$)36@E;qy_vTQbsD;)gTsJey>BV#;ef)` zH?FO#Xx=9|XWloa>-TMED*}U7qtlv%NfiOfHp_n9u*Q{|=#~HEdwi4rWK<^SSdb#; z*qGcPX~(ajA$wrZ;Fy#EjN`tgX!ZImLa3H0sJlcyahXiQ4Ji79aFyL1)?Q*u{`@ed zczveKHe4@mLhJd_RE8f=N6T?JAkHGXL&fc#e0eUsQtj6+(Vo+UsLHEgvuca3{jG0e z&)DELC~=d6(e0bne7wSKo`=TL1F1?GK*hPJ#*q$__8UO-f>1Z2dj(%4{*516>fomt zZ0_@*nQ!CWym?cyCS&~l!BpH$w}0hR_s02~KF2xZsWQc#Gl353wWsI98+NyMqp_?? zw@uu}p4XQ4u=w7EY0F>-fwhqK|D*AwG`u*$o$z?Ggr+^-54N=N#R+9p9~X0fV%wDC-Gi+7 z5gvmNP=0re%YX}Y#}-&=jm!Wn_z90Ao92ld?dZN4Aqwk9`-RBtWehMSb&OM>8yJC- z|8r)(VLdz|zG2@|TmOa62=xJBnn-ZJ8E;W7+xTUK2dWR8|2SjI;Qn>?jO!Z|wV^lI zr^1x^AZejTG1xDCcW$r%B|kO|0zrjiv|s#e*K7ho70<3oC+Z#i3jmDvkB?w7o1&Hw zsT#gvcw-?)5aioq*fNtp#A!1pk>!p_G3^a8F_|vPDwi+Zxgd^`Y#mtqJDPOu{=uJ*e>3x2z^`?M_YsLEoN3qssNFPg=^~((O#Mow48=J%G z+Ymy>zpsrxW*lLGNyFB45=`vO{~N7FuOgAgf^ya^e<+9!k4=nS4sS`@(=R zhimeic?e9eE86m)i0B$Y2Z2$ecVlx?5vtl^;&S=HR5FEYY^M&bB zC!ptaeCr2sv3bufw#{Fkqz;!$Zc{!WTzHm&-t2b9lNFFc{|HI=qe>LrfDq8I0DE#*72o0vK}`v&4j zhGkG4$=<6{!bOQ-EfP<{G1?eNn64}Gv!Q4!IIwWQuqZ5ZSgOS1cV%P9uvAES6atNP zBHSc1Q^8JDf8>)y_W`MSV8QT&KNj9KoZLys#1(LWI~w^^74wWa%O%Y@(Fvn==kR}6 zddBEXU}bCDZnw6vb+@*)wQc*WZQK27+ithEy|rzoSd9wW-`gl?0FS& z5D15T?P`7+bvy8*cdKJP(3v&oR94YJJ-A>!&_+T|Wf0K8%m#umz|68_?YV$GL@NLC zk8P!b0b^%cLLw0=-5e4vcRs=A;Bti2Pv;)ts6yxAdH#kDm0W%#LQdKi!`{zk6EjH=gPCwwFbE2@73W3tdx0nnG1R23;?* zo%4gN#c%qet+&D2%-)C)WL|uZvfdoi0U4JslaP4#tsrTwyh~65P0qxM8NE_3lObBV zn153jRPkSCr+tO0=|F7vZZePuciE6fcG-xpZZZf38VAisj@d@#&3sa6vge!7N)ThwP(_$9Qa#?$PmXe7nm9M}`p8U!m z3~jXNKPl)Tze`H|lgrmr`vCK`?JUxluM<7E)$w;+_$5@$mmwtz81);L;!ykOhk^_Y z?b~)$elW@|j@tA@n}76>niY$&$^~8ap{aYqe4rTc zw!`m00!{n5ISE4Q5%7($tU7>ALc(zkk0U83i7z>&fE8{Iivr;K`VAI5TN1`Vjy~b) zg5?YD799OZ1-gsYt#dd;UjrKmOpe{pWc>uzj|@c){45uwzQO|^RAETC#+!JN)uatA zF|w61Pk<{v+WILu)u|$61%<)kKh8dvk?Cy3E`Bt~QBN<63{brQlcbMY=w+4N_{uS? ze^aXS;r;OAnVejFK%_Exa$sXK1wK}i@d9qB;I_E!mAgwnho5q#Mth;Ff?|^eg z0E`-RIZZxou&G1LU>s$X@VelpuUhFx3e3hZrAD)q<^-?LCa7e zkS9S>E&+^lA(W%D$~T_0Olpmm3OSb^v;r}6dxM9@vdsa=mz&V4;u2`N(h2GsVr_@) z|4$*#rD0e0Z&Z=`cgqp_{v{U=S|o+xz4Fz7QnWqYIRUn>=EivQ4^~<07nI7pyw8ZI zkLVgtu&DTxFz){ClP&2n4PhDr?OD!faMNE&!2thWk+Xd`>EX+VtbC8_hKH+wc zw}-1@}-r%q|7!V;@~F7se>>?j6mu+axQw zuy4D>YRKDe`qcJ^XCraVd4CEI+-gWJd@wpb9W~@+5=M<-F&(vHFj|N$W-3~-6Q51E z6FgKT7Dv@8o{WUy4=Pl&;e`P;nd zs1D6(stN)d7vWqc|M1<}^~qn`7`YAH{HO!*NywUmoHm93%6qr4%(dQh<1#lJjW z3d_u@<(1LzQcr0RPLW#W!$5Z#QfK;IANz4??8DwvXl{Z|1joSdY^cnDC{LOKK}YayJ^g5WF{ z0-TGAlV^W{3ktDHEjXi7-9SjuFFW%(uL$KWxM`k$jG9lGuSiCcw#-XLs&~OowrfwQ z!Lk#u73k6HmK$|%^lglml-|&b{}o^2J9UXrnaA^Z9cdIt|)(0&FDcjW(DCk znlw(+w~HC2P997qW{jm%c!96<{5vT_3D}YZjr%l;C#L9w4DHlPxkvJ|23HWilR5c+ z7GbR#ITkpuGqM(8RFc5h#I@No))+D(?1!4KK)8(Sq_$-TC~xDV7|Dx!2Pqv_$#WW{ zLiG(qILDfrc615=tz9@A}E^(|zaQjMcWHfYZ{ZkL%mELjJg4=ejj7LOJKg_^z> zNLUoj^z(-yL1K<|)Z+kxD5rz9e|1|7{r!ao8RGqg$9BK(tYrP9&zf@td5fTC(89m;a9YE?^WEOy*-|DzC#9m)gH zyCkM>MkJ+*^YhHOQt`5EE|n>GWyR(wP9 z2kK7%U7H^crumSu0tAnVQf(~YYlvOz27N`UqhX;XntJoj|2W`34o5u0PV_8=PaG)X zF?zuT(Q15VCmO%iSBXfmS!;ZHx^Rx!?!B91SP#bfkyX6>VA8zP;LV7TrSj6$Y^sv9gTRa**j=G9k>o_f0e&m z58UU7S+W2IXj$=RObikS!}PZQ9ilQ7Q$p&-#t>Wg*2*^QCS0UvH1#Qy?#(RPibkmL zdwYL0A>F!$Vr9W|ZvZA=d7xpCt$i8cbNpH9pP$4>c){9{IO$e6eG}4NBAYBsMAZfS zrcqCo;iWi=hLmL*S>_Z*dW;7rg!(p$&K+*j=o94V+wgLsm??=?H;HQV-XrKB;IxUm zctA1o+j;Dow)IJ?i0Pq=9u@OBfBK`A*lioyjUL=xzXp48%gTj|hwsb`$D2-KlKX;a z+b!*dMI;oiik+in8_lCI8s$cmE3jPktCn z6+2TU`@9kEGAdoA($^!8);Ylb*X1Ipv|jd}ok8Dp=XBL0yibNnGlT{4e)f0eLAj73 zU(Bt5DlW{iz~VgEcwu~4PnJ)kzv8l$f)nkhtyqaeTDxqtq(k@-YPm21W4HQ!zZhb@ zBgFu=uoW)8a^{P02A)MNedz)~<9t8La}qBeov<<5rg2$v4XbLdfx&c*s7^dKf9lRo z&p2AQV}?PF{vBHL$HAQay{PP^Q?t(F=+Gi#81?$0xa=jGChc76$+I>45Y~=vsm-m+ z(oPk|oxwbb_{ds@l=w)1^@0Fvtaj9rQs?QP)i$IFc7+A}O|o}Uo!LI_Umm&)3f}HSJlY8ocA$N6WFokIv~i``?$hNI3JMzFm23NWpI<@d{8S`|RL&5wR{1q_Ii*0(hjjKiDbzEiA&GsO>?tMHr z^FQo353K)8BMXq%Y=52IB=}=iklD*TMq_HBW;o6$3g}&li0wqMQJ`%8X;@5QYMkeO zi7W{DsO$ZCPpCt6(xfs=8&GoU7=z{`8*Aq(RYWmWA8K{9tZjT%bj19Fy%)A}){-OB zl7dgOVjEU2HJM9yj-2SmpvP!xVNp=p>RjY7U#N(l1_3a)O!c2mQis9mG~#5uphlP5 zfNOtE8Thr|7dX)`(th|xj5^Jx0s>qI4YPXDrbB!nC!YH334Xd0ENm#(lErGP0N}d*S zcNm~H3d(Mr1KO@)7K}@6ca*e2W0$f+)C0ZYS2pEFSOO0sS@a^VJWlxmw@WoTEa^vf z1j^oV+_x)ExrH3>)D+g#lsst32n7taDTnb><#8Qe@FJ}@f83!c-w7wBjY1t4r%>8MypJlm0~TrRIbvEHz;1LW)R{_TVTWGTUF7G(Q=eKVKDjsS+~z z%nvhghx2O_Qc)<Rku3r;;cZ%b{t}Rf27m}(p zJ>DlmYh4sZ6cLZYyWGH|0o@V=P~+b8NG)xn;9_Wr+HGSBI~3__G0FyczeOi$+glN! zK_aSxsE7#(!T`7w`1!wFwPo9y(D#YYg}e#7E6Rj|+lb|_&+J3d94OZDgV0__Mb2?lcy><(pzjI&A){GlDbh-hh|mHz)H%3re4?$8hFv`ZBv1G#xUs|k zTaiG!aTe4!9U{cJsz-)6>Uro0*>I7xq8j|Puz znRys(pIbzY)^kv`uMFbJ3bJb^!!MufV7Uoh*o3;oduPanD$Fm1ZMOhL?G1i9j62G5~ zXKme}M+FXfpi4R=j&EmC%0I7jCpleVK@CV0$@J^(c zpA)QKKJH_tu5rau`EoMuS?t~}zcPWg7D+AbP0h;GD-#sl-eV!1GV6-s@Gz>1Wh4z4 zxJU$=5RM>VTO^TeBx z@!0McITc;Ftr|cdaAwKXzWu)&PS^nL};~p`s+ak|(uG7bZO`DTZ1sMF6SpMl4hr`Tgj3JDvo@2v- z=i!0CCJN;izGj@kKi!aH+W4t3{8ic_&z@Uema#iCNxEf?_Do|0i~gMT>eWa88kG1a z$c?tCaZ8i%JBB}adirxal}qLIw;$)hp5H<(?X&jbxQYltjyfUKo5 z_n_TF72rbD?CM3xqs$VQ;d)EgIPPaFO@yrxM_l|!A0n3fE0*+r?LeI}o{Ui-bB)TIf)>FYF{fJb)OXo-SB>K~@i7=# z5}efeP^tR1)V`Lp`z)}$Nx<4G*?MkS{G7-pBm3{u_L9XNm@S|E`_n70XTXh`0RiOvQWj~+=r%p zT6HeN>fDFBefpo$#_U`tPv;nCj(cReow0q|WiG?+T<3iD_c%{i=JNS&yMFA2bNM^w z`}d)q!yP+4g?-HT^>X9ksMm2zyH2NF+P0U3&lvkg7{rmh+tgQ~7t>!8J04>!K%S_4 ztZZ*o2k|~rf*J8H9|;y~5jv<_qfYYCQ4R|}Q~Fh|ZIZK%lN;xQ151F7r`a(`T#SF- zmUKsD^3HCkuV#rtlX!-7-8-Zx>wEQeM*-u_m_c>t$U8O zM#`cOM}Exp8^iEiX?ugb$Zy#ofPfM|CQ2J82p-o@vVMcKvRq1swEseM{ktwo{35%j z>mU}JyV(#yY+|llBo4M9>~;=zf&D~E{P6$ZPq2U2Mu{K#e^47q|L#Je7vujh>zMj? z`IPvH|G$mC-+-xd{FM8Dqafm=%mG-hZzt#*{MXz)x(~&M#Y~4yDL5vjN>FyEUqwgr z_wm}l(ZP%-N4 zPAtQI-WCG~&ocZ?61z$g`dU1hq^6UCwa=Rwsg~>YA!MMZmGma(4Q}jV1PATwF&Jdz>D3MFn}BAIIa|Z%-E$zpqI? zS^*vaFwEdYJmomSeW0kZfu=jy)h}%{dq7Mlk{itV9#TWC$^P1ks;f~lXIDAy`0^_v-y0iW?kQDsg*frwwvk;ckE@J>;hLME*Uk|}4b z`o?6Ma`78D|NAh*MVBM3P}S&K%knn#7C{E0HfQE-X7X=?pyuSuRpzA%-$Sz!!u5># z%QjlwT2=H|hT)SVtefHYIFViX5ueGy4DAfC3f7%r99WyiDhrw`bu5#u19tKw z?tKuKh-YPr{ zxl=%|n8h#pZc)>mr!(7C5nq-djoGYU=5+pk5PGC%R5AZnulNk7X1XP19t2mytY*AL z!5TNLnpY?->YU~pr?>*++VRL%;77HXvFs~M2%vEDu7VDxHHF&-FfL{lzFMBA30GsB z@tqqM$YWU5K2pb&G>)#Awpq$wN%x^c5K-NXY%cldr8nShBzKBePvOX%4o}t8yXZ?b zPRMOkX8o8d+k|+T77mRe3PqQ&1I^}7ye+xM>2(p<2josT2onv43Loj`jl9G(;@0X7 z0d5M#CSS`PfC{D_Q>sTgwAmFD2->O4$6N!J@q7>AOI+m0*K#JSlr4hv20nv6BNJlx zqH|rE>;S4vb2vcAjeU(_TXXQ9Swe@{n>^(HN`#Ahg{D+QZams2TiRaE@2YktnU6Sw z7h#@3yFC*#Cn7UbRz3E}J=VRK;CnMHz-kQ?x-vmcpIwRQtKr+j5 zwaw8cPm$n^e%=b<%&Yj=Ydu))og_P>!D{k|!`aVJLEJG1U(7-HU_ht?XH?U~ltZ;c zD%`PY#Ib#3s|G}_;-6Wn7I%4rm$s8lhIuN8D~ue%!h7vGn%~qMWVel8Khj9I$QbCV zlgivKX`Q!aw?uLDjiZv9U5D9ItIF@G5h(nEG8D8B&o8(r#s8`$M{Q( z{dqd|%>LVGq)qealNK$UCi9u+m%P~ZuplUHN1WF36g4e6_v$P#__zIn${2RAA_HM& z+WbZ3mQUa5&eF2ktzL^J7oZVt9(UqnUHHIy+okA2897ZMc42N+&~%3ont_I?pH98M zBzk0$!qy|fzSW2;@FP=$p*!LnAphOgibWPd^m#V?G{#z9PdZku$8{y33n(aElEG z$Y|*Ci)PSX-V7(V@8*XC{rb3dbZ2?EeE>4-N2$ZOGJnQe6GI9&7R#}7jgEs^)RL*)5g(ODl;#$RdR%E; ztV|Uakd-P(R9~41>yxSTSmanC&>pqYJ}S%{!c4kjVrWoP>UqLQo8e90x$yz9UwimT zz5cDJ&(X-$$BMzlN$R1b3t#M;GT<66x}+|Tcj#>9FO`B#764M7B6XYmG?$#BTdqm~ z%_CEDi;id;)h9FgA<2kWV!nH7c%F0aJED_f!6xdPv!}-YX2IDW0l2YP4|w&>ICa^2@PIp;@ZV~x-EG?B&&YVNEotZZ{+Oh%$epX@4vfVYx~y%w zzf%TPQJ^_%D3|puEAx~|&r~;6c^7ACmR8Ecs*q8t6unm#lgk-aeO1nSGoVztURht< z7uMCWSD_QV4^`uA);DRbX(@+hO_#QBDHr25iOD~W1ibxxcg`Ry*H)q_DPOjD3oXp0 z_8j5})#~DW+cDq4iNywgeL4j|efZ+Os`wIaPR5j3<00(EjC zezVByrgBH{V7d;ZOPUes7L{=nk!48Cq3500PmLuvaBpYk=kg|$`z9@?=;i$uy3SkO zL4thP14y-`O{M6EU2IoJ3RlXOq$b%$qA;mgN>|E#5-qZ@Yb&LZKH@%Ti~aLjXEI&5 z0LHllX@!*1RL&aRL*qAt?mxi};Y_qe8tJKmGNoMWZp8_!U()~QNf^chRWGX=~I zw!!T#EJOQ~x?o&N#}r?kPn>J0!XIB<*g11i+rNM6D%Q=xk=Pzed3jYkL&;<34)Coh z0!&~$l3Uef^i-G8gwL3*_jdNCYMq2^-D-hxymx(RtxHx;pVwjs-)?_(`2-$aUn*QD zxh!vg@oWfV)1Ij(pOAa0D-rwiWMBb+f{(TsZ?b%@il^A?z9FX7izJJtE^`;>Y}%F+ zAw1^v*3G7;dDU%*4VRJY`i{J1=>@p?0EWCq6@beSe+FpBGilbDI4;kuoDHq_$6!WY zAwy(`t-$XeUXo?LC)adU^3tzea^0+d$0ivwYszfdzT$BU>;c;?+L2KiM0m~-4DaWE zxmdj|0}A!%yvUrXICPAxdxErhQUnUhG_bp~Jn?c$$^vhRO>=*x(VaP2Tmi8$0gpLK z#wYY0`~UXrepwdl3^18#brBmiC=ZxCVRQCd@pz6~U-i;ob6p0YqRMH4t$2P&D@^iE z&tFjH{!3SMqPDI)4;yH9S(H|z&hPVulWa1SW>Y~_|KMq*w1~dX+Q?Y4Qmf*N-Y{{p zjBi5=7;CGVI2Bt&QW+)Fsx5Q{sMuPuo9GvI(%D$yOTS}E*EW^g4;;HLD%q+$4;~}3 zca8vQ;YUqk5!FtI5y}+9$$d zpT5g&Ro4rSwd;#{C_e;?vBZ2)GX;UXdX44JRB;m>K}KSX1%9woohLp3G5&DW3!;DL z&P~DS%v7u!gz0%UERqL)apvT&QPw{NpU$%HLrR_87FZtge08K2_!;&?L7`iL9#P?^ zQdULa1#0GwvC6SY%!F68vY)xi%mPN9++m&|0Nv)^BD$Y-UZBNEwi;mDgH+OFanhvMAG%#%)PgB{+YT zX0z6Pb4U8AsHE?|CG!9*q!fCBOXgNifON`9t(>ekrnE-IC>xv0g1Ql zSRf-%0EeXU3t%>ZC(8M353Euh^J5TDz#+M(TjQ(mbnw4Wrs!0@xFR6wR2UPF*wTmk zv#rwLK4drE3A9=6Y`Kt4sKzIG4^Ff-%*cl7Wy#n(Fe1g4%S{ZwCK!IXRg1o+bp`F^ zOuHq9%VzjkA4YIi(PVR{-RB-gkVs`cCZ>oGsLkay14Kv3=MBGTm@$9Tgaje`l)bLy z7)yU+zkG8&eq+?gu&90(?5>*wM7LN2x%EzNG8X%7I?Yeh9kohkXO36}StDN47!3R* zD4ZG7%Dm-Y6x48E>c$@pwiP*$vA^Hq_f7mz9caq&DfszL0fWa0l3}Hu2kOxG`P`MI z%*P3V0KaLlJwAr)Yh>=~fG^~k*3={upO{$Io##j5;2#! z;q2~#Z*Bty-SfA$#9J|R_4$~Ztjf$2xVQIY0A z2g+xp9n&Rhj(~^cVD(9y4t84Zuje+#-#(n5==-;Kc}luFiMb!7HY%QL|>gu~XdUCl^NpAV{?N3r|QTf(D}TeTV)!Ln2c zJAftaHc3W9lPrGO>fHbQs{Xths!~7@U~%c#tmX>-JzYiU&o#-jP~m#c!@XkVz@<@B zw=83~(s?~8MyLJW$kgOB2`!uF6fvBs-yC?=UM>iht>c&G+IT)j^ZdKCtzD#4&WH%t8R#V`-r?6K`qpcOA+gSHpul0fdT>RM*lUR$ZvsdrH>GRL$w25c}zNlIF++A*DWWd8;mA5vm5k9W?uoMt8V_-Yu(pJe)bV`i^VeR+~0a6 z9h^PD8uR8!iMsYZ;vz~Hdh;9@ThO{`7ofq^a>GPRiw!{iz{TWh*K?g=>RxI_c6~9{ z5Ff|)Z>KSz`iii&iky0;7bkB6^bA+;7Y0J>W`{}W*tY{%&qr&rs)4uvY)6V6BAu04 zvA-cd-YLIvc+6FOPiR5Eaf@I6P`AEIEPtw$f`6HQxin#%6N}O3Fgo<~IgNR?AMmZL z$E3K_3|p__-KxOjxU2v_=zH;RHt~Fx_9Im<9cvXlZO2~yTjk%fy`9GakIqc4D;?+e zwJy*qcCzxhbS`)}AARyGLb2;C!}=WOfrAew&vj?F}+{ zF4u!x6*FzzE#JG-4$q4YHoe*$p(7oFg6ACW;D5j6o?~bLxHEHiim>^vreC5R+=owN z0Ez7{wTFUt2^uE(7G*4eb9*-5!mahGQtTZ>pVM2D1O0K*oiM#xGK=SjbH%fO# z2oWB9p5$;yIOJD#pz3CBX-t-6dkrl5xbn928bDQUTowCxNBUC>mR+S+`37+pbaBS1 zc);%{IYi~C?J4=OxT@f_#9Kw{MCj2r-pSXgNhha4?2e7&v7-WDFJgX>3=Q%_%>K>b zLey)iA~$?p{;>W;+@dF4Ig6GIf7hGlTxHFTNtf+vKe>CTT>sn)nPX&sY@r-MU;eQj z9=kUOFZc+$+*=2bE|%M~_#lOw+g(m|9Cxpi@D?;I;i+|c@Nwwxs&?Mr4x1hCAUqHO zON9Qx?nQoVGs6u4V}j_Kb1s);!aQ9XX#e$-3+8xZpk3`}E8H>C-X>kPcgQ`8bNp2b zM~bBa%s1?wAiSUTy4Q2w9gAIO-sH9H{x+f1#y^)gRVoV}RX=5R2Q8avM(OWny|Bg2 zEc`4N%@{W^%83s2+pP1dG3= zt?uB?r~jrc`tOJ)uA2Vy^v|-i^l)1z06e2Qsbi$P&uS_%rop7dTzDST|=ca)A_agmPNO~znycO zd%nE~*uG|z<>oYX9Ur90U94K{w#<|1WWCI6qMFZ@_hz}Av9t$vr*Sg)%6mC_8GAXu zRjPG7^M#WB%dYQ~S^=Z?ogZcs6 zP;dJAn08~-vOssxPA8Jmko(qZ@#CU4J%CaGJSru;pV~BtFI;;&VmpboWj%7g`+7yl zK%W;Z9PEH|eZ3OK0XxFR0f4*_@ZOja@NZB#h%XT#>^mOFo)u6p3n~LVUFdZARxq=_ zJA(2B=w?@?_qv!@hgXkR=$p7Swltk8j8g54C99473rA~vui3}aGq$A%k~L9HbF*7xX-6>I~L^4fy$Nm#c-?R!S%9mI#+pA5vO2Xepj z9pV3p26MxVt-F;0alud2#q4+t%uq7`O}_n`=utM%8BxA952qX1futxZWCej->niV` z<-;?{1k^+bu1%MA_CVcHCCsHnA_wp94S&)3N07iKI-*Lv?lXN5zaq5hptUqH`Ab zoP)v;ad-{vyH*0n5yN@J@PIBufJIeHWpmF&D+7jROO>a!F7?TdfRO2Vrh|9g#JL>l z`s~(O6r>jEp2BMfR5M@j)_9!?XgP-rJ~=AKt5;A!e{jo0kaR*mjk}q(vE|T;xiqTo zt%g(tocJT7%C*yDjpFrqB6%}_k@cUhKUi32k19=3#8*SXoTRXfN1yrtaRjIOaWrs` z@hC*3z@M^-M;Ku-(}3Nr;Yq8)3Ak-qvWW8_F)-(#U1gzC2k#=HfiOE=>!nfVZc4-P zt`%h1Nvhu5RJCwrA*PV_eW08}Z0Kx5SMQaULeu--Wz@3kq*<`T0CX1Xv@2b+J~C=t zM>qBXqRpgrl{OD z{XiNF_$Sm0_u7tPA^|YR^-Jzbw@uG2S=#3w{Sp-+3WI>l8k}5&2JAXo_(l~ zL6j_ng4J{HK)=1!%*@3%M=#U-C=rg?i*qYPcccfU74!&*4x<7Ad;cQd*$&2obG)+o zwyhoh_yvqr!(#YxS#?PjZ)3~G+L;YhqI`-r_r}(ep89{5we`8`;sg9!yG6ZZyyx7N z_?ast=Pb2cSWp#+xQ|a_#sSlXq0MGu&5PA+WAoEXuIJL-Qw*8-wM8af^SM~19QTRH zGvo_NL7jXkB7`+aq8(rbF#(bo{WCVsjMnmhoGd5sYS}g>I9C1`k=m;m;E(!|K=srR z*S$mRNi(!V^m*81Z8-@; z1c#7$z8@79w`SUq^AQU7<+60;PX@Vy1vk$&^lTBc1x20ZY6mC}2KfGUh4tyV8};G; zSy@2DvajAFoGTm=vYuVZ1B(mpBNND}^&5FR0`Ryr9QLFuybCe#VtGK#=nxjkAtV%a zL$UFuPmiDomkjT0p+z09aY1Tx)bnpiH<;;8y+cim!Acm)gxx4&$(AIzu z30Sw#Ps_vO@x2^z2>emIA^5@!Qc&*}VGxe|AVc5?mnyiqWNKbmkfILBq7z~i0OJq~ z35cn^L~`MP_NiW+N8MZTUlJ(ro>hN|=%-=>t3I%{-HL2$CR}lS=~(Ztf_JxrCwt@| z@m4JB=Rh-039V_V6WN#>(LUz^vq)YJpyLg)u7Uk)bFBO;3JSlpX%iQhmLMB$x^A9F z1eU3KV#$koXHKYW3g6}$j(o`m!Cu551Ayji*%!hm+3gZ?3Cf=lnY&^d?oM0gw~ZlB zy0gr*6CI8>`Ae4sjV(Bqz|CMdNw(<+UR`4hlBXg!6HPHzb0HZ7d7KvcdwggauuwPy zvAJMEunnDIF|?saZIQNWLWDMeM?Xyv1rE_Aa4v*wurh0X4bue!fkNIQEV?~N7Lc4C zUc__fKeFUnMahAm?}>t_8}@`#oX8R?wA#lB62VPutBVc0t79VZIqlyI%^F==CO28x zukx!Z8bTZPeqx-c3;TYx&Eg7&F?MYG9tvy^9Rt zodC+ucZYMpK4&GqHj7OviAiR@2q@S=gLPYWFHriK!fdPufLQR4;RL#{9O zcCb~b0tfe;Wip)`kgUU&YvY+slfBr~wuKW1qx1Gb9YtAS(!|w6jlD3S2M}dXkfy(Z zqfW&U$DLN4k}zv37yc|zn3^Sx;FJf-COF1&gHf$#>MUqJ2bjn-AIL9u&?^B6DI_@x zQwxI3{g16mRmC$+re#4#Njpjfg%FhlDzx#}7W?rl?aZ2?)_wR3G(|MnNA}|hrC9G( z*kjk}FhZE%M|ga*2`38R%yfL|sE^`Tl<4&(&5-be_z-09)l4uK)rt0t3E zl&JH;T|7XW7#8BfM&T8sSRfnKogmsH<3Q*3y_WG1V0J;WSt6rc0XkR^{z+F`px%qe zrlcx#b;ODU&U{06zl+54Oy;>KWO_V5ips>(2giknT(V(GrmGbxWY78tgwFrW$xc^x znJ(|cTq=+goIZs7txC6L@UUgaJK4lKTOi_WTDA1`x{}lbek*o-l{wboqfssw75+>e=c(zVWjPEio&OQ!G%DdDRq~ zC<%FgdTB|Bi1?Ld250HaCuc9W1!Vw+1qGYjfu-s^5>tzkt-mWBIUz|v)rkHAIV^Z> zN{&*~X9IO_7gm(TL}~>kbaKcIkU#^o)gw{QLBw$*xtp8|0@!RG!L87@?#NgUM%G#7<9*07JNf*rWtcx)5{xP>I#v>M(VO z|IwdW5v3Sd1?cFb8$ZhNU>6kp(`G4s`@WyfNtk#Xp`e-IIUmaAB4PnKpN;vt&5Jz# zLmvhx`~awgpVbC`=JxX;s>c+I;(x@uLc|xBs)%**Fb7wFMX9O^q3LI=_KH!a)MH%+ zu#iKfRu`by&$N^oola9X2WG$5FB*Uf$*Yf)Ma&@_lcq3{6Z<}C<%@S z2fBvh+Mgv9PDN3Q$2ok?#|DmAhn5H9bD5PJS(v}=`-?;Pkg(1M?U#u~=#P}( zu0V9GW3J;|frVx&mrIL2yBKGV5QVt|V#P|$@SY={2)jH5F^&l@_93O8)&_pb_s9_* zM*wQj4AE=q4tUu_tgdFzUgmR>q%X!@!=o?#$DA3L_l=Gt=afvL*iIj6LZ%Ic;j{Tg zBBCv#*s?GA>O7ttV~=n(Br*>_7KboS?ztouh&%Ss(H#7egvWZse~h|QPj|4tO7-wN zLP09r#I6sU_^&Vd_`+h`h%LW;@^Ag37Xmokp>qsP^CGF7eDs9a$ah7_?C4&dYj3pB zpsdPQJ5K80jbelFnLe(>Z$*RSFVPnq;WY1=6a?CsHN5*bZwNqQyz8oLMx-z~nK`dG zt|Em0sHm;fMn8cxs`XiN%59m@_55wAWKDf_f!;G6AFUqY4P|U7+u*(e(VNgl`3N|P zT9@=&DOYpJMwEm9xXg1I80G6?)WE zc_01K52caXH5G!)rpkeC_8{NfoXRG+y*%0~9n-@|n5^?a?z^B#xE3vPK^WR*NJ50! zy(JWD-_IhJwt2m(-5qOC#sOA{x(}G_drh@Zm!+JJpL4D^P{8;j#5P^L{*VvDpeG-p~gf<>H?)R(O3+Hi@$^BT!2@%@X*2&&T` z_u((aX$ZXQ#Bdr!xYj1+J6vh6%o;-D;;Nym7;lhLlI`7O5~y!y_^A+-h(4g$Uan0) z_#X28E%8}8K|brci#k>4yrHBE=>XH3Bv2?0hDo3-)A^wPNWoQnFFs>h{V!FpZ^3Rk zXCu|CoO|_7JQ7J=`~iRU-;mB$BL)A&mnrg0a9gX`__=n#cs?THV*v;;KMtSy%8hH3 z&?WNOqa|=o^=YeejQuAyA}v5tppj1i4$ruF>p-|Ucw?jfXNojC+1O8|r2!%`=TEhv zEWQhNFQYO`XB*M!q#B**TcyVAeU-$G2>;$e?2YgcvsFhy!*C=we7UzS4Vd>?83%qy zicJEkWA1}bG_kPaLt@G0TY?o`e9P;-BWx^nWknc?x8OGu5;S?uZEgUT+cbr4!*Di_ zIGe)jVez_|!_TU9N{fbgJ2?ADAtSDWNQUA2P_TfjAzjWMH?fgUPa9@|>t-427W_Ok z%60@dn{~&&1@z;;!B5FU4p_kUDWDzrG1evl$oyzNQhWZT*9RLmeC4d$?y7aDS(d>y z)Od)7$sio=P`rhG{3(EXxxWkMH!2d#nptlh$?${{{MjVvWxtW{blDg=Ap$fVsfzxT zsH84|5lx_G%S2h2{?xvy+bpprHj>e)<;i1Q#Rp`#jyj0khjdX7HcNTPomf=Q0wMK$ zTDuRlRirAn$t^x&gRu%wTSWjAZoe9d2)z~Gi<%Ahh#{lyVFbXi?ct+Ssfvl$%%teQ zu0O>|X4Fyy*&eG&&(yBH8oCG76bWTpfggR#(=wZ30DixGXup=h6+0DtnH^72MqTf zCFflA0(8v5RAxX6p3@kDxcN7tGy9&4th*JaDpI{&pJ+RhG;i}yOhHl`rpTWj9z}S@ z{X$JUn~IGJDfJ7-pQ@@`cVZ|Fx2_V*}`GL zF2R!t5I8X4;Td|WkR|`71Ko_3Oqf<9w&&n6k6r4(+$8{+_Hl@u5lqU6ZPcCvtnY$oGo#tPfRMbkaQ$jp}8XguLdz>fcIuh zstuRw3iYUEr2DT?YG#6F9n8*%zoI)QMv}(-buPd|X=`?jOjFT8G&08fHg>Hs^K%Tm zTGbuXnk=)C6enWjZ!uAr{}~U5;5aUIJ&iFgJwj(V-{WG7h!h}a4Ak)2p)HO&8krFz zavlzd_#nAwGTtGl-8|fZ&VE2Xd~jM2DZ$PVZcj(;hXura)b0M|<4W<9_@C2+L(N~; z$2kB+l4%vLv4rrEB~P>rV&~I>;OPGYcR+~0Vdc=@Qm+cfl6~(RXFF}RSVGLtdm!~? ztL!I?V+V}*+$nnTHo7bKuK{B_GZOA26f4$G4dK)7A)aNJs?Kk~lbnv48Fug^lEXTj z`u7>!BwsCQzVnNvR4N4Gjxth#OKV zpT2nKx|6|YCLC1g<&^(#}k5oUu zy?E1mfxmrWRMWE;Wu3aHX<<84@Av-Y#7}?rfs58%R@pq8YN(ig-8Y9ue7uoLDFPpT zfAm7&$tOEM0_fJj2T`<4h_V)IPkDl?jw*7&H zP3zBm_6+9CrjIt>cEb7o_X34YKim3)v!C+L!T%PUbxJnR`0R*}|9-*4`<}eORcvkU z&v7Bwh?H&#O~daD&8B|YG%3$!Xw0Bae}S#w&Y)Ga5U^387h3QllH>48J99wO#1Sol z?Ya)8cDxt3@PsF~Tf&vRn%qqb@T(FL)ap(`KSGT!Lj8u3Ubo#Ecw(scZq~tHo3xb= z>FN64!R-Y)46F!VeBg$NW^@o%Ww47Pp9}D}L;i}ui$Vv#-~ubkSVi^tWwPbKe{{Ji ztsE^=hTmM~JU-mIW$oO}`!26NgX?ePsSUeUMiw=Hc0Kbgv<&C35V`i^7ri1xS=^S* z(w3B3LY46AL#$!l$3Nka(WS~nQ#S!_Bd$v@RoM#Icd0VS7V5CWUr}f44SZL28$L;D^MI-Uwa*GOYNOE>hIF7{9}jPs$xE z?^NiJ94zImRVvS=C~XJBvAPuTT9^{&B=<44lU7SjH0hd6+ius;cr7V~MKkh&+RH$n zw`*y%miE|^v>uy3RrBo}_<3}IWFyjS1&vnB-C^(xsW&dMj1-sa8bMU4e-=F2^c<8Z zUWwFs>}lnCR=oCp-q`iPgGei0wv1C0Coa=vGdQKXOj9%`X-N!=cy9AGCrJ)-d*h?j zR_UP_Bc&y1Y>V{GPeF#WdG@@d1-3hp+A<2MSXd984an;nk#vLalYVR37Q!3q5&f^6 z`(H_--$V8pM0_; z=tO0QXWPwvWFp(QA>W0@tZfytW)JcYUC6djGOZ%^iO1@XddN*nf2$Z3=AUeKyIRg z+IGv3+A*l-kXZvFe>t7V-HWFbUD~b%%FrdIRFpvY_FHldxym6hl^!siFFMBV)HW=o zVhO%5Qtm^?E(2YGMH#mQjkLROw+!HvKiF`-g=lQAEUcn>=>*Oe1W80XMohXPjoyL| z*bI7`EY+xFaDOIMgh4YZH02H|$=RY8d6JKKnmL2$SDD%^f1=yJ467e7IIIyEK)sX< z)2?)wc4fn~D<|?6(trBT8fmoNFmqNhOuNcq+EoqHu6meuHN&zifhCO|&|8M-2NAlV z@Q^KexPSQHGY=~_i2Fk4BsZ$xTljfxX-q%t@7WMIsQKxL%`LQ0OK7YVi9|+lN{r zZ^1^!(9tu1`#3zv-HFG_0tqSF8*gbTKhofKUxL`5e~Gklc%twqG=jiqQYUnFD((*O z1w(ofsk?5_#}L&VI(NzE0P9#sOgpz0gU=M`&Mt zg!VN@WX~hMm3%ZYx3AK3qxjnaT(;Cp4sGMy^2YoB(MDf!uHoG1O=X705c?6;9JC$= z??J=1e=HrgW!bPT%ZF`QF>K4qVOv%W+p>DtmNmn)l+{memp;NsJTk~PB#vE2;(;yY zEF?J!0)8yPQgX6{Xv$30ZzAArr4BovGGj+sUJ_4bs8L_*C~LA~n8Bm}h&_}Zv4^rF z_E3Jr9x9I5L*)^Bs7kt`T&31mdSyuyc_fY`f5vByaGkMP=FF2EuMJ)k!?39whE3Hl zY^sN0Q-iwEX8>E}crCuSnJ6a#nj1e4aHf#lH`3+$I&6!Y!?vh8Yzx%X_#-b{3F;_G z%^kL%(!;jkImg)-))_~BO=?uFcOKU+Ik@FoV=v{fPMXuWb#jY}!?i%o4$G=^SXO1j zf3hkcmQ}^DtSX0PRWl4LndR#a*NRsStulV&e3RSZKj5S6Kj5SMKj5R{Kj5SCKi~sn zoE!61uDTKdpFKwO@x49oIp;ThRU#+a5g8Mfz{^a~`UGTvWc*C=+bO*5_Nr_2z}-BJ zoCyrJz)QrU2RZE4=liUY%Ii8BDRZt~fAi(;LMcwC<7gL^;JpyHC76bXfX1 zKF${;rJyQh=jlhfaXvI_AWOmrx4NI7p~rUqD8VPS27L5@RklIvI>eK@g|YGde-fsJ zm#eR$byUVj?^$bA1ep?j!LN6*(3^8Gy{M^~u1-6y9;K*VkuGd48R~9COMRHL7z@`vh>AM4wmgk9MHHEtmMy7rbGaw-JwW`$UaH zi&uCzqkpguUs9`ibk10yZewVOe;?TN-`~WfXUjOl_+aTwNjR%Wyo?{cfXwp;I&o(lsc+(e?xeDvY!D* z*N=TGI5sA6xHZ0OrjgK8A9_X63%7~?9m0t~&-UD<;v2uLtJeCI5%-X>4YF2_sJes4 zdObzhJD%mXSEJ@vNGri_!|;80kvBj7Y-y8hrwtB-2O@ zok;V@no}pu7*pxU_gqrCxkzI!a(9}-Xi@(aN64rw-24yh9?+JFf7t8_#}3^#{#Be| zZ>=9{lk3g8z9Q0_cE`Xu437hjV4WUU9~uL0ECK)<^FiP&G{)h4-?(sCJOLmVY)`0|5ht92YvYHFk`eZ;*GF|WUxqlp?T z5NlY8Tu<-VsLN#`f4Pv zkiRZYM_r*csDhCI1u#i8m{=No;XKkvsL+-ili0-_|LUgGwf zhE{tf-<$>NjF}4gQn`fRl|%D;$o!4$zwnez`edfDl1qUhrNN}gR}XmBG0CN;LXKsiM<8V_Fkje1Oz4TBjeb&icje{{&P_iy%&1GufFxKENLS+?a! zj$2~Ka^jGL#6>P?#ssGT0aA!0i+(h}o# zIqa5W1q6FpC)t3OQ&O1PN_jlOk{EZHbkh`u$c0avWng>G0apzFh5*){f{9#YlX%@j zvp@oXz|X=AJOCy@w~=MfvuqiXuVQ!*;mOCIe;BTmAPmDro9Y#nadG9&&}=e^X{&~) z^*DFMSw0ih>iLuMkaFI7WQcQM8t+SFoR#d*BA;Z$z!5df4kbq_D@hzVty)H>c-hBv zfyH4sMXd?jIq!(8qj*h{mm`N_r!_1ae8E`IS^6wK#qs+n{4Q{>1jZw@Q*>XV)Sa*w ze;zC*q2#SS03$eIyohl3VHlqs(|0P%i+g>DJNH(DVzz-hyb2~ht}tBXH${2oQGUe} z98;s5wX1y^Jcs24Br-+mdfwCnM*;nRw$@|)eF`C-V&1CB(&cH-MQI2}RQYA2y>|*j z8G`8Ow^5dQcO0gVX+jOs1=*J-pkaI3f6av$h6VMo+bMmHFbZ{!xgv{<7T)uY;8jx` z7M!U<$yctI>_RZPqii})Q5=@H!dq|#hzk(rdEON4k?^_&?|FC zfvmKZplT3lxR zWlFo^Rwslpk0QbZf}Wl8m7N`%ir$&^8|uEn^xh~N2ONea-Lk;Y@1*E;$!eFqK(O}o zC6aJQcaN~AqPLp6atOsitZElWs(y;v>m5xB&6O62)?>KH5ITBsJ+C_+V@ z&UO8&Q=E(^Q!Sn`gvqGB%xXZoKIaxMs?=Mj%>m|2?tV@`WzqW-mPm1od+=^dSChkeKe^N$ zY{<#!E;8R;zF14gbG%BgiD48HiW1XET@+G*IZ z$9Hl_R1@Kx)mcjGHOKs-i`p@e+}PurF(TjNNd7RIscpvA48KWl9a6 z>H2Ypyy5=oo+ba{V~`gEHeSIb%bg^S#Vn~4&SflNIH5-KhUiTi>l>I?Y|jLJkgrMR z6)?tlS4OPVe;&Gs;doI+5q6X&kwzTQIypXTJ1TpFY?K$bpYqbS9S*ft1#7tMNyG{m z)0krVT~FZP#8zGSlKpZ;elx5KrfDvW=64K`}yw2ithHwqx7gMQ9IlLC9#(64gd9JPbuqf7LF^A@jD-U|* z`UTXr)aPKfz6Ti21B za*k#Oe<*BZZ>^ZSGbg}UFS)~RBCx(h!~Z-P5v%x=L}-K3Bz};pzmp3GLgYIN6Vlck z4u`6rAxNa85n75>l`zZ|LG2e9r99dxf@0h6Bz8ejDn8p?WBpRSw7A-SFq0O<%lCcR z^6UXhK^VmghFkWTi=|PGw=tgk83UBs_|vgS1vEak^-=G=Xct zvXYiNv{VLjGZC#I=K#407Asf}G~t!?@1exm@WBJC!6UiM+#&1LK)&kyvT}DU`&2m# zJx=>+591%YfbdBR7<*#1{Z9FI;oqFJe>V`rtV})I=s>0Rxs(zHH7{`y`=(pY9EQme zLm^o&#IW2T!*Zrp5?smtQ`1_KV2L+9CP_oVpo;k}X^}msF}Vxox@{+-luxm~M>ryv~!1rf6mIf8iLDql_+yivtdR7=VV#TNG zO?A?mQO!5iNw90asZN4j^G$UU?AyMnPQrCtH`Pga{wbU4Bz*t0O?48^e}CGhItk}( z+f*mvsCHAG^2)htyKzk~=dZpLaA7)UU&OR;sk9<#*}wcZk9}nS0-z{)?}Ic z%alo|xtcWHWfk(G=1pW0f3g|LQQrTjN)@i~S2B#%96#Tbq>8`cDqeN|D@h6YrB0Z} zef<^e#V}vvWM2xY=rpML!l2?Q(Uj`ptKuaQn(K?Rr83S6yk6%p#3pyMkfq6K-l2xl z&uN}1L22dC5^6MFAX&;VbFESgYw!8zo&2*b5fNmah{{RiT9%2Vf6gFNq)k+I#;+f; z5|cE=4FNXB7Qa!ZA_sJF{8@x^tr%JbuNy3eWj1HUZZWfDsf}>T+b7NlPElJ@H)eT? zy$P3S(W#`qcd8 zk_N3gqP6;WkxIvkrH1Jj{>-v(BPA+We);8k7#2U^oZ(FtcX)5b9~8Dr&;vUEvtBXLjdDya2&*2c?6Vx3(V4O9H1(%%$Oc|e-)T(pWo2%cR>M_JIH&3f_T-})1(-OsN| zO!fQuRWWR4KffxD+U@7JL9c#azbf(nw0-?m>~*iK4%+=Uui>0_)MH4tZCp zN#Ik?e?Hq%o@Lo9j557lYBB4tfpp4gvf&4N)C@muzj{+avy83R_Dbd@lnZ&z4fihX z9y%|k8m_OWp2Y713|PGmzgAdWz^Uatdek;zoC?sR?QomwC9R zL_?8Ls#Jm-ji)O!QcFNOredy^C_h-4`HIR!f8|YIQjx0Na4Im!KD$Fz=NE-kkJg{q zJe9DXtA!O+6spOINEPU{vYv`Ux8)?H1fOiCk8IXvDhmB8&OzR>IeV!z{c!K<`i+x) z1o2862==L3M#bYAT0{GkN5rZ%gVLJk+Ec2xtHdiohvBYpCx~y#o*G42|Ajo1&eIDk zf9|s>tE&8vSjGcxZBv_1o6=cHUfEOP+y_#0XRO>+*h^2y8g|F{ix9`_9?%q5k&i>d z_WSbk;t_5p`1cyj=$Mo8YTE_QXj+hPujDz?LZ}IqTJ4y|D_j#;(0)Q_CE4y&b`}@^ zz|4t?4}nTcyHaUf=b#icLB;Na3f<2oe~yAGpQk8}M|$wOYFhCyDRhT;*$d{zzYz>u zYuqwz1H5`O1BN@~k&K`Jq#LR~ifc zi$^aVym0aS3;r9`I`83bh5f%X+ zUixs;Jf;npJm_Z(r%pJ5-!X_Aowl;WOKXo)J5OaE=fdj}G2v1X`h#!?f8wMu4&(Fa z?Iz;dZ6M+al@eic!g9n-5Hp5kz(TOci(kM33 zkxB`w_}F0%pNI;f5jTTI=rvUW}UKvwJEmw!V zdIp&2F}#Z3lpvvERi)T7f9xcX&mHfUJy=A7|2Gn0ktRHNdw zv83s@i5ZEK%d%l(b_gv~Fa;N6X9;tNai4idxtKfBrj0o$%Ca?5Jr5{;J{p+od9H6VJ=XBqLVJ8|PNAYh6?!e~*d`W#k`tHOOXqVv0n{%6%s9skv zJcl9a-K1ECS$gyKMrxOHT_U|o9?o%*f5PlI;}|x)oEf7urrEa+9|f3nDr@2=`f{Yh zuF>Csut7ICdt?Iwji2hc_t;80V%9okE{sbl&@?V~e|xY{3x^`-sHb%RED8O^P(=KM z*nL!7uBS};K05x4&nx6)m0HHyYW1|8ftA_6faM7qYx~lr;{4=>6gSDn6?bknjKjSJ zrgpj9Sw7ygT8+bTjG^AhTLw*97DG8;PYh0QXYnFZbY7xQwkfo=Km2EEbcx{ZjW_8z4PUP)TLe?m+y{dn!E){ac?gs^nyaV)ZePsUJ} z#?(=aJB3f!Tc`!ZLfRQ=Fq+sf~60) z@|739^OwJB2476mg5DTtb@&j8uwa;7Jb{=;i;P9a>hK=yV%Kok&+@FTHw64qe?1gQ zh9XNLRxCP$3DNbLFv1D@KnvjoB1^s)V1`&g3-S+mBFV^7WC^o1v21h+`9X`U>tR25 z!}w_nG_*z@u6aC>rKpZ5!dL*Wff!J99bFM}3m_Cv09Zyu70{xO4lo)c>nncnXkF1q zGm^VHkTN7~H5Bkgmcj^g?J0i1e~9&PT@0e@Pr<5&S$#d>Is~!y^f1(U!r|!pvm@)z z-$HOBqlhSoxg+Z@szY>~3+ped1BkAD3(IzO`G5hy=oSd#6=}pUGHLB~;b1tr_D1|i ztSm^#C&NT4J|HL-M7UUWgVeWR0BLFn)R|@LKnr(=n=pn&h&Uww-H5Zhe=bbvbyR`3 zH^=Ox$QruCpu*KBY|cN@egKTNsSZ`aem~4C+zjs#gHm*0DR$aS65enRgqB~ zKnZ%cAJ{cqAJAH(Yah{~e}@D7Zjk#2CV^d%KwWh0)6un$)AjSwwJ)^+M$Bc^)Pd{DbC{w{OJst_gJkc8y(HoQ9UCjYvIm*GU=%blfkpOiW z&`<$dneOX4lG5)gNrv*_GF(T2$>Bc9YAFr6!6l{ojyAW&S zMzXuh3qW0Dy`BKAe-OcsZU}gz>k)%Z+pxLr#_EijTJayho%}H)mUY~7-HcCeDq*YJk181mGGC@c2h7HA7JMQ6guAQb;@ zcITQTRS6(JN0%ojFlJ`*H;6ut32_Hg57 z;NIL6qVN!_rVI7a9VtcSWOa$+P z11m}(CSn7!i1Yn{Z5Uz5qmV;M0C;HIv z{y>Kbwk*(qhiOX&WDctyXq8J!g*nMr1_C`+*u~u@%)T^|u`;AV_C?qG1^xZuaLmVa zRM>+;_jRoS1rlRXbidUU^J-yCG2#(hH&tq;5r^6ttSm!9F)5?=9)^Iavme$Yv+;(? z%#izEe~=Q}N5e4QN%((*|2~X6(}@NLH~JvQ>y&{0kEB69pb5WjbL{2s)&_I!4E5xcyMU0%g5?_-yn zn5oO_M-}4_Hv5Z*ktV-9j)eT?K*9?Cfn9#Ve=Z+qmp|iW{WN=eIzk-s`2Bd>8}VEF z8OB(;;#R*y4~|+R!}cgv)ZTGy`GTydtv~p1w3w*_G8IYg69HyQp@oHQ?%5I<#WXbJ zuszTg3DanfEW&GdoyQBHu~x&X8+~T&s|c=}Sv@EK4JZ?Wg}h5?jo>rm!l?Q*&Qrvx ze=&yge0BWZ#9DoZ2YLzMj8P&$&qxmdvKvWdCL*iL5E8`3Bwr9qdiO#YACRIT%Z68$ z3$H^#4T8WvJ2cQ>+S7LbY-0IrCVlGqtiGI2X42DFvYBf+4fA;@U!w+r^V!Vx)u|bP zyJ~Rce#6aRZVwCQZ-VTm+8oJ}OJf9jOQjP1Wi<_GUx`|0!E`op(AdQ(~h&278wVe{JWp zdQMO06Rg6=SCXl@=|pZZ7eHX_4vJNJfa%!{NDtKD-e;1t*-S1opC7niGPjaQP32eSl9_>1bIE)ri-7ce zKAB#~oz!#5g|wbEBc||@((j&3f9dzoF+PF0gYme4{8SXfFMQ@#A7q3+8^0+Vo#N?& zoxguTEzc_4LH$ zLx&P$vttM2M@B~Vp~FXZ*^#ZJ^T{P$L|`45{4{{^IX`)l{a<<5E1o?Te?I@wCno;( z(eZ*L@ct^ZW+a3PIjs17}?LBAz@}Td{-SduZ%a8y4qnAgpVo%1RSMmOP{C*st z--q{BydTEzuQ})?{Em46w$Sk(wxr8vr6lFf6IYQXkL8AFK8=6#d}UxxY!7xR^y8BN zZN-ytTC2x!=NY68p-?1(f0wrjn#(R(`OuF9_u?}F?v%r#!g=FP_ruN?g+4M!ovfT%gbI2cimruDOpLK$Yk{@y6s5(^8Co* zv4e@Zk%Oc9$XM4!4?IAIYbwWD0Kedcv-eM?=WzTup2*dL-mNF$$d!D4`RL$aZuW}4 zl*kP%naXrFvov@uf0>@YJ~%uyba3!`VktGaEY-~mYz*^4*99M(<@)LYn5hc7tm<#; zQSJJHN(l2IEk2@V>z=w)W;T&>7L1L2JzG%i6`WO9~O zGm%Z|xt=BuOYu)pUN1g2XuxiL*ui?Hvx#&rMNG+E6r%Qse=Geb&JHl*j@|N=&Z?*T zXQtG$BGl>oi>!^i0RSf#K2L9Y^53Y>buhA`g5)!aWZDqh|98Fr?yh$?ZEm<^QT;lr z1tW0qa!OCnF(`*60Qd4N&5m0jWR~^x^`+E&CcBi#V=%igxRl5)t}OQ>#ARg1x9f3LToZaSGy>3wYgTX>dOf9xvtix=JMtN(Jrd+^ZMYyaL?|4Dor9(wKH zd$wq>qey*d&=dB+^KLIu`dem&pQ>|^P{X*ARq zu-SSdb#TYuA#@^>o=Z}%?`ihK%L@=hl9u&sezm7Df55_Z_e-Q!^q%G*eC3v$SdU?m z*bssnx4b@PruT#z7^&Xr#6nNBkv%p{&gRihzJGEqe+AWzXZH^Q;7;|xKZmsSTVAB> zum=M>y|8|(!3SO>t)ULQh~FRZ!&BfHg+6}(;60-?sl(R^`~=p&&;kM1N@je z0N`sJe;6!ykuZNCh^4++2-Ji3c?B4_Q1E`C0DXbK6twumZ}~%iE&Rlzt*xyU`T}1p zXhRRbHE^lmy@9&0B?L`OhcKQU$3|Uz(XCz2DLlf{0J}bkw?^=Xo@4z}Pa1$5$H2~=A4Z(Jk4fjdp^1QoqnSIeM&I*76vhia?EwOXt;kWu4 ze^(3sdnV`R^fa=j;Y)?O3phb!ydn4=8~n5SH4grQzJ$6@&%WqZtVb)E0~_WhXh68* z4EIOz?nr~c>t%SmL(uL3^0>I@95js3|o({ z1_e{iYVQI3(1|2@|3gO-hPFn6CsdSNB8pcDB% zkXpkc!3^@)!?BCK7D=xo(zn2C1?g>DV9SZj(&fzY%yj`0)fGcJiev@9j8Z)GT739q z!E+cNd_FG5#3UwJ&%Ol%cPn_GbqiuU>R{V+;__)6OYTV%TC|l<>dUFj>Jn13f9obv zS_h;6<8g#V&`0orcPQRF&F&Lqmo7tsTq@{2we{9VB_HpF`j zUU<|Ydz8q9#Q% zIH*YRu%I{q05X;5Gg(Gu@EOSaVSJGBkFY}Ze~11cRWl0pf9KWQ5rvKm3G}!aUFCct zmqW8_?mn4?B=+8(EiHh>>hF=wtSlRBX@Q0lIAWd7Jy6e`&0s(4s&|J#e|@dq=t*NJ z)N-w4d9J-=ge-iX$#MM_D#PcI4awlNaemh`ez!)Tne&@LWGq2ehn`XJWiy$)h3jz% z1gXmq1JN#%Cb)%s>})`Rl1Ub6M0SHB*~3Ei7X3gsZU{T=zif zY9#5}3ilAw)x8zkMKyRwe-S|xuI5(2Qb7^Z=WhkD39h9Tnpkx@BhbQIff3D|faeqW zE4Dt`)dU?pADYZ(Gx<~4KUbx0+5}c?#yArO0BLMFhgK{@ax$4nWfs`j5_V1^c@Gx@ z9pzOR7JaapfJb4g)N5EZc%O6VVja!SnF(EU+3q!5+`SH=ZDi|Ne~$f3Hh_kOfkT~) zDzb%Dq$3JZiMF#D8fLK?(H3Z==Z$)_ZE?y=wb%kuucLdh+%Wn@FYjk-h#qNZjg(hUp3 z?|)=r03g=Z;*?IRx20J1hQC+{jva^(9T++wSuD;iO6swlf8lS7z!t9d?AZI7pHZlf z4<8~IL)>M=8WN*NhjV?%)({XYHD3e^u|x4I`2H@6B;K>sGSq&|E$$lCh% zo|Z27SpgbxwHEW;ot$)ija}e>JT- zwu@{HiOF-Z#c_lj5Zqk*Fv-3#xyD|6vru=xf8h%Wv}*Wl+&+Wm!-!-%HA;PiCM%W+ z@-i;mv}IBC3B6&3sfTQ&|yi`vsd*jOD3f4wu-wWb#Qm>a;IQs=JZJvkA~+I>e%B^ ze3mf{SBR;PVcHdfZaXH{iKldZ4reqLBqJ3f+0BrQgrMJ!#IfB@W|k6Uopp4;*5Wdh zWHf9?F^@+pBk%@9S~>>X8jz8!nPUPi*+5bP`soqB}DD3Cyxuj)QEJY4Q& zJi`^?xiiBv7=nGJ@z|wapc|;zJL&=_~{C0L@C9AtK!A zb2#MCPB-R8>T-xDxLp>waVy+G3&pdEw4OqcTe^#*2wJxV+OPx-Il#v0=9`6jbBo<= z9IJ0YJt62cMOjp9WALrT_&O|& zdUiZw%2LB&cBFL0Q0HuNh#h4J4u)XJhM?>yTZ_STjG-S7!I(PwB7IbgG4mj!;XnxP zWTU}l?5t{7JjAdJh2YL=ST;R89%lGPLolF-kIU|+hRP!h=b;e9RdLp4f5<$_&<=;- zfEwBw44vbZRkUV9=v`=Wp&43=bvMnYQLDH2IHr(F?u~y~zeB8dCv?*SBU>S&#q0A4 zw*3p6$v{cV*E{W_77dFue_dy^3M$-2Nhxv^BZ;=M17_?_yI`k93dK-<>N?)iH036h zwTr7P<#9FE(+Arvz>Nv3G@a_R52-RB*~KV~2*YP{jGX)EzUMw013vQw8_+kF$=Y|D z%V|cEv_iI9u2j+X45JF|ccQX#70lW8oxl*M@(Px-V~>p;wsp`we_-uiWu2@BJMPBV zfvXv<5e*>~*!~ISP1bIKNf-B@x0A9VuIvdxbzu*aN1Q3tNRwqa8b#cn@txiTlf%L`EIUY7ELj@Tbm(lRzh_0=&&`CDm7fr zAexpnIu#ZjThTb_3*IbvrlzXuxoTd}8FJP&LwAW4e@jL{taqeL9;(vFf0$47el$jf zq}h+~g-%UX;|;Y5EJJdC8xpbBXd>AI6?i}$kvxEAMj>b|LUKmWU&+i-1GbM!1e{9G zW>=R@EjbDm_(vVlKhP09={=N=*j zJOuldmp&`P=-|1X6(g{`_(>f*auAw~NE&|me`s^CoV#{T0F)OZ89>Fw$XMqgXe~OC zGqswdcVm$4dkAP;KB6=(yA5dOP^=fvmvEAona?89>Ex2m^!H)M6spN#p=9jCE`gq> zy?f1K3Hd}yPh`){&aNycu??|n=hzDK5%*+5a>RXXCnO7&1ywzlpG?o4N+(dJjvv3k ze->1ax+M~Vqrx7tBfyVnk{#ogLsH`W=SI7Xi$hZC4WrmtRbI?CzEa!}*l&)rchTtC zduEn!a=f6khPaD+GV$pyWm-E)KI3L+w?e_af!7k`>D)fyno1}p+?#?>JWTea%0P}M zW*6B?#a*3~2>4yy1W9TJTdI+-m8HJcJgD{ z{KVe?8m##&%E-V5OHeC1GJnT%m)akOKP;63DQU-iuNL{r2sFaBPhmeQPO2z&A#T8JQ)l z%pX7H$v=AOn}79z7vp(FcKF*W?LPkT^!5k;jb6FX3jna4hX;z3^#9+z@c(x&{0F>y zp%b9RL2mi$7e>d1#OoJ^HpWw~e+YUyG?xSUn$1Dc)9P_L`0s(TnnqFr2v_zT+RwFV zq}9C}hh)3F&?cW-)AOu*7}izK79Y&r0(^DCi7PtJ73cawKJZOvSM&$|z0d#K0@$^X zyX%|=v2Eanjm9xx6)Nq~GvIV+(k@*q6iprt?Ss;XH=IhtL$V7dUI8CHe>BviNJ+K1 z50fo}bJcOD!{ZE(YUNSoO`BIbB~%QNeitu(b}t8@4^4vqb&YNHPHZHg^+2A2FfV zkt@0mqLvAdamuJI;FLg+e*>Zw?T`(N;jV1a9W?yA+uhhb275844deFW7o%VeC?2mA zv8fLlA3N~-5d1zHzwg8E*YNub{QkM{&;R_H{e0oS=kpKtt^_d7f1(P%KS|TO&3z|3 zxsx_Y+w?AHo1XM;TFNE3-TX<`Zg#`&rX_fw2nr}5mx>%JAeV@sh>9qnAc`P}qR63u z${`*cid(T&OTu9fAf6pi0e;2P) zcNXpbeyqDLg9fkufBrtxdC$J!W)H|t{Qq1#>|@;jxSikK>!14ANMq&y-!-i2|91N} zZ@u*v{q5SdEAbw>?zeo}xAA)Iwbv5ia5!U#44YCx60 z%{LQw-E|kqI zf2Zi!Bab{{$>QagUruCkiMh<%d|?|Ae-AwHK;qI%FHQXZ_rIs#G$23!eBz>uE=t^U z&pq_}jW^y%eC=yrOMm?Ir$2S%^TG=+B+fkZ%*22G^B?*x=_!BAmvrfpOD;)VeDTGJ z^Ugaj@$kbBr)Nyf(ySCxI_ufl7thF`O*(o3I>y}$?;bRGv@m{z%&yPL!7`M@6-~REB ze|U}U${u>wAID7U`{}MnAAMBWo_F2%LVjtS!!{v1=Ov%pZ@-=N8pk!aF;xAeu?_om z#=iBXEbQ{r!b`&;7OxNzJi-(J74 zFOsi|{WoiW9ot*?=g8N8^2sMNJx02J-+lKbe*NoTC*F+<{aSn3q?1oP@kF|IbG3=z z|9;X{{eSt-f1dd5Z-1MqcpCfu`q#gb@APh5yzgIs{q^>7*=tNBe$i)h$N>8f$xU64 zKmK^)$3OmY+P;7F)mJATeDFca>&h#yq`Xn*-f>&VeLH=OzuQ8 zNbPM;M;oYqQoq4Ex#|wuI~r@y_jjbB9iegIoqxRey#B1S&QkV@>pt1UAN=44WcP4h zKy8b^Ro%!Y+S;FNhF+I1ed$YyhaP&!?ibNmgJrn>;hccv`%Ygt#!zS>pfU(tKx{Kh)LLB?=1*6McPs@3>vp;t#d1Cwa?SF|qy|O9C>%uXE>W_ak=Ix7XU|=9oP*9LD zzQC{k{(dTZ+O%nVG{?N|y6Y0n&CT2f?vWh0Ur||ENjw~W_~Cn$hy6O^j58>|V~#l{ zk?A_>sH2D$<&~9>t=2+xpYNc94x&6Two7Tc-*EEDCnt_S{&;E&{7o{x`R1F+KYze6 zl<3#5Ur*21*4FNmc^>-NlwU(b1C871uCvcRTj?KRkBe+}MMXuz=kq1}e!uRU(HMvK zDG&5dm7GYoP_ER+@jlICP)2l5)%V65Z%mwa+G(l{$d}mL3+)Kyg?|)>qRZRAr+Q)e zG!D7wAKhEIawX4?e4k^FJvPzW+JCCY{HPw72kA1FNn^Uru2b7$o6!B8J9j3wY}t}1 zDJe;ej*hA}Apc=+FJ9h)1q&#@Pk;K;8EKJ6RX*86H=23#<|U?1ol0|l^liAkrnsk0 zGdw)Z^B~zQS+a!d1dT27qWP|B`x8$*kv~JeVOd#O%Kd$DedHq_q5KXxJ=5FU zn~~paE{wxjc^-W5!HE-2IDukRZt)8A(P<1+^oJdG81-ps>uA1p$|vM-Vk(g*B&R1WGGwS~T3 zwQbur(iLn|i^mx=W{@sp+w=K4*@-o4)^NK`_doWrk2%VXMx*rXp@$wy|9ayGErV$PUVb@jL;koV}ENjU&Hln?w^uR zg5S=gbeyxQH9sDMAsH4I7n3Y-+|pyX+;-Fb*|TSpooH!kNi;S#l5eSa>gnlGveoNP zV*|?FvN8MOLZ5`nnmc!{UKY(Y4>;feN|SP+F^FOuS;$rWp$-w>C_|c;wzsz@IyyS6 zG3*RlWUo!I~O z9=?u!yZ1l7$A7Q7cVhqRd-S@0|NiIw```D!|FHl4m;LWQ?SKDm|ND>o-+$fz{&PlI zyzkzBPrS%)LQ|2H?0khk9y{~m(LMDT+6cj^=3-?8dne2gAc|9)KjYuNvV{nu_? zUUIa{+uk0kom9K2c2w=E+F7-G{rKkh(4kY!#FYHqC4au*+7k+z;rObsI5P-K-GA`Z z{)4C9(+5x00+f5`t~`8dp6lULzEZ>OBq>9kBxRjuw?Lg{*EI36#F&{~v%2wyI>=s~ z6_o?8sV31B~rPaXWDIIqa{I4>(#KXqtc z>S=wG^na@5rB-rQ7q3&+r%}=wRfhHvT=C7K#eIETQ{?GVuIEh7I(}D%&qm~sIP>5W z>XRxJdDf}&{5X732z_dLjN?<&W1tHR#{rT0Y4J_@=O*An=a=ZIPUSh;;gPlv2j|$1 z^3J+Kbkb8{9!!*#P+zup@;WOEUS}y@OLL*n;(wKY$%CJLOq}N0&I8Yy(>xoeJV$p< zyR+c5TXNbthFUZqPPSS!Upsn>7lJtI$No{72c@as?p+*0{#Nx-z4B})KV@C7eEJ4Q zp7m7~t4LKj=W+jfttH{WCZfh#z2iL|MC>l3@2vIw)8OH`?&Rd+d1f2 zOMhV;eP8zU-veiV-o|b9SfB%T&;@n53eI{`UzSp2l?cG@Kb3QK%&VT2rUN@1NJ3nb8Hm~W8gx5#cMfiEp`YHIU zV*G9#)7?H=G(YPqP2wdMCM0(ASL!!XjNSbTTLpbx zIZs%Bt(wBOlAYAe1)3ve?dtmoe=Pe?6$xG{)AHi-IpA(5FHY}-kp{24)K6<>t!1oq zDiqobrkr9=-CZ?nQWHC!6Mv~+Rc6yI@o1xYFJQkJ@Yl3|1;7X0*2v zqP>d*wQFvt%%mtm9!%Ck%e}oB?MZelD&w+u=3|yE>ZpuTZ*N8m zk{z4-#+-DkFrp(k+JD=d(V93J?VQc?YslBa!5cy&1Hmwle~TyqWz1MndJ?Kt(Vp6< zIh+fY2USY=&H^&pDVJ>LQswfX#yi{LK<12XmLa?5R@Sj|o|?_t#J8SWO_y;)aV8>? za`B#;+WAg#IE%<=ZnLZYTvh!ADh6c_21ap#HBR-eF7ZsI3V)YC{)F=q&*m6>qk`AB zVCHMz=8O4z>S;y;l3@K)?ir` ztcshJV&aH*TVVuN;&OO`ZE?Kj)*dPz`9E2a;o(uZ5a6Mv)Cu1sqvj1ys4F z(K3|!g08cX^KzfT+8#u$I1Zjstyne=3RVrFtI#{>kD41d1tNWBa#A7m{$N|YpTy!T z9uJr}iQnTT4F|&mO%uk0ZM{p0`4FB*MGh3Didh&Cn|~xz4aT0!@=yu{=0l~cyhPES zl3Gm8!8jag_)Yz5o zpVpsceJ@e3qWEx54=KTfEkv>g98KDXnY^e2i}4SJ&|yq*oNernh%#IV1FF)JZwheqrORF`R_4@`$Hq9Z|XSs z%`QE0JpNXR6DL^PM0^t_a#nLU`v-hQlQ^8XI1nH4hqea$;)A*W+LhD%7XWA(5AvFC z;GQAmY(WnGXvoE3Xks4ZB5M=JKrWV_KQ^OYt(ZtyCkb8atx;7*N~dPk4iSQ2ZTLGHvJ= zbsd)=@2z+OOkRrvie;qfE9)obOoYa}@t;ZLeW_=47esSS&`OTW%bS#!H^thtHrZ{{ zn)ioNt$k{Y8BmkD`HWlxWx8WD+8Ur+Y=89n^iMUOvrFxEn*!%pn|Y={5q?rxejiun zhQ31Ap$Yora%~P&%1mlK7$??TPPIzLw^JZq9*uBs2CIwXW^*poXC$Qo6uWmpAz*pqsei?& zpyEQ9ti(%q)t-jTU(^>t!nQnUO5L55xCRjj2sN_cT(oJAdoD7|{)^)?^Y@+--;i!)l(CpUpf;IaqTu&0TV7Vo?BP zZkj;8VbM#8Nxi+()lJl#y>I)5v42qK(e`?)kIkyp)7FnR5w;d&q3LK3g|26;-s}w3 z%b>Bdv*mpZ1*-~DCa`>K2Ti9-$GP068jQo;L%E|8N zn*h}*-En<<(2NR&kIDWxLH5U)8T#YQ%>7aJy1CvqRxMA?Oqto#Pt z&T?!{_H&eZGGs+1Iy!m5KI-J6rN>jqxB%+3mQI$t5@&CGprVj*VJ0Fn{Dqkff5!ga zS_F+wDX4;M3jurI>1p3_a{>4~s~1y3Xe`c1MN%lvEQRh&QkY%>t$!|3K!0J73bRY1 zWN++%rS_#ZwO)&Zz&M+Yd=I=~)k{X|+RD1dUUEwzf$ zNwW6cs{8Hmqg0!3JJLTE5Y?f{8 zXl=PYz8+mL+Z#q}f`1qV3#+AD3a+Ml>b4h=s@x*G+3eezOjFmQO9w=XmVUVU0E5^OBK1 zov9J|%$2-%+wz+&@{^nVD<(iuQbEm~e3y&hxE88yn`<2Ve1B_gOZZtg3cVyyR%C4& z(+YO#zf=D5O@Y#4m@0&-GhSB*ReGFWNLcYrlCDdY^eo3aKR&2Tl{C*?m$A>$W#`&h zR!jObWv2AH0WB_AIj=S2gONUBx}15x`^0R!5VDf;6)2=)QqmH*LMdrO3DopNhPFjg z*7^k-`~_0ywtqoY6&eP*=i+!U`ToS%*=jXZd!wOlg4Tmmc1;W4qCTt5)%CWm3|ZCH zdby#d$l93X;K1fJdgxUdtvD7#sn8&2J?a{ic4_-wxrWi6N7Akasa;+#)|ERHVQFMY zE!$T#LP@IXVWQHyM%$K%tff;y-K7YoO6epEZ2WoR=zkmlR^9}~DT!jyym2D@5SqX_ z_jU?TzH3la43mU_L_R3_NiQYxpT7L#Pk-k#_`~Lmr-*8fT~t*L6SdYK+uj?*z%3uZ zo1r{aR#qyBtJ%4?L5XY9Xd-`Qu&>VyD-l)OOp;cRl2J{IwXrO$HdkQ3y!Ve`l8%S)gHCBoO}G?fEmJ^SsT>2=PXDl z_coFHY?s`{I_42KzGLf{2Q;{@3w6=n!;qh1<0Wo40czG8uzDyKh(trdZTn!st$J2V zDlcL^?*JTM%%N?e(SuZ3`69u0fDfO2O#nx>s$)|>mzMj3A=ZYG+O$-? zBY^;>vx+<@5uIww@IVy3Z>f*0d<+!xB{3<@H8@y|U~a4~-?mP$czAfJIUI_N4q=P3 zx__~@WVL#^IT8uQFfeP|!p}!|Ryp3<1+MN1L(WPkIA1`(yAxer1YnhuJl^hNrIT&+ zJtpQ-GsQBD*i`sd?J_KJR2Ez@mEiE!wOX`FQw1>1&$rBKB-|ey7>V+3iu_bUg+{bKY@*awg=2AlD8x#u zpirq%A3jRUGpwLmjjG25{9!Z1s%oIj-GsC9S}0CUBK}!L9hB%ft5jCuQwi#p7=H#> z1Jj(go{?x2^)iIBj*uCMn|*vKlQq=?OG|<+#OfQM)?;ESN@OjK&|q^9ReiL>2AHo& z>+bqXO~Th;<;_r>nod(NR^H<3-7sHk+DQ(pYfCqmV5RL)s3!|Kmra8rr<_^YbSTn^ zrHrR_K#Rpf(x-H*eO+fd-;@2Pr^WrR) zF_~{kN->-4#gz8AEF7|`r5+1@nBlUt>vXJsx#t3zYO@vIi%6<1R%TprVfCvrEJ-kS zSla#T$jRyqo3ByIYoLBE|=><0Qe7kzl9~smj+vu{EMa`lBeA%|RUJYt})9 zTC_3!(e;7A$Z*i?2A5C4wCMdC|E%67ov+`ce!U=DIDKhCZls((qF*k|d@Z3AYv&3F}WE>Si?q-T`Ii8%!IGWsSj%kycjwp)@f< zR<&KTa~AuYg4Krf2Y*%N)q`b2P?VZV3Q`ev4-2vCh-VCh)eL*bD_Gm{+3kyBO;Jt9 zlMR|mR1>p{dvmf*)$x>3TqW~t7#q<{sh*-9_U(Xb2LTptv9}YLBXgoaC$zseI1o1b zSo;aktY_jRQQ6HHh3WRDS2Vcq9Vc*6l98fsJrNpH=?@R#EPsKr*9Fw@;Y?eRSo24q z-h)J|@3fCXi&kGdonGr1AA{-M89M7;cM?>&w6tZ>Kc3>pBnh-4+diRbl^cbnFej%> z{;Yn$9XVG2No@p9Nm7s3pW;S=j_d|S!A^x5C&fsTpz%}Sa}sPd(FVk=Vm|Fw%u*bA z6h+Hv(BP6wFn?;U81W~^fcDd&*=Y~l6sqP7hhT_S2<9_(eke&7%xB#wQUr4*)Ho@0 z!JGv?CxJ~cXS)@XBACxXgOkD`n5uK2O!x53I1gZvk5h53X7f@K&P$06tl=BSDWU9q z&3Gnn*IkgZ+h@!0QXCbN$u*zXY?nQ;=nF6<=}U=HzJCZsHlK_K1?n%%aLgsE`jXe- zk*xe8*E1Md>BTPR9kR+xJWdQ`?9%jS@v-tRyDl`b+OMQJtd3QG)$>3&R(_f5scNkJ za@RAvSlt!r&bVT=UrTe|9;>+0{q-|eb(PnPL9FiTbT5gqhHIeCEm?Y7odXf(yB4aw zNwCL!9e;do>DoM<)m#S^9^n8Hx>tLnjThQRe3PugWW`H!Y{@YM%BkLKAL}I2D z;HtR^DqN;cBA(as9cb`Ml%d-Gkr3;;8K$|AEq^uRf{jfP^p4G_IM)Dk{jNLjcCzn5 zL#ABOqi^~?Fc&hkFlbOCeMyuj9wi=E6n_Eh_0+e>^bAru_t3Y?-eO zQq)&)+=Fq$NSOHTy3?(Cp5)W-f>sxDry#h3{M1!J#5}%t*_vQ@ht^*~jayC@LED3Fl}sg~ zC8dU6L!ArZChUi}(njNc({F&KCqXGRJmi{>G}FXW%WvIvB#w(e@&@-^T7T!NBY$GS zCTecQ8^l)Y!$jwqoiY#&zjx(~_l6)ZkVj7+aUYnpY)Dw`kGeKBPnW;d0$l53uFP#2 z#tN=J+9OxO zipj;X?X2w?Xv)w$J^sGFQP%dXD8AtpUbtbF71t|mjS z{Yno122GwCNhDGwr~MsTvLWQA^dH{h;gl4r3I)@dC7ELw`yF>Ut5T zWkcL+25`>_>wXEkvL~k!I$w6}N;XcE)587*HC_b>WAtyROG7{o*(<=(kq}!g|AB^d zM6$xuUWJy-WR&By*V2<}wXAy`sys$09@l4YxC$W|_-}mERb4SD7$Yh^!tH_@cN$^@ zN4U43$(=xEp$yXWgsWv(VSk3rD0=WT>r>{q6$}sm-Xe`}u6=tWCQ#p}g9osBVSJn8tfwk6+aNJp?fN^7_s zV~w^9<&j{h(9Us2yBo2zL0p3@V~G8Byy4bw*W)@q;n=3 zGhLmPp~w!?>!J2ZMsvD{q+`x4-ejZ6+af17^|1CSu34_-8AgLBKz~TN08?ElrQrIs zJevy)mw{SMOcYgpp;7BXrRCFA*V%i5Zarp#oRpRdKJ=JV4bbMpytvKewhkJDRo<}BR1lPqwVApZPk|r7vKId;^jR~RZ)Uo5l;5m$>D{cc+wfWG zRxC8N4H{=>qJP1B=47Io%^K%sqM5@Q=VhXq%Npl<)2Mc7T;NTk+NN=#H;rna#zo#V zs*M^C@TO7i#11rSY&5AtW(Ro_kc8R6-UK9Gc1T)+Ik+dtn}7t%7JCzrRM`@50um|f z@g^X7vZdYxBuuuZ1qaSs@5Fgm54R1InpZ;D_V1uS0bqO9BIl}y5{ z3wR}yIP3bnl1ZR-rdKkFw7K7?_e%DM`=XIxA4;crAT!l$);yS*Y7T1-W~Q3Unm?48 zY94Feo|$Ss9{B}(dH7roV~-z&4wc+ zngel(=E4~g&4X7Znh%rm1zG@$#tO6$wtq^r2ws-x0GK>ZpabD`i4KCQ@d6zTGbRXh z2rQTAP&i$p#c-2EOW+BKdf?1S0xgA0C0YhIOcrQ4+%3@xIBtqSE8*}0fmXpog#sN0 z6N?2}4NVfQfrBJk3l~VV4sMWWJ^W0f4e*#m8{w}KZGtx>>IGChLYu)a(H1yWqJP6- zmqc43SSrvFaH>Q{!bK7t1=mY-G~6N4F)+4Fpbr3(=ve5G=r}k~q7T9`68Rx2(Ka|q zq5zyLQ6F3;kqI|Q)DJ(BXaF9OXb@hIC$N^~N0)e7`s zSX(F1N8l-mJ__gi1o{}baV28T5XbUNH8(HX#+1^NseEYWA-MTyRY6Iuj13to`uY*^hY(0}LPixQm! zg>3?z3mp=j2lLtmIv>_cbOD5?3G{h5Q=%_G?R0^@2y-R65LQa`B{*K9i{K22E`|#w zx&&^N=u-HJL|=ww9Rhs?{1SZ?J}S{=@D+(JhwCM}0)8mb*WeL}u7npPx(c9EpsV3w ziLQaiy9BxxPM;yr*J1Wdfq$-pfJEPbMt^jEk^qUYgJiT(x+ ziv{{Stdr;;aIQrEgl|an0z4?ui|~>}FY$M?3B3${iT(xOlIY)Xr$n#7pC$Sa?2_nJ zXzvl|H5ioWb+|#IH{dRb-h{^_+68Y&^cHMgDo_GWk_e1zB!4oD$0f=!UXv)-C|xE{ zo^hx|V~htS$~TIZ3pCd7OEk`SK%()+xD^6TFjh)5(Rfy(Nk-vHfhHRZC7NP*;!NK|D!B~i68 zakW4-#z7L*8h;Uq>Wnuf@)?J$5r`QfiRz6nNYr55EK#HJyhKe#;aY*3jRPcVF-(bC zjmC8XwHZfC)Nb4&(KO@Y^#V;dV1qy%#tMl#jZ-D+GJYq~3}f|1fo2*%mS~o-WRpPM z#>XVWFk-JjbByg0%{6`{(LCd#%>vCgmTVDdfpMio3xAEbBwA#Q94^oSM%Pw>4m3U_ z(Lu(PBLq6w*doy(#?2BPYV15xpvA@?BwAuDIZB`&<4Y1PH42XwXqj=AM9YnPBwAqv zjuB|3@lAy=qTfl5*=++_X%{2u~4E9 z7=$U8anpc60psjJf%=U8pg^Ya{C0u*jfo+F28=Zl z4I0--6g1Wh3G^Z3Wr?;M7lb*=y?B>V*wV0h(0^oMb0^y&myZVhF}BS#!z?QHOZC;` z!Pi8~YWREmp$Khz>+0&->c_Qp@iH*}QdG;A@ErRjC5!a4IR2)0sp3{4{j}!X!G@^_ z7LSfH{{YV2i7slDxFf1cbju`W?MMxcb`U{7=9;WP%)bMdhcHu2!XHD(RWOQsNh4UA zWPd9lmLi#&jhiQ!s_Y5*^air^yKwR|7ku`)OD=o%+Do6k`s0h#?I{zI#}24_laq&~ zt6SscN2TS@nu=8$81DR&FCw+!(i}7S+FX0`0lrMVDEX5wapO-_f?8#_ZjH;sm2m4< zZ6*E^@}Q05RKl{95+;u2Thz3cE1IG*Wq-6}o-7RWO1(8{+`5PmT9OD$P(&&}xid4C zdVlIfdXn*-(H6tgTe&*%{dD~(m!P)GmSH%D^*MxGFiFHk7#$vUVjuT!2^+ab{gwXeDad%OsV(MdB<%sf2X`0E@{Z0Dl-3 z6t+ZEQm`&UcdT@kQdVT`*vGUu7o){pRT=JPH5W++rsLZM(`g+usRlv`HQgf3WArIZ zRkBo6ON%@ekt#-S0w&c!6s^fd-cOZ{mtg9uL$WT%sNorNDciW2m zF}AK}taKG`+jFR`#GrE|Y<31h!GFN^6lF~^fF%6n*G`lg#_FQ}=x9=NdqOC*V1Nx_ z!RqcHzMMRa%`_N{(ftkL?ZkHiAPvQa46m{kPIh4yrp%rOXKGR!-$rPB>LY{cPihNs z>(%tsnenK2&h&I1(B_B6tCVMqCyk{MlOB~#jJfG;-=Vi6H8L`5HGjRMy>PQ0R#r4J zFO0Qe&P0Tv`w-n~SIR+R;B`iZSS%RF!CAd4#bFqW8RY$zNd4IMol=QNlJN*K8Ze`A z&MCergvwFRdX}zJf{2X_52IB>1xVUOB?j#DZJd=@yDp5gb575ZGKe{aptwy>=^_m4!8B$|n- z3_>fMOv9vI-49x*4vj)HO7CTEqW3b}f{|D|3dl^!kD=f{Ce|C@`yjhXRnghdE5;>61>sMuBef7&-3an1*+JXNOGCG8}{oMEOV#}1lqCRJP zTJ;AxH1!Rue%Qfw;*AJxhNQ~Uhh>CO2Qp}Ja zXDCA>p?DBSj1#ch9W0Q1Yi}qx5S1puYn-(@p!|FQ69Q4U&ow@4*t=jfT^CF}pTCR6 z=#dycg2rXBSU=797)e?`{T!qxd6PsrZ#Yf#5749$ z6=9SL_G2zl)9mbzg!)pchx{i5hen1JHT45sFQg$5?!%U)8$9$cOS5hfV->C0Dc6WN zc|F*~Y=E|Vqnh#Cv5_H@dxcSJbhX4m>Yh681b?wGnpRT}msM zPaF1gO~K9@LyhAz8_E=AGKz+e`f4;7kb1sxeJ}IJv5dapj$j`e7sfxz#XDAvSsnSc zoR@P@g4lZKNTR5aBUF6SXtX{tlr+kjETdJQorA#;pP)Wj`C^#2qT)6>7$b8wL>ftQz(~a|aGLt2W?`0e^b2v7L&EghQiJ6>)ll-G#he$_5Ro68{Z3 z*XE#}YFdX>QczU46GoF>T9}Uq<^Y;9G~=dZL#9$KWTTKi$*0{KW~#(HDoY2Y<2Z*ym`$q<$;D>?jBdc9h8VNHZ*3VWsQhkt|(+(v2{C2I)6?) zlOjmXKzeeLaB$RpCRN9-WavN+GFU}qW@wQkAwsf@SqYogZIMz5(93yb!=(mvVB?E! z8RxC;$4(cIhfH$Q&8UieaVZSrV`f+np_LY<9FD->1Jz?H;>iUwXJ|9@DHFt7Bn;mt zNk)YD=~T(VRUSu`Oy=9TlXY1-Vt?|M+i8YEonk)5tq9ha&qRq6uEw!YWG5N`8qwN28IxyS|^s$#jbs@(owRA*rTA=s_fZaqllXq4o-EG|Z*w6(~C7fK~l2&f-W+i%xGh z&0#U`HT(VO!%>cUvmCg<(SHW~sFB@}e_0W)B)3BIdbqFhA)v{jR zjVR`UT7hNi&Ioxp0W`pTKvSNNe}MmJ6TXHm27aq?v(X!m^1ud87k|XJPpy9Gr-4_@ zO3>$`W5MO<)NlIvNyr_xFjI=zXVeHM5Wr4MjZ3Z?GAOe^KKW!Oie>VY>?MMR zdS$mhcM>B44XF_k0e??ZKP=N`+_JE-tCppiZP5UU?d}l|j0ddAmllZc*)W}32+c67 z#PEmGm4)n+{49UQy>wC&Rjim%rvzJ=pH`hzncp_PVJsyV-zr)!mGmm*jwOAX%yQd9 zu7Vpclxnd;Z1Bd|;SZs(vBhi}jdP-?KY+H7+n@mYka|n1W`Ar?23)u#c>!&>oY3DH zqa()j$-hNK-FV-<4juMTb?Tw)#@kmfqtpv(YIo8%wjHscqFRL+# zykkpY`;@g}5r1M9rPYTqo8FONoZEGpiX!u!$QG^q9ln9{6y=k96bVtsa1Lh$BG|AQ z!GAjRxmJK)FSgup6#?br#QfmWISw*~;Z8g_r=#8ft zCmXiVikdJn+c-%RMPvh)_xEUQB(~iH_==lGAAhDhvw&|jzWz?J-GNO){Ce;tr{rl@ zX%yQPCFCxmjnoE9t5Rnfry1$SOWk?1!f?nP=D~T8(M=iLq(G_CDsIO0#RsopzRxkd zf5P}kFMn2mrwZ0(z*y&>$5^ePgvf~>(I}%>X?i5at4z)prcrI%a0AI8Pgss`S@21A z`);#Ai-T;$Dm{fQnL=ezvKM1ZHe35;h+46+WuxLkwWAvYdI7Oi2E@6OTE#85WzEX$ zDwvwzQr_D!V5S$Ta{TCM7C9=dC)VRK&XZDvb$`gEsu5WgZP8F8km_bN+uBvGF>uX4 zbwspjF~Qca`JkHYLPX%vg}z~2m97g>Kftx@I7YwB%$=Y^UtGYBw@;TAoT^P#_f#s? zyv~lcPkLB1taFjA{;BSixvyvLQoP)K+ND`9eWm$LPySR}j5sHvom^~s$Nen%(T zjekB=TG%@p4ls4%fF651CFd=pClWh3>g@VMyM^xVmNZeo`SccJ5h*kxzSE9TD}=L49KpTh7-DXu+3)7c{h!IEPgrmVe4k20%ziR4gUv6NKI*`*tzWnu8`Pm4hxQ zM|G@+NJ`YeIL*LbO~df+ODk&1l^uszVmROvt(peJ*cO{eb`F|hT4BZzJ~D<1$q%HY zB8f#xr=Yveh7wO@sn}CVX-?^#VVq*<(sMQ~ky9>|g8 zPgORZY4l(Ajsv{P+bEIImB}=C{a)AxZyN({fr1I6glSWfHZ6I!AK>5>4@OE`lQ6?f zLs)?T2?3e}lO_2#9r*FSrD zMoSAE#g^EamjS$#SU*{}rrg+@1j+J?Wss=4No0Z6$mr98Rdq`cS5#{%gF)#%ii;p* zm4lKxUC)tn^q{ip8@%=u?cGb71nsc6#4b}8B3tT4WFtwn)ZScghWn5+N`LW;D$~en z1^-y$vpYFrhvG|uT)012{r)2VG%r_qAx3wpBP#hNNEy60*Bd%A zHV$M4M-!mefi@|D!n6T(;w@)$u`I`xy{=OF$>(y@!EkNzf`2{h==B-t6J&*94l3~-Ms~KCQ#yI% zQwJ7atq0`^ev~IGiIvh-f|9Wxlx4v(3v_L18L|vrSXy{cvg~QuaDNl7i>0iBfhOgE zn&8k)`A_L-jd0W0r;z8&ImzZ4KDqSY%xYQmtlFH884VC4QUjAmv{M>%9z62MKMmO9KpcGgpU zp?D|$lB^^5WgFL6}TUFlikjI`ONroMJ)kTdHUX#_#wOGyld=Vq;Rim&Xo zL0HJi2N6s)8aIa6cozw zBqNO+3vEK>y_husNpXoUMd{AH?;haGhaVNRNl_&^Q-3(=^PKXl*RTxhYUgLU(MAod z9)W6542giFXRJ#5dUjgomso*@=5_0;>Xxlrx3;Br-MWX?Hh^ufTUWL=2;`vel|icp zs+-Idb*ov%?j=?!P=!3R@wpSStm(muY8W*Wawq1(r8QZLD`4!jK#ZG{S7hr`@qbUb z!F{l9Rev@37omWGtEb7(&d@ug5xR$+Jo&(V-zqseg)Fd5;2eH*y}a65H(p#2%NX)m zGTRO(UAdVoeKgsTOna1yk|E_900mx>g*Vm%1($z=a-F0ibMooHImzDQGP8~3TFM}D zj-QbhVWdY>GPGk6Cx!7_@6vjs3F}nXg3uWg^M9-+d7ZDA*Bi8pOgCTa%FdoF@7Jeo z2M{40WEVyc(yCRb;0R`wph^L;mlvY06gU9qh1%W?=?Zhz#)K)L^cHR-F+03$esvSh zSJ0s8aooq}@|OH6<<4g>aK3v8r*sBK$qDF-%^d4Wls?I1U|B`EqcNCOYO3h%5LKmS zZGUtOBw4dP{DPUq;A$;UH?XE0vpudoO^H=E8j|Zes{_@|_<~@wY$UK!rRXagfSs^L zF%Dd#S*>zSDdbs;ID501s;QUn2RVX@xEP87WN;;qd0{?VYxG+~4Uh+SXaRH3Bnqyw z^klUr8EMiHaTOklNF22jA&VsM5w$Ah!GCULHC+89mW1F@tMnv0z7YCF;(@j_?cSWd z!E$1(v`-;8G%Bf3%LdZebZCLFat}(do?s>)VuAq_V*s_@Kk@1A%DU= zRRUxUScm#ENKG79?%gqT3NNpF7Qtl`AnBo%WCu)+>V8q{>&N5EBqnMWgd6zkhjWuc zE=d%l%H(aC^&2Yk&kh^uF|c4qV+Jz@-wWpwu6F<;Z46W>#Zmb`TCI?5MqRrqSR>NS zlk7-Mey2gY1Y=yA2c`zYIb)o!w|~g@RVsVaWBGzo7yk9(Jz*3n*!9AXyVNe zFcoa*UDhHaao6%hoHWt2J+}~Q3$Yg|hTfs1keMryQMBm@WHAtrjNOxrbR?%?*Du3L zO4D{+BOmu=a#JT&H&J{|^8t}tRghDVlPAKMfC`_b0m-i|!mbB~RJN7lmwzO%viGo2 zxRXmj2wz00SxL*mvWzT@0~mTW%B9i7SR~yf5d6d*HQZDhbhbn{*T<3ctqhF9tUz9Hz2MPXib~Nnb&Rgx|f8+7U zVFFi8sdCX_O8@3X#w6@sAAxLmL@zhwur?@4w4oUO?~Q>RrrHy`8@$h9>mBNiRkRxbmNWkbOxdtVM_4?mi++*~oj12B-9 zwf1%uC`xYWGC#(%Q}ohJRl(r)`yn4W9TMV9V~ZhLgD0C=EkN< zx|cgkYt><}Brma1dCm2-n<#%ltq^0ARgA+VYmppVC6;4j%QgSlT9et&hScH}LDSqQ zG&9%uhIt<3d*l*nAXKdB^>U(J9l(s&mO84TD9|jWj*?Vqb+dUAy4tIqDRxM(SWyMm zoP;CRpNsvPm(!FxdQr{0X=P>1mFXw47j<%r$INJ~Hl({UZ#QVJ_qc!iC&vts)bdi7 z%1GYT@g>$Od&VetkrWuJJTq;!+~UOO!H)@3xhl-?#*Ek+S5zId73K{ZsY-4#N%oeq zK}Rj@yaUmkzUP$0*u|P7+NaeUwHm1?FLEgL$!v)ouFb1gFQhA;ldLLmTULFG-N2%G z{#y(pE^#`=W?Gi65~F{n!Sx!Dv0@?xD60nYYbF#gEiR(D&$d?aJ{)i;N#miKU%01g z&<9SUuCbY~=gBf4^4Max0N-J@`2N9c*hj0Sv$@8gaSox*>YCJ>9Ow!Bs;oF;(3mYp__b7PzJAYC<(C-e&%lHW zGw6XALGuECiOW}qY4S7@3Ebu)XH%K?XJ!ZB#G%=_OuuW(=OlK_>l8UU0|IV(2A(l&9Q2N;A+x)9sQF8C-*mKqrJUdpWh)9tR zl(QlE<)P{ZFnGuF!UFMJxIoAVlC@wLM%)f3r(lVTzvO=&OI1*q5;QKSCUKb%j7^`5 z=K`wNavo?B>^-28k~C3mU~hkmX*85)VIKEqxpFVE-1!;ysk=I5uLIa#BqIscDKeMB zvqK81fYV&Wc6G*tBAYAE+N!vDoB`U&$WA%>$IeU_KXngKiRDcaTrH*5ig#1j+ATD| zubkzwL^gjT-Fq%<`!wZ3ye7_rrc_r=f)X-#IF7ON9NfBBZOWY#dlICyMX`4koIPD{ zJVH~|%f}k!tRj1>YQdtVwj_hfen1A( zf{F_;p-tUbVVw5&nGE+Nf8v@Qqkg?y`IoF-+@gQ%XDMdy{?WM1Qjz!ff2LVB6fGB7 zXZg*!&8niJb^m>u)&PB?2XU9>f0$q4)1z>U%~RmH|2VYSeAKRl$;>ax|jR9n;i54$Y!&aBz9*V3zQzvbnzu2WxM zi?4f%@4rsIt{+igKi%EbN!WtFuQRMFhit97o*wGR@2yLa%mCe--2{OyyY1lT2H@nP z^>F_h_ZH#X0&lxs_V4M{{_mRx?3-3MU9W$h>4#^!9{%NVzT=wxi@j)$DwvASsmz#W zlZ`HjT3PduSfuCHiF$I4YR6ET)<74QZsIP}yUfo=wX`JnVpEF3#Yp7q?O~9p>0sv1 zF>S$>ojow~T)a@x>4z`5YfWV}5Gn;aO}VPRR{8a?{9wS4HJbGCfjiV?6(;5WxKw}R zg2l$hh+o;2@T;-GrIMv@72Nj6tM<|cWz7GVdf98}t^t_wwb&Y*@SBVWOx6|W{zjx` zOh4hTZFt^O?ivS%4Mc7B&GjbJTJp-J2BQPCd=plCZDf*WLk89W&EJIo+iZVXh1pI0 z=%N9b#I=}u%uu@NQf}Edw#Zt#^kIMgPWotudiAhL<~>rKrYw3fLQZ2X6>#G!{F0?m zsCcHQaG*hFDBdOpQ=C$lOgJ`gq@Mo9*#>vg==HmKjss6(O&znScS;qdC1vt0U~K|s z9eMukj4z}Z!9e8-g{5YD6?VxJMHTQHx5f8uy*944T6y=U&4MV)mf6=L)=+=V{DSvz z`7Q!o$lGU2s|;kjsp6vSifWalPhpOHPufJ+o8^JpDyXnZ#6FPYlC%6FE6XY@=nsX$ z3B?ihGuEJUt!t^R2sUO>G^+wHdaPIFKjxi$j=U8)TB+q7%F)Ox5uK8*k$*YJtFNfm zFD@MhM+@R zSsh5i$z-NleTcKs#`;=^^MD!7CWB{oq<+H}5<%hCWfk=s+pKOjiBNx@iaf-ZC6U8k zE>tWW8_tHBJX-=8P#kJb;aKVxd6@`9Zg(juQNOe8&zBzHSQ8m5SHu-hxKNH9anLXN zMo+<0H6TT_X166vV3gE9DC$Sklr-%DH&iKV8_n2BFXqv^KK-t;GsfrER|sY(2qAUq z$<3_o4hiH0y6jpfP}P65djdVo_wfNvp(+6Edn(PYgKPaj(PESb8dml-%IBG*Tpm~q zeDZZOIn%xYenq`_D+STBAzMQ*5U7cgOMGl;HV^T=1DY zOI?UNNhF6C=0Ju-Da5p}?KP<`*wPGAX2ISJ{c?CYcWtou-} zhm6I|=WLGpmb=}4k=R0uru~ZX;{)R=#}(&KEG!D>iWu46(Kl88X*{_@W!xJPNd@1)8o4 zzl&~S^H3={_XKKd20+r;8CD`=vE?xBP7`+s&kL?5it2(gE0(hn9_8Xx!%7>(lI8}R z#7%qC>erO5s9(MGE|IA$3Z*U0fJ6i<;|7-6D^?jM7g~QYH?pDAI9}RC%CcHt1tk5bzse-D`j4&`NlfqgZ|IP`ScI0c=F!2;vRnPF#k=C%+I`H96Z+QAT$5VM7&d6KXFb6KBXb-#9fnOQ~Dsi{5 z7-|)|3f_N3lOM06hGTA5dJ%7h%>dsry*eOXzK^?u#Vmq!&U!3WZD3w>%$;ngQ7D?h zg5iVNV54AOJ?>J+4q+pV$KoL{f>q*%QbQGX*}cIgqBo2U))L7gnav(IoWq7EF$U87x*%vx<@pX9#qPvH zyu=CLdA}o;-GWb-RtCfi>7(MS^Uh#`j!ST5LB4HP##;fMyIf3O$MJS zdG3E&1OKT*%_XL?SO*&JywJt3BhuIqN4dD}$r>>lpF{hINw%4o?xGiA?g<%el&Kl~ zqjqQxyF(SP zstzJE!*bc3MjdK2C66WQMq&HctF^)T>^6U_2?$8+&H{ETK9ax7%B-Y97LQLnO&u`e zi`dABu`&+=3i+iEQJOH0jna(h66iEoRX}lUam1*OsA`R8aUNBr2ofQFf}`d65P{k) zPc&M_60_yx5|&`JY$J%**C3?5oR>jOEQVmBAQv`Y-U&~ zyVIZ|zC;I4M@?tLbuIDC7Ax^C78}`JBK;bPHVIRk!QypQS|&RBY^LF^F!pxZM9M6d z=p^FANt$gmBo~QJ4C_sX>0zOmX>EUmkS%dceAAF)lKkIx&GO3Y0pwZ znATEVQw3Nf<|<#VZ;z0-EyT@JQ%EVS5*p{ztKSP`minmqdTt0dHN#>L-&+&!ip4Ep zF}ho)H9|NNY!sibSs((E*oAC_vyi@KW5q0DL!D(Zk$*&);c{&|wNlDiVx)i1cTQAI zR^npAhEy?_8Jt?n$tB~>EY($R+M_~DS;7+iCKxr##ooh4xQNlbG4ftE%vC05j`+8* zk?s;T0i?c_S-z!86Uq0n1b->yccbIp#$vo@bGUlWdOM5rEL7gyTFT;-^oB>U^&Edc z8|n5Kv+A3r@{$59-d$Q=*`R-J6137QSc)4%i=gpRDp{f%PrmT0agwW8f*WV%UMjMd%{3Lc531Z7K<8nl;CV?rBt&-zsjmt;~!unBXPvX zXjJK_m4=_w>e$f8$7H#&^=yQL8oYmkR8}pzJ+48A z<&h=jf#p`lgT~m3?9cKVW5Tgg8x0$`J2Vn0uF0wHa$Ba@=7?Eb6$>(!)nd3(vqV)+ zT*YEt2++7@Z#A=A#3cp~q(&y+g%U8XGlh>CQ=yV)p@p4J|{H6o6& z5sW4?)*Dvkg`o}R;fTeb9tR?jvyvV$X5fe-RXu5g7lybuTVYrmS)3cA#YRZk#1h>I zc=5DuX0ul_;xcK4F?tJ2c4O$9pA}l>R+i@W2VMph_oz!T5*L3Jv(3qmEHV|d-3uc^ zF*{hC8^cu0PL}9Ka42S%S2Gcc+0ByO7%s((dW;P>#H9eEF6g(cWH*mMu zQHNahHlGB8p|elJV#EVkbxNqmmQ_JU%iJkJt6%Z)V3xEENACl0Kxt)$Z|-lwn@ zPmAK)*hn9YhDs~;3>)E7YQ?@N%S?Ua?uS@jypIhrMh2ct!Sf+6vD?kvv{HDM^)k!w z+6a{!CiQ=fa_3NO{aIOO{gG9CtdY~tu@paKV?WW#dxd3r;YkJ4ND`dr3i;<*wr>T& zuZxw@7g(|%E2VZ)Ptrve??5Y+XES;eF0P%$cr5R5&vA4IOZF=))9Wx< z>7sgw;MJw3K=raW?@qKUEV(bLu9JMIr5@V^}Wa3kFl{1Jfc$-fvDVa*2h_f2OAN%V5D;c&2Wr6 z<`aKxw1fEEYPmCw9GBWxhUR?IOFUonv7ch;9_VgG2m|@Fr-9&JgSvuq^k+PKfr{}u zO`w(jSK>s~@eBFST~ z8SMk*`w2cBIm$`vXd5~lyqlR3QmOyJ}8xs`wU zBbL^O5K}8_gJmnMv7Men7E2wiXNOp(U++g$kW!_ES&|HhQHaZ$apqcf1mJtoAR8Y|W#rZXW&gd^Jp%(-hko}cey`f09M*oc^_l86QkNG?O{8x+BjT`x>6^izQYr z^Yz-rN`Ea+@xztJ+4FHP!FqokkMqS7OYhOQ@Z{bQ<~Pc7=B!(JMj!1-#mGjpZ{wL> z$mD~B1=-Hf%DJ6;jobNf7A7xR)4Il``#Y(6 z=ECC*@w7UE?ZhK1bEqfDxq=|w+@?Z+VV;8t`^F&Vp4L&mx zxX+BONGg3Ma_1fZ2JCt>A=Bb%4h;G3lDSTu+I$aOk(Qq1>0hP=)PbRzgOfd#NcW>f zpr)jF$|{%VI_OB{8NPq^jX?xtomI3*$2B^QC;OW?MEz@V-96e9O_Z6QGAW(M_d4ZT z85um)zhjM^wK17|bTo+2>gX|^%&8m3)aMv8#`4s@(STlJ7LOI{)7oJ9nr7)UXh9Fl z+hAV4m6+XId4ZLf(_49=m6+RGd6AWv*IW5GD>1*f@?tBoptpbW@m6ACZ{-uL#G>BH zAw6?kFXix^k;LNO%0YkQdn+%nQYP?3U9R_QBl{p_VqZ8wr=%~OLM!FAs!v}y zaDUUb=?iCqmGZ{Ea3)$QQ~hyNKUvdwoC7CP$yRBv2nCik-5)`! z*SgCeLF(3;;g5eH6>H7(N03^zX89vXm0Gj?5u`q?H~Aw-Wmv&g&DY&`O=(CsL7>x}Z;_aaQWWK9P#8)J1(Fjkn^<_(+Weryr5+#FzV& z$_C;W`;|({Z}u;pV8t)-FP&(`-{Vs%yDjcs9-~W*qOyN7=&rc8_!bseac}i49B0Md z=UZ3|NkP7ay+FL>eALU&r)sRrxOL2jfP}NIu zp_LHqrMSpSSmswO6`8QyuUM)wVTE6@RAxf8U$InY!UKNAQlSYe{febZ(`tB`4ltM40YoR!wlH&(Hg_F&&w<8S!w-`LRUY@*0jh4-79Dpv$+ z15G)#)s>C);*whVsuR2~xNJ>sL0(>Q?izUeBe%hLbL9p$h~2<$WJ62%nymg%xe+Sf zgjKU{k}sD<@um=CLvwC`H<}k%zIgd+Qh*{ThEJ{{+O@B!UL9H3Z$jULfd3_Gf}_ zVs~(aZf2#ocB?K*GZz5;Zzx*~bZ5%t8dcnZ190 zFhWb%9)j*+&k=Ml>mcYY?DGV@mHmLA``EA{2)&Kv67+U9g`lNuK0)`h6$Ay?y9laa z`v|IJuMkwlzDQ7z{gj|(?B<~eEoX5AtzZ)fs%G;DdVp;qXeDbWsD^!=pjuWi452!9 z7eV#x9)cR!g9JUuo+GG{O&yL<6Z?N9LCq|01VSxr7D21nIf7QRycmSmu=xb7WuGDF zAvSy@LhoQdA!r?Y^C*Pg$-YR?yVxHHdN*4hi%={35JBtN_X&EKEr~G9b|I}dXhB| zbck&x=rB7<&{OPXf{w78(-1n!;t4v&iU@j|l@as|t0m|-+d$B>>=}Yiu=50+WS=GI z6l)xf(0kdubcCK`za{8-b})Yfp%>U^2s+L3GZAWIj}vr;{g9v++1xP*y^sBxpqJQ9 zV-b3p#SnCsEhFe0J3!DY?9&9DXG5|Oy1=Rly2zd)sGWU?pbqvEf-bRFXCri(jVI^| zYa!?=dz_&6vkrnjz`jY)2N}yj=tC@#pbxXj1bu|vPtZr%9)do`E)swAarUZQgg(J$ z67)&dP0*)UavnmTW|Il}410l~&$5pY^f~qef^*ee8m zpM?qf0UJCHp&zob1pR-A-A7O-dpAKLc7&iX3lr4EUR{h(H%lj|ht(4FW44K)pRi{M z`YF3Y(9hUk2>Ll2J|3Z8us0I)OZIkxe#O=i^lR2Z&~Mle3HmL&bpk@aV>tx=Ab?`$(c|6qUZ1Tp?+f;b;ig3usd zK+p|*Awf6todn&)pC{;M{&|94#s5Ljt9jh(5qb?TBPZOQ$y*2-%nuSYgkL0RDE~S^!}y;G8qO0ZBQ%1~A}EGe5j2u- zCukIZA3?D^L{NVmPn&{JJim*e1ip%(M82OOi+_cnB>rcDl6mqQ5lZ22A}E!gB`A$| z5j2_)o{CU9&m$;Q%| zSqM$yT?9?$b7mtng`XhkjeO9X5Sq$Q5;To}k)Trk);S1G=T8xI7yms$Gx+Yi5t_;W zK+r7y*0~7H=C2U+CO&u`LUZ^Qg6`%o6Ev4kn2*pr-b&DX{vCoA@U;sNTF5^@&>|kU z5TP zg5J(^7bCQkZzJe_{&Ru?eB_%Es^H@Ys^rfRRK>qSP>?4sL1-C&n4smn>K=qv@HgCx zP&L2#EeJipKTXg|e(&25s^Rqn)$*eR)$tyJ>iK`W-;PiNAF&jn2l?|7qOZ?}54DE( zzSy;OOZdr4wLq~s(gm&-9=)ABawChagh4!xZwrARPx}HB1 z+VxC{{Qz1EZ#i!~2%Xu~b##5?gP!+1s~?ORjSo;0poZ|CE8XYMgsyDxZu8dHgwO5j zKDkA9i4q7K={nF6p(Z43K9$w?9qsIRrfc^mQ=dC}4z)U~!=vsK4x)G7igiPWUJQR7 zZq-5zAFPaKYxgr7o$Bs-xudJ&NTj+4-zE=k!l#af4_^(nKW=}4Q@)%Go!+yj4awP` zUkvTo+|_l-ta41?2i}ed*(yC9u7b8Vt3n>uFGv6#a>MexgDF(NPf+X z7=or6-rCyJx;4D_V))pW5}Qi+&~ty{@wWG3iLDA3Ptwpp3!zK9;LbX1cPzXpF;*UT z+TQ~XAKDRm^jPS?Db#!hnq{V8>S&5U1U?RJ_Y2~gmgH@kQbskRRApqxr6}2)sVF}! zCB}`KjI#sRb;4T!xQ&-T#8m%>|Lgd*s!@Xk}+J9aDN_4e=u#*hp3=sWyt zysQkLA--k+hB^#lGy(VtmKT5C(bn_){?MiNQ2U9{qesC4^mE{(`^=`$mgm7tz<#@q zJd4kN)cP>^U$AxLpV(H&qWV+o@rmRg=9`@;kto_ICIc-6xHgz{KubNFw|91Ig#U$h zJr~}82D(7#?U9Y))>f$Az4>hTi5CFhwnXFhG3pmpR=?6zKM*S`3-5n>Z}`v=Y_;p) z2IM<@{(SiSCLE8z84$sV2Nb9KNeq)sJLD+ny&Hz!QC2oqFf&$cOOJ&YC{@V`ew0V6 zc7rd_xuBF0y7)@Z;itL|9fA27SQpPS0Tmg5X1Xpv*7f{>&P&gMvBGm0)N&SY4YeKY zI<*a`cV2ij^z>8EQuu$-eX57n3qkgr32$EyU)zW7w8xE-0)|Y6yiy|5l;uPGGRH}P zWKoRZ&(MpTLRYqcVLKY^pU6#KGB@=mbobRKLE`Y~XQLMMj$7oM;jo;dJg}UeP45BA z!B;L9*>@3ZLZBh>4qD`pPfLQw`mI^p;bg!wh=0JhXGVp(b%%e6+BWFaAZ^Rgk3EN< zmgWj^)@jg-t^gxMx1-e*equ}bsY6gJ{L-=Tp{=3wZP*hUQ(Hc;(0yio=fx9Ud)`Oi zh40$)G6Zi>h6SN5FT(hNYVd?GI$?BeelGOrsjiOGP$rw*1cMFDBfNDR6!mO|;17l$ z^fp9iFocjA^h1Al>vqk(DU#+xs)QPlynsz0861Y#jA{TV+LM^*pvALG%}Y#sTEP`; zmR+8Whf}B{ffw4btGlhO^U~4oD~|(hVV_%G!D3Jh8Y<971IC{k+4PVtRSnXZrJIGp zzU458(f#82@agTLEl-9{ZWD}O+TZo?#gY&>%@-dFb-aJlef7wXTGxk;9~AN3@g2}4 z{OrE^RCwpJ-B;Ilo$P=*j`3#4U3k5p!-U`Uki&!VUK?h=+3{@n%pR*8P|rQrefDC0 zURriRUK)RxLFmGXP}^kyAhzu6I4?B1<7t@ULl<8T9o~$J>p1|^$WE&eDi!6WNvqfc zdI#@gmUmv*8fx7El(5fmP=Ku1!HcIaFuT7OKZOXe_y`|8FBsgk5vDzO4xJ$4h3+jc zkSG>}A>FO}V9J1Q)pJdjbjnYMwr}j(xf!TKL05nKRp@nCxPaG$2^08+o`WLrZJ;e6 zEvq~S#?^gwclYjRLr-i99p3<21kJ(V1JheLzpUrLZm?Fv{JRGIU{L5tyI273JOW`k z7^aA*w;cgn*4%&?Fug&$I)+473X3r8F|iiBZ~^eq(P}j5YYzYd&7G}>K?L;HJty{p znS+1X8CQKm1Y>?n0O&Q>H09?MEN!k9M!7W5(!2uwD2)5?{+(jFK76ca{o`Od-N&|v zuIz(>3$?`XJAIrc=rb3)cD@J>4W0|n@$wVk{Q()4x#2w*Lwh#}&24-I0+jI4%^-bu z+j~K^-6uDQhF)CXvuFLR^6~{`hDckw_JDsYdl}YtZRdV*X{%I1yF>+FFZz0quw!Tu zj0gN0VCm0|585;cT?^U?@B^}dUU5m}nA<|Tw*a?5P%@x>1*lKe@aT{5fi`FXoxLuF zfdc~dtiRgX{+{mjd!Um-ZO6h#o&`ODeL!i~p>0qXw1|@ija>}TVX=*#D71aA=-z*h zL+Eh8=)mBSAs9+9@S#33FDGDd+3+B8Qbr-5S=%dNFUinjSBdj6EP;BCUDS^!O{9?Q z(%$YfkD>N}0Svuh=K#Vm+(qba-5t962(Bn|;Llv?hL0Wto4`7Dc-XV~QHU)ker4!K>%3uYH6nQ#pt;}!!QoIk2fPASF)gXX|hEKPNm>`+&kWWE;WQSTBF zx|k(?8dt4o=b?86>>9Y(#{GW@I~MNV_N*feLd)&EdKh}Vr(=J2+i~b^*8t1PFuO@y zMA26##S9g4T4ljtRj!Z=x2aTV`2rlU8V8GUvEyE8bUksP>%9=e9q2l-9%^NYX!Ly# zxf&*cpF zj@@H?8}B;xG8kXD^(3&b$609oL5zvviKxAA7ZKZfF?40U8F0#(?P|}yHsmVOA>$Cm zDGbpeFoJfn%vdr@uZt90@8!>Mh#kPOSz?OHEwIqQ#I(`|kgm%z> zhAp7(tqi^YkZC(6kY6tJVV%`=`UsxqrME*rfm`4$=!3P_r(x6vHUVv8D>zJDJjs9QPfWZ*7ij63_E+6K6%We~ zoCk3ck0TA9o0}f+6ShmRbFzT4pGO6xNS|F>4Q|B24^+bj^`glV_n2A4-F6SU-6uEo zJpGthx}7=(tw^ZP~Ud$~|mz3xAk&AP|~V9I&y1gvyS3i7ZV)?K(!h}Ia|+}^Y2 zfQ8FeXi;qbY}|tL04!c`8_jzk1slT#BFlcxyPX1?{K?S!1vs1Tm%tz`OjWQjNAdcU z9Cm;DIy?62;0e~0P~A!Ttq?+4Dby+pgP1>UfVH|UGdod?)K+9J3yq}u-OUC;0~L?*fXu+bK9_y z?lWiLxTp6mvXR5I)-YJbZ380(!I57;ABlg;G&c2c-Jc=8beU=7I$*}j?CBXTE!9=B zfR@%hPah5)-#dG{el&MBZX@Iu<7!^S4#&Xp?C5@FBkZac7l~c9)=N;RnZ?sA&=!XI zPzlhXlFgO57i%zU281QH7ASmwUq|SvZ5g=TX|p`^4lqctG`-L<=ut|JxT`YLpyz+J zlc9@mdo9Wf8{hQ?XYJd&I?lpoRxVt~s2)GX_j6DOtTC`-P&>Hzfz?EK>+|7VyFehw zk zcrv{8G_ZinF2&kaG3}s07==Hi2D(jh#^K#_YUM{FYa2#>L#6X3)WVqd!$=%V(KOk^8z zF%CgsyD$@}aBn6dQ3MH&3Zyy?rd;)z}W?6dQo%u$q6$R5yF{N&W;!3SF1l zJ1_2n!3wp&6tGHH#|9Y0Fsw=f4bAJ;Rn;w9w{C4q?Yeajt!-!sHm+M&wl>%ttgV7J z$VMft$h5(OrNO%9`DNDl+zDCJgB8_*I%`7i#N7P6ti=^Ab$JC1*Kzw&Yvq75JHGFClmR#agboXH@0+#;nLcrm>ubRJFw56Qd~;jM9^ z$9NHZ3#4B_pTU-2`0y1h68U#m+vM}p$}ZF*0Sm--CA=75vS=<=%u4bj_vVrkoRoX< z2{Q#OeQ^1J$uSud^SVyHN9+io0|KF}bTa`xJ9{$L#g>25Et3N{_y;3XhpB3)&@$`F zBY=mBcA7n604ol=Gc^8&3Fz!d?{d?XeAdZl!cPJ3FXG^V0|YR?*$coDR5MChhzWEc zPzNm<)Zh39qzJNtOMVdFS%U>bz;0o{?XjOp2T+RNL@2@yA*A%!@!>0G4R?p+s718N1T zu&ROsq@G7k!48<-wT3l4dCT>O!l$3c=Vo<~9GBu#6#0x)EHTNL>P2RpQ=U6v#c5Jz z8DblwM-g*7am|K-H~o#K3&A>y*mk#1&w@1{Y=M8`TO5&Wr6oZbxQd?rFLkYdKJ@ef z4As0OxZ@U-G;&rMGa9phz(r&^GkwfIg+Dsk)MZxp2Cet3hR`kA5uiOl~6Y0qV+DL7rTJ9lXAV-99#&crEES1lFI(OnY_4-`9{E!hWhH(nS zXhl}FR*8>U=K(L^=3q)Uswc&x0ZKf7D@=b&av@+nJAJ7hZrJmGBFYW_eh??YGsaQjp^!n4v3V0wM;hu4rz`>y3Io7P8)9 ztY916XP$=VF3%&W7$)o#UKRMrofwOB9Fiiot(<-fSyFs$@(sBik{QvioUQ;F)){|~ z&SH2(>k+_^Gpr=5h9u4sI>gjuVA6v`T`)g&l6~ zY35+d>U#EY=jEeaJKrlB->?;u$}zb0UK1ieN%kfys1DkM`2iNF`f*AkE_3lQ1OR#k z>_A*zslys`GXWxWoar!b)A0?)E|`BBtXJ-u0zRQCGSeCZYkPf-FAzE(hFUSn%UKugU(Yt+ zjm-$&wc^an(rXerB-wWoF>u<4hGhPjvK!S`(bZCG>Kzy0d=qeRl?CU4SPOra*k&!C zMYnPZ4l2%Z<|xL6fOFvv^u21w#o%c&=*;x|5qUB&i1B0!gf`y-mq^OiO$StoDEL5pEP?HFGb`bO(4MV`l9}cuK$nMXs4pytKGT`Qy`S zoTy$29S4)RjC=Zi@q_HW^-n{lLSJ}Q_b0peqf}&+1(}T?3Z4w1HQ)ijGWrB?gLq39 z1ngzY$~YOowH!q6I7DO<;G&=cpu)-$MK&~&mSl$FomUQbpW7=o>Mnnuamf)g)C}|G z`Z&TAOhU3@$4W!TboSfFWU(r3&uB>&U`uj%du(f(FI`}NJC_h{3>nlJr#BICTAB-}wdObMoMy{F3~<33*U1 zGhd~D_r}S$hqXMHBffuB(zHzcgzFktuU?%a%jGqV_C~dQX3BzjC)k!ze|dHDik1pl zSysV+XIIuY26G$nlR{03Y6m~ZkqoU$mGfPKrxv&yiUjB&BfGdL=b`EboMg(`LXY=+7pd{C= zcBRk`a06$cs(nIbb~m1aMx5Qj594gq_l$*3d*m?-o|oFIQml_^g5L7gc0pB3Q*$n2 zyEHvQyJtD2=pR2bT@2N%a8d;A&#bRsUK6wyz7Qfrpy@Ku!+c*9zDYBXy(VYP8sUnB56W_QAl*uTJ&#$@?R|FhM;)E&Od0S^Fo@0x zK^1+k3fP1rgTPD!1(J4VfCnE@_>1xt!6k4G9c-+wTV7fptTEh>t8*4F^b)G?Hk3Y> ztLw`Y{~?>>}e0*8NDCr+ldU!gLt}+z}v2)ExMh@|NTLq{-B}eI`%-H-e3R& z{N3-+44SK~f6to64j1f(`;He@);uJ>7nEBk>d1ekt{pCDI{jS8xM{k~WG~+x#W1%C z^g7ffT7O5ntmGc(Qh{bKI+FbQVK|Eys=ECc#&@l$tQH@ts;>$*<*NExeFLz``|mTQ zG4l^CX98lMW5(ZWEvqmo_s4G;d3BAA5x=r4;a6jWOZbYn3ugQ2x_W7bvibh4uB?9L z_3M9?s133oRx`fPhd;$$Z^kfVTA!7p=6T+mOj<_2^{Ezr{wkLmJPpuRO;~NI7#5^P zg@HA2gEis*h_$}$-hp;P)cxEK+Z;X^Z(pGoKhKiwQ8mY@Rsdpp;wN=GM*{fixhku#_jXBF7$|@{~vU1^s;>drh zR>m68n0VFX^gi6arxUSV=k*(KU*w&gJjptRkK{C018aO^BDGkokazK7r#v=po3$cwsF z6oj5j>EU%ryk`-+XDO*v9G4zHI}j#m2qHP+l7>gGT&fF!9PRiuv%LO6Niu(;9cjMT zvz1Cg&}hR>A2N>-?UQ2l!pqjsj>q)`gwqmMh@8qwr}RFRA)zQ{GO;f^z`0CCL%q*w z*>%;+S2WkGr6C(=SQ*8TeGlJ0@X61`7hS4op3r5t)WPbmu_;i~FTQs2Ed!dedS?l7 z2Fg=W9t=iE-Rr*kB2++Yg*1OYuu!xqoiU7SZ9Gc8aZu9kqm13c7@Nz=*fcg3{(CoL z?0)@!&i(;^EN&WOlPRvtvgkw9lSKAmVNPC_RoYV1+|n4FR2OV%ZVc39SqoY!YN{*Y z%kAa$D}!~D>RM`QVqYJ{2l9q`J!C9yK4){(SMluji^SebH0@W6A0K}hS2?aYe_~+~ ze2{ZuY<`qq;JXc3n#eu5A;-X;TxVZanVE34G zXEXv+;v>)3gZQEw**uD8rv;j>3%`qQV)IZbIrju=YX(5l*%?+MW3lDIHOsQxVX@gjj*H`{Up|mCWsrHN;SZc3WWi6GJP;SNC$c9d9 zX>P8sqmOu#Jz67fVngNzs_XvA-jM)SRUGF*IKz=ZfRO9I+zGi)5JlyXL*|zxF$aRRZBP-ATLc6_4i&`{K?FgtcWZ5}z3qMRbM#WNhuVMQ@9dlT`}V&h{|B)5 zZzJ>H&d$!v&d$#4+rP`&4BP{uC-sK7IhFILp+2U15x)^rx=G%K+WO^7ut)WzK9*v< zFulH|5f9g>udi*=hxLVMDcRKersf&g`TEFyFibo}R{5D=121;hhxNDM&#G+1r;(PY zbDL0WBL^@QiHm>MjfPdN4;yH~pXfy@34%6skTmlTI2egttr9RM>J|Yo@1{WFp>#<1?qf!o(>aiX!kQF9Y)>UC6DLN!cB}{B- zY(%@n8}om03aY|YPTaXrr>7-@-X#k5ke-|ZiBlTuTN=hoP48S@me3BQoeYwojOBo1RP?y&!W> z%7QpmGZPo#;PslLA)EV(i%HMJN5K%gp7r55{Fr}{S;wPtAw#lYuGu?DpOhEi#>69z zj8Pkt4^e^Qr8Qn+W>^8S$aT2U)I#vcMsbDb1EIQCg-FwdIttkfgM1B8Xp9;Jal+$-ER&B?TLT$w%sC;Bh6@M6`0oL8b#O zJmkX&4}<6>U2d5e3@;)D^IW0WwBbF1CDX5j1ce>>o*dgEUed=yvOB`$#(IN{XF^aj zv#rexn+VYg6>&=eK8>3M!(}b;%oNLW6~uoBcUSWwbQF~G2~(R4iLxrEb(TJxqPQ!H zvaL3eIu$%tB37K_X-Y#zUT4M7uQpAO3&l)pBBWfyoJa(m{BS@hG}5ny6# zXG4s&Y(iz#Vtqt~;&M$p)l=tyC)np(C#ojhGgq;pKrx!x?cVvue*=uL5#xDd!0i=B#bl1{=CQ@#KBzGyqkv({8 zKEyiD<}N)XN)e~|##yQP~@{%hd(Ox>IN<=)(^;Pw? zdggpcwPQ#TBwlJ2c%aCyiQ4Xg1YTYrx}HInb+#pJc<3IO1^WKxy1!#m`Ch1%{qjt5lT22PzI< z0z-mJ4Fid-gP7pQY`O9EFv3EuvT1Qejp+7-1{szIm&~bLsAt`#jIH4QoKvezIC@&6 zV&i6q1|uajS=BwqlqtSBXci9?3o^QY-lDitr9@WtEQNR*0yZw$yB%~3amK(PbU_7f zDDhV7*~=hZ5^+QckSkaYIl-7Fj{1HqfS-8>qz2;~hdvQ`ML{W_f+QDp2T;=Qgk%>K zMcz@Lh73hsE1oKK!Dm!i+z|t$lRgV^4m~YBdTUS|V==41Fae*fCm6gw%V%V@H_hMIX>Cn_1=5j5z%VtX26@izLVEoG^kEvmO%c7^-46fX9wtQOriC zW`Y#62~zABHpRqkhT&?2?`;-;3s^>s6MMhn^MVSt1g#BRD^`h(g5eJ+&eMFHv=!nA zpR=+_I4hdP3ELFkWi1@C9R``P6t(go46(#yVo@M@hc(HaXe{2#iAj&!sZ0tqql~9> z4D}HYDN&R%Qw`gtthb0P&zM3+?uKE(x*cDO4NR-n^@kzBsYL2~#2%%8p{weu8kZY! zsh+r3nU#zc)CI^wV7iUpr_3@FE0@%_EU3kZanAAvTyEH}P@L8@6B9fUn&~4RQJx#B zpjapAQHZlV7efZEL#*@ZiH{*8b_S<4jc;kjrHTU(Ba|$4Jh!oSX5)3U^|;4bx2&jY zQ|(DlC=FiMh-Zv>Nf{J>DWn{PB*$X&;uFu45Z?ugp86DcoXV9vT~Bx#VjXcXyVi4` zfh?y*Mq@Do?LhQ=U|CJiebya05PM4G%;zB04H?xf@d^(?t`nZYJX@*YL{=zz9`al( z2!3s>WE_SRH&$@fpw3%mSYq-KNVK3$TvT7*v2U;AO~hXop~WLqaKpn3rps^~_U{YR9+J z%{c8S=8Ss&#w_N4zv850>`iagVtNlS+l#MK8@*z^yGhUdoXu2eK@knL5!XCevfhJiWfUX2EiQq?P$K$4*t}E}8~kg;6n!!pi z!Srw0U-HacccGBsfu$2wC585;7Rcc%_u`T}X03oK3HGjd?%qd!ToX zf?7!Vz9Sufa?`|9#t)orq#0lS@BygohK%RjG?UTpE!24C=a0W3%JamIx;sG->6j@4vChg_3WQ9MRy^_vU0?s3qY})8|J1)bnkyF7G!YigaOa4Bh#iL*(X&2;G-m`R5pYO3en-zR#ariX z#0Z|UKDPZ#&|Kn^W&8jMi`h=olH3A&<}ba6<~Z3KIN}{iVI}_hCRW;T$m`;<@;!*uIOCaouS{kVpItD9C>X&-mDrFDQ(z~j}fw}N_ z1GO}Fk8E!0(X$6RlAJCGHrAj5D{BKGz+gvAR$R40Gd)Ukny5K331B5hYl#k63Z48R zj@qa75^h&P&l{>`yLkpX_NW-m$&c875QVEBre%eLYWSy|;aa9UGGhj|6pYY3jshxt zX2ohQGd7cy`W&fQ*8nJBmx~G6aay_sW0nycEAiv_<{QdO^~`uj|1zO6@G>qi2PbG5 zjs|HQyAgz%n&>Dir{^4WBxzZ$_Dw+q?&zA|VmPi0kCx(Y;u!TWr@UKtL=$Cys;5j& z))L)}hXa!oEzP}Sl~t=zsai%jh}ddInj>@Kz4wxuJG{Jrt7oNaX`#`Oo+m?#7y0QD z@0?}LhR@)H9@ATIVG-`#>8iX~_hfZdUZQ)lyDBf$J)^oRFVj6aU6q&Xp4_g=N9&%v zuFA*gp8T%LaqDA27v)8Tx~H&zt8&y|QCH=~dTO!ek>zqNG`J5^OG4owozhS^C3KIoX**B?|xZ=qENgeBoBl{@zQdb<=Px@tAf(0j7$@(}q z1lF*Axf=qjSHGf5gi_oSr4T)5ur%elqRH~<49TKTbPrD{0Qn{XXZAhfidg63#q(s6u z3&HIq&TuT{1`=mFmonv9?xkb&#OvHkFVPccJC<^{B~)m!vQ#OmsKD+@nB!VltS8KM zD@0)vu6HX$Srg{D6{4tr2{*VEqNE8ox)q|J2_JJS6movtEVOMpOS(ymb1OtOB;D*@ zjEYG5gnKbsYSJz4#b~2Rx4IXjB9kiJi&2$H^WBS4nMqad#i-7tYWHGPXp+~x7*(3S zKudNj=3mU9cG4Gy#wyX%7lp;uJL z2{lzM@-C@t%3o4b)mYzzfuHe%A^hpwf@KB8g@xq>%kY;K1r5rtLV7|E=n44agt6MP z-0o0`z>2-7YHly%r&wY93I`x2zh~3(rZ9gb1CTzY79gV^&<7z6#xc|bmNC>5o@OWl zK47R9L}>)|hBStM`oLI*`ob)R`avZ_{ox*lB4H~-1K+C zRxp$U+ZoD*#~I3l*BQ!(pEFbdA2L)3gL)BE1o;dV!xV-};8uo8VJSmpu#TZ}c%Pxs zFrYUXd2uxn4qg+T@*prz#|M@3nv(w4(Aw} z0Yjq+nh6CA&4LLGT?exnnho zVhCCYX$&obD;cVR>lykaY+`6Je1V}__$5P2VC*o0>R>uU^>8ag4X~V{+u$%mjWBIE zK~3-;L(MQ|1VJq@i=m}(ilN(KOe{gmU>-xu;rk5T0ZAhX`V_p&(4Fv!ID$S6KVj%I z0PzHWeHLzGs1?4;&7B3L(q$G1w+T6j-li53_~w} z!D|eifOi=>2}5!TdKtzrbPDD%bQ+d2^a?!4(C6SA41FHnVdx8RMIJ$4gjR;W1S$Ch zeHm_M=qs?Cp|3(aLtg_ZAm~*{VCd`cC_}HoR~Y&R{Ene-LS7+3ufx?0eG4`*^ahM8 zBIw)TW#~KbC5FBWXBqk)#1#|teYk>up&!6PhJFaoGxR3>l%XHNS%!WLDJ2B`1ZFVw zQ&`B*&)`9Zehw!Y`UU)ipasz)*y?gP~qp@392+)-GkJkM>!H`f5LCsGm0YQiA$xS1}Z+ z9cE~N_CtmSYJXv9kT&cxf(C1UqZx|QZel1}TglK6Z68BJwO1L6(f-KLFfC;qLBqBA z42{t4VklNS!q71|V5mcmYWT;p>!BB}d{>0EE zZPv8}U8Q}6p~>1i3{BC0mQE*Vs&<;8X1bwuB~KfhW0y# zW@__h5j0DCg`w-T`0EIot!-kcLOaRO9PK@Z=4z8>6Lh`yAVc#st%9H%v?UDPsJ+V2 z$F$rz1btka$Iwk$6GJy^9SnU!8#freLzUW|>j|2FuiZY6pepUM8wje_ z&N1ZG)_}7ICW30T=NS5=HtA-97Hi)(AU^F*y$wU$AhhFUydBQC zK4=}@%;Vc|lCC4cBQx-H5#OfAmD>=?iURj4tnGMtjU zJ~+b`=fB8fFgw@XW1a;=)JQz@UiZKe15IO1%(hi)#Em(pR^zRC=F^TNtJ+R%qN^tZ zPb2$?n>G&ak(CoiPMd{y5YWXTS$K@Hxa0dSadSwvS%)rv*%@m-Fz)qvQF$P4H`@QQ zd@!IdKIq(hXsmoPDubSoD(EJ7<6`^G_D1=7<<^ZI2TlcD>qo8Nl|w;#BEs}kseaEs zx@?}%bvUA6%PJ}}m0{tEZ7pzKF1MV6za_{q z-dZY`+~8q@Yj@ybgQWW`vdnD7+Q}M`2wqZY_6*^FskUUdPAMf1Dp{G>v8alhQ&r`r zr{qK_nYnteNGGdx?tB7ApLq?7iLEwnYewSBW^kolp)dObAKM6Vf$l6G7SO3sY@Mv* z7q|FU9;epK>#oR8V(Xo)JKCRkR-S&`x%F7vj=MUyZ7~k?dc5uEiq2IV=@3Zq5gm`p(U+pTDlJ3F6x(D(8&--!dh`}U#*$mhsO2m0aFkD-~+bx!mgPx?X^jMh&4 z6WbD5RDbL!J@LJC82Rs5y^16fMJqSpd?2NNpwo>}OC68w^WD8t{D0$5%5huVFXjQ7s``;wMMc~8gKfL^$V01%@3v#d+K$~D7^~}$ z2+cjHIN48PnB2RbMnRX|5EE5Vkt3MN5v$8N_#4AO$pLMz7OvVAzEJ0a5<2|@ox2}@ zZr`;Br)XqdJj+H@VgQ?IfAKJ$jO|--3XPSn<}@bqR=f(zIPCfW9%|*=|1h@HcHj0u z53P{b0O0k#*q!FMVJXCr$udq|$W~=}Rr{hw(*VgL8KJMfL#uqJSEFHD8tk6PO-?d5 z388=8x)%TMCVFSwhgve5AiMp4JxA9$Yc#l;J0F^a=7DljgM+k@4A@QKbS zZM*Kqb9a4fx3-^HhlNJF;vz+|5z=LmVuW5KJZ|8~)MxW==t0q#C!1JwtpyQcC zzPpZeynGyK3o~8K=kuaw$X=0uKG`vSmB^~2Y^iP_n-<26V}A8+6oU>W_N_UJcQy;+ z_dMBo^5L;<#~<PA7t1$-wTYkTg2If!}m$&SM(iwe{8iVM@lvBk$<^gZ`90vKfa?taN| z(huQG?|bQpZ}%!vT;~p)O*WKZozlW|x)dMPjy^~&K68AHuXQ~VqAsIBfud6X&Yd*N z()(`SiV!dhX?x-kL2V^}UN0xu!am@$2uTnfW08*5?Kp2>r^*Q@*YM1HeCt-WZ&-!I zv7r5!=yOb9&~@UhiELxPVG+7ER27}~EHt+o4PkBjsy)7~_jc^qN_TwX&_lz!Ze|7D zs;?M-dyilB@a;Jv62T37Fgi!G6oK`Yr_qunHz)uwZ*Tz2PyZD{0Zbjksj7{;iF!y~=s+NPrX;#-<)gh}2~+0wj-+^87! z4{i{1_Ws?SE4HBBh)W1hZ^vPawNO4h!kcI5L+jf&o<@I$&*`XdbpD8p>2BKtFZs6J zBQ&@2MT}C~p4fqZ(sw+&1y$Q|V54a0(2C9t+osN$Gpj-oX?6PpJ3Ce#!5r^dQjSlUd7{ZZ+qaN!M^TsTU4jUf?&&(tQHf#DM>Lt2tW32Tt z=0Tl%SIWoZF5$TB*b^PkJV)9?1}Of*6$FgMXf?rp5xtVw@7;$sL3PX+v2)d0%MJc! z)Ql4b-JEQH<`9_ickW$be#dzU%}V)xTHH+<_0UT)uYTAX>j`3a1VQ6+Ty zDUIB=J)6#)cu0)0)*bkSCa(5l2isQew~IszGv?jN<}a^pN%5>}h2jf}rN1(!$zrk> z8m;&+DE!*_l=R@}uv@Ap*H$)qkzEXk0#qwzQb)*tsH7X@-3i;1TscG2WH#2!=Xv== z$L?~?N%Kb$ml&wyXrw}Utgtwx|M1HqPT6-aMiORlE@h&n6eYuL-+ux_Wm_UC^FfXf zWfw@9C=sBj#Y9KvPimtX#athd99W9kRHsshs%4V-B{+#Xmx#bcEpgR2w<4W~TpBQI zP{vJvixg%k+_CmCOAthsd*+qh*yG}gf+xkiY8zm=S!y?l0~CP*3l zh)gqR1xGc1rJ$sMl#Fu|dNpDO6(#T8?%er*e8&T)vg`|Yo3*uC`@w@~d~L0dBm2rY z+er~IJ`uIIZ)9R?UhV?2u`Q(iBGM7#CqXxoRYtE7PI?TL-mA zG>je4vFT!pDk#>;z{IrjECxm|w5?kcD8b3K?Zh_Ua|duT4xjz0#T;yRoLbYqLl}a8 zF~%%0ZkSGMY`J4Zjy9{LbHwPQ{x#Qd>~v{bMEMp;bbC`+#!XNz zgf&nI>!eBD7HF*HHpj-)ku3+Iy+wQ|8^oq?Ho?#i`%ke2(!HJ~7a_7u$At15**<1j z?T1cL<|T`lHUE=1Q&&i`&GXsS6K=NP187DlW6^d>+i0LZ^ZaKtAo$JxF8 zxmL{LFt|dCP@Mygl+G0gG0@{X&`xc@PRDz*bMf^7rUPeA;GJmCBO$7fM9C|EqyIEc zntu@ia#ZBB&{vJlaq2p6Wte>fJEgkhHoq+pq{+46_|R1e?OQ z4z!FyOAu<@fm2K8ioLjh7D6EgA>eui(nW2mwS=yZJkfTKcx{Q(zsSZOI@z)E05(qu zzE@Uu?p=N6r9H?QuDq&si3h|quCO_PnU6}rc!!R87%d!{DUHPz(US2t z9GVF*nW1Gh$8{AJm>LK!`=i$3EHG6;fw308u5rmG|vI zzL5t~hgjNscAwaEv1MP!iKot-JcVn+xcG_9(2ASF*pvI)jz7(9KKUrV{c&9~<7_}` zje=KNMlkm!ST`MiRMMe%*~%gxtpj8=;NcAPn4B{0gqb!etEHu;nhGe@?%cN??{l0s zNj{oBjg}RP$|<`S(ZfFB{X1S)j_3_IZ9GCcwAl(BKGMONu5HVGIxU&$7*V#Zc?MaaG%Ud5 z541Nl$vo13M)o^5uErsUn8b)~+#WSUULU8M_h6gPt}~F#@3z-iOl69EMWy==Z9s;N z$CO*~a2jizMogWorjMj3)zDE!3+uuiY?bSKd$pZfij;%j4lBv2`{mtESAFZ)U(^tB z-qKi$K0vwvdc7h0i@cW%f@B^e1E7@uEH3l1i9g$a4bw;t6;F+k03`$5M8mP1quk5@@ zNutfG#F5$xza*0BG(9Ce+Hxve%1)=Lk~}-jr%1CAk1B0@`aXQYiVjerbx9dAM*bi7 zFrow|qS(D~NgR<=<}GP*T2X~X zjNoEDA(!gXRtDT7fiViA7+LimlL$Sc*B-{J-Byf^%wnWV>L)UUZSF#}2!hK?j3Hmw z*oA3-`T(wu5gx5^aZkx^r_Gd92Vb(c?LAH_VrW$62t{U%xRyu|8X^?um**Fk_%_~u zM-wHw9PBH4>q$7cp(~(<6=uR=Zw&32IHd-#IjTlGoGo3tOWURqiT0OIoOx*@4p*#( z#z1x2kKTjB7zfta%7*4U@2sv{aOa)NTbA5;=N-!%8oZ5n-dVBSi@y!7#zv?+iB|At zvz-(1=gc!J^w9-lawmD`*HqT&V+t;RDZrnA=gytqQrFy~7nSE1mP*k{40Dq=^LPIt z-~PLWhd%jA$BRe85sm{%)n4VuSyWABxQtKqX;F<2V5JQizGL_jX_wf_u=9nsy)V;T zKp_SC7kp!n-G=KzoloCOMPkR+E6?I{4Bgo@WE@EazGv|j&;B45)p$0z(p}nrr#b83 z;M*ZT!3YSWV~Q|oKSkChh3${uFS15*LMW7;scv1)%e$QFQp=gT$^pJBMmyv8Z*sIS z125l=c%*5oPR{Xdey*N%is8l>9l?-AM`*n@Ey zX_DWsbr+6y3FlZc?6vT&GfVwKw`3+AzX?Q zl!Ba0Dv&ax>0%B^p$Wx*YTT+!nN{9-(AbOX<0Pt#dh&B>TV_(6}T9 z6DFDiDPl3I>Py8%!G*{Rx;dQGmFmffWPk>qyA`G<+YqQ8@sq2#|M(Ha5DraDk!^aB z@=&>y$FbC=i@a8CO4ZhLy4@4@ZHFU3^fT%2zsm?bM@BO(Q?wutVEOO<*q z7P7)(tY{k@2iYxuvgc9xHBHejJQvvIW*3?nEz6Y5 zotzoe!Is$B?WpyRcL!Ih1O=4O+P?W*A66yXaE>| z8Vj6WrZmye|=i7LrdU!@UJ${XjZ!cn1=Mh0P0Abf>E3q>djtp&*aQlu3oZ%(^3 z0OWLo?pTd~;caPWVXn+d_}%vE`v`;PeQe0sbi{@u`zpLzfy8?KaeNDgIDveTGd0Sy zWi98-TlxeG73)B=6jLf-&EAo|Q|*LUdgq8bQ(b@1-U=MW^!fsYR)0cFNNnq>t|@ev z`8f8(QZor73TmMlVUp5lUc)jK)j=(UXJN`*RiI*j=^uzGlm#16D+KvUsv~`6Hv^Zr z;Z)zUQli+XswH=ZcAC9I8%v0+bn-!dl!7&NMNM@Fv}~_#^$c>Ah=+=oZ#JMaw>E&MtM5Zrq!_T&5PPJ=#r ze&30I0(P-(r7Ry)GKb+i4H2UWbWvCVQ8Be7kx3&Q1*x(4nbW&Fj=Uh2>rU>m$-x7Q z<9y1HgKU8)DZ*KD4H?y$KU}4LmYcoIh=~fQDPw#)tZu4X^{K8|g8`BwR>Qe!2)jC?;Dcv11_{6hR+(b%HG zF@;zz_WO~8cg86)$2Gpa3GgMi+8Wyh@xZ>@Z@)d?C^ru3GuNxBjv@sPz#lZ&nK7u4e7(Fj8QB@hIZ0CQnslJYWB&(i% zfRre6m6d$!kKl}oRn7frYIoDSvY~^8w zfJONW4K$+>#j%5qM^|+`a*FoutJZ+bEM0gQ_Z*W0O`C!4*0zV?n*h-e;3` zpQTf+FP2?jLx<;tu!=mC18u^8@}61UEvRgO`^3i__z1&a%vt1}hp&~rjd*L<#CmV7 z;)ZOUGxs_tp+dJ2(C32N3z&c;{m*a{d$b)Fv%|XZ7Nmsp>c4JymAkdi*v0u*c$9IM zP}|P#MCtZ?HinvdekdcH*)xbl_dJP7nL(R9J)ms}-;acLBIoBp9NkBM<;@q-7VXaC z|NbDPKWM1Eh&>R}8=S`g|LmtEgKC!b&&g@baKUUibiA;*_6~7lOhKKfW8}JKxFG3t zGm){=w3*2^ZBrP-+$7NDP&d%JJJPw5I?$y8)n2r01?z_4%)Ks9w;RLws%2F*;;N$h zYHw3PpuSY!dD!HwH>uKpsJqm3>o&EJW5(TUEts!T?vCGTGV3)q27Sw`!f%ZYHsR-g zLNMD+*VRQcygBcm>dNXDU%Xxk+aSAPHKR*h_%qpaH-^a*LRJo&=NVV4w3L1esTOzs zs%}wuI!{|w;lPrLYC$|I6s+?%SQY-4SnJINNnq~gvUKLy(rhYNG+H?;dTti=Z`jdfyI@$8O3)v^iX>()sP!=R{O)J&$SUaMx zi|2X9O(J4`4K(q8BkjAIv73=kQVQA1QU%#;ro8mbDc(0p(>h9_V#*cC$|cq1rFl!m zRF5~}{12lhA-DE+Dn=|5zAe$s`=i3mfH&$v1^$Y-j-Ko+ze|M z3j-)ed30Gv6^3hsA%s}#Hcs&hErNm8wE$I%yDvc1;tLYszFznAIuC!tKMcdSOD9iQ zy$c{)1fwuVWhKq+0UHbj#vt%bx!2h zIn%>e&Em{|yUnNQ7YLSt%Hg?A11{`lNfLTa;^PnL=sZ5^oLg9@_>Q!5?=$DaC67EJ z7hqG4A9pt8*)f)e+}c@Kf14m_X~;0%i`h(-AgDBAZW~hH9-1$RamK=zqFClzzeP?v zG#OEa;0bKv6_%

H?p7`uN^_^T^OC9EOjZKxc;WM>XTX|lSRM-3v&UrCZT8M)XH|lk~atJGsjpC*~ zv`exixj&flYImD*rU_;|CHZ09?*7T&~X74v!Oi z4NLNW3v=~}Ew#-pjoxu}-j?RZ%Gz9gR?Ga_nku}fdrtjgZ{4`MmfG6*UkF?&L<~R@|?9F^JE9?g=wEkepE2bTRn7zRqrw(g-LfUMxOrqrWix(lTv)KAvT<=sLmpCWKy}QosjX>VZZM>O zkjkWM{G9F9#Pi?)N<0U>=F~LTdeagBhC7??j&o`KzU}W>T2}bzhiU!3>hC$G5Ft;L z21$PChZkqpw=`CHn+9s&8Po$FI0t=%om9`P^F;R)U;EFgY+UGVp0m8ctK+ckXS6rR zyR6wWI6{>7orAZwFT~FCME8Q5KZO2&c>Q*Djd9JOXK-(L*bjY?cl-@e^K#FCKH__? z>nm$pyq>{*;d|%Q!hZNYP#D=C?mE{qVg}0Z=^rUr?K!7%p=Zbd0Y;9mYHq2lomW%c zya;bz?2+yR0P}Xj(b|f0J&`lx-oKQdu;N@~1oTAKBJrX`Y`=G(-mnHX_|tlS_W?kM zWIT(;XIEZ*uHUq#$@Nt&sDR#Bnhy{$Aiu!h^Lyv8R$r|36Mvt6(DMO5l~yF?GFQ|<8_fjXA^4CE$=v& zdcXgU9+8mxRs3fF^zOe!)*bMFHGgmMD=Kf}IDcCIH~bOTdKWa0^G8HP^o@uZ5D_sb z|E#}f4{Sci_{S4F5b&SqiS@NDOX?LUk2&jWts-ZN~Fz!)^U{&ux^5cK>F z^45R9KcX;y^eFI0;CDn9bl>|B^i(v5DUJ0l4R~++RBt7|O0Zg2Q|c*y|0&Q=1D{86 zzx*LHMhzq7cLn8gLD^tLc~~YM4qz4{?Ehgl@CKqh4FEimgQ4GtWD9BfV2GPtSzS{< zp{2RGzD_cAZH3sGjA<4sm2 zf(z5d0j9HhLYidSM&81G&yd{Xzi3_5=@HgWpH(U5qGq%AjZTjMlG~-zOKhFa54&ds z(h`K!c|C=0hxLcSQuImnOK?=}IH$+=f)O@_7^S3xUZ5zF|HUDHT6WvHw8%I7y=IHp za9q&PLrzy>l+#c14T=ypFr!WulhfZ{jQJb4MT&9(623NXiklUQ_veo z^L7TPM@RO7VKxC~;rSE>`+cZ(u><=9-UzU4<=@a*FQK#H{UJ&cpW(e-9Ce9GOY93H z?QP=KuNZh#8}0Ug1?!**p|0MdxtJ&z#Cnj81xa6|O8=@K^7kB}RT@n;0 zY9OB}I9It3PJv`J5edO#JEU&=i3X#iAd+=U%_)jy!N1^tpy2+ZZd5e%Cj~O6Ndp2J zHDB$KR_8W(8x4&P2-avZ6E0?r=0ys^vHf9)lz4h&)8dL6oE*fk9H_oTHFPjA zSO+DFUmCF7-+O9Jb+xxHApZcvl%pVu<(H()5tuLtV!1T9H4Ge#VK^vw7?zlNvNVVu zEr_);X07yp%O3{jRr`O)R~ZV&FbNbZuAbzrs;Ty(N)iS`EIqT%rZcZGG(I?(#d5`l z4a$QolqXi!Re5WXvK|Eq&XftopdJNm&35Ya>5)7&=iewZGj8Qf4P<5%&PuV27rQNu zMpp6v^z8rX*}qwO#-S@(aUghz2N>pLy%`p!>hIvYa z$me=dKG&P`xjvlF^;Pn@KDKAUeYwTd0*DL2^@8eFdTBe4RSpJp%o|`b7 zO6&n6v3wf32&L7j_02}^af&i0VV^}s!czNw+ux%Efq=ZRQ7(yVl$uJ62}&iLlM0zc z$cz?GT*LyW@9vpqPmV%mrkNHENlG4P&EHUeP|h|T5;srO5I~~+jBcTrb_fg%=+Jm- zPe}vjVG985S)ZY5lcU-uggJt>XMOhQ`wNBvxY{P_gL0p=glHJ9=)gGcSIR#0tbd^K z#FRUvn8l&QOp5?LSWM$r=XMbzTtzGnLqtq?g$*b7f<(IwuaC)QkFRbOk^aj!0a z>=@0}Jsxx&zS1sBEOtsOF^XYw5*HHh29LX5`+V$UWzTvC%Ljn0ql5ixi;`j8F;!4T~-}0@gkdQncbwqUn7hL5ilfpo-V` zf~?7qw2!l-#W*;S<$-7YefS{zF#4;1B$QB|eh_aH3I~ZQQ$JUkO2U=NNOM!7AwiW1 z8$uUY;jLXzf%|K{)!2_BwN_9RhDS||-i3!=e- z0gw~ipxKnV$w_T?fUVimK(k#B8BX;*(J)fcsBu6fiD@o#8kYp*pjCCl0hfh;5;k)n zqy`Hc+_oy@Kv&(Cg`r#a!I^^~)$W7kEx(}E$8IL- z&eiUVxo{6OSco$+8iqQg9v@NO(T$X%OV*v}ZASy>MniK)ZDqac`yv<$&vp@(3o zv7l!Shct&Sa~^xcFU%!{9(!0lFve0wK$3loOVIjv@@<>QDJ4|gt?WvI$KFo#)VdJA=m?BcKI0(L2-08tV zjQE~|-^0l=i$jVQ=Omh-u8J0S;lpsKtshym7DJFhXZ?K*!CJzSt0a_MdORf9&jAJPb(#j^5+s=*8vqL5|+@&vNv}8iKB@AxM7Q zl6gI_q!0M^)3TR;gw#+Ls>4S(cqGweU}j0S&n#5TGfVQtm|0R(>sFgkg-yBenI+am zSY=)j*Nj}ec_r0JFzdXMdg1fRNEgA1&3Q!#cG2dQG)S<^WtmsfE__~zvw9;I%RZ|J z=`Q-Lk`5lbl=fLA{laIJc$fZD<`f~}#hp_!oQ%^tr(|4z_?(g;giDHsSc`Dh8AV8V zk!O@lNU@9PIHP1<;EWR3s;Fl{g3DG#g8^eo$pUj6d`=8==e0sJJHOCLM($QjG}dq< zl`VD^-bVa&#kDoKrJ_!3?GsKv+xpUlkmSz4Y;c%t!r6(JWW3BAYHnOi910_NZ${b|#jDmP7v!cdC&XbMzbVI}0{ph6L6k}&sjKj{y z+>kpTbAuIGWL0Eh9vh-mq@b;;FwZtD%Pb5BHvbiW2DF(f7#K-Ibx(oM_hMkmFw4Eryt29VnZ~Z<%%|j#J~VjPN0dj0cZWa+a76cJGxec$IJcwa9d1mWdrV7vaVfQ)s$zv zb&hn~f?L}47Ti+jeXd20TX6FY_c^r7Ex2WW?ptsTMU{bTY{QBQYM8WEz^>80owhv0 zcG`01?X-n~{wQS1_U*Kz!`Mzcnzz&1sncd!cmc`3{`I#`YxwVG{Hx_1m2#7wgk~Ed zOs>A92@iX%t(kuj_FJaf8^bG@@WS1|g9>kR4=_Ko#!nLee}TV7Hhkt6;$MMMi+@*t z7WIKEhxP&W69vJa*%gy2B5uhpJ$~b=D_{K6o~!$(y|YWme#6+CjDwqQ;$4zAiQTit zzDWZ@`)HO$yct%0ub=;8S_litj{wQD_96!G-QhB}wHw9m{%qzC< zfuU=!H@~{J)+qC*gMKCa|MUM3eIh`A>zqbl|--Q2)^^MQrzrpw#2wR`( z@LYV}4t!Oge->bw3x3u_04MrSxZq#wg8!xq{^us+f5!KLtO;gGmKf(i6|}&By1*fU zzZOWszfa)bX8d~z|9*&nf55-@{r~*W``q>qnU~GXTM}Hv57HZie+~HeE&qRi&gWaq z^B_3S57zCCe@pT2E&qS+=Pj0@H+18J_$m1JP5*z-N63-_VSEs;82^6f|L^+eZk|K0!PFMrw4 z$0LtC;y-lgkpJx2vr?W1AAHdNo8SD#ec-`4uN&Y0_P4+J zAA9UE|5v{96&szm-+tS_e*Jp?U;p}7dcgQdU(hvdY4`5k{$0Cv`L}G@;(znaH$!m7 zdE7_*5qy2{!3X|Ln>LAm@!;qmuun-R^xd$J_V#ug&R_oW7n^PQe7>M(zy9^F{X2H- zFm&>ZU;M(AFPX!B#GfyH=}Sf*z5e>^OA%$dg13V zCx)Gi!Jq5buS2fk*P{AR1@LXq>$tjg^5jX~wyprWy>H)tK8yV_`*7k5Vjsi^W?G}q zzq0R$BWeQTGvo~M1l!oUg8lpVN9~{dJLVetz?uD-!;o;hG4kp}z^o>oniyc#dQJ*RNm4tZ&wvd-v|iM~@!Kx&Vr6Eqy~K zU%h%&)4WB0wTTxl{0LR=-n}cIK7DGc5qs_N{{4H7o$3Oh`zKDEi1f=beIn6|n9afi z(jV|mpTBtVLf*W2vqs%Na^#47`0yd)I(+yra6{&5-4-IYGyC`h2M$>L5op@7Wea$K zH6iBPQVtua0D6NlMU@@0cknev>>p7^c7**xZ35PR^}BcP*7k~IpKao$OP65xur9#8 zeFr$z@B2SlCuHxvh3pl|ip-422-#)tRpf*SWtBQbh-8;NvLYfPqex{%C_BnX@qeH5 z?r=^=e16yUz5ZR-`8?jdpXYVI?)!e${oK#_433${#kgeHZ(56Y*vbSfJ_uU+9K|if zVHqZ$!E=^U1nSKAvNheZ`E${=yO!NyYq(<3KS*pOzep?#P!U?ET*p0Uef(NLi&&Z+ zL8IB?r`DF&zc;#L?tYzk1uGHyG*sii^lN=N{z4t}M6f1wD#5(8ljBN|qNUZAZ5E@n zn~3F>DqC9IMKzoEcNL)WE5QS_ZUaS1I!O{yZ&Kv^KW|}84$#kBa~rB|>wj#f1$%X7 z#&4*W6np3~QBFa@=WmtnBdI_5>8~6Qdj%8bZPsmOx2X0>5CEbJ&xoSFQxd(rVD(FV zcKIf@y}fKt?N*P7@1d}HB(hLJIxvFO(+a^iBP_V_4UDe=XXyuOsDkkcdpI))ttT78gV=jy5g|@a71*b@x1@^TMfU3 zVGG$59p+>{)@wndia~knDkXUJ%B=};zQh4nj~yR=ldbz|?qlVQjN*}R*@}L+Rq+9= z?NLGiU=Gx%cIr zDJd$_t8jj&V+1ue1{(Xdn0;kaOiYY!1Q;X6`nef=x9mtC_S4G;Rk^$`;qLzx>1tJY zapaA8>(nwf!Seapf#UdsD}sbY!+qY*&UZ4DeHth_ag9V_f)@v{N$XlkY3cX}s_2j3 z*Tlue)8E|r)|DhlB*78e^XsmxZ=Stw*C!7L^BTW7v4_x**Iztu4)s*=k@UI}5)zK} zCPTXA@3+XD@1WBdNoZs_^Y%Akbk8Ro-`{)&S&G@^kDD$zFHd$J4y&80)qi-B{ZpmA z>y1mAEoYwAuVlBTB_}&4@-coWy`cM=Rl-5J^{TWx@uBbnsQglm0?zDs?hS;aBtzr!c>Kfj7-om|M~kDN7P>g_Ip0D zsF7kK;C?|s=C-CVdi9*s`e2#kEkF;PtCYm}#Su-z4E@ek^)YLSwiK6a`P+-n_r3e& zKpJszpu*K`@j&pa+G|7~JJ(M{5L?Uj)cCud@`dRCW@-GL*)vpxtD@7C7Qdwxu%JYJEaz!jUG!LGUbDn$vEg;BfkuY3QD}JVZ1^+{9nB}N54ivjS zXW&3}XN40m@^srb-<7Rs-n@QbS)QnUt@_1Cgx$b*hI#gPqILx;B_zoaPp{l)l=8Td z2!p}mhu;}MMijba0bQC`bhShK?&@V{W`2gvo9116kjf107HgSFX^mqotqnZJA``gc zvc@!E#6<3Wg2d|K)*bDB9&`22o4gZ+o8jM1J|F&2we^^#>E^S`Teioqxs`ivIUf(- z$lXXYSbdhA3ROS8b@S3D-;ZBr)9bBomkV>J(#Ds@(gHUvf@yGv9Gh5MPoB=3Eo>1@ zj(!??X-espaSOCqV@(a<6K5yu5Byp8U>yeVik2+$mF_dm&vpl0%>EPVd%18>!#zl{K>TT;?eU~u?kz7I!+EMR zhJ`m@6CdpZzI*u16^FcxvlEGyG|rzQ{q$B$jh`NAM|P*zt<282H45xsZyPOE%uxzRLRYI+a2y18pS${#elV=sJP z+|w#zh$hGDl7$Xw9pvb%b8{pErLAQS{TZe_bvE4=`m?ze{QuUNhZs^!LAAbFcM z(%dShCWAxmn6Bh!77l%5c23jXn_p~I?WK!U%#kitcZ-KzPMa!}zsW7WOP=Dey5#$$ zOHH_9EY2cJ=CXWXbx3+UE3x6kMJ)l!%nL<5;^o9uTA{(y1}O%yBXwfxKGhcDzbDeY z;%YjW)yZbaaGbeP59a5R>K*H3_6l@i`PEe-hjVe5tS;r1dnMj032&`0+~#kUa^FyT zFouc6XR4(~XvT<%&-vutQ=Gc@)jBJdoKGG9Xj0_lQJ%6fjmBsABiPqi>TrP%9`M1h zWT_)KXozEwDF@>xhX_+*VF5qtW1;+Gf>~2T=-J(@9sTTu^|Wws2@!uZRqEBtJwib! z4?Mv?5{TD`z}FD}h3Tt9C}EP!5EE?7KUNkqL#|`*0!I%M<%BRYA&{sLNPi2&fOzA8 zmoV%VJA?ry!Us~^$!QbG(7KUMqLu3yLUT_!o@p5;vb_0Hbsf$Cr$hAYs^oOs>_Xh)_5M$te1o^9@s^(f9&Wd=4E|x zTe}df$s}2Qk%~i|W&myl@Zm<-5emL$W9@A(8k@CqB*$<-8PbN|pM6oN;% zaqp2|AXcsoTq&jd`mv56u8=tI6v5z+OigA>i5{&oMGDIEE8TeHVIw+@#|rK?4u7f* zdg2RhYr|62KH_ZC^gCP5oMSa7{T$q-Fbs{4usjDs7G6*mTWdQzRKX1okm#Gg`5-e7 zycz^34D>N7)R)zLd_2V9c8jNm9KePVi35h0MYPF)`kJ4My|=fat%sqDH}EpT957iK z;9WVyyNsys{#TFSL{vTer>cviy_?Ur(lPrOKjLj+w6{e>EM43$Y*&I{X+D(I_f^%Y z6$J=O03S(2CFk8LfprmkDT|+V)2p4Im-0L?6a8E_ zSmd6KY4P;pWOQKI7}l=#K$v4!DMc-8NCE#GM^rTaS4ENS zHc%z{)9k)d2_hO7LvLKd(!<@w(H87IpipLjP!82^@!>rW{sCRx@E`R=kS(B!1h%=a zM8XJ(B+y%yv~+Z{arbqz15E~(0D?tcDyv^jxWaxPcq#{av;v~$pP|SW>_Z|bHBo*> z$mJU+N)jeQtm>~5A|~Eo^n>EKVjp%SpT7PLn>To#t4Sxx5*pHuJQLp7l6j@tK7h}g zuQ9Zo?NVz5d@b#@8-gTb`p1`Zq9Y<A#U??^lG|6*M7qea2eh>fE(4HM>*q=r?GZ zf+h5de8sQOymSlYkaS=R4r-Kn*tmMCT=Lk3WAU0VXNpY6IvS27d_CrU-1Av~`C3{m ztVCp8;T7q>-B|=dQxaW4QkH-pp=b!S+DE`@jZSjHw19@-A0O3Qz;aa~oY33)r$|FZi0hUGI$oQ9A8mv- zynpyfB%OTBMB`mZ%i;*Ly1B=vrqqg+x_9qZsOQWfWkIU>-kdr$*R?KZ2>&FLWVelI zw^lI-5#>ldKr90LIjM52&zSKLDa((h#j95iFW)zpR_im$4PY_h{3hGZ@ZjtHt@U-n z+v`r^3Sl-6pqae0ag3w*Vp`k^8)vj$9j4(Ma*>Rw_>^5WzxqU*Eq{5;SJLCU&%z;E z0`ePQN;-Vm$W!&aMBVyuY9GH)Ef%vLXRjMJ<_~wxAdvA8;UP*7Is9wgn8DW_X*LMf z2S72lFL7>n0g6!s6r%-{r|n(rfhkfL=0Xi2*+WNlCm~GG+c)b-p0km)`ln`C&u4^% zxsT2|Fcpz~RDX&en1M+Zk4 zuUEXxJzTU*8=I4i(f5Z^hQy^nZkDyEG&3qY<(8)_?`sWB`Cd5|;l#X3lvK|4-CRv` ze-I(eb6rxM>ZdaqZt@V}U}XC=ep-582S>MQRPy)KHd*l4$11*^(pciS+#%Q4|@|dzho5==ZNSvDdUI{Xys#j3+2@p$RPVU zn#EOLdfD&X`xd1K6GUePV+P!H<{ht);z!8ZR-EukugsnkcW z$IOl%655d7QNk#o1cpiKi%WnKasmHPLnwjipB+co)fpDg1EGfAPAK+jVk3_5S5S?8 zf1N7-*qUJ70v9S_T(uV)w}(wU@ed zr|52S8(L9_eHMR65*VppZon2A*<>MfI+Ht4aqXtoZ`tSv6i&`ETX!Dat#zMjR6G)w zOBIssy;+!69A8SRAOIB)zz$}{P0q#(z`Zrl=4eu`qdfg2Gp*At+5T7JOyOl}{5ojO zj8G_3R89J)*SKdo*EY;==X4$%wqDH$lbZS_J>wh5SnkvOqKJJ^iAwFR=qFt9L0$)< zV=Ml*5)7_fU*_~FuctR?-2CdKHEky2n!HJ{qqT`rQdxb!i?3rp0%{Z3RvXK|)#mBz zXp7idpgNGa`Y~J_XhTONou;jlY7$i|pJC3HPM%S@=GQQTh~|2^R?p$ajuUihwBu!E zHVSg zHcs&^rmqiFZ2Ve~kI_G(cHNUS8j3~w$f}&tj<)W-w@A#$B=v|m$5jy-5*3Zj5dxb#t3Hh}rWBBQ~E_s`u^-`7R z#J;^h`kZ$-C2S05M?;ilvijD<-wIy=3R(v`mjO^B#vPa=HH3VRL1*X`gbNsSp1}v5 zmR0$1>-n*36gSiZO)0LaR+JIBTdvh zKIbboXDQz~!?3 zW~frD-XQYst4=Ha5_MZ6;oH$U;A@bd*LT~>c+lMnKT=M&@Z70Ht`=p$nF0D*Tg+xz z380GrKqn{n8*pNIAhbY7I}RUk!dFu>+6TkKLm0skC+E+IQ*$c^B4GGC(0~fs)fF{j z%97c=OkLNf!@T5O#XxnPqmM$&$l<`lYW({Ks)R?ap3DhKkmno95$SHOuxb%=+U81z zmsyn$-?d?INeH;NL~{7@RK>;M7^gZq9(NI9pBp+6L&13S50(s<1%iFQ()SfSN-H>5 z;v3ZdV=K@;v_z)U?cD)|_<2vOCm*cOwcUCX-w)khj6<-N0m@?3u1t&oT_FfC{p?4% zhZmT09-rxP`yfJfdBND^q7yeHGrpmp_iCQsG@ZJhsH5_2Pod`L-#VEHqL z(#ugr%&DUK&Y~9UkL#SARFQ92Z%3Wa5hKs=W1xek_fF(+;ot6B7E@SI9uz)wXM#;4 zN0_hi+v^N}UgHbWeTx?d=SLVE@g$hi9w*|~DV1x^6qwpk_kPr+u!wLs_kA=c-lhqbcnr(!Oh@|NFRF!=Uqz(mv4ulmWHghB%L z>!(*D-prRXNzo>Fu#iSc7Ezs4Zh%cs5?upO>zAwlm6L0iz5yn@@5T z(4&$87t=(z7yG}5VINx$OCTzOJ`%4-^Lx|M;BQ{JM=qM!qD<{*E~A5;z9|nd|FJl# zyCrHULP67iQ=2k3?)Ai*X8b6asVLSV@6D;Hk2xjRn(VU2c~mIUs1+?c~@T?CqtC6C|Q2arFi_e=E7`p_a&FJakr1zV~q->?L!RJQmQA z#sQ(QX6JtDq?7mf^twc`(wO}nNyXx>t)J^$K$=SNsFG-Rqa{&A4Yd!>qeszc!EeLu zsY-7Ki(Pu%|IPN?R-G}=;py>NKS_^kKC6fPH*Gu4+WZI`3)hJ8X~i39DZY?fxJIKB z*1CCUrx%C-I#8PINbU!8pbacW&hF;~4Mq?FR2_&D5rNB)1LY4mns1Mn!56Y2c}52> zdl=Y^q%g~MxsX5TUM8>WO!;tRh5fsdHld-$%K&A{qj}XK-cIj%k6H=M%G`}KEV&&n zSGmcj5)biBHOQgK>}M=x;<=-KtaFJZXY2LW&#yP4gG%n!Hi~phK?#j!=zR!yb@3F& za>_3lKD>EeB=F_rw~gA#z(VZ@?lnDgXGa;nGB7@=iDQrKX=bx{FsUVHz^-oa(AH-8 zp$lAV=XXP=U4j@TX<^Wm&bn7@o7zcIVM!Oz-nKa zlCDp3^gjRT25fIv_w*=}M;}aqWyqGH&0RXJ$9$Q1`9E5ymaVQg&m{UQewEuw28M|K zeCs9rCdJlM4g+)2qa^&gk_zL-uvC4)vk~v7xj(jK4=&aKevEG|0yASdjszodi!}roFasMd%L$Pui7;D;zgsh2e9%oiIh71L?+hA z_UF9vhsem^i#(&jTN|J6O}wTvkqzs6UStvMqZ@Ydf=E9bS>gkxrVnQsnxg4MZszpT z(sHSXRrW3E*#3GO%0}+R-fa(GckyR6;>X|NbLMKfylLDer^iimE1ZQ&V=&OF@qEnz z>5?*&o~F1Yvjb8BUwP}YU6@(Df3Kc9$X!U9_A%x0-NX$Bz6@^PE7H0?3Rqi7pVj?4 zzRJcP*V>47|0MB!;MukhV1_Jrjao=s`gmEpd3(5ffzeJdYVj0^S}5>F=j|D_K&>i* z@_-t(*lv8^pwkhAiA2$-ucMaUKGr^{LBb|LvW;daIWkx&gQ%vzdo__i^-(24G`O!c zyM_v7EWPag?7e{K0et)cHPr#gLlFALY|l{PPDPRJA5mrc)9k)dp@pcu?Y#hD5Td|? zahUc-3;zCj`~McAMz8e$Aw-P?{5wRQzE_AEz0&_AM2&3n{}iG|uk=3%Q6n4N4li#T z8-lg*NLK&HmfBhvV0dC6@(PBi|3qFfEB+Otc8%NKS1olMtQHk(0ur#BRcP2_m%WO2WBV(gbie%oJNi)RGLzT~cAiUZ>_x9`Ks}aTH%ks&_ni6AwmkPu?rE9ZY(?<; z9s?CxL>$Ql8P7)PdwWL2G3x!#BI3xFQR3P=>k;EhS$!K5)g}0zAAT^XiWr~%vI|O0 zpi_BR+gbZryCKdY?7a};cC9!T^l^W9Vt?j1Tr&R_p# ze8YXpw?Q&HaRxsO`hsevgyu%HGH-;iiXFW$S37yRj?twdRT2pF*7I)rigzsLfe3wr zW0os0X0@)DLE546HiB^+mxDV>G`wr84m^_`c-o+wMq-TngH&dRscmW~MPjgNbWG z6$?xJ?U3}j_r4W`HpVQr_KIVW3||&bcR5=l`f+C232nO?V`})L;1d7&pn3e`FDDnx-rT|qIttZ_dOIT;dxWCz zVoX=2B4yQQgYzc>0!H;M%WgsvM{T0*Zkct?mheg1Y(QZ~Hpe#!7S49K`!G~|8QD=n z4WI-D!D-D_KnXs862Sc#-M_R9Q&fY{!5Ww$z&B*aE5WxYs;l=yeNGXRJ&cm}nCq=l zbjU33i1+KJYZ^+ye-sk>EV*Lql-%-&eg_5NlL00B7wq!OoorJVqi7Blr#&jLb8@uT zIFQWoYBf30nCGTxxzclr@-UW|GCvX%jm*&&!L_(LGbiql;NRg(+)BB5RfMvSZ~10* zb9LJGgw)J&^bu6T9LBn`**ULIe)s2z|E}WgAN6)!I@XlS{sL7U6E?&vDmUswpL@_x zyuMph&;7f5@6L0upA@*kexp6@m)qzD>5eY$63OZJq$d5E1$3eHcgS!Thj4%&1H*uX z14>}2-ue0fJ8|uT0p07#@#|`=4b7!$w!}8RQPfh8^54^qSa?XPELLXs(r4L!$z`}o z*7C&M`Q5o21j~9~Ic@k<#v^gu%$ltu;%&2;@eP?)M(bWeSnkFQ;jeQg>BZn583}|X zJfSk~{3+k#9IK3 z_W=WD%>Qy9AU1950ctGf=5bOWfEcm5N!T=~L^(b>{TVp6AQRHmT!5HMwtRo4^-!?5 ztR;DLcq(>d)bvQk!LSQXdIZH5Ob@4AQ|@RVU1IWeDG*eP=H*e9${RB}0kOfwwUP>m z`fAXd$?uHy6e?Fqbu*k{$XKFF{nh9ybCs#?Y1hf))RsT17+2WbW}3QE$<}o0r+H2r zw?~PoWyrlsP>LzV&rk6=O&_e{R&IXhO-`2F<{^RSM7UB{$!$j(i2d<$8%ckh68q(` zXxfC;+2Q_OKylS`U1!NmHYIumZ^x4s0lhr&6G?@y?A^B2^6y^N!v>*)#^}9*hg54< z1&A-4nqD4d4Onrwl;dNo!Dnb9(foZR{H^8@*YOCPjt-KVWlfqV5K3c5mGm}GPfvB@ zR3cS|-0pABJ?fc6G&3@9%H28U)SX0(%RqLoN@l}~!K9rYGP@NkP^R*@;0te3|7Rwp zl-k82#xv#QN!$v*JQxk*t=>(&Pr)5E$ZO~IlD=`%p`Ij7>R^xlL%OpIDz64pPE|W` zRnE9pFSv|n5ze{@WnQht`tjS>FsvdZ?p0bb9#`#iL9Guc=N1&@vicIo9q$$aI*_Q?qX%vK5*D9pPgSw}-8uiJ!s#{0Fny>^tV+RLb9_rf`itZ{Q(XCD(=6f7k}@j_J2syNY%Z^uY+(beb4u{`A4%Q$;c-;M z9LIu}PiUHd6TaQLXE87Ca6I2H6_Ya@{O${} zTpXwI#qhjCTa_)T*N)MbYQ60gw-Qh$QY+UvkJB=F^_-8N+)OX=c)YopZhf-O#!EM^ ziZj81bVB&?s|>1i zN{pGIt7t-_mM^g9s%;*>wHd9AO@t*wRSzXS_lNlBv8mapF(<|OvD1IAt|_`$~;DcwGmG0g>UFX4ck zB)~+QUX_!6fJ;gPW&)Qze~!|28Q_6fBsf_4#vUiUsz@9jsLP&PXfip;6VG{%ER2F3WpFM5bR z?<7l!%sw~s_^reB;e`8@2But5Kj(ja88UcSr8nC$vf5M5^O3*CE19I)ZQHjfunq#9 zsYH);X#|jb73fSFh_%YUJCnQ+uu4%PJRnM3yFvKX^hjjDB6jG7IF8fKi8e0Wo&49= z{Aep@q^pi!NLKQBR1b@ zK?<0(8<@Ax07?SFNU#gk5Xyh6=z|F4F!Z#RTN4}E&=eK9vjCSXjXr5Nk&o#a>c(3% z7YQLPxdr_G!gr+(TdC@tm+S~!4(#Z%p})abCtc@uJn(FNgnCJ&y>0(d!Zp8*0jewF zcA1S>C7hwF1#AIqr+;!9c1eo!>xX1*^#lJ8N&YkC>{_dlw-ODgFFQ}K2&zk)oIcqK zT`%ux;4vWxsiG~ZaqgfAGIXmnE1V*!u4>Ra-WIZU>1kdb{!ghV*X0t*paRs-I0CaB z==i=kx6?hTHslI1N;`AUE{MXk-qdwK{oXgeuR;w8vWNK~CDWCBmi-rvAf6V(fvr92 zAx!E^<6)FIt1P!xS!!<+w+@>N4>o$7XcTDB+32dd5`-ry{Hz4FmTkGCR1rX_>JgK9 zg@7_Q0mXu=_)`UR12DRM?2-z z$U%45f0&g64N#*`H0=)8k^Rj+h*R+oJ%?< ze@PsYIh;Ih!-G3rP;)KD=b0}=*>?r!y|YH8Zao*vrC&Ecl0AT;M5*}zy0@;1lhgrp zBY_TPx=#lK0<`onXJZHjG)7+uoVKYCU5IN5Q&^ns2~e!&Pf*4&W3>J0-*{HqUer^k zsC4!?56DR$h?g4-$&u0*pZ5Y2OWH&vK4G_IRb$WfJ(K-K5C&M7==gc-eJOyNlwC)zPM z1E7Jsn}po4fCeG}gM$Zw|2BAz0x-l}jz`Sbz$PGL2{yQ(bjZQ{&b&fz|$BNmut%-DG+}9v9*`9 z_b94d@7LWaT1T-bC&0!>01F46#iENCE@n(!&un@ zRt|HNpA>8{>b=p#wpsJ|AdedVy>Yi=Yb80?R1 zB4%&Zkt5DII^P(WKz>YwvF6~ChD18UA(Q%N7ALDun@i>gsuju*(mPN@Z9(e_y!BIz zbpzxNK`C>7OQi87o4m8Din${qPpsi7NXzg@TG6Hdq(FpSw?EH>tSxXS?PfV|l#W1R z!&w%nMtN`GY>Dd2V4s1t#kxh355l-OX68TSKc1+(9{SEU3(t*d&W7<+;m1yb^Q=_v z?pwJ*WtZe16*w;iZ6AAY$K=3$H=r;qv>+^UVnj*#LfHa*075+TN+%9l0oCBkT`+a* zuTTPNRgBcJm>V)AKn}2KppH`3B<{HvCPhzieTYeJf0_^F5{e2hOzPOUC^t^upiVe$ zBjpf~YIm{bun6Ea+(z85m zBD=i+*d_{y3I5xaCrXeQC5*FYuo-{5Iz!QTVM&h z3IE$xIIKYhBE0fxDpodg}r1>mXSTPVb(IdoSL%1C_79Ccj^-}~evP6>E5g5~3 znXtH!ehZWzz*ddGn-QpO)ACm#+9uNn%haJt#5347*vm1lS!}lrmywDMA@Se0E?8+s z-Wbl{s`g_eA;1zAr3qmnlR#@CbC)K1)F7-X9m=<=HGTTAkLne#XPB15e;sI}O_+=9gn1?omn8sMK$&Tat zj^;puFve4W7(!^(8MwBq1NT$-Nw5Pz0$>RWE`?TO8mw^;(CN3ZFBJMw9Ny*T7&9sow8u_$P$Es z=^Fr}gB41}zwYE9oT0%00wF>szp;UGF3zIu^`T4e&6qfqv{i4Iw-QeVCyVL5Q^1t)*?hIfj%AS?(~0 zVEsJ|$Za!+J90Y+v)6?u^zi@*fh>2RFqO=?4Fy*+6A+LG=34Zt3#eMwzYRJIvMlQd zwZ0bwKN^Gu2x0ffj(_ftfVZkpk&rDX{RR<`&pSxF+`ZaHg6r)Oh~&N-63RI@D(Fvb ziep&7qUhhCm>NW<$0v@^;9vB>vu;!*B*Go8YDDitK7;hYRR+eTEi`(bAkts-Fz#@n zf|@;Lo)!e??GC#8ppH)O-LCY&BXm?GBtnc9NDujpN)O{M7#clR34|j5qK9!c3>EYy zgI6353O#ht-RbSj{BZvd13?|oU1sNO9u*BqEyxR`hL*P}6xmP8o!FUH$o=*Rb{(DZq|d2qhFL+@@{;caL*-_>otz{Q{%H3*3#I%Aac zdQ@N}plt)l8Tq`U=v{8eZ3D9bz$#L^aYljr`{*4Np6c6?MluxMnDCf(7TJb}^FA&O z+8I`<2BC05=ZqRyKt=Ur14sD_YG8>Zk7{U)OK;n#aMIVMcO#98hY`p?6+qrARTdYZ zeT}pRF*;_=gW5;cI>wbaGy$-W!fC_G)gV-RBtZhVjb}t0|l=C8wewz9u3Gvbw3~=zg}47@+v(c1qu)n5S0-| z);bzc+R6QZfHM+l74zmM?EQc+^T1JEeNJsZAb2J?=z&Et-)G_aLyrH*5|tK4+BF(2 zh{k?s@GNW)ttG-}1&)TCWiZk9o7-eH5omwSYN%mk)Jf&68#tRGOC&DH4qS3$#HrEP zMS^&LEniUaFv8ZT0{F~{P{C(4qyWfrN4=PYk8BG7pUgKkw`aBU=uJR3FWTt)Z#Qiu zZN#Gd&p!N5)E^Zp>GU&j+xVwM25Fh=ib03aGU^79diArzpeYhux^cTJVv=84Mba#5_-MUM(qkn6iO&a5&4Yjpct9-XclDGMIGfZ(e~JfR|!Zf!1ty92FG+%^nLi2 zE?SrWvkylKvAs1$WsC&F&jJ}EpHYpv_dZ-xZ#Tx6aV$K!)hJ$@p0-5awhLPQi26onTA24{b zF9`OG^I8uo7!nkf8AhHe8W@)u0&MTJRnTM;d>#8?VPuw~Vf_ZN{_XleqA4RtjEI2c zI~;7>0n{S0L?woqsfoJLJ7KYp7J-yaUJ%Ubna}KgU>F&UXv|)m+XoDu&>N{B=jEgbA+9H>TQiK<47R6R5>TI+ql984g5D#N|q1aKVW zbhH}|MiLzw4vEb^I6zJvuu+De{-!31veMSvT_Ji<_;e4y<2}LuAz~u1o8gt8+XIoGyL1;6v6gDETkasCfS=I)D@aS?)y|Jvtz3zfJm2 zbO5P&8d?AK8# z-@FLg7+E4E0Fgn;dq)Rk&m$;XgTWU}wEqwtK!PJnJuN)M_o~`q*;D0Cky5V! delta 109201 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

G!+U~9jXRzgV_naXA;VT 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Νe4nHh66<&2H_8uh31!`%dx+SX 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 G>i+=f!Qfv2 diff --git a/TemplateConfg/Http2Web_client_config.json b/TemplateConfg/Http2Web_client_config.json deleted file mode 100644 index 69e2d6e..0000000 --- a/TemplateConfg/Http2Web_client_config.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "h2", - "security": "tls", - "httpSettings": { - "path": null, - "host": [ - "" - ] - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/Http2Web_server_config.json b/TemplateConfg/Http2Web_server_config.json deleted file mode 100644 index dc1fab1..0000000 --- a/TemplateConfg/Http2Web_server_config.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "inbounds": [ - { - "port": 10000, - "listen": "127.0.0.1", - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "h2", - "security": "none", - "httpSettings": { - "path": null, - "host": [ - "" - ] - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/Http2selfSigned_client_config.json b/TemplateConfg/Http2selfSigned_client_config.json deleted file mode 100644 index a56ac4f..0000000 --- a/TemplateConfg/Http2selfSigned_client_config.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "h2", - "httpSettings": { - "path": null - }, - "security": "tls", - "tlsSettings": { - "allowInsecure": true - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/Http2selfSigned_server_config.json b/TemplateConfg/Http2selfSigned_server_config.json deleted file mode 100644 index e570eb1..0000000 --- a/TemplateConfg/Http2selfSigned_server_config.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "h2", - "security": "tls", - "tlsSettings": { - "certificates": [ - {} - ] - }, - "httpSettings": { - "path": null - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/WebSocketTLSWeb_client_config.json b/TemplateConfg/WebSocketTLSWeb_client_config.json deleted file mode 100644 index bc33578..0000000 --- a/TemplateConfg/WebSocketTLSWeb_client_config.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "ws", - "security": "tls", - "wsSettings": { - "path": null - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/WebSocketTLSWeb_server_config.json b/TemplateConfg/WebSocketTLSWeb_server_config.json deleted file mode 100644 index 76f029b..0000000 --- a/TemplateConfg/WebSocketTLSWeb_server_config.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "inbounds": [ - { - "port": 10000, - "listen": "127.0.0.1", - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "ws", - "wsSettings": { - "path": null - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/WebSocketTLS_selfSigned_client_config.json b/TemplateConfg/WebSocketTLS_selfSigned_client_config.json deleted file mode 100644 index 28d0957..0000000 --- a/TemplateConfg/WebSocketTLS_selfSigned_client_config.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "ws", - "wsSettings": { - "path": null - }, - "security": "tls", - "tlsSettings": { - "allowInsecure": true - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/WebSocketTLS_selfSigned_server_config.json b/TemplateConfg/WebSocketTLS_selfSigned_server_config.json deleted file mode 100644 index e5dca55..0000000 --- a/TemplateConfg/WebSocketTLS_selfSigned_server_config.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "security": "tls", - "tlsSettings": { - "certificates": [ - {} - ] - }, - "network": "ws", - "wsSettings": { - "path": null - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/WebSocket_TLS_client_config.json b/TemplateConfg/WebSocket_TLS_client_config.json deleted file mode 100644 index e5f2c6f..0000000 --- a/TemplateConfg/WebSocket_TLS_client_config.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "security": "tls", - "network": "ws", - "wsSettings": { - "path": null - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/WebSocket_TLS_server_config.json b/TemplateConfg/WebSocket_TLS_server_config.json deleted file mode 100644 index 64641e4..0000000 --- a/TemplateConfg/WebSocket_TLS_server_config.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "security": "tls", - "tlsSettings": { - "certificates": [ - { - "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", - "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" - } - ] - }, - "network": "ws", - "wsSettings": { - "path": null - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/http2_client_config.json b/TemplateConfg/http2_client_config.json deleted file mode 100644 index ab763bb..0000000 --- a/TemplateConfg/http2_client_config.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "h2", - "security": "tls", - "httpSettings": { - "path": null - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/http2_server_config.json b/TemplateConfg/http2_server_config.json deleted file mode 100644 index 5334bf3..0000000 --- a/TemplateConfg/http2_server_config.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "h2", - "security": "tls", - "tlsSettings": { - "certificates": [ - { - "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", - "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" - } - ] - }, - "httpSettings": { - "path": null - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/mkcp_client_config.json b/TemplateConfg/mkcp_client_config.json deleted file mode 100644 index 28f650b..0000000 --- a/TemplateConfg/mkcp_client_config.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "kcp", - "kcpSettings": { - "uplinkCapacity": 100, - "downlinkCapacity": 100, - "congestion": true, - "header": { - "type": null - }, - "seed": null - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/mkcp_server_config.json b/TemplateConfg/mkcp_server_config.json deleted file mode 100644 index d34f632..0000000 --- a/TemplateConfg/mkcp_server_config.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "mkcp", - "kcpSettings": { - "uplinkCapacity": 100, - "downlinkCapacity": 100, - "congestion": true, - "header": { - "type": null - }, - "seed": null - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/Naiveproxy_client_config.json b/TemplateConfg/naive/naive_client_config.json similarity index 100% rename from TemplateConfg/Naiveproxy_client_config.json rename to TemplateConfg/naive/naive_client_config.json diff --git a/TemplateConfg/Naiveproxy_server_config.json b/TemplateConfg/naive/naive_server_config.json similarity index 100% rename from TemplateConfg/Naiveproxy_server_config.json rename to TemplateConfg/naive/naive_server_config.json diff --git a/TemplateConfg/quic_client_config.json b/TemplateConfg/quic_client_config.json deleted file mode 100644 index b532a1b..0000000 --- a/TemplateConfg/quic_client_config.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16 - } - ] - } - ] - }, - "streamSettings": { - "network": "quic", - "quicSettings": { - "security": "chacha20-poly1305", - "key": null, - "header": { - "type": null - } - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/quic_server_config.json b/TemplateConfg/quic_server_config.json deleted file mode 100644 index 2c6e66d..0000000 --- a/TemplateConfg/quic_server_config.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "quic", - "quicSettings": { - "security": "chacha20-poly1305", - "key": null, - "header": { - "type": null - } - } - } - } - - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} diff --git a/TemplateConfg/WebSocketTLSWeb_server_config.caddyfile b/TemplateConfg/ss/WebSocketTLSWeb.caddyfile similarity index 100% rename from TemplateConfg/WebSocketTLSWeb_server_config.caddyfile rename to TemplateConfg/ss/WebSocketTLSWeb.caddyfile diff --git a/TemplateConfg/ss_obfs_http_web_config.caddyfile b/TemplateConfg/ss/ss_obfs_http_web_config.caddyfile similarity index 100% rename from TemplateConfg/ss_obfs_http_web_config.caddyfile rename to TemplateConfg/ss/ss_obfs_http_web_config.caddyfile diff --git a/TemplateConfg/ss_server_config.json b/TemplateConfg/ss/ss_server_config.json similarity index 100% rename from TemplateConfg/ss_server_config.json rename to TemplateConfg/ss/ss_server_config.json diff --git a/TemplateConfg/ssr_tls_caddy_config.caddyfile b/TemplateConfg/ss/ss_tls_caddy_config.caddyfile similarity index 100% rename from TemplateConfg/ssr_tls_caddy_config.caddyfile rename to TemplateConfg/ss/ss_tls_caddy_config.caddyfile diff --git a/TemplateConfg/ssr/ssr_tls.caddyfile b/TemplateConfg/ssr/ssr_tls.caddyfile new file mode 100644 index 0000000..d27ff82 --- /dev/null +++ b/TemplateConfg/ssr/ssr_tls.caddyfile @@ -0,0 +1,8 @@ +https://##domain##:8800 { + root * /usr/share/caddy + file_server + ##sites## +} +##domain##:80 { + redir https://##domain##{uri} +} \ No newline at end of file diff --git a/TemplateConfg/tcpTLSselfSigned_client_config.json b/TemplateConfg/tcpTLSselfSigned_client_config.json deleted file mode 100644 index 737fa3b..0000000 --- a/TemplateConfg/tcpTLSselfSigned_client_config.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "tcp", - "security": "tls", - "tlsSettings": { - "allowInsecure": true - } - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/tcpTLSselfSigned_server_config.json b/TemplateConfg/tcpTLSselfSigned_server_config.json deleted file mode 100644 index 252692b..0000000 --- a/TemplateConfg/tcpTLSselfSigned_server_config.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "security": "tls", - "tlsSettings": { - "certificates": [ - {} - ] - }, - "network": "tcp" - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/tcp_TLS_server_config.json b/TemplateConfg/tcp_TLS_server_config.json deleted file mode 100644 index 209db44..0000000 --- a/TemplateConfg/tcp_TLS_server_config.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "security": "tls", - "tlsSettings": { - "certificates": [ - { - "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", - "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" - } - ] - }, - "network": "tcp" - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/tcp_client_config.json b/TemplateConfg/tcp_client_config.json deleted file mode 100644 index dc040e2..0000000 --- a/TemplateConfg/tcp_client_config.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "tcp" - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/tcp_http_client_config.json b/TemplateConfg/tcp_http_client_config.json deleted file mode 100644 index 6c75bf3..0000000 --- a/TemplateConfg/tcp_http_client_config.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16 - } - ] - } - ] - }, - "streamSettings": { - "network": "tcp", - "tcpSettings": { - "header": { - "type": "http", - "request": { - "version": "1.1", - "method": "GET", - "path": [ - "/" - ], - "headers": { - "Host": [ - "www.cloudflare.com", - "www.amazon.com", - "www.microsoft.com", - "www.intel.com" - ], - "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/TemplateConfg/tcp_http_server_config.json b/TemplateConfg/tcp_http_server_config.json deleted file mode 100644 index 678d423..0000000 --- a/TemplateConfg/tcp_http_server_config.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "tcp", - "tcpSettings": { - "header": { - "type": "http", - "response": { - "version": "1.1", - "status": "200", - "reason": "OK", - "headers": { - "Content-Type": [ - "application/octet-stream", - "application/x-msdownload", - "text/html", - "application/x-shockwave-flash" - ], - "Transfer-Encoding": [ - "chunked" - ], - "Connection": [ - "keep-alive" - ], - "Pragma": "no-cache" - } - } - } - } - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/tcp_server_config.json b/TemplateConfg/tcp_server_config.json deleted file mode 100644 index d37266d..0000000 --- a/TemplateConfg/tcp_server_config.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/trojan_caddy_config.caddyfile b/TemplateConfg/trojan-go/trojan-go.caddyfile similarity index 100% rename from TemplateConfg/trojan_caddy_config.caddyfile rename to TemplateConfg/trojan-go/trojan-go.caddyfile diff --git a/TemplateConfg/trojan-go_all_config.json b/TemplateConfg/trojan-go/trojan-go_all_config.json similarity index 100% rename from TemplateConfg/trojan-go_all_config.json rename to TemplateConfg/trojan-go/trojan-go_all_config.json diff --git a/TemplateConfg/trojan/trojan.caddyfile b/TemplateConfg/trojan/trojan.caddyfile new file mode 100644 index 0000000..6001c60 --- /dev/null +++ b/TemplateConfg/trojan/trojan.caddyfile @@ -0,0 +1,8 @@ +:8800 { + root * /usr/share/caddy + file_server + ##sites## +} +##domain##:80 { + redir https://##domain##{uri} +} \ No newline at end of file diff --git a/TemplateConfg/trojan_client_config.json b/TemplateConfg/trojan/trojan_client_config.json similarity index 100% rename from TemplateConfg/trojan_client_config.json rename to TemplateConfg/trojan/trojan_client_config.json diff --git a/TemplateConfg/trojan_server_config.json b/TemplateConfg/trojan/trojan_server_config.json similarity index 100% rename from TemplateConfg/trojan_server_config.json rename to TemplateConfg/trojan/trojan_server_config.json diff --git a/TemplateConfg/v2ray/base.json b/TemplateConfg/v2ray/base.json new file mode 100644 index 0000000..84a9d1f --- /dev/null +++ b/TemplateConfg/v2ray/base.json @@ -0,0 +1,12 @@ +{ + "log": {}, + "api": {}, + "dns": {}, + "routing": {}, + "policy": {}, + "inbounds": [], + "outbounds": [], + "transport": {}, + "stats": {}, + "reverse": {} +} \ No newline at end of file diff --git a/TemplateConfg/Http2Web_server_config.caddyfile b/TemplateConfg/v2ray/caddy/Http2Web.caddyfile similarity index 100% rename from TemplateConfg/Http2Web_server_config.caddyfile rename to TemplateConfg/v2ray/caddy/Http2Web.caddyfile diff --git a/TemplateConfg/v2ray/caddy/WebSocketTLSWeb.caddyfile b/TemplateConfg/v2ray/caddy/WebSocketTLSWeb.caddyfile new file mode 100644 index 0000000..4bbeb1f --- /dev/null +++ b/TemplateConfg/v2ray/caddy/WebSocketTLSWeb.caddyfile @@ -0,0 +1,16 @@ +##domain## { + root * /usr/share/caddy + file_server + tls { + protocols tls1.2 tls1.3 + ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 + curves x25519 + } + @v2ray_websocket { + path ##path## + header Connection *Upgrade* + header Upgrade websocket + } + reverse_proxy @v2ray_websocket localhost:10000 + ##sites## +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/caddy/vlessTcpTlsWeb.caddyfile b/TemplateConfg/v2ray/caddy/vlessTcpTlsWeb.caddyfile new file mode 100644 index 0000000..6001c60 --- /dev/null +++ b/TemplateConfg/v2ray/caddy/vlessTcpTlsWeb.caddyfile @@ -0,0 +1,8 @@ +:8800 { + root * /usr/share/caddy + file_server + ##sites## +} +##domain##:80 { + redir https://##domain##{uri} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/00_log/00_log.json b/TemplateConfg/v2ray/client/00_log/00_log.json new file mode 100644 index 0000000..6a4cf00 --- /dev/null +++ b/TemplateConfg/v2ray/client/00_log/00_log.json @@ -0,0 +1,5 @@ +{ + "log": { + "loglevel": "warning" + } +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/01_api/01_api.json b/TemplateConfg/v2ray/client/01_api/01_api.json new file mode 100644 index 0000000..aa1982b --- /dev/null +++ b/TemplateConfg/v2ray/client/01_api/01_api.json @@ -0,0 +1,3 @@ +{ + "api": null +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/02_dns/02_dns.json b/TemplateConfg/v2ray/client/02_dns/02_dns.json new file mode 100644 index 0000000..63472d2 --- /dev/null +++ b/TemplateConfg/v2ray/client/02_dns/02_dns.json @@ -0,0 +1,3 @@ +{ + "dns": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/03_routing/03_routing.json b/TemplateConfg/v2ray/client/03_routing/03_routing.json new file mode 100644 index 0000000..a187d31 --- /dev/null +++ b/TemplateConfg/v2ray/client/03_routing/03_routing.json @@ -0,0 +1,3 @@ +{ + "routing": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/04_policy/04_policy.json b/TemplateConfg/v2ray/client/04_policy/04_policy.json new file mode 100644 index 0000000..4beed61 --- /dev/null +++ b/TemplateConfg/v2ray/client/04_policy/04_policy.json @@ -0,0 +1,3 @@ +{ + "policy": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/05_inbounds/05_inbounds.json b/TemplateConfg/v2ray/client/05_inbounds/05_inbounds.json new file mode 100644 index 0000000..dbce3dd --- /dev/null +++ b/TemplateConfg/v2ray/client/05_inbounds/05_inbounds.json @@ -0,0 +1,22 @@ +{ + "inbounds": [ + { + "protocol": "http", + "port": 1081 + }, + { + "port": 1080, + "protocol": "socks", + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls" + ] + }, + "settings": { + "auth": "noauth" + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/06_outbounds.json b/TemplateConfg/v2ray/client/06_outbounds/06_outbounds.json new file mode 100644 index 0000000..20e2beb --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/06_outbounds.json @@ -0,0 +1,3 @@ +{ + "outbounds": [] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/Http2Web_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/Http2Web_client_config.json new file mode 100644 index 0000000..39eb244 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/Http2Web_client_config.json @@ -0,0 +1,32 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "h2", + "security": "tls", + "httpSettings": { + "path": null, + "host": [ + "" + ] + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/Http2selfSigned_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/Http2selfSigned_client_config.json new file mode 100644 index 0000000..533b3ab --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/Http2selfSigned_client_config.json @@ -0,0 +1,32 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "h2", + "httpSettings": { + "path": null + }, + "security": "tls", + "tlsSettings": { + "allowInsecure": true + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/WebSocketTLSWeb_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/WebSocketTLSWeb_client_config.json new file mode 100644 index 0000000..b74f898 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/WebSocketTLSWeb_client_config.json @@ -0,0 +1,29 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "ws", + "security": "tls", + "wsSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/WebSocketTLS_selfSigned_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/WebSocketTLS_selfSigned_client_config.json new file mode 100644 index 0000000..b4f6377 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/WebSocketTLS_selfSigned_client_config.json @@ -0,0 +1,32 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "ws", + "wsSettings": { + "path": null + }, + "security": "tls", + "tlsSettings": { + "allowInsecure": true + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/WebSocket_TLS_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/WebSocket_TLS_client_config.json new file mode 100644 index 0000000..7118c8d --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/WebSocket_TLS_client_config.json @@ -0,0 +1,29 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "security": "tls", + "network": "ws", + "wsSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/http2_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/http2_client_config.json new file mode 100644 index 0000000..7ca16e1 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/http2_client_config.json @@ -0,0 +1,29 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 0, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "h2", + "security": "tls", + "httpSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/mkcp_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/mkcp_client_config.json new file mode 100644 index 0000000..32fb699 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/mkcp_client_config.json @@ -0,0 +1,34 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "kcp", + "kcpSettings": { + "uplinkCapacity": 100, + "downlinkCapacity": 100, + "congestion": true, + "header": { + "type": null + }, + "seed": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/quic_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/quic_client_config.json new file mode 100644 index 0000000..4a26943 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/quic_client_config.json @@ -0,0 +1,31 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16 + } + ] + } + ] + }, + "streamSettings": { + "network": "quic", + "quicSettings": { + "security": "chacha20-poly1305", + "key": null, + "header": { + "type": null + } + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/tcpTLSselfSigned_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/tcpTLSselfSigned_client_config.json new file mode 100644 index 0000000..69bfc54 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/tcpTLSselfSigned_client_config.json @@ -0,0 +1,29 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "tcp", + "security": "tls", + "tlsSettings": { + "allowInsecure": true + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/tcp_TLS_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/tcp_TLS_client_config.json similarity index 60% rename from TemplateConfg/tcp_TLS_client_config.json rename to TemplateConfg/v2ray/client/06_outbounds/tcp_TLS_client_config.json index 686a077..6e469e7 100644 --- a/TemplateConfg/tcp_TLS_client_config.json +++ b/TemplateConfg/v2ray/client/06_outbounds/tcp_TLS_client_config.json @@ -1,24 +1,4 @@ { - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], "outbounds": [ { "protocol": "vmess", diff --git a/TemplateConfg/v2ray/client/06_outbounds/tcp_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/tcp_client_config.json new file mode 100644 index 0000000..17166c9 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/tcp_client_config.json @@ -0,0 +1,25 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "tcp" + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/06_outbounds/tcp_http_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/tcp_http_client_config.json new file mode 100644 index 0000000..afd694c --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/tcp_http_client_config.json @@ -0,0 +1,55 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16 + } + ] + } + ] + }, + "streamSettings": { + "network": "tcp", + "tcpSettings": { + "header": { + "type": "http", + "request": { + "version": "1.1", + "method": "GET", + "path": [ + "/" + ], + "headers": { + "Host": [ + "www.cloudflare.com", + "www.amazon.com", + "www.microsoft.com", + "www.intel.com" + ], + "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/TemplateConfg/tcp_vless_tls_caddy_cilent_config.json b/TemplateConfg/v2ray/client/06_outbounds/tcp_vless_tls_caddy_cilent_config.json similarity index 66% rename from TemplateConfg/tcp_vless_tls_caddy_cilent_config.json rename to TemplateConfg/v2ray/client/06_outbounds/tcp_vless_tls_caddy_cilent_config.json index 4e1e18c..95475de 100644 --- a/TemplateConfg/tcp_vless_tls_caddy_cilent_config.json +++ b/TemplateConfg/v2ray/client/06_outbounds/tcp_vless_tls_caddy_cilent_config.json @@ -1,21 +1,4 @@ { - "log": { - "loglevel": "warning" - }, - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "listen": "127.0.0.1", - "protocol": "socks", - "settings": { - "udp": true - } - } - ], "outbounds": [ { "protocol": "vless", diff --git a/TemplateConfg/v2ray/client/06_outbounds/webSocket_client_config.json b/TemplateConfg/v2ray/client/06_outbounds/webSocket_client_config.json new file mode 100644 index 0000000..c746fe1 --- /dev/null +++ b/TemplateConfg/v2ray/client/06_outbounds/webSocket_client_config.json @@ -0,0 +1,25 @@ +{ + "outbounds": [ + { + "protocol": "vmess", + "settings": { + "vnext": [ + { + "address": null, + "port": null, + "users": [ + { + "id": null, + "alterId": 16, + "security": "auto" + } + ] + } + ] + }, + "streamSettings": { + "network": "ws" + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/07_transport/07_transport.json b/TemplateConfg/v2ray/client/07_transport/07_transport.json new file mode 100644 index 0000000..6269103 --- /dev/null +++ b/TemplateConfg/v2ray/client/07_transport/07_transport.json @@ -0,0 +1,3 @@ +{ + "transport": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/08_stats/08_stats.json b/TemplateConfg/v2ray/client/08_stats/08_stats.json new file mode 100644 index 0000000..a58051b --- /dev/null +++ b/TemplateConfg/v2ray/client/08_stats/08_stats.json @@ -0,0 +1,3 @@ +{ + "stats": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/client/09_reverse/09_reverse.json b/TemplateConfg/v2ray/client/09_reverse/09_reverse.json new file mode 100644 index 0000000..6fa38a4 --- /dev/null +++ b/TemplateConfg/v2ray/client/09_reverse/09_reverse.json @@ -0,0 +1,3 @@ +{ + "reverse": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/00_log/00_log.json b/TemplateConfg/v2ray/server/00_log/00_log.json new file mode 100644 index 0000000..6a4cf00 --- /dev/null +++ b/TemplateConfg/v2ray/server/00_log/00_log.json @@ -0,0 +1,5 @@ +{ + "log": { + "loglevel": "warning" + } +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/01_api/01_api.json b/TemplateConfg/v2ray/server/01_api/01_api.json new file mode 100644 index 0000000..aa1982b --- /dev/null +++ b/TemplateConfg/v2ray/server/01_api/01_api.json @@ -0,0 +1,3 @@ +{ + "api": null +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/02_dns/02_dns.json b/TemplateConfg/v2ray/server/02_dns/02_dns.json new file mode 100644 index 0000000..63472d2 --- /dev/null +++ b/TemplateConfg/v2ray/server/02_dns/02_dns.json @@ -0,0 +1,3 @@ +{ + "dns": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/03_routing/03_routing.json b/TemplateConfg/v2ray/server/03_routing/03_routing.json new file mode 100644 index 0000000..0aa4964 --- /dev/null +++ b/TemplateConfg/v2ray/server/03_routing/03_routing.json @@ -0,0 +1,14 @@ +{ + "routing": { + "domainStrategy": "AsIs", + "rules": [ + { + "type": "field", + "ip": [ + "geoip:private" + ], + "outboundTag": "block" + } + ] + } +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/04_policy/04_policy.json b/TemplateConfg/v2ray/server/04_policy/04_policy.json new file mode 100644 index 0000000..4beed61 --- /dev/null +++ b/TemplateConfg/v2ray/server/04_policy/04_policy.json @@ -0,0 +1,3 @@ +{ + "policy": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/00_padavan_router.json b/TemplateConfg/v2ray/server/05_inbounds/00_padavan_router.json new file mode 100644 index 0000000..2b9d236 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/00_padavan_router.json @@ -0,0 +1,9 @@ +{ + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls" + ] + } +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/05_inbounds.json b/TemplateConfg/v2ray/server/05_inbounds/05_inbounds.json new file mode 100644 index 0000000..9a8d634 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/05_inbounds.json @@ -0,0 +1,3 @@ +{ + "inbounds": [] +} diff --git a/TemplateConfg/v2ray/server/05_inbounds/Http2Web_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/Http2Web_server_config.json new file mode 100644 index 0000000..077c799 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/Http2Web_server_config.json @@ -0,0 +1,27 @@ +{ + "inbounds": [ + { + "port": 10000, + "listen": "127.0.0.1", + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "network": "h2", + "security": "none", + "httpSettings": { + "path": null, + "host": [ + "" + ] + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/Http2selfSigned_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/Http2selfSigned_server_config.json new file mode 100644 index 0000000..5f49a0f --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/Http2selfSigned_server_config.json @@ -0,0 +1,28 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "network": "h2", + "security": "tls", + "tlsSettings": { + "certificates": [ + {} + ] + }, + "httpSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/WebSocketTLSWeb_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/WebSocketTLSWeb_server_config.json new file mode 100644 index 0000000..7c5f1a5 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/WebSocketTLSWeb_server_config.json @@ -0,0 +1,23 @@ +{ + "inbounds": [ + { + "port": 10000, + "listen": "127.0.0.1", + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "network": "ws", + "wsSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/WebSocketTLS_selfSigned_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/WebSocketTLS_selfSigned_server_config.json new file mode 100644 index 0000000..cd4afba --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/WebSocketTLS_selfSigned_server_config.json @@ -0,0 +1,28 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "security": "tls", + "tlsSettings": { + "certificates": [ + {} + ] + }, + "network": "ws", + "wsSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/WebSocket_TLS_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/WebSocket_TLS_server_config.json new file mode 100644 index 0000000..f1e69f5 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/WebSocket_TLS_server_config.json @@ -0,0 +1,31 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "security": "tls", + "tlsSettings": { + "certificates": [ + { + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" + } + ] + }, + "network": "ws", + "wsSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/http2_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/http2_server_config.json new file mode 100644 index 0000000..a3b4221 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/http2_server_config.json @@ -0,0 +1,31 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 0 + } + ] + }, + "streamSettings": { + "network": "h2", + "security": "tls", + "tlsSettings": { + "certificates": [ + { + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" + } + ] + }, + "httpSettings": { + "path": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/mkcp_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/mkcp_server_config.json new file mode 100644 index 0000000..bf8a13c --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/mkcp_server_config.json @@ -0,0 +1,28 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "network": "mkcp", + "kcpSettings": { + "uplinkCapacity": 100, + "downlinkCapacity": 100, + "congestion": true, + "header": { + "type": null + }, + "seed": null + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/quic_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/quic_server_config.json new file mode 100644 index 0000000..9e28939 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/quic_server_config.json @@ -0,0 +1,26 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "network": "quic", + "quicSettings": { + "security": "chacha20-poly1305", + "key": null, + "header": { + "type": null + } + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/tcpTLSselfSigned_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/tcpTLSselfSigned_server_config.json new file mode 100644 index 0000000..61e7ac8 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/tcpTLSselfSigned_server_config.json @@ -0,0 +1,25 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "security": "tls", + "tlsSettings": { + "certificates": [ + {} + ] + }, + "network": "tcp" + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/tcp_TLS_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/tcp_TLS_server_config.json new file mode 100644 index 0000000..9686194 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/tcp_TLS_server_config.json @@ -0,0 +1,28 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "security": "tls", + "tlsSettings": { + "certificates": [ + { + "certificateFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.crt", + "keyFile": "/usr/local/etc/v2ray/ssl/v2ray_ssl.key" + } + ] + }, + "network": "tcp" + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/tcp_http_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/tcp_http_server_config.json new file mode 100644 index 0000000..11b896f --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/tcp_http_server_config.json @@ -0,0 +1,44 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "network": "tcp", + "tcpSettings": { + "header": { + "type": "http", + "response": { + "version": "1.1", + "status": "200", + "reason": "OK", + "headers": { + "Content-Type": [ + "application/octet-stream", + "application/x-msdownload", + "text/html", + "application/x-shockwave-flash" + ], + "Transfer-Encoding": [ + "chunked" + ], + "Connection": [ + "keep-alive" + ], + "Pragma": "no-cache" + } + } + } + } + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/tcp_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/tcp_server_config.json new file mode 100644 index 0000000..25f5e52 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/tcp_server_config.json @@ -0,0 +1,16 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/tcp_vless_tls_caddy_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/tcp_vless_tls_caddy_server_config.json similarity index 88% rename from TemplateConfg/tcp_vless_tls_caddy_server_config.json rename to TemplateConfg/v2ray/server/05_inbounds/tcp_vless_tls_caddy_server_config.json index 60501a1..3dc0236 100644 --- a/TemplateConfg/tcp_vless_tls_caddy_server_config.json +++ b/TemplateConfg/v2ray/server/05_inbounds/tcp_vless_tls_caddy_server_config.json @@ -1,7 +1,4 @@ { - "log": { - "loglevel": "warning" - }, "inbounds": [ { "port": 443, @@ -35,10 +32,5 @@ } } } - ], - "outbounds": [ - { - "protocol": "freedom" - } ] } \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/05_inbounds/webSocket_server_config.json b/TemplateConfg/v2ray/server/05_inbounds/webSocket_server_config.json new file mode 100644 index 0000000..42ffda2 --- /dev/null +++ b/TemplateConfg/v2ray/server/05_inbounds/webSocket_server_config.json @@ -0,0 +1,19 @@ +{ + "inbounds": [ + { + "port": null, + "protocol": "vmess", + "settings": { + "clients": [ + { + "id": null, + "alterId": 64 + } + ] + }, + "streamSettings": { + "network": "ws" + } + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/06_outbounds/06_outbounds.json b/TemplateConfg/v2ray/server/06_outbounds/06_outbounds.json new file mode 100644 index 0000000..467a4e1 --- /dev/null +++ b/TemplateConfg/v2ray/server/06_outbounds/06_outbounds.json @@ -0,0 +1,12 @@ +{ + "outbounds": [ + { + "protocol": "freedom", + "tag": "direct" + }, + { + "protocol": "blackhole", + "tag": "block" + } + ] +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/07_transport/07_transport.json b/TemplateConfg/v2ray/server/07_transport/07_transport.json new file mode 100644 index 0000000..6269103 --- /dev/null +++ b/TemplateConfg/v2ray/server/07_transport/07_transport.json @@ -0,0 +1,3 @@ +{ + "transport": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/08_stats/08_stats.json b/TemplateConfg/v2ray/server/08_stats/08_stats.json new file mode 100644 index 0000000..a58051b --- /dev/null +++ b/TemplateConfg/v2ray/server/08_stats/08_stats.json @@ -0,0 +1,3 @@ +{ + "stats": {} +} \ No newline at end of file diff --git a/TemplateConfg/v2ray/server/09_reverse/09_reverse.json b/TemplateConfg/v2ray/server/09_reverse/09_reverse.json new file mode 100644 index 0000000..6fa38a4 --- /dev/null +++ b/TemplateConfg/v2ray/server/09_reverse/09_reverse.json @@ -0,0 +1,3 @@ +{ + "reverse": {} +} \ No newline at end of file diff --git a/TemplateConfg/webSocket_client_config.json b/TemplateConfg/webSocket_client_config.json deleted file mode 100644 index f12516b..0000000 --- a/TemplateConfg/webSocket_client_config.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "inbounds": [ - { - "protocol": "http", - "port": 1081 - }, - { - "port": 1080, - "protocol": "socks", - "sniffing": { - "enabled": true, - "destOverride": [ - "http", - "tls" - ] - }, - "settings": { - "auth": "noauth" - } - } - ], - "outbounds": [ - { - "protocol": "vmess", - "settings": { - "vnext": [ - { - "address": null, - "port": null, - "users": [ - { - "id": null, - "alterId": 16, - "security": "auto" - } - ] - } - ] - }, - "streamSettings": { - "network": "ws" - } - } - ] -} \ No newline at end of file diff --git a/TemplateConfg/webSocket_server_config.json b/TemplateConfg/webSocket_server_config.json deleted file mode 100644 index f80c616..0000000 --- a/TemplateConfg/webSocket_server_config.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "inbounds": [ - { - "port": null, - "protocol": "vmess", - "settings": { - "clients": [ - { - "id": null, - "alterId": 64 - } - ] - }, - "streamSettings": { - "network": "ws" - } - } - ], - "outbounds": [ - { - "protocol": "freedom", - "settings": {} - } - ] -} \ No newline at end of file