PK rE4 META-INF/PK rE4PjjMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.6.2 Created-By: 1.5.0_06-b05 (Sun Microsystems Inc.) PK rE4YYMETA-INF/context.xml PK rE40xxMETA-INF/facestut.tld 1.0 1.2 ft http://facestut.developpez.com/jsf pager com.facestut.tag.PagerTag empty itemsByPage java.lang.Integer PK rE4WEB-INF/PK rE4WEB-INF/classes/PK rE4*WEB-INF/classes/Bank.class0p @A @ BCDE F GHIJKLM N O PQ PR ST GU GV @W XY Z[\ customersLjava/util/List; dataTableLjavax/faces/component/UIData;checkbox'Ljavax/faces/component/UISelectBoolean;()VCodeLineNumberTableLocalVariableTablethisLBank; getCustomers()Ljava/util/List; setCustomers(Ljava/util/List;)V getDataTable ()Ljavax/faces/component/UIData; setDataTable!(Ljavax/faces/component/UIData;)V getCheckbox)()Ljavax/faces/component/UISelectBoolean; setCheckbox*(Ljavax/faces/component/UISelectBoolean;)VremoveSelectedCustomersiIsizeselectedCustomers addCustomercustomerLcom/facestut/bean/Customer; SourceFile Bank.java #$java/util/ArrayList com/facestut/bean/CustomerDURANDPaul #]^ _`DUDULEMichelMARTINAthurRICARD  !"a bc def gh ij klNouveau mnclient onBankjava/lang/Object'(Ljava/lang/String;Ljava/lang/String;)Vjava/util/Listadd(Ljava/lang/Object;)Zjavax/faces/component/UIData getRowCount()I setRowIndex(I)V%javax/faces/component/UISelectBoolean isSelected()Zget(I)Ljava/lang/Object; removeAll(Ljava/util/Collection;)ZsetName(Ljava/lang/String;)V setForname! !" #$%d**Y*Y W*Y   W*Y   W*Y W& $9Nc' d()*+%/*&' (),-%>*+& '()./%/*&"' ()01%>*+& &''() 23%/*&*' ()45%>*+& ./'()!"6$%L*<YM>,**,* W*,W&& 23456)7:4@:K;'*.78L()D98<:;$%d YL++*+ W&>?@AB' ()<=>?PK rE4gp"WEB-INF/classes/Bank.java import com.facestut.bean.Customer; import java.util.ArrayList; import java.util.List; import javax.faces.component.UIData; import javax.faces.component.UISelectBoolean; public class Bank { private List customers = new ArrayList(); private UIData dataTable; private UISelectBoolean checkbox; public Bank() { this.customers.add(new Customer("DURAND","Paul")); this.customers.add(new Customer("DUDULE","Michel")); this.customers.add(new Customer("MARTIN","Athur")); this.customers.add(new Customer("RICARD","Paul")); } public List getCustomers(){ return this.customers; } public void setCustomers(List customers){ this.customers = customers; } public UIData getDataTable(){ return this.dataTable; } public void setDataTable(UIData dataTable){ this.dataTable = dataTable; } public UISelectBoolean getCheckbox(){ return this.checkbox; } public void setCheckbox(UISelectBoolean checkbox){ this.checkbox = checkbox; } public void removeSelectedCustomers(){ int size = this.dataTable.getRowCount(); List selectedCustomers = new ArrayList(); for(int i=0; i < size; i++){ this.dataTable.setRowIndex(i); if(this.checkbox.isSelected()){ selectedCustomers.add(this.customers.get(i)); } } this.customers.removeAll(selectedCustomers); } public void addCustomer(){ Customer customer = new Customer(); customer.setName("Nouveau"); customer.setForname("client"); this.customers.add(customer); } } PK rE4WEB-INF/classes/com/PK rE4WEB-INF/classes/com/facestut/PK rE4"WEB-INF/classes/com/facestut/bean/PK rE4®4WEB-INF/classes/com/facestut/bean/AccountDatas.class0J <= >B ?@ < AB < C D EFGHInumberLjava/lang/String;totalFamountcustomerLcom/facestut/bean/Customer; lastModifiedLjava/util/Date;()VCodeLineNumberTableLocalVariableTablethis Lcom/facestut/bean/AccountDatas; getNumber()Ljava/lang/String; setNumber(Ljava/lang/String;)Vvalue getAmount()F setAmount(F)VgetTotal getCustomer()Lcom/facestut/bean/Customer; setCustomer(Lcom/facestut/bean/Customer;)V addAmountretrieveAmount checkAccount()ZvalidategetLastModified()Ljava/util/Date;setLastModified(Ljava/util/Date;)Vdate SourceFileAccountDatas.java FRA 00005 123456  com/facestut/bean/Customer java/util/Date   23AccountDatasOKAccountDatasErrorcom/facestut/bean/AccountDatasjava/lang/Object!e'****Y* Y    & ' !"#/*  !$%>*+  !&'(/*   !)*>*#   !&+(/*"  !,-/*&  !./>*+ *+ !0E*** b* . /0  !1E*** f* 3 45  !23@*8 9 ;  !4#? * @A D  !56/* I  !78>*+  MN !9:;PK rE4ݮee3WEB-INF/classes/com/facestut/bean/AccountDatas.java package com.facestut.bean; import java.util.Date; public class AccountDatas { private String number = "FRA 00005 123456"; private float total = (float) 100.0; private float amount; private Customer customer = new Customer(); private Date lastModified = new Date(); public AccountDatas() { } public String getNumber(){ return this.number; } public void setNumber(String value){ this.number = value; } public float getAmount(){ return this.amount; } public void setAmount(float value){ this.amount = value; } public float getTotal(){ return this.total; } public Customer getCustomer(){ return this.customer; } public void setCustomer(Customer customer){ this.customer = customer; } public void addAmount(){ this.total = this.total + this.amount; this.amount = (float)0.0; } public void retrieveAmount(){ this.total = this.total - this.amount; this.amount = (float)0.0; } public boolean checkAccount(){ if(this.total < 0.0 ){ return false; } else return true; } public String validate(){ if(checkAccount()){ return "AccountDatasOK"; } else { return "AccountDatasError"; } } public Date getLastModified(){ return this.lastModified; } public void setLastModified(Date date){ this.lastModified = date; } } PK rE4,WEB-INF/classes/com/facestut/bean/Bank.class04  !  "#$% & '()*+,-./ customersLjava/util/List;()VCodeLineNumberTableLocalVariableTablethisLcom/facestut/bean/Bank; getCustomers()Ljava/util/List; setCustomers(Ljava/util/List;)V SourceFile Bank.java java/util/ArrayList com/facestut/bean/CustomerDURANDPaul 01 23DUDULEMichelMARTINAthurRICARDcom/facestut/bean/Bankjava/lang/Object'(Ljava/lang/String;Ljava/lang/String;)Vjava/util/Listadd(Ljava/lang/Object;)Z!d**Y*Y W*Y   W*Y   W*Y W $9Nc d/* >*+ PK rE4볪+WEB-INF/classes/com/facestut/bean/Bank.java package com.facestut.bean; import java.util.ArrayList; import java.util.List; import javax.faces.component.UIData; import javax.faces.component.UISelectBoolean; public class Bank { private List customers = new ArrayList(); public Bank() { this.customers.add(new Customer("DURAND","Paul")); this.customers.add(new Customer("DUDULE","Michel")); this.customers.add(new Customer("MARTIN","Athur")); this.customers.add(new Customer("RICARD","Paul")); } public List getCustomers(){ return this.customers; } public void setCustomers(List customers){ this.customers = customers; } } PK rE4F0WEB-INF/classes/com/facestut/bean/Customer.class0$   !"#nameLjava/lang/String;forname()VCodeLineNumberTableLocalVariableTablethisLcom/facestut/bean/Customer;'(Ljava/lang/String;Ljava/lang/String;)VgetName()Ljava/lang/String;setName(Ljava/lang/String;)Vvalue getForname setFornametoString SourceFile Customer.java DURAND  Paul com/facestut/bean/Customerjava/lang/Object!    G***      m****+*,      /*  >*+   /*  >*+    /*# PK rE4()VCodeLineNumberTableLocalVariableTablethis'Lcom/facestut/component/DummyComponent;processDecodes%(Ljavax/faces/context/FacesContext;)VvalueLjava/lang/Object; facesContext"Ljavax/faces/context/FacesContext;clientIdLjava/lang/String;paramMapLjava/util/Map; SourceFileDummyComponent.java '() *+, -./ 01 23%com/facestut/component/DummyComponentjavax/faces/component/UICommand getClientId6(Ljavax/faces/context/FacesContext;)Ljava/lang/String; javax/faces/context/FacesContextgetExternalContext'()Ljavax/faces/context/ExternalContext;#javax/faces/context/ExternalContextgetRequestParameterMap()Ljava/util/Map; java/util/Map containsKey(Ljava/lang/Object;)Zget&(Ljava/lang/Object;)Ljava/lang/Object;!  /*   "*+M+N-, -,: ! 4!""PK rE4[[:WEB-INF/classes/com/facestut/component/DummyComponent.java/* * DummyComponent.java * * Created on 15 octobre 2005, 12:28 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package com.facestut.component; import java.util.Map; import javax.faces.component.UICommand; import javax.faces.context.FacesContext; /** * * @author kito31 */ public class DummyComponent extends UICommand { public void processDecodes(FacesContext facesContext){ String clientId = getClientId(facesContext); Map paramMap = facesContext.getExternalContext().getRequestParameterMap(); if(paramMap.containsKey(clientId)){ Object value = paramMap.get(clientId); // Fais quelque chose } } } PK rE4hh4WEB-INF/classes/com/facestut/component/UIPager.class0 5jk lm 4no pqrs ptuv jw xy z{ p| p}~ 4 ' U l  4 4 % ' 3 ' 5d 5 itemsByPageLjava/lang/Integer;()VCodeLineNumberTableLocalVariableTablethis Lcom/facestut/component/UIPager; getFamily()Ljava/lang/String; encodeBegin%(Ljavax/faces/context/FacesContext;)V facesContext"Ljavax/faces/context/FacesContext;responseWriter$Ljavax/faces/context/ResponseWriter;clientIdLjava/lang/String; ExceptionsencodeChildren encodeEnduiDataLjavax/faces/component/UIData;decode computedFirstIcmd parametersMapLjava/util/Map;valueLjava/lang/Object;getRendersChildren()Z getUIData ()Ljavax/faces/component/UIData;getItemsByPage()Ljava/lang/Integer;setItemsByPage(Ljava/lang/Integer;)Vinteger saveState6(Ljavax/faces/context/FacesContext;)Ljava/lang/Object;contextvalues[Ljava/lang/Object; restoreState7(Ljavax/faces/context/FacesContext;Ljava/lang/Object;)Vstate SourceFile UIPager.java 89facestut a href&javascript:document.forms[0].submit(); onclickjava/lang/StringBufferdocument.getElementById(' ').value = 'prev';return true; @<< ').value = 'next';return true;>> YZp  éléments.inputidnametypehidden   java/lang/String javax/faces/component/UIData 67prev nextjava/lang/Object `a efjava/lang/Integercom/facestut/component/UIPager%javax/faces/component/UIComponentBasejava/io/IOException javax/faces/context/FacesContextgetResponseWriter&()Ljavax/faces/context/ResponseWriter; getClientId6(Ljavax/faces/context/FacesContext;)Ljava/lang/String;"javax/faces/context/ResponseWriter startElement8(Ljava/lang/String;Ljavax/faces/component/UIComponent;)VwriteAttribute9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)Vappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toStringwrite(Ljava/lang/String;)V endElement getRowCount()I(I)Ljava/lang/StringBuffer;getExternalContext'()Ljavax/faces/context/ExternalContext;#javax/faces/context/ExternalContextgetRequestParameterMap()Ljava/util/Map; java/util/Mapget&(Ljava/lang/Object;)Ljava/lang/Object; getParent%()Ljavax/faces/component/UIComponent;equals(Ljava/lang/Object;)ZgetFirstintValuesetFirst(I)V!4567 89:/*; < =>?@:-;< =>AB:I+M*+N,*, , Y  - ,,;" <BH<*I=>ICDDEF >GHIJKB:5;#<=>CDIJLB:6+M*+N,*, , Y  - ,,*:,*, Y ,,*,- ,- , , ! ;F&( +,-<.B/H2N3U4p5v7}89:;=<4=>CDEF GHNVMNIJOB:R*+M+"#N-,$:v%:*&':*(_)*$+*(,d66-4.**+*(,`6 +6-;N@ABCD#E,F3G=HLIQJTL[M^NhOwPQSW<\ LPQwPQ#lRH,cMN=>CDGHSTyUVWX:,;Z< =>YZ:2*&';^< =>[\:/*(;b< =>]^:>*+(; fg<=>_7`a:`/M,*+0S,*(S,;jk lm< =>bDcdef:o,11N*+-22*-23(;qrst<*=>bDgVcdhiPK rE4"7Bss3WEB-INF/classes/com/facestut/component/UIPager.java package com.facestut.component; import java.io.IOException; import java.util.Map; import javax.faces.component.UIComponentBase; import javax.faces.component.UIData; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; public class UIPager extends UIComponentBase { private Integer itemsByPage; public String getFamily(){ return "facestut"; } public void encodeBegin(FacesContext facesContext) throws IOException { ResponseWriter responseWriter = facesContext.getResponseWriter(); String clientId = getClientId(facesContext); // Encode le contrôle page précédente responseWriter.startElement("a", this); responseWriter.writeAttribute("href","javascript:document.forms[0].submit();","href"); responseWriter.writeAttribute("onclick","document.getElementById('" + clientId +"').value = 'prev';return true;","onclick"); responseWriter.write("<<"); responseWriter.endElement("a"); } public void encodeChildren(FacesContext facesContext) throws IOException { } public void encodeEnd(FacesContext facesContext) throws IOException { ResponseWriter responseWriter = facesContext.getResponseWriter(); String clientId = getClientId(facesContext); // Encode le contrôle page suivante responseWriter.startElement("a", this); responseWriter.writeAttribute("href","javascript:document.forms[0].submit();","href"); responseWriter.writeAttribute("onclick","document.getElementById('" + clientId +"').value = 'next';return true;","onclick"); responseWriter.write(">>"); responseWriter.endElement("a"); // Encode les informations de taille UIData uiData = getUIData(); responseWriter.startElement("p", this); responseWriter.write(uiData.getRowCount() + " éléments." ); responseWriter.endElement("p"); responseWriter.startElement("input", this); responseWriter.writeAttribute("id",clientId,"id"); responseWriter.writeAttribute("name",clientId,"name"); responseWriter.writeAttribute("type","hidden","type"); responseWriter.writeAttribute("value","","value"); } public void decode(FacesContext facesContext){ String clientId = getClientId(facesContext); Map parametersMap = facesContext.getExternalContext().getRequestParameterMap(); Object value = parametersMap.get(clientId); if(value != null){ String cmd = (String)value; UIData uiData = (UIData) getParent(); if(itemsByPage!= null){ if(cmd.equals("prev")){ int computedFirst = uiData.getFirst()-itemsByPage.intValue(); if(computedFirst < 0){ computedFirst = 0; } uiData.setFirst(computedFirst); } else if(cmd.equals("next")){ int computedFirst = uiData.getFirst()+itemsByPage.intValue(); if(computedFirst >= uiData.getRowCount()){ computedFirst = uiData.getFirst(); } uiData.setFirst(computedFirst); } } } } public boolean getRendersChildren(){ return true; } public UIData getUIData(){ return (UIData) this.getParent(); } public Integer getItemsByPage(){ return this.itemsByPage; } public void setItemsByPage(Integer integer){ this.itemsByPage = integer; } public Object saveState(FacesContext context) { Object values[] = new Object[2]; values[0] = super.saveState(context); values[1] = this.itemsByPage; return values; } public void restoreState(FacesContext context, Object state) { Object values[] = (Object[]) state; super.restoreState(context, values[0]); this.itemsByPage = (Integer)values[1]; } } PK rE4'WEB-INF/classes/com/facestut/converter/PK rE4jCWEB-INF/classes/com/facestut/converter/AccountNumberConverter.class0R , - ./0 .12 , 3 45 67 89 :;<=>()VCodeLineNumberTableLocalVariableTablethis/Lcom/facestut/converter/AccountNumberConverter; getAsStringk(Ljavax/faces/context/FacesContext;Ljavax/faces/component/UIComponent;Ljava/lang/Object;)Ljava/lang/String; facesContext"Ljavax/faces/context/FacesContext; uIComponent#Ljavax/faces/component/UIComponent;objLjava/lang/Object; getAsObjectk(Ljavax/faces/context/FacesContext;Ljavax/faces/component/UIComponent;Ljava/lang/String;)Ljava/lang/Object; facesMessage&Ljavax/faces/application/FacesMessage;regexLjava/lang/String;str SourceFileAccountNumberConverter.java  ?@A BC[A-Z]{3} [0-9]{5} [0-9]{6} DE$javax/faces/application/FacesMessage FJ KLFormat incorrect MN*Format requis : [A-Z]{3} [0-9]{5} [0-9]{6} ON&javax/faces/convert/ConverterException P16 caractères attendus-com/facestut/converter/AccountNumberConverterjava/lang/Objectjavax/faces/convert/ConvertertoString()Ljava/lang/String;java/lang/Stringlength()Imatches(Ljava/lang/String;)ZSEVERITY_ERRORQSeverity InnerClasses/Ljavax/faces/application/FacesMessage$Severity; setSeverity2(Ljavax/faces/application/FacesMessage$Severity;)V setSummary(Ljava/lang/String;)V setDetail)(Ljavax/faces/application/FacesMessage;)V-javax/faces/application/FacesMessage$Severity!3*    M-* !"#$j-;:--Y:   YY:   Y:  !)07A J!R"Y#`$H! %& 4'(J %&jjj j)(*+I GH PK rE4BWEB-INF/classes/com/facestut/converter/AccountNumberConverter.java package com.facestut.converter; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; public class AccountNumberConverter implements Converter { public AccountNumberConverter() { } public String getAsString(FacesContext facesContext, UIComponent uIComponent, Object obj) { return obj.toString(); } public Object getAsObject(FacesContext facesContext, UIComponent uIComponent, String str) { if(str.length() == 16){ String regex = "[A-Z]{3} [0-9]{5} [0-9]{6}"; if(str.matches(regex)){ return str; } else { FacesMessage facesMessage = new FacesMessage(); facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR); facesMessage.setSummary("Format incorrect"); facesMessage.setDetail("Format requis : [A-Z]{3} [0-9]{5} [0-9]{6}"); throw new ConverterException(facesMessage); } } else { FacesMessage facesMessage = new FacesMessage(); facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR); facesMessage.setSummary("Format incorrect"); facesMessage.setDetail("16 caractres attendus"); throw new ConverterException(facesMessage); } } } PK rE4!WEB-INF/classes/com/facestut/mvc/PK rE4V9WEB-INF/classes/com/facestut/mvc/AbstractController.class0; !"#  $ % & ' !()*+()VCodeLineNumberTableLocalVariableTablethis%Lcom/facestut/mvc/AbstractController; addMessage9(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)VidLjava/lang/String;summarydetail facesContext"Ljavax/faces/context/FacesContext; facesMessage&Ljavax/faces/application/FacesMessage; SourceFileAbstractController.java , -.$javax/faces/application/FacesMessage /3 45 67 87 9#com/facestut/mvc/AbstractControllerjava/lang/Objectcom/facestut/mvc/Controller javax/faces/context/FacesContextgetCurrentInstance$()Ljavax/faces/context/FacesContext;SEVERITY_ERROR:Severity InnerClasses/Ljavax/faces/application/FacesMessage$Severity; setSeverity2(Ljavax/faces/application/FacesMessage$Severity;)V setSummary(Ljava/lang/String;)V setDetail;(Ljava/lang/String;Ljavax/faces/application/FacesMessage;)V-javax/faces/application/FacesMessage$Severity!   3*  +:Y:,-+ " *!>++++&2 01 PK rE4T8WEB-INF/classes/com/facestut/mvc/AbstractController.java/* * AbstractController.java * * Created on 16 octobre 2005, 09:09 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package com.facestut.mvc; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; /** * * @author kito31 */ public abstract class AbstractController implements Controller { /** Creates a new instance of AbstractController */ public AbstractController() { } public void addMessage(String id,String summary,String detail){ FacesContext facesContext = FacesContext.getCurrentInstance(); FacesMessage facesMessage = new FacesMessage(); facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR); facesMessage.setSummary(summary); facesMessage.setDetail(detail); facesContext.addMessage(id, facesMessage); } } PK rE4yQ 9WEB-INF/classes/com/facestut/mvc/BankListController.class0 ,Z[ Z +\] Z +^_ Z `a +b `c +d ef g hij ,k %l +mn Zo pq r hstu Zv w xy k z{| %Z %} %~ % zmodelLcom/facestut/mvc/Model;viewLcom/facestut/mvc/View;()VCodeLineNumberTableLocalVariableTablethis%Lcom/facestut/mvc/BankListController;getView()Lcom/facestut/mvc/View;setView(Lcom/facestut/mvc/View;)VgetModel()Lcom/facestut/mvc/Model;setModel(Lcom/facestut/mvc/Model;)VremoveSelectedCustomersbankLcom/facestut/bean/Bank;selectedObjectsLjava/util/Collection;summaryLjava/lang/String;detail addCustomercustomerLcom/facestut/bean/Customer; addMessageSeverity InnerClassesh(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljavax/faces/application/FacesMessage$Severity;)Vidseverity/Ljavax/faces/application/FacesMessage$Severity; facesContext"Ljavax/faces/context/FacesContext; facesMessage&Ljavax/faces/application/FacesMessage; SourceFileBankListController.java 23com/facestut/mvc/SimpleModel ./com/facestut/mvc/ListView 01com/facestut/bean/Bank => 9:  !Les clients ont été supprimés. S LPcom/facestut/bean/CustomerNouveau client Client ajouté.java/lang/StringBuffer( ) $javax/faces/application/FacesMessage L#com/facestut/mvc/BankListControllerjava/lang/Objectcom/facestut/mvc/Controller-javax/faces/application/FacesMessage$Severitycom/facestut/mvc/ModelsetDatas(Ljava/lang/Object;)VgetDatas()Ljava/lang/Object;com/facestut/mvc/ViewgetSelectedObjects()Ljava/util/List; getCustomersjava/util/List removeAll(Ljava/util/Collection;)ZtoString()Ljava/lang/String; SEVERITY_INFOsetName(Ljava/lang/String;)V setFornameadd(Ljava/lang/Object;)Zappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;getName javax/faces/context/FacesContextgetCurrentInstance$()Ljavax/faces/context/FacesContext; setSeverity2(Ljavax/faces/application/FacesMessage$Severity;)V setSummary setDetail;(Ljava/lang/String;Ljavax/faces/application/FacesMessage;)V!+,-./01234e+**Y*Y*Y 5*6 +789:4/*56 78;<4>*+5 67801=>4/*56 78?@4>*+5 #$678./A347* L* M+,WN,:*-5' ()"*%++,6-64778 *BC DE%FG+ HGI34X* LYM,,+,WNY ,! " #:*-5& 0 123!4,5/6L7W864X78 KBCCJK/)FGL HGLP4*$:%Y&:',(-)+*5;<=>?!@)A6H*78*QG*FG*HG*RS%TUVWXYO M%N PK rE4D'8WEB-INF/classes/com/facestut/mvc/BankListController.java package com.facestut.mvc; import com.facestut.bean.Bank; import com.facestut.bean.Customer; import java.util.Collection; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; public class BankListController implements Controller { private Model model; private View view ; public BankListController() { this.model = new SimpleModel(); this.view = new ListView(); this.model.setDatas(new Bank()); } public View getView(){ return this.view; } public void setView(View view){ this.view = view; } public Model getModel(){ return this.model; } public void setModel(Model model){ this.model = model; } public void removeSelectedCustomers(){ Bank bank = (Bank) getModel().getDatas(); Collection selectedObjects = getView().getSelectedObjects(); bank.getCustomers().removeAll(selectedObjects); String summary = "Les clients ont t supprims."; String detail = selectedObjects.toString(); addMessage(null,summary,detail,FacesMessage.SEVERITY_INFO); } public void addCustomer(){ Bank bank = (Bank) getModel().getDatas(); Customer customer = new Customer(); customer.setName("Nouveau"); customer.setForname("client"); bank.getCustomers().add(customer); String summary = "Client ajout."; String detail = "(" + customer.getName() + ")"; addMessage(null,summary,detail,FacesMessage.SEVERITY_INFO); } public void addMessage(String id,String summary,String detail,FacesMessage.Severity severity){ FacesContext facesContext = FacesContext.getCurrentInstance(); FacesMessage facesMessage = new FacesMessage(); facesMessage.setSeverity(severity); facesMessage.setSummary(summary); facesMessage.setDetail(detail); facesContext.addMessage(id, facesMessage); } } PK rE4'A1WEB-INF/classes/com/facestut/mvc/Controller.class0   getModel()Lcom/facestut/mvc/Model;getView()Lcom/facestut/mvc/View; SourceFileController.javacom/facestut/mvc/Controllerjava/lang/ObjectPK rE4*gK0WEB-INF/classes/com/facestut/mvc/Controller.java package com.facestut.mvc; import com.facestut.mvc.Model; import com.facestut.mvc.View; public interface Controller { public Model getModel(); public View getView(); } PK rE4`'77/WEB-INF/classes/com/facestut/mvc/ListView.class0K - . / 01 0234 - 05 67 8 9:;< dataTableLjavax/faces/component/UIData;checkbox'Ljavax/faces/component/UISelectBoolean;()VCodeLineNumberTableLocalVariableTablethisLcom/facestut/mvc/ListView; getDataTable ()Ljavax/faces/component/UIData; setDataTable!(Ljavax/faces/component/UIData;)V getCheckbox)()Ljavax/faces/component/UISelectBoolean; setCheckbox*(Ljavax/faces/component/UISelectBoolean;)VgetSelectedObjects()Ljava/util/List;iIsizedatasLjava/util/List;selectedObjects SourceFile ListView.java   = >? @Ajava/util/Listjava/util/ArrayList BCD EF GH IJcom/facestut/mvc/ListViewjava/lang/Objectcom/facestut/mvc/Viewjavax/faces/component/UIData getRowCount()IgetValue()Ljava/lang/Object; setRowIndex(I)V%javax/faces/component/UISelectBoolean isSelected()Zget(I)Ljava/lang/Object;add(Ljava/lang/Object;)Z! 3*  /* >*+  /* !">*+  #$N*<*MYN6+* * -,  W-& $%&'$(-)7*F'L-4.%&NF'&;()3*)+,PK rE4b+hWW.WEB-INF/classes/com/facestut/mvc/ListView.java package com.facestut.mvc; import java.util.ArrayList; import java.util.List; import javax.faces.component.UIData; import javax.faces.component.UISelectBoolean; public class ListView implements View { private UIData dataTable; private UISelectBoolean checkbox; public ListView() { } public UIData getDataTable(){ return this.dataTable; } public void setDataTable(UIData dataTable){ this.dataTable = dataTable; } public UISelectBoolean getCheckbox(){ return this.checkbox; } public void setCheckbox(UISelectBoolean checkbox){ this.checkbox = checkbox; } public List getSelectedObjects(){ int size = this.dataTable.getRowCount(); List datas = (List) this.dataTable.getValue(); List selectedObjects = new ArrayList(); for(int i=0; i < size; i++){ this.dataTable.setRowIndex(i); if(this.checkbox.isSelected()){ selectedObjects.add(datas.get(i)); } } return selectedObjects; } } PK rE4 ,WEB-INF/classes/com/facestut/mvc/Model.class0   getDatas()Ljava/lang/Object;setDatas(Ljava/lang/Object;)V SourceFile Model.javacom/facestut/mvc/Modeljava/lang/ObjectPK rE4 +WEB-INF/classes/com/facestut/mvc/Model.java package com.facestut.mvc; public interface Model { public Object getDatas(); public void setDatas(Object object); } PK rE4^LL2WEB-INF/classes/com/facestut/mvc/SimpleModel.class0  datasLjava/lang/Object;()VCodeLineNumberTableLocalVariableTablethisLcom/facestut/mvc/SimpleModel;getDatas()Ljava/lang/Object;setDatas(Ljava/lang/Object;)Vobject SourceFileSimpleModel.java  com/facestut/mvc/SimpleModeljava/lang/Objectcom/facestut/mvc/Model!  3*     /*    >*+   PK rE4Odd1WEB-INF/classes/com/facestut/mvc/SimpleModel.java package com.facestut.mvc; import java.util.ArrayList; import java.util.List; public class SimpleModel implements Model { private Object datas; public SimpleModel() { } public Object getDatas(){ return this.datas; } public void setDatas(Object object){ this.datas = object; } } PK rE4(+6+WEB-INF/classes/com/facestut/mvc/View.class0 getSelectedObjects()Ljava/util/List; SourceFile View.javacom/facestut/mvc/Viewjava/lang/ObjectPK rE4 ـ*WEB-INF/classes/com/facestut/mvc/View.java package com.facestut.mvc; import java.util.List; public interface View { public List getSelectedObjects(); } PK rE4&WEB-INF/classes/com/facestut/renderer/PK rE4I 9WEB-INF/classes/com/facestut/renderer/PagerRenderer.class0 2X YZ [\] ^_`a ^bcd Xe fg hi ^j ^klmn op 'q rstuvwxTy Yz {| }~ [ [P % ' * '()VCodeLineNumberTableLocalVariableTablethis%Lcom/facestut/renderer/PagerRenderer; encodeBeginH(Ljavax/faces/context/FacesContext;Ljavax/faces/component/UIComponent;)V facesContext"Ljavax/faces/context/FacesContext; component#Ljavax/faces/component/UIComponent;responseWriter$Ljavax/faces/context/ResponseWriter;clientIdLjava/lang/String; ExceptionsencodeChildren encodeEnduiPager Lcom/facestut/component/UIPager;uiDataLjavax/faces/component/UIData;decode computedFirstIcmd itemsByPageLjava/lang/Integer; parametersMapLjava/util/Map;valueLjava/lang/Object; SourceFilePagerRenderer.java 34  a href&javascript:document.forms[0].submit(); onclickjava/lang/StringBufferdocument.getElementById(' ').value = 'prev';return true; << ').value = 'next';return true;>>com/facestut/component/UIPager p  éléments.inputidnametypehidden   java/lang/String javax/faces/component/UIData java/lang/Integerprev next#com/facestut/renderer/PagerRendererjavax/faces/render/Rendererjava/io/IOException javax/faces/context/FacesContextgetResponseWriter&()Ljavax/faces/context/ResponseWriter;!javax/faces/component/UIComponent getClientId6(Ljavax/faces/context/FacesContext;)Ljava/lang/String;"javax/faces/context/ResponseWriter startElement8(Ljava/lang/String;Ljavax/faces/component/UIComponent;)VwriteAttribute9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)Vappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString()Ljava/lang/String;write(Ljava/lang/String;)V endElement getUIData ()Ljavax/faces/component/UIData; getRowCount()I(I)Ljava/lang/StringBuffer;getExternalContext'()Ljavax/faces/context/ExternalContext;#javax/faces/context/ExternalContextgetRequestParameterMap()Ljava/util/Map; java/util/Mapget&(Ljava/lang/Object;)Ljava/lang/Object; getParent%()Ljavax/faces/component/UIComponent; getAttributesequals(Ljava/lang/Object;)ZgetFirstintValuesetFirst(I)V!12345/*67 89:;5K+N,+:-,-- Y     --6" >DJ 74K89K<=K>?F@A ?BCDEF;5?6#7 89<=>?DEG;5Y+N,+:-,-- Y     --,::-,- Y  --,---- ! 6J&( *+,>-D.J0P1W2^3y46789:<7H89<=>?@A BCP_HIWXJKDEL;5v ,+N+"#:-$:%:,&':,()$*:[+,"-.d6  6  /20,(-.`6   -6  /6R?@ABC%D.E>FCGMHZI_JbLiMlNvOPQSW7p ZMN MN %vOC.mJK>]PQ89<=>?BCRSTUVWPK rE4m55??8WEB-INF/classes/com/facestut/renderer/PagerRenderer.java/* * PagerRenderer.java * * Created on 3 janvier 2006, 15:04 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package com.facestut.renderer; import com.facestut.component.UIPager; import java.io.IOException; import java.util.Map; import javax.faces.component.UIComponent; import javax.faces.component.UIData; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; import javax.faces.render.Renderer; public class PagerRenderer extends Renderer { public void encodeBegin(FacesContext facesContext,UIComponent component) throws IOException { ResponseWriter responseWriter = facesContext.getResponseWriter(); String clientId = component.getClientId(facesContext); responseWriter.startElement("a", component); responseWriter.writeAttribute("href","javascript:document.forms[0].submit();","href"); responseWriter.writeAttribute("onclick","document.getElementById('" + clientId +"').value = 'prev';return true;","onclick"); responseWriter.write("<<"); responseWriter.endElement("a"); } public void encodeChildren(FacesContext facesContext,UIComponent component) throws IOException { } public void encodeEnd(FacesContext facesContext,UIComponent component) throws IOException { ResponseWriter responseWriter = facesContext.getResponseWriter(); String clientId = component.getClientId(facesContext); responseWriter.startElement("a", component); responseWriter.writeAttribute("href","javascript:document.forms[0].submit();","href"); responseWriter.writeAttribute("onclick","document.getElementById('" + clientId +"').value = 'next';return true;","onclick"); responseWriter.write(">>"); responseWriter.endElement("a"); UIPager uiPager = (UIPager)component; UIData uiData = uiPager.getUIData(); responseWriter.startElement("p", component); responseWriter.write(uiData.getRowCount() + " éléments." ); responseWriter.endElement("p"); responseWriter.startElement("input", component); responseWriter.writeAttribute("id",clientId,"id"); responseWriter.writeAttribute("name",clientId,"name"); responseWriter.writeAttribute("type","hidden","type"); responseWriter.writeAttribute("value","","value"); } public void decode(FacesContext facesContext,UIComponent component){ String clientId = component.getClientId(facesContext); Map parametersMap = facesContext.getExternalContext().getRequestParameterMap(); Object value = parametersMap.get(clientId); if(value != null){ String cmd = (String)value; UIData uiData = (UIData) component.getParent(); Integer itemsByPage = (Integer)component.getAttributes().get("itemsByPage"); if(itemsByPage!= null){ if(cmd.equals("prev")){ int computedFirst = uiData.getFirst()-itemsByPage.intValue(); if(computedFirst < 0){ computedFirst = 0; } uiData.setFirst(computedFirst); } else if(cmd.equals("next")){ int computedFirst = uiData.getFirst()+itemsByPage.intValue(); if(computedFirst >= uiData.getRowCount()){ computedFirst = uiData.getFirst(); } uiData.setFirst(computedFirst); } } } } } PK rE4!WEB-INF/classes/com/facestut/tag/PK rE4}/WEB-INF/classes/com/facestut/tag/PagerTag.class0` 89: ; < = >? @A B CD EF GH IJK L MNO itemsByPageLjava/lang/Integer;()VCodeLineNumberTableLocalVariableTablethisLcom/facestut/tag/PagerTag;getRendererType()Ljava/lang/String;getComponentTypegetItemsByPage()Ljava/lang/Integer;setItemsByPage(Ljava/lang/Integer;)Vinteger setProperties&(Ljavax/faces/component/UIComponent;)V component#Ljavax/faces/component/UIComponent;doEndTag()IrowsIuiDataLjavax/faces/component/UIData;uiPager Lcom/facestut/component/UIPager; uiComponent Exceptions SourceFile PagerTag.java facestut.renderer.Pagerfacestut.component.Pager  () #$P QRS TU VW XYcom/facestut/component/UIPager ZYjavax/faces/component/UIData[ \- ]^javax/servlet/jsp/JspException3Le parent du tag pager n'est pas un htmlDataTable ! _ ,-com/facestut/tag/PagerTag!javax/faces/webapp/UIComponentTag!javax/faces/component/UIComponent getAttributes()Ljava/util/Map; java/util/Mapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; getCreated()ZgetComponentInstance%()Ljavax/faces/component/UIComponent; getParentjava/lang/IntegerintValuesetRows(I)V(Ljava/lang/String;)V!/*  !- "!-  #$/*$ %&>*+ ()'()]*+*+* W,- .0*+,-H* ?* L+ M,!,N**6- Y*. 34567 8'90:6<9>CA40./ 01423/4+H567PK rE49ukk.WEB-INF/classes/com/facestut/tag/PagerTag.java/* * PagerTag.java * * Created on 3 janvier 2006, 15:19 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */ package com.facestut.tag; import com.facestut.component.UIPager; import javax.faces.component.UIComponent; import javax.faces.component.UIData; import javax.faces.webapp.UIComponentTag; import javax.servlet.jsp.JspException; /** * * @author oschmitt */ public class PagerTag extends UIComponentTag { private Integer itemsByPage; public String getRendererType(){ return "facestut.renderer.Pager"; } public String getComponentType(){ return "facestut.component.Pager"; } public Integer getItemsByPage(){ return this.itemsByPage; } public void setItemsByPage(Integer integer){ this.itemsByPage = integer; } public void setProperties(UIComponent component){ super.setProperties(component); if(getItemsByPage() != null){ component.getAttributes().put("itemsByPage",getItemsByPage()); } } public int doEndTag() throws JspException { if(getCreated()){ UIPager uiPager = (UIPager)getComponentInstance(); UIComponent uiComponent = uiPager.getParent(); if(uiComponent instanceof UIData){ UIData uiData = (UIData)uiComponent; if(this.getItemsByPage() != null){ int rows = getItemsByPage().intValue(); uiData.setRows(rows); } } else { throw new JspException("Le parent du tag pager n'est pas un htmlDataTable !"); } } return super.doEndTag(); } } PK rE4'WEB-INF/classes/com/facestut/validator/PK rE4JCWEB-INF/classes/com/facestut/validator/AccountNumberValidator.class0S 012 3 45 467 0 8 9: ;< =>?@()VCodeLineNumberTableLocalVariableTablethis/Lcom/facestut/validator/AccountNumberValidator;validateZ(Ljavax/faces/context/FacesContext;Ljavax/faces/component/UIComponent;Ljava/lang/Object;)V facesMessage&Ljavax/faces/application/FacesMessage; facesContext"Ljavax/faces/context/FacesContext; component#Ljavax/faces/component/UIComponent;valueLjava/lang/Object; accountNumberLjava/lang/String;parts[Ljava/lang/String;customerNumberAsStringcustomerNumberJevenZ SourceFileAccountNumberValidator.java java/lang/String ABC DE FG$javax/faces/application/FacesMessage HL MN,Le numero client est pair ! (impair attendu) OP(javax/faces/validator/ValidatorException Q-com/facestut/validator/AccountNumberValidatorjava/lang/Objectjavax/faces/validator/Validatorsplit'(Ljava/lang/String;)[Ljava/lang/String;java/lang/LongvalueOf$(Ljava/lang/String;)Ljava/lang/Long; longValue()JSEVERITY_ERRORRSeverity InnerClasses/Ljavax/faces/application/FacesMessage$Severity; setSeverity2(Ljavax/faces/application/FacesMessage$Severity;)V setSummary(Ljava/lang/String;)V)(Ljavax/faces/application/FacesMessage;)V-javax/faces/application/FacesMessage$Severity!3*      ^-::2:7mi6  % Y :    Y . 6;DLS]f D ^^ ^!"^#$X%&O'(I)&?*+6(,- ./K I J PK rE4KKBWEB-INF/classes/com/facestut/validator/AccountNumberValidator.java package com.facestut.validator; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; public class AccountNumberValidator implements Validator { public AccountNumberValidator(){ } public void validate(FacesContext facesContext,UIComponent component,Object value){ String accountNumber = (String)value; String[] parts = accountNumber.split(" "); String customerNumberAsString = parts[2]; long customerNumber = Long.valueOf(customerNumberAsString).longValue(); boolean even = ((customerNumber / 2)*2) == customerNumber; if(even){ FacesMessage facesMessage = new FacesMessage(); facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR); facesMessage.setSummary("Le numero client est pair ! (impair attendu)"); throw new ValidatorException(facesMessage); } } } PK rE4wٯ++WEB-INF/faces-config.xml fr accountDatas com.facestut.bean.AccountDatas session bank com.facestut.bean.Bank session bankCtrl com.facestut.mvc.BankListController session com.facestut.AccountNumber com.facestut.converter.AccountNumberConverter com.facestut.AccountNumber com.facestut.validator.AccountNumberValidator /index.jsp HelloWorld /hello-world.jsp AccountDatas /exemple-accountdatas.jsp Account /account-form.jsp DataTable /data-table.jsp DataTableMVC /data-table-mvc.jsp DataTableMVCPager /data-table-mvc-pager.jsp Messages /messages.jsp Converters /converters.jsp Validators /validators.jsp * Index /index.jsp /account-form.jsp AccountDatasOK /success.jsp AccountDatasError /error.jsp facestut.component.Pager com.facestut.component.UIPager facestut facestut.renderer.Pager com.facestut.renderer.PagerRenderer PK rE4 WEB-INF/lib/PK rE4!WEB-INF/lib/commons-beanutils.jarPK J/ META-INF/PKJ/META-INF/MANIFEST.MFj@ s,QZT*(Kk7] oobAbuf*Jm)&xCk5ɴA{ f͌@y$*٩^3e| eX;C:%!`ּh-}_&}dv܊VECU΢I!+(<̞eW"TrH-#q~75ybuo;? ȭVgPK](PK J/org/PK J/ org/apache/PK J/org/apache/commons/PK J/org/apache/commons/beanutils/PK J/(org/apache/commons/beanutils/converters/PK J/$org/apache/commons/beanutils/locale/PK J//org/apache/commons/beanutils/locale/converters/PKJ/1org/apache/commons/beanutils/BasicDynaClass.classWWw|Y`eB<&)!,즶%M&$4T Za:; !mIYX5WRXC=s]Oaޙawm{?{u)-Nbt ᓘjh(y˼/s _KoHfߊaЈo*#'1b!۠D'^\?'Q foOΓ%E '8^/%%~E 궕sڎ3ڔhx12J l d@tH+r$W2yl >>rIr茥74S%2h6iNOcZ-u&o~vZV'nONBϻf&>A{=%>-KlE:--EZO' 5ui?Aq#eG"!rT=J5-??9b8Hsk!1y,V&qgFkb-kHck܈fcPipphL :k <\ƎMJJL/RE[eLPVhNַ%6`L`f5Em jxndyyQ$278B(V8pm5 y}p'Ѱ[-tb {(_ε8{{ovZai )6`69KV&@dz.Nc؎?2Gny\LF22q]2èx8I1a&dtQʃ5Q)00&cDվ=1e9IrC^i(\ܕ\1 .ᲄy XA Ed *д: 1=J3hbZiѮXh2};Wϸ&SeNf3;S)2#1^Ц 6V2t1eP J%uUC{;m{gʗ˒gi 2?c5em꺑˅ َ(06N* ( {Fh 2m^78((*]+*cOH2]Afg9675Juj8^BqwvWm=vǶuUzH;˰!b/kD O/T_;F!"$U,P3QSQ{ uq* _AETjul[@%4/b`;[-( ѧpWuiȦWOwEd Y OR<"-Ԫo%xJvKKP[7<]MXwKvu^>":@*y,@ښgaF(2t9UeSɯ_YHA:̑-$hyu6j Py$98Lzq$7>Z=URWHp2"}'(`"tlh$T"E1-:xo#\+Ŝn8!Vk,lv޹#{#]8nJ$P!v&R5!Q%,N^`IhKAT):hmAիTETUIV(S-;})ó*bU=LP{اG+H_k:ީsPKPKJ/,org/apache/commons/beanutils/DynaClass.classMN0K@ %,R dZVp8Q ,Z*77?>ds 9F ke8չ/ 'ZK{~ai F6/k$f`9Qİ. ʱ}t}CR}R PKHS PKJ//org/apache/commons/beanutils/DynaProperty.classWs$vV˰ıq@u5 !,V#i` O|ʼn;q'CbCmX@"&;R9UJJH8?LOw~~?xKZ ,vEpB(F1đ a >X{0xA<  Y?ēH)>xK19O,g a /xQ8By_K ^VpRD"so`w uiNĂ(mA("Gǎ=X`igbo{S"'<``hxvϡД=@IZ -ң^2ңh̙Xo#6 -ORu^ͼ9J ;֏ tvMÌDdk2b3KqkF%q1&tw I=ĝ/Mqskb!ٻ!i_YlذptlzyzQ?8$~hSu#ne_.a@%Ƿp|oq#XLB۱CW1b'*B[ƨ^Q硲5 ]ŗUqnk-W%Wq7uN4()8 f**EM%1Moqw8cv϶ôlZ{UZczPxBl #a>v̰%Oa:g4ǠޢbߥްU|wȟ\z{ʣfKvBv鶭s0646FӼVes'P_pSHSWh~3 wrHiV@?R<`^s'w#c%.IfVr;9}'֏}zLzF²I0ȇnΑ1T#Z6ڕШ+szT?ydye\>j@}(*7@d䳷} |v[}-do#g;Q­Ǹ[w8yVgHH2AV/TDՑoZY ,JHr*Zܝ= I З8D1q22PDRjf ˯BC( aF<xT…݅&3䷱+3(’S93.r7RB!ykXF 7 Y_[<3GGU]bWIzn#eY,713Xr!VR3XU =Ru6c)}WeIi7Lz5B&s=mg/=1#t:tqiJRuRn$mԚI mڊ T7͢rrMhA* RUTVQvQE\\^b55Wè؈â<(hƓb3[qBlˢW'=.Ob*$crH:rt"(Y,,9,R4X>jdЍGjwPK3PKJ/+org/apache/commons/beanutils/DynaBean.classJ1OjikVN \\KC$2|5}J:Y廗s1Nc1ѵȵeJ+:㋺u6?I_2U3\iR?ɛvBC}!,Nҹ2.ބ|U\4z]?,F*F*7$Ame";Xu%,/(e2\, 㿧#w);>"^} =y%c;8PKqPKJ/0org/apache/commons/beanutils/BasicDynaBean.classW X\00o$$$`ZMb60Cü,b7j+ֶI5*ITI4DEkkZ[۪uU/vSެL_{߹{|"Q1}wk*lKEV'qPL^ρA= |!.p.qā(1!<qb xԁo4?<&-'2JQ'*JwfI:QTrT&?T#V ~6?gb)UzPXxI/y ~ulWk|FE#ïwU{> Ĝ?3W ? _ v]s?g{o@kᰀujAۥzn#mӵ@4kv.QLkܦhvj҂.̚W.jeΖ@KENFt.-y#zH`z:omӡtF"kDNjF#Йᢖ.#D,|ICWQ^gznC4paikKX}^Sk"/@'+IDB@+IT@j d] dwOr^6-:0LޠY}v}ym3*5.RsMܕ'!9kg췔j|A9jCFPEzI;w&(3KAIN:-Yë#>}IٚYNvLKDt«a_g q9e܂n6lDC^:cFu<'X`n:و@{2ljTC6FlMksS(d\"K]<%qمm̅#ʨ߿Q %ɜhGf[ r;PyK(I.&*R] /d3&.nNͿ*$Fƒ/cCD(p)bC4tD(O!N* X`V,~yob]^.jofH̕Wg" /h01Ƌ llc9?ܜi/չ3}^>E|=z<ڰ_8e(3=z(LJ@k2 {r *#FB'[iXb!,(p=d% K2W)\zE|"qans`n~WIW%Vd;$X1? zAbpD~Mj0&_SLَVͣEϨmѩv !2ͲIP)7ID2SP)rIt(JFI N=qur(b+ov\b3I Q9*DHd3͝XpoNؾuZmW5{UrE]gNk̩ޜsjia"`H؃R- 42$=w ZSZ;:eMV0Iެ]tw&e2LL.\H1zԇn п-v*\/ g'$ePj{ J)T$&QyՃiAVKnyF0ra8FyjĵȦ4I+EdO)ٲS-RfH+_G1KStNz\sգp"D a 1N? i´a<]ȯy#nÁQďt죥cqf I~q6>u4T0nv| lt W*Mj\c&[퉙T{f6 l7¬}pl 8[QBd'䮃p q~,a4b-##R&<8{,,DF_'-7y²nrz?@C(` ! Κ#X2Hnte#Xf`ۜ}쫒f. ,XPф /'7/>}#}>i&HdA I&E&MEƻCdP_fV+M9ËBW Ղ3-\.+lp?$47ҫ N1 yb68[b"" hhhH94u~*Rĸ̥JC7FRWU6IetgG$$( Z?RMսG(lK{<ϥiWwXZ|w}G9΅ו*e&xw\p MSBd`Z佀G E+zX:Vh}Cs >F@<@`zA)dv.K.#cj2=[ꌝ0|ʢԠTNi-ȯ B[4b4/>--by Q[PK1~PKJ/1org/apache/commons/beanutils/BeanComparator.classT[O`~S00@9'Q0!!!hJ3Jvi;<?B9nex=?Ī"&t@ЉLJf▀۸Fwy1# 1ɚm4}š{}OWdC1+kfeZ՚b+esuW7R`ļn.΂8J֎!FZJإ[sswuCqݲ+RS]M&Ut䲦#/Ƣry8cF)htԛˇ5J-hoeYK~CĚjB<}ŨkSM,įT[&ܦUUmUg i$K(!DaeȊA Q1G"*aaZ2))E`Agi80K]@3 tӬ[F;dZ N t_oB8M8kff:bWQ'$ %c'ۊ>c'3OmMҵ|7ЉHFt'ao~:-!J %!  )xHbe@\%0 5)&JߌtT8DL8@1e*O8.E* qrq-j"<읁T3`D?ٱ78}v12cx7$v#`VFwRF:u*[JMoEdTdgF2ޚ52Zfjի1"cBwov`/HQIX'W G I {CH0D\ ;6OjD+U8"GauVx0DĴ#c|Y1 QcQ,V"UNنrǖ VR ;iu>ɤ*GZ^LwS"gR_J*ReeUi|$+.;KEսgC5^E\0BDfEfUL zؔr0Yu ي{FcE X1Dڗ3k) ?4KWmNkXπ{LZX؋Va,гO0|:,7 {<f*2Pp%|B!3QЀB`HUZq 36m !Z&u$V9Z;-8\+xWF"71͸Ax( EGPe]/щ=(xxCe ?=a)n q9Q5v"c*SܦHz ';eKx(X7S8ۊDv)Sp'+}Z܅Ge'Nz8<2hnAT{U<l )7GML58nrM}2\X[e%]G >O(xݦT 'eZtpZtTC#]E9qvꪫ]p^毭e_T~GG$fP,u$ifv9d;- AIVOzl5GyJf̞3c61  >PBLhUp)MZ,5#, >G|]W¥U8i LC8 ėHZ^R$IQ(;1WWku2Fv*;!|g)p4<N[\`;8JxamI .8󔻃qwPMvẚ'm'xv]D  ? FkhhjGS$Ұ{Zjc:҃O WPAޘVZ8EO%-8f[HtPM"9?6J3܎-z{n;IgܛELe!T̑|J^~,$./t tu­f< \wT:Lhgy]&å!f4vBFv1Q.f^N}O[mҴ cG{M*qڀzV\ M5/XS PU!tZ=t4deuTr:NLo;Gy_63g$mqNz C<*\ɏ ppN '9ںH#u#GH5$Xr2kȣHP&΅smp_{>ѓT#'O!IU!q&?zĉؒ>Qo߷EBw:h9ə$/?DѮa&kuuLby] FH7,\¿np lgbVUo?ZekhS#M$FQ`;M '$ /p2O3 ?>삃 '_7z's슒)`ʓ`n$y0X75UinMн zЬ zB/ x R ]-u ^pC0A64@.<ИncI=9A&^U Smتt^@L|C~ ZaB.qM08ǐa73 C$1ҮC7zvo5n"6fܰVFpZa$UView+8!P:Žn-J1C"3ǐ]pg2hliNVB0@;щdYƶ0OOCwR#(=\ B)|9,?CkKrNnwA8M5 D |EXU 4:Lr`&ZЍVdzVn|g I ($q\ZL1x\ux3EhʥnTsåkEnRqLu.rXw6@yU=. m*ں. s TdMw;068F`Dn">kM@U=yt?^pQfM09`3F~E `16f %MpQABɺ41{hŎ0Lj9&)[sfndu.NѴZ+hK1,YT!.ɖsvЦTAmIt^Y BV13ŲXnec/;j'Vȣ'ؕc`hSCj6Xf0)F;ўc5Q2Rn!':StqyfXtlrYG&**jY,QQ᭺ LCP&ȮrP<߮Ĥ f\i7qc7N XUqM?F*_Up6΅Kq-n0 < cnޔNEv,lD$H0‰s! /8TÕx ⥰A9RA+2֛1+`CX8b19pKe|x)>EXCч#R(Ufҭr,.0Aa Jx57l ^:܁qވ&l 4ng {,&<0XMvgbw*RQR/0I`z_ޒ Ҥ0RR'atePH{`P+ :z=ka^J#`421 O[kԫL{4޼ 'ͧQJtoSfr. N[LwԫZKaVZDLt)hwhwSH_n8|B2҄aVI SMqqQ3:e4v nedheE$*@*UNl 4%i<+w:rIG*wo1I}ܮNxܑr$W.T9j܇qF9Č j-A離ϦQr񳒊 ?A}K-Vf9omoFuxQuNwf&uyI}/C A}D"Bb@ EbT' R 0AS!n{rtw+~>"ǵMwe]Y]Y]٣ʞp=[@ "n4MS]1 i]X+X+`UXʬTILɔƫl%wrpJf{Q]!i-:yDs^..Fjd0vMj_F'sT"2KÍ_!!FqBQ'=nnÚKT{Iޡf ^ץY'.qO{"௢z6D190T(,5Ƌyt T\Mhk`X AQ@͢KTCA8"˂O7 8%VbX:,ǡ!֣SlL'q[q،smX*6cH ׊;q 7E܍=C܋{}_f:z؇x?Ǔb?/?'[4JFqP2ޢYJ-H*\txVKWŋRxIǤxYZ.^։J7WM5ix]-ސ7-mEqB:.ޑISx_^|(#_^ t(>SgH|.? %_q"MwG|/Z ?yl]1?~q[QH%eG*m>?6;vf_u@q"%6^SJm ԕ6)i' |} q IaXGpÓ[a=i  UB3FwYJOgpPKuH4PKJ/3org/apache/commons/beanutils/ConstructorUtils.classVWW~.;CKBBBQRiBҴЖH IkaIuw6 ֘='i5=*&GxGܙ -سgs{yk eQ1 GxFn>+w w+CŘ SCFB! ԠaJcRr")Jӌ/"+W9y+GE^>k8)tƙI\w6kT?f0ړFj=#;8v2FwBvv b-JOzܢ~;e Ǭac,ɝi$- 3ev#cSVNrc;v2G'7t)AUvD;x0VG1R>Kij-ADNJ%)<-ieXTK*,M J So~J9T.e1m9r&cM[;_ڒ{|gYk"C?x=i27OZNiZ.;Y5.ŨJ[\FS}R顼95`9SR64)V`T 9e&?a54Yf>k;3~Ha!%u3#zdMJνCRU.=MK|dg@h,6gMQ[odei/hF-de쎻u}l+B+8-؎{u<^&aB8rdt~b"t4Qcym4]T]Q/:8#f|CK:^+:%nk?zuqķT |[w$7@*Q]=ShzC|[_2iMI/|$suk0 iH9+ F#7ZJtr#R:"4A=Y5b1 fRWNê/P3i9vmxtگhgn:.==nOؖP&ҷߺ%CܡX6Y`u?Ӆ@TWJ6/GMX]AZ85SXVMXB Zk纉o2%f= N hgNʰEvY]c 9 Q$ (VqӴSJ^,8W>DH 14o]D`~Ib8K3'OӀNDWϸ; vv]~sH\ĵ~`SCU[DIDQDDz_㉶E5!MyB*&ͳsD9"}ǜ؅=VEj qO)~_W8?zC $nxNHƒ2B+Ы+. %PҕE*klu7oI\W%W."Wҁ2hR@޸2?uh׬ow)'/}DD][QuYn-mF ԊP/[?hGO1\vdEnEDW^=R}oA04? ]!il ,\GXy2#wo (IE](r=7fJgP. ﹆ڀxN,?ǝPK?R7ՃPKJ//org/apache/commons/beanutils/ConvertUtils.classZ{|?ggٝ A"XP(IB£ ]%Y U>A`6""UZk[믵;ٙ-|~1w9%wd2>-3K=mHE0zj/=28 A򶆼 !KfUċm qg ͞! !䚸 2YmK-ħшIՙAOG&%Qxؠy:qRzm0d`(ɔ /#CMeVOC! i W{‘<VA[NV|8 z![/4 Y*iF| S$1%M3 y4rHAg=źE4:PsG%ٶ.='iGB>6oZhD +|MU_ǟ~NBD/Vyؑ9LC G<-往/25j2H}j}o][ohG`?\'#>R.b ]DзJZ ] W߀weHo2I$Ujz:sSؑJZ [*Y[6"XvBeW*Z,]U,;kIOBޤdUz$ XmqYtcIr5kifqF%9]4˾[} H첞FL%Q4ʜ ŗHoKJ:?*#}""sOpZJɄI +@8ǵz3.9OQ_VA'"WhMػDʦh붅9'c*Y/0WYAhP(@bNSP %kP蔳NJuH?\F)mR#nG@z@ZE&:F(mYCW낑`[q Viy_OJ}-qkNH*>et^ `Nc !s*0

-M &?A]/aפ|V%n”-F5)glvlvxBŗ+I.a|wM !ŃlO¢U%MJ3}.) 1PUF|O!XdPRi*^_CUqqgWI^/䌤oqRm<;H@bߥ[{ RE“OUQ@/Ծjn~r?Kdէ5ɧ%L^f}9}z{֕ 1SUKx?U]x+Qu"RMT-5PEVV^OoLr韫4fxaO]Zny^15q9S?Z"FYLD띎>Ӛ}M6]I=aiAbA$@b0Ԁ=aj ì\ɰ_ ؇ }Og/{xF<81>3iGGQq("@cPl.aأ5%v+{}t``9|!` _z4 e;`J_7ڡT@<;c Pi ~dǰk \ɰ _žs;b_G*s9H&qR Єg̰`O'[`#bh!(T[`SI 01+lCS=8pXT/di//r%G\= yKmoDaZLbcFkۡF@:T 3, L{+p=`$. Ll:5$=I8C0{gQ0g,,ꀹ;7`3k X j.큅?=884a=s p> a.[R3̢q:oY}N̿n7\!l2zbw .I<2OzPiFzDڨ,*v6Гo~0F4(lPR#ዡt/  l^^Zq+M{_G{#uffѱ7(1aٌ'Ƙ@В W(Y7]Q]1슢}:.Kr3g`nFѾ-gOk26;7y\v0nո 6}7^-•5` o+mp>4΂©lKfd(Rprǭ9~#R}騕:3fHrԙI{T&fHY3NDYzfOt> #‡8VId%\,+㰊X0XzT|'8\馲*CG%1!أBE 6R]k kYgB8\G`QA\ܣcp!أ{BM<{ ~n>fuBbduBw^f ~abuPw;6C4MrtVwt9ܝ LilUBlD (c<xn.PAC,kDkݪ>s/GIRr@nl;K[:Ix~< ժ(P}5^!UC`k}/ Ͼvc^B| ymf>CKL_Ap\ rpҍg}ʍ1Ncw>ǔ=pvx!gyrG/j"_rKL|ك/cI&~)_҂k_?n'7ƷX7=x <w5ܮ{\{ow9?;?ql9ۍ_/y+k aQ'5  CCfxlȌ'<8d ,hk3j"F%b$ 0^ 1CkXI3!?Rdse!%t _)9fy<=C,!ʁX'bjg,J^kPNpӱutb."fs4폛@b={P{шьD$L|Q"} GhǃC8xM*oSω<<= } BDsR?UꠓhOTwK_ؾ, O\|l/K2y+)/1hhHg9A9S/6IV#_$D*L F(N M)R4)JI̜3B Ljһ9P!U2BU[AGq?!~J%.ů(T~&FNԜ6 1M(bdk $\j4KƏS[ !C)37eG†ެ'P L>;@EKEwVPL+UҙeUm8jT&jHPmpj 7ͪ$ SXeݏ X}V}8j /ŷʟ@EfPUP@Y<N?EvOr~ʳΔ䠽jBUj1{ʊL^y(D=]4b+DD3.Wb3zE"*:q؆O.؍u8hl"|%9(9eBoۻ6g( + uk+Ocݔd@=6E q vpnşI4h?Zy38ziu㸔#( ֫>u 9Ahu!Jg=JQmpJ:4y E[Sxgn쬚<$9 [r\Y<&?1cb XH:>DJG)Fx~!8j1ԊBIl!8S$})?Ky nDpHV{qDG^C愻l%tr|l:dT]XCX3U5Yof'l|aTz)}ܞ4;uM>U[4 >Qw{);>_6F~S|x}9*KGϿH1.6z%. w#M41c[,{.e I`xbkax7(@&K=-oc/8 [s$!Nwq/Ko>Nq9Wn˭үNSa~PA=0ՍTC*|K+{b!NJeglk4<`ϣ kg<ߜj0GZ 6M4E-T;vBEh0iLchc2r3DD 8PG BUt<)X,b+u`ֹ)sSڏMNjN꣭$fiO>Ɔ8tಠE%>Ute,E/RWH86v'Ͽx:mF;e%J4e SJ%)A,UPEJ-jW6ƭijU0y;)86.gAQ@ 6t9fFf2 J+x%CgBJ9QLmNY;|Rn@;v:iUm?G7Ñdi,N<.˳1#Qݷ9%-q3"tIdϦ!}N$}^:PKJWPKJ/9org/apache/commons/beanutils/ConvertingWrapDynaBean.classSkO@= ۥV}VETDP b0[ݒigyI I?x cޙ9ss;~ Lc1n& 60i o"BE=(qD/ T 8 Ǟ0dnFBʹFۖ!PbюgS&UQ$@¨qz;u'[,Ԭ餃# (KMLJ&guU+WgԼN<;B!BC#%\F7&gKi-rغ!r#IUEUXD  ; .:gj:-g$EwlRJh~aA"#Իx=(rDM/!| {=$vۍ\RGamb*ϦLN'&뒽gðcbf|8N2lWH@pv\P6&5_(*u֚By(#t)Hg,֚rz0#9#giiX \o?bTUq t՜Dn#07U'|P亿y!Zoݫz87=rnk(|󫀾D6c褶F)Q+ cMEhV_C%M.nUKp]t8zoK}xeT>F\8 lۆie  Gk䧾Ms Փ:5s[EmnU}x5+hXEI}r#^ȭ ~C4-|G 7@MlP}( R>"ްo )54NClȿde:I{7h#Yя4,*@|F_֊ ۇZֆ0b?rr:`CDɟE %^VYJ,G^LQBLvN U'E ;zv]thpcE ' /SPK>$w&3PKJ/Dorg/apache/commons/beanutils/converters/AbstractArrayConverter.classUSU]dCHˇC $jmBAZn Yٍ>ZkOڗhAim cqQG?݄:8;{s9c‡1 1&98Gń 1)Ĕh(!qA|^7hoo ьqI1d.cFƬ 3j^w&U=sUc6>)AK3fm[㮖OaofhN'> i$4InMILji⻤F[Ll\ͩ l4xFt4<n$SSNeKzp$v@+^S-< h@i OhXw&*85-)\N]qK&\B[JՎ#p6L//b4כK'7Vi"ŭS%P*߸ɰF~ -o@Ѹ2t\S w>&P-Jy%V `^*Ci \U-b61/g!-F̋y:as&,V. " Aq!_A }\,YV"&Y:H{Ŧr)͡["T}H\:7fńzʲ'e72<\qta4D], WXh)2>>d5fRI_@͹(bѕPMmyK(,[}GP0 A>/i+D2G!Jrn3߂Z~&n(ntG&:d7}f@cCZ.,:.Ѳ js!%x/Ë8KEXvEĮ5Hӫ^MD|) D]R%5MGWXEp$ݱ`wh`W;Ja ehtZ_H}-ijTueXC3BZ(ɐTZEx}χwFGl)8~rDO)Qn>n, 'pgpcSGYDoC|xX'%d ^bQ#6'zKl,$qέ@>CCę׵$OU0PKfPKJ/Aorg/apache/commons/beanutils/converters/BigDecimalConverter.classTMOQ=vJʇ_( K]\@j0F:h=xFQi:BYL4Ix dxNBbQ*uѰPDdwX 6>S ͅ>4EBLeCG,K!u3 zs=SёlJ xN/ЋDdES|%23.:=Ixy5+~PKTAPKJ/Aorg/apache/commons/beanutils/converters/BigIntegerConverter.classTNQ]R#୊b))^CkML|`0Fs:=C3̴ߠy0QO&~qB*miz.__X8p.aVq(Sqr*t$x7U #m~- ?{v0d&6S"`jZ:/ZA5wMobz 7 [yN؞^ܮQn2wm_; dT)Fm!3rlHiwzQmC|ӱ_kN5S;EiŘA iC毆`U'Jx5a[(ɲK c*+mi ]dK5\ q/f}iNs9p;r:OF`,0Џ%"ͦ9JqiwT,I)(> KCzvЇgTzIp-,D)%t2:IWIH,*TN@2jȕKgQ9AEW(#=MCEOBfbM]hЧFG%1E+9Q@?^+Ko(-+xHNb$qg8G2$;Axy5+f~PK,nPKJ/Corg/apache/commons/beanutils/converters/BooleanArrayConverter.classV[lUt; (JY,"R BX-EV)7i;uv&@E@ŐD"-`H0>_l^6doyEx9<)Va8TlxT%Fmqó*U4nHԵz=͝}Fkr.[/X^n|v Ċfitm(C[C?yΎ3mԮ-c{ p)qa,P2K @bT`ެv^JL9aYL =+V[삓566f"א" c}K!%E̠՞`odn蒴/jX, 95hd3 ~fAH҈%46 ."ݺ2Y,qȳ<  İG^ j؇XhO(t7 ^puA2q ^5㛑cx~u td,h,k'o;F.+Y P={:Sǰ1U9{uWkM?ܱ[wX;5LJ/&ee('ŕ GKͶj=B9B(B4]!,XKNT`&A')0,Ń>})7*Q.RO"eO9-)ŗGR~< /'*~')v3[k+!~ *"ΠYZӗ.*+qN'"KWDaBZ}k.ZߚNkoUњJ(mNWVN/Ag;0{f / 쏈D$}_FR9=٥]ss9%amMǽ2/+?v %涣`[x ~ݸ_,BCq qM^:_PQ71o{,o` Fބ 5|8S>mgy~0U*\5Q_,n)8o |'*׸-nGJvH_z+@!'Sq;U*W1D "ߐD#aj:ϷV}\|Ul,bYT_,g\PK:?t PKJ/>org/apache/commons/beanutils/converters/BooleanConverter.classUmoU~t)VQh.* RDai\b4Nwә:3~5/jJTBJXH e|.JsϹyyι}w{p6ЍxQ-{5اa2@ 8Utnh8㈎:&uL)TckxKCAeꄳSfᢵl˭N]pB U 5qA!Ȭ@"`X]5D޼ZMe"\ϯ% s%oqsܜjh;5C#PoiQzxc* طFޱ`Spuim $,oMG^4 [A8QI.*b_S%^64 < #ik (`I-۷Y q]N4YUؘr( Lc'㉚dr^L͘3ʾQسwz'?af8 lvU* 8Vq=_H/v3L 6Plpa֭3 8؆ ~(bj2ǩp} !FED[}6tq}tcl»{ >vb49<] bEil %Aq 75(IUa. 7‰ kLVɐ7_-Vy3y]2@[C2S܂^̚ݷ]Y' X$Ys5h75{[l[--@֞EV%Q}S߁sRh _E\F(s=D![#> o]+~BҍֽH*ZF~ֱmdIH_' XԸPKhEx~PKJ/@org/apache/commons/beanutils/converters/ByteArrayConverter.classU]Se~6ٰ!lҚZHU[DRDcPA_l ;uzc  W8KiGq<}v~ZpS1G[WVsQrB eܠd 0=,Ov/e944aTA$gO KAhr@AM7>  } Rf^pƍEKSքr_6ެ*ML(Yڹwa䋞i M,xq{9cHZF~&9YG֢OihyU+qJVWpr3ʠenOjP j>]luSccgdpY(g7ϴ2e,1pK)Zfu좓M:ZѦ0u׋]VQ)66 )$:t HjxS[8C4,&e9qAE3Ȳ)Q_3Yo;@Sx[g|Rk2QE6_)PP[0W)NF=I{W2>oW`r9=X-N1oPyE Mq99#߉(ܬqu1MxN=]{'!WМ} *X2m.@UbQƌb$q79jqPi\g'|a|1,&;\b78/aYV~l AMIǨ'8"FO)z4k 3k Ε*8YQb kћ[U%)9>KPKH=xPKJ/;org/apache/commons/beanutils/converters/ByteConverter.classS[OA]ض"xEQ,""C$;MJ†\wyƘ1J,yӌM; 2m'5QXDo(gO} 2#z׺S=[LJ6cd|ζ^7 nWE}KzYp$vҭe9A'1_.iW2$"F+5)) xN)4"Z!JT ߍ5QZW 'Cs4 Y"AjbŻBP Ho Su IY sMkZF*J--cW}{&u-rXtX/:\EŐ{[Þ[IZE,w{%:k`7pO.f\&5иڹmx+XWkqo1ьw(uBЏ{)9O3"}_=\·a^c~ƚׁ =l R^7^i(CdE(v[>s?V?:=OD ž'<=7PK/PKJ/@org/apache/commons/beanutils/converters/CharacterConverter.classSmOA~=zPKյPKJ/<org/apache/commons/beanutils/converters/ClassConverter.classU]sU~NfR@ĊiTD)(a l6'bߠ‘qP/Bڑ;^u_/p|MҌ:9x99_&Ck^pAFs2¸((.coM cxKF?.Jɸbk1-]l';2<(!A &T#wN$V}삞Zw]]t/鶫Nb*8dڥѤԢ%L-?,Y7)Qg9hӚYjضKRpe'ـ^*6q\[˺Ѣ㍝sbv]ë]%Ԣu;5h  Yô|;#u_59*Ƌ7@VElz%5^(vSF_Ǹ{ =H ZxN~(G2t,G9E#5).K0cl ΰ=&G 4<Έð=.b/>2PkD}$sc s2}|Eu&㷸a7ٯ`Yְ~ƺlE-Dw[Mi?  'NB4F Oi^ad}W+UEp./7[h^\%${ >Y蹿PK{-x9PKJ/=org/apache/commons/beanutils/converters/DoubleConverter.classSNQ]RFr(R " 'DL3AZ_D'13SPbizΞ}k~фuhDR,=2R1!!-OF1q¢!qEUd\gPr|IMo^3}ΐ^5ԬeNv(Cwy& c`j ɞyiqڰΜ5lcSV advU-+\5r,,3L<:w 5v tyKω Md\t`c G"oQ#sJh2tCg=ǰeۗ%3(a =S ghL:BR^ j dEphFk;}#?#UKMDR&%S$ji]:3 %ƘsY{י|Ћq Zz$%#C )=2zĠ)'nNčk2˸!cA]2y繕3k|kW;5CGgL}16qhkAp[?mLn=cs6OE6QgJ<3@  ,HΕHx {/:Jb<&IKD""Q=_Dž/QRS?3yhv -īM}GU@A,7ĶQSRۨ-B-SD.Q`S8Q>@ωjEAH-!=ncPP2_" ÂAl+A:PK%1PKJ/Aorg/apache/commons/beanutils/converters/FloatArrayConverter.classU]Se~6dCMTBJZՆH үMX`M6NQ/:~cRb_x_Pw7M8x9y9o0hlj&<z7Esb|xq Q Dž{X~1H3^b*xe#hNPњM ! ^d}]$f=MZbYm}(#dֲgZY+U,Z%'׵R5LҼnLKsm[2pϘiZJ3^p3uJ*;m$(5t 7 d6+eOaof&7sm4#u/|F0(^v $Â| )HoGt̪}Dm@a*Kū8-ȿ^찌z=5guzu:e`L}MCxXqbioxgHCTŤ<<.(Xbv6 ! }5?︶V8)_a[tX[öE讧R@8zevڦaR׺MK6`{9hE$tQllv}-( Y4x9_!$d)Wp7W@krRR" V\)G9xMhx~;x r:*\Eh+GEBZ?)V|*I\Qa{~E"uD8) ?#r&ִ%4߂B= KQEK.>!E,!Cxh=vHf˿L 9c8vVNRn!K uD 6.!21a&|}11{ mXs5wh{}|LV3d)=acy|A07D=X ΋Xbe__f2[]:R33 u$7NEHItYpc4%SZE'+N֪:ѡc:u]R̦ )$:#t HjxS[8E"4&egqNy3Ȳ߭)8d\1VX'Nob~ꆗ5#<_'$x4׏龳 n!)E{Lڔ"D Y~[~;Cȉji~uf0YTy$8v`ם\BK6v+`X@w`22fH_b_ݯ-;F,XE ?c d:ۿu&B̴$׎ԓʟaUv #4Whys_܇ Ε*8RQb «[U%)9>K蹿PK PKJ/>org/apache/commons/beanutils/converters/IntegerConverter.classS[OA]RVB(R(pIH!$Pfw oPDh"蓉c<@ٙ3g;wΙW=WkP:e$#BBJF("HG!Wd\qCMey]Px-SkE{HA3N)QA -v(>vjԴ99+:_aH7H `XFFbFzC=smz=m7M KL{~O14%:+ -WmkSH >zB !D5XH0_4ͭXm!0Y.>z %} -0̳.Qj!LQqkPPK}2T7PKJ/@org/apache/commons/beanutils/converters/LongArrayConverter.classU]Se~dÆd TB M* "5*kXfnmSGgԋXTXehrq^MS>2ž9<ﳻØ=xrۼ *?(bTT\b܎q /!╍=eXSu}f }i`dJY洝ӭ 1bTYKLJ/Y#yল^(yR7pT. 8~eW#=)K/̤FsF땵hSƴ^ *l;%VoDt[ Cs[<r3[5Ԙ瘅Yc,~aà G.猢g2]%G4-DrV:bcv'MЮ :4ƫG"`UT!-9s4$k*4u HxCÛ8Cj4,&e9 qAE ȱ٭ 9z +Ɖ@_[TXY¦52YC6p)/k)NF=I7W2>oW`r2FAjtذBݺUPPar ;J ~nZ#RE\)\Sn! DRJ/£xx-~xr*2RFd+GyB> )W|*Љd.~gT}]"\FuD9 ?#z~;K߂"] KQwEC{m5ޣEEsBitDoG7k_gBYugaW vI-doc@+Q!UȄB?*sfLv~^B&9\M#v.xuF}^|ʿg|_+k 5|!p"e(V_!t׼nDBpzRlʎ"Ba$$-O0sr\ǫJl3jx5~E_U:q3PK3êPKJ/;org/apache/commons/beanutils/converters/LongConverter.classS[OA]ض"xEQ,"" R1Aq[6[>&BIDL %Ƙ3gfw9sf@ch(Cd=1HHCj 2E怈dPd\qUƐk 2_ OijhfNYYw!Vp1Ԏ3 ҄L؆nzZجf,h.pڲsײ\ZW717rQӖ[DIaC0]1ah3zR%I<3lWRq>8n欂zP}>PЊ hRЌ^v{_hgJY}E˂v)!g7b:MQZJ{s9Q4'Jon`JUϐX1@M#яzBVH0Shl]g4'`IPRB؏}4D-Km"}"~@4 P|"iș@DlTEE G$b鉴DDutqwpBH2jwS Q*Q)"y1mDˈ6PJz˨%Lb T?/_W8DI![B-| JV ZBa]Bu׸KEuPK^{,PKJ/Aorg/apache/commons/beanutils/converters/ShortArrayConverter.classU]Se~6ٰI6Vm(Rh j0үMX`M6NQ/:~cRb_x_Pw723^q{s>?8(q"敿Up2(xF쟍bE7 )*8qr;ފ ^j(*ZӺ)!02h wHB?'AOB{(J1ۓZޤ3m43ن׌;g8N-{6œ,XŢUry]+U\th)-趫N2;gmkWFSڂ4lr"?ܔ(Fg4╰.x#ʈ9N l3 ٽR&mjuTékYQ;,~3·A] GG/kX%4I4- f>Ybӆ zoh=Uq}*^+U˨C^3V^S ƌO WU<dUL59$ ! M:SqS"ࢊK`yV$l$ Za@|nan;j5FHE_(O{胉˚MӤ|1îuݛ2Eo`7{9jE$tYllv}-( Y7y9_!$d)Wq7W@{|R\"V\)9v28"6hx~{h r:*\Eh+S3d9Ds~Moq 1{|E༄efYef u7p 700;2_PO2TQ(^Id΃s?W x]=^&@ EnuSs\'PK] bVPKJ/<org/apache/commons/beanutils/converters/ShortConverter.classS]OP~V(p|~(1(!̀+ ])Xڥ@/ jya4K$2oi F1y>>? pHGD2^ R"DKA b D\qC0[P͂]S7TTUNvM׼qS5vv° o!Y`2ag K+gug^͚~6[S1:2ΪU-+n[UK;ֆx*x5iMT:0Ry#m;~ ZiD3l=bo8~yϰ-ު]p4}6V!2pJF2Z06`P[N_K5cЗy@tX#ccM To1 EX2tC>1U]$;!~CK^s>؛-RZ 2-uE34GiܢVhܑ,%"Ia Rɇvx4.ѧ:DωEAH-!=n_P2_:  օ˾qWFuPK1PKJ/>org/apache/commons/beanutils/converters/SqlDateConverter.classS[OA-l)\*e[ "Ƅ>5hf vn+ F/Dh"e8[HicLӹ9eΙ9$ЅPqEc ƑN q<$ `Bs t 5+ʭ`y7BQ,C≅0=bhcڦ!_e;kΛX ]+`s nrהZ0on̍MN؞^ܮQĮ /oY GrL7Na>c71yl6ڪau QMǖZv*!F9 RяQы>ɿ"{DC]tRWn5I{+mYTVq7T-%haXCO=e5퍠q w tpuVEMy&_#a.0B~"/4G)N1Ig4k`CD!@iA;cF^"z!p5$0Rd&"UHN":`HT+y;z859"$<0EAw ڲ/Ebc>:p2Hi^+t5I!oq;2| jcs8Apdr-2PK:}؛PKJ/>org/apache/commons/beanutils/converters/SqlTimeConverter.classS[OA-l)@xCX bLSm0.,-⋿A`4LD&LQ314˙]_~l=0rbPl r &e0@W0`A]fܪ daoqT?ǐyN2t2mӿL,3L[,*ex [5pk:rc]S8kiy ӋVɬ9JeZ}J'J0Ә`qϛkiwۘJ6[ [aS w QMǖ*:5LyT^GaꯥPi͘WjI{'mZTVqT\ 6%ha\CO=ǢZǸ;Dku:*CGX(1:Ok$1LЏBTD(ũW4hwmLc{h=DUV}ls"LDO0 tDYEx`U${jhBN 2EJގ/Nt] ~'Dw) Ɏ}t~@AGn7/]lΛG!DݞF+ѿD7^kCo)=Ň9;38iA,^BPPKtPKJ/Corg/apache/commons/beanutils/converters/SqlTimestampConverter.classS[OAE\( >5塤Fc4e%ݲoP<'nijt.gwsf N H'äMN% `Zg f1kbW,`Hex70Ed4iMhz[vۓ5m]E+`s nk}-7MVq7t^Ʀ TrlO/ nW|(bW ֪YK0Lva1c➷1iհT wv QMǖ;wMyѶHPу^}H1(!#9Ƽ0uSIKt-.2k mK<Í CosI&f}״7&|'1 '[sAV8 pc<ϔ1GR7!B?}k&8H{g4h`GD#@hE+A'#"zap5$Rd&"SGfJD"C!QMDIN䈐RI~Dt "{_0.♽'$>s/ל7}C")$k4Zω_8]|Co陾vHNtP%!t99z^?n0,^ I%ک%G'38EO3YƤSYa8~g A(Rs[Z= Z^뷰7_[@y F1BKŻ`i |>B>Fpq|Fϫ8/pPu^k䗌o/Pm/bmcHD":\ơ=/8^pdG݈wj\</_PKFDn"q WeTdTūEkPKiPKJ/4org/apache/commons/beanutils/converters/package.htmlUAn0E9$piPMbTX̨'T }pr C/Ɩh~G=S14(n#VF/9KiBXvzH'hpo"K}#]z%\]k +Xy 4>tK+zKhJPJ>wyP>3nyboyPK|PKJ/0org/apache/commons/beanutils/WrapDynaClass.classWs][J5F&ĎؒcB  ,p4"/j)IA6)mӇÆzbgJg2ӯ2ǤӦ]KkY3>w^\qJIQz2(%(#PlL\~BdeA|A%|)/h)+~U /rK2 |yo_ 2MLo*w] \\^ O^ ?djHN-ssj" AE2 iG…,[@yGd#jq&aC'=gMU9>nznKyu6VdP΅\mFqm'8]1a^a\bG)Ɗ\NϪli\_Rfԝ2Q^(q3 ~w׌ {*&O勥Bl=s+L9߼wQX!Nqx9X~DtFÚg=!p!ZPuK!Ox]GG&P>6%]Ð X|>> H|Ylkoy4nnöaރۗ^G^gw?_#7(7LֆbVS~˶VH2HuܛDl-YodǸ^?}')c`(l;Y'XXY/FNLE\d{:>7>bOz ࢀGDx <&<.b'&hA|HE6#XIq . S"Vr9">-3"1O uB5/qڗy|Ux zs}Ms:}C7z7/pos] {/~?c/沈+RY3 ; =dNt#rbL&q]DY˚j*;ɇlnrae|Fr~93FD2L6e(&*#s:ퟧDJdZZKJ֒-O) _asZpy9jUS{C$c#dkmLՔxv|X1)bzBN S !%+Úxs@BR18)[ju7`$AI[v.騼1PNߊHh.-5l1e-AzZCoͺ0US1dS7(bRC'/S4DU3 =B"dEAJФ%xa1"b#)34yV*q2~S ȂS,aȦʅMA{μ*;ꋲ J><* wX碹eV997 ͥ㺹Oj#}„5>cLk2\0,CV"YŴW C7$#M?oF$}vcǢ&{%܏} gSC:ŞbKHpi?+p|PMm$f7S['-zz .o/D>>Kb+!ilU<ġTOCMT籌HsM5E 2)yUx~Dz\A3 J؎6h+/#+t Raosq+rLPTZX%Ǒpǜo6a5y A\ H(q_4ɍ܍!wtD>ZUո O=ιtR&f(0ƹ . #ᰵx/IVGZUk褛Jlq *X%c-5w_/-,@J]cE2;"H潄:owv|7 F|94NzYwo=y+ϡ: 滄;q䰡088cu=ߊa 5~6;vC b{4AШ%,S6~d`@Ec\>y"ߤ0NGE_0xj 4"AKvfqð]82n6*ڇ^B%T|齁p96ˣ~hSoHY3io/ixiT1$A3;@;;c {B [`ֈVTivykȗKB//'O;;(L#2G';rwSӖÎf=g.IH)W(@ѥwfA)T@*T,!Og1irU98GZ /|F@_PK3PKJ/.org/apache/commons/beanutils/MethodUtils.classX xuݕfv5F6X2zE`㗈-y-a*C H#ݕB 6mC4NӨr#1ؘݦi'iڤ is̮VE& i>{3wr @]DkFP | `Rܝx$E$w#. 9a^0ۉPxsRkص+v=Zn;Ѹx423pd-SWC[4gقHR;Y+ڙ(D:9AIEYWIyQvt8gжt0p].oMTRË=6J)"+<'I`oERg֥/;""=Ǩ[rhx^1 Pñi4xU0ND6GD.ͪ\MB" .F8;4hx""ea;UnjZ Xx?T ,n!,HԲor~Wnp<H&B[CũvE( VVMV ZTDxDzXTLsdE%TjPE4עKXty>.ơUUkJkmLJ7]>A3 fFX4ݞ3|[+}pDr5Fҕa)-oRqp jB2umWݜ{.tK.K7ٽM{iչx$”b{5R5Hw>עX{iR `#ԚE"_QPQjE#TQW*f)&vGgPQb>^2~7z,#ЫOø-C >>/ZAEyqѨ)cŔsZsh<(> ̭K! ThcJ].*^cw~Ux !Xky+IF-wxZHt٫q?>4suXpTU!@ y_cA٨~&]"Z2Zt\cdfpII:8ާ(kZ~ҝ8B4-x<蕝NGUnpoڽ[Bci~ȘbvǦqԞ A\tեM2׼hTpc,sXS8z~6|\݈f|FcT Gv.S7ډ-Ʒ.nśv\Pw_E(vS\CMkU/ET? )>a5H_P1eQ 0>zC}ΫmQUFTzPU%cZ=TکQR:A?)<GnMЇU'^Zp>O=_o3􈗾gh{9}/J1oA~fR1UX­.x,,_qb٬KpeiΨq|xvq9`Q ێcK.Ӯ1fkM.&1a-..fl0L`nv1]ӥ1#[0՗TGQ*5a=ID3p: REu69/[gMcM^nIu(8k44j'F_r6Xg}|>C#qoquީu9_Gœ"X$bfWRf~7se80pr0oW&mz֗G_;+CG0XtTet ֭Ys-h-\U|aw}ypZ3UO+׶z]2>4&劫 ˛*( %P5juQG!3%p PKo;qPKJ/0org/apache/commons/beanutils/PropertyUtils.classZ \u>50"(G* * Xb 2٥YkE[VVvmڮm?}F=||>y9<˓ "֐,*ZldQ';9Q6(.㠮`nbxĉnzDEgQHo#hXhL+FCԃLbTzPH!N.ΰSx8MghX`8p9 (q(v`e(FcĤG968:Fn&)Op'Ahة 4AӨNEN|hJ{h~8,њ-s4W\(:Dw'dbE6ri FQyy]!P)Z"&\,>TEv۩NKPN̮^&\\g[)V%V1rx\&vZcysh"MWuܾzGnF8L'8r;/8(RyzNƄ%3 2 ޳zJu2BL'PZ뭩&K+=Bmw )WUyJ뼢=Tk55Vhc޺6LhBojv{Gb n,wWA8Y{u^_`yOm Db7M5cث=͑R]vpf}f)KC|!/ai=ߏ9Y'n+zy.lym_0oe;xI^V|ZouW [ "֐:OweyƸ'đS˛yfd1??v10 QAp2B-ɢy+.D6͛Eb:cba<:2GN}fȜ䯭rY,Ų:tqIp/ZSWgm}\hSvpT/c7e3+t IϩbQz>έuN/b Kb4SǙsYNLvFԅ3BpF870^]t3M~#a:<+qQih^^PDC^N)ݻ+LKRu@pG<.1<۷sv񭠺ό'`3ɈHbnyyЄҨ36iAu [rMaF2%ު'h]pxbG[%W𒥄~a_ X9*ܾRO .fv_R_ZilN 2<c<m41lzZ=6{v[5"ƔZr{9}|qpR=1H;ёM8इ洑4rAͶq/x0h!1-:OV.Ic~AFIH MX릗OW)>c8Ϻ"%H''W q.mǝmevWd1)^1.()&d Ug&Oc#ph@紩 `xusfw"wN:,GO?pBy'@G6t#=/Kvztٺ}>r ZiwD:'Jn:Ew0o/q̉OzIF|{?~/h&mI: 'EUTEKxStz3KO7 kP(),+S,O01&=595c@$DJ O@9Ɣ)]Së<4i^hFVm=naќ8,S9UrM}]LLm3ٗQt*`6 fg#pw-:1b-v|jAADi9 xX=NFC#L /K!C5|ɬ3ȁ{FmEisgL3+kEaM1k1$D0qޣkn[1nV$@RAC[-0Ʌ4!bU c(uתdK,6| Gފi`BGmFRȖ;%5҇HIȋfuvv%d#kq%'7ܿ*Wܿ.rF[w27o5}hm Nq;a 2]v>mn w.~xp^!6s#>B|+l=Ac&:mn}:t{ 6cI؇΄"9s35!:[IIx.#h}uh@ UTd/bɔq` xw5Lmx؇x!獝gKf }+*bLmo$I8K,/@GPڋ^;+[q 3<CR & Y-`H oBMNRg$R SW nE101z" zJZJD}q'h@A$uJGt!?R&~aԅFPw:i$ QAE(9rhr$ F`>;n-0 |X2cÌ0m7[;0gCN'uFpa3ZxG!17++ӸʴZ1ݒȨ8>W'4bu:WV5{ tG{\h7;5ʓ(gqdJLfN?[#4r5Z 3v!_i`1cIT *P@Ub gŘKUX@('?,˸fإ (, ),6, k9z_[2x4ge<꽘yM43_9[`OJ~0ScӚф 1MEIMV 4``Ds ]qP%l VA0oeVob}m VӝNwc݋Et*~,p=[h)Of"f eIHR`,R6g:>=Och&0-s ]-haֵC%g fix+>8(lFvhV30 0F)O#KIޏ칉{0D }l-AkB3Ny&h+37О;rb&LlB>;#ɚ>)%4&{1Eq]LPBof /3(^cP΀8F ̦PJK>F:[lx?=9/8}xk=xN:E$IYPҹR'*:*gϢ[DIPq6Óz[w`h==z_١L:q<e0m]N5t9\I%X)Ԑ(nA-e VD4aHc4%RK(<aRBN0p>+0d*pBr@F7~vQ!mFarEM(Jqt%dm3J8`UZc 5^K$h0eSGV u9::z!"$KYnfbJeȗ{N[xI9슥jdW`ar 30RSOnA85>0iêD̋ ΋SBk.9NfWL˺-A7*^3z/frgbwz+i_!- 4viiTeQf6: M6*6w{;r͎عh!끼"s%1+ [38۲70H Ҥ7oa6ΕL=>B1+ Vb)6H&s-}QK쒾bE;|)xݟ&hJ~d&e+kr,17%Uv&Sol083TVKpgGHg59!>YW?GAapMΐ!A-OF<rH#]>CȒK+ y6sH^"ȋp\B+WaًG%xB) jxY+rW-y%ޗW+y5)r|iZ:%R4LFRS|͐oy-:V5dX_`E -Cq- ]v uMPyqz$]EƤ0aApu3 uN^=?oZyTi -D/8] QZ: HE,"d1;配=B] .!@W~T,i˯b8K~}Wr|r\>Xsy9MR@씆!F7}[/>ka+_Ӿgjϙm&H"*8 {F*)Y?*?fN2O!O0HRT&4AӏCV)HD{"xDJ1EnX (C7 |JOr MM6f63,*COʖnb/t PR(VC_9Õa GrrB2Ӕ, e<(HDxjf^s}-CP nBu,K!Y;)VE9 a̓<[!z2 J\!a__ kXSC7*7br++prU)_R+e;~bzniDM褅&|A l('Xʽ5 Kfiҟ'0KEʑbjG@јƠBWOp,C,ߛĨC`[U:RIԡJRLODaUUjYXU kUYUju<\ĪRY9j1JX*|ܠ&u6RYlܹ%Lj^O`^*SQjY5Qgm~} z}OjlJk>+yV#ќ+=rdZU H̶%BeW[j;*tڬ,u"EU2izX-S88R>jU_gB]YYYsFk^UQ^ˠوZzܬނ;[q 1vW7gvϩ[qToz>Q a|>o.JSwP U[}*Ճ:kDEVG^"+ZE )V}0Jj7Yf!7ۈ"~ ZڬUl"Vg-sZ* T|EGa"sRb z%KCGjª9_-a@5*X\hrʋjmz CmǛgZO8Pb7˵ %k[hod\^- ٦D5LmC PN֢9E#Ytj1Ad*^hgNZ_\ ܫpY|tt6H'-#]`#l:.kG=NhͲ6&c3<il?9lZǎ#!R7 !/aA{a2 !ڛFLe}>Av7ja9j_k<}8h?gIگasnM-͔qHk"K D沶W돻J80D vCY.Ȣk WCW;ʭمC<^U0udPK_HBPKJ/Porg/apache/commons/beanutils/locale/converters/SqlTimestampLocaleConverter.classrTn'H(Ա@1I O!if *򡶜`n0tzpϰ֖J&e^_y j&aG gMr؇98.K&FpD , d9Mǻ *NZwӔzUYW]궻bwדiZ5nҪVkJkNZz.; F[qB8Gm.Ť}7lX^-Z9N\x.?ϸvsZ:NsM @J3xp}{J!W޳{b=YFg|.$;UQQj_g^%i۝.ypzK&$2뾍敍l{+tu2M04p<>G|3!7^Or8ơȡġBr]+c