summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenJPEG Travis CI <info@openjpeg.org>2020-12-03 05:12:52 +0000
committerOpenJPEG Travis CI <info@openjpeg.org>2020-12-03 05:12:52 +0000
commit4b58f821692b1ef7afa9419459fbe05e9008172d (patch)
tree71a5beb9e3fd82eb231ddc760ecd21705e6a61fe
parent788c371b877d3a22419e37aa68e378439f2d5aa5 (diff)
Update ABI/API compatibility reports after commit aaff099b49365cfecfc475ada48b9244c6eefc9c
-rw-r--r--abi-check/abi_dump/openjpeg/current/ef225/ABI.dump144
-rw-r--r--abi-check/changelog/openjpeg/current/log.html96
-rw-r--r--abi-check/db/openjpeg/Tracker.data4
-rw-r--r--abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.abin2293486 -> 2293486 bytes
-rw-r--r--abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.so.2.3.1bin1464117 -> 1464117 bytes
-rw-r--r--abi-check/installed/openjpeg/current/lib/libopenjp2.abin2412480 -> 2415904 bytes
-rw-r--r--abi-check/installed/openjpeg/current/lib/libopenjp2.so.2.3.1bin1550503 -> 1552062 bytes
-rw-r--r--abi-check/timeline/openjpeg/index.html4
8 files changed, 122 insertions, 126 deletions
diff --git a/abi-check/abi_dump/openjpeg/current/ef225/ABI.dump b/abi-check/abi_dump/openjpeg/current/ef225/ABI.dump
index 1e29d68f..c27fbcd3 100644
--- a/abi-check/abi_dump/openjpeg/current/ef225/ABI.dump
+++ b/abi-check/abi_dump/openjpeg/current/ef225/ABI.dump
@@ -207,7 +207,7 @@ $VAR1 = {
'Source' => 'cio.c',
'SourceLine' => '271'
},
- '183238' => {
+ '183241' => {
'Header' => 'openjpeg.h',
'Line' => '1096',
'Return' => '156',
@@ -215,13 +215,13 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '160'
},
- '183558' => {
+ '183561' => {
'Header' => 'openjpeg.h',
'Line' => '1647',
'Param' => {
'0' => {
'name' => 'cstr_info',
- 'type' => '183576'
+ 'type' => '183579'
}
},
'Reg' => {
@@ -232,12 +232,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '1003'
},
- '247140' => {
+ '247143' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_callback',
@@ -258,12 +258,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '44'
},
- '247238' => {
+ '247241' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_callback',
@@ -284,12 +284,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '59'
},
- '247324' => {
+ '247327' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_callback',
@@ -310,23 +310,23 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '74'
},
- '247439' => {
+ '247442' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_format',
- 'type' => '236146'
+ 'type' => '236149'
}
},
'Reg' => {
'0' => 'rdi'
},
- 'Return' => '247226',
+ 'Return' => '247229',
'ShortName' => 'opj_create_decompress',
'Source' => 'openjpeg.c',
'SourceLine' => '168'
},
- '247661' => {
+ '247664' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
@@ -342,12 +342,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '364'
},
- '247792' => {
+ '247795' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'num_threads',
@@ -363,12 +363,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '387'
},
- '247910' => {
+ '247913' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'parameters',
@@ -384,7 +384,7 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '398'
},
- '248052' => {
+ '248055' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
@@ -393,7 +393,7 @@ $VAR1 = {
},
'1' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'2' => {
'name' => 'p_image',
@@ -410,12 +410,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '418'
},
- '248255' => {
+ '248258' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'numcomps',
@@ -441,12 +441,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '442'
},
- '248497' => {
+ '248500' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_stream',
@@ -467,12 +467,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '471'
},
- '248651' => {
+ '248654' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_image',
@@ -508,12 +508,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '492'
},
- '248859' => {
+ '248862' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_stream',
@@ -569,12 +569,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '515'
},
- '249065' => {
+ '249068' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_tile_index',
@@ -605,12 +605,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '546'
},
- '249265' => {
+ '249268' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_stream',
@@ -636,12 +636,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '572'
},
- '249442' => {
+ '249445' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'res_factor',
@@ -657,23 +657,23 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '596'
},
- '249551' => {
+ '249554' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_format',
- 'type' => '236146'
+ 'type' => '236149'
}
},
'Reg' => {
'0' => 'rdi'
},
- 'Return' => '247226',
+ 'Return' => '247229',
'ShortName' => 'opj_create_compress',
'Source' => 'openjpeg.c',
'SourceLine' => '614'
},
- '249776' => {
+ '249779' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
@@ -689,12 +689,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '728'
},
- '249907' => {
+ '249910' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'parameters',
@@ -715,12 +715,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '789'
},
- '250045' => {
+ '250048' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'options',
@@ -736,12 +736,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '809'
},
- '250160' => {
+ '250163' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_image',
@@ -762,12 +762,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '828'
},
- '250314' => {
+ '250317' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_info',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_stream',
@@ -783,12 +783,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '847'
},
- '250445' => {
+ '250448' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_stream',
@@ -804,12 +804,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '864'
},
- '250576' => {
+ '250579' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_stream',
@@ -825,7 +825,7 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '881'
},
- '250707' => {
+ '250710' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
@@ -856,12 +856,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '901'
},
- '251053' => {
+ '251056' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'p_tile_index',
@@ -892,12 +892,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '931'
},
- '251253' => {
+ '251256' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
}
},
'Reg' => {
@@ -908,12 +908,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '958'
},
- '251354' => {
+ '251357' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
},
'1' => {
'name' => 'info_flag',
@@ -934,12 +934,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '976'
},
- '251491' => {
+ '251494' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
}
},
'Reg' => {
@@ -950,12 +950,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '992'
},
- '251655' => {
+ '251658' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_codec',
- 'type' => '247226'
+ 'type' => '247229'
}
},
'Reg' => {
@@ -966,12 +966,12 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '1020'
},
- '251740' => {
+ '251743' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
'name' => 'p_cstr_index',
- 'type' => '251800'
+ 'type' => '251803'
}
},
'Reg' => {
@@ -982,7 +982,7 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '1031'
},
- '251806' => {
+ '251809' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
@@ -1008,7 +1008,7 @@ $VAR1 = {
'Source' => 'openjpeg.c',
'SourceLine' => '1046'
},
- '251925' => {
+ '251928' => {
'Header' => 'openjpeg.h',
'Param' => {
'0' => {
@@ -1464,7 +1464,7 @@ $VAR1 = {
'Size' => '2',
'Type' => 'Typedef'
},
- '183576' => {
+ '183579' => {
'BaseType' => '85874',
'Name' => 'opj_codestream_info_v2_t**',
'Size' => '8',
@@ -2110,7 +2110,7 @@ $VAR1 = {
'Size' => '4',
'Type' => 'Const'
},
- '236096' => {
+ '236099' => {
'Header' => 'openjpeg.h',
'Line' => '322',
'Memb' => {
@@ -2143,15 +2143,15 @@ $VAR1 = {
'Size' => '4',
'Type' => 'Enum'
},
- '236146' => {
- 'BaseType' => '236096',
+ '236149' => {
+ 'BaseType' => '236099',
'Header' => 'openjpeg.h',
'Line' => '329',
'Name' => 'OPJ_CODEC_FORMAT',
'Size' => '4',
'Type' => 'Typedef'
},
- '237903' => {
+ '237906' => {
'BaseType' => '130',
'Header' => 'openjpeg.h',
'Line' => '612',
@@ -2159,13 +2159,13 @@ $VAR1 = {
'Size' => '8',
'Type' => 'Typedef'
},
- '247226' => {
- 'BaseType' => '237903',
+ '247229' => {
+ 'BaseType' => '237906',
'Name' => 'opj_codec_t*',
'Size' => '8',
'Type' => 'Pointer'
},
- '251800' => {
+ '251803' => {
'BaseType' => '83576',
'Name' => 'opj_codestream_index_t**',
'Size' => '8',
diff --git a/abi-check/changelog/openjpeg/current/log.html b/abi-check/changelog/openjpeg/current/log.html
index 3ee642d3..46040b4f 100644
--- a/abi-check/changelog/openjpeg/current/log.html
+++ b/abi-check/changelog/openjpeg/current/log.html
@@ -20,7 +20,52 @@
<br/>
<h1>Changelog from Git</h1><br/><br/>
<div class='changelog'>
-<pre class='wrap'>commit 18b1138fbe3bb0ae4aa2bf1369f9430a8ec6fa00
+<pre class='wrap'>commit aaff099b49365cfecfc475ada48b9244c6eefc9c
+Merge: fb9eae5 73fdf28
+Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
+Date: 2020-12-02 23:56:57 +0100
+
+ Merge pull request #1301 from rouault/fix_1299
+
+ opj_j2k_write_sod(): avoid potential heap buffer overflow (fixes #1299) (probably master only)
+
+commit fb9eae5d637d06209a6cb9ca57960ac72179ee14
+Merge: fc6abdb 00383e1
+Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
+Date: 2020-12-02 23:56:39 +0100
+
+ Merge pull request #1300 from rouault/complement_1293
+
+ pi.c: avoid out of bounds access with POC (refs https://github.com/uclouvain/openjpeg/issues/1293#issuecomment-737122836)
+
+commit fc6abdbeb7aa427685c28a9ebfd2e653c10999b3
+Merge: 18b1138 38d661a
+Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
+Date: 2020-12-02 23:56:30 +0100
+
+ Merge pull request #1298 from rouault/fix_1297
+
+ opj_t2_encode_packet(): avoid out of bound access of #1297, but likely not the proper fix
+
+commit 73fdf28342e4594019af26eb6a347a34eceb6296
+Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
+Date: 2020-12-02 14:10:16 +0100
+
+ opj_j2k_write_sod(): avoid potential heap buffer overflow (fixes #1299) (probably master only)
+
+commit 00383e162ae2f8fc951f5745bf1011771acb8dce
+Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
+Date: 2020-12-02 14:02:17 +0100
+
+ pi.c: avoid out of bounds access with POC (refs https://github.com/uclouvain/openjpeg/issues/1293#issuecomment-737122836)
+
+commit 38d661a3897052c7ff0b39b30c29cb067e130121
+Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
+Date: 2020-12-02 13:13:26 +0100
+
+ opj_t2_encode_packet(): avoid out of bound access of #1297, but likely not the proper fix
+
+commit 18b1138fbe3bb0ae4aa2bf1369f9430a8ec6fa00
Merge: 630b485 c9380ed
Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
Date: 2020-12-02 10:05:39 +0100
@@ -841,55 +886,6 @@ Date: 2019-04-25 00:28:05 +0200
The standard mandates that the layer index always starts at zero for every
progression.
-commit 1e3a57563defb6aa7cf24ffd2394d4a820e13bda
-Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
-Date: 2019-04-25 00:17:13 +0200
-
- compression: emit POC marker when only one single POC is requested (fixes #1191)
-
-commit 5dd75f62e20efff9f094fd1dbd0d4d00e8b37689
-Author: Even Rouault &lt;even.rouault@spatialys.com&gt;
-Date: 2019-04-23 16:52:21 +0200
-
- j2k.c: use correct naming convention for total_data_size variable
-
-commit 3aef207f90e937d4931daf6d411e092f76d82e66
-Author: Young Xiao &lt;YangX92@hotmail.com&gt;
-Date: 2019-03-16 20:09:59 +0800
-
- bmp_read_rle4_data(): avoid potential infinite loop
-
-commit 21399f6b7d318fcdf4406d5e88723c4922202aa3
-Author: Young Xiao &lt;YangX92@hotmail.com&gt;
-Date: 2019-03-16 19:57:27 +0800
-
- convertbmp: detect invalid file dimensions early
-
- width/length dimensions read from bmp headers are not necessarily
- valid. For instance they may have been maliciously set to very large
- values with the intention to cause DoS (large memory allocation, stack
- overflow). In these cases we want to detect the invalid size as early
- as possible.
-
- This commit introduces a counter which verifies that the number of
- written bytes corresponds to the advertized width/length.
-
- See commit 8ee335227bbc for details.
-
- Signed-off-by: Young Xiao &lt;YangX92@hotmail.com&gt;
-
-commit d0dd894ae24d0f2f09072adf1b966033dd64672d
-Author: Antonin Descampe &lt;antonin@gmail.com&gt;
-Date: 2019-04-02 15:37:38 +0200
-
- Comment back opj_previous_version in abi_check.sh
-
-commit 291e45bb045e63334729ad9a894595f8e1e2b2c7
-Author: Antonin Descampe &lt;antonin@gmail.com&gt;
-Date: 2019-04-02 15:12:59 +0200
-
- Update version number for automatic abi check
-
...</pre></div>
</body>
diff --git a/abi-check/db/openjpeg/Tracker.data b/abi-check/db/openjpeg/Tracker.data
index 73cfba4b..61f9bf19 100644
--- a/abi-check/db/openjpeg/Tracker.data
+++ b/abi-check/db/openjpeg/Tracker.data
@@ -705,7 +705,7 @@ $VAR1 = {
'2.2.0' => '2017-08-10 00:31',
'2.3.0' => '2017-10-04 22:23',
'2.3.1' => '2019-04-02 10:08',
- 'current' => '2020-12-02 10:05:39'
+ 'current' => '2020-12-02 23:56:57'
},
'HeadersDiff' => {
'1.1' => {
@@ -813,7 +813,7 @@ $VAR1 = {
'Maintainer' => 'OpenJPEG team',
'MaintainerUrl' => 'http://www.openjpeg.org/',
'PackageDiff' => {},
- 'ScmUpdateTime' => '1606909834',
+ 'ScmUpdateTime' => '1606972336',
'Soname' => {
'1.1' => {
'lib/libopenjpeg.so' => 'libopenjpeg.so'
diff --git a/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.a b/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.a
index 3d15c985..0d819ee5 100644
--- a/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.a
+++ b/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.a
Binary files differ
diff --git a/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.so.2.3.1 b/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.so.2.3.1
index 54f1fbd8..de46e933 100644
--- a/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.so.2.3.1
+++ b/abi-check/installed/openjpeg/2.3.1/lib/libopenjp2.so.2.3.1
Binary files differ
diff --git a/abi-check/installed/openjpeg/current/lib/libopenjp2.a b/abi-check/installed/openjpeg/current/lib/libopenjp2.a
index d10b8f89..be81e1b4 100644
--- a/abi-check/installed/openjpeg/current/lib/libopenjp2.a
+++ b/abi-check/installed/openjpeg/current/lib/libopenjp2.a
Binary files differ
diff --git a/abi-check/installed/openjpeg/current/lib/libopenjp2.so.2.3.1 b/abi-check/installed/openjpeg/current/lib/libopenjp2.so.2.3.1
index 9941d574..b22981e2 100644
--- a/abi-check/installed/openjpeg/current/lib/libopenjp2.so.2.3.1
+++ b/abi-check/installed/openjpeg/current/lib/libopenjp2.so.2.3.1
Binary files differ
diff --git a/abi-check/timeline/openjpeg/index.html b/abi-check/timeline/openjpeg/index.html
index 8f84e511..dbce6ad4 100644
--- a/abi-check/timeline/openjpeg/index.html
+++ b/abi-check/timeline/openjpeg/index.html
@@ -30,7 +30,7 @@
<th>Headers<br/>Diff</th>
</tr>
<tr id='current'><td>current</td>
-<td>2020-12-02<br/>10:05</td>
+<td>2020-12-02<br/>23:56</td>
<td>7</td>
<td><a href='../../changelog/openjpeg/current/log.html'>changelog</a></td>
<td class='ok'><a href='../../objects_report/openjpeg/2.3.1/current/report.html'>100%</a></td>
@@ -179,7 +179,7 @@
<td>N/A</td>
<td>N/A</td>
</tr>
-</table><br/>Maintained by <a href='http://www.openjpeg.org/'>OpenJPEG team</a>. Last updated on Wed Dec 2 11:51:11 2020.<br/>
+</table><br/>Maintained by <a href='http://www.openjpeg.org/'>OpenJPEG team</a>. Last updated on Thu Dec 3 05:12:51 2020.<br/>
<br/>
<hr/>
<div align='right'><a class='home' title="Andrey Ponomarenko's ABI laboratory" href='http://abi-laboratory.pro/'>abi-laboratory.pro</a></div>