Skip to content

Commit 394a302

Browse files
committed
Fix en forma en que se detectan nodos hijos en nodos gemelos. Se añade test para probar orígenes específicos de XML agregando, por ahora, un ejemplo de DTE oficial del SII de Chile.
1 parent 962615a commit 394a302

5 files changed

Lines changed: 430 additions & 5 deletions

File tree

src/Service/XmlDecoder.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,19 +126,19 @@ private function arrayAddChilds(
126126

127127
// Check if the child node is scalar. If it is, add it
128128
// directly to the list.
129-
$textContent = trim($child->textContent);
130-
if ($textContent !== '') {
129+
if ($child->childElementCount === 0) {
130+
$textContent = trim($child->textContent);
131131
$data[$key][$child->tagName][] = $textContent;
132132
}
133133
// If the child node is scalar, not a list of nodes, it is
134134
// built as if it were a normal array with the call to
135135
// decode().
136136
else {
137-
$siguiente = count($data[$key][$child->tagName]);
138-
$data[$key][$child->tagName][$siguiente] = [];
137+
$nextIndex = count($data[$key][$child->tagName]);
138+
$data[$key][$child->tagName][$nextIndex] = [];
139139
self::decode(
140140
$child,
141-
$data[$key][$child->tagName][$siguiente],
141+
$data[$key][$child->tagName][$nextIndex],
142142
true
143143
);
144144
}

tests/fixtures/encode_and_decode.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,18 @@
7272
'expected' => ['root' => ['item' => ['value1', 'value2', 'value3']]],
7373
'expectedException' => null,
7474
],
75+
// Case with multiple repeated complex nodes (each node has children).
76+
'repeated_complex_nodes' => [
77+
'data' => ['root' => ['item' => [
78+
['id' => '1', 'name' => 'A'],
79+
['id' => '2', 'name' => 'B'],
80+
]]],
81+
'expected' => ['root' => ['item' => [
82+
0 => ['id' => '1', 'name' => 'A'],
83+
1 => ['id' => '2', 'name' => 'B'],
84+
]]],
85+
'expectedException' => null,
86+
],
7587
],
7688

7789
// Casos para testArrayToXmlSaveXml().
@@ -303,6 +315,15 @@
303315
'expected' => ['root' => ['item' => ['value1', 'value2', 'value3']]],
304316
'expectedException' => null,
305317
],
318+
// Case with multiple repeated complex nodes (each node has children).
319+
'repeated_complex_nodes' => [
320+
'xmlContent' => '<?xml version="1.0" encoding="ISO-8859-1"?><root><item><id>1</id><name>A</name></item><item><id>2</id><name>B</name></item></root>',
321+
'expected' => ['root' => ['item' => [
322+
0 => ['id' => '1', 'name' => 'A'],
323+
1 => ['id' => '2', 'name' => 'B'],
324+
]]],
325+
'expectedException' => null,
326+
],
306327
],
307328

308329
// Casos para testXmlToSaveXml().
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* Derafu: XML - Library for XML manipulation.
7+
*
8+
* Copyright (c) 2025 Esteban De La Fuente Rubio / Derafu <https://www.derafu.dev>
9+
* Licensed under the MIT License.
10+
* See LICENSE file for more details.
11+
*/
12+
13+
use PHPUnit\Framework\TestCase;
14+
15+
/**
16+
* Assertions for F60T33-ejemplo-oficial-SII.xml.
17+
*
18+
* Receives the full decoded array of the XML and runs the validations.
19+
*/
20+
return function (TestCase $test, array $xml): void {
21+
$env = $xml['EnvioDTE'];
22+
$doc = $env['SetDTE']['DTE']['Documento'];
23+
$enc = $doc['Encabezado'];
24+
$totales = $enc['Totales'];
25+
$detalle = $doc['Detalle'];
26+
27+
// --- EnvioDTE header ---
28+
$test->assertArrayHasKey('@attributes', $env);
29+
$test->assertSame('1.0', $env['@attributes']['version']);
30+
31+
// --- IdDoc ---
32+
$test->assertSame('33', $enc['IdDoc']['TipoDTE']);
33+
$test->assertSame('60', $enc['IdDoc']['Folio']);
34+
$test->assertSame('2003-10-13', $enc['IdDoc']['FchEmis']);
35+
36+
// --- Emisor ---
37+
$test->assertSame('97975000-5', $enc['Emisor']['RUTEmisor']);
38+
$test->assertSame('RUT DE PRUEBA', $enc['Emisor']['RznSoc']);
39+
$test->assertSame('Santiago', $enc['Emisor']['CmnaOrigen']);
40+
41+
// --- Receptor ---
42+
$test->assertSame('77777777-7', $enc['Receptor']['RUTRecep']);
43+
$test->assertSame('EMPRESA LTDA', $enc['Receptor']['RznSocRecep']);
44+
45+
// --- Totales ---
46+
$test->assertSame('100000', $totales['MntNeto']);
47+
$test->assertSame('19', $totales['TasaIVA']);
48+
$test->assertSame('19000', $totales['IVA']);
49+
$test->assertSame('119000', $totales['MntTotal']);
50+
51+
// --- Detalle: must be an array of complex nodes, not strings ---
52+
$test->assertIsArray($detalle, 'Detalle must be an array.');
53+
$test->assertCount(3, $detalle, 'There must be 3 Detalle lines.');
54+
55+
// Each item must be an array with the expected keys, not a string.
56+
foreach ($detalle as $i => $item) {
57+
$test->assertIsArray($item, "Detalle[$i] must be an array, not a string.");
58+
$test->assertArrayHasKey('NroLinDet', $item, "Detalle[$i] must have NroLinDet.");
59+
$test->assertArrayHasKey('NmbItem', $item, "Detalle[$i] must have NmbItem.");
60+
$test->assertArrayHasKey('QtyItem', $item, "Detalle[$i] must have QtyItem.");
61+
$test->assertArrayHasKey('PrcItem', $item, "Detalle[$i] must have PrcItem.");
62+
$test->assertArrayHasKey('MontoItem', $item, "Detalle[$i] must have MontoItem.");
63+
}
64+
65+
// Specific assertions for each line.
66+
$test->assertSame('1', $detalle[0]['NroLinDet']);
67+
$test->assertSame('Parlantes Multimedia 180W.', $detalle[0]['NmbItem']);
68+
$test->assertSame('20', $detalle[0]['QtyItem']);
69+
$test->assertSame('4500', $detalle[0]['PrcItem']);
70+
$test->assertSame('90000', $detalle[0]['MontoItem']);
71+
72+
$test->assertSame('2', $detalle[1]['NroLinDet']);
73+
$test->assertSame('Mouse Inalambrico PS/2', $detalle[1]['NmbItem']);
74+
$test->assertSame('1', $detalle[1]['QtyItem']);
75+
$test->assertSame('5000', $detalle[1]['PrcItem']);
76+
$test->assertSame('5000', $detalle[1]['MontoItem']);
77+
78+
$test->assertSame('3', $detalle[2]['NroLinDet']);
79+
$test->assertSame('Caja de Diskettes 10 Unidades', $detalle[2]['NmbItem']);
80+
$test->assertSame('5', $detalle[2]['QtyItem']);
81+
$test->assertSame('1000', $detalle[2]['PrcItem']);
82+
$test->assertSame('5000', $detalle[2]['MontoItem']);
83+
84+
// Each Detalle has CdgItem with a nested structure (not a string).
85+
$test->assertIsArray($detalle[0]['CdgItem']);
86+
$test->assertSame('INT1', $detalle[0]['CdgItem']['TpoCodigo']);
87+
$test->assertSame('011', $detalle[0]['CdgItem']['VlrCodigo']);
88+
89+
// --- TED ---
90+
$test->assertArrayHasKey('TED', $doc);
91+
$test->assertSame('97975000-5', $doc['TED']['DD']['RE']);
92+
$test->assertSame('33', $doc['TED']['DD']['TD']);
93+
$test->assertSame('60', $doc['TED']['DD']['F']);
94+
$test->assertSame('119000', $doc['TED']['DD']['MNT']);
95+
};
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
<?xml version="1.0" encoding="ISO-8859-1"?>
2+
<EnvioDTE xmlns="http://www.sii.cl/SiiDte" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sii.cl/SiiDte EnvioDTE_v10.xsd" version="1.0">
3+
<SetDTE ID="SetDoc">
4+
<Caratula version="1.0">
5+
<RutEmisor>97975000-5</RutEmisor>
6+
<RutEnvia>7880442-4</RutEnvia>
7+
<RutReceptor>60803000-K</RutReceptor>
8+
<FchResol>2003-09-02</FchResol>
9+
<NroResol>0</NroResol>
10+
<TmstFirmaEnv>2003-10-13T09:33:22</TmstFirmaEnv>
11+
<SubTotDTE>
12+
<TpoDTE>33</TpoDTE>
13+
<NroDTE>1</NroDTE>
14+
</SubTotDTE>
15+
</Caratula>
16+
<DTE version="1.0">
17+
<Documento ID="F60T33">
18+
<Encabezado>
19+
<IdDoc>
20+
<TipoDTE>33</TipoDTE>
21+
<Folio>60</Folio>
22+
<FchEmis>2003-10-13</FchEmis>
23+
</IdDoc>
24+
<Emisor>
25+
<RUTEmisor>97975000-5</RUTEmisor>
26+
<RznSoc>RUT DE PRUEBA</RznSoc>
27+
<GiroEmis>Insumos de Computacion</GiroEmis>
28+
<Acteco>31341</Acteco>
29+
<CdgSIISucur>1234</CdgSIISucur>
30+
<DirOrigen>Teatinos 120, Piso 4</DirOrigen>
31+
<CmnaOrigen>Santiago</CmnaOrigen>
32+
<CiudadOrigen>Santiago</CiudadOrigen>
33+
</Emisor>
34+
<Receptor>
35+
<RUTRecep>77777777-7</RUTRecep>
36+
<RznSocRecep>EMPRESA LTDA</RznSocRecep>
37+
<GiroRecep>COMPUTACION</GiroRecep>
38+
<DirRecep>SAN DIEGO 2222</DirRecep>
39+
<CmnaRecep>LA FLORIDA</CmnaRecep>
40+
<CiudadRecep>SANTIAGO</CiudadRecep>
41+
</Receptor>
42+
<Totales>
43+
<MntNeto>100000</MntNeto>
44+
<TasaIVA>19</TasaIVA>
45+
<IVA>19000</IVA>
46+
<MntTotal>119000</MntTotal>
47+
</Totales>
48+
</Encabezado>
49+
<Detalle>
50+
<NroLinDet>1</NroLinDet>
51+
<CdgItem>
52+
<TpoCodigo>INT1</TpoCodigo>
53+
<VlrCodigo>011</VlrCodigo>
54+
</CdgItem>
55+
<NmbItem>Parlantes Multimedia 180W.</NmbItem>
56+
<DscItem/>
57+
<QtyItem>20</QtyItem>
58+
<PrcItem>4500</PrcItem>
59+
<MontoItem>90000</MontoItem>
60+
</Detalle>
61+
<Detalle>
62+
<NroLinDet>2</NroLinDet>
63+
<CdgItem>
64+
<TpoCodigo>INT1</TpoCodigo>
65+
<VlrCodigo>0231</VlrCodigo>
66+
</CdgItem>
67+
<NmbItem>Mouse Inalambrico PS/2</NmbItem>
68+
<DscItem/>
69+
<QtyItem>1</QtyItem>
70+
<PrcItem>5000</PrcItem>
71+
<MontoItem>5000</MontoItem>
72+
</Detalle>
73+
<Detalle>
74+
<NroLinDet>3</NroLinDet>
75+
<CdgItem>
76+
<TpoCodigo>INT1</TpoCodigo>
77+
<VlrCodigo>1515</VlrCodigo>
78+
</CdgItem>
79+
<NmbItem>Caja de Diskettes 10 Unidades</NmbItem>
80+
<DscItem/>
81+
<QtyItem>5</QtyItem>
82+
<PrcItem>1000</PrcItem>
83+
<MontoItem>5000</MontoItem>
84+
</Detalle>
85+
<TED version="1.0">
86+
<DD>
87+
<RE>97975000-5</RE>
88+
<TD>33</TD>
89+
<F>60</F>
90+
<FE>2003-10-13</FE>
91+
<RR>77777777-7</RR>
92+
<RSR>EMPRESA LTDA</RSR>
93+
<MNT>119000</MNT>
94+
<IT1>Parlantes Multimedia 180W.</IT1>
95+
<CAF version="1.0">
96+
<DA>
97+
<RE>97975000-5</RE>
98+
<RS>RUT DE PRUEBA</RS>
99+
<TD>33</TD>
100+
<RNG>
101+
<D>1</D>
102+
<H>200</H>
103+
</RNG>
104+
<FA>2003-09-04</FA>
105+
<RSAPK>
106+
<M>0a4O6Kbx8Qj3K4iWSP4w7KneZYeJ+g/prihYtIEolKt3cykSxl1zO8vSXu397QhTmsX7SBEudTUx++2zDXBhZw==</M>
107+
<E>Aw==</E>
108+
</RSAPK>
109+
<IDK>100</IDK>
110+
</DA>
111+
<FRMA algoritmo="SHA1withRSA">g1AQX0sy8NJugX52k2hTJEZAE9Cuul6pqYBdFxj1N17umW7zG/hAavCALKByHzdYAfZ3LhGTXCai5zNxOo4lDQ==</FRMA>
112+
</CAF>
113+
<TSTED>2003-10-13T09:33:20</TSTED>
114+
</DD>
115+
<FRMT algoritmo="SHA1withRSA">GbmDcS9e/jVC2LsLIe1iRV12Bf6lxsILtbQiCkh6mbjckFCJ7fj/kakFTS06Jo8i
116+
S4HXvJj3oYZuey53Krniew==</FRMT>
117+
</TED>
118+
<TmstFirma>2003-10-13T09:33:20</TmstFirma>
119+
</Documento>
120+
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
121+
<SignedInfo>
122+
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
123+
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
124+
<Reference URI="#F60T33">
125+
<Transforms>
126+
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
127+
</Transforms>
128+
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
129+
<DigestValue>hlmQtu/AyjUjTDhM3852wvRCr8w=</DigestValue>
130+
</Reference>
131+
</SignedInfo>
132+
<SignatureValue>JG1Ig0pvSIH85kIKGRZUjkyX6CNaY08Y94j4UegTgDe8+wl61GzqjdR1rfOK9BGn93AMOo6aiAgolW0k/XklNVtM/ZzpNNS3d/fYVa1q509mAMSXbelxSM3bjoa7H6Wzd/mV1PpQ8zK5gw7mgMMP4IKxHyS92G81GEguSmzcQmA=</SignatureValue>
133+
<KeyInfo>
134+
<KeyValue>
135+
<RSAKeyValue>
136+
<Modulus>
137+
tNEknkb1kHiD1OOAWlLKkcH/UP5UGa6V6MYso++JB+vYMg2OXFROAF7G8BNFFPQx
138+
iuS/7y1azZljN2xq+bW3bAou1bW2ij7fxSXWTJYFZMAyndbLyGHM1e3nVmwpgEpx
139+
BHhZzPvwLb55st1wceuKjs2Ontb13J33sUb7bbJMWh0=
140+
</Modulus>
141+
<Exponent>
142+
AQAB
143+
</Exponent>
144+
</RSAKeyValue>
145+
</KeyValue>
146+
<X509Data>
147+
<X509Certificate>MIIEgjCCA+ugAwIBAgIEAQAApzANBgkqhkiG9w0BAQUFADCBtTELMAkGA1UEBhMC
148+
Q0wxHTAbBgNVBAgUFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHFAhTYW50
149+
aWFnbzEUMBIGA1UEChQLRS1DRVJUQ0hJTEUxIDAeBgNVBAsUF0F1dG9yaWRhZCBD
150+
ZXJ0aWZpY2Fkb3JhMRcwFQYDVQQDFA5FLUNFUlRDSElMRSBDQTEjMCEGCSqGSIb3
151+
DQEJARYUZW1haWxAZS1jZXJ0Y2hpbGUuY2wwHhcNMDMxMDAxMTg1ODE1WhcNMDQw
152+
OTMwMDAwMDAwWjCBuDELMAkGA1UEBhMCQ0wxFjAUBgNVBAgUDU1ldHJvcG9saXRh
153+
bmExETAPBgNVBAcUCFNhbnRpYWdvMScwJQYDVQQKFB5TZXJ2aWNpbyBkZSBJbXB1
154+
ZXN0b3MgSW50ZXJub3MxDzANBgNVBAsUBlBpc28gNDEjMCEGA1UEAxQaV2lsaWJh
155+
bGRvIEdvbnphbGV6IENhYnJlcmExHzAdBgkqhkiG9w0BCQEWEHdnb256YWxlekBz
156+
aWkuY2wwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALxZlVh1xr9sKQIBDF/6
157+
Va+lsHQSG5AAmCWvtNTIOXN3E9EQCy7pOPHrDg6EusvoHyesZSKJbc0TnIFXZp78
158+
q7mbdHijzKqvMmyvwbdP7KK8LQfwf84W4v9O8MJeUHlbJGlo5nFACrPAeTtONbHa
159+
ReyzeMDv2EganNEDJc9c+UNfAgMBAAGjggGYMIIBlDAjBgNVHREEHDAaoBgGCCsG
160+
AQQBwQEBoAwWCjA3ODgwNDQyLTQwCQYDVR0TBAIwADA8BgNVHR8ENTAzMDGgL6At
161+
hitodHRwOi8vY3JsLmUtY2VydGNoaWxlLmNsL2UtY2VydGNoaWxlY2EuY3JsMCMG
162+
A1UdEgQcMBqgGAYIKwYBBAHBAQKgDBYKOTY5MjgxODAtNTAfBgNVHSMEGDAWgBTg
163+
KP3S4GBPs0brGsz1CJEHcjodCDCB0AYDVR0gBIHIMIHFMIHCBggrBgEEAcNSBTCB
164+
tTAvBggrBgEFBQcCARYjaHR0cDovL3d3dy5lLWNlcnRjaGlsZS5jbC8yMDAwL0NQ
165+
Uy8wgYEGCCsGAQUFBwICMHUac0VsIHRpdHVsYXIgaGEgc2lkbyB2YWxpZG8gZW4g
166+
Zm9ybWEgcHJlc2VuY2lhbCwgcXVlZGFuZG8gZWwgQ2VydGlmaWNhZG8gcGFyYSB1
167+
c28gdHJpYnV0YXJpbywgcGFnb3MsIGNvbWVyY2lvIHkgb3Ryb3MwCwYDVR0PBAQD
168+
AgTwMA0GCSqGSIb3DQEBBQUAA4GBABMfCyJF0mNXcov8iEWvjGFyyPTsXwvsYbbk
169+
OJ41wjaGOFMCInb4WY0ngM8BsDV22bGMs8oLyX7rVy16bGA8Z7WDUtYhoOM7mqXw
170+
/Hrpqjh3JgAf8zqdzBdH/q6mAbdvq/yb04JHKWPC7fMFuBoeyVWAnhmuMZfReWQi
171+
MUEHGGIW</X509Certificate>
172+
</X509Data>
173+
</KeyInfo>
174+
</Signature></DTE>
175+
</SetDTE><Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
176+
<SignedInfo>
177+
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
178+
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
179+
<Reference URI="#SetDoc">
180+
<Transforms>
181+
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
182+
</Transforms>
183+
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
184+
<DigestValue>4OTWXyRl5fw3htjTyZXQtYEsC3E=</DigestValue>
185+
</Reference>
186+
</SignedInfo>
187+
<SignatureValue>sBnr8Yq14vVAcrN/pKLD/BrqUFczKMW3y1t3JOrdsxhhq6IxvS13SgyMXbIN/T9ciRaFgNabs3pi732XhcpeiSmD1ktzbRctEbSIszYkFJY49k0eB+TVzq3eVaQr4INrymfuOnWj78BZcwKuXvDy4iAcx6/TBbAAkPFwMP9ql2s=</SignatureValue>
188+
<KeyInfo>
189+
<KeyValue>
190+
<RSAKeyValue>
191+
<Modulus>
192+
tNEknkb1kHiD1OOAWlLKkcH/UP5UGa6V6MYso++JB+vYMg2OXFROAF7G8BNFFPQx
193+
iuS/7y1azZljN2xq+bW3bAou1bW2ij7fxSXWTJYFZMAyndbLyGHM1e3nVmwpgEpx
194+
BHhZzPvwLb55st1wceuKjs2Ontb13J33sUb7bbJMWh0=
195+
</Modulus>
196+
<Exponent>
197+
AQAB
198+
</Exponent>
199+
</RSAKeyValue>
200+
</KeyValue>
201+
<X509Data>
202+
<X509Certificate>MIIEgjCCA+ugAwIBAgIEAQAApzANBgkqhkiG9w0BAQUFADCBtTELMAkGA1UEBhMC
203+
Q0wxHTAbBgNVBAgUFFJlZ2lvbiBNZXRyb3BvbGl0YW5hMREwDwYDVQQHFAhTYW50
204+
aWFnbzEUMBIGA1UEChQLRS1DRVJUQ0hJTEUxIDAeBgNVBAsUF0F1dG9yaWRhZCBD
205+
ZXJ0aWZpY2Fkb3JhMRcwFQYDVQQDFA5FLUNFUlRDSElMRSBDQTEjMCEGCSqGSIb3
206+
DQEJARYUZW1haWxAZS1jZXJ0Y2hpbGUuY2wwHhcNMDMxMDAxMTg1ODE1WhcNMDQw
207+
OTMwMDAwMDAwWjCBuDELMAkGA1UEBhMCQ0wxFjAUBgNVBAgUDU1ldHJvcG9saXRh
208+
bmExETAPBgNVBAcUCFNhbnRpYWdvMScwJQYDVQQKFB5TZXJ2aWNpbyBkZSBJbXB1
209+
ZXN0b3MgSW50ZXJub3MxDzANBgNVBAsUBlBpc28gNDEjMCEGA1UEAxQaV2lsaWJh
210+
bGRvIEdvbnphbGV6IENhYnJlcmExHzAdBgkqhkiG9w0BCQEWEHdnb256YWxlekBz
211+
aWkuY2wwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALxZlVh1xr9sKQIBDF/6
212+
Va+lsHQSG5AAmCWvtNTIOXN3E9EQCy7pOPHrDg6EusvoHyesZSKJbc0TnIFXZp78
213+
q7mbdHijzKqvMmyvwbdP7KK8LQfwf84W4v9O8MJeUHlbJGlo5nFACrPAeTtONbHa
214+
ReyzeMDv2EganNEDJc9c+UNfAgMBAAGjggGYMIIBlDAjBgNVHREEHDAaoBgGCCsG
215+
AQQBwQEBoAwWCjA3ODgwNDQyLTQwCQYDVR0TBAIwADA8BgNVHR8ENTAzMDGgL6At
216+
hitodHRwOi8vY3JsLmUtY2VydGNoaWxlLmNsL2UtY2VydGNoaWxlY2EuY3JsMCMG
217+
A1UdEgQcMBqgGAYIKwYBBAHBAQKgDBYKOTY5MjgxODAtNTAfBgNVHSMEGDAWgBTg
218+
KP3S4GBPs0brGsz1CJEHcjodCDCB0AYDVR0gBIHIMIHFMIHCBggrBgEEAcNSBTCB
219+
tTAvBggrBgEFBQcCARYjaHR0cDovL3d3dy5lLWNlcnRjaGlsZS5jbC8yMDAwL0NQ
220+
Uy8wgYEGCCsGAQUFBwICMHUac0VsIHRpdHVsYXIgaGEgc2lkbyB2YWxpZG8gZW4g
221+
Zm9ybWEgcHJlc2VuY2lhbCwgcXVlZGFuZG8gZWwgQ2VydGlmaWNhZG8gcGFyYSB1
222+
c28gdHJpYnV0YXJpbywgcGFnb3MsIGNvbWVyY2lvIHkgb3Ryb3MwCwYDVR0PBAQD
223+
AgTwMA0GCSqGSIb3DQEBBQUAA4GBABMfCyJF0mNXcov8iEWvjGFyyPTsXwvsYbbk
224+
OJ41wjaGOFMCInb4WY0ngM8BsDV22bGMs8oLyX7rVy16bGA8Z7WDUtYhoOM7mqXw
225+
/Hrpqjh3JgAf8zqdzBdH/q6mAbdvq/yb04JHKWPC7fMFuBoeyVWAnhmuMZfReWQi
226+
MUEHGGIW</X509Certificate>
227+
</X509Data>
228+
</KeyInfo>
229+
</Signature></EnvioDTE>

0 commit comments

Comments
 (0)