From e122b8c83e467db80d169bff18fcdf1a2ef23837 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Thu, 4 Apr 2024 16:49:02 -0600 Subject: [PATCH] - Cambios en ticket. - Cambios en resumen dia --- B4A/C_Cliente.bas | 46 ++++++++++++++++++++++++------------ B4A/C_Principal.bas | 50 ++++++++++++++++++++++++++-------------- B4A/Durakelo.b4a | 38 +++++++++++++++--------------- B4A/Durakelo.b4a.meta | 4 ++-- B4A/Files/colgate.png | Bin 0 -> 2838 bytes B4A/Files/principal.bal | Bin 50306 -> 51810 bytes 6 files changed, 84 insertions(+), 54 deletions(-) create mode 100644 B4A/Files/colgate.png diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index d61afe0..dae9232 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -236,7 +236,6 @@ Sub B4XPage_Appear c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") s.Position=0 - c.Position=0 la_cuenta.Text = c.GetString("CAT_CL_CODIGO") La_nombre.Text = c.GetString("CAT_CL_NOMBRE") @@ -603,7 +602,7 @@ Sub B_IMP_Click c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "MM/dd/yyyy HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c.Close @@ -648,23 +647,25 @@ Sub B_IMP_Click Dim bmp As Bitmap bmp.InitializeResize(File.DirAssets, "durakelo1.png", 376, 129, True) 'ignore Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) - myimage = Printer1.DitherImage2D(myimage, 128) - myimage= Printer1.PackImage(myimage) Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening Printer1.WriteString(Printer1.REVERSE) - Printer1.PrintImage(myimage) Printer1.WriteString(Printer1.UNREVERSE) - + Private x As ResultSet = Starter.skmt.ExecQuery($"SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION ='DOMICILIO'"$) + Private domicilioF As String = "" + Do While x.NextRow + domicilioF = x.GetString("CAT_VA_VALOR") + Loop 'Printer1.Justify = 1 'printer.Initialize(cmp20.OutputStream) Printer1.WriteString("DURAKELO S.A. de C.V." & CRLF) Printer1.WriteString("RFC: DUR-011025-T12" & CRLF) + Printer1.WriteString("REGIMEN GENERAL DE LEY DE PERSONAS MORALES" & CRLF) + Printer1.WriteString("DOM: " & domicilioF & CRLF) Printer1.WriteString(sucursal & CRLF) - Printer1.WriteString(sDate & CRLF) - Printer1.WriteString(sTime & CRLF) + Printer1.WriteString(Subs.fechanormal(DateTime.Now) & CRLF) Printer1.WriteString("Vendedor:" & usuario & CRLF) Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF) Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF) @@ -819,6 +820,13 @@ Sub B_IMP_Click c=Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) and PE_TIPO = 'PREVENTA'") C.Position=0 Printer1.WriteString("Total Articulos: " & c.GetString("PC_NOART") & CRLF) + + Private bc As ResultSet = Starter.skmt.ExecQuery($"select CAT_CL_BCREDITO from kmt_info where CAT_CL_CODIGO = '${Subs.traeCliente}'"$) + Private formaPago As String = "Efectivo" + Do While bc.NextRow + If bc.GetString("CAT_CL_BCREDITO") = 1 Then formaPago = "Por definir" + Loop + Printer1.WriteString("Forma de pago: " & formaPago & CRLF) c.Close End If @@ -859,7 +867,7 @@ Sub B_IMP2_Click c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "MM/dd/yyyy HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c.Close @@ -903,23 +911,25 @@ Sub B_IMP2_Click Dim bmp As Bitmap bmp.InitializeResize(File.DirAssets, "durakelo1.png", 376, 129, True) 'ignore Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) - myimage = Printer1.DitherImage2D(myimage, 128) - myimage= Printer1.PackImage(myimage) Log("Iniciamos 2 ...") Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening Printer1.WriteString(Printer1.REVERSE) - Printer1.PrintImage(myimage) Printer1.WriteString(Printer1.UNREVERSE) - + Private x As ResultSet = Starter.skmt.ExecQuery($"SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION ='DOMICILIO'"$) + Private domicilioF As String = "" + Do While x.NextRow + domicilioF = x.GetString("CAT_VA_VALOR") + Loop ' printer.Initialize(cmp20.OutputStream) Printer1.WriteString("DURAKELO S.A. de C.V." & CRLF) Printer1.WriteString("RFC: DUR-011025-T12" & CRLF) + Printer1.WriteString("REGIMEN GENERAL DE LEY DE PERSONAS MORALES" & CRLF) + Printer1.WriteString("DOM: " & domicilioF & CRLF) Printer1.WriteString(sucursal & CRLF) - Printer1.WriteString(sDate & CRLF) - Printer1.WriteString(sTime & CRLF) + Printer1.WriteString(Subs.fechanormal(DateTime.Now) & CRLF) Printer1.WriteString("Vendedor:" & usuario & CRLF) Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF) Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF) @@ -1039,6 +1049,12 @@ Sub B_IMP2_Click c=Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP ) and PE_TIPO = 'PREVENTA' ") C.Position=0 Printer1.WriteString("Total Articulos: " & c.GetString("PC_NOART") & CRLF) + Private bc As ResultSet = Starter.skmt.ExecQuery($"select CAT_CL_BCREDITO from kmt_info where CAT_CL_CODIGO = '${Subs.traeCliente}'"$) + Private formaPago As String = "Efectivo" + Do While bc.NextRow + If bc.GetString("CAT_CL_BCREDITO") = 1 Then formaPago = "Por definir" + Loop + Printer1.WriteString("Forma de pago: " & formaPago & CRLF) c.Close ' Printer1.WriteString("------------VENTA-------------") ' Printer1.WriteString("TOTAL COMPRA: $:" & total_cliente) diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 2625f9a..e4fc8fa 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -159,6 +159,7 @@ Sub Class_Globals Dim ime As IME Private l_monto_kc As Label Private l_version As Label + Private l_montoColgateResumen As Label End Sub Sub initialize @@ -224,7 +225,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) l_ctast.Text = d.GetString("TOTAL_VISITAR") l_porvisitar.Text = e.GetString("POR_VISITAR") Else - c=skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente ") + c=skmt.ExecQuery("select ifnull(sum(pc_monto), 0) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente ") b=skmt.ExecQuery("select count(*) as CUANTOS from noventa") 'where pc_fecha = ?", Array As String(fecha) C.Position=0 @@ -1076,7 +1077,9 @@ Sub JobDone(Job As HttpJob) LogColor(">>>>>> " & reqManager.reqsList.Size & " - " & reqManager.reqsList, Colors.Blue) End If If Job.Success = False Then - LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red) + LogColor("############################################", Colors.red) + LogColor("#### Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red) + LogColor("############################################", Colors.red) If Job.ErrorMessage = "STREAM" Then If CARGA = "SUBIR" Then PB2.Progress = PB2.Progress + PORCENTAJE @@ -1872,8 +1875,11 @@ Sub JobDone(Job As HttpJob) If RESULT.Tag = "sucursal" Then 'query tag For Each records() As Object In RESULT.Rows Dim SUCURSAL As String = records(RESULT.Columns.Get("SUCURSAL")) + Dim domicilio As String = records(RESULT.Columns.Get("CAT_AG_CALLE")) & " " & records(RESULT.Columns.Get("CAT_AG_NUMERO")) & ", " & records(RESULT.Columns.Get("CAT_AG_COLONIA")) & ", " & records(RESULT.Columns.Get("CAT_AG_CIUDAD")) skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SUCURSAL")) skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SUCURSAL",SUCURSAL)) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DOMICILIO")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DOMICILIO", domicilio)) Next End If End If @@ -1976,12 +1982,16 @@ End Sub Sub BUSCA_Click c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS")) - c.Position =0 - MARCASQ = c.GetString("CAT_VA_VALOR") - c.Close - skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &")" ) -' StartActivity(BUSCAR) - B4XPages.ShowPage("TicketsDia") + If c.RowCount > 0 Then + c.Position = 0 + MARCASQ = c.GetString("CAT_VA_VALOR") + c.Close + skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &")" ) +' StartActivity(BUSCAR) + B4XPages.ShowPage("TicketsDia") + Else + ToastMessageShow("No hay tickets guardados!", True) + End If End Sub Sub b_mapa_Click @@ -2316,6 +2326,13 @@ Sub Resumen_Click cargar.Visible=False Resumen.Visible= False + Private r As ResultSet = Starter.skmt.ExecQuery($"Select CAT_GP_CLASIF, PEDIDO.* from pedido join cat_gunaprod on PE_PROID = CAT_GP_ID where CAT_GP_CLASIF = 'COLGATE'"$) + Private cRes As String = 0 + Do While r.NextRow + cRes = cRes + r.GetString("PE_COSTO_TOT") + Loop + l_montoColgateResumen.Text = numberformat2(cRes, 1, 2, 2, True) + b=skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente where pc_cliente <> 0") b.Position=0 Cuantos = b.GetString("CUANTOS") @@ -2357,11 +2374,11 @@ Sub Resumen_Click If c.GetString("CUANTOS") > 0 Then Log("Entramos") ImageView12.Bitmap = LoadBitmap(File.DirAssets, "k.png") - c=skmt.ExecQuery2("select sum(pe_cant) as CAMBIOS from pedido where substr(pe_pronombre,1,6) = ?", Array As String("CAMBIO")) + c=skmt.ExecQuery2("select ifnull(sum(pe_cant), 0) as CAMBIOS from pedido where substr(pe_pronombre,1,6) = ?", Array As String("CAMBIO")) c.Position = 0 - l_cambios.Text = c.GetString("CAMBIOS") + l_cambios.Text = numberformat2(c.GetString("CAMBIOS"), 1, 2, 2, True) c.Close - c=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2' union Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2')") + c=skmt.ExecQuery("Select ifnull(sum(PE_COSTO_TOT), 0) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2' union Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2')") c.Position = 0 l_monto_k.Text = c.GetString("MONTO_DIA") c.Close @@ -2373,12 +2390,12 @@ Sub Resumen_Click l_monto_kp.Text = "0" End If c.Close - c=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'SNACK' union Select CAT_GP_ID from cat_gunaprod2 where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'SNACK')") + c=skmt.ExecQuery("Select ifnull(sum(PE_COSTO_TOT), 0) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'SNACK' union Select CAT_GP_ID from cat_gunaprod2 where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'SNACK')") c.Position = 0 l_monto_ks.Text = c.GetString("MONTO_DIA") c.Close Log("Snacks=" & l_monto_ks.text) - c=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'CEREAL' union Select CAT_GP_ID from cat_gunaprod2 where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'CEREAL')") + c=skmt.ExecQuery("Select ifnull(sum(PE_COSTO_TOT), 0) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'CEREAL' union Select CAT_GP_ID from cat_gunaprod2 where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'CEREAL')") c.Position = 0 l_monto_kc.Text = c.GetString("MONTO_DIA") c.Close @@ -2415,14 +2432,13 @@ Sub Resumen_Click End If E1.Close - E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("PREVENTA")) E1.Position = 0 If E1.GetString("CUANTOS") > 0 Then - c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("PREVENTA")) + c=skmt.ExecQuery2("Select ifnull(sum(PE_COSTO_TOT), 0) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("PREVENTA")) c.Position = 0 - L_PREVENTA.Text = c.GetString("MONTO_DIA") + L_PREVENTA.Text = NumberFormat2(c.GetString("MONTO_DIA"), 1, 2, 2, True) c.Close Else L_PREVENTA.Text = 0 @@ -2552,7 +2568,7 @@ End Sub Sub B_MARCAS_Click Panel5.Visible = True - + Panel5.BringToFront pnlTitle.Visible = False pnlTitle.SetLayoutAnimated(0, 0, 0, CLV1.AsView.Width, TitleHeight + DividerHeight) pnlTitle.LoadLayout("CellTitle") diff --git a/B4A/Durakelo.b4a b/B4A/Durakelo.b4a index 2729e58..830789d 100644 --- a/B4A/Durakelo.b4a +++ b/B4A/Durakelo.b4a @@ -571,23 +571,23 @@ File610=carrito.png File611=celltitle.bal File612=Cliente.bal File613=Clientes.bal -File614=detalle_promo.bal -File615=durakelo.png -File616=durakelo_192x192.png -File617=durakelo1.png -File618=encuesta.bal -File619=engrane.jpg +File614=colgate.png +File615=detalle_promo.bal +File616=durakelo.png +File617=durakelo_192x192.png +File618=durakelo1.png +File619=encuesta.bal File62=117marker-verde.png -File620=engrane3.png -File621=espera.gif -File622=fondo_kmt.jpg -File623=foto.bal -File624=guardagestion.bal -File625=guna_viejo.png -File626=infonavit1.jpg -File627=itembuttonblue.png -File628=k.png -File629=K-b27c0809.png +File620=engrane.jpg +File621=engrane3.png +File622=espera.gif +File623=fondo_kmt.jpg +File624=foto.bal +File625=guardagestion.bal +File626=guna_viejo.png +File627=infonavit1.jpg +File628=itembuttonblue.png +File629=k.png File63=118.png File630=kelloggs.png File631=keymon_logo.png @@ -1393,12 +1393,12 @@ Module9=C_NoVenta NumberOfFiles=667 NumberOfLibraries=31 NumberOfModules=24 -Version=12.5 +Version=12.8 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Durakelo #VersionCode: 1 - #VersionName: 4.04.02ENCU + #VersionName: 4.04.03ENCU 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False @@ -1426,8 +1426,6 @@ Sub Activity_Create(FirstTime As Boolean) pm.Initialize(Activity) End Sub - - 'Template version: B4A-1.01 #Region Delegates diff --git a/B4A/Durakelo.b4a.meta b/B4A/Durakelo.b4a.meta index 3338b4d..63b0eb6 100644 --- a/B4A/Durakelo.b4a.meta +++ b/B4A/Durakelo.b4a.meta @@ -73,6 +73,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Cliente,B_IMP_Click,675,0,C_Cliente,Class_Globals,132,0,C_Principal,Class_Globals,0,0,C_Principal,trabajar_Click,436,0,C_Principal,connecta_Click,1958,0,C_Principal,BUSCA_Click,1973,0,DiseƱador Visual,principal.bal,-100,6,C_Cliente,B4XPage_Appear,213,2,C_Cliente,B_VENTA_Click,1194,0,C_Cliente,gest_Click,387,0 +NavigationStack=C_Principal,connecta_Click,1970,0,C_Cliente,B_INV_Click,1097,0,Main,Globals,25,0,C_Cliente,B4XPage_Appear,224,0,B4XMainPage,B4XPage_Appear,212,0,Subs,fechanormal,1396,0,C_Principal,cargar_Click,940,6,C_Principal,JobDone,1127,6,C_Cliente,B_IMP_Click,659,6,C_Cliente,B_IMP2_Click,923,6 SelectedBuild=0 -VisibleModules=1,2,10,4,5,6,8,9,11,24 +VisibleModules=1,2,10,4,5,6,8,9,11,24,23 diff --git a/B4A/Files/colgate.png b/B4A/Files/colgate.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d446b1a1880bdde0622b1015fe74de029a00b0 GIT binary patch literal 2838 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal index 2449dcc96ab893971a8dd914a6b2e86a72618cba..b5a91dd7c8f7a365f18ec37d587749e453c8fa3a 100644 GIT binary patch delta 4407 zcmZ{md0bT2702g36!V6_jN^cSAZSRGO#u-G0W-u67nGo_jZHF{u!+D7n}SBfEvRTj z{n^Auu-NF-CQ($VjHZaze)>s`X|?(Elh#k`+P#Uf(JWOeJ@-9^xijD&=g#-tv%Gun zIp@CFxXtI*ULXJA8ja? zB#<7MoxZ6lQ_51b$B783NA~c$UDk1)d{tw!m}g{R2lm zPvH3iFAz9K;DrJ&5;#}j=LOCacyT{B@Ek7@6yFi}y832i z%Nk9?!0s)A;uV3d0>3J7zQ6?n7YbY?aIwJ42bj*kWZ*%gSs`$#z-0oL3v45Hb&Z|4 zf~1n9O5kdNYXn}&ndhH7tP&Kp0@n$=THrOruaT@JsTX)1v1<`Lwrg?giCrzdLEy}d z!owzFm&0a(Ul+KMSVy8KF#vvPetty#*Hp)ceuo*G-eL1!r9Byr4re3w%+Y7l4S> z4m>Ehh~_m8_7P63%%xFZJ&9dH;;Ommd(FWDE7ZoW*4n@;A+`L^lWhAMVk@kW3f23(SW12EL@%$gBwQzkhRH) zOZIqJY7HSq!ZETK#p4uwS@Nc|}g_S&BCVo_zh2|}H zakh%bh=Q(K^*?*egt^cI(abNx>wCpqCdY2Kb z$%usH5Lk+3b{qTWhX((L)ckYyBySG+CJkytT-hE8^K1ir_g`aQ($?biUwWBhT#J+4 zL#2swRxCr;I!1TT(*&1eo`I#c8Ebczvim#;jkW{XwKC%pzGz?is#-neRLDx5g12q%7fQ%i}uz6cOY;U>SwdXDM^(*lHK^d#xO@iFc=vAlk0-XBG)y%dHiRMX z!H7;RdNQJ=;S9&q#z?-ZweJwt=2)4PVEU;jyGI&$XlUZR4Jt5j+-t{&oOAYaSu~jEt7^?b0ZBlu<)P>2}H(dm#hq&uSqT zMN38{xp?7#f$o?wXgt76ke3S2X&cWey3JawK4q1H+*u9s2u%)@)%1LMR12k0`9Lls z7(>F+QPS0fTWv>t&iDDXDTOjvTeG$Kv`XdU{(G2zro=)0zGNKV znJSIp8;<2a`hpzZ)|P_(h&sZza?_rn5Az60R>D>;?y^bYYTt}i`Ub1t3*eF1&J=vO z+a^V*%1A}2kMs`3c2?qHaXpT;8&P4)L|?n&&G($W*MO^UMx(x@6k|{HF9!A#iUD83 zQ)=CvT;Y_Wcr`52M|p?magxg%DC$%{+FhM4Z+u2wpIvRnp>n4*L3N)nguAxQb#7Tm zu(wDP2W~0-L~nDxsAzRjZ&o;QkG_+%Cw+{!9bZ*&l>_;wT}K@2Z9<`N`}90)t#;y* zGisc8FQblwH98hJiDn01Ej({r<8IdeyiHcu*IO%N)2enULEU+Rw<%v@Z|yAHX)To! zmGVH)*#LwUWFfz~6?1y}>m2)f0=R)kNf=lz*iR=?bx&~>#}qaHQ#{^7ey%b}R?B3n zYBqJSnNlWFio5GmyluwKj$jcuUo)3ij+CoG!pjq=c(iz9Z?u%E#y6?)P2Rq=4E8zZ z{GdxpbH5?Y+iKtq+NGpYnrSRr&nLoORvI{srUvJMU-4Yy&V$EcNlO_n?MkDrHcIJq k8bygxhO$zYiJl8_QYOQ=@j=i}3&7rm{9m9EslS~6e_P-VJOBUy delta 3847 zcmZvfe^gY*702H^6!JE(4_5pI@u0dIf-!?2#8~vUmkH7 zCv70OIJu3O9Gm^Ch}ncm>BRInLpD700VNUc>Q^IbKWG z_k8ws96!NvF2{Ksuje?Q;{uKgIo`nW#xXXt^Zp6v_$kLva{M!nf6nnHjyH4s3yz=S z_?H}S5d^a*`y$R!%y9|Fr5tbNxQyd+j<<3AG{@ULOuzpQ&x;@!INnLwT^$vaE2$Z& zRdHO+aSg|{9M^Gd;`kZH?EG2KdTI^S8maB#xQViR;oX$o8)~NPF4sLAw{Xm2yY;Oc zKg)5@UiuIkRXNVj3LuUx zGc*JrMKn8#W{M&V;Y+4HLIo>|^0GIq%--nF#0uePcoO~+-r&fItj(Dsj*O1Zq&`AT z2xG9{(O;S)!hXUZJ+0G4mw=Ma*YIKaMSO6^D1Iz}^o5f@VRp$JWc5juzH3~Cwmzdc zpt?TsxIR%_miL^PZU{x|@AcSjh`^937OuB4AYahoN&6x3l7QLBCznuIHwz2S>d2pQ z3~SNd2eZm-8Sqps&OwGv#CFutj2nKa(m4J6vRx2 z{LwsoUzLPo4YA0rj!QDVRH2PZ~r)u{z_Y-$F=-nQadld8UKQq`X->cDdno_i++ zca~^y@R>T)HK;S+Zx~M|@SIf~R1+EWB=VUuedJv>-6mdDlEK|Z9j?_ZRMs4McNJQi z7URt6bn-cDWr_4TSoXDeO^FnIjUET<#)0fENT1Wevr*)_5_H)v2}ibdh&NQ_4PVNC zD9V9)37YL4;uos&3t!5AdX!B&I>awk<(Iyc|5B9K4Oa1{s=Db*^_8M3tgwo=RMjnC zs;?E*`AR4GroAo`PNPo###@K$rW8c2$pA|?x5_5o7SQ!lzI@w<%u?+lcUYWrH9Gl@ z4}o0kB17$U1@e#&r@k!%{dG>_Vgi@9z;WFaLr~Ei3YTLh7S+e%on|dPDYiLFbp{6N zt>U+8p5J=Uq=WRt{-flnZ#0VkRV(DKyF%o<-g?*%{Z{-=72WfQ?oAM-!}8uTjGoY7 z$h?!>XE#T@FW|GDTSz@n#E`CwHQUzlCHue=@PSvr`*hWGrGURzR~~i?asNdvjn3Sx zh~q8ly>GIxQI`E!851K4kH#TulLns_$BQFsm{E5adDO>x`_}6a^?{WLD0CLcto@AN zbWd=xj9|5WDTXV@E86ywQlstdS}spg*503kbr&@FpLss6Md{GHXRas`*vn!Nv|Az~ zLOP>xuyh^3TE?Wt^%jcnIj}FH+g`)8|{j$w5 z8n%@g)Je+VJRYSH>8lzH(PyJ^$*DuYo~z;%mR3UW6zU!SW;EC6&McI+G?GyINvF_w z0cefZ;ozy*;LwMqzfPEoVsjf-_Uy!_lk{tqg=7CoEh0Nt;7V%kETVoALzt@Tvt*k`!7_@4M>Qh_LoBON?dPDVXdBg2fn@+@YR%|_` z_~e;BqN@$ZvfoO=Ji7?YJWR5jV$ImY5+n>#o@mF_-lO!ZrRmyS=Qw~7o}a1 zztcFC?uIo7HHQ;}=Xftk&~@mfyIaL7ir9&YG^JHVAJ(90_H^h^&BLIBU3SmqL{hg_ zoJzp1djisR$2$j50lf-pH4>P%Sv-0KWgurMdFmz;(V%inrN~B*=N@x_jM~-ICjEnyoElrixh3I|FU)bLzlQeoDVmd)^eggYLGGp=Y{+j;-bvEQa