sepa-direct-debit-20131216/0000755000175000017500000000000012253612246013357 5ustar cybcybsepa-direct-debit-20131216/SEPASDD.php0000644000175000017500000007600012253612125015152 0ustar cybcybvalidateConfig($config); if($config_validator){ $this->config = $config; }else{ throw new Exception("Invalid config file: ".$config_validator); } //Prepare the document $this->prepareDocument(); $this->createGroupHeader(); }//__construct /** * Build the main document node and set xml namespaces. */ private function prepareDocument(){ //Create the XML Instance $this->xml = new DOMDocument("1.0","UTF-8"); //Create the document node $documentNode = $this->xml->createElement("Document"); //set the namespace $documentAttributeXMLNS = $this->xml->createAttribute("xmlns"); $documentAttributeXMLNS->value = "urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"; $documentNode->appendChild($documentAttributeXMLNS); //set the namespace url $documentAttributeXMLNSXSI = $this->xml->createAttribute("xmlns:xsi"); $documentAttributeXMLNSXSI->value = "http://www.w3.org/2001/XMLSchema-intance"; $documentNode->appendChild($documentAttributeXMLNSXSI); //create the Direct Debit node $CstmrDrctDbtInitnNode = $this->xml->createElement("CstmrDrctDbtInitn"); $documentNode->appendChild($CstmrDrctDbtInitnNode); //append the document node to the XML Instance $this->xml->appendChild($documentNode); }//prepareDocument /** * Function to create the GroupHeader (GrpHdr) in the CstmrDrctDbtInit Node */ private function createGroupHeader(){ //Retrieve the CstmrDrctDbtInitn node $CstmrDrctDbtInitnNode = $this->getCstmrDrctDbtInitnNode(); //Create the required nodes $GrpHdrNode = $this->xml->createElement("GrpHdr"); $MsgIdNode = $this->xml->createElement("MsgId"); $CreDtTmNode = $this->xml->createElement("CreDtTm"); $NbOfTxsNode = $this->xml->createElement("NbOfTxs"); $CtrlSumNode = $this->xml->createElement("CtrlSum"); $InitgPtyNode = $this->xml->createElement("InitgPty"); $NmNode = $this->xml->createElement("Nm"); //Set the values for the nodes $MsgIdNode->nodeValue = $this->makeMsgId(); $CreDtTmNode->nodeValue = date("c"); $NmNode->nodeValue = htmlentities($this->config['name'],ENT_QUOTES); //Append the nodes $InitgPtyNode->appendChild($NmNode); $GrpHdrNode->appendChild($MsgIdNode); $GrpHdrNode->appendChild($CreDtTmNode); $GrpHdrNode->appendChild($NbOfTxsNode); $GrpHdrNode->appendChild($CtrlSumNode); $GrpHdrNode->appendChild($InitgPtyNode); //Append the header to its parent $CstmrDrctDbtInitnNode->appendChild($GrpHdrNode); }//createGroupHeader /** * Public function to add payments * @param the payment to be added in the form of an array * @throws Exception if payment array is invalid. */ public function addPayment($payment){ //First validate the payment array $validationResult = $this->validatePayment($payment); if($validationResult !== true){ throw new Exception("Invalid Payment, error with: ".$validationResult); } //Get the CstmrDrctDbtInitnNode $CstmrDrctDbtInitnNode = $this->getCstmrDrctDbtInitnNode(); //If there is a batch, the batch will create this information. if($this->config['batch'] == false){ $PmtInfNode = $this->xml->createElement("PmtInf"); $PmtInfIdNode = $this->xml->createElement("PmtInfId"); $PmtMtdNode = $this->xml->createElement("PmtMtd"); $BtchBookgNode = $this->xml->createElement("BtchBookg"); $NbOfTxsNode = $this->xml->createElement("NbOfTxs"); $CtrlSumNode = $this->xml->createElement("CtrlSum"); $PmtTpInfNode = $this->xml->createElement("PmtTpInf"); $SvcLvlNode = $this->xml->createElement("SvcLvl"); $Cd_SvcLvl_Node = $this->xml->createElement("Cd"); $LclInstrmNode = $this->xml->createElement("LclInstrm"); $Cd_LclInstrm_Node = $this->xml->createElement("Cd"); $SeqTpNode = $this->xml->createElement("SeqTp"); $ReqdColltnDtNode = $this->xml->createElement("ReqdColltnDt"); $CdtrNode = $this->xml->createElement("Cdtr"); $Nm_Cdtr_Node = $this->xml->createElement("Nm"); $CdtrAcctNode = $this->xml->createElement("CdtrAcct"); $Id_CdtrAcct_Node = $this->xml->createElement("Id"); $IBAN_CdtrAcct_Node = $this->xml->createElement("IBAN"); $CdtrAgtNode = $this->xml->createElement("CdtrAgt"); $FinInstnId_CdtrAgt_Node= $this->xml->createElement("FinInstnId"); $BIC_CdtrAgt_Node = $this->xml->createElement("BIC"); $ChrgBrNode = $this->xml->createElement("ChrgBr"); $CdtrSchmeIdNode = $this->xml->createElement("CdtrSchmeId"); $Nm_CdtrSchmeId_Node = $this->xml->createElement("Nm"); $Id_CdtrSchmeId_Node = $this->xml->createElement("Id"); $PrvtIdNode = $this->xml->createElement("PrvtId"); $OthrNode = $this->xml->createElement("Othr"); $Id_Othr_Node = $this->xml->createElement("Id"); $SchmeNmNode = $this->xml->createElement("SchmeNm"); $PrtryNode = $this->xml->createElement("Prtry"); $PmtInfIdNode->nodeValue = $this->makeId(); $PmtMtdNode->nodeValue = "DD"; //Direct Debit $BtchBookgNode->nodeValue = "false"; $NbOfTxsNode->nodeValue = "1"; $CtrlSumNode->nodeValue = $this->intToDecimal($payment['amount']); $Cd_SvcLvl_Node->nodeValue = "SEPA"; $Cd_LclInstrm_Node->nodeValue = "CORE"; $SeqTpNode->nodeValue = $payment['type']; //Define a check for: FRST RCUR OOFF FNAL $ReqdColltnDtNode->nodeValue = $payment['collection_date']; $Nm_Cdtr_Node->nodeValue = htmlentities($this->config['name'], ENT_QUOTES); $IBAN_CdtrAcct_Node->nodeValue = $this->config['IBAN']; $BIC_CdtrAgt_Node->nodeValue = $this->config['BIC']; $ChrgBrNode->nodeValue = "SLEV"; $Nm_CdtrSchmeId_Node->nodeValue = htmlentities($this->config['name'], ENT_QUOTES); $Id_Othr_Node->nodeValue = $this->config['creditor_id']; $PrtryNode->nodeValue = "SEPA"; }else{ //Get the batch node for this kind of payment to add the DrctDbtTxInf node. $batch = $this->getBatch($payment['type'],$payment['collection_date']); } //Create the payment node. $DrctDbtTxInfNode = $this->xml->createElement("DrctDbtTxInf"); $PmtIdNode = $this->xml->createElement("PmtId"); $EndToEndIdNode = $this->xml->createElement("EndToEndId"); $InstdAmtNode = $this->xml->createElement("InstdAmt"); $DrctDbtTxNode = $this->xml->createElement("DrctDbtTx"); $MndtRltdInfNode = $this->xml->createElement("MndtRltdInf"); $MndtIdNode = $this->xml->createElement("MndtId"); $DtOfSgntrNode = $this->xml->createElement("DtOfSgntr"); $DbtrAgtNode = $this->xml->createElement("DbtrAgt"); $FinInstnId_DbtrAgt_Node= $this->xml->createElement("FinInstnId"); $BIC_DbtrAgt_Node = $this->xml->createElement("BIC"); $DbtrNode = $this->xml->createElement("Dbtr"); $Nm_Dbtr_Node = $this->xml->createElement("Nm"); $DbtrAcctNode = $this->xml->createElement("DbtrAcct"); $Id_DbtrAcct_Node = $this->xml->createElement("Id"); $IBAN_DbtrAcct_Node = $this->xml->createElement("IBAN"); $RmtInfNode = $this->xml->createElement("RmtInf"); $UstrdNode = $this->xml->createElement("Ustrd"); //Set the payment node information $InstdAmtNode->setAttribute("Ccy",$this->config['currency']); $InstdAmtNode->nodeValue = $this->intToDecimal($payment['amount']); $MndtIdNode->nodeValue = $payment['mandate_id']; $DtOfSgntrNode->nodeValue = $payment['mandate_date']; $BIC_DbtrAgt_Node->nodeValue = $payment['BIC']; $Nm_Dbtr_Node->nodeValue = htmlentities($payment['name'], ENT_QUOTES); $IBAN_DbtrAcct_Node->nodeValue = $payment['IBAN']; $UstrdNode->nodeValue = htmlentities($payment['description'], ENT_QUOTES); $EndToEndIdNode->nodeValue = $this->makeId(); //Fold the nodes, if batch is enabled, some of this will be done by the batch. if($this->config['batch'] == false){ $PmtInfNode->appendChild($PmtInfIdNode); $PmtInfNode->appendChild($PmtMtdNode); $PmtInfNode->appendChild($BtchBookgNode); $PmtInfNode->appendChild($NbOfTxsNode); $PmtInfNode->appendChild($CtrlSumNode); $SvcLvlNode->appendChild($Cd_SvcLvl_Node); $PmtTpInfNode->appendChild($SvcLvlNode); $LclInstrmNode->appendChild($Cd_LclInstrm_Node); $PmtTpInfNode->appendChild($LclInstrmNode); $PmtTpInfNode->appendChild($SeqTpNode); $PmtInfNode->appendChild($PmtTpInfNode); $PmtInfNode->appendChild($ReqdColltnDtNode); $CdtrNode->appendChild($Nm_Cdtr_Node); $PmtInfNode->appendChild($CdtrNode); $Id_CdtrAcct_Node->appendChild($IBAN_CdtrAcct_Node); $CdtrAcctNode->appendChild($Id_CdtrAcct_Node); $PmtInfNode->appendChild($CdtrAcctNode); $FinInstnId_CdtrAgt_Node->appendChild($BIC_CdtrAgt_Node); $CdtrAgtNode->appendChild($FinInstnId_CdtrAgt_Node); $PmtInfNode->appendChild($CdtrAgtNode); $PmtInfNode->appendChild($ChrgBrNode); $CdtrSchmeIdNode->appendChild($Nm_CdtrSchmeId_Node); $OthrNode->appendChild($Id_Othr_Node); $SchmeNmNode->appendChild($PrtryNode); $OthrNode->appendChild($SchmeNmNode); $PrvtIdNode->appendChild($OthrNode); $Id_CdtrSchmeId_Node->appendChild($PrvtIdNode); $CdtrSchmeIdNode->appendChild($Id_CdtrSchmeId_Node); $PmtInfNode->appendChild($CdtrSchmeIdNode); } $PmtIdNode->appendChild($EndToEndIdNode); $DrctDbtTxInfNode->appendChild($PmtIdNode); $DrctDbtTxInfNode->appendChild($InstdAmtNode); $MndtRltdInfNode->appendChild($MndtIdNode); $MndtRltdInfNode->appendChild($DtOfSgntrNode); $DrctDbtTxNode->appendChild($MndtRltdInfNode); $DrctDbtTxInfNode->appendChild($DrctDbtTxNode); $FinInstnId_DbtrAgt_Node->appendChild($BIC_DbtrAgt_Node); $DbtrAgtNode->appendChild($FinInstnId_DbtrAgt_Node); $DrctDbtTxInfNode->appendChild($DbtrAgtNode); $DbtrNode->appendChild($Nm_Dbtr_Node); $DrctDbtTxInfNode->appendChild($DbtrNode); $Id_DbtrAcct_Node->appendChild($IBAN_DbtrAcct_Node); $DbtrAcctNode->appendChild($Id_DbtrAcct_Node); $DrctDbtTxInfNode->appendChild($DbtrAcctNode); $RmtInfNode->appendChild($UstrdNode); $DrctDbtTxInfNode->appendChild($RmtInfNode); $PmtIdNode->appendChild($EndToEndIdNode); if($this->config['batch'] == false){ //Add to the document $PmtInfNode->appendChild($DrctDbtTxInfNode); $CstmrDrctDbtInitnNode->appendChild($PmtInfNode); }else{ //Update the batch metrics $batch['ctrlSum']->nodeValue += $payment['amount']; $batch['nbOfTxs']->nodeValue++; //Add to the batch $batch['node']->appendChild($DrctDbtTxInfNode); } }//addPayment /** * Function to finalize and save the document after all payments are added. * @return The XML to be echoed or saved to file. */ public function save(){ $this->finalize(); $result = $this->xml->saveXML(); return $result; }//save /** * Function to validate xml against the pain.008.001.02 schema definition. * @param $xml The xml, as a string, to validate agianst the schema. */ public function validate($xml){ $domdoc = new DOMDocument(); $domdoc->loadXML($xml); return $domdoc->schemaValidate("pain.008.001.02.xsd"); }//validate /** * Function to add a custom node to the document. * @param $parent_XPATH A valid XPATH expression defining the parent of the new node * @param $name The name of the new node * @param $value The value of the new node (Optional, default "") * @param $attr Key => Value array defining the attributes (Optional, default none) */ public function addCustomNode($parent_XPATH, $name, $value = "", $attr = array() ){ $xpath = new DOMXPath($this->xml); $parent = $xpath->query($parent_XPATH); if ( $parent == false || $parent->length == 0 ) { throw new Exception("Invalid XPATH expression, or no results found: ".$parent_XPATH); } $newnode = $this->xml->createElement($name); if ( $value != "" ) { $newnode->nodeValue = $value; } if ( !empty($attr) ) { foreach($attr as $attr_name => $attr_value){ $newnode->setAttribute($attr_name, $attr_value); } } $parent->item(0)->appendChild($newnode); }//addCustomNode /** * Function to finalize the document, completes the header with metadata, and processes batches. */ private function finalize(){ if ( !empty( $this->batchArray ) ) { $CstmrDrctDbtInitnNode = $this->getCstmrDrctDbtInitnNode(); foreach ( $this->batchArray as $batch ){ $batch['ctrlSum']->nodeValue = $this->intToDecimal($batch['ctrlSum']->nodeValue); $CstmrDrctDbtInitnNode->appendChild($batch['node']); } } $trxCount = $this->xml->getElementsByTagName("DrctDbtTxInf"); $trxCount = $trxCount->length; $trxAmounts = $this->xml->getElementsByTagName("InstdAmt"); $trxAmountArray = array(); foreach ( $trxAmounts as $amount ){ $trxAmountArray[] = $amount->nodeValue; } $trxAmount = $this->calcTotalAmount($trxAmountArray); $xpath = new DOMXPath($this->xml); $NbOfTxs_XPATH = "//Document/CstmrDrctDbtInitn/GrpHdr/NbOfTxs"; $CtrlSum_XPATH = "//Document/CstmrDrctDbtInitn/GrpHdr/CtrlSum"; $NbOfTxsNode = $xpath->query($NbOfTxs_XPATH)->item(0); $CtrlSumNode = $xpath->query($CtrlSum_XPATH)->item(0); $NbOfTxsNode->nodeValue = $trxCount; $CtrlSumNode->nodeValue = $trxAmount; }//finalize /** * Check the config file for required fields and validity. * NOTE: A function entry in this field will NOT be evaluated if the field is not present in the * config array. If this is necessary, please include it in the $required array as well. * @param $config the config to check. * @return TRUE if valid, error string if invalid. */ private function validateConfig($config){ $required = array("name", "IBAN", "BIC", "batch", "creditor_id", "currency"); $functions = array("IBAN" => "validateIBAN", "BIC" => "validateBIC"); foreach ( $required as $requirement ) { //Check if the config has the required parameter if ( array_key_exists($requirement,$config) ) { //It exists, check if not empty if ( empty($config[$requirement]) ){ return $requirement." is empty."; } }else{ return $requirement." does not exist."; } } foreach ( $functions as $target => $function ){ //Check if it is even there in the config if ( array_key_exists($target,$config) ) { //Perform the RegEx $function_result = call_user_func("SEPASDD::".$function,$config[$target]); if ( $function_result ){ continue; }else{ return $target." does not validate."; } } } return true; }//checkConfig /** * Check a payment for validity * @param $payment The payment array * @return TRUE if valid, error string if invalid. */ private function validatePayment($payment){ $required = array("name", "IBAN", "BIC", "amount", "type", "collection_date", "mandate_id", "mandate_date", "description"); $functions = array("IBAN" => "validateIBAN", "BIC" => "validateBIC", "amount" => "validateAmount", "collection_date" => "validateDate", "mandate_date" => "validateDate", "type" => "validateDDType"); foreach ( $required as $requirement ) { //Check if the config has the required parameter if ( array_key_exists($requirement,$payment) ) { //It exists, check if not empty if ( empty($payment[$requirement]) ){ return $requirement." is empty."; } }else{ return $requirement." does not exist."; } } foreach ( $functions as $target => $function ){ //Check if it is even there in the config if ( array_key_exists($target,$payment) ) { //Perform the RegEx $function_result = call_user_func("SEPASDD::".$function,$payment[$target]); if ( $function_result ){ continue; }else{ return $target." does not validate."; } } } return true; }//validatePayment /** * Validate an IBAN Number. * @param $IBAN the IBAN number to check. * @return BOOLEAN TRUE if valid, FALSE if invalid. */ public static function validateIBAN($IBAN){ $result = preg_match("/[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}/",$IBAN); if ( $result > 0 && $result !== false){ return true; }else{ return false; } }//validateIBAN /** * Validate a BIC number.Payment Information * @param $BIC the BIC number to check. * @return TRUE if valid, FALSE if invalid. */ public static function validateBIC($BIC){ $result = preg_match("([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)",$BIC); if ( $result > 0 && $result !== false){ return true; }else{ return false; } }//validateBIC /** * Function to validate a ISO date. * @param $date The date to validate. * @return True if valid, error string if invalid. */ public static function validateDate($date){ $result = DateTime::createFromFormat("Y-m-d",$date); if($result === false){ return false; }else{ return $date." is not a valid ISO Date"; } }//checkDate /** * Function to validate the Direct Debit Transaction types * @param Typecode * @return True if valid, error string if invalid. */ public static function validateDDType($type){ $types = array("FRST", "RCUR", "FNAL", "OOFF"); if(in_array($type,$types)){ return true; }else{ return $type." is not a valid Sepa Direct Debit Transaction Type."; } }//validateDDType /** * Function to validate an amount, to check that amount is in cents. * @param $amount The amount to validate. * @return TRUE if valid, FALSE if invalid. */ public static function validateAmount($amount){ return ctype_digit($amount); }//validateAmount /** * Function to convert an amount in cents to a decimal (with point). * @param $int The amount as decimal string * @return The decimal */ private function intToDecimal($int){ $before = substr($int, 0, -2); $after = substr($int, -2); return $before.".".$after; }//intToDecimal /** * Function to convert an amount in decimal to cents (without point). * @param $decimal The amount as decimal * @return The amount as integer string */ private function decimalToInt($decimal){ return str_replace(".","",$decimal); }//decimalToInt /** * Function to calculate the sum of the amounts, given as decimals in an array. * @param $array The array with decimals * @return The decimal sum of the array */ private function calcTotalAmount($array){ $ints = array(); $sum = 0; foreach($array as $decimal){ $ints[] = $this->decimalToInt($decimal); } $sum = array_sum($ints); $sum = $this->intToDecimal($sum); return $sum; }//calcTotalAmount /** * Create a random Message Id f$PmtInfNodeor the header, prefixed with a timestamp. * @return the Message Id. */ private function makeMsgId(){ $random = mt_rand(); $random = md5($random); $random = substr($random,0,12); $timestamp = date("dmYsi"); return $timestamp."_".$random; }//makeMsgId /** * Create a random id, combined with the name (truncated at 22 chars). * @return the Id. */ private function makeId(){ $random = mt_rand(); $random = md5($random); $random = substr($random,0,12); $name = $this->config['name']; $length = strlen($name); if($length > 22){ $name = substr($name,0,22); } return $name."_".$random; }//makeId /** * Function to get the CstmrDrctDbtInitnNode from the current document. * @return The CstmrDrctDbtInitn DOMNode. * @throws Exception when the node does noet exist or there are more then one. */ private function getCstmrDrctDbtInitnNode(){ $CstmrDrctDbtInitnNodeList = $this->xml->getElementsByTagName("CstmrDrctDbtInitn"); if ( $CstmrDrctDbtInitnNodeList->length != 1 ) { throw new Exception("Error retrieving node from document: No or Multiple CstmrDrctDbtInitn"); } return $CstmrDrctDbtInitnNodeList->item(0); }//getCstmrDrctDbtInitnNode /** * Function to create a batch (PmtInf with BtchBookg set true) element. * @param $type The DirectDebit type for this batch. * @param $date The required collection date. */ private function getBatch($type,$date){ //If the batch for this type and date already exists, return it. if($this->validateDDType($type) && $this->validateDate($date) && array_key_exists($type."::".$date,$this->batchArray) ){ return $this->batchArray[$type."::".$date]; } //Create the PmtInf element and its subelements $PmtInfNode = $this->xml->createElement("PmtInf"); $PmtInfIdNode = $this->xml->createElement("PmtInfId"); $PmtMtdNode = $this->xml->createElement("PmtMtd"); $BtchBookgNode = $this->xml->createElement("BtchBookg"); $NbOfTxsNode = $this->xml->createElement("NbOfTxs"); $CtrlSumNode = $this->xml->createElement("CtrlSum"); $PmtTpInfNode = $this->xml->createElement("PmtTpInf"); $SvcLvlNode = $this->xml->createElement("SvcLvl"); $Cd_SvcLvl_Node = $this->xml->createElement("Cd"); $LclInstrmNode = $this->xml->createElement("LclInstrm"); $Cd_LclInstrm_Node = $this->xml->createElement("Cd"); $SeqTpNode = $this->xml->createElement("SeqTp"); $ReqdColltnDtNode = $this->xml->createElement("ReqdColltnDt"); $CdtrNode = $this->xml->createElement("Cdtr"); $Nm_Cdtr_Node = $this->xml->createElement("Nm"); $CdtrAcctNode = $this->xml->createElement("CdtrAcct"); $Id_CdtrAcct_Node = $this->xml->createElement("Id"); $IBAN_CdtrAcct_Node = $this->xml->createElement("IBAN"); $CdtrAgtNode = $this->xml->createElement("CdtrAgt"); $FinInstnId_CdtrAgt_Node= $this->xml->createElement("FinInstnId"); $BIC_CdtrAgt_Node = $this->xml->createElement("BIC"); $ChrgBrNode = $this->xml->createElement("ChrgBr"); $CdtrSchmeIdNode = $this->xml->createElement("CdtrSchmeId"); $Nm_CdtrSchmeId_Node = $this->xml->createElement("Nm"); $Id_CdtrSchmeId_Node = $this->xml->createElement("Id"); $PrvtIdNode = $this->xml->createElement("PrvtId"); $OthrNode = $this->xml->createElement("Othr"); $Id_Othr_Node = $this->xml->createElement("Id"); $SchmeNmNode = $this->xml->createElement("SchmeNm"); $PrtryNode = $this->xml->createElement("Prtry"); //Fill in the blanks $PmtInfIdNode->nodeValue = $this->makeId(); $PmtMtdNode->nodeValue = "DD"; //Direct Debit $BtchBookgNode->nodeValue = "true"; $CtrlSumNode->nodeValue = "0"; $Cd_SvcLvl_Node->nodeValue = "SEPA"; $Cd_LclInstrm_Node->nodeValue = "CORE"; $SeqTpNode->nodeValue = $type; //Define a check for: FRST RCUR OOFF FNAL $ReqdColltnDtNode->nodeValue = $date; $Nm_Cdtr_Node->nodeValue = htmlentities($this->config['name'], ENT_QUOTES); $IBAN_CdtrAcct_Node->nodeValue = $this->config['IBAN']; $BIC_CdtrAgt_Node->nodeValue = $this->config['BIC']; $ChrgBrNode->nodeValue = "SLEV"; $Nm_CdtrSchmeId_Node->nodeValue = htmlentities($this->config['name'], ENT_QUOTES); $Id_Othr_Node->nodeValue = $this->config['creditor_id']; $PrtryNode->nodeValue = "SEPA"; //Fold the batch information $PmtInfNode->appendChild($PmtInfIdNode); $PmtInfNode->appendChild($PmtMtdNode); $PmtInfNode->appendChild($BtchBookgNode); $PmtInfNode->appendChild($NbOfTxsNode); $PmtInfNode->appendChild($CtrlSumNode); $SvcLvlNode->appendChild($Cd_SvcLvl_Node); $PmtTpInfNode->appendChild($SvcLvlNode); $LclInstrmNode->appendChild($Cd_LclInstrm_Node); $PmtTpInfNode->appendChild($LclInstrmNode); $PmtTpInfNode->appendChild($SeqTpNode); $PmtInfNode->appendChild($PmtTpInfNode); $PmtInfNode->appendChild($ReqdColltnDtNode); $CdtrNode->appendChild($Nm_Cdtr_Node); $PmtInfNode->appendChild($CdtrNode); $Id_CdtrAcct_Node->appendChild($IBAN_CdtrAcct_Node); $CdtrAcctNode->appendChild($Id_CdtrAcct_Node); $PmtInfNode->appendChild($CdtrAcctNode); $FinInstnId_CdtrAgt_Node->appendChild($BIC_CdtrAgt_Node); $CdtrAgtNode->appendChild($FinInstnId_CdtrAgt_Node); $PmtInfNode->appendChild($CdtrAgtNode); $PmtInfNode->appendChild($ChrgBrNode); $CdtrSchmeIdNode->appendChild($Nm_CdtrSchmeId_Node); $OthrNode->appendChild($Id_Othr_Node); $SchmeNmNode->appendChild($PrtryNode); $OthrNode->appendChild($SchmeNmNode); $PrvtIdNode->appendChild($OthrNode); $Id_CdtrSchmeId_Node->appendChild($PrvtIdNode); $CdtrSchmeIdNode->appendChild($Id_CdtrSchmeId_Node); $PmtInfNode->appendChild($CdtrSchmeIdNode); //Add it to the batchArray. $this->batchArray[$type."::".$date]['node'] = $PmtInfNode; $this->batchArray[$type."::".$date]['ctrlSum'] = $CtrlSumNode; $this->batchArray[$type."::".$date]['nbOfTxs'] = $NbOfTxsNode; //Return the batch array for this type and date. return $this->batchArray[$type."::".$date]; }//getBatch } ?> sepa-direct-debit-20131216/.git/0000755000175000017500000000000012253612203014211 5ustar cybcybsepa-direct-debit-20131216/.git/config0000644000175000017500000000042012253612125015400 0ustar cybcyb[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://github.com/congressus/sepa-direct-debit fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master sepa-direct-debit-20131216/.git/objects/0000755000175000017500000000000012253612125015645 5ustar cybcybsepa-direct-debit-20131216/.git/objects/39/0000755000175000017500000000000012253612125016100 5ustar cybcybsepa-direct-debit-20131216/.git/objects/39/65db23194a54579eb1a25c119006d871bda7630000444000175000017500000000024412253612125023002 0ustar cybcybx+)JMU043b040031QrutuMafՌpg}nȓ]vA8d0~ئQǼ[;߷_QUZ[ VeSwzSWkX 13O *SέrK^3V[j7"2@~sepa-direct-debit-20131216/.git/objects/01/0000755000175000017500000000000012253612125016065 5ustar cybcybsepa-direct-debit-20131216/.git/objects/01/628f4f20fe14d35a42a99cbd59f20ed575e3bd0000444000175000017500000000017312253612125023365 0ustar cybcybxM 0@a9$,DOc[ e߷8ѩWU ^%<"9I9f$ ӣlk(Rl}rn, VlZˮaӴ{V8sepa-direct-debit-20131216/.git/objects/1b/0000755000175000017500000000000012253612125016147 5ustar cybcybsepa-direct-debit-20131216/.git/objects/1b/b8a64ad84dd3d45b67a705456813692e0243480000444000175000017500000000023412253612125023006 0ustar cybcybxI 1E] Te;P=H  =~۶Nq!KLh aP gʧAڇ`Lғ̍z;XxO?t)莈5Y,}/KfOj}Fsepa-direct-debit-20131216/.git/objects/e3/0000755000175000017500000000000012253612125016154 5ustar cybcybsepa-direct-debit-20131216/.git/objects/e3/f94c745170d5fc5bac46b862a50366bd96d5540000444000175000017500000000023712253612125023241 0ustar cybcybxA @ =+.HM"gӨEەx^8Ԉ V@1 7ńLXT</T2P4[-{jq'd~5ejjqH*YIjg_`v`>uͫ}22=Y$Y L\dL18xU˳~WvT5ߵCoPEu1I]O꯽  e_^]ջh.WޫXLu{U~ ܭyoӁ: /U?_ur= ]A{1<]oeY򠞫~7u]9Jk D^f}~ 342'8:uQfVZM`'TFjNW`lAq.6j9CAzzjGvg'l^e4"7k#Rhn5N8M ge̶l S0bGQg]jжJsq6Ud(]ɿ9ih^Gc$"YWNӣAO5ZdQ\}|A:ZiJffn E!9ir3A֋A)5פQ$xu51_Èv2Y-NV?;>~$OG'W%Lzt|'=yGwI /2{R-wA jaĶִQ8 0A@'Tr˓fÇG=ZdwM(iYr8AF"ed> _`{ϲN6;7yo>۝RkM9 yk8Lvnp#A(*CĤ3;Pp}|9mKC 䎅81 1Z4}7EG} n˫]o젫mN>Y j7ÏMgzGmO]*0 To.ڿIPgfs`dkqHvx8M_ 5%?BzR]'BJ6j#P]gS (U&}Bݓwܯ;(%-Q$%G!C" ?:ZhdCwj/ ] ,*J ~Bq Țq,C8b&ꔺJ 4z4W._\Bۘ|g R>a'zt4Z! )?_I05wE!{Q 햕# 0T(OB)+Et0l"KY2DP]ŝq_~,RJ S@6x?:? +iZUjx>R)yE5G)RX/e  ꧿ۘZ\ $a <{U"$5=Z.cQ:hFR8z)3ONU$N[% w˶pwE&srNXɔ)vkk R:>SӾNUGQ00Ká)3jP:WFBSTW<l5LAK;S@S s JDcD6_20G&&iI8_$^͓V0LX^dדqA@J\lQWms3o e!"Lu?"L_ӑ`uΙ)4ǁ07m2u:QL͡Xy!C|ǥzw>.#rʰx!JƭYU0"'_+.鵎ӫ8OqTU$` "-/ow󸺨D`5~kNt*90*.eu X*!Qz-iV\,{TqՑ=璟J"!ETibJ}Y!,. )Vbʹu$+_`A-6jC 3`,BRG죻{C:6fx(N뮋k!c0s#JWFKF'Y)t&m[2'auf1VGXeEE T`Lfla+ :@Γ)m\-fIh,Uȿ1MOKf5-EB*4u>ؚ+Amg(Q #*6 󳯑F,"kf#`]WWvy(ABVDGº*1@qls%ac34XQ6󟑥d#31h~5P$> f)#~h`0s}OFhDmJL S7wZbf 7{3O}h|b9;1hAﺘ0zz M~5oL,_.X{E<[Fgk_[31q#¼ABaJ\T,HE'iKَAZbqQGԔ\"qfju"q*&QǵzV|}A$sEsĈL#Pߵ+J܈b1!I2=/.lWtyr$+K" qFDcG(7-*'vnbsvtHM?u^d%/:G77"({di>y' ԮDK~}6RGFseXp谿D'Clo's|9x*ӌ {֙{4DZ>F;X`Z:hh5Mmu 4!δVv|%lnsP+ƴgvb챆iOCqHG'$i+6؋#3X5tHi=4:|1]$c#l5qa,¶H G8bg`+:L.E+Uc^x™X_Gl"EpxT[vڳt;I4Ŧ/ Ɛۣp -j<`%!c 8BAS#>3Es!YYJiwXjR`y;̖;w}\&w+I:|:BD{L5h~MeY>;"\}99Y;(<t7J|!M WX\U;q}VI ^ t̡P2~%&ӄ6ٚ<嚝b¾Jx~ivx b"{67c<5qh cwZ4E@ݎb849[NS:JQn ͔ $$Oei%',i;mZ|hse3iؙ:TDx&DpP0ҽߑ JTB !`D(=dN٣=q-u>kÞ<=.?/d>pb`(/{c5\S˪nY{ŸUEP 7 )YlDH$)R(+M%FNа 1 ZӇ#nFA[1! f+ {(PR\/4ԓށ+[ Ύjtfpi!AOJaq9 A{$]=FH¬" !bB"@G`OMo)q 8g]c;nݬ5.4ʮIoe*''f 5{ <שB}6ؙ^Y[ke{mW-%|&]ztQH)Q$A.q1a7iZ9J6=y?dcu|m-}ՍnڡvB^CT5Bk0rԭRhUU`lSY ̖:Ct?omG|\M- \gm=t~ҁY-(WM_k2FP^^^w,Z 0؄pWD[TErmVP]~̤֚oÿݧg֏?0-w&6(179^`Z&Mw7]5PHiyΫ2 q)r'oBJiB5mn3)jN6`M5M z:~l55ϻO0> Hؽ6 v3quuҀBG_-oi_$upYj:z=ғ?Y5j?0 KPխpuG;HbF#7E2ղk%d&~#OŪ!n]%Kp(LaV$-_!mV3\L=e2ֳIN!V|X6I Pyu~`R3еE<ϻ؛X8^ 4.pqt Ukek/Q[ t=Mpii*z*d0s>͠)r,ymeY>$9i^h؂]Wv-Դ06.OWI1_̜5x31^Upe? *u* ԌM+v*iS L^aQ 6d.Rn S`)nm@?;-I\۵3՚9 0zڋ k-^0f5_t@x'-8۠  #/s#^huQ$; c-2N4b  J[0DP}~O~ g,rx9$E,Ponr%DNxe[xSxoUkzTF0ҝ ;{sq*2Ia|>+CgP5&J"xU&h$n^_jq(*{ǨQ7m^@B 7TO< F ƥuɐ v~,_scl ּL^/` +fy<sh(Ɵst>yg9{LجRS^Shb ؽ+ [͞7K7uG."rNp1vM^4dK[,05I[MWA#;^IbT_nRgO9!ԅbȃ f @ 薉}PvoS} Q3Ew*LPhAW#m`F)[O6z wx4@oזF]y--cw>KТbp[nX ъ{:w'].t-Bya^g~]Yz֨iW4Cv@]_ZϺ;d8@2r+ S!?[-^b,#M˂J,L?-laHh#U%? ':B\EfYr}DQuc!G,1@5й@T)Wta 6vEaa^A/4RZ`y }+9i>8n\)`vlJ[\xg|dc@,3\׬y_ibE<|7t󻒓M:QWnsJ>fݩ|ef WmTln\76^%x/^LC#ܽr)wr?t=v4..@yt/&zXtgJN̺–p>QjnŹdS;51ߩSp`EuWPϒNoQ{y{c!F9?CxC#H-ՖV2I/҆1{AJeWZ^ sn 6X졲Sˠte6䮑(&0XV/T `z ~ӻ DZS{Ntc_{5SG<]v\[BxTQ >(SifW(˙#eʐ%`7sH.r^وh1 Ҍʍ7CطF\\Q|C 'o(0[(\d,N9H]qJQraA ቗#Ӻ(6q`ȗ%_ump zxeR\aDҖ$B $%K~h5-=-+.(-#;;mfn/ 4bhd=N~[}윥>߽{߽oXEsepa-direct-debit-20131216/.git/objects/48/0000755000175000017500000000000012253612125016100 5ustar cybcybsepa-direct-debit-20131216/.git/objects/48/0b05295dd250dc983f6d7214e472baea06ba160000444000175000017500000000500312253612125023210 0ustar cybcybxXmoW IrqDɤ@EPJbC*}fXҢygfw3:ĢpHX4L IY"ƥ gRWV%yqqyg~٢eYm \!H,.5 6v0b;giEZ&ygfBQ%ɜB!P>ގi'1GG.94c+p<0(*T۔唳I&",| A5Y5 $+em]/;uCi ^y6bV /0*H KLMya>}ghyW`R|=qttڥ玜w3XyEԦ2%LY$Kdr\\d ZERϝ#:ūWoWcȼhXYw}ε^v_C R'LQ)]g(2In_;={L&$R\hǂ7B-/hζuGHu"dq%+ 0+È]SRֲSdʢ&4aZ 5Z=&+vN#*JOyU@4LBq97pdR*fUQ,z+n 4#*!#\tb1O2wVy3i-?kZb|y3erXMzEf Ji ~gr<5;>ٛwLOCD*L9Ƨp&&|:`+uJNah nm+$r+*t&" 9-YBΰAMH)+v,j P0$ ;P5/t>RMSڌ HR^iwz}63MqJjc^n! Чo }t}GiEw_ 9?4 AoFSO٥R- 7 9EMn؋gơָA=#t4YceRQ]s.uoj9MSVGnU2(D2YqSگ4jXM/l6E-&.M4,>ڠC*%pp, CCΕjJ\*a9OHy,E:^p*3U JIo" h=)iS]=6`jSc.؁_ߐ'-9Pd,GG{]b*Z_WqY}\zY~u˓sZ^6joh` uOEXJjE,gXaD+#g@ 1{\\]1BaCEKT.>F֘s ~L:9PrV4z(|Il' \9bb,XH꙳D|+iPդ#iH},d!)˪iɜ eںI.$̛%# Gxy,(_l(X{8~R7K.1!fѣ aъr%|V~{WBqqJjr g9%ۣЇq)=ttO(Ԩ22 &V3>wy/g1=(|)M|Wghɴx7t7]@-7x oD@8?N|{:%'v2vaq?56g7r\OIy9`v?o;TN2gp7|ojCƮ|ȱoqM+^hz{N%̺pM|M`Ѝ7Xu=06[m-n86^Ϡߧ%l |^v{L6Y3|ةŽs][a? H8Nw01%zh[cpCgԸ2^%=sepa-direct-debit-20131216/.git/objects/7c/0000755000175000017500000000000012253612125016156 5ustar cybcybsepa-direct-debit-20131216/.git/objects/7c/8473b074109dc097fa4e935c43fcebc2db3aea0000444000175000017500000000024112253612125023517 0ustar cybcybxK 0@] L@D$JB}xcjyhUD pQ485V" fTen(aC _Sq1GhkRm*뺭sˁ$zU[WCK&;?3Pp<"Izl?1MǓ)aNmѝ `H\L @J)nDDC w!d|<Ƙtн6Xi>Gi䩘b:46Ώg4fF~,44 JOW)~/G?kC4w{!'np77Y-x,qNw$24}| q/Ef+(1$O~X[TD%j5ZfQ)HObymhÄ١p<j#\0#2JWeT#_MQ|t,S0bD=xh+, C(WK((0lb_', #%|J xxx;8SRvk}(fHS?ƻ@`ђjh;HbHoF1e\\u4f!lbW3\ ,Wgq>}ًgy4?gٳ??EFp*l$Z+jKJ˱V ]@}<ߜu:>}::]thn:VIt.w)$!]Ξ|y޿͇I'R kiL5 ym8Tgp#U.:B'Z͛0=)/ ~;l!mYE30w#ds4} bPiO2NK_XC1M)> dU:н4糕 j?>g|/OX:P :F~V6`3U2-r;$;N^% . ~xIM>.R՘ 5,8Wpv pO~.K./Ukő IZ1rgoі4ցP{Nh癠0Z4+㇧"(xyYq/+^`Ƀ D/?+c,2\zE4 4:+jG,sl/k[tEf{S5f Jn1H'Q]$%BŌG 7/_ "!fBh(M eİN .nS5ne'ʅJXsUX)ޯWHZ@ ڠ,a0&ًڡh*<ߟ׿,\j20&+H)^Kvqr4=۔MVG8~U-" 7鍃M5|I;]910>3 03~mQۛaF&ѯa<ZFlY/S ahuCx,MߝmGPe2/'Qzq`<<qBhRZf 'R8kQѻOe!a\4076 h >}JB9u1w?$#9c#8H =38О8 o3o>*4OnLAa,2.NXl,`K`$l_Z ﰻcE-* 2"T80,w,.OK{]py "z4JsiY8x0{WQ㠢lPS 5 oP:Qbzu;deuSf`l7\Ƽ F'Y%z/_wQv8 ރGe:4jC=/'*k H)P%&R6՟ {TH/h=;SYQN^k)hzv]T2j eC}і&m\>Ym}:p. tp]ٚyGUnrlYAK\O^Ҿ](uDH>)K݅KhY[=1(FgbNV--İ<@̃|΃qD حPjttnPב=VT a.FaB *MuD^eW6Q1i`R9_+m|'SG"0(? J*gXM-VAn{nP L4FPwXQF댼+TVY n0D֕)n"XeT"+E,>ꭑ@J?ACu7y; Y."`u({/Kq A{!!Ξ ZA&HlSj+h$ =ѓMN)?CN˞KK<ĠAb``mԒ=Dq|.b#blv{[`f?d[ECYdz]+ht0B4vYkfK@Y2&*ЪwZhw^i2wՋ\*w'T[vuse]rDQuzu>_[w/x md9K*cYQf{?yó#}m/ϿA LWat ["Λ/{QEQy2%m>H&4ʕ 좄ʩ27^wB+lK2 -QۘA/KWZ/`L ˲e|cz`90T9. 8Nǂ䣇: Tԉ.Rm`<-rA/hJ׳xzuj?Y0 6ǟ;g_ڥRt%1hmE_n+vW%yY _@EY}.1um"f؂P|A5_Svm''7BČ+sl1$#)10d{Gk<@ϟ>+p7w p)R~0d #ܼʜ!3xX;o\9_d0^xudvZI^%"1J # ZZCERirPWJ-sAz:AjjMHb6JI/:w&ogmqZP Q\) OB|6jPE&cm$WIBU -|whXxYSeiYP,nldگ%|md[~ l)^|^XͳT'/y>WQ)H[o ١yӵF^XϭrJKyUXb TTOUhL1iT+f.dT:%Y-ctS*7uzO1W-}58A=u-3h(wxY>Sx!ffRGi&;P)+&^HGҬ069kIeWhqr^6bهju%PzإߣG?oIYrsepa-direct-debit-20131216/.git/objects/84/c43d81a9e26f31ea483210a95c2b263e23d7e70000444000175000017500000000024412253612125023142 0ustar cybcybx+)JMU043b040031QrutuMa8fpek=G)ӿ*e2]]\ 2 Y͏ pqn~@uR+s rR~lAoJj퓽+_@$fX^Eq ùOY_n8{KbƪcKS&7?Tsepa-direct-debit-20131216/.git/objects/90/0000755000175000017500000000000012253612125016075 5ustar cybcybsepa-direct-debit-20131216/.git/objects/90/3d3b49c32f72707cc83d636bf0d984684e55100000444000175000017500000000537112253612125023030 0ustar cybcybxYmoW I8ɹZbdJȕĆ"Ur-R/r(*$D3/^wt4uM}jL:~RHR_yLe]p+[\]ʩ2/..OlQ&KAKQaisJ=}ꜷN;ݳd-<ۈsh|3( ˒dNQ!)Oib_sn<8áx#߲6(*TΛ(MfEX$x Yܶ $+eM ^/[uCi ^yŬ<$JXP"),2 XFCE:ˇys uttڦx&{wf@6Ob>5qDKJJI SǬz%2 /m}UM"\ )}#- ‡OpcȼhXYws޵_\M R/LQ)]gr(2I~_{;L&$R\ǂB-/huGu"=KWAaVo7vؙ" [=R,!/^qdsTe\) =98G|J0dR*fUQ,z+n 45RQ'dTިMGa~?GZIF}M͚ucu~hk 4֎H>5dM{һM2:nIS@LmTRZ+!25}<&riV{&ZyFfF}ckZB/MμYӰ9mzwEv Ji7-ݏ1)y?~:OCbMΤ9DT[MvsYdbFó[lMwS罫Ef2B&-q:dR6\yo%Bg#rKJeⱎ':Z6ܯP^c}TDZW !oB4@ GgS=;*QTX%@2x $"|STš b,r%5젫~Prz%`+S)0L # 5LImBVd|TP#l畬 EdHу6=ÝA,"*Z75F&0Ui;hgPX$Rز0f ̊'Lw /TT=^ڌ HR^t~ju(*|xɚ{*OVI>դ}[n j"IvD]28$?wMhjZ7AP2QPC\;iz.n*l1_ty3BNq^^f,,:-سYUl]MQ?ӌPpSVU*B$ESEC:h~櫨}ܘ綑)B4dx mcuTR ˹cVIʭt)Qj~p(PJz`aP AM'[׷AצZ}Dـ]_nDU)QiHr]3E~v7*gL0#\R㸧j>bta4h@/c'pO ܶC4-cOe}r0V\E61IB)=Jr`} azxV]qFQbJ ;ӫ\c6c 5XA}H=m`Ȇ^{4^ 5_>3?WԨW40L1zVB"Y,%5"DфwwEcQ| ([̞h)۳&:X4h DE3{5F8YK.Q$\>Xx`-U039bc*XL_ºk%-9;RmT0M$y*z*g #dg`Ud uu5Kr XN7ch=FM JjBXnԅZAE@II~\Ajb-2|etWk +YWPԶK ,GNGͅoPzhWwM3azggࢮ+V3^{Ny$~{U 7.MGޙMi<}nlg؅{. PL?H9GpxN4w;znEwoxt1HI4`$`m3P֢dlTaa31}Wa$;\|4Ŕ ^R`sepa-direct-debit-20131216/.git/objects/13/0000755000175000017500000000000012253612125016070 5ustar cybcybsepa-direct-debit-20131216/.git/objects/13/e3a1717dea572186b11bb8a7a59b3ef7fc586f0000444000175000017500000001721712253612125023400 0ustar cybcybx]{sǑ)&(T:$!ɗ\9B"y$ۧrD I~y.Ipw=/Ζg?Yݯ_rM'jϾƣ$KH Sui6KNt.jVx>I,t|4U;5OIzJjf@-od.&*Q#P=w$Kzz9&@f.$u7k?60 C&3N..U0@A<Zf1qaޫt>4&7Y=Rxz)Φ#5Myp.F4Zu3ȍ團9@Owl Ki5􄄿[f.Sy} 2]OYm2uk^L݂6 "A:La2c'\k7PNjzWWo -\.P]v``eMw:P]^:bW;8 t+n.zyoxIHρ[aWoW.e: juqZo @9l_]}jx^]]txzs&#in}e+h4W]~-=]]$a^7V7T. ѐC CcLm]t>Qb Wjнnt4#줷)R(K׈)~O ʦCwɟ‡@=M}+˒B%q0fQB!:f7 CMH7tw8Mi|>MIBթs46j;=5*MPotN=gj~PݏtEQ- SU;)oCx>;!ݗf:)p^WMDsqiZhO6[nVdffSv8B:Lg?PXuZ$tJFNŰMm}',NG{d1B4#|J\vמ< ϏXu~O5Ǘ$.<~؝4j6jRқSLF+7dRsM5XKbW׈p_5htO??t<}G=yGwI /*]{R-wA jaĶִQ}? 0C@'TrfÇ'>Yf& F<9"#*ed> _`{ϳN6;yo1RkM9 yk8Lvnq#A(*CĤs;Ppmz5mKC 䎅81 1Z4}7EG}sJ|%j(4%NuCv+\B>L0D;0G;D4VMT%S`:3[`vW&2}rYK|z* {cYk7YG 0:ڟ0!'B\@+bqqYF3LL1H&ALnᲓdrwOrȟ(d6 Z8)03 P~7riؚtgjwOl6Ez7]º0 />ź`7X:?W痭Jr,14°&774?@DC\r,ac@()8!0z%p! &6'ݷMKM<oCeev3t1N%kcͦ-'u@H0Y~b?|[W)#zE VQlңκSpcK+-7S!9K.:/$ 7`2pw?i ,lܚY]%*  r" ;żښ^~ 0^,Ge^%K+o'Hn0YF%0$x|2|c^sSɑ PQԔ8q(y|hxR ҳG%pa|<c٣d>T 9 iE$(«3W&PL*<60 aq/WhNSn5 A^q+nQkjG$haJ{f>b?Rбt$\6N4dEpZw]\ W$WEHQE_"0Ot8iMy63mܒ8 ;7 @*8b(*mȁ`czZX8m7KхXZiRthz9=OJcbDn4%mAhUFŝCL 6g nobJTh{È-qvpARiH5j*MGk ҭD ^s/ABFGº0t@qqlœ%ac;4XQ6$c#S1h5fP$> +#~hH0[}OLF[hDJgL S7Zb"{<O}hb9M1hAﺘ0Jzm~5oL9,_.X{E<[Fgk_[31n#ŒABa\T,SHE'fKٞAZb qQGI\"qNjx"q&Pǵz N|eA$srĈL#P߷+ۈb1!I=/>lWtyUr$+H" vqFDckJ\a*E7h=hg$]Hbt^͊]_1!Ys\9{2{4(kr.D~]6RGF:"'AVG?>1: F^f]$f5J4c>*lmu,q$Ofm{G逖Z(=:?GMhSa[.b}q< Mlh3}$jS=vEI&8؀{ 3jͻ՘VM=~ !G3 tt444N\aASaE"yE@lIk{՜ƅI5btJ [z#%-kdx:mqD-6n9QRՃSޒzu ZzS_Qm5j9ff"tCJl%j\,S4М9>{&KvHIpLX FlcYE1)C; 'Ƚdžl1w؝ME,=gFe4.Lc: iDQ5}3d#5sY>>4@b85-U!mq(d8#S7|8 1zfɜG%|S[t}ֆ=yz\~V\{PD;[ Ǹ 5kVcF)-0yU݀#qukGC?lm@lS[j)$ =IDSS:LVțKK֡aAn9bd5h7?7G8CޑbB@f/W P¹^@3iٔ'*ޯ~l'8;y)Fv"¥#=)hKV,#F"v"0w%gNw! @Zk_Ă RSˈ5g=5]LXO짓5w޸Y \fݐ$ {g;nŹ m>]lR?l l- 8[fVzt~QQE'Q-q,a7|iZ92ᗌϊ;!uXiluh[lucivv{pz?dܩU5tV)Ū 0tvBլvYkfK@!Y k:e wR,EyC㬳vHU`֬ 6|d,~G 4Yp#/ή.@筋_+dT׬#?JkwZ==w_jiI9>7ۘ( ׿-Lnf(YHzg$eY΢B q)2%o< Jis4^V&jN`ۍeJ:~45̏`,aMa>}C{=*t^I\) ZA@Msh 7,5N)f<[cMĝxբIҗ*DuI Bu,YrP_\}%e[6m"?@aĤ!_jNVHL+IeѳCp~>|eX$ILau`OD<7ϫG NOcZs8w^uoӄ*U#/9[Ls3Nz4ruUFSIxfPՑS - jjCL4/4k,-sHliZW[ ' ߦ)i1Wu?ROs1Upe? *e* M+woBhS Iʶ諰Vt tD"MZ]7}^昦TS/2fio55U߹lUl0/.V@{v}{LvR]ڶShb ]( ƞ*KuF8Nq]15Mz^4dK%0M;MW #;a^IW[T_nfO9!bȃ f @ ||Pdo3}Q3w*wChAW#m`F[6zu6ʼnhF߮-ڎ[[fo'Sĝ=a(0Q)\xFx5CNj x ]^ib왟aWg65jMʏ=D7:/Y%?&LlKxv\eb`lqUB1gWkV⊼3T"\\Ո]I|u&f#J>f݁zef eTnT7x/&C#߯?3L a-5aS,8b{OiYEםd@ ȲF5i/0dE[q.Bν9jM !7vj#TSa[l^^X,yKtՆ qWiC Ә r{(q ]*;IWfSb":ԂmKG/P w; B{hD7*Y}$aGϥ%Z)A#\0fv^q^-[9R Yv;" !/. 8z}JTuMEηdqRZ;>X s@CHN S%$[$Fٞx?2]b&|YE7Y҆F$mI/0A"i;(p4NF\)̜=]h:B#9IX4`ۗϺY3=|n1 sepa-direct-debit-20131216/.git/objects/23/0000755000175000017500000000000012253612125016071 5ustar cybcybsepa-direct-debit-20131216/.git/objects/23/665788cfd0ff3d9cd0d54c35dea733e14424d30000444000175000017500000000017612253612125023317 0ustar cybcybxK ]s .yX>Icz xXLnܻd2C54$Z<,9n:j"d-+e т>Z~kmjy6}ryUZ9R5<MKF74= sepa-direct-debit-20131216/.git/objects/f7/0000755000175000017500000000000012253612125016161 5ustar cybcybsepa-direct-debit-20131216/.git/objects/f7/d1a9b07309ffca07ea73b21df96795c1a4b5220000444000175000017500000000024712253612125023366 0ustar cybcybx+)JMU04c040031Qrutue-R`p[k؏B/7``ئzid)Gib<8'&Ύg4fB~,$4O ŏW)~/G?kğC;!'v SƬβ<8 oչf?lXREKQsJ=:̇A+l|UF/QIZ~q|isJ0]^>Ϣ MFbv(@)7Di>Z ̈LEb|#tUnX8izya1_[-7pO6^ ځKaB֡[i˅X((0lb_7',`5CS?J""^kZvrq򧚥dQ̐~< w+"%Qtw"Őތb4ڙZ `\J i*^ saKװ\,Bųg/^esm`g jRɫ`Va0_T]P&X5]T?2,eպ?t[P47E$FUr}Hb烝4[&duo*VRkiL9 ym8Tgp#U.:B'͛09)/ ~;l!mXE50w#ds4}te Ġğd D?oȇL/5cR|A19t t58u;I&K _DX~p3|NWcN,˱  ] Y)) KQd1D֬i(M% "UVx# 8jVQmEܭZPuKeTѭ^$HAS%#{;M?]e֢y ?qМg+YXd)~XN5JTs'*hD$a4p*NTh:.g ڢ&z_͉1_Xe0瀄q"x|$ ġgFUGrdަ)6J0EUZ&ũ |a`,U8Y㗇AE;l/XQJ8ȮU"20UYZGL.@ icXF|hphN|v`r"߽ ,RuP봫9e!,b0oU= Zo*Vp\ @t aHe IAݎU+TdEBǰ(Ɯ{<[q/.Š}[NK bSag#iKTl$9;/a8(J b(8 wnp+|zd;v% aep6NjaPD#:ơ#IJW 9JXjCF:)8Y4ZgPkz6A)tN;}92(a$L_NRj5r.Cc^=0);MPE,n¼3˚E*IfI8(g,=X֪́<:_t^VB.~vXPKAÝ% kI;hYirwp(e= 4kHNH9kTQ5pf`'-Ai9"VJUӂ!Վ<8 ]"tcZ͵.YE=Ss eξy;[!Z 0Vg8V%d1Lߺ.yz@Sn{<,&@ z^7jJ?29x9Z'n+`T?/NFM,d)^r[)G]nzJ\9ϲVϒc[3ќ?LZjzbq \4U B:IImb.vW^B3"ώaF19y`n.2g,fu,$#Zhn͠UR+NqV%{O[,gSã,;ȉw*s_ ,‹)^tLLÌ>(qBE?̯8&C,^mVúT9|WO`߾JF+0Hѣrú/+K[`nfMQd*&e}D0/N=!#~aCC:3#~j]5WguТݧ Qe=-u'd5ˬ̿:Bny1oeRk`.W.({&Jʂ{8A+Dpx2oݽh_M8s" rW,|F!8{>~yó?6Hzg3"fI)ZP+h ¤j'V-(E*=761 (dJ|đLh+E iSenoW~ۗ:e3'N[l1#R__RP˲e|cz`90T:.8鏇䣇: ԉ.Rm`<9 7wId`kޟ,OBm~ZOI/R):6fbq̢/7{]L4o|˿O>] i* fʷ ;_Q'x^5ۉ%.ǫ1c%[ Hf.6  < \$!p;YGi03/2'j>VNdw W6c+ײfnSN]+I"٫$T$>E TudTAKK[H!|hY'8_*Ct*j0Ye.YO'hSP_8}r; _DX)M+ŤQM)N^X J]6x!+I(T_RJѤBfN.*TXL/Q +2uS,-+J[^.׀~8#7l\3to-W1 sy%OX[|8|=9iM';U8c DR]L}4sLeբh tns^իKyE9..Oa5RO<5&Qj|` hqsy$P1$3j2%h_+6d 2,xr[^1DP9NYc"gWqR,)}χ/C"BXjɿqHibs"#2F-\w_Ul֦FQ ux)1npL)FNF8AN VЀ// ԊE+BtV4",2Bs">7 * `pEE1.'O:mFUbRٻ :Y!#} oEFݮLv}g-ࠞ%“!Nw'HQ^=%4D%^/qY٤&Q C ґ4+ {pCRڬbjX vF vfsepa-direct-debit-20131216/.git/objects/be/0000755000175000017500000000000012253612125016233 5ustar cybcybsepa-direct-debit-20131216/.git/objects/be/ff05e8df73d143825f60987ccd4b0e174c5aa10000444000175000017500000000024512253612125023451 0ustar cybcybxK 0]o/H "yEHǷnPy QzK ( 4FB-@T(IIl֤[*FT&cZinVRr̯} --˺i%С<ΰt\rwdv@jm"Ksepa-direct-debit-20131216/.git/objects/67/0000755000175000017500000000000012253612125016101 5ustar cybcybsepa-direct-debit-20131216/.git/objects/67/f765992f6dbbe6c603b925b3265ffff98ab4630000444000175000017500000000027112253612125023345 0ustar cybcybx[j0>k},݆R]<3rd ~8Q;22Y1l}`ތEXC9K9zNi՘H13ɑ kJs\[V.9O˸B>A%jb 5ռsQZRww~6 < MC<ܛ3BU˦âbvSo(`UG&*0MҼp[ hoSSsepa-direct-debit-20131216/.git/objects/eb/0000755000175000017500000000000012253612125016233 5ustar cybcybsepa-direct-debit-20131216/.git/objects/eb/950b3e173038a7e6b62991f55d873517c73c3e0000444000175000017500000001402012253612125023101 0ustar cybcybx\msFkM$QvI٬HI;R*(lH@Z=Rd{zzzzpX݊A֏iJAf:JqūDęAGᑸKH>HёW"H:JUr Vy'q22 '[Aat(,[EmQ9xe~Dc@L&J t=8ui˧K _DX~x;~Wcn.&=˱{W-20;Xre6iZ0|vZ=qش/#7ף)`\:cZ\)> 4f00#O 8̨bC{*Ю`V<ջ1Skq8badO,~yjY*`T4ҏ4ȈzP-"`J|CW:`J<-t)&_0C(ͥ'f)g\-GBCMZT~h&x8 ҳ'/O\5 ˜~nS+4ԣHGwHCwb6C>s'w+ځgׁ|b t*MjTH5CI.͆<@}|v`WeW Vz|`Ex,La`$7rR{Q ЩDx\ @tG aHe YZ<Td,B(Ɯz2;e..ŰsYXN+ bSaggKnH /ѣxZgSU"*cMVIV*~)>Qߑ` \hi2[d3OPX6 6gK<Ś5U/(}tƣ]E57N.gǯQ2'ĩ8_2S{MdE7`j$!ʱx+ځbɋ]T \&U ľFk@Fp.ۅ"iX+^t듒8:)<] fEsÌb"drB  d!,X̦tqy W7󪻅FQ Et;~_ 0Ѡխ? ڣԏ~<dv Tg N*6CbVNAD$q`hjtJTAޥuZ_T^\`! Cl&kY˦wOoPX.H(ipn2T!9h @#53OC+=CJц+,,G"6"#˜+=szQQ J!~?yƿTFl&˘xxWѼAN 72";"2#4J\Pk 4Nk ߐ7oX* ۗ c_^hf)zt@.pXxbt9|8eri m ,`qT}9@ۯsAeXթ~3Q?8ov;[`fԭˢW2Z4|U:zT!Z]ޔfU_g_h9ouWZcc]j~-| ebYFi{\Yp'<(AT]kF} ݋%^*Čsh1+$#)00d{?k<@ϟ+p7p!7~0dy T#ܼʜ!SxX;\7;_gd0x dZIN%)J # ZZU# ҇ERIrPW:-sAz:AjjٓۗMHb6JI,&?G4e7RO2Ju* ԋM*{IN5y^Z(9Z+oѰ"3] bҲ P^-m-'fђkpY sFm}x 9 ^\W TS~{YDU>ۧ֗!b!,8$ao"#2V#\~pCUl4n$Bt#^v_4ʖR&)ʛxo(/_bW, LOVf?[,iC 7K5u EE|nSZzkgML'BcIH*,Xi6{wA*dA=5/Uh;OiЮדּ%ԱDx6d4^axC2jsԩDK!_cL_GX5[MJnK-!?NzQ:`nzH@ / $]*ƹy٨6eai@a~|c#sepa-direct-debit-20131216/.git/objects/86/0000755000175000017500000000000012253612125016102 5ustar cybcybsepa-direct-debit-20131216/.git/objects/86/dc249cb44803b20282e959aa642a3c17ae5f020000444000175000017500000000036512253612125023140 0ustar cybcybx1N0Es)A'{FKhߥ|5753HWrpif+$-Uw̱ͤh5Rj $lE ý)1%s){u/ RF s+K>8"C3}C[[tq)-J'n^nKhǓ:>RSxOp[[\&8e& o]Mrsepa-direct-debit-20131216/.git/objects/info/0000755000175000017500000000000012253612123016576 5ustar cybcybsepa-direct-debit-20131216/.git/objects/38/0000755000175000017500000000000012253612125016077 5ustar cybcybsepa-direct-debit-20131216/.git/objects/38/a7f0c9183838e13e9efe3459fcfcecf67026030000444000175000017500000000024412253612125023334 0ustar cybcybx+)JMU043b040031QrutuMafՌpg}nȓ]vA8d0V܂흠R+s rR~lAoJj퓽+_@$fX^Eq ùOY_n8{KbƪcKS&F{>sepa-direct-debit-20131216/.git/objects/02/0000755000175000017500000000000012253612125016066 5ustar cybcybsepa-direct-debit-20131216/.git/objects/02/83ea6a3af65833fa13de087faee6aebac354780000444000175000017500000000024412253612125023522 0ustar cybcybx+)JMU043b040031QrutuMa8fpek=G)ӿ*e2]]\ 2 /,}ضQzȇ*KH-I+沩;| )ͫOZ|UVg``ĆzFz) ?el%/-M-(@Esepa-direct-debit-20131216/.git/objects/c6/0000755000175000017500000000000012253612125016155 5ustar cybcybsepa-direct-debit-20131216/.git/objects/c6/30d4b57f08750b32e5fd24887621ea694333210000444000175000017500000000537112253612125022734 0ustar cybcybxYo_1T$Y<\ZbdJȕ;TeovzʵCQ!A$rvfv<2K>;41I!"I}1K1;u)Y*oqu)+˼?)+;q"גbf?6y׎As5-H 2EtfEyIL|H9Xd2'B<|hhyd/UDs=&iZgh渶Q@cZPLݴ'$!J:`4TaFH%0? " ]wc"_& :hgEWk;lf76pu +ԉ:k6M?\RM#`csLk xg_ysAə:#4 rBi1Lh2~xv-nwULFԤe4N@J &+୶dUlDnpciYPYj}hO+ N}JT?q rԜkg<=MōCq-./p{F ( 0ˌeP{<+p1pE#:Y+7nU2A+D2YqQگ85P4Yg}m'͍Yl~nMR,pJCwHJ0ܶ<?!YlM)/;fJ"+V;{ g7 V tJ8z5}}tm^A X9qFTv4.w0ZDjqyvΔ ^8:B%5{#M'J_Xpx>4v w|@m;ěO2Fp/kT.hUti8;d*أ$<g~Oܪ+Puw074BlVIaby'`z뜧oBT]jϾݺ$ZaHWU/"ٟIn _?Y_N̻Ù,04K:qa#HuwRKkڐ9cFB*)!:BtO }Eƺ|plwRҘJҘ!.Oϴ! }3A7A4.(R [;TFK Ms#oՕ86aa30_$؇{f *\lGQ%N^Cx='ztf)[/ZhT$F(<Ӳh,B/h-0i`Df-hpfOƸGR>q'*2GZ`y%PS&=5GlL& iWXy`zLgg Vd4]%RO[DU} v jVy_fiR. fmb)c8A9@]H ޯP+X{;)ɏK<(cQMMPXn W26% NmPr*|t]zyU.y4fFx.Jb5EhJWEPpt4KޔƓv}ؽ܌4=G?'tJ yXvw}O88Dsu'v|X>3+$zwCgBx4u@cqo14] spҰ7xonFþ.swۤs%:6&LgA?=^M&M6:{M&9o e-LFF6#w56_@~GXL%kUߏ'sepa-direct-debit-20131216/.git/objects/8e/0000755000175000017500000000000012253612125016161 5ustar cybcybsepa-direct-debit-20131216/.git/objects/8e/87c4baf462a509ac57101e58d16d89717221e40000444000175000017500000000024612253612125023076 0ustar cybcybx+)JMU04c040031Qrutue-R`p[k؏B/7``S ,?ۦ9klq;Y9`e\6uoa7y^ / 3 ,PH8/7%1cձvCGL_sepa-direct-debit-20131216/.git/objects/8e/63d732eea08a982d1c6eb4ffda0947e4d258450000444000175000017500000000024412253612125023404 0ustar cybcybx+)JMU043b040031QrutuMa8fpek=G)ӿ*e2]]\ 2 }f!.tmkHyȦ:WAV$䤂rsޔ'{-V*+H30bC=#s럲p6ČUǖMy?Jsepa-direct-debit-20131216/.git/objects/9d/0000755000175000017500000000000012253612125016161 5ustar cybcybsepa-direct-debit-20131216/.git/objects/9d/c8cf7753f6218704918bb57c7b41970268494f0000444000175000017500000000540012253612125022766 0ustar cybcybxYmoFN$Yhʔ up(r%H;gvz5ygf'4ww99f5gb )D(i &+vU&'X&!":YrdY&%[VE!Y'WBFbEbd"1`;ӛ[$lCBJ8 me@OI .X;.$oݴ"!*4pIA%Cqztf?DO38:2}m*]C'z~/JhYgF]wz߿GJkr&F!"E"RjUH3ͭ˟Cdf:t7;*E:=T)EjJڲ&l ULV*te 5,xmЎ~L<4qbBqq L8GEվZ yj<:R/yUn'&-<&:5,hM j:SK79T_c!Ə6UE/]V4ot=;?: p~=U|1βCGu;.HC"L=ѹ2@Q Z~v-|Tä(q9\2!5ǙbC1}njzd +tb1q^c Bn(D=nooۃQ]T*1Z"(P%lk{HEpyqM(axh 3\]ϰ;HD1t/]ea 6B9O>1$KnqO /L罺%@?kzh)lfjJޝF^c Ч/ }BG#";CPC׿n\es~h_Ehj2o۽Ӄld䣝.!H͹;]87bg HX5{ `/]}.75_N)>` ѝpVU* B$7EK8:uh|f)U>im #KJNi :R2 w,WOOpzhֹr[Kɱ󼬊R2S5*|la/РkҠ@II;Grl_[M |)e~}CvVD]$"ʝq#ܴ!:p< E^3m„1DsK嗢fe/(8E|!>< w|@ĕv7@M{Uç2 ~rp)n?.pW=mgr HYQI/g>l;[qI&wWŹy^⭈WQGWU[6''Ws-*2_'Z`y=PfKܛ8F9b"2c ^+i9j[L2BXo[9Du} 6jVy,_L[W4)c@s¼G[aq8A;@_H ޵P+X{8?)O1z&f/0&@(<&cȕxύ'f}BS;t/uy9fG}*A顣k^1o,tE9>x/BP4CCп3L?g@ {؆ݻ'PLml~t<:NF3ha \=]7F?V /יY֙o۾vGk{tXSߍ)M́ =N!ǹxFOAޕ0La꾿-^;Pξ9Z lEK&ul /MϢG=DgKO}v:{ΜSwe-NNvcs4v~\@q)١xy[X,-jih,Df9< ֫)ob2`"ǣ^' nӷwSpA.DgAu0Dbpu}9`ؽ| ߈sGSq9Lu:b נ?9 tWq-pw#q1 vug<t]vz4郁Ë1 bsy: 9쎮?oNe}09Kb{\^`#hi$⇷}~;$Iw4'h<%0IHtƃ =RB/ѐ]`1&w. V:Oāx>8@,A0y.&뎘Lz5ց)yf/CLibFAiR\`09Oz=@p&.>m1k7%Nnw<$VO"h9~E]à 6 p*$QB-?8F,*8%>]=$zϳhM$E(h?P!͇v:)XlV嘞 - !&]mo R=km/&8 D;_b0LdʸE\$XF:EayHG8 O(+Vzote$oGwӋ?5,5h'b4! h _K=-)fSYJjfH&fx5υ 1rug,ߗ/_saғ??eFp:X$Z+jKJ˱V`/]@x}<_'ߞyJyц&hHwr2@Z҅/`7˗i/|yK f T3/׆q@>;f7!yс]Y1B#k) p&] CR *'c)NIҖZs7B6GsG<͠(/a u&$4eE>dzӔM&ɱ\eAhyM^>]j :swt1I_uiͯG@-z`hhpi ~ GC ljXuo^G؞ԴB!ZPSyg7 bQŸV)ً ,wm xo9^mXԍq J O2~x*O wƙ7B5oV< qPբƺ-h'z='g|af&/ӵ#n{38%T'BVˈ yj!u .orS;-J8 Bp"3@R0ܗg湃"Nȁ-\UL:tX 2v-*8818$Ʀ}aMRާO)I(F8CԸ064m8[LN>SiBT @ ^Jv1l6+e@ֵ7(͖?-nRpg Zjo5xZ͢ ]Y,J)yF#'skΦ<uT ǧ-^ e9zBQxdn38!V.b'ey5H3]msd@b|<BY/wJBHx#C )>UUBkw  3RŔmZ5YkPlºYԦV*@: /nBǏI`a*:"K?.z,4'&$A_+ E&@GHaw }fR PCegFvN-tk&XAz6# o݂Dwi8Ieū=c:4QkJ"PqK oKdBKz%yZi~^=vx?[ʝ)֬Q@ǯDˀ5J-w]>w ]?;~9%Nš"I ;h$+aP& %V[ԄK^|rgZR4oH%5Z. ECT#&Zs蓬#y Ai2 f 3ȤUoطmtZH;NI $ A"l]_ylzaW)ULgkWɮ.,׋s H_a:lf.cl<ܥ59hR4VC'1 pi.I:\"s\ѡNAbq%4,-Lܞf1'+bX` yfb6]Br8f zJQ5%B`=uϧ]jkζn*XoZ. U"`0inU&Hn;!/V^XMԲ+[N40it4 کnǿELib;3,D(o*SEg'6%f#m<K_X\Ņ(uF^Jzo,eIuϗ@"\ʂ7iQKb)ڊDH]+`xFk$iF,鏸AIP}ֆn_k𸺙W-4b`(Rxa\ni~~u c:qŸVEP ۔m5Zv "$CddESS.R#1h&5bdh7?G7g\Z6#u} |=ȅrG@Is GONH,!M4!X~X9IRz\6\ag!H>rxlY,\Ӌ _ eV SS7 5g=5]{B0r"`/f }T~_qZ9LylVźT9|WO`߾UJF+0Hѣ+rú/+K[`n[fMQd*e~C߰/N}#Y~CA:3#~n] WguТۥ e=-d5ˬ̿:Bny0oeRk`U.{L.({6Jʂ;8A r^|4^t.R9Ols`+ZUZs~Vcp׏#_R#_N^+%eJ(F ˓\VpT~m(̢'iG2VTN`%MN^Yꌩțh8m mLJ&~Yz|Ec@mV1-#tۯtˁ)wa]]VƱ`2ܗ=?`ibNshhx ~WL۾HW V8Iض 嬭<:{5.Ak+l&G,r\*)ʶkmS@ԡ bbB۳Z|M 5_SVy3ZϡK˯ B6zIuFNVQ@1 q2#ݮel̊ qF ywAf$T:2%-T->1Z(}X/c!9 |5,2tƬgF=mD+6o#,~aj#qz$_ZISvx!+I(T_RʼѤBKv*TXWJ/Q +2%k,-+Z^ւ~p@n-ٸvk ^9'4ن_AZʁ7c*B,/(K7UqTD{ ֫DtXt-(ije@)OYj梤הT|YR`޺H=MԘSGջ|jfB/q”w3ؐȑ~uayA8[g苜E_+o}8l} RKCr&N 2 (j55tZfIH"4J72/E-nl)e¨Hi r%6AYdhʒ.yP~TSPTV;Ǽ*,1x**' q*4tڌ4‚f7tBF*S,/~1^:[A K]C;) @O5'>#!0GzoIK0L:4-?ϔ%^/qYӤQ ֪>J y4+ p@RzbjXv. TWbsepa-direct-debit-20131216/.git/objects/7d/0000755000175000017500000000000012253612125016157 5ustar cybcybsepa-direct-debit-20131216/.git/objects/7d/b6e8b30955772e1b7ee433493b702c4a31794a0000444000175000017500000000504412253612125023076 0ustar cybcybxXmoW Y/v|]ZbdRsp(r%H\Fq>KJr\{iQ€3;K_ԞX45됆I!"IC1K1;=ø,_\_ڪ2/.<[,MR+Riťb#mC)voNz'AZQFEImY4PeI2`H/wc%xD6!ǝxl[7Jyr6dVE/a!&;d ӴMQ~"c;znH<+FJQ|&QZłIaɔi)/ ӧOb,?C|L<2~'oGGxy?y:le0 ' XOm,hIII_4UOD&!ǥcp̵IuX+!EI02||&~|0Ɖ̋KʋE%W;X%m5 u2HeM}&+*V(x3ؓ[;d2O"Ņy,x,R|Xl[yT(ʿ,N$qdfekJZ`LYTgLJŬ* EOZ}ŭ^uD%d+T,I&*ou9E᱿u*vIΗuƴLI?_RmLp=?={swC&gRw|j"Rd6>5aC̢_̾VCS뽭t#+:: c1*Jzi`l%꿮Й*+e뺺gĦV (O$sl_#^cUDo' !BxCGgSjE1?P{X@?;q<_ c`@XÀډ,jpԹرX# B]={Ȣ& ϤUB9j9. l7^` m/$:!zD@L$F}$5<"֌[nSi@QRM[@yL7}Zca - {ǥ~I|DT.*ٜz# R.n(Dgh^Zݝ t0%v'Pl畬 Ѧ%t(у]1kqi!/w0%L, }a"Rd KWXf,eEk a0I wk^|盦%^?x7v*w{ݦ$@Pm7 Iv2D2$\ZI)M#II]*PSiz>njjg X}lX59}+\KݛZkNES)+Bw֊#~R`")jW\P cY猦m6 J{ZF[&ISTpJCmP!ac8z܄!Ymm5%.EU~X;ޠ^ .G7ԣi#Y qb]l*6pv"'T'P%YL}Gui>l7])6syob350 eQ|5txdmLGd 9|JJa*]Zf;#bXDr8 P|$oD~q!atJOd6,㾧lt=n8Xrlp ֍3v89LGTirO ;!Ǿ9JFx-nM0JÁ7;on 嬛r4p_yȴ~=j - v-e̞Sgj)5h{Nvڞښ ;y\@q)C>/E sepa-direct-debit-20131216/.git/objects/10/0000755000175000017500000000000012253612125016065 5ustar cybcybsepa-direct-debit-20131216/.git/objects/10/8897022772870a2398185232fc6ca9c8987a9e0000444000175000017500000000027412253612125022625 0ustar cybcybx+)JMU04c040031Qrutue-R`p[k؏B/7U3RE"Ovb%UWQ r8Z.s ۿVw*KH-I+沩;| )ͫOZ|UVg``ĆzFz) ?el%/-MKsepa-direct-debit-20131216/.git/objects/15/0000755000175000017500000000000012253612125016072 5ustar cybcybsepa-direct-debit-20131216/.git/objects/15/87608b386866b81317b1a24d0b8668a026ac480000444000175000017500000000024612253612125022653 0ustar cybcybxK 0]o/HO"v//`ISϯ2%Oh-8yYe]`t]G:!%)jZw_zLd_OUHsepa-direct-debit-20131216/.git/objects/54/0000755000175000017500000000000012253612125016075 5ustar cybcybsepa-direct-debit-20131216/.git/objects/54/d0c427147c33d168c611204d2ed992df5af1e40000444000175000017500000000026312253612125023136 0ustar cybcybxMj0F)f(#y$k @BwgQ,Oe|yKCP`0ΩDhEKNB&zbL!t;86Dˌ>3qUj?/p"뺭po%i8nZ;Qſ*ogyIÞ[jʮxv}?Osepa-direct-debit-20131216/.git/objects/49/0000755000175000017500000000000012253612125016101 5ustar cybcybsepa-direct-debit-20131216/.git/objects/49/e5d6d24e12abc9abcccb81dcfe4604cb78b6090000444000175000017500000000010412253612125023655 0ustar cybcybxKOR07b(N-HM,JM.MIM,E\\E% .`e . e  > i9\vHsepa-direct-debit-20131216/.git/objects/61/0000755000175000017500000000000012253612125016073 5ustar cybcybsepa-direct-debit-20131216/.git/objects/61/045b1fe29f5a56d0d19d6f8de65114bd7ecf400000444000175000017500000001724612253612125023401 0ustar cybcybx]{sqc*$Aء#APYŭ']zJjf|O-nd2TFLM{Y-nIX%b4IP,I{v2MW~Tm`@jLf&S5]+a/@:":OH ,7f>eẏyOSu>@Zg0 70 )Ƣ/jpy6@]/:ݎv~ _^*.?3պIwс!?^ޫ^szםCu{)\`н/u; :Pg!=֖jV_]_]`>t_u/Gg9k}}ySzyyi̵NϻkzT}.>7^v(wyA//}nzRޠ{Z%RB FC &d1NulEHo{{%&ߨAj e:cMo'wI&G,Ksƾn9G u} Q05Y"l4aWd:'9"sUu*ר4QBy*L~->yAu?%F7gv(H@oZOTt_ͫ Fcõ{m_6ͭ i=l^Lq6Ma F?7t=" cBcVi>Φj2+86!g^<;-#K|DD9+sI^{zt\;&TV,kR/H@] xB;Mil, H17"Vn7z1(4jaᾰ&kN&*gϞj|Ig55E\qpB.(A3֚V!t&;J|yl~÷G НA>(d ´jR_cL]C+ɱP2P\ qjU:_@B׋T@PL<@B h_ᇀdw6-#Bīy " ֋z2.bR "#`՝KƚM[N2n`&P<~T6STG$<<9ӣʼJLW%V\;nhLz#hyyO%G&@EQSNK%;0 J).e :I\S)P4<T zW\i@1ظ0\a9JLźi:״ny F=zDxu)CEX^}ttsH1Cdžґvry ;ѐEiuq-d^\y."qD m|H?q17٘ pK$,1ƪ]lj1?ibl-F2gbiAHUyr3=Ō`>=+7vjj#ДIV0SЛgUEB:3u6؜+Amg(Q #JyIa#Մ. 7{% J{ guL #;aXOnJ\bj DPvNF.DNZ mD@ ,!Ln=1AoE(F0L$j3Yrrg?C]~4aĠb>0*-h6q"0W`ֈp0&Rwx\b l}ot8 3;Bh U~kp*S}L#x<-Q[#d;Yk Eq{PSGj & "rUh9YItKC" 4"$[e}Y̕#2pB}׮T(n#6kČ''Ah @a\%.Wɑ( $ƁGh}|vAv)j6[syTDݠ:韑t~"%ryK*w}ń_toldqH|N֎]f \' m@$x+:luDOHB~|bt[w!6ɍη9HckdiGL1}TNL9sYHVzN,-Pf{t Ѧ¶\ʕ:xpgk@Irz^;>`Q78WcZ5{VN7XC3 (MKC㴈f_8 VĜ !YD4_LɘH[i\Tc!1!F7RI@(زJ#GKbz%u8X=8-?^p7U*WHmV]#i(i.:MW91!\B%2%0:XIckd#;)P/0}Ԉ9#'{0~=Wu8+UkѴG:.o1 īԳΖ9J/\y*&[\s_L@ؗTIO0Q/ÏZY$`Ϧf {b~4Dz,N˖(Q&giJV) d>ֽ8iB;:%-bg[OSQw˻y&m;Sр*Y}c҄ȱx0*rP;2AI*X!7cxqgq0@`KWd`;6kNl18SHkz{xlH|TCzyFt4\Tsny`:HU7C6_1狛i#M$6 ޏcV $@S,”W^ M ܍Zu0xa9bcm-ߚi 8U?ѱx>Wi2{ vNHYq~>. _Aj5-Z) ǴFX7A[_r4}/V7{B!8+H$d>Y0]Bo32<%pÇ/qzg {T27Nugm1:g̵NQ Eû>ypQQk56~j4RW 8W744A*665ID4u:Xjd^aԸ=iv#FPCvsp~č38(+&lrpJ =My;P~Eck1qis eP!=%n%2Mv;G)p0s'}:}#EE[;n[ȋ>rhp=7FhU3z F.U j* mP5]c!PgH_3G\OKQ?ɐŘ묭ޯU:1teb=I3_QQb_܈.E#Y|uYypnP7x7HУ* ӻk Zmr%=n^d"&& Lk?Sq¤ކ-4ZIf1 J,G:"w&T͑1:.SܖL0 >dS٤_ӔרVCZ [> lÀkPi<wXWJ[op( (tDzY=6EI>q\,=9e{_p 0 UݺWw/e4r3 ]$S-h FAQ2NQ^n"7<U\,r\ ĉfARE ݜ$ik:^Z񚎠Z&k=Čii_0HhWa]TL!k^/uX;]Ys[ 5Lc`LNnP5kVv갦a ;@FH 3 r !';V ^[.#IBC&-e.p}_lׂNM jí|#(-!Y@>CL]ʼnZM WQ PN_RJݴBqc7& :^|ߠaCfպKh0FsmӒĵ]KX*[O9Y1 Z /FcWÑExz *1]0B?7"aVEOr_À9آ!KzZj[cuMw%"[f̋^O#uZNblRhX݊Y$]Xʰ'#Vؐʑ- Cq'`{p\k.ARB6&(Z@$Pըg?wZGk#)ɰ'8(7(X#=dz UcD,w,]bV+K[5{Vw!"7{uT!`pCŚΓΚZm`o\j>YwК k>=Px[Ao{}֞2l'/00GZߌb9WOgQn胛w)Kc *0>&ݻiayt\yb6Xal ^akEJTnStuOyj:sg>t!J.uB]?!I<(T8, %bBs~f >F[[,6d_ +$Nc0ȕnE6$lZtI']M*k$( . w4U@C)tߥn'^Xdl>O=h^"UTsJT3;y lrH2d R* Dĸ|6"Z f4#rUm|Q5%?9ߐFIi)na)#! (9*OrpN&Rtlu{\niPf{Bx%ȴ.wM/eIWݓd}?6ޑW% u>oq <;2qM gO3s JKHGtN(F"FGK<<'|tυӀ9_>V;ggOiww/@Asepa-direct-debit-20131216/.git/objects/2c/0000755000175000017500000000000012253612125016151 5ustar cybcybsepa-direct-debit-20131216/.git/objects/2c/fcc7a7d4c1ffc508795573fe83d44a77c0ea3e0000444000175000017500000000024712253612125023545 0ustar cybcybx+)JMU04c040031Qrutue-R`p[k؏B/7``I.xS޳PԋQ ˡfV$䤂rsޔ'{-V*+H30bC=#s럲p6ČUǖM2>Nsepa-direct-debit-20131216/.git/objects/21/0000755000175000017500000000000012253612125016067 5ustar cybcybsepa-direct-debit-20131216/.git/objects/21/05e6b6d722caba246ba33ac36b468131f5163d0000444000175000017500000000024112253612125023166 0ustar cybcybx+)JMU04d040031Qrutue-R`p[kUWQT/pЕS2'Vm>~,"1 '엛˦- 4>k!TYAbfU0[决$f:4nʸ?sepa-direct-debit-20131216/.git/objects/4e/0000755000175000017500000000000012253612125016155 5ustar cybcybsepa-direct-debit-20131216/.git/objects/4e/5d9b147ae095ec0f5736da81ac5eb46e5298bf0000444000175000017500000000445712253612125023473 0ustar cybcybxXmoWW IrqDɤ@җEPJچ"UrgvIYu\<3EV,ۿܦp2n(1Md)EFej]Wt6.U)zyBEyZYXѫub8&JJUȯl)"UPR 3팦2 Ȟ=:\԰r_(/`m)2.%ĥ,XVT+gYb'QEWkXTLNIEqŔY,b5<nc~XLʢPx0H?e] h{S]pҚ~+X2Yk~OYqK%c`Eem\DE0O9 ̄_G* i*UQv^QQ\ٟpϽ=dP{CR)㌮ IRԹ",DׯԣۚMER& TEqSSo[ rc +-T~i TUk*XZP:EovqVkz;=2ҾKrNE_bGJ3Rި5'дxÞ2JR"PA]7 )l3/\ygv{DRŖ:KC^|vx3L.SD:L;֟p!!s3+ڂ]hp,r0B2rQdMZTh@]CN5)4 tjޡUEk)izGصmN]Dh\ɺSJ[$p]`prpA(qusP"EݗMwB㖣ɑOQiB])yK, Ж1I~Sv NDӖ6<"+GpfGSx{/Ovyz WL#k Vӟ9#M:M;)sÐpY$` 5O4j䣉&!G˹ G3c8a Bǯ4XeeQO hg}p?:=&-(nܦΔCJn7\P ^.){T'?:|iLdNxAT)ށ嚡o|a]h8  ueXlyNx/NIK#%c׌%t,{;O;iERW }u)EqUnlEѫ %HgMb*44k ak V@ç k>oCˈ'u·r|aUs|@Y}.cd"u+g%ͺq_ĞrɊl;= ~E33J֍m\us`G[4FVLT, %k *O^\,Tl4u۴&TR~+s@J->ؼN\`RT M1}E<u4=`ջ8y#әvFvVG"K_hӶ"̛=Ä= c xAd]hUPp4h%֨ (cQK^A aoVPzcE~a"^1e u5h=LtW1j26 & ރxImQS884݉3ӣntE{d{MQ2uKt>IЧ-P1ӯK~^wD7I~ˣnń9Sҵ)i d7:r^7x܆`Z _``%68\_:WS[+۠|G!2c0j)A3s:A7~]% ʯfpyP,'Ml5ΌHi'$T 7 bog0mpTLA?>QilDrBKE W^N4\_ +;y֮$vovb1{ ˯9]v=^t }1W;\]j+휠"h^`jBbr Չ<6.[-.pళ^lb.@j3ulj+/ :#M^db}TÑ0, hْ >;K>)'ܚ Ro7oc<II2+xZXQD3Ě>'lb VԩY ʄDBo2$Ho\dѡwZ"nI欇DX'q!d_x`kz3 5D t=FmxcsTծ_JBm(*XܕjsBan>&%T0Fnr;i(HN#m&zG}U,Ҝ9jmhA;zіp\)ou,<41R"99+ i9@l.M, $ܤyγN@iqǐ]u.\l`2;~j+P7ǚbpn"@L&m#L,Qfm(N NPXcpCŷvQd>TfQʚ-@ Dレ.v{(v(ӻ2 %rV(DAdiDiIѱ+~J!AG^'>IJh ̬ЖSi{pmeօGSY1d"g(BE"DCA dOr*;vPزY=t4k: 0EwA!"|Zϝ(¯RlV9>EÍ% D9_L/Ng 5M/juK" S1H*תXyb ?.{CjQPߔa-x=)@i T`(v\IϢKeS_{][9? L9=+,alLg)62;)PpekWNc/]1WeLt W=z8Z{e:\g.9;+l>/TW_[zIցDk pqGz}I*)n Vն/aO,s. _-RBx V쑚oKPx-=b\r1Z }:FoԐ$j~ ͬb.3l$sn`y-(XTfs=gEw>4+U~mL2Tըg++9Gs'7'{$6Hj?瓡YE?]\Cc+ձ]Rg`dGQn#]A$9W̷Fk^W|rRL=FGG%="95XI]Z"h1?DtPcP5jK9& lϗUod!/6 Hsvij@$ܧ5sA.IzOv";%XWf%P&QOǖFi3V)P߭5 E]K"4v Q3V#4dab@]ޮWSߍHHBXN;PW?ZY'j_5,r񚔜Vp$./%g;_anuW57/ںzJ"ͱ*),4Vv_;LЍGTn< (wa/ +MM\d즲0& 5UOCG\\찡TLv/Jgqޔ^CWɛUX~>vv)'m]o/4_Xߧjt&.WzHIO}&M/;7zqYjY!j GO`Z{ُܷ.e}l铦.*8I/&Tڗ|XmԞ(v R7DcRhBc'qvHx:(t2vչzZ&Po?WfȝBQixH*\ ,>(\~gC*@XPtYFV`.YvZr~.c㸽CMM )]Y1>Q4|J;Id1)_hɢBb &KR\d_/:7e~ KE27M5kB+.k5t$!lhdZb.Tdd=o> ĵ* @)1I}~p  .ƦT9IZK*W#:ik'jM$/_3O21lxrrj Z2 +A̗re{c(&Όov*;&1mJF.ťcy/5#gĜNZ6R'ݝ(%_6_ʹ qO4F'E=zf Ӌ*7r9=RΡ+Ki=H:(N54Хy#St'h*@vFPd M[P!h|IM)9 2ƃ{%1`t^ҩX|njv7 ݧCoqף-}ܽyG4?\ej~BO@DoDMA/(GԔ2O{2z:p[0?+fMΊ_ |$w~3iꛁ3cog*rI1W$ ;ZL+>Vd h$벋hrDS&a̸w?( k\O|o؋aWd^;j= ԙU)2Upj]+7#Ա< XPdZ1#viy1/uxP#S*aw`GD̓8V9{ʪv53>TȩvˑTK1_Nv6&$1TJ1lwɗ.P1d(Մ%]N}v PO20%72\A~PX3.bcRͤXE,Zxc}6cAIp97㣛{˧@.hڤ2'pzSQTH2c)ɟ" =n*}ua* [r!ළl}H<ӆ!(~Tef 3sLs/$^+e!:_RM_-lT6"h|”b9Y#^e5TSZ(l _7Wai$ 2nzHhh"(p=6b(G|R`V忚:MJR3,%~tlIM:ؽ ұt,ߥk7l|vXQ%cKHakkЭLΧXyU˫~a,2g(=]ɕ~*bS#xU'%;LIxsepa-direct-debit-20131216/.git/objects/cc/0000755000175000017500000000000012253612125016232 5ustar cybcybsepa-direct-debit-20131216/.git/objects/cc/d60cad9c44b599e4a388baebe8f1cd836ce3440000444000175000017500000000027512253612125023703 0ustar cybcybx+)JMU04c040031Qrutue-R`p[k؏B/7K~BO>s?78]]\ 2 cc}JĪBV$䤂rsޔ'{-V*+H30bC=#s럲p6ČUǖM|O<sepa-direct-debit-20131216/.git/objects/76/0000755000175000017500000000000012253612125016101 5ustar cybcybsepa-direct-debit-20131216/.git/objects/76/614ff43ceff069d356d0b8db23026d10403b420000444000175000017500000000024412253612125023131 0ustar cybcybx+)JMU043b040031QrutuMa{|y7v[k3exC8d0<=B]֐M/u*KH-I+ðFx9t\goZUVg``ĆzFz) ?el%/-M?*sepa-direct-debit-20131216/.git/objects/fa/0000755000175000017500000000000012253612125016233 5ustar cybcybsepa-direct-debit-20131216/.git/objects/fa/4644b28b57b400f02e9483ab2bc98d3810a9e80000444000175000017500000000057712253612125023235 0ustar cybcybxQO0}ޯix3 Q| MX;,nK&Rhd7zw9w3h6'7t W\T !~|!ĤxshU!4A6 fa;rQ1}v^o\\^5+>7uEGQj>)jcV+PagH RJ XKk8 &r%TyN6M$I/ p qˇ^VaUAkd^c b}aA)+.:jkHx> Ͼ o%oZ;l{Ӕ? YR[xsMr\))oK=c4 1^Vr;U^3 d1sepa-direct-debit-20131216/.git/objects/7a/0000755000175000017500000000000012253612125016154 5ustar cybcybsepa-direct-debit-20131216/.git/objects/7a/68949792bc84f3c70878eea703d4cad20c89510000444000175000017500000000023612253612125023177 0ustar cybcybxM @= EGD(Г:&/ttu] K"P(QաĚF4O]*[\q$9:*1:SdhI Aqo^oS'ܧ=>/ݶFo=V/I*WQJisepa-direct-debit-20131216/.git/objects/pack/0000755000175000017500000000000012253612123016561 5ustar cybcybsepa-direct-debit-20131216/.git/objects/f2/0000755000175000017500000000000012253612125016154 5ustar cybcybsepa-direct-debit-20131216/.git/objects/f2/caab19b8d9f2a84534475cd5259908f94979600000444000175000017500000000030212253612125023117 0ustar cybcybxJ1=+ <Ds[sepa-direct-debit-20131216/.git/objects/98/0000755000175000017500000000000012253612125016105 5ustar cybcybsepa-direct-debit-20131216/.git/objects/98/60f401b0d1fd3e00410564c8616d6eaf4278490000444000175000017500000000024612253612125023005 0ustar cybcybx+)JMU04c040031Qrutue-R`p[k؏B/7``Ԋpp[pԬԊ܂T_n.÷0|ЛҼZdPeyz@lg`WQpnSF^򒘱T a0Lsepa-direct-debit-20131216/.git/objects/20/0000755000175000017500000000000012253612125016066 5ustar cybcybsepa-direct-debit-20131216/.git/objects/20/2ff1160f57772627f72ebbf56a6e6616ce2d3d0000444000175000017500000000026712253612125023237 0ustar cybcybxAj!@Ѭ=E,AV+@ cZ:v3"Ç օ9D@[Ba;B,l0PXijDN@Cڄ(h'Kl$ׯRKb’Q|K:dߏ:/G|O]`BgmVAY}ךy e nN~Ssepa-direct-debit-20131216/.git/objects/2d/0000755000175000017500000000000012253612125016152 5ustar cybcybsepa-direct-debit-20131216/.git/objects/2d/5c65b391a8ea56f699130b813a3ee1caccfa200000444000175000017500000000031312253612125023425 0ustar cybcybxj EW̾Pt@)~c{1A ]{ Ǿg4fX0hZ]2i^ jE 3&zI*LIkޣC<%ȱshDCG>:߳<~Z>@:kRSQx܄#γ ^igHjRnsQ0}esepa-direct-debit-20131216/.git/objects/6d/0000755000175000017500000000000012253612125016156 5ustar cybcybsepa-direct-debit-20131216/.git/objects/6d/f0b6276f487e03b437f657bedcf7b7d1f87d220000444000175000017500000001721712253612125023422 0ustar cybcybx]{sǑ)&(T:$!w9B"y$ۧrD I~y.Ipw=/ΖgoVW\=d}C鳯h1z>RT]}͒x}pl>]˅^j%<,MNl|ŃZz8P<.Ji~<]!Rd^ rL&?P'Ϧ#rVfL\j6O5 g:=:`V|9=wʢ6HvC5= (el(` r#'~9'f4&[(4zcMG9=!#d^rCLnSG}.k|hWd6SC ezHqsS`̘b, qWZ umZkkG՛B~r:W_zu;꽾u;Gwپx]~xy5T׽!n [g#u^s`mVkhՠ :@|ٻNfhze߼Ofq#Pu\/ͣͬ:]'OAukjRdJ=|^T]Pd5CTz{2L ɇO٤ ^󬓍m[Lng,*Ě@jSμfN[HC< 1܎#+*j|^CR*C,c!NiiCf?EMQ/gI06NY| XA0fzkצ'[ڛ\my,ù my{u7 ޴ y6l&a6@ph\: 63~ C l* ,ur7o<)ғ>!RQIZ}>aD6Tx?\ XL"Q~24/^Fj/Ϣ7/^(G`YYiG*2D |#F. \Zq|kNAܭ@!GsU"%H<+ġ9[Gx "e ~B%ݞD:_ϑa١̟ʘad$Jː̨~ 3gOPJL}R Taqo\ ޏ.B}Jd=ontE#^fT gafQ͑)cʽ|=ApfD06&WE'+1I8"^ r~CυvtԾN8Z` <|U"+1e j4)MbnR| G_X'ZJ%fFDQ<t "rb~o줣<ݓd,'?Y fN ̌o6Tߍx&>ݙݓa2MM(.L&ȋO.5~ Ve";K %)0,c !K.P$t8JD Edc< (D^~MEmlӒ,vDhx5O[PDazL]L*Ad,sXiI]-Dj؏*fʀ>3=6}G5:gzg(GXtJmqH{NKDj4 #C9Gb X :xďhv*a( qVWBGN~1?L?QWɒ)Dۉ+Rx'LqQ a'k=260 ߘלTraT5%}*17P\F[fda1%@ e' DhdbHl hFT.ʈdV;jTMV;%*Dp0du;GNF ZP.#Lށf'sk[SKn"aKpp7%)!p־QڗLLH0cо/PG׬2GT8RQ#5B'|B\5{` -WfoDGI14q-B#BS6_G\1">J6bXFx}bH.q@ t0[U"b^| H]x`6gijwf=WGJn ZlIW'ҩX"g+~rWL8EgFWN'?wܴ7Ѭ_~ 葑uE iPUяO{.4~?Ħ:nCxl<)汏 ۩x[)G.Ks jY[oi%q:elQS!TؖKX`_OB L{m(ZTkgQ 6`u范Z.5U3>g{`58CH bG!d2M, "*Wl~1sXs2tHg=4:~9[&cҚёhba^Ĝ®H'8acF[|^E덛us cUtw|‘W_G"QpvT6ڣtI4c/Ɛ -jW<є`%!c N8RAS#>#E YYMi]wXjR`1;̖;v}\%*IC!D tM= $kl(p>Ǧ C99Y;(B-t ŘJ|!ML לX\Uq}VK ^ tʡP2a%ӄ2ٚ>冝b¾Jx~Iux b"{67c<7FCѪA3li%ر{ȎpfrtrN)GHIݫlÆkzCKNZ"vk>iu=ü϶gҶ3u (Oه >6(͉#+O"'` [#ԩeBm=>iWwFhΜHZ= %;Xu`dvb&, 6ޱX7"gơ…XOFZcCz;lPG"x^3Jf2OfKvc&14@"ը͎9b,xHS i ~P =fLlhZ74enԪ 6 ˉkkLAƩَNrRٓwt6F֊5Sypnp"rtTd$T/k]XJi@80Ǻ LהA BB )$=ɚև8[s)K>`D$=d٣pvo>k)==.?.dn>pb`(^/{c5ܬSn󵣡YiŸUEP 7 )YDH$)R'+M%FNа 1 Z҇#.FA[1! f+ {(PR\/4˓~W`?#;BLr%R+#;cHӻ3k /bY)D@)_CD'}DZɳŞ.c&)Ic8~o n4nLõqŎ_aqnțO>[K3θeUb|b\ɠCzhKfK `&#*wM`%c}D4VGu ["گ*9 yeU3z +U j* ]P5]c!PgH_3̚YE@KQ?v9HlCԯU:ܾ5+ter3M3_=BQ_܈k.Eyb5-"m"B6I(?'7oG׿aZo?==zMl:&b"NriioK% r[%ii(|(C鄆\OR*'ܸ5W̉5=vc~#R;Mh 'KXSXy`O_>#^,J;ݹvRWB磇^_,oi]_l ?KFyzz|?ϖsF&a`idw⍋Fb&_R%1(aױ8fC}EvUC\ǻN=oWP5 qZ^&b| B@5: ZNV2^F1c8A9 R<4aud$E34!#Ȋy?Vn@7b 9  Cq['.U{pB.7C"B6&G(N@$Pը?Z'#)ɰ8mg(ƛR#azuaE,,JV+K6O{Vw!"7;u%T!`pCŚΓΚZm`o\j>Ye d+w>cMPx[A{o; Vk/ю.0GTߜbPgQn)K^`1 '0٥;&݉qYat[mVa3Xal 7^c+EJTnaStEO`j-:w;tåJm.iB]|r!D6a? y͞ve~f#Y^anMtp:SPU`$gǍ&&cvCc7l4 *%0C@!  ;T7qփC4D>`bf qcq=#Ez ޼UDQcQ\e/|ڜ@ x1GYM%1G3ˁ LݮIYtJTV[5W%+s9`xyf%J?K(ܢ鎗[ߕ7hҙ_y{<)/Y-i֝XvhpkHEo` O|c5@24k4Ô@nRc/6bCn.'Ԟ{%zXtIH,nt [ZÑ6 , CVD)'>$ܛP|NqymwQq_BB[>;F͋8"@ } DRZm'A6D8 W*7[qKjѭSۋte6ᮑ(&-X>/\T `z ~ӻ DZW{Ntc_zRG<]v\[BxTQ >(SifW(˙#eʐ%`sH.r^وh1 Ҍʭw;طD\\P|K 'ꃥ0׉;(\d,9H]qJ=/BraA ቗#Ӻ(q`ȗ%_tp nzQ\aDҖ$B $K~h5-$-;+(-#{8mfao 4bhdN}[}윥>߃߼ol4sepa-direct-debit-20131216/.git/description0000644000175000017500000000011112253612123016451 0ustar cybcybUnnamed repository; edit this file 'description' to name the repository. sepa-direct-debit-20131216/.git/logs/0000755000175000017500000000000012253612125015160 5ustar cybcybsepa-direct-debit-20131216/.git/logs/HEAD0000644000175000017500000000031212253612125015600 0ustar cybcyb0000000000000000000000000000000000000000 67f765992f6dbbe6c603b925b3265ffff98ab463 Cyril Bouthors 1387205717 +0100 clone: from https://github.com/congressus/sepa-direct-debit sepa-direct-debit-20131216/.git/logs/refs/0000755000175000017500000000000012253612125016117 5ustar cybcybsepa-direct-debit-20131216/.git/logs/refs/heads/0000755000175000017500000000000012253612125017203 5ustar cybcybsepa-direct-debit-20131216/.git/logs/refs/heads/master0000644000175000017500000000031212253612125020415 0ustar cybcyb0000000000000000000000000000000000000000 67f765992f6dbbe6c603b925b3265ffff98ab463 Cyril Bouthors 1387205717 +0100 clone: from https://github.com/congressus/sepa-direct-debit sepa-direct-debit-20131216/.git/logs/refs/remotes/0000755000175000017500000000000012253612125017575 5ustar cybcybsepa-direct-debit-20131216/.git/logs/refs/remotes/origin/0000755000175000017500000000000012253612125021064 5ustar cybcybsepa-direct-debit-20131216/.git/logs/refs/remotes/origin/HEAD0000644000175000017500000000031212253612125021504 0ustar cybcyb0000000000000000000000000000000000000000 67f765992f6dbbe6c603b925b3265ffff98ab463 Cyril Bouthors 1387205717 +0100 clone: from https://github.com/congressus/sepa-direct-debit sepa-direct-debit-20131216/.git/info/0000755000175000017500000000000012253612123015145 5ustar cybcybsepa-direct-debit-20131216/.git/info/exclude0000644000175000017500000000036012253612123016520 0ustar cybcyb# git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~ sepa-direct-debit-20131216/.git/HEAD0000644000175000017500000000002712253612125014637 0ustar cybcybref: refs/heads/master sepa-direct-debit-20131216/.git/index0000644000175000017500000000054012253612125015245 0ustar cybcybDIRCRU4QRU4QwwS!|{AhIO README.mdRU4QRU4Q|8ְTwT‰ SEPASDD.phpRU4QRU4QWGhĜz example.phpRU4QRU4Q ίӀXMJƥe>pain.008.001.02.xsd/W3Q;jMxsepa-direct-debit-20131216/.git/hooks/0000755000175000017500000000000012253612123015335 5ustar cybcybsepa-direct-debit-20131216/.git/hooks/post-update.sample0000755000175000017500000000027512253612123021014 0ustar cybcyb#!/bin/sh # # An example hook script to prepare a packed repository for use over # dumb transports. # # To enable this hook, rename this file to "post-update". exec git update-server-info sepa-direct-debit-20131216/.git/hooks/pre-push.sample0000755000175000017500000000251012253612123020304 0ustar cybcyb#!/bin/sh # An example hook script to verify what is about to be pushed. Called by "git # push" after it has checked the remote status, but before anything has been # pushed. If this script exits with a non-zero status nothing will be pushed. # # This hook is called with the following parameters: # # $1 -- Name of the remote to which the push is being done # $2 -- URL to which the push is being done # # If pushing without using a named remote those arguments will be equal. # # Information about the commits which are being pushed is supplied as lines to # the standard input in the form: # # # # This sample shows how to prevent push of commits where the log message starts # with "WIP" (work in progress). remote="$1" url="$2" z40=0000000000000000000000000000000000000000 IFS=' ' while read local_ref local_sha remote_ref remote_sha do if [ "$local_sha" = $z40 ] then # Handle delete : else if [ "$remote_sha" = $z40 ] then # New branch, examine all commits range="$local_sha" else # Update to existing branch, examine new commits range="$remote_sha..$local_sha" fi # Check for WIP commit commit=`git rev-list -n 1 --grep '^WIP' "$range"` if [ -n "$commit" ] then echo "Found WIP commit in $local_ref, not pushing" exit 1 fi fi done exit 0 sepa-direct-debit-20131216/.git/hooks/update.sample0000755000175000017500000000703312253612123020030 0ustar cybcyb#!/bin/sh # # An example hook script to blocks unannotated tags from entering. # Called by "git receive-pack" with arguments: refname sha1-old sha1-new # # To enable this hook, rename this file to "update". # # Config # ------ # hooks.allowunannotated # This boolean sets whether unannotated tags will be allowed into the # repository. By default they won't be. # hooks.allowdeletetag # This boolean sets whether deleting tags will be allowed in the # repository. By default they won't be. # hooks.allowmodifytag # This boolean sets whether a tag may be modified after creation. By default # it won't be. # hooks.allowdeletebranch # This boolean sets whether deleting branches will be allowed in the # repository. By default they won't be. # hooks.denycreatebranch # This boolean sets whether remotely creating branches will be denied # in the repository. By default this is allowed. # # --- Command line refname="$1" oldrev="$2" newrev="$3" # --- Safety check if [ -z "$GIT_DIR" ]; then echo "Don't run this script from the command line." >&2 echo " (if you want, you could supply GIT_DIR then run" >&2 echo " $0 )" >&2 exit 1 fi if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then echo "usage: $0 " >&2 exit 1 fi # --- Config allowunannotated=$(git config --bool hooks.allowunannotated) allowdeletebranch=$(git config --bool hooks.allowdeletebranch) denycreatebranch=$(git config --bool hooks.denycreatebranch) allowdeletetag=$(git config --bool hooks.allowdeletetag) allowmodifytag=$(git config --bool hooks.allowmodifytag) # check for no description projectdesc=$(sed -e '1q' "$GIT_DIR/description") case "$projectdesc" in "Unnamed repository"* | "") echo "*** Project description file hasn't been set" >&2 exit 1 ;; esac # --- Check types # if $newrev is 0000...0000, it's a commit to delete a ref. zero="0000000000000000000000000000000000000000" if [ "$newrev" = "$zero" ]; then newrev_type=delete else newrev_type=$(git cat-file -t $newrev) fi case "$refname","$newrev_type" in refs/tags/*,commit) # un-annotated tag short_refname=${refname##refs/tags/} if [ "$allowunannotated" != "true" ]; then echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 exit 1 fi ;; refs/tags/*,delete) # delete tag if [ "$allowdeletetag" != "true" ]; then echo "*** Deleting a tag is not allowed in this repository" >&2 exit 1 fi ;; refs/tags/*,tag) # annotated tag if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 then echo "*** Tag '$refname' already exists." >&2 echo "*** Modifying a tag is not allowed in this repository." >&2 exit 1 fi ;; refs/heads/*,commit) # branch if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then echo "*** Creating a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/heads/*,delete) # delete branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/remotes/*,commit) # tracking branch ;; refs/remotes/*,delete) # delete tracking branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a tracking branch is not allowed in this repository" >&2 exit 1 fi ;; *) # Anything else (is there anything else?) echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 exit 1 ;; esac # --- Finished exit 0 sepa-direct-debit-20131216/.git/hooks/pre-applypatch.sample0000755000175000017500000000061612253612123021477 0ustar cybcyb#!/bin/sh # # An example hook script to verify what is about to be committed # by applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. # # To enable this hook, rename this file to "pre-applypatch". . git-sh-setup test -x "$GIT_DIR/hooks/pre-commit" && exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"} : sepa-direct-debit-20131216/.git/hooks/prepare-commit-msg.sample0000755000175000017500000000232712253612123022257 0ustar cybcyb#!/bin/sh # # An example hook script to prepare the commit log message. # Called by "git commit" with the name of the file that has the # commit message, followed by the description of the commit # message's source. The hook's purpose is to edit the commit # message file. If the hook fails with a non-zero status, # the commit is aborted. # # To enable this hook, rename this file to "prepare-commit-msg". # This hook includes three examples. The first comments out the # "Conflicts:" part of a merge commit. # # The second includes the output of "git diff --name-status -r" # into the message, just before the "git status" output. It is # commented because it doesn't cope with --amend or with squashed # commits. # # The third example adds a Signed-off-by line to the message, that can # still be edited. This is rarely a good idea. case "$2,$3" in merge,) /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; # ,|template,) # /usr/bin/perl -i.bak -pe ' # print "\n" . `git diff --cached --name-status -r` # if /^#/ && $first++ == 0' "$1" ;; *) ;; esac # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" sepa-direct-debit-20131216/.git/hooks/pre-commit.sample0000755000175000017500000000315212253612123020620 0ustar cybcyb#!/bin/sh # # An example hook script to verify what is about to be committed. # Called by "git commit" with no arguments. The hook should # exit with non-zero status after issuing an appropriate message if # it wants to stop the commit. # # To enable this hook, rename this file to "pre-commit". if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD else # Initial commit: diff against an empty tree object against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 fi # If you want to allow non-ASCII filenames set this variable to true. allownonascii=$(git config --bool hooks.allownonascii) # Redirect output to stderr. exec 1>&2 # Cross platform projects tend to avoid non-ASCII filenames; prevent # them from being added to the repository. We exploit the fact that the # printable range starts at the space character and ends with tilde. if [ "$allownonascii" != "true" ] && # Note that the use of brackets around a tr range is ok here, (it's # even required, for portability to Solaris 10's /usr/bin/tr), since # the square bracket bytes happen to fall in the designated range. test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 then cat <<\EOF Error: Attempt to add a non-ASCII file name. This can cause problems if you want to work with people on other platforms. To be portable it is advisable to rename the file. If you know what you are doing you can disable this check using: git config hooks.allownonascii true EOF exit 1 fi # If there are whitespace errors, print the offending file names and fail. exec git diff-index --check --cached $against -- sepa-direct-debit-20131216/.git/hooks/commit-msg.sample0000755000175000017500000000160012253612123020614 0ustar cybcyb#!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit" with one argument, the name of the file # that has the commit message. The hook should exit with non-zero # status after issuing an appropriate message if it wants to stop the # commit. The hook is allowed to edit the commit message file. # # To enable this hook, rename this file to "commit-msg". # Uncomment the below to add a Signed-off-by line to the message. # Doing this in a hook is a bad idea in general, but the prepare-commit-msg # hook is more suited to it. # # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" # This example catches duplicate Signed-off-by lines. test "" = "$(grep '^Signed-off-by: ' "$1" | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { echo >&2 Duplicate Signed-off-by lines. exit 1 } sepa-direct-debit-20131216/.git/hooks/applypatch-msg.sample0000755000175000017500000000070412253612123021475 0ustar cybcyb#!/bin/sh # # An example hook script to check the commit log message taken by # applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. The hook is # allowed to edit the commit message file. # # To enable this hook, rename this file to "applypatch-msg". . git-sh-setup test -x "$GIT_DIR/hooks/commit-msg" && exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"} : sepa-direct-debit-20131216/.git/hooks/pre-rebase.sample0000755000175000017500000001144212253612123020572 0ustar cybcyb#!/bin/sh # # Copyright (c) 2006, 2008 Junio C Hamano # # The "pre-rebase" hook is run just before "git rebase" starts doing # its job, and can prevent the command from running by exiting with # non-zero status. # # The hook is called with the following parameters: # # $1 -- the upstream the series was forked from. # $2 -- the branch being rebased (or empty when rebasing the current branch). # # This sample shows how to prevent topic branches that are already # merged to 'next' branch from getting rebased, because allowing it # would result in rebasing already published history. publish=next basebranch="$1" if test "$#" = 2 then topic="refs/heads/$2" else topic=`git symbolic-ref HEAD` || exit 0 ;# we do not interrupt rebasing detached HEAD fi case "$topic" in refs/heads/??/*) ;; *) exit 0 ;# we do not interrupt others. ;; esac # Now we are dealing with a topic branch being rebased # on top of master. Is it OK to rebase it? # Does the topic really exist? git show-ref -q "$topic" || { echo >&2 "No such branch $topic" exit 1 } # Is topic fully merged to master? not_in_master=`git rev-list --pretty=oneline ^master "$topic"` if test -z "$not_in_master" then echo >&2 "$topic is fully merged to master; better remove it." exit 1 ;# we could allow it, but there is no point. fi # Is topic ever merged to next? If so you should not be rebasing it. only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` only_next_2=`git rev-list ^master ${publish} | sort` if test "$only_next_1" = "$only_next_2" then not_in_topic=`git rev-list "^$topic" master` if test -z "$not_in_topic" then echo >&2 "$topic is already up-to-date with master" exit 1 ;# we could allow it, but there is no point. else exit 0 fi else not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` /usr/bin/perl -e ' my $topic = $ARGV[0]; my $msg = "* $topic has commits already merged to public branch:\n"; my (%not_in_next) = map { /^([0-9a-f]+) /; ($1 => 1); } split(/\n/, $ARGV[1]); for my $elem (map { /^([0-9a-f]+) (.*)$/; [$1 => $2]; } split(/\n/, $ARGV[2])) { if (!exists $not_in_next{$elem->[0]}) { if ($msg) { print STDERR $msg; undef $msg; } print STDERR " $elem->[1]\n"; } } ' "$topic" "$not_in_next" "$not_in_master" exit 1 fi <<\DOC_END This sample hook safeguards topic branches that have been published from being rewound. The workflow assumed here is: * Once a topic branch forks from "master", "master" is never merged into it again (either directly or indirectly). * Once a topic branch is fully cooked and merged into "master", it is deleted. If you need to build on top of it to correct earlier mistakes, a new topic branch is created by forking at the tip of the "master". This is not strictly necessary, but it makes it easier to keep your history simple. * Whenever you need to test or publish your changes to topic branches, merge them into "next" branch. The script, being an example, hardcodes the publish branch name to be "next", but it is trivial to make it configurable via $GIT_DIR/config mechanism. With this workflow, you would want to know: (1) ... if a topic branch has ever been merged to "next". Young topic branches can have stupid mistakes you would rather clean up before publishing, and things that have not been merged into other branches can be easily rebased without affecting other people. But once it is published, you would not want to rewind it. (2) ... if a topic branch has been fully merged to "master". Then you can delete it. More importantly, you should not build on top of it -- other people may already want to change things related to the topic as patches against your "master", so if you need further changes, it is better to fork the topic (perhaps with the same name) afresh from the tip of "master". Let's look at this example: o---o---o---o---o---o---o---o---o---o "next" / / / / / a---a---b A / / / / / / / / c---c---c---c B / / / / \ / / / / b---b C \ / / / / / \ / ---o---o---o---o---o---o---o---o---o---o---o "master" A, B and C are topic branches. * A has one fix since it was merged up to "next". * B has finished. It has been fully merged up to "master" and "next", and is ready to be deleted. * C has not merged to "next" at all. We would want to allow C to be rebased, refuse A, and encourage B to be deleted. To compute (1): git rev-list ^master ^topic next git rev-list ^master next if these match, topic has not merged in next at all. To compute (2): git rev-list master..topic if this is empty, it is fully merged to "master". DOC_END sepa-direct-debit-20131216/.git/refs/0000755000175000017500000000000012253612125015153 5ustar cybcybsepa-direct-debit-20131216/.git/refs/heads/0000755000175000017500000000000012253612125016237 5ustar cybcybsepa-direct-debit-20131216/.git/refs/heads/master0000644000175000017500000000005112253612125017451 0ustar cybcyb67f765992f6dbbe6c603b925b3265ffff98ab463 sepa-direct-debit-20131216/.git/refs/remotes/0000755000175000017500000000000012253612125016631 5ustar cybcybsepa-direct-debit-20131216/.git/refs/remotes/origin/0000755000175000017500000000000012253612125020120 5ustar cybcybsepa-direct-debit-20131216/.git/refs/remotes/origin/HEAD0000644000175000017500000000004012253612125020536 0ustar cybcybref: refs/remotes/origin/master sepa-direct-debit-20131216/.git/refs/tags/0000755000175000017500000000000012253612123016107 5ustar cybcybsepa-direct-debit-20131216/.git/packed-refs0000644000175000017500000000015312253612125016322 0ustar cybcyb# pack-refs with: peeled fully-peeled 67f765992f6dbbe6c603b925b3265ffff98ab463 refs/remotes/origin/master sepa-direct-debit-20131216/.git/branches/0000755000175000017500000000000012253612123015777 5ustar cybcybsepa-direct-debit-20131216/example.php0000644000175000017500000000162512253612125015523 0ustar cybcyb "Test", "IBAN" => "NL50BANK1234567890", "BIC" => "BANKNL2A", "batch" => true, "creditor_id" => "00000", "currency" => "EUR" ); $payment = array("name" => "Test von Testenstein", "IBAN" => "NL50BANK1234567890", "BIC" => "BANKNL2A", "amount" => "1000", "type" => "FRST", "collection_date" => date("Y-m-d"), "mandate_id" => "1234", "mandate_date" => date("Y-m-d"), "description" => "Test transaction" ); try{ $SEPASDD = new SEPASDD($config); $SEPASDD->addPayment($payment); print_r($SEPASDD->save()); }catch(Exception $e){ echo $e->getMessage(); exit; } ?> sepa-direct-debit-20131216/README.md0000644000175000017500000001456712253612125014647 0ustar cybcyb#SEPA SDD (Sepa Direct Debit) 2.0
Author:Congressus, The Netherlands
Date:14-05-2013
DescriptionA PHP class to create Sepa Direct Debit XML Files
##1. INSTALLATION SEPA SDD requires PHP 5, no other libraries are required. To install, copy the SEPASDD.php class to a folder on the webserver and include it as follows: ```php require_once([path_from_webroot_to_folder]/SEPASDD.php); ``` ##2. CONFIGURATION SEPA SSD requires a config array, which is validated on initiation. The following parameters are required: - name: The name of the creditor('s organization). - IBAN: The creditor's International Bank Account Number. - BIC: The creditor's Bank Identification Code. - batch: Whether to process as batch or as individual transactions . Allowed: true or false (MUST be boolean). - creditor_id: The creditor's id, contact your bank if you do not know this. - currency: The currency in which the amounts are defined. Allowed: ISO 4217. #####Note: When setting batch to true, SEPASDD will create a batch for each Direct Debit transaction type ("FRST","RCUR", etc). and required collection date. This means that all "FRST" transactions with collection date 2014-01-30 will be grouped in a batch. ####Example: ```php $config = array("name" => "Test", "IBAN" => "NL50BANK1234567890", "BIC" => "BANKNL2A", "batch" => true, "creditor_id" => "00000", "currency" => "EUR" ); ``` ##3. USAGE ###3.1 Initialization Create an instance of the class with an configuration as such: ```php try{ $SEPASDD = new SEPASDD($config); }catch(Exception $e){ echo $e->getMessage(); } ``` ###3.2 Create a payment SEPA SDD uses the addPayment method for creating payments, it requires a payment array. The following parameters are required: - name: The debtors name. - IBAN: The debtor's International Bank Account Number. - BIC: The debtor's Bank Identification Code. - amount: The amount to transfer from debtor to creditor (IN CENTS). Allowed: integers (NO SEPARATORS) e.g. EUR 10.00 has to be entered as 1000 - type: The type of Direct Debit Transaction Allowed: FRST (First), RCUR (Recurring), OOFF (One Off), FNAL (Final) - collection_date: The date at which the amount should be collected from the debtor. Allowed: ISO 8601 (YYYY-MM-DD). This date should be in the future, how far in the future is dependent on the type of Direct Debit. See the definition. - mandate_id: The ID of the written mandate from the debtor. - mandate_date: The date the mandate was signed. Allowed: ISO 8601 (YYYY-MM-DD). For mandates before SEPA requirements this is: 2009-11-01. - description: The description of the transaction. ####Example: ```php $payment = array("name" => "Test von Testenstein", "IBAN" => "NL50BANK1234567890", "BIC" => "BANKNL2A", "amount" => "1000", "type" => "FRST", "collection_date" => "2013-07-12", "mandate_id" => "1234", "mandate_date" => "2009-11-01", "description" => "Test Transaction" ); ``` Then use the addPayment method to add the payment to the file: ####Example: ```php try{ $SEPASDD->addPayment($payment); }catch(Exception $e){ echo $e->getMessage(); } ``` You can use this method multiple times to add more payments. ###3.3 Save the file To save the file, use the "save" method, this will return the XML as a string. If you want to save to file, you have to do this yourself. ####Example: ```php try{ $SEPASDD->save(); }catch(Exception $e){ echo $e->getMessage(); } ``` After this, please reinitialize the class if you want to create another file. ###3.4 Adding custom fields SEPA SDD has a special method for adding custom fields. This method is called addCustomNode. The required arguments are: - parent_XPATH: The XPATH selector of the parent. - name: The node/tag name. - value: Its value, default "". - attr: An array containing key => value pairs defining the attributes. ####Example: Add the postal address for a Debtor ```php try{ $SEPASDD->addCustomNode("//Document/CstmrDrctDbtInitn/PmtInf[last()]/DrctDbtTxInf[last()]/Dbtr","PstlAdr"); $SEPASDD->addCustomNode("//Document/CstmrDrctDbtInitn/PmtInf[last()]/DrctDbtTxInf[last()]/Dbtr/PstlAdr","AdrLine","Rode Weeshuisstraat 25"); $SEPASDD->addCustomNode("//Document/CstmrDrctDbtInitn/PmtInf[last()]/DrctDbtTxInf[last()]/Dbtr/PstlAdr","AdrLine","9712 ET Groningen"); }catch(Exception $e){ echo $e->getMessage(); } ``` Will create ```xml Rode Weeshuisstraat 25 9712 ET Groningen ``` ###3.5 Validation To validate against the pain.008.001.02 schema definition, you can use the validate() method. This requires the XML as string as argument. ####Example ```php try{ $xml = $SEPASDD->save(); $validation = $SEPASDD->validate($xml); print_r($validation); }catch(Exception $e){ echo $e->getMessage(); } ``` ##4 LICENSE MIT LICENSE Copyright (c) 2013 Congressus, The Netherlands Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. sepa-direct-debit-20131216/pain.008.001.02.xsd0000644000175000017500000012602412253612125016054 0ustar cybcyb