]> granicus.if.org Git - taglib/log
taglib
17 years ago(initial) win32 export support
Christian Ehrlicher [Sat, 11 Aug 2007 08:29:23 +0000 (08:29 +0000)]
(initial) win32 export support

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@698835 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoFix pc filesx
Laurent Montel [Sun, 29 Jul 2007 09:38:17 +0000 (09:38 +0000)]
Fix pc filesx

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@693853 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoWork around the fact that iTunes can't properly parse ID3v2.4 numerical genres.
Scott Wheeler [Thu, 19 Jul 2007 15:20:10 +0000 (15:20 +0000)]
Work around the fact that iTunes can't properly parse ID3v2.4 numerical genres.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689932 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoDon't include empty strings in the text field list. This is a slight deviation
Scott Wheeler [Thu, 19 Jul 2007 00:44:37 +0000 (00:44 +0000)]
Don't include empty strings in the text field list.  This is a slight deviation
from the standard, but major editors (i.e. iTunes) mess up ID3v2 text frames with
null termination (which technically indicates a field with content, plus an empty
field).

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689739 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoThis didn't work in the case of an empty buffer read since subtracting 1
Scott Wheeler [Thu, 19 Jul 2007 00:04:37 +0000 (00:04 +0000)]
This didn't work in the case of an empty buffer read since subtracting 1
from a unsigned value, well, left a lot of room at the end.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689729 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoUpdate APE location after adding new tags.
Scott Wheeler [Wed, 18 Jul 2007 17:08:09 +0000 (17:08 +0000)]
Update APE location after adding new tags.

BUG:122700

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689608 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoMake sure that we only write the number of bytes that we read.
Scott Wheeler [Wed, 18 Jul 2007 16:41:10 +0000 (16:41 +0000)]
Make sure that we only write the number of bytes that we read.

BUG:122698

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689596 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoFix SV4 MPC file length. (Read the length at the correct offset.)
Scott Wheeler [Wed, 18 Jul 2007 15:50:52 +0000 (15:50 +0000)]
Fix SV4 MPC file length.  (Read the length at the correct offset.)

BUG:133959

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689576 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoAdd a string reading function to the frame base class and then use that to read strings
Scott Wheeler [Wed, 18 Jul 2007 15:23:18 +0000 (15:23 +0000)]
Add a string reading function to the frame base class and then use that to read strings
(thus making them unicode safe).

BUG:135123
BUG:135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689562 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoBrian is right. It makes more sense to compute the alignment based on the offset...
Scott Wheeler [Wed, 18 Jul 2007 14:38:40 +0000 (14:38 +0000)]
Brian is right.  It makes more sense to compute the alignment based on the offset than the the beginning of the vector.

CCBUG:135123

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689545 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoPromote the int to a float so that the calcualtion works properly. Patch from Stephe...
Scott Wheeler [Wed, 18 Jul 2007 12:52:07 +0000 (12:52 +0000)]
Promote the int to a float so that the calcualtion works properly.  Patch from Stephen Booth.

BUG:143938

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689510 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoSpelling fixes (first part of a patch from Lucas Lalinsky)
Scott Wheeler [Wed, 18 Jul 2007 12:48:24 +0000 (12:48 +0000)]
Spelling fixes (first part of a patch from Lucas Lalinsky)

CCBUG:138829

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689506 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoFix RVA setting / parsing. Patch from Stephen Booth.
Scott Wheeler [Wed, 18 Jul 2007 11:36:26 +0000 (11:36 +0000)]
Fix RVA setting / parsing.  Patch from Stephen Booth.

BUG:107025

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689477 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoset correct install_name for os x
Martin Aumüller [Wed, 4 Jul 2007 10:12:22 +0000 (10:12 +0000)]
set correct install_name for os x

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@683171 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoRemove empty Xiph comments. Patch from Stephan Booth.
Scott Wheeler [Fri, 8 Jun 2007 11:02:49 +0000 (11:02 +0000)]
Remove empty Xiph comments.  Patch from Stephan Booth.

BUG:145532
CCMAIL:taglib-devel@kde.org

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@672863 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoFix another MSVC 2007 STL bug (our bug, not theirs) by not resizing a buffer in
Michael Pyne [Wed, 6 Jun 2007 03:56:38 +0000 (03:56 +0000)]
Fix another MSVC 2007 STL bug (our bug, not theirs) by not resizing a buffer in
writeBlock.  It was possible to resize it to 0 and although it would not be written to
again, the address would be taken of the buffer and MSVC 2007's STL implementation is
strict and will not allow the address of an empty buffer to be taken.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@672039 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agothe usual daily unbreak compilation
Dirk Mueller [Thu, 31 May 2007 20:51:55 +0000 (20:51 +0000)]
the usual daily unbreak compilation

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@670244 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoDon't allow address of zero-length array to be taken to prevent run-time errors with
Michael Pyne [Sat, 26 May 2007 23:03:17 +0000 (23:03 +0000)]
Don't allow address of zero-length array to be taken to prevent run-time errors with
strict STL implementations.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@668610 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agothe usual "daily unbreak compilation"
Dirk Mueller [Fri, 4 May 2007 16:15:11 +0000 (16:15 +0000)]
the usual "daily unbreak compilation"

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@661112 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agowin32 compile / warnings--
Christian Ehrlicher [Sat, 28 Apr 2007 16:31:29 +0000 (16:31 +0000)]
win32 compile / warnings--

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@658841 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agowin32 compile / warnings--
Christian Ehrlicher [Sat, 28 Apr 2007 16:17:30 +0000 (16:17 +0000)]
win32 compile / warnings--

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@658838 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agodon't dereference d twice (CID 3444)
Stephan Kulow [Wed, 11 Apr 2007 20:35:37 +0000 (20:35 +0000)]
don't dereference d twice (CID 3444)

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@652702 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agodon't deref d twice (CID 3445)
Stephan Kulow [Wed, 11 Apr 2007 20:34:57 +0000 (20:34 +0000)]
don't deref d twice (CID 3445)

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@652701 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoCheck for CBR Info headers also.
Scott Wheeler [Sun, 1 Apr 2007 22:22:53 +0000 (22:22 +0000)]
Check for CBR Info headers also.

BUG:141681

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649037 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoSVN_SILENT too many emacs modes...
Scott Wheeler [Sun, 1 Apr 2007 22:21:44 +0000 (22:21 +0000)]
SVN_SILENT too many emacs modes...

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649036 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoStrip nulls from the end of ID3v2 text fields.
Scott Wheeler [Sun, 1 Apr 2007 22:08:44 +0000 (22:08 +0000)]
Strip nulls from the end of ID3v2 text fields.

Simplified version of the patch from Xavier Duret.

BUG:141680

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649032 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoAdd a comment about valid encoding types for ID3v2 tags.
Scott Wheeler [Sun, 1 Apr 2007 21:07:08 +0000 (21:07 +0000)]
Add a comment about valid encoding types for ID3v2 tags.

CCBUG:135122

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649003 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoSwitch to using a list of genres and checking for membership in there to avoid repeat...
Scott Wheeler [Sun, 1 Apr 2007 20:54:13 +0000 (20:54 +0000)]
Switch to using a list of genres and checking for membership in there to avoid repeated values.

Based on a patch from Xavier Duret.

BUG:141679

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648998 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoSVN_SILENT grr, accidentally inserted tabs
Scott Wheeler [Sun, 1 Apr 2007 20:49:15 +0000 (20:49 +0000)]
SVN_SILENT grr, accidentally inserted tabs

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648997 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoStrip whitespaces from the end of ID3v1 fields on the way into TagLib.
Scott Wheeler [Sun, 1 Apr 2007 20:31:03 +0000 (20:31 +0000)]
Strip whitespaces from the end of ID3v1 fields on the way into TagLib.

BUG:141678

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648986 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoDelete APE tag.
Scott Wheeler [Sun, 1 Apr 2007 20:25:54 +0000 (20:25 +0000)]
Delete APE tag.

BUG:141682

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648984 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoFix signature.
Scott Wheeler [Thu, 22 Mar 2007 17:30:29 +0000 (17:30 +0000)]
Fix signature.

BUG:143103

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@645468 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoSVN_SILENT tabs -> spaces
Scott Wheeler [Mon, 26 Feb 2007 11:40:05 +0000 (11:40 +0000)]
SVN_SILENT tabs -> spaces

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@637415 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoSVN_SILENT whoops, those were tabs
Scott Wheeler [Fri, 16 Feb 2007 16:15:55 +0000 (16:15 +0000)]
SVN_SILENT whoops, those were tabs

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@634206 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoDelete d-pointer.
Scott Wheeler [Fri, 16 Feb 2007 14:29:40 +0000 (14:29 +0000)]
Delete d-pointer.

CCBUG:141682

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@634161 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoSVN_SILENT whoops
Scott Wheeler [Tue, 13 Feb 2007 10:19:20 +0000 (10:19 +0000)]
SVN_SILENT whoops

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633141 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoRead the frame data length as a synch-safe int. (Mostly only relevant to
Scott Wheeler [Tue, 13 Feb 2007 10:18:30 +0000 (10:18 +0000)]
Read the frame data length as a synch-safe int.  (Mostly only relevant to
compressed frames)

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633140 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoDon't try to parse invalid frames.
Scott Wheeler [Tue, 13 Feb 2007 09:55:56 +0000 (09:55 +0000)]
Don't try to parse invalid frames.

BUG:137635

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633133 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoAdd another sanity check -- don't let invalid frames try to allocate anything
Scott Wheeler [Tue, 13 Feb 2007 09:26:31 +0000 (09:26 +0000)]
Add another sanity check -- don't let invalid frames try to allocate anything
larger than the tag size.

BUG:140515

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633123 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoFix the byte ordering for UTF16BE
Scott Wheeler [Tue, 13 Feb 2007 08:40:58 +0000 (08:40 +0000)]
Fix the byte ordering for UTF16BE

BUG:135121

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633110 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoRework the read-only check so that it gets along better with networked file systems.
Scott Wheeler [Tue, 13 Feb 2007 07:21:45 +0000 (07:21 +0000)]
Rework the read-only check so that it gets along better with networked file systems.

CCMAIL:apoikos@gmail.com

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633092 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

17 years agoActually overwrite the value, as documented.
Scott Wheeler [Tue, 13 Feb 2007 05:43:10 +0000 (05:43 +0000)]
Actually overwrite the value, as documented.

BUG:141496

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633078 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agocorrect docs
Scott Wheeler [Sun, 7 Jan 2007 15:33:21 +0000 (15:33 +0000)]
correct docs

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@620852 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoRevert this as this change isn't BC
Scott Wheeler [Sun, 7 Jan 2007 15:31:01 +0000 (15:31 +0000)]
Revert this as this change isn't BC

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@620850 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoA few spelling fixes, identified using krazy.
Brad Hards [Tue, 2 Jan 2007 11:54:03 +0000 (11:54 +0000)]
A few spelling fixes, identified using krazy.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@618883 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoRemove check as condition will always be true (checked in the if condition, above).
Jeff Mitchell [Sat, 23 Dec 2006 01:34:01 +0000 (01:34 +0000)]
Remove check as condition will always be true (checked in the if condition, above).

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@615877 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix warning
Laurent Montel [Thu, 7 Dec 2006 14:13:46 +0000 (14:13 +0000)]
Fix warning
Fix create HAVE_ZLIB variable

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@611286 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years ago-pedantic
André Wöbbeking [Mon, 27 Nov 2006 18:17:05 +0000 (18:17 +0000)]
-pedantic

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@608497 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agocopied gcc compile flags from FindKDE4Internal.cmake
André Wöbbeking [Mon, 27 Nov 2006 18:15:11 +0000 (18:15 +0000)]
copied gcc compile flags from FindKDE4Internal.cmake

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@608496 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix compile under windows
Laurent Montel [Fri, 10 Nov 2006 10:43:59 +0000 (10:43 +0000)]
Fix compile under windows

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@603814 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoUhh, no. Once again, TagLib is not part of KDE and is still used by a lot more things
Scott Wheeler [Sun, 15 Oct 2006 17:24:13 +0000 (17:24 +0000)]
Uhh, no.  Once again, TagLib is not part of KDE and is still used by a lot more things
than JuK, most of which still use Qt 3.  If you want to fix the defines to check for the version
that's fine.  I'm not too worried about it since the code still works with Qt 4.

CCMAIL:Tim Beaulen <tbscope@gmail.com>

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@595794 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoreplace uft8() with toUtf8() to silence warnings in Juk.
Tim Beaulen [Sun, 15 Oct 2006 08:04:12 +0000 (08:04 +0000)]
replace uft8() with toUtf8() to silence warnings in Juk.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@595632 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoDon't dereference the iterator before checking its validity.
Scott Wheeler [Thu, 12 Oct 2006 21:11:48 +0000 (21:11 +0000)]
Don't dereference the iterator before checking its validity.

CCMAIL:taglib-devel@kde.org

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@594940 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agofix make install - I guess examples shouldn't actually be installed
David Faure [Thu, 12 Oct 2006 10:50:45 +0000 (10:50 +0000)]
fix make install - I guess examples shouldn't actually be installed
(I see that Makefile.am required "make examples" explicitly)

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@594795 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoSVN_SILENT spacing
Scott Wheeler [Mon, 9 Oct 2006 02:51:52 +0000 (02:51 +0000)]
SVN_SILENT spacing

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593781 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoChange the taglib build system to use relative include paths.
Brad Hards [Sun, 8 Oct 2006 06:28:19 +0000 (06:28 +0000)]
Change the taglib build system to use relative include paths.

This allows you to build taglib either as part of kdesupport
(i.e. with a source directory of kdesupport/) or by itself
(i.e. with a source directory of kdesupport/taglib/).

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593544 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoDon't try to erase a key that isn't there.
Scott Wheeler [Sat, 7 Oct 2006 22:29:06 +0000 (22:29 +0000)]
Don't try to erase a key that isn't there.

BUG:134726

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593479 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoMake the Xing header publically accessible.
Scott Wheeler [Sat, 7 Oct 2006 22:17:07 +0000 (22:17 +0000)]
Make the Xing header publically accessible.

WISH:133757

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593475 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoCompile fix, correcting the include paths.
Brad Hards [Sat, 7 Oct 2006 11:45:35 +0000 (11:45 +0000)]
Compile fix, correcting the include paths.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593292 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix install files
Laurent Montel [Thu, 5 Oct 2006 08:03:42 +0000 (08:03 +0000)]
Fix install files

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@592630 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoAdd support for examples
Laurent Montel [Wed, 4 Oct 2006 15:21:01 +0000 (15:21 +0000)]
Add support for examples

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@592362 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoAdd tests directory into build
Laurent Montel [Wed, 4 Oct 2006 15:12:47 +0000 (15:12 +0000)]
Add tests directory into build

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@592361 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoMake paths relative so that it works with running cmake on kdesupport/ or on kdesuppo...
David Faure [Fri, 29 Sep 2006 09:36:22 +0000 (09:36 +0000)]
Make paths relative so that it works with running cmake on kdesupport/ or on kdesupport/taglib.
Added toplevel cmake file so that kdesvn-build can build kdesupport using cmake.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@590077 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix compile
Laurent Montel [Wed, 27 Sep 2006 08:57:22 +0000 (08:57 +0000)]
Fix compile

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588867 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoForgot something. ;-)
Scott Wheeler [Sun, 24 Sep 2006 20:57:22 +0000 (20:57 +0000)]
Forgot something.  ;-)

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588077 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoThis is how it's done elsewhere.
Scott Wheeler [Sun, 24 Sep 2006 18:36:42 +0000 (18:36 +0000)]
This is how it's done elsewhere.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588044 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoAnd now get everything building again...
Scott Wheeler [Sun, 24 Sep 2006 18:10:30 +0000 (18:10 +0000)]
And now get everything building again...

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588037 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoAdd KDE 3.5 admin as external.
Scott Wheeler [Sun, 24 Sep 2006 17:28:14 +0000 (17:28 +0000)]
Add KDE 3.5 admin as external.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588027 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoThis is starting to look more sane.
Scott Wheeler [Sun, 24 Sep 2006 17:12:40 +0000 (17:12 +0000)]
This is starting to look more sane.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588022 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoadd this first, hopefully the next attempt at fixing the dirs will work
Scott Wheeler [Sun, 24 Sep 2006 17:10:42 +0000 (17:10 +0000)]
add this first, hopefully the next attempt at fixing the dirs will work

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588021 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoOne more step. Wow, this was impressively broken.
Scott Wheeler [Sun, 24 Sep 2006 16:59:54 +0000 (16:59 +0000)]
One more step.  Wow, this was impressively broken.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588016 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoOk, let's go back a few steps. Apparently I really confused svn move by adding
Scott Wheeler [Sun, 24 Sep 2006 16:58:17 +0000 (16:58 +0000)]
Ok, let's go back a few steps.  Apparently I really confused svn move by adding
the directory and moving things to it in the same commit.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588014 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing
Scott Wheeler [Sun, 24 Sep 2006 16:33:50 +0000 (16:33 +0000)]
Reorganizing

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588002 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing
Scott Wheeler [Sun, 24 Sep 2006 16:33:36 +0000 (16:33 +0000)]
Reorganizing

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588001 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing
Scott Wheeler [Sun, 24 Sep 2006 16:33:25 +0000 (16:33 +0000)]
Reorganizing

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588000 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing
Scott Wheeler [Sun, 24 Sep 2006 16:33:15 +0000 (16:33 +0000)]
Reorganizing

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587999 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing.
Scott Wheeler [Sun, 24 Sep 2006 16:33:03 +0000 (16:33 +0000)]
Reorganizing.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587997 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing.
Scott Wheeler [Sun, 24 Sep 2006 16:32:42 +0000 (16:32 +0000)]
Reorganizing.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587996 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing. Hmm, it seems that svn is going to make me enter this message a helluv...
Scott Wheeler [Sun, 24 Sep 2006 16:30:31 +0000 (16:30 +0000)]
Reorganizing.  Hmm, it seems that svn is going to make me enter this message a helluva lot.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587995 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing.
Scott Wheeler [Sun, 24 Sep 2006 16:30:00 +0000 (16:30 +0000)]
Reorganizing.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587993 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoReorganizing.
Scott Wheeler [Sun, 24 Sep 2006 16:29:44 +0000 (16:29 +0000)]
Reorganizing.

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587992 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoRe-add automake/autoconf stuff. I'm tempted to delete the CMake stuff while I'm
Scott Wheeler [Sun, 24 Sep 2006 16:17:47 +0000 (16:17 +0000)]
Re-add automake/autoconf stuff.  I'm tempted to delete the CMake stuff while I'm
at it, but I'll leave it for now...

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587989 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoNow taglib compiles with cmake
Laurent Montel [Sun, 24 Sep 2006 14:45:33 +0000 (14:45 +0000)]
Now taglib compiles with cmake
Remove old build system

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587949 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix generate lib.
Laurent Montel [Sun, 24 Sep 2006 12:59:05 +0000 (12:59 +0000)]
Fix generate lib.
it fixes juk compile

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587917 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix install it as programs
Laurent Montel [Sun, 24 Sep 2006 12:32:54 +0000 (12:32 +0000)]
Fix install it as programs

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587902 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix install files
Laurent Montel [Sun, 24 Sep 2006 12:26:46 +0000 (12:26 +0000)]
Fix install files

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@587900 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix soname
Laurent Montel [Wed, 20 Sep 2006 16:10:10 +0000 (16:10 +0000)]
Fix soname

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@586789 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix generate file
Laurent Montel [Wed, 20 Sep 2006 16:08:36 +0000 (16:08 +0000)]
Fix generate file

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@586787 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix generate files
Laurent Montel [Wed, 20 Sep 2006 16:08:12 +0000 (16:08 +0000)]
Fix generate files

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@586784 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix it
Laurent Montel [Wed, 20 Sep 2006 12:58:37 +0000 (12:58 +0000)]
Fix it

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@586717 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoFix CMakefiles
Laurent Montel [Wed, 20 Sep 2006 12:57:59 +0000 (12:57 +0000)]
Fix CMakefiles

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@586716 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoAdd cmake support
Laurent Montel [Wed, 20 Sep 2006 12:52:28 +0000 (12:52 +0000)]
Add cmake support
All compile need to test now

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@586714 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoInvalid iterators are ungood. Mmmkay?
Scott Wheeler [Sat, 16 Sep 2006 12:11:43 +0000 (12:11 +0000)]
Invalid iterators are ungood.  Mmmkay?

CCMAIL:taglib-devel@kde.org

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@585155 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoIt makes more sense to return iterators here. (The return types weren't there
Scott Wheeler [Sat, 16 Sep 2006 12:09:48 +0000 (12:09 +0000)]
It makes more sense to return iterators here.  (The return types weren't there
in the last release, so this isn't API breakage.)

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@585152 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agofix
Dirk Mueller [Mon, 11 Sep 2006 23:32:35 +0000 (23:32 +0000)]
fix

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@583305 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agofix includes
Dirk Mueller [Mon, 11 Sep 2006 22:42:50 +0000 (22:42 +0000)]
fix includes

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@583286 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoAdd PC file for the C bindings.
Scott Wheeler [Thu, 31 Aug 2006 23:14:30 +0000 (23:14 +0000)]
Add PC file for the C bindings.

CCMAIL:taglib-devel@kde.org

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@579380 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoSVN_SILENT another minor-typo
Scott Wheeler [Thu, 31 Aug 2006 22:49:38 +0000 (22:49 +0000)]
SVN_SILENT another minor-typo

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@579372 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoSVN_SILENT extra space
Scott Wheeler [Thu, 31 Aug 2006 22:46:41 +0000 (22:46 +0000)]
SVN_SILENT extra space

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@579371 283d02a7-25f6-0310-bc7c-ecb5cbfe19da

18 years agoPatches from Aaron VonderHaar for a GEOB frame implementation.
Scott Wheeler [Thu, 31 Aug 2006 22:44:17 +0000 (22:44 +0000)]
Patches from Aaron VonderHaar for a GEOB frame implementation.

Nice patches Aaron!

CCMAIL:taglib-devel@kde.org
CCMAIL:gruen0aermel@gmail.com

git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@579369 283d02a7-25f6-0310-bc7c-ecb5cbfe19da