IDT2PO split to IDTDiff and IDTExtract
This commit is contained in:
parent
2825aea682
commit
9cd1fa468b
169
MSI.wsf
169
MSI.wsf
@ -456,12 +456,12 @@
|
|||||||
WScript.Quit(0);
|
WScript.Quit(0);
|
||||||
]]></script>
|
]]></script>
|
||||||
</job>
|
</job>
|
||||||
<job id="IDT2PO">
|
<job id="IDTDiff">
|
||||||
<runtime>
|
<runtime>
|
||||||
<description>Extract strings to translate. If already translated IDT file is available, extract translations of matching rows (by IDT key column(s)).</description>
|
<description>Extract strings to translate by comparing two IDT files.</description>
|
||||||
<unnamed name="<output.po>" helpstring="Output PO file" required="true"/>
|
<unnamed name="<output.po>" helpstring="Output PO file" required="true"/>
|
||||||
<unnamed name="<source.idt>" helpstring="Original IDT file" required="true"/>
|
<unnamed name="<source.idt>" helpstring="Original IDT file" required="true"/>
|
||||||
<unnamed name="<destination.idt>" helpstring="Translated IDT file" required="false"/>
|
<unnamed name="<destination.idt>" helpstring="Translated IDT file" required="true"/>
|
||||||
<named name="L" helpstring="Language identifier" type="string" required="false"/>
|
<named name="L" helpstring="Language identifier" type="string" required="false"/>
|
||||||
</runtime>
|
</runtime>
|
||||||
<reference object="ADODB.Stream"/>
|
<reference object="ADODB.Stream"/>
|
||||||
@ -469,6 +469,78 @@
|
|||||||
<script language="JScript" src="IDT.js"/>
|
<script language="JScript" src="IDT.js"/>
|
||||||
<script language="JScript" src="PO.js"/>
|
<script language="JScript" src="PO.js"/>
|
||||||
<script language="JScript" src="String.js"/>
|
<script language="JScript" src="String.js"/>
|
||||||
|
<script language="JScript"><![CDATA[
|
||||||
|
if (WScript.Arguments.Unnamed.Length < 3) {
|
||||||
|
WScript.Arguments.ShowUsage();
|
||||||
|
WScript.Quit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
var
|
||||||
|
fso = WScript.CreateObject("Scripting.FileSystemObject"),
|
||||||
|
po_path = WScript.Arguments.Unnamed(0);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Open and parse IDT file(s).
|
||||||
|
var
|
||||||
|
idt_src_path = WScript.Arguments.Unnamed(1),
|
||||||
|
idt_src = new IDT(idt_src_path),
|
||||||
|
idt_dst = new IDT(WScript.Arguments.Unnamed(2));
|
||||||
|
|
||||||
|
// IDT files must represent identical table.
|
||||||
|
if (idt_src.columns.toString() != idt_dst.columns.toString() ||
|
||||||
|
idt_src.types .toString() != idt_dst.types .toString() ||
|
||||||
|
idt_src.table != idt_dst.table ||
|
||||||
|
idt_src.key .toString() != idt_dst.key .toString())
|
||||||
|
throw new Error("IDT files are not compatible.");
|
||||||
|
|
||||||
|
var po = new POCatalog();
|
||||||
|
|
||||||
|
// Add header.
|
||||||
|
po.push("",
|
||||||
|
"MIME-Version: 1.0\n" +
|
||||||
|
"Content-Type: text/plain; charset=" + po.charset + "\n" +
|
||||||
|
"Content-Transfer-Encoding: 8bit\n" +
|
||||||
|
(WScript.Arguments.Named.Exists("L") ? "Language: "+ WScript.Arguments.Named("L") +"\n" : ""), false);
|
||||||
|
|
||||||
|
// Build translations.
|
||||||
|
for (var key in idt_src.data) {
|
||||||
|
if (key in idt_dst.data) {
|
||||||
|
// We found a record in both IDT files.
|
||||||
|
for (var col in idt_src.types)
|
||||||
|
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
||||||
|
po.push(idt_src.data[key][col], idt_dst.data[key][col], false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||||
|
} else {
|
||||||
|
// The record is available in the source IDT file only.
|
||||||
|
for (var col in idt_src.types)
|
||||||
|
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
||||||
|
po.push(idt_src.data[key][col], "", false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save to file.
|
||||||
|
po.save(po_path);
|
||||||
|
} catch (err) {
|
||||||
|
// In case of error, delete output file.
|
||||||
|
if (fso.FileExists(po_path))
|
||||||
|
fso.DeleteFile(po_path);
|
||||||
|
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
|
||||||
|
WScript.Quit(0);
|
||||||
|
]]></script>
|
||||||
|
</job>
|
||||||
|
<job id="IDTExtract">
|
||||||
|
<runtime>
|
||||||
|
<description>Extract strings to translate.</description>
|
||||||
|
<unnamed name="<output.po>" helpstring="Output PO file" required="true"/>
|
||||||
|
<unnamed name="<source.idt>..." helpstring="Source IDT files" required="true"/>
|
||||||
|
</runtime>
|
||||||
|
<reference object="ADODB.Stream"/>
|
||||||
|
<reference object="Scripting.FileSystemObject"/>
|
||||||
|
<script language="JScript" src="IDT.js"/>
|
||||||
|
<script language="JScript" src="PO.js"/>
|
||||||
|
<script language="JScript" src="String.js"/>
|
||||||
<script language="JScript"><![CDATA[
|
<script language="JScript"><![CDATA[
|
||||||
if (WScript.Arguments.Unnamed.Length < 2) {
|
if (WScript.Arguments.Unnamed.Length < 2) {
|
||||||
WScript.Arguments.ShowUsage();
|
WScript.Arguments.ShowUsage();
|
||||||
@ -480,45 +552,34 @@
|
|||||||
po_path = WScript.Arguments.Unnamed(0);
|
po_path = WScript.Arguments.Unnamed(0);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Open and parse IDT file(s).
|
|
||||||
var
|
|
||||||
idt_src_path = WScript.Arguments.Unnamed(1),
|
|
||||||
idt_src = new IDT(idt_src_path),
|
|
||||||
idt_dst;
|
|
||||||
|
|
||||||
if (WScript.Arguments.Unnamed.Length >= 3) {
|
|
||||||
idt_dst = new IDT(WScript.Arguments.Unnamed(2));
|
|
||||||
|
|
||||||
// IDT files must represent identical table.
|
|
||||||
if (idt_src.columns.toString() != idt_dst.columns.toString() ||
|
|
||||||
idt_src.types .toString() != idt_dst.types .toString() ||
|
|
||||||
idt_src.table != idt_dst.table ||
|
|
||||||
idt_src.key .toString() != idt_dst.key .toString())
|
|
||||||
throw new Error("IDT files are not compatible.");
|
|
||||||
} else
|
|
||||||
idt_dst = null;
|
|
||||||
|
|
||||||
var po = new POCatalog();
|
var po = new POCatalog();
|
||||||
|
|
||||||
// Add header.
|
// Add header.
|
||||||
po.push("",
|
po.push("",
|
||||||
"MIME-Version: 1.0\n" +
|
"MIME-Version: 1.0\n" +
|
||||||
"Content-Type: text/plain; charset=" + po.charset + "\n" +
|
"Content-Type: text/plain; charset=" + po.charset + "\n" +
|
||||||
"Content-Transfer-Encoding: 8bit\n" +
|
"Content-Transfer-Encoding: 8bit\n", false);
|
||||||
(WScript.Arguments.Named.Exists("L") ? "Language: "+ WScript.Arguments.Named("L") +"\n" : ""), false);
|
|
||||||
|
|
||||||
// Build translations.
|
// Build translations.
|
||||||
|
for (var i = 1, argc = WScript.Arguments.Unnamed.Length; i < argc; i++) {
|
||||||
|
// Open and parse IDT file(s).
|
||||||
|
var
|
||||||
|
idt_src_path = WScript.Arguments.Unnamed(i),
|
||||||
|
idt_src = new IDT(idt_src_path);
|
||||||
|
|
||||||
for (var key in idt_src.data) {
|
for (var key in idt_src.data) {
|
||||||
if (idt_dst != null && (key in idt_dst.data)) {
|
|
||||||
// We found a record in both IDT files.
|
|
||||||
for (var col in idt_src.types)
|
for (var col in idt_src.types)
|
||||||
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "") {
|
||||||
po.push(idt_src.data[key][col], idt_dst.data[key][col], false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
var src = idt_src.data[key][col];
|
||||||
|
var t = po.search(src);
|
||||||
|
if (t) {
|
||||||
|
// Text-to-translate already present. Add source to the list.
|
||||||
|
t["#"] += " " + idt_src_path + ":" + idt_src.linenum[key];
|
||||||
} else {
|
} else {
|
||||||
// The record is available in the source IDT file only (or there is no destination IDT).
|
// Add text-to-translate.
|
||||||
for (var col in idt_src.types)
|
po.push(src, "", false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||||
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
}
|
||||||
po.push(idt_src.data[key][col], "", false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -609,8 +670,8 @@
|
|||||||
** SIG ** MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
** SIG ** MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
||||||
** SIG ** DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
** SIG ** DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
||||||
** SIG ** gjcCAR4wJAIBAQQQcAVhGs441BGiowAQS9NQkAIBAAIB
|
** SIG ** gjcCAR4wJAIBAQQQcAVhGs441BGiowAQS9NQkAIBAAIB
|
||||||
** SIG ** AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFEuDcHZyRyXZ
|
** SIG ** AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFPyqg1blxmZh
|
||||||
** SIG ** zF25+zdkgilPy7bQoIISyDCCA+4wggNXoAMCAQICEH6T
|
** SIG ** YaA24HdU6DcuolSfoIISyDCCA+4wggNXoAMCAQICEH6T
|
||||||
** SIG ** 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
** SIG ** 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
||||||
** SIG ** CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
** SIG ** CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
||||||
** SIG ** cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
** SIG ** cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
||||||
@ -764,31 +825,31 @@
|
|||||||
** SIG ** OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
** SIG ** OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
||||||
** SIG ** MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
** SIG ** MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
||||||
** SIG ** AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
** SIG ** AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
||||||
** SIG ** DQEJBDEWBBTOklb60U5Cei+o8kkwNkAo539ocDANBgkq
|
** SIG ** DQEJBDEWBBQK1AFx+KTksMdng2XH8zqIl5sa0TANBgkq
|
||||||
** SIG ** hkiG9w0BAQEFAASCAQBHQ/9ubHkHX3l29kS5kE0Gx7U0
|
** SIG ** hkiG9w0BAQEFAASCAQAatsBo1sDSD2iglC5/t/YTzoOx
|
||||||
** SIG ** /vyXYN5KvRQ7I2cfTg1zgPbDyXos7RZ9EJjCXO98JVk6
|
** SIG ** 3bMS78pZdRMJgsd2HuTLAoIR+EEI9oxYzcxEGhQVcwX6
|
||||||
** SIG ** OFbmDbnMQbnR3kfxREJSWprYJRv718Sj4hFitqcdzPW6
|
** SIG ** HbgzBpspzEJL8g69z8GniztNxas3H0+mI+PuKZt+h0l+
|
||||||
** SIG ** lyvLqKZwX0GN3/ipBV39T9P4YhXCDfJ5IEEbOSMnEqha
|
** SIG ** P3BxiZVe7ai8FkcVhR0H4hZNldDV+rRHt7mKtxrybQOr
|
||||||
** SIG ** McdHFAInOHEWKGDwGw7nWX+OgQmDYBpsCd1riFvqtG5N
|
** SIG ** aHS8x6yMH8B6SxdOeMyUd/TkW4q17bh25Zu0a5Fzjqmx
|
||||||
** SIG ** XotE4X8fjoh20tMJ4D0qfg41Hpwz27eicRT86uoOGWJA
|
** SIG ** MJbrzvgqpA9v/ltLyqJpcmoE6HIOSJc5QxKTdBcNmzpb
|
||||||
** SIG ** D+ffSDHQ2lCCrGYJNuYXOoiSYDbBfV1tR47KvWT0Tfmb
|
** SIG ** OJ5QS3AmMBX/NjLY/WRqCok2pXytFrTlcmCmnRWjs54Y
|
||||||
** SIG ** 8vhzLwDUuUjHNVRjUBsD/sFbhfbK+hVEM7yDBuLoHWz5
|
** SIG ** DB0mezF5VaqHUp4bxxlLcXuqb25vV6qy8nlN1ie+QtJL
|
||||||
** SIG ** aj0m6uzooYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
** SIG ** aOgJ/5OpoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
||||||
** SIG ** AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
** SIG ** AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
||||||
** SIG ** bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
** SIG ** bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
||||||
** SIG ** bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
** SIG ** bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
||||||
** SIG ** RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
** SIG ** RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
||||||
** SIG ** MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
** SIG ** MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
||||||
** SIG ** hvcNAQkFMQ8XDTE2MDkxNjE2NTAyNVowIwYJKoZIhvcN
|
** SIG ** hvcNAQkFMQ8XDTE2MDkxOTA5MjUyMlowIwYJKoZIhvcN
|
||||||
** SIG ** AQkEMRYEFP/2E5ukiLIl+izsl9m1nHfxcfIHMA0GCSqG
|
** SIG ** AQkEMRYEFOs5wO0WTiUofmt6BIjQukFVNedaMA0GCSqG
|
||||||
** SIG ** SIb3DQEBAQUABIIBAA+YrwcmRrAGzn5oELl5IHsYHShQ
|
** SIG ** SIb3DQEBAQUABIIBAEYwehr/b+AqLlCMPfLETZp8ZScC
|
||||||
** SIG ** 3W5chZ1yUqwRU/LK6oo/cCk8bUseldq8PHV67axnVCzX
|
** SIG ** SxwAUc0pOpPY3qbZfvoV+CK1M6hOza5jmdi3owHKLCor
|
||||||
** SIG ** aLlOOGXOggKIxB+s6vzcDZ7aJv/ssOU2GOFSXZoe78yV
|
** SIG ** Nl5hsZbnCm1SjOZ9q8fkl11Ps6m2KGH/lZEOdztSAHy0
|
||||||
** SIG ** 4hGzOMYpULHz/OT6s4oD1oP/7JOcjd1XMK8L+trxJrJm
|
** SIG ** Cxy9fIPvxoOBbuQf4sLDR4W2ylRMv+Y67pFHv2Elg+f5
|
||||||
** SIG ** BkJpc0f0B/EjBDcOialxi3KPftdQxEqHFet1Fbk02rCR
|
** SIG ** MDz8OK+zUuccnYDceFI7H5XuKH72tSYeITcKb1iJuLfi
|
||||||
** SIG ** 7a51w5fjLgkLwrEL8LF5g6iYBl0w2wlvldYh+ZrbJ1YU
|
** SIG ** B/8npGJnXL47vtyKacmykJ2sVS524DpQlqMSQEIXEz4U
|
||||||
** SIG ** ATOYbfcD7H3Cu/XJUsFc+UBgQGA2unWxNa5F84crcmxV
|
** SIG ** wfMhpshVydYTNVrgRRO9mov/k2VnJEl2H0BRcsXPgMUF
|
||||||
** SIG ** 0xQXnTLtuI06xLRBlmehNhWlV6olkWDYYa/OEaLDRBeq
|
** SIG ** Q2cx24QT526egKtEU0ldyN0nz+/g4/+iBAf2YfyXYfDK
|
||||||
** SIG ** lb0K1jM=
|
** SIG ** 2EBZSxI=
|
||||||
</signature>
|
</signature>
|
||||||
</package>
|
</package>
|
||||||
|
52
PO.js
52
PO.js
@ -192,6 +192,12 @@ POCatalog.prototype.push = function(key, trans, fuzzy, comment)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
POCatalog.prototype.search = function(key)
|
||||||
|
{
|
||||||
|
return (key in this.data) ? this.data[key] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
POCatalog.prototype.translate = function(key)
|
POCatalog.prototype.translate = function(key)
|
||||||
{
|
{
|
||||||
if (!(key in this.data)) {
|
if (!(key in this.data)) {
|
||||||
@ -270,8 +276,8 @@ POCatalog.prototype.save = function(path)
|
|||||||
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
||||||
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
||||||
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
|
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
|
||||||
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFIWWycuo7hWC
|
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFOIhxP5qxoG4
|
||||||
// SIG // XD4eXBJhT5qNXjhRoIISyDCCA+4wggNXoAMCAQICEH6T
|
// SIG // L/0Jpyvl/dheNPSioIISyDCCA+4wggNXoAMCAQICEH6T
|
||||||
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
||||||
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
||||||
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
||||||
@ -425,30 +431,30 @@ POCatalog.prototype.save = function(path)
|
|||||||
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
||||||
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
||||||
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
||||||
// SIG // DQEJBDEWBBRu3FF9mP0st28sz6ozxdOz3hoXGjANBgkq
|
// SIG // DQEJBDEWBBQv+v/IHFo0ikn0Oyg+0/kbYp+LYzANBgkq
|
||||||
// SIG // hkiG9w0BAQEFAASCAQAAwzjZxcGwor+hr9BV4ToMMRKE
|
// SIG // hkiG9w0BAQEFAASCAQCA8tXTcsCRhT/fAQ86SQbjmM4A
|
||||||
// SIG // Ev3JQ8MzzA//8Mcc7hMu8tk6EwmsyvvujWKd35ZDlI6z
|
// SIG // qstaH7me1R9BrzZPp3WKU4m1Bkp1fFMOfw7KAmshhJSW
|
||||||
// SIG // 5+gL+efrY/oYgu+SMSFkPUEx0rNxophdRqA/kBJ3mYjI
|
// SIG // Njt0sytBHBfW3awalYFiizBbqQlDzTXkQ8wAfxx+BdOr
|
||||||
// SIG // iWjY4d5PMDMQLRZcIAEm/nHZVwVw8TEX4Llpl/YO7ZoG
|
// SIG // xsO/CiTHMEkR5fRjR8U0kPG3om0rkytzXR0jr9/xaEwh
|
||||||
// SIG // /JGnkLyzDvP2HOmKu6zWj69F3ICx6HcTuzBbe8ipW/2Q
|
// SIG // YhD02bez1Cre9IQE5aS3ZUssygM0XxhxVTotWnJmnmHu
|
||||||
// SIG // TU+3biVCqw9F664Rx4JELBBz0Vy21HEhEAG4nOLzc0wY
|
// SIG // wMaD8uMi7Pfyv1hqmkPwf5uOoOMAPC7gKUX39KF6Wm5q
|
||||||
// SIG // v+A5aGNKxvT1B6v86+NSwc2BRjthy+tZyY7i3d2mqoXE
|
// SIG // LmSRBNxCaUxMqUhith7scDHvEL0i6JKSq+wZwuEJn9Ev
|
||||||
// SIG // CLtvqlCDhRgmsAEuTriiA1NoTfpTpTqcqEsalbherJGQ
|
// SIG // M0abwe4ltBPnFXagR+dmVbKboJuGTQ4ThKciofkGevlv
|
||||||
// SIG // ZPBwqeopoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
// SIG // qo9zwpoloYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
||||||
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
||||||
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
||||||
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
||||||
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
||||||
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
||||||
// SIG // hvcNAQkFMQ8XDTE2MDkxNjEyMzczNFowIwYJKoZIhvcN
|
// SIG // hvcNAQkFMQ8XDTE2MDkxOTA5MjQzM1owIwYJKoZIhvcN
|
||||||
// SIG // AQkEMRYEFKRwj4RX4soe1EoFkdcak0yL5smOMA0GCSqG
|
// SIG // AQkEMRYEFN0EJzHhISVqw9lvWoaKXBsGPpKhMA0GCSqG
|
||||||
// SIG // SIb3DQEBAQUABIIBAB4JKKplFtYkF6cigGfevY4aPAIA
|
// SIG // SIb3DQEBAQUABIIBAAwhYaJpWoecig5IdF4Lh5hTGJ0m
|
||||||
// SIG // S1ygZPaknt16zruQbKcqSxs/tGYzgw/Af0s6mpZGv6Gn
|
// SIG // hJwoXe+hgvbU7qJbBKQWbP+iVSLmwRU7Er7To0sf/vrA
|
||||||
// SIG // FiyK8aQ+ZxHmNnxQzjEtggHRAuf7uRNwK63RNIDgz35I
|
// SIG // SoFOTKR52GHvy/718YA18c2xvGJldnqfMmzS1RkuwlrL
|
||||||
// SIG // 6vqHQnZjCOlFEUYHPxqjqTJFua6OOoWsmNNpWVc3KO4K
|
// SIG // 1Ca2/QvBmDvVHgZ8eHtVJ9GMpGnmtr3l30Wfs7PJy5XN
|
||||||
// SIG // MzUVyA3wqtxc/N0eq6y5BOkB+WMkrz3Si896uHrwkm2f
|
// SIG // g4i8E1manA41ohAuzrHYbrpW1h9D69os64oWh2Ey0s6O
|
||||||
// SIG // 03qUwPDoJLCdVIrGfzf+ktIEPsCHYPDHk6s/tCI+o4gQ
|
// SIG // a3fcV/FjdnM3q7v4UK516KsdzECnGEc6IHdpbDw4ZYap
|
||||||
// SIG // OfKUsbzrVwmbdEK4HnNsu/hjCGs6sT2mjgysJWO6kFN/
|
// SIG // /VkHQ4lFhDqKv9bfG5yyjE0al1p6fkAc5GTdIe+P5KF9
|
||||||
// SIG // K/57qEOBFIjRkzE8WZS/D4OmrUTR552WiiLUb16NOWgy
|
// SIG // /5X3ez70MA/HQX7XvSLmHAI5tBjjbGtPv94VdOn2Po2N
|
||||||
// SIG // J+F5oIk=
|
// SIG // S+OQOx4=
|
||||||
// SIG // End signature block
|
// SIG // End signature block
|
||||||
|
Loading…
x
Reference in New Issue
Block a user