From b0414f439993927ea4f8bc7763be473cb52c04d5 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Wed, 29 Jan 2025 23:41:00 -0800 Subject: [PATCH] TagLib: Replace bundled copy with upstream 2.0.2 Include a Framework build, unmodified, RelWithDbgInfo. Signed-off-by: Christopher Snowhill --- .../TagLib/TagLib.xcodeproj/project.pbxproj | 1304 ----------- .../xcschemes/TagLib Framework.xcscheme | 76 - Frameworks/TagLib/en.lproj/InfoPlist.strings | 3 - Frameworks/TagLib/es.lproj/InfoPlist.strings | 3 - Frameworks/TagLib/pl.lproj/InfoPlist.strings | 3 - .../TagLib/taglib/3rdparty/utf8-cpp/checked.h | 327 --- .../TagLib/taglib/3rdparty/utf8-cpp/core.h | 332 --- Frameworks/TagLib/taglib/AUTHORS | 21 - Frameworks/TagLib/taglib/CMakeLists.txt | 168 -- Frameworks/TagLib/taglib/COPYING.LGPL | 502 ---- Frameworks/TagLib/taglib/COPYING.MPL | 470 ---- .../TagLib/taglib/ConfigureChecks.cmake | 203 -- Frameworks/TagLib/taglib/Doxyfile.cmake | 210 -- Frameworks/TagLib/taglib/INSTALL.md | 175 -- Frameworks/TagLib/taglib/NEWS | 335 --- Frameworks/TagLib/taglib/README.md | 26 - .../TagLib/taglib/bindings/CMakeLists.txt | 1 - Frameworks/TagLib/taglib/bindings/README | 6 - .../TagLib/taglib/bindings/c/CMakeLists.txt | 75 - Frameworks/TagLib/taglib/bindings/c/tag_c.cpp | 315 --- Frameworks/TagLib/taglib/bindings/c/tag_c.h | 299 --- .../taglib/bindings/c/taglib_c.pc.cmake | 12 - .../taglib/cmake/modules/FindCppUnit.cmake | 69 - .../cmake/modules/MacroEnsureVersion.cmake | 71 - .../TagLib/taglib/cmake_uninstall.cmake.in | 21 - Frameworks/TagLib/taglib/config.h | 34 - Frameworks/TagLib/taglib/config.h.cmake | 34 - Frameworks/TagLib/taglib/doc/README | 1 - Frameworks/TagLib/taglib/doc/api-footer.html | 4 - Frameworks/TagLib/taglib/doc/api-header.html | 41 - Frameworks/TagLib/taglib/doc/taglib-api.css | 395 ---- Frameworks/TagLib/taglib/doc/taglib.png | Bin 2748 -> 0 bytes .../TagLib/taglib/examples/CMakeLists.txt | 40 - .../TagLib/taglib/examples/framelist.cpp | 117 - .../TagLib/taglib/examples/strip-id3v1.cpp | 40 - .../TagLib/taglib/examples/tagreader.cpp | 89 - .../TagLib/taglib/examples/tagreader_c.c | 81 - .../TagLib/taglib/examples/tagwriter.cpp | 185 -- Frameworks/TagLib/taglib/taglib-config.cmake | 55 - .../TagLib/taglib/taglib-config.cmd.cmake | 36 - Frameworks/TagLib/taglib/taglib.pc.cmake | 11 - .../TagLib/taglib/taglib/CMakeLists.txt | 372 --- .../taglib/taglib/ape/ape-tag-format.txt | 170 -- .../TagLib/taglib/taglib/ape/apefile.cpp | 314 --- .../TagLib/taglib/taglib/ape/apefooter.cpp | 234 -- .../TagLib/taglib/taglib/ape/apegenfile.cpp | 204 -- .../TagLib/taglib/taglib/ape/apegenfile.h | 201 -- .../TagLib/taglib/taglib/ape/apeitem.cpp | 301 --- .../taglib/taglib/ape/apeproperties.cpp | 252 -- .../TagLib/taglib/taglib/ape/apetag.cpp | 572 ----- .../TagLib/taglib/taglib/asf/asfattribute.cpp | 351 --- .../TagLib/taglib/taglib/asf/asffile.cpp | 705 ------ .../TagLib/taglib/taglib/asf/asfpicture.cpp | 183 -- .../taglib/taglib/asf/asfproperties.cpp | 194 -- .../TagLib/taglib/taglib/asf/asftag.cpp | 489 ---- .../TagLib/taglib/taglib/asf/asfutils.h | 104 - .../TagLib/taglib/taglib/audioproperties.cpp | 94 - Frameworks/TagLib/taglib/taglib/fileref.cpp | 415 ---- Frameworks/TagLib/taglib/taglib/fileref.h | 287 --- .../TagLib/taglib/taglib/flac/flacfile.cpp | 583 ----- .../taglib/taglib/flac/flacmetadatablock.cpp | 47 - .../TagLib/taglib/taglib/flac/flacpicture.cpp | 217 -- .../taglib/taglib/flac/flacproperties.cpp | 176 -- .../taglib/flac/flacunknownmetadatablock.cpp | 78 - Frameworks/TagLib/taglib/taglib/it/itfile.cpp | 335 --- .../TagLib/taglib/taglib/it/itproperties.cpp | 260 --- .../TagLib/taglib/taglib/mod/modfile.cpp | 192 -- .../TagLib/taglib/taglib/mod/modfilebase.cpp | 125 - .../TagLib/taglib/taglib/mod/modfileprivate.h | 67 - .../taglib/taglib/mod/modproperties.cpp | 111 - .../TagLib/taglib/taglib/mod/modtag.cpp | 260 --- .../TagLib/taglib/taglib/mp4/mp4atom.cpp | 197 -- .../TagLib/taglib/taglib/mp4/mp4file.cpp | 182 -- .../TagLib/taglib/taglib/mp4/mp4item.cpp | 212 -- .../taglib/taglib/mp4/mp4properties.cpp | 269 --- .../TagLib/taglib/taglib/mp4/mp4tag.cpp | 1186 ---------- Frameworks/TagLib/taglib/taglib/mp4/mp4tag.h | 179 -- .../TagLib/taglib/taglib/mpc/mpcfile.cpp | 332 --- .../taglib/taglib/mpc/mpcproperties.cpp | 368 --- .../taglib/taglib/mpeg/id3v1/id3v1genres.cpp | 286 --- .../taglib/taglib/mpeg/id3v1/id3v1tag.cpp | 356 --- .../id3v2/frames/attachedpictureframe.cpp | 225 -- .../taglib/mpeg/id3v2/frames/chapterframe.cpp | 309 --- .../mpeg/id3v2/frames/commentsframe.cpp | 198 -- .../id3v2/frames/eventtimingcodesframe.cpp | 144 -- .../frames/generalencapsulatedobjectframe.cpp | 187 -- .../mpeg/id3v2/frames/ownershipframe.cpp | 171 -- .../taglib/mpeg/id3v2/frames/podcastframe.cpp | 89 - .../mpeg/id3v2/frames/popularimeterframe.cpp | 140 -- .../taglib/mpeg/id3v2/frames/privateframe.cpp | 131 -- .../mpeg/id3v2/frames/relativevolumeframe.cpp | 233 -- .../id3v2/frames/synchronizedlyricsframe.cpp | 242 -- .../id3v2/frames/tableofcontentsframe.cpp | 360 --- .../id3v2/frames/textidentificationframe.cpp | 437 ---- .../frames/uniquefileidentifierframe.cpp | 148 -- .../taglib/mpeg/id3v2/frames/unknownframe.cpp | 86 - .../frames/unsynchronizedlyricsframe.cpp | 198 -- .../taglib/mpeg/id3v2/frames/urllinkframe.cpp | 246 -- .../taglib/taglib/mpeg/id3v2/id3v2.2.0.txt | 1660 -------------- .../taglib/taglib/mpeg/id3v2/id3v2.3.0.txt | 2022 ----------------- .../taglib/mpeg/id3v2/id3v2.4.0-frames.txt | 1734 -------------- .../taglib/mpeg/id3v2/id3v2.4.0-structure.txt | 733 ------ .../TagLib/taglib/taglib/mpeg/id3v2/id3v2.h | 24 - .../taglib/mpeg/id3v2/id3v2extendedheader.cpp | 71 - .../taglib/taglib/mpeg/id3v2/id3v2footer.cpp | 57 - .../taglib/taglib/mpeg/id3v2/id3v2frame.cpp | 836 ------- .../taglib/mpeg/id3v2/id3v2framefactory.cpp | 552 ----- .../taglib/taglib/mpeg/id3v2/id3v2header.cpp | 239 -- .../taglib/mpeg/id3v2/id3v2synchdata.cpp | 98 - .../taglib/taglib/mpeg/id3v2/id3v2tag.cpp | 1072 --------- .../TagLib/taglib/taglib/mpeg/mpegfile.cpp | 585 ----- .../TagLib/taglib/taglib/mpeg/mpegheader.cpp | 322 --- .../taglib/taglib/mpeg/mpegproperties.cpp | 221 -- .../TagLib/taglib/taglib/mpeg/mpegutils.h | 63 - .../TagLib/taglib/taglib/mpeg/xingheader.cpp | 140 -- .../taglib/taglib/ogg/flac/oggflacfile.cpp | 321 --- .../TagLib/taglib/taglib/ogg/oggfile.cpp | 313 --- .../TagLib/taglib/taglib/ogg/oggpage.cpp | 308 --- .../taglib/taglib/ogg/oggpageheader.cpp | 312 --- .../taglib/taglib/ogg/opus/opusfile.cpp | 150 -- .../taglib/taglib/ogg/opus/opusproperties.cpp | 183 -- .../taglib/taglib/ogg/speex/speexfile.cpp | 144 -- .../taglib/ogg/speex/speexproperties.cpp | 207 -- .../taglib/taglib/ogg/vorbis/vorbisfile.cpp | 150 -- .../taglib/ogg/vorbis/vorbisproperties.cpp | 211 -- .../TagLib/taglib/taglib/ogg/xiphcomment.cpp | 633 ------ .../taglib/taglib/riff/aiff/aifffile.cpp | 179 -- .../taglib/riff/aiff/aiffproperties.cpp | 192 -- .../TagLib/taglib/taglib/riff/rifffile.cpp | 370 --- .../TagLib/taglib/taglib/riff/riffutils.h | 60 - .../TagLib/taglib/taglib/riff/wav/infotag.cpp | 343 --- .../TagLib/taglib/taglib/riff/wav/wavfile.cpp | 264 --- .../taglib/taglib/riff/wav/wavproperties.cpp | 221 -- .../TagLib/taglib/taglib/s3m/s3mfile.cpp | 248 -- .../taglib/taglib/s3m/s3mproperties.cpp | 219 -- Frameworks/TagLib/taglib/taglib/tag.cpp | 244 -- .../taglib/taglib/taglib_config.h.cmake | 11 - Frameworks/TagLib/taglib/taglib/tagunion.cpp | 345 --- Frameworks/TagLib/taglib/taglib/tagunion.h | 117 - Frameworks/TagLib/taglib/taglib/tagutils.cpp | 105 - Frameworks/TagLib/taglib/taglib/tagutils.h | 55 - .../taglib/taglib/toolkit/tbytevector.cpp | 1044 --------- .../taglib/taglib/toolkit/tbytevectorlist.cpp | 102 - .../taglib/toolkit/tbytevectorstream.cpp | 167 -- .../TagLib/taglib/taglib/toolkit/tdebug.cpp | 64 - .../TagLib/taglib/taglib/toolkit/tdebug.h | 70 - .../taglib/taglib/toolkit/tdebuglistener.cpp | 85 - .../TagLib/taglib/taglib/toolkit/tfile.cpp | 448 ---- .../taglib/taglib/toolkit/tfilestream.cpp | 507 ----- .../taglib/taglib/toolkit/tiostream.cpp | 114 - .../taglib/taglib/toolkit/tpropertymap.cpp | 179 -- .../taglib/taglib/toolkit/trefcounter.cpp | 96 - .../taglib/taglib/toolkit/trefcounter.h | 113 - .../TagLib/taglib/taglib/toolkit/tstring.cpp | 774 ------- .../taglib/taglib/toolkit/tstringlist.cpp | 123 - .../TagLib/taglib/taglib/toolkit/tutils.h | 243 -- .../TagLib/taglib/taglib/toolkit/tzlib.cpp | 106 - .../TagLib/taglib/taglib/toolkit/tzlib.h | 54 - .../taglib/taglib/trueaudio/trueaudiofile.cpp | 378 --- .../taglib/trueaudio/trueaudioproperties.cpp | 171 -- .../taglib/taglib/wavpack/wavpackfile.cpp | 284 --- .../taglib/wavpack/wavpackproperties.cpp | 374 --- Frameworks/TagLib/taglib/taglib/xm/xmfile.cpp | 644 ------ .../TagLib/taglib/taglib/xm/xmproperties.cpp | 195 -- Frameworks/TagLib/taglib/taglib_config.h | 11 - Frameworks/TagLib/taglib/tests/CMakeLists.txt | 80 - .../TagLib/taglib/tests/data/005411.id3 | Bin 38402 -> 0 bytes Frameworks/TagLib/taglib/tests/data/64bit.mp4 | Bin 85 -> 0 bytes Frameworks/TagLib/taglib/tests/data/alaw.aifc | Bin 1890 -> 0 bytes Frameworks/TagLib/taglib/tests/data/alaw.wav | Bin 56858 -> 0 bytes .../TagLib/taglib/tests/data/ape-id3v1.mp3 | Bin 8419 -> 0 bytes .../TagLib/taglib/tests/data/ape-id3v2.mp3 | Bin 9341 -> 0 bytes Frameworks/TagLib/taglib/tests/data/ape.mp3 | Bin 8291 -> 0 bytes .../TagLib/taglib/tests/data/bladeenc.mp3 | Bin 28422 -> 0 bytes .../TagLib/taglib/tests/data/blank_video.m4v | Bin 15018 -> 0 bytes .../TagLib/taglib/tests/data/broken-tenc.id3 | Bin 400 -> 0 bytes .../TagLib/taglib/tests/data/changed.mod | Bin 3132 -> 0 bytes .../TagLib/taglib/tests/data/changed.s3m | Bin 544 -> 0 bytes .../TagLib/taglib/tests/data/changed.xm | Bin 5471 -> 0 bytes Frameworks/TagLib/taglib/tests/data/click.mpc | Bin 1588 -> 0 bytes Frameworks/TagLib/taglib/tests/data/click.wv | Bin 3176 -> 0 bytes .../tests/data/compressed_id3_frame.mp3 | Bin 5000 -> 0 bytes .../data/correctness_gain_silent_output.opus | Bin 35506 -> 0 bytes .../TagLib/taglib/tests/data/covr-junk.m4a | Bin 5108 -> 0 bytes .../TagLib/taglib/tests/data/dsd_stereo.wv | Bin 52595 -> 0 bytes .../taglib/tests/data/duplicate_id3v2.aiff | Bin 8124 -> 0 bytes .../taglib/tests/data/duplicate_id3v2.mp3 | Bin 10138 -> 0 bytes .../taglib/tests/data/duplicate_tags.wav | Bin 17052 -> 0 bytes .../taglib/tests/data/empty-seektable.flac | Bin 4608 -> 0 bytes .../TagLib/taglib/tests/data/empty.aiff | Bin 5936 -> 0 bytes Frameworks/TagLib/taglib/tests/data/empty.ogg | Bin 4328 -> 0 bytes Frameworks/TagLib/taglib/tests/data/empty.spx | Bin 24301 -> 0 bytes Frameworks/TagLib/taglib/tests/data/empty.tta | Bin 79538 -> 0 bytes Frameworks/TagLib/taglib/tests/data/empty.wav | Bin 14744 -> 0 bytes .../TagLib/taglib/tests/data/empty_alac.m4a | Bin 5380 -> 0 bytes .../TagLib/taglib/tests/data/empty_flac.oga | Bin 9113 -> 0 bytes .../TagLib/taglib/tests/data/empty_vorbis.oga | Bin 4328 -> 0 bytes .../taglib/tests/data/excessive_alloc.aif | Bin 2170 -> 0 bytes .../taglib/tests/data/excessive_alloc.mp3 | Bin 925 -> 0 bytes .../TagLib/taglib/tests/data/float64.wav | Bin 68584 -> 0 bytes .../TagLib/taglib/tests/data/four_channels.wv | Bin 53520 -> 0 bytes .../TagLib/taglib/tests/data/garbage.mp3 | Bin 8190 -> 0 bytes Frameworks/TagLib/taglib/tests/data/gnre.m4a | Bin 5026 -> 0 bytes .../TagLib/taglib/tests/data/has-tags.m4a | Bin 5108 -> 0 bytes .../TagLib/taglib/tests/data/id3v22-tda.mp3 | Bin 4096 -> 0 bytes .../TagLib/taglib/tests/data/ilst-is-last.m4a | Bin 32768 -> 0 bytes .../TagLib/taglib/tests/data/infloop.m4a | Bin 53192 -> 0 bytes .../TagLib/taglib/tests/data/infloop.mpc | Bin 434 -> 0 bytes .../TagLib/taglib/tests/data/infloop.wav | Bin 14272 -> 0 bytes .../TagLib/taglib/tests/data/infloop.wv | Bin 2462 -> 0 bytes .../taglib/tests/data/invalid-frames1.mp3 | Bin 8164 -> 0 bytes .../taglib/tests/data/invalid-frames2.mp3 | Bin 7898 -> 0 bytes .../taglib/tests/data/invalid-frames3.mp3 | Bin 8192 -> 0 bytes .../TagLib/taglib/tests/data/lame_cbr.mp3 | Bin 4096 -> 0 bytes .../TagLib/taglib/tests/data/lame_vbr.mp3 | Bin 4096 -> 0 bytes .../TagLib/taglib/tests/data/longloop.ape | Bin 184 -> 0 bytes .../TagLib/taglib/tests/data/lossless.wma | Bin 99013 -> 0 bytes .../taglib/tests/data/lowercase-fields.ogg | Bin 4477 -> 0 bytes .../TagLib/taglib/tests/data/mac-390-hdr.ape | Bin 128 -> 0 bytes .../TagLib/taglib/tests/data/mac-396.ape | Bin 104 -> 0 bytes .../taglib/tests/data/mac-399-id3v2.ape | Bin 89155 -> 0 bytes .../taglib/tests/data/mac-399-tagged.ape | Bin 91591 -> 0 bytes .../TagLib/taglib/tests/data/mac-399.ape | Bin 85212 -> 0 bytes Frameworks/TagLib/taglib/tests/data/mpeg2.mp3 | Bin 16384 -> 0 bytes .../TagLib/taglib/tests/data/multiple-vc.flac | Bin 4754 -> 0 bytes .../TagLib/taglib/tests/data/no-extension | Bin 256 -> 0 bytes .../TagLib/taglib/tests/data/no-tags.3g2 | Bin 68335 -> 0 bytes .../TagLib/taglib/tests/data/no-tags.flac | Bin 4692 -> 0 bytes .../TagLib/taglib/tests/data/no-tags.m4a | Bin 2898 -> 0 bytes .../TagLib/taglib/tests/data/no_length.wv | Bin 532 -> 0 bytes Frameworks/TagLib/taglib/tests/data/noise.aif | Bin 4400 -> 0 bytes .../TagLib/taglib/tests/data/noise_odd.aif | Bin 4399 -> 0 bytes .../taglib/tests/data/non_standard_rate.wv | Bin 132 -> 0 bytes .../taglib/tests/data/pcm_with_fact_chunk.wav | Bin 14756 -> 0 bytes .../TagLib/taglib/tests/data/rare_frames.mp3 | Bin 8320 -> 0 bytes .../TagLib/taglib/tests/data/segfault.aif | Bin 31 -> 0 bytes .../TagLib/taglib/tests/data/segfault.mpc | Bin 19 -> 0 bytes .../TagLib/taglib/tests/data/segfault.oga | Bin 120 -> 0 bytes .../TagLib/taglib/tests/data/segfault.wav | Bin 30 -> 0 bytes .../TagLib/taglib/tests/data/segfault2.mpc | 1 - .../TagLib/taglib/tests/data/silence-1.wma | Bin 35416 -> 0 bytes .../taglib/tests/data/silence-44-s.flac | Bin 50904 -> 0 bytes .../TagLib/taglib/tests/data/sinewave.flac | Bin 64567 -> 0 bytes .../TagLib/taglib/tests/data/stripped.xm | Bin 602 -> 0 bytes .../TagLib/taglib/tests/data/sv4_header.mpc | Bin 128 -> 0 bytes .../TagLib/taglib/tests/data/sv5_header.mpc | Bin 128 -> 0 bytes .../TagLib/taglib/tests/data/sv8_header.mpc | Bin 114 -> 0 bytes .../TagLib/taglib/tests/data/tagged.tta | Bin 81819 -> 0 bytes Frameworks/TagLib/taglib/tests/data/tagged.wv | Bin 76627 -> 0 bytes Frameworks/TagLib/taglib/tests/data/test.it | Bin 644 -> 0 bytes Frameworks/TagLib/taglib/tests/data/test.mod | Bin 3132 -> 0 bytes Frameworks/TagLib/taglib/tests/data/test.ogg | Bin 4408 -> 0 bytes Frameworks/TagLib/taglib/tests/data/test.s3m | Bin 544 -> 0 bytes Frameworks/TagLib/taglib/tests/data/test.xm | Bin 5471 -> 0 bytes .../taglib/tests/data/toc_many_children.mp3 | Bin 11525 -> 0 bytes .../TagLib/taglib/tests/data/uint8we.wav | Bin 47240 -> 0 bytes .../tests/data/unsupported-extension.xx | Bin 256 -> 0 bytes .../TagLib/taglib/tests/data/unsynch.id3 | Bin 320 -> 0 bytes Frameworks/TagLib/taglib/tests/data/w000.mp3 | Bin 512 -> 0 bytes Frameworks/TagLib/taglib/tests/data/xing.mp3 | Bin 8208 -> 0 bytes .../taglib/tests/data/zero-length-mdat.m4a | Bin 4517 -> 0 bytes .../taglib/tests/data/zero-size-chunk.wav | Bin 1024 -> 0 bytes .../taglib/tests/data/zero-sized-padding.flac | Bin 4692 -> 0 bytes .../TagLib/taglib/tests/data/zerodiv.ape | Bin 946 -> 0 bytes .../TagLib/taglib/tests/data/zerodiv.mpc | Bin 405 -> 0 bytes Frameworks/TagLib/taglib/tests/main.cpp | 90 - Frameworks/TagLib/taglib/tests/plainfile.h | 50 - Frameworks/TagLib/taglib/tests/test_aiff.cpp | 162 -- Frameworks/TagLib/taglib/tests/test_ape.cpp | 238 -- .../TagLib/taglib/tests/test_apetag.cpp | 171 -- Frameworks/TagLib/taglib/tests/test_asf.cpp | 401 ---- .../TagLib/taglib/tests/test_bytevector.cpp | 599 ----- .../taglib/tests/test_bytevectorlist.cpp | 63 - .../taglib/tests/test_bytevectorstream.cpp | 131 -- Frameworks/TagLib/taglib/tests/test_file.cpp | 145 -- .../TagLib/taglib/tests/test_fileref.cpp | 394 ---- Frameworks/TagLib/taglib/tests/test_flac.cpp | 672 ------ .../TagLib/taglib/tests/test_flacpicture.cpp | 77 - .../tests/test_flacunknownmetadatablock.cpp | 63 - Frameworks/TagLib/taglib/tests/test_id3v1.cpp | 88 - Frameworks/TagLib/taglib/tests/test_id3v2.cpp | 1613 ------------- Frameworks/TagLib/taglib/tests/test_info.cpp | 75 - Frameworks/TagLib/taglib/tests/test_it.cpp | 139 -- Frameworks/TagLib/taglib/tests/test_list.cpp | 76 - Frameworks/TagLib/taglib/tests/test_map.cpp | 72 - Frameworks/TagLib/taglib/tests/test_mod.cpp | 133 -- Frameworks/TagLib/taglib/tests/test_mp4.cpp | 659 ------ .../TagLib/taglib/tests/test_mp4coverart.cpp | 74 - .../TagLib/taglib/tests/test_mp4item.cpp | 62 - Frameworks/TagLib/taglib/tests/test_mpc.cpp | 193 -- Frameworks/TagLib/taglib/tests/test_mpeg.cpp | 539 ----- Frameworks/TagLib/taglib/tests/test_ogg.cpp | 227 -- .../TagLib/taglib/tests/test_oggflac.cpp | 122 - Frameworks/TagLib/taglib/tests/test_opus.cpp | 137 -- .../TagLib/taglib/tests/test_propertymap.cpp | 114 - Frameworks/TagLib/taglib/tests/test_riff.cpp | 298 --- Frameworks/TagLib/taglib/tests/test_s3m.cpp | 127 -- Frameworks/TagLib/taglib/tests/test_speex.cpp | 102 - .../TagLib/taglib/tests/test_string.cpp | 371 --- .../TagLib/taglib/tests/test_synchdata.cpp | 127 -- .../TagLib/taglib/tests/test_trueaudio.cpp | 135 -- Frameworks/TagLib/taglib/tests/test_wav.cpp | 389 ---- .../TagLib/taglib/tests/test_wavpack.cpp | 183 -- .../TagLib/taglib/tests/test_xiphcomment.cpp | 215 -- Frameworks/TagLib/taglib/tests/test_xm.cpp | 220 -- Frameworks/TagLib/taglib/tests/utils.h | 150 -- Frameworks/TagLib/tr.lproj/InfoPlist.strings | 3 - .../TagLib/TagLib.xcodeproj/project.pbxproj | 72 +- Plugins/TagLib/TagLibID3v2Reader.mm | 29 +- Plugins/TagLib/TagLibMetadataReader.m | 40 +- Plugins/TagLib/TagLibMetadataWriter.m | 4 +- ThirdParty/Frameworks/tag.framework/Headers | 1 + ThirdParty/Frameworks/tag.framework/Resources | 1 + .../Versions/A/Headers}/aifffile.h | 53 +- .../Versions/A/Headers}/aiffproperties.h | 65 +- .../Versions/A/Headers}/apefile.h | 51 +- .../Versions/A/Headers}/apefooter.h | 29 +- .../Versions/A/Headers}/apeitem.h | 54 +- .../Versions/A/Headers}/apeproperties.h | 60 +- .../Versions/A/Headers}/apetag.h | 98 +- .../Versions/A/Headers}/asfattribute.h | 30 +- .../Versions/A/Headers}/asffile.h | 40 +- .../Versions/A/Headers}/asfpicture.h | 78 +- .../Versions/A/Headers}/asfproperties.h | 54 +- .../Versions/A/Headers}/asftag.h | 170 +- .../A/Headers}/attachedpictureframe.h | 85 +- .../Versions/A/Headers}/audioproperties.h | 40 +- .../Versions/A/Headers}/chapterframe.h | 44 +- .../Versions/A/Headers}/commentsframe.h | 34 +- .../Versions/A/Headers/dsdiffdiintag.h | 147 ++ .../Versions/A/Headers/dsdifffile.h | 290 +++ .../Versions/A/Headers/dsdiffproperties.h | 106 +- .../Versions/A/Headers/dsffile.h | 156 ++ .../Versions/A/Headers/dsfproperties.h | 86 +- .../A/Headers}/eventtimingcodesframe.h | 30 +- .../Versions/A/Headers/fileref.h | 417 ++++ .../Versions/A/Headers}/flacfile.h | 150 +- .../Versions/A/Headers}/flacmetadatablock.h | 24 +- .../Versions/A/Headers}/flacpicture.h | 99 +- .../Versions/A/Headers}/flacproperties.h | 72 +- .../Headers}/generalencapsulatedobjectframe.h | 36 +- .../Versions/A/Headers}/id3v1genres.h | 12 +- .../Versions/A/Headers}/id3v1tag.h | 87 +- .../tag.framework/Versions/A/Headers/id3v2.h | 34 + .../Versions/A/Headers}/id3v2extendedheader.h | 23 +- .../Versions/A/Headers}/id3v2footer.h | 19 +- .../Versions/A/Headers}/id3v2frame.h | 223 +- .../Versions/A/Headers}/id3v2framefactory.h | 108 +- .../Versions/A/Headers}/id3v2header.h | 35 +- .../Versions/A/Headers}/id3v2synchdata.h | 16 +- .../Versions/A/Headers}/id3v2tag.h | 149 +- .../Versions/A/Headers}/infotag.h | 125 +- .../Versions/A/Headers}/itfile.h | 53 +- .../Versions/A/Headers}/itproperties.h | 69 +- .../Versions/A/Headers}/modfile.h | 55 +- .../Versions/A/Headers}/modfilebase.h | 31 +- .../Versions/A/Headers}/modproperties.h | 39 +- .../Versions/A/Headers}/modtag.h | 170 +- .../Versions/A/Headers}/mp4atom.h | 75 +- .../Versions/A/Headers}/mp4coverart.h | 38 +- .../Versions/A/Headers}/mp4file.h | 80 +- .../Versions/A/Headers}/mp4item.h | 54 +- .../Versions/A/Headers/mp4itemfactory.h | 257 +++ .../Versions/A/Headers}/mp4properties.h | 51 +- .../tag.framework/Versions/A/Headers/mp4tag.h | 137 ++ .../Versions/A/Headers}/mpcfile.h | 66 +- .../Versions/A/Headers}/mpcproperties.h | 66 +- .../Versions/A/Headers}/mpegfile.h | 188 +- .../Versions/A/Headers}/mpegheader.h | 86 +- .../Versions/A/Headers}/mpegproperties.h | 66 +- .../Versions/A/Headers}/oggfile.h | 27 +- .../Versions/A/Headers}/oggflacfile.h | 42 +- .../Versions/A/Headers}/oggpage.h | 40 +- .../Versions/A/Headers}/oggpageheader.h | 38 +- .../Versions/A/Headers}/opusfile.h | 40 +- .../Versions/A/Headers}/opusproperties.h | 45 +- .../Versions/A/Headers}/ownershipframe.h | 37 +- .../Versions/A/Headers}/podcastframe.h | 28 +- .../Versions/A/Headers}/popularimeterframe.h | 36 +- .../Versions/A/Headers}/privateframe.h | 33 +- .../Versions/A/Headers}/relativevolumeframe.h | 78 +- .../Versions/A/Headers}/rifffile.h | 27 +- .../Versions/A/Headers}/s3mfile.h | 52 +- .../Versions/A/Headers}/s3mproperties.h | 67 +- .../Versions/A/Headers}/speexfile.h | 40 +- .../Versions/A/Headers}/speexproperties.h | 45 +- .../A/Headers}/synchronizedlyricsframe.h | 33 +- .../A/Headers}/tableofcontentsframe.h | 58 +- .../tag.framework/Versions/A/Headers}/tag.h | 228 +- .../Versions/A/Headers}/taglib.h | 142 +- .../Versions/A/Headers}/taglib_export.h | 15 + .../Versions/A/Headers}/tbytevector.h | 260 ++- .../Versions/A/Headers}/tbytevectorlist.h | 45 +- .../Versions/A/Headers}/tbytevectorstream.h | 60 +- .../Versions/A/Headers}/tdebuglistener.h | 16 +- .../A/Headers}/textidentificationframe.h | 70 +- .../tag.framework/Versions/A/Headers}/tfile.h | 113 +- .../Versions/A/Headers}/tfilestream.h | 62 +- .../Versions/A/Headers}/tiostream.h | 44 +- .../tag.framework/Versions/A/Headers}/tlist.h | 109 +- .../Versions/A/Headers}/tlist.tcc | 103 +- .../tag.framework/Versions/A/Headers}/tmap.h | 94 +- .../Versions/A/Headers}/tmap.tcc | 76 +- .../Versions/A/Headers/tpicturetype.h | 122 + .../Versions/A/Headers}/tpropertymap.h | 107 +- .../Versions/A/Headers}/trueaudiofile.h | 140 +- .../Versions/A/Headers}/trueaudioproperties.h | 48 +- .../Versions/A/Headers}/tstring.h | 190 +- .../Versions/A/Headers}/tstringlist.h | 48 +- .../Versions/A/Headers/tvariant.h | 211 ++ .../Versions/A/Headers/tversionnumber.h | 142 ++ .../A/Headers}/uniquefileidentifierframe.h | 25 +- .../Versions/A/Headers}/unknownframe.h | 26 +- .../A/Headers}/unsynchronizedlyricsframe.h | 34 +- .../Versions/A/Headers}/urllinkframe.h | 50 +- .../Versions/A/Headers}/vorbisfile.h | 50 +- .../Versions/A/Headers}/vorbisproperties.h | 55 +- .../Versions/A/Headers}/wavfile.h | 68 +- .../Versions/A/Headers}/wavpackfile.h | 57 +- .../Versions/A/Headers}/wavpackproperties.h | 67 +- .../Versions/A/Headers}/wavproperties.h | 73 +- .../Versions/A/Headers}/xingheader.h | 40 +- .../Versions/A/Headers}/xiphcomment.h | 117 +- .../Versions/A/Headers}/xmfile.h | 52 +- .../Versions/A/Headers}/xmproperties.h | 47 +- .../Versions/A/Resources}/Info.plist | 14 +- .../Frameworks/tag.framework/Versions/A/tag | Bin 0 -> 8103376 bytes .../Frameworks/tag.framework/Versions/Current | 1 + ThirdParty/Frameworks/tag.framework/tag | 1 + 429 files changed, 5320 insertions(+), 57679 deletions(-) delete mode 100644 Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj delete mode 100644 Frameworks/TagLib/TagLib.xcodeproj/xcshareddata/xcschemes/TagLib Framework.xcscheme delete mode 100644 Frameworks/TagLib/en.lproj/InfoPlist.strings delete mode 100644 Frameworks/TagLib/es.lproj/InfoPlist.strings delete mode 100644 Frameworks/TagLib/pl.lproj/InfoPlist.strings delete mode 100644 Frameworks/TagLib/taglib/3rdparty/utf8-cpp/checked.h delete mode 100644 Frameworks/TagLib/taglib/3rdparty/utf8-cpp/core.h delete mode 100644 Frameworks/TagLib/taglib/AUTHORS delete mode 100644 Frameworks/TagLib/taglib/CMakeLists.txt delete mode 100644 Frameworks/TagLib/taglib/COPYING.LGPL delete mode 100644 Frameworks/TagLib/taglib/COPYING.MPL delete mode 100644 Frameworks/TagLib/taglib/ConfigureChecks.cmake delete mode 100644 Frameworks/TagLib/taglib/Doxyfile.cmake delete mode 100644 Frameworks/TagLib/taglib/INSTALL.md delete mode 100644 Frameworks/TagLib/taglib/NEWS delete mode 100644 Frameworks/TagLib/taglib/README.md delete mode 100644 Frameworks/TagLib/taglib/bindings/CMakeLists.txt delete mode 100644 Frameworks/TagLib/taglib/bindings/README delete mode 100644 Frameworks/TagLib/taglib/bindings/c/CMakeLists.txt delete mode 100644 Frameworks/TagLib/taglib/bindings/c/tag_c.cpp delete mode 100644 Frameworks/TagLib/taglib/bindings/c/tag_c.h delete mode 100644 Frameworks/TagLib/taglib/bindings/c/taglib_c.pc.cmake delete mode 100644 Frameworks/TagLib/taglib/cmake/modules/FindCppUnit.cmake delete mode 100644 Frameworks/TagLib/taglib/cmake/modules/MacroEnsureVersion.cmake delete mode 100644 Frameworks/TagLib/taglib/cmake_uninstall.cmake.in delete mode 100644 Frameworks/TagLib/taglib/config.h delete mode 100644 Frameworks/TagLib/taglib/config.h.cmake delete mode 100644 Frameworks/TagLib/taglib/doc/README delete mode 100644 Frameworks/TagLib/taglib/doc/api-footer.html delete mode 100644 Frameworks/TagLib/taglib/doc/api-header.html delete mode 100644 Frameworks/TagLib/taglib/doc/taglib-api.css delete mode 100644 Frameworks/TagLib/taglib/doc/taglib.png delete mode 100644 Frameworks/TagLib/taglib/examples/CMakeLists.txt delete mode 100644 Frameworks/TagLib/taglib/examples/framelist.cpp delete mode 100644 Frameworks/TagLib/taglib/examples/strip-id3v1.cpp delete mode 100644 Frameworks/TagLib/taglib/examples/tagreader.cpp delete mode 100644 Frameworks/TagLib/taglib/examples/tagreader_c.c delete mode 100644 Frameworks/TagLib/taglib/examples/tagwriter.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib-config.cmake delete mode 100644 Frameworks/TagLib/taglib/taglib-config.cmd.cmake delete mode 100644 Frameworks/TagLib/taglib/taglib.pc.cmake delete mode 100644 Frameworks/TagLib/taglib/taglib/CMakeLists.txt delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/ape-tag-format.txt delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/apefile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/apefooter.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/apegenfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/apegenfile.h delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/apeitem.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/apeproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ape/apetag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/asf/asfattribute.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/asf/asffile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/asf/asfpicture.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/asf/asfproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/asf/asftag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/asf/asfutils.h delete mode 100644 Frameworks/TagLib/taglib/taglib/audioproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/fileref.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/fileref.h delete mode 100644 Frameworks/TagLib/taglib/taglib/flac/flacfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/flac/flacmetadatablock.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/flac/flacpicture.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/flac/flacproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/it/itfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/it/itproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mod/modfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mod/modfilebase.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mod/modfileprivate.h delete mode 100644 Frameworks/TagLib/taglib/taglib/mod/modproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mod/modtag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mp4/mp4atom.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mp4/mp4file.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mp4/mp4item.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mp4/mp4properties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mp4/mp4tag.h delete mode 100644 Frameworks/TagLib/taglib/taglib/mpc/mpcfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpc/mpcproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1genres.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1tag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/chapterframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/eventtimingcodesframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/ownershipframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/podcastframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/privateframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.h delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2footer.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2frame.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2header.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2tag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/mpegheader.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/mpegproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/mpegutils.h delete mode 100644 Frameworks/TagLib/taglib/taglib/mpeg/xingheader.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/flac/oggflacfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/oggfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/oggpage.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/oggpageheader.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/opus/opusfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/opus/opusproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/speex/speexfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/speex/speexproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/ogg/xiphcomment.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/riff/aiff/aifffile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/riff/aiff/aiffproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/riff/rifffile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/riff/riffutils.h delete mode 100644 Frameworks/TagLib/taglib/taglib/riff/wav/infotag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/riff/wav/wavfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/riff/wav/wavproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/s3m/s3mfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/s3m/s3mproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/tag.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/taglib_config.h.cmake delete mode 100644 Frameworks/TagLib/taglib/taglib/tagunion.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/tagunion.h delete mode 100644 Frameworks/TagLib/taglib/taglib/tagutils.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/tagutils.h delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tbytevector.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorlist.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorstream.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tdebug.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tdebug.h delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tdebuglistener.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tfilestream.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tiostream.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tpropertymap.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.h delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tstring.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tstringlist.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tutils.h delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tzlib.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/toolkit/tzlib.h delete mode 100644 Frameworks/TagLib/taglib/taglib/trueaudio/trueaudiofile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/trueaudio/trueaudioproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/wavpack/wavpackfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/wavpack/wavpackproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/xm/xmfile.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib/xm/xmproperties.cpp delete mode 100644 Frameworks/TagLib/taglib/taglib_config.h delete mode 100644 Frameworks/TagLib/taglib/tests/CMakeLists.txt delete mode 100644 Frameworks/TagLib/taglib/tests/data/005411.id3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/64bit.mp4 delete mode 100644 Frameworks/TagLib/taglib/tests/data/alaw.aifc delete mode 100644 Frameworks/TagLib/taglib/tests/data/alaw.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/ape-id3v1.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/ape-id3v2.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/ape.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/bladeenc.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/blank_video.m4v delete mode 100644 Frameworks/TagLib/taglib/tests/data/broken-tenc.id3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/changed.mod delete mode 100644 Frameworks/TagLib/taglib/tests/data/changed.s3m delete mode 100644 Frameworks/TagLib/taglib/tests/data/changed.xm delete mode 100644 Frameworks/TagLib/taglib/tests/data/click.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/data/click.wv delete mode 100644 Frameworks/TagLib/taglib/tests/data/compressed_id3_frame.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/correctness_gain_silent_output.opus delete mode 100644 Frameworks/TagLib/taglib/tests/data/covr-junk.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/dsd_stereo.wv delete mode 100644 Frameworks/TagLib/taglib/tests/data/duplicate_id3v2.aiff delete mode 100644 Frameworks/TagLib/taglib/tests/data/duplicate_id3v2.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/duplicate_tags.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty-seektable.flac delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty.aiff delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty.ogg delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty.spx delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty.tta delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty_alac.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty_flac.oga delete mode 100644 Frameworks/TagLib/taglib/tests/data/empty_vorbis.oga delete mode 100644 Frameworks/TagLib/taglib/tests/data/excessive_alloc.aif delete mode 100644 Frameworks/TagLib/taglib/tests/data/excessive_alloc.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/float64.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/four_channels.wv delete mode 100644 Frameworks/TagLib/taglib/tests/data/garbage.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/gnre.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/has-tags.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/id3v22-tda.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/ilst-is-last.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/infloop.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/infloop.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/data/infloop.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/infloop.wv delete mode 100644 Frameworks/TagLib/taglib/tests/data/invalid-frames1.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/invalid-frames2.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/invalid-frames3.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/lame_cbr.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/lame_vbr.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/longloop.ape delete mode 100644 Frameworks/TagLib/taglib/tests/data/lossless.wma delete mode 100644 Frameworks/TagLib/taglib/tests/data/lowercase-fields.ogg delete mode 100644 Frameworks/TagLib/taglib/tests/data/mac-390-hdr.ape delete mode 100644 Frameworks/TagLib/taglib/tests/data/mac-396.ape delete mode 100644 Frameworks/TagLib/taglib/tests/data/mac-399-id3v2.ape delete mode 100644 Frameworks/TagLib/taglib/tests/data/mac-399-tagged.ape delete mode 100644 Frameworks/TagLib/taglib/tests/data/mac-399.ape delete mode 100644 Frameworks/TagLib/taglib/tests/data/mpeg2.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/multiple-vc.flac delete mode 100644 Frameworks/TagLib/taglib/tests/data/no-extension delete mode 100644 Frameworks/TagLib/taglib/tests/data/no-tags.3g2 delete mode 100644 Frameworks/TagLib/taglib/tests/data/no-tags.flac delete mode 100644 Frameworks/TagLib/taglib/tests/data/no-tags.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/no_length.wv delete mode 100644 Frameworks/TagLib/taglib/tests/data/noise.aif delete mode 100644 Frameworks/TagLib/taglib/tests/data/noise_odd.aif delete mode 100644 Frameworks/TagLib/taglib/tests/data/non_standard_rate.wv delete mode 100644 Frameworks/TagLib/taglib/tests/data/pcm_with_fact_chunk.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/rare_frames.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/segfault.aif delete mode 100644 Frameworks/TagLib/taglib/tests/data/segfault.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/data/segfault.oga delete mode 100644 Frameworks/TagLib/taglib/tests/data/segfault.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/segfault2.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/data/silence-1.wma delete mode 100644 Frameworks/TagLib/taglib/tests/data/silence-44-s.flac delete mode 100644 Frameworks/TagLib/taglib/tests/data/sinewave.flac delete mode 100644 Frameworks/TagLib/taglib/tests/data/stripped.xm delete mode 100644 Frameworks/TagLib/taglib/tests/data/sv4_header.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/data/sv5_header.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/data/sv8_header.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/data/tagged.tta delete mode 100644 Frameworks/TagLib/taglib/tests/data/tagged.wv delete mode 100644 Frameworks/TagLib/taglib/tests/data/test.it delete mode 100644 Frameworks/TagLib/taglib/tests/data/test.mod delete mode 100644 Frameworks/TagLib/taglib/tests/data/test.ogg delete mode 100644 Frameworks/TagLib/taglib/tests/data/test.s3m delete mode 100644 Frameworks/TagLib/taglib/tests/data/test.xm delete mode 100644 Frameworks/TagLib/taglib/tests/data/toc_many_children.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/uint8we.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/unsupported-extension.xx delete mode 100644 Frameworks/TagLib/taglib/tests/data/unsynch.id3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/w000.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/xing.mp3 delete mode 100644 Frameworks/TagLib/taglib/tests/data/zero-length-mdat.m4a delete mode 100644 Frameworks/TagLib/taglib/tests/data/zero-size-chunk.wav delete mode 100644 Frameworks/TagLib/taglib/tests/data/zero-sized-padding.flac delete mode 100644 Frameworks/TagLib/taglib/tests/data/zerodiv.ape delete mode 100644 Frameworks/TagLib/taglib/tests/data/zerodiv.mpc delete mode 100644 Frameworks/TagLib/taglib/tests/main.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/plainfile.h delete mode 100644 Frameworks/TagLib/taglib/tests/test_aiff.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_ape.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_apetag.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_asf.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_bytevector.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_bytevectorlist.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_bytevectorstream.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_file.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_fileref.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_flac.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_flacpicture.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_flacunknownmetadatablock.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_id3v1.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_id3v2.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_info.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_it.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_list.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_map.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_mod.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_mp4.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_mp4coverart.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_mp4item.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_mpc.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_mpeg.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_ogg.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_oggflac.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_opus.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_propertymap.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_riff.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_s3m.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_speex.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_string.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_synchdata.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_trueaudio.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_wav.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_wavpack.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_xiphcomment.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/test_xm.cpp delete mode 100644 Frameworks/TagLib/taglib/tests/utils.h delete mode 100644 Frameworks/TagLib/tr.lproj/InfoPlist.strings create mode 120000 ThirdParty/Frameworks/tag.framework/Headers create mode 120000 ThirdParty/Frameworks/tag.framework/Resources rename {Frameworks/TagLib/taglib/taglib/riff/aiff => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/aifffile.h (80%) rename {Frameworks/TagLib/taglib/taglib/riff/aiff => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/aiffproperties.h (70%) rename {Frameworks/TagLib/taglib/taglib/ape => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/apefile.h (86%) rename {Frameworks/TagLib/taglib/taglib/ape => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/apefooter.h (89%) rename {Frameworks/TagLib/taglib/taglib/ape => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/apeitem.h (83%) rename {Frameworks/TagLib/taglib/taglib/ape => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/apeproperties.h (70%) rename {Frameworks/TagLib/taglib/taglib/ape => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/apetag.h (74%) rename {Frameworks/TagLib/taglib/taglib/asf => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/asfattribute.h (91%) rename {Frameworks/TagLib/taglib/taglib/asf => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/asffile.h (85%) rename {Frameworks/TagLib/taglib/taglib/asf => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/asfpicture.h (65%) rename {Frameworks/TagLib/taglib/taglib/asf => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/asfproperties.h (81%) rename {Frameworks/TagLib/taglib/taglib/asf => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/asftag.h (51%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/attachedpictureframe.h (68%) rename {Frameworks/TagLib/taglib/taglib => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/audioproperties.h (82%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/chapterframe.h (88%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/commentsframe.h (87%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffdiintag.h create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdifffile.h rename Frameworks/TagLib/taglib/taglib/mp4/mp4coverart.cpp => ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffproperties.h (52%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsffile.h rename Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.h => ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsfproperties.h (55%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/eventtimingcodesframe.h (89%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/fileref.h rename {Frameworks/TagLib/taglib/taglib/flac => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/flacfile.h (74%) rename {Frameworks/TagLib/taglib/taglib/flac => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/flacmetadatablock.h (86%) rename {Frameworks/TagLib/taglib/taglib/flac => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/flacpicture.h (60%) rename {Frameworks/TagLib/taglib/taglib/flac => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/flacproperties.h (64%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/generalencapsulatedobjectframe.h (87%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v1 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v1genres.h (94%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v1 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v1tag.h (76%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2.h rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v2extendedheader.h (86%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v2footer.h (90%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v2frame.h (71%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v2framefactory.h (64%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v2header.h (85%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v2synchdata.h (87%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/id3v2tag.h (79%) rename {Frameworks/TagLib/taglib/taglib/riff/wav => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/infotag.h (66%) rename {Frameworks/TagLib/taglib/taglib/it => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/itfile.h (76%) rename {Frameworks/TagLib/taglib/taglib/it => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/itproperties.h (66%) rename {Frameworks/TagLib/taglib/taglib/mod => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/modfile.h (76%) rename {Frameworks/TagLib/taglib/taglib/mod => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/modfilebase.h (85%) rename {Frameworks/TagLib/taglib/taglib/mod => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/modproperties.h (78%) rename {Frameworks/TagLib/taglib/taglib/mod => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/modtag.h (59%) rename {Frameworks/TagLib/taglib/taglib/mp4 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mp4atom.h (70%) rename {Frameworks/TagLib/taglib/taglib/mp4 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mp4coverart.h (77%) rename {Frameworks/TagLib/taglib/taglib/mp4 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mp4file.h (72%) rename {Frameworks/TagLib/taglib/taglib/mp4 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mp4item.h (73%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4itemfactory.h rename {Frameworks/TagLib/taglib/taglib/mp4 => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mp4properties.h (74%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4tag.h rename {Frameworks/TagLib/taglib/taglib/mpc => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mpcfile.h (84%) rename {Frameworks/TagLib/taglib/taglib/mpc => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mpcproperties.h (70%) rename {Frameworks/TagLib/taglib/taglib/mpeg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mpegfile.h (70%) rename {Frameworks/TagLib/taglib/taglib/mpeg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mpegheader.h (63%) rename {Frameworks/TagLib/taglib/taglib/mpeg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/mpegproperties.h (75%) rename {Frameworks/TagLib/taglib/taglib/ogg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/oggfile.h (90%) rename {Frameworks/TagLib/taglib/taglib/ogg/flac => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/oggflacfile.h (86%) rename {Frameworks/TagLib/taglib/taglib/ogg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/oggpage.h (90%) rename {Frameworks/TagLib/taglib/taglib/ogg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/oggpageheader.h (87%) rename {Frameworks/TagLib/taglib/taglib/ogg/opus => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/opusfile.h (86%) rename {Frameworks/TagLib/taglib/taglib/ogg/opus => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/opusproperties.h (78%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/ownershipframe.h (82%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/podcastframe.h (80%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/popularimeterframe.h (81%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/privateframe.h (82%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/relativevolumeframe.h (80%) rename {Frameworks/TagLib/taglib/taglib/riff => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/rifffile.h (89%) rename {Frameworks/TagLib/taglib/taglib/s3m => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/s3mfile.h (76%) rename {Frameworks/TagLib/taglib/taglib/s3m => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/s3mproperties.h (61%) rename {Frameworks/TagLib/taglib/taglib/ogg/speex => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/speexfile.h (86%) rename {Frameworks/TagLib/taglib/taglib/ogg/speex => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/speexproperties.h (77%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/synchronizedlyricsframe.h (90%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tableofcontentsframe.h (84%) rename {Frameworks/TagLib/taglib/taglib => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tag.h (55%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/taglib.h (59%) rename {Frameworks/TagLib/taglib/taglib => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/taglib_export.h (76%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tbytevector.h (71%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tbytevectorlist.h (77%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tbytevectorstream.h (70%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tdebuglistener.h (88%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/textidentificationframe.h (87%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tfile.h (79%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tfilestream.h (74%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tiostream.h (83%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tlist.h (69%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tlist.tcc (77%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tmap.h (66%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tmap.tcc (73%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tpicturetype.h rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tpropertymap.h (71%) rename {Frameworks/TagLib/taglib/taglib/trueaudio => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/trueaudiofile.h (73%) rename {Frameworks/TagLib/taglib/taglib/trueaudio => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/trueaudioproperties.h (76%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tstring.h (75%) rename {Frameworks/TagLib/taglib/taglib/toolkit => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/tstringlist.h (76%) create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tvariant.h create mode 100644 ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tversionnumber.h rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/uniquefileidentifierframe.h (89%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/unknownframe.h (82%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/unsynchronizedlyricsframe.h (88%) rename {Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/urllinkframe.h (82%) rename {Frameworks/TagLib/taglib/taglib/ogg/vorbis => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/vorbisfile.h (82%) rename {Frameworks/TagLib/taglib/taglib/ogg/vorbis => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/vorbisproperties.h (79%) rename {Frameworks/TagLib/taglib/taglib/riff/wav => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/wavfile.h (82%) rename {Frameworks/TagLib/taglib/taglib/wavpack => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/wavpackfile.h (82%) rename {Frameworks/TagLib/taglib/taglib/wavpack => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/wavpackproperties.h (65%) rename {Frameworks/TagLib/taglib/taglib/riff/wav => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/wavproperties.h (63%) rename {Frameworks/TagLib/taglib/taglib/mpeg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/xingheader.h (78%) rename {Frameworks/TagLib/taglib/taglib/ogg => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/xiphcomment.h (72%) rename {Frameworks/TagLib/taglib/taglib/xm => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/xmfile.h (76%) rename {Frameworks/TagLib/taglib/taglib/xm => ThirdParty/Frameworks/tag.framework/Versions/A/Headers}/xmproperties.h (73%) rename {Frameworks/TagLib => ThirdParty/Frameworks/tag.framework/Versions/A/Resources}/Info.plist (64%) create mode 100755 ThirdParty/Frameworks/tag.framework/Versions/A/tag create mode 120000 ThirdParty/Frameworks/tag.framework/Versions/Current create mode 120000 ThirdParty/Frameworks/tag.framework/tag diff --git a/Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj b/Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj deleted file mode 100644 index 73abddbdb..000000000 --- a/Frameworks/TagLib/TagLib.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1304 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 32AE5A5A14E70ED600420CA0 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59A014E70ED600420CA0 /* config.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6614E70ED600420CA0 /* asfattribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59AF14E70ED600420CA0 /* asfattribute.cpp */; }; - 32AE5A6714E70ED600420CA0 /* asfattribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59B014E70ED600420CA0 /* asfattribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6814E70ED600420CA0 /* asffile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59B114E70ED600420CA0 /* asffile.cpp */; }; - 32AE5A6914E70ED600420CA0 /* asffile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59B214E70ED600420CA0 /* asffile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6A14E70ED600420CA0 /* asfpicture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59B314E70ED600420CA0 /* asfpicture.cpp */; }; - 32AE5A6B14E70ED600420CA0 /* asfpicture.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59B414E70ED600420CA0 /* asfpicture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6C14E70ED600420CA0 /* asfproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59B514E70ED600420CA0 /* asfproperties.cpp */; }; - 32AE5A6D14E70ED600420CA0 /* asfproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59B614E70ED600420CA0 /* asfproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A6E14E70ED600420CA0 /* asftag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59B714E70ED600420CA0 /* asftag.cpp */; }; - 32AE5A6F14E70ED600420CA0 /* asftag.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59B814E70ED600420CA0 /* asftag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A7014E70ED600420CA0 /* audioproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59B914E70ED600420CA0 /* audioproperties.cpp */; }; - 32AE5A7114E70ED600420CA0 /* audioproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59BA14E70ED600420CA0 /* audioproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A7214E70ED600420CA0 /* fileref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59BB14E70ED600420CA0 /* fileref.cpp */; }; - 32AE5A7314E70ED600420CA0 /* fileref.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59BC14E70ED600420CA0 /* fileref.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A8A14E70ED600420CA0 /* mpcfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D614E70ED600420CA0 /* mpcfile.cpp */; }; - 32AE5A8B14E70ED600420CA0 /* mpcfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59D714E70ED600420CA0 /* mpcfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A8C14E70ED600420CA0 /* mpcproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59D814E70ED600420CA0 /* mpcproperties.cpp */; }; - 32AE5A8D14E70ED600420CA0 /* mpcproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59D914E70ED600420CA0 /* mpcproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A8E14E70ED600420CA0 /* id3v1genres.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59DC14E70ED600420CA0 /* id3v1genres.cpp */; }; - 32AE5A8F14E70ED600420CA0 /* id3v1genres.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59DD14E70ED600420CA0 /* id3v1genres.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9114E70ED600420CA0 /* id3v1tag.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59DF14E70ED600420CA0 /* id3v1tag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9314E70ED600420CA0 /* attachedpictureframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59E314E70ED600420CA0 /* attachedpictureframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9514E70ED600420CA0 /* commentsframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59E514E70ED600420CA0 /* commentsframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9714E70ED600420CA0 /* generalencapsulatedobjectframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59E714E70ED600420CA0 /* generalencapsulatedobjectframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9814E70ED600420CA0 /* popularimeterframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59E814E70ED600420CA0 /* popularimeterframe.cpp */; }; - 32AE5A9914E70ED600420CA0 /* popularimeterframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59E914E70ED600420CA0 /* popularimeterframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9B14E70ED600420CA0 /* privateframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59EB14E70ED600420CA0 /* privateframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9C14E70ED600420CA0 /* relativevolumeframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59EC14E70ED600420CA0 /* relativevolumeframe.cpp */; }; - 32AE5A9D14E70ED600420CA0 /* relativevolumeframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59ED14E70ED600420CA0 /* relativevolumeframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5A9F14E70ED600420CA0 /* textidentificationframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59EF14E70ED600420CA0 /* textidentificationframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AA114E70ED600420CA0 /* uniquefileidentifierframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59F114E70ED600420CA0 /* uniquefileidentifierframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AA314E70ED600420CA0 /* unknownframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59F314E70ED600420CA0 /* unknownframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AA514E70ED600420CA0 /* unsynchronizedlyricsframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59F514E70ED600420CA0 /* unsynchronizedlyricsframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AA614E70ED600420CA0 /* urllinkframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59F614E70ED600420CA0 /* urllinkframe.cpp */; }; - 32AE5AA714E70ED600420CA0 /* urllinkframe.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59F714E70ED600420CA0 /* urllinkframe.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AAD14E70ED600420CA0 /* id3v2extendedheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59FD14E70ED600420CA0 /* id3v2extendedheader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AAE14E70ED600420CA0 /* id3v2footer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE59FE14E70ED600420CA0 /* id3v2footer.cpp */; }; - 32AE5AAF14E70ED600420CA0 /* id3v2footer.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE59FF14E70ED600420CA0 /* id3v2footer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AB014E70ED600420CA0 /* id3v2frame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A0014E70ED600420CA0 /* id3v2frame.cpp */; }; - 32AE5AB114E70ED600420CA0 /* id3v2frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0114E70ED600420CA0 /* id3v2frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AB314E70ED600420CA0 /* id3v2framefactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0314E70ED600420CA0 /* id3v2framefactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AB414E70ED600420CA0 /* id3v2header.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A0414E70ED600420CA0 /* id3v2header.cpp */; }; - 32AE5AB514E70ED600420CA0 /* id3v2header.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0514E70ED600420CA0 /* id3v2header.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AB614E70ED600420CA0 /* id3v2synchdata.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A0614E70ED600420CA0 /* id3v2synchdata.cpp */; }; - 32AE5AB714E70ED600420CA0 /* id3v2synchdata.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0714E70ED600420CA0 /* id3v2synchdata.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AB814E70ED600420CA0 /* id3v2tag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A0814E70ED600420CA0 /* id3v2tag.cpp */; }; - 32AE5AB914E70ED600420CA0 /* id3v2tag.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0914E70ED600420CA0 /* id3v2tag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5ABA14E70ED600420CA0 /* mpegfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A0A14E70ED600420CA0 /* mpegfile.cpp */; }; - 32AE5ABB14E70ED600420CA0 /* mpegfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0B14E70ED600420CA0 /* mpegfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5ABC14E70ED600420CA0 /* mpegheader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A0C14E70ED600420CA0 /* mpegheader.cpp */; }; - 32AE5ABD14E70ED600420CA0 /* mpegheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0D14E70ED600420CA0 /* mpegheader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5ABF14E70ED600420CA0 /* mpegproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A0F14E70ED600420CA0 /* mpegproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AC014E70ED600420CA0 /* xingheader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A1014E70ED600420CA0 /* xingheader.cpp */; }; - 32AE5AC114E70ED600420CA0 /* xingheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A1114E70ED600420CA0 /* xingheader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AD414E70ED600420CA0 /* aifffile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2A14E70ED600420CA0 /* aifffile.cpp */; }; - 32AE5AD514E70ED600420CA0 /* aifffile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2B14E70ED600420CA0 /* aifffile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AD614E70ED600420CA0 /* aiffproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2C14E70ED600420CA0 /* aiffproperties.cpp */; }; - 32AE5AD714E70ED600420CA0 /* aiffproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2D14E70ED600420CA0 /* aiffproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AD814E70ED600420CA0 /* rifffile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A2E14E70ED600420CA0 /* rifffile.cpp */; }; - 32AE5AD914E70ED600420CA0 /* rifffile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A2F14E70ED600420CA0 /* rifffile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5ADE14E70ED600420CA0 /* tag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A3514E70ED600420CA0 /* tag.cpp */; }; - 32AE5ADF14E70ED600420CA0 /* tag.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A3614E70ED600420CA0 /* tag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AE114E70ED600420CA0 /* taglib_export.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A3814E70ED600420CA0 /* taglib_export.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AE214E70ED600420CA0 /* tagunion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A3914E70ED600420CA0 /* tagunion.cpp */; }; - 32AE5AE314E70ED600420CA0 /* tagunion.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A3A14E70ED600420CA0 /* tagunion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AE414E70ED600420CA0 /* taglib.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A3C14E70ED600420CA0 /* taglib.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AE514E70ED600420CA0 /* tbytevector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A3D14E70ED600420CA0 /* tbytevector.cpp */; }; - 32AE5AE614E70ED600420CA0 /* tbytevector.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A3E14E70ED600420CA0 /* tbytevector.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AE714E70ED600420CA0 /* tbytevectorlist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A3F14E70ED600420CA0 /* tbytevectorlist.cpp */; }; - 32AE5AE814E70ED600420CA0 /* tbytevectorlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4014E70ED600420CA0 /* tbytevectorlist.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AE914E70ED600420CA0 /* tdebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A4114E70ED600420CA0 /* tdebug.cpp */; }; - 32AE5AEA14E70ED600420CA0 /* tdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4214E70ED600420CA0 /* tdebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AEB14E70ED600420CA0 /* tfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A4314E70ED600420CA0 /* tfile.cpp */; }; - 32AE5AEC14E70ED600420CA0 /* tfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4414E70ED600420CA0 /* tfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AED14E70ED600420CA0 /* tlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4514E70ED600420CA0 /* tlist.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AEF14E70ED600420CA0 /* tmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4714E70ED600420CA0 /* tmap.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AF114E70ED600420CA0 /* tstring.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A4914E70ED600420CA0 /* tstring.cpp */; }; - 32AE5AF214E70ED600420CA0 /* tstring.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4A14E70ED600420CA0 /* tstring.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AF314E70ED600420CA0 /* tstringlist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A4B14E70ED600420CA0 /* tstringlist.cpp */; }; - 32AE5AF414E70ED600420CA0 /* tstringlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4C14E70ED600420CA0 /* tstringlist.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AFB14E70ED700420CA0 /* wavpackfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A5514E70ED600420CA0 /* wavpackfile.cpp */; }; - 32AE5AFC14E70ED700420CA0 /* wavpackfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A5614E70ED600420CA0 /* wavpackfile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AFD14E70ED700420CA0 /* wavpackproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 32AE5A5714E70ED600420CA0 /* wavpackproperties.cpp */; }; - 32AE5AFE14E70ED700420CA0 /* wavpackproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A5814E70ED600420CA0 /* wavpackproperties.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5AFF14E70ED700420CA0 /* taglib_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A5914E70ED600420CA0 /* taglib_config.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5B0014E70F4700420CA0 /* tlist.tcc in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4614E70ED600420CA0 /* tlist.tcc */; settings = {ATTRIBUTES = (Public, ); }; }; - 32AE5B0114E70F4A00420CA0 /* tmap.tcc in Headers */ = {isa = PBXBuildFile; fileRef = 32AE5A4814E70ED600420CA0 /* tmap.tcc */; settings = {ATTRIBUTES = (Public, ); }; }; - 8315534428741C7A00D4D746 /* apeproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533728741C7A00D4D746 /* apeproperties.cpp */; }; - 8315534528741C7A00D4D746 /* apefile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533828741C7A00D4D746 /* apefile.h */; }; - 8315534628741C7A00D4D746 /* apeproperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533928741C7A00D4D746 /* apeproperties.h */; }; - 8315534728741C7A00D4D746 /* apeitem.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533A28741C7A00D4D746 /* apeitem.h */; }; - 8315534828741C7A00D4D746 /* apefile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533B28741C7A00D4D746 /* apefile.cpp */; }; - 8315534928741C7A00D4D746 /* ape-tag-format.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8315533C28741C7A00D4D746 /* ape-tag-format.txt */; }; - 8315534A28741C7A00D4D746 /* apefooter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533D28741C7A00D4D746 /* apefooter.cpp */; }; - 8315534B28741C7A00D4D746 /* apetag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315533E28741C7A00D4D746 /* apetag.cpp */; }; - 8315534C28741C7A00D4D746 /* apefooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315533F28741C7A00D4D746 /* apefooter.h */; }; - 8315534D28741C7A00D4D746 /* apeitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315534028741C7A00D4D746 /* apeitem.cpp */; }; - 8315534E28741C7A00D4D746 /* apegenfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315534128741C7A00D4D746 /* apegenfile.h */; }; - 8315534F28741C7A00D4D746 /* apetag.h in Headers */ = {isa = PBXBuildFile; fileRef = 8315534228741C7A00D4D746 /* apetag.h */; }; - 8315535028741C7A00D4D746 /* apegenfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8315534328741C7A00D4D746 /* apegenfile.cpp */; }; - 83B46FCA2707EED200847FC9 /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 83B46FC92707EED200847FC9 /* libiconv.tbd */; }; - 83B46FCC2707EEDB00847FC9 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 83B46FCB2707EEDB00847FC9 /* libz.tbd */; }; - 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; }; - EDE862FD25CF6BD70086EFD3 /* tpropertymap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE862FC25CF6BD60086EFD3 /* tpropertymap.cpp */; }; - EDE8630225CF6C260086EFD3 /* tfilestream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8630025CF6C260086EFD3 /* tfilestream.cpp */; }; - EDE8630325CF6C260086EFD3 /* trefcounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8630125CF6C260086EFD3 /* trefcounter.cpp */; }; - EDE8630625CF6C5B0086EFD3 /* itproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8630425CF6C5B0086EFD3 /* itproperties.cpp */; }; - EDE8630725CF6C5B0086EFD3 /* itfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8630525CF6C5B0086EFD3 /* itfile.cpp */; }; - EDE8630E25CF6CAE0086EFD3 /* xmfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8630A25CF6CAE0086EFD3 /* xmfile.cpp */; }; - EDE8631025CF6CAE0086EFD3 /* xmproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8630C25CF6CAE0086EFD3 /* xmproperties.cpp */; }; - EDE8631D25CF6CC60086EFD3 /* modtag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8631425CF6CC60086EFD3 /* modtag.cpp */; }; - EDE8631E25CF6CC60086EFD3 /* modfilebase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8631525CF6CC60086EFD3 /* modfilebase.cpp */; }; - EDE8631F25CF6CC60086EFD3 /* modfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8631625CF6CC60086EFD3 /* modfile.cpp */; }; - EDE8632225CF6CC60086EFD3 /* modproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8631925CF6CC60086EFD3 /* modproperties.cpp */; }; - EDE8632B25CF6CDF0086EFD3 /* s3mproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8632725CF6CDF0086EFD3 /* s3mproperties.cpp */; }; - EDE8632C25CF6CE00086EFD3 /* s3mfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8632825CF6CDF0086EFD3 /* s3mfile.cpp */; }; - EDE8633925CF6CF50086EFD3 /* infotag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8632E25CF6CF50086EFD3 /* infotag.cpp */; }; - EDE8633C25CF6CF50086EFD3 /* wavfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8633125CF6CF50086EFD3 /* wavfile.cpp */; }; - EDE8633E25CF6CF50086EFD3 /* wavproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8633325CF6CF50086EFD3 /* wavproperties.cpp */; }; - EDE8634525CF6D1C0086EFD3 /* tagutils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8634325CF6D1C0086EFD3 /* tagutils.cpp */; }; - EDE8635325CF6D3D0086EFD3 /* tbytevectorstream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8634725CF6D3D0086EFD3 /* tbytevectorstream.cpp */; }; - EDE8635525CF6D3D0086EFD3 /* tdebuglistener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8634925CF6D3D0086EFD3 /* tdebuglistener.cpp */; }; - EDE8635C25CF6D3D0086EFD3 /* tiostream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8635025CF6D3D0086EFD3 /* tiostream.cpp */; }; - EDE8635D25CF6D3D0086EFD3 /* tzlib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8635125CF6D3D0086EFD3 /* tzlib.cpp */; }; - EDE863B125CF6D710086EFD3 /* synchronizedlyricsframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8636E25CF6D710086EFD3 /* synchronizedlyricsframe.cpp */; }; - EDE863B225CF6D710086EFD3 /* uniquefileidentifierframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8636F25CF6D710086EFD3 /* uniquefileidentifierframe.cpp */; }; - EDE863B325CF6D710086EFD3 /* privateframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637025CF6D710086EFD3 /* privateframe.cpp */; }; - EDE863B625CF6D710086EFD3 /* unknownframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637325CF6D710086EFD3 /* unknownframe.cpp */; }; - EDE863B925CF6D710086EFD3 /* eventtimingcodesframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637625CF6D710086EFD3 /* eventtimingcodesframe.cpp */; }; - EDE863BA25CF6D710086EFD3 /* unsynchronizedlyricsframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637725CF6D710086EFD3 /* unsynchronizedlyricsframe.cpp */; }; - EDE863BD25CF6D710086EFD3 /* podcastframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637A25CF6D710086EFD3 /* podcastframe.cpp */; }; - EDE863BF25CF6D710086EFD3 /* commentsframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637C25CF6D710086EFD3 /* commentsframe.cpp */; }; - EDE863C025CF6D710086EFD3 /* chapterframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637D25CF6D710086EFD3 /* chapterframe.cpp */; }; - EDE863C125CF6D710086EFD3 /* tableofcontentsframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637E25CF6D710086EFD3 /* tableofcontentsframe.cpp */; }; - EDE863C225CF6D710086EFD3 /* generalencapsulatedobjectframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8637F25CF6D710086EFD3 /* generalencapsulatedobjectframe.cpp */; }; - EDE863C625CF6D710086EFD3 /* ownershipframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8638325CF6D710086EFD3 /* ownershipframe.cpp */; }; - EDE863C725CF6D710086EFD3 /* attachedpictureframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8638425CF6D710086EFD3 /* attachedpictureframe.cpp */; }; - EDE863CD25CF6D710086EFD3 /* textidentificationframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8638A25CF6D710086EFD3 /* textidentificationframe.cpp */; }; - EDE863D525CF6D710086EFD3 /* id3v2framefactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8639225CF6D710086EFD3 /* id3v2framefactory.cpp */; }; - EDE863D825CF6D710086EFD3 /* id3v2extendedheader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE8639525CF6D710086EFD3 /* id3v2extendedheader.cpp */; }; - EDE863E425CF6D710086EFD3 /* id3v1tag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE863A225CF6D710086EFD3 /* id3v1tag.cpp */; }; - EDE863E625CF6D710086EFD3 /* mpegproperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EDE863A425CF6D710086EFD3 /* mpegproperties.cpp */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 174C7A360F4FD43100E18B0F /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = ""; }; - 32AE59A014E70ED600420CA0 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = taglib/config.h; sourceTree = ""; }; - 32AE59AF14E70ED600420CA0 /* asfattribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = asfattribute.cpp; sourceTree = ""; }; - 32AE59B014E70ED600420CA0 /* asfattribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asfattribute.h; sourceTree = ""; }; - 32AE59B114E70ED600420CA0 /* asffile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = asffile.cpp; sourceTree = ""; }; - 32AE59B214E70ED600420CA0 /* asffile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asffile.h; sourceTree = ""; }; - 32AE59B314E70ED600420CA0 /* asfpicture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = asfpicture.cpp; sourceTree = ""; }; - 32AE59B414E70ED600420CA0 /* asfpicture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asfpicture.h; sourceTree = ""; }; - 32AE59B514E70ED600420CA0 /* asfproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = asfproperties.cpp; sourceTree = ""; }; - 32AE59B614E70ED600420CA0 /* asfproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asfproperties.h; sourceTree = ""; }; - 32AE59B714E70ED600420CA0 /* asftag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = asftag.cpp; sourceTree = ""; }; - 32AE59B814E70ED600420CA0 /* asftag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asftag.h; sourceTree = ""; }; - 32AE59B914E70ED600420CA0 /* audioproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audioproperties.cpp; sourceTree = ""; }; - 32AE59BA14E70ED600420CA0 /* audioproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audioproperties.h; sourceTree = ""; }; - 32AE59BB14E70ED600420CA0 /* fileref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileref.cpp; sourceTree = ""; }; - 32AE59BC14E70ED600420CA0 /* fileref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileref.h; sourceTree = ""; }; - 32AE59D614E70ED600420CA0 /* mpcfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpcfile.cpp; sourceTree = ""; }; - 32AE59D714E70ED600420CA0 /* mpcfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpcfile.h; sourceTree = ""; }; - 32AE59D814E70ED600420CA0 /* mpcproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpcproperties.cpp; sourceTree = ""; }; - 32AE59D914E70ED600420CA0 /* mpcproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpcproperties.h; sourceTree = ""; }; - 32AE59DC14E70ED600420CA0 /* id3v1genres.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v1genres.cpp; sourceTree = ""; }; - 32AE59DD14E70ED600420CA0 /* id3v1genres.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v1genres.h; sourceTree = ""; }; - 32AE59DE14E70ED600420CA0 /* id3v1tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v1tag.cpp; sourceTree = ""; }; - 32AE59DF14E70ED600420CA0 /* id3v1tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v1tag.h; sourceTree = ""; }; - 32AE59E214E70ED600420CA0 /* attachedpictureframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attachedpictureframe.cpp; sourceTree = ""; }; - 32AE59E314E70ED600420CA0 /* attachedpictureframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attachedpictureframe.h; sourceTree = ""; }; - 32AE59E414E70ED600420CA0 /* commentsframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commentsframe.cpp; sourceTree = ""; }; - 32AE59E514E70ED600420CA0 /* commentsframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = commentsframe.h; sourceTree = ""; }; - 32AE59E614E70ED600420CA0 /* generalencapsulatedobjectframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = generalencapsulatedobjectframe.cpp; sourceTree = ""; }; - 32AE59E714E70ED600420CA0 /* generalencapsulatedobjectframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = generalencapsulatedobjectframe.h; sourceTree = ""; }; - 32AE59E814E70ED600420CA0 /* popularimeterframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = popularimeterframe.cpp; sourceTree = ""; }; - 32AE59E914E70ED600420CA0 /* popularimeterframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popularimeterframe.h; sourceTree = ""; }; - 32AE59EA14E70ED600420CA0 /* privateframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = privateframe.cpp; sourceTree = ""; }; - 32AE59EB14E70ED600420CA0 /* privateframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = privateframe.h; sourceTree = ""; }; - 32AE59EC14E70ED600420CA0 /* relativevolumeframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relativevolumeframe.cpp; sourceTree = ""; }; - 32AE59ED14E70ED600420CA0 /* relativevolumeframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = relativevolumeframe.h; sourceTree = ""; }; - 32AE59EE14E70ED600420CA0 /* textidentificationframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = textidentificationframe.cpp; sourceTree = ""; }; - 32AE59EF14E70ED600420CA0 /* textidentificationframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textidentificationframe.h; sourceTree = ""; }; - 32AE59F014E70ED600420CA0 /* uniquefileidentifierframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uniquefileidentifierframe.cpp; sourceTree = ""; }; - 32AE59F114E70ED600420CA0 /* uniquefileidentifierframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uniquefileidentifierframe.h; sourceTree = ""; }; - 32AE59F214E70ED600420CA0 /* unknownframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unknownframe.cpp; sourceTree = ""; }; - 32AE59F314E70ED600420CA0 /* unknownframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unknownframe.h; sourceTree = ""; }; - 32AE59F414E70ED600420CA0 /* unsynchronizedlyricsframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unsynchronizedlyricsframe.cpp; sourceTree = ""; }; - 32AE59F514E70ED600420CA0 /* unsynchronizedlyricsframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unsynchronizedlyricsframe.h; sourceTree = ""; }; - 32AE59F614E70ED600420CA0 /* urllinkframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = urllinkframe.cpp; sourceTree = ""; }; - 32AE59F714E70ED600420CA0 /* urllinkframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = urllinkframe.h; sourceTree = ""; }; - 32AE59F814E70ED600420CA0 /* id3v2.2.0.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = id3v2.2.0.txt; sourceTree = ""; }; - 32AE59F914E70ED600420CA0 /* id3v2.3.0.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = id3v2.3.0.txt; sourceTree = ""; }; - 32AE59FA14E70ED600420CA0 /* id3v2.4.0-frames.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "id3v2.4.0-frames.txt"; sourceTree = ""; }; - 32AE59FB14E70ED600420CA0 /* id3v2.4.0-structure.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "id3v2.4.0-structure.txt"; sourceTree = ""; }; - 32AE59FC14E70ED600420CA0 /* id3v2extendedheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2extendedheader.cpp; sourceTree = ""; }; - 32AE59FD14E70ED600420CA0 /* id3v2extendedheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2extendedheader.h; sourceTree = ""; }; - 32AE59FE14E70ED600420CA0 /* id3v2footer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2footer.cpp; sourceTree = ""; }; - 32AE59FF14E70ED600420CA0 /* id3v2footer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2footer.h; sourceTree = ""; }; - 32AE5A0014E70ED600420CA0 /* id3v2frame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2frame.cpp; sourceTree = ""; }; - 32AE5A0114E70ED600420CA0 /* id3v2frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2frame.h; sourceTree = ""; }; - 32AE5A0214E70ED600420CA0 /* id3v2framefactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2framefactory.cpp; sourceTree = ""; }; - 32AE5A0314E70ED600420CA0 /* id3v2framefactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2framefactory.h; sourceTree = ""; }; - 32AE5A0414E70ED600420CA0 /* id3v2header.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2header.cpp; sourceTree = ""; }; - 32AE5A0514E70ED600420CA0 /* id3v2header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2header.h; sourceTree = ""; }; - 32AE5A0614E70ED600420CA0 /* id3v2synchdata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2synchdata.cpp; sourceTree = ""; }; - 32AE5A0714E70ED600420CA0 /* id3v2synchdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2synchdata.h; sourceTree = ""; }; - 32AE5A0814E70ED600420CA0 /* id3v2tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2tag.cpp; sourceTree = ""; }; - 32AE5A0914E70ED600420CA0 /* id3v2tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2tag.h; sourceTree = ""; }; - 32AE5A0A14E70ED600420CA0 /* mpegfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpegfile.cpp; sourceTree = ""; }; - 32AE5A0B14E70ED600420CA0 /* mpegfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegfile.h; sourceTree = ""; }; - 32AE5A0C14E70ED600420CA0 /* mpegheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpegheader.cpp; sourceTree = ""; }; - 32AE5A0D14E70ED600420CA0 /* mpegheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegheader.h; sourceTree = ""; }; - 32AE5A0E14E70ED600420CA0 /* mpegproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpegproperties.cpp; sourceTree = ""; }; - 32AE5A0F14E70ED600420CA0 /* mpegproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegproperties.h; sourceTree = ""; }; - 32AE5A1014E70ED600420CA0 /* xingheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xingheader.cpp; sourceTree = ""; }; - 32AE5A1114E70ED600420CA0 /* xingheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xingheader.h; sourceTree = ""; }; - 32AE5A2A14E70ED600420CA0 /* aifffile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aifffile.cpp; sourceTree = ""; }; - 32AE5A2B14E70ED600420CA0 /* aifffile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aifffile.h; sourceTree = ""; }; - 32AE5A2C14E70ED600420CA0 /* aiffproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aiffproperties.cpp; sourceTree = ""; }; - 32AE5A2D14E70ED600420CA0 /* aiffproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiffproperties.h; sourceTree = ""; }; - 32AE5A2E14E70ED600420CA0 /* rifffile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rifffile.cpp; sourceTree = ""; }; - 32AE5A2F14E70ED600420CA0 /* rifffile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rifffile.h; sourceTree = ""; }; - 32AE5A3514E70ED600420CA0 /* tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tag.cpp; sourceTree = ""; }; - 32AE5A3614E70ED600420CA0 /* tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tag.h; sourceTree = ""; }; - 32AE5A3814E70ED600420CA0 /* taglib_export.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taglib_export.h; sourceTree = ""; }; - 32AE5A3914E70ED600420CA0 /* tagunion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tagunion.cpp; sourceTree = ""; }; - 32AE5A3A14E70ED600420CA0 /* tagunion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tagunion.h; sourceTree = ""; }; - 32AE5A3C14E70ED600420CA0 /* taglib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taglib.h; sourceTree = ""; }; - 32AE5A3D14E70ED600420CA0 /* tbytevector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tbytevector.cpp; sourceTree = ""; }; - 32AE5A3E14E70ED600420CA0 /* tbytevector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tbytevector.h; sourceTree = ""; }; - 32AE5A3F14E70ED600420CA0 /* tbytevectorlist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tbytevectorlist.cpp; sourceTree = ""; }; - 32AE5A4014E70ED600420CA0 /* tbytevectorlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tbytevectorlist.h; sourceTree = ""; }; - 32AE5A4114E70ED600420CA0 /* tdebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tdebug.cpp; sourceTree = ""; }; - 32AE5A4214E70ED600420CA0 /* tdebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tdebug.h; sourceTree = ""; }; - 32AE5A4314E70ED600420CA0 /* tfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tfile.cpp; sourceTree = ""; }; - 32AE5A4414E70ED600420CA0 /* tfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tfile.h; sourceTree = ""; }; - 32AE5A4514E70ED600420CA0 /* tlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tlist.h; sourceTree = ""; }; - 32AE5A4614E70ED600420CA0 /* tlist.tcc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tlist.tcc; sourceTree = ""; }; - 32AE5A4714E70ED600420CA0 /* tmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tmap.h; sourceTree = ""; }; - 32AE5A4814E70ED600420CA0 /* tmap.tcc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tmap.tcc; sourceTree = ""; }; - 32AE5A4914E70ED600420CA0 /* tstring.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tstring.cpp; sourceTree = ""; }; - 32AE5A4A14E70ED600420CA0 /* tstring.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tstring.h; sourceTree = ""; }; - 32AE5A4B14E70ED600420CA0 /* tstringlist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tstringlist.cpp; sourceTree = ""; }; - 32AE5A4C14E70ED600420CA0 /* tstringlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tstringlist.h; sourceTree = ""; }; - 32AE5A5514E70ED600420CA0 /* wavpackfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavpackfile.cpp; sourceTree = ""; }; - 32AE5A5614E70ED600420CA0 /* wavpackfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavpackfile.h; sourceTree = ""; }; - 32AE5A5714E70ED600420CA0 /* wavpackproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavpackproperties.cpp; sourceTree = ""; }; - 32AE5A5814E70ED600420CA0 /* wavpackproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavpackproperties.h; sourceTree = ""; }; - 32AE5A5914E70ED600420CA0 /* taglib_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = taglib_config.h; path = taglib/taglib_config.h; sourceTree = ""; }; - 8315533728741C7A00D4D746 /* apeproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apeproperties.cpp; sourceTree = ""; }; - 8315533828741C7A00D4D746 /* apefile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apefile.h; sourceTree = ""; }; - 8315533928741C7A00D4D746 /* apeproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apeproperties.h; sourceTree = ""; }; - 8315533A28741C7A00D4D746 /* apeitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apeitem.h; sourceTree = ""; }; - 8315533B28741C7A00D4D746 /* apefile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apefile.cpp; sourceTree = ""; }; - 8315533C28741C7A00D4D746 /* ape-tag-format.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "ape-tag-format.txt"; sourceTree = ""; }; - 8315533D28741C7A00D4D746 /* apefooter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apefooter.cpp; sourceTree = ""; }; - 8315533E28741C7A00D4D746 /* apetag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apetag.cpp; sourceTree = ""; }; - 8315533F28741C7A00D4D746 /* apefooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apefooter.h; sourceTree = ""; }; - 8315534028741C7A00D4D746 /* apeitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apeitem.cpp; sourceTree = ""; }; - 8315534128741C7A00D4D746 /* apegenfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apegenfile.h; sourceTree = ""; }; - 8315534228741C7A00D4D746 /* apetag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apetag.h; sourceTree = ""; }; - 8315534328741C7A00D4D746 /* apegenfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = apegenfile.cpp; sourceTree = ""; }; - 833F683D1CDBCAB300AFB9F0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; - 835C889822CC1889001B4B3F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 83747BD22862D5B00021245F /* Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Shared.xcconfig; sourceTree = ""; }; - 838EE8D029A8600D00CD0580 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; - 83B46FC92707EED200847FC9 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; }; - 83B46FCB2707EEDB00847FC9 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - 83F0E6CA287CAB4300D84594 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = ""; }; - 8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; - 8DC2EF5B0486A6940098B216 /* TagLib.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TagLib.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EDE862FC25CF6BD60086EFD3 /* tpropertymap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tpropertymap.cpp; sourceTree = ""; }; - EDE8630025CF6C260086EFD3 /* tfilestream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tfilestream.cpp; sourceTree = ""; }; - EDE8630125CF6C260086EFD3 /* trefcounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trefcounter.cpp; sourceTree = ""; }; - EDE8630425CF6C5B0086EFD3 /* itproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = itproperties.cpp; path = taglib/taglib/it/itproperties.cpp; sourceTree = SOURCE_ROOT; }; - EDE8630525CF6C5B0086EFD3 /* itfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = itfile.cpp; path = taglib/taglib/it/itfile.cpp; sourceTree = SOURCE_ROOT; }; - EDE8630925CF6CAE0086EFD3 /* xmfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xmfile.h; sourceTree = ""; }; - EDE8630A25CF6CAE0086EFD3 /* xmfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xmfile.cpp; sourceTree = ""; }; - EDE8630B25CF6CAE0086EFD3 /* xmproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xmproperties.h; sourceTree = ""; }; - EDE8630C25CF6CAE0086EFD3 /* xmproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xmproperties.cpp; sourceTree = ""; }; - EDE8631225CF6CC60086EFD3 /* modproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modproperties.h; sourceTree = ""; }; - EDE8631325CF6CC60086EFD3 /* modfileprivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modfileprivate.h; sourceTree = ""; }; - EDE8631425CF6CC60086EFD3 /* modtag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modtag.cpp; sourceTree = ""; }; - EDE8631525CF6CC60086EFD3 /* modfilebase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modfilebase.cpp; sourceTree = ""; }; - EDE8631625CF6CC60086EFD3 /* modfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modfile.cpp; sourceTree = ""; }; - EDE8631725CF6CC60086EFD3 /* modfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modfile.h; sourceTree = ""; }; - EDE8631825CF6CC60086EFD3 /* modtag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modtag.h; sourceTree = ""; }; - EDE8631925CF6CC60086EFD3 /* modproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modproperties.cpp; sourceTree = ""; }; - EDE8631A25CF6CC60086EFD3 /* modfilebase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modfilebase.h; sourceTree = ""; }; - EDE8632525CF6CDF0086EFD3 /* s3mfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = s3mfile.h; sourceTree = ""; }; - EDE8632625CF6CDF0086EFD3 /* s3mproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = s3mproperties.h; sourceTree = ""; }; - EDE8632725CF6CDF0086EFD3 /* s3mproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = s3mproperties.cpp; sourceTree = ""; }; - EDE8632825CF6CDF0086EFD3 /* s3mfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = s3mfile.cpp; sourceTree = ""; }; - EDE8632E25CF6CF50086EFD3 /* infotag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = infotag.cpp; sourceTree = ""; }; - EDE8632F25CF6CF50086EFD3 /* infotag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = infotag.h; sourceTree = ""; }; - EDE8633025CF6CF50086EFD3 /* wavfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavfile.h; sourceTree = ""; }; - EDE8633125CF6CF50086EFD3 /* wavfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavfile.cpp; sourceTree = ""; }; - EDE8633225CF6CF50086EFD3 /* wavproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wavproperties.h; sourceTree = ""; }; - EDE8633325CF6CF50086EFD3 /* wavproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wavproperties.cpp; sourceTree = ""; }; - EDE8633525CF6CF50086EFD3 /* aiffproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aiffproperties.h; sourceTree = ""; }; - EDE8633625CF6CF50086EFD3 /* aiffproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aiffproperties.cpp; sourceTree = ""; }; - EDE8633725CF6CF50086EFD3 /* aifffile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aifffile.cpp; sourceTree = ""; }; - EDE8633825CF6CF50086EFD3 /* aifffile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aifffile.h; sourceTree = ""; }; - EDE8634325CF6D1C0086EFD3 /* tagutils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tagutils.cpp; sourceTree = ""; }; - EDE8634425CF6D1C0086EFD3 /* tagutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tagutils.h; sourceTree = ""; }; - EDE8634725CF6D3D0086EFD3 /* tbytevectorstream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tbytevectorstream.cpp; sourceTree = ""; }; - EDE8634825CF6D3D0086EFD3 /* tfilestream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tfilestream.h; sourceTree = ""; }; - EDE8634925CF6D3D0086EFD3 /* tdebuglistener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tdebuglistener.cpp; sourceTree = ""; }; - EDE8634A25CF6D3D0086EFD3 /* tpropertymap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tpropertymap.h; sourceTree = ""; }; - EDE8634B25CF6D3D0086EFD3 /* trefcounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trefcounter.h; sourceTree = ""; }; - EDE8634C25CF6D3D0086EFD3 /* tdebuglistener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tdebuglistener.h; sourceTree = ""; }; - EDE8634D25CF6D3D0086EFD3 /* tbytevectorstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tbytevectorstream.h; sourceTree = ""; }; - EDE8634E25CF6D3D0086EFD3 /* tutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tutils.h; sourceTree = ""; }; - EDE8634F25CF6D3D0086EFD3 /* tiostream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tiostream.h; sourceTree = ""; }; - EDE8635025CF6D3D0086EFD3 /* tiostream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tiostream.cpp; sourceTree = ""; }; - EDE8635125CF6D3D0086EFD3 /* tzlib.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tzlib.cpp; sourceTree = ""; }; - EDE8635225CF6D3D0086EFD3 /* tzlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tzlib.h; sourceTree = ""; }; - EDE8636025CF6D710086EFD3 /* mpegfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpegfile.cpp; sourceTree = ""; }; - EDE8636125CF6D710086EFD3 /* xingheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xingheader.h; sourceTree = ""; }; - EDE8636325CF6D710086EFD3 /* id3v2footer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2footer.cpp; sourceTree = ""; }; - EDE8636425CF6D710086EFD3 /* id3v2footer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2footer.h; sourceTree = ""; }; - EDE8636525CF6D710086EFD3 /* id3v2extendedheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2extendedheader.h; sourceTree = ""; }; - EDE8636625CF6D710086EFD3 /* id3v2.4.0-structure.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "id3v2.4.0-structure.txt"; sourceTree = ""; }; - EDE8636725CF6D710086EFD3 /* id3v2header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2header.h; sourceTree = ""; }; - EDE8636825CF6D710086EFD3 /* id3v2.2.0.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = id3v2.2.0.txt; sourceTree = ""; }; - EDE8636925CF6D710086EFD3 /* id3v2frame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2frame.h; sourceTree = ""; }; - EDE8636A25CF6D710086EFD3 /* id3v2framefactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2framefactory.h; sourceTree = ""; }; - EDE8636B25CF6D710086EFD3 /* id3v2header.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2header.cpp; sourceTree = ""; }; - EDE8636C25CF6D710086EFD3 /* id3v2frame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2frame.cpp; sourceTree = ""; }; - EDE8636E25CF6D710086EFD3 /* synchronizedlyricsframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = synchronizedlyricsframe.cpp; sourceTree = ""; }; - EDE8636F25CF6D710086EFD3 /* uniquefileidentifierframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uniquefileidentifierframe.cpp; sourceTree = ""; }; - EDE8637025CF6D710086EFD3 /* privateframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = privateframe.cpp; sourceTree = ""; }; - EDE8637125CF6D710086EFD3 /* attachedpictureframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attachedpictureframe.h; sourceTree = ""; }; - EDE8637225CF6D710086EFD3 /* unknownframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unknownframe.h; sourceTree = ""; }; - EDE8637325CF6D710086EFD3 /* unknownframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unknownframe.cpp; sourceTree = ""; }; - EDE8637425CF6D710086EFD3 /* unsynchronizedlyricsframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unsynchronizedlyricsframe.h; sourceTree = ""; }; - EDE8637525CF6D710086EFD3 /* generalencapsulatedobjectframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = generalencapsulatedobjectframe.h; sourceTree = ""; }; - EDE8637625CF6D710086EFD3 /* eventtimingcodesframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eventtimingcodesframe.cpp; sourceTree = ""; }; - EDE8637725CF6D710086EFD3 /* unsynchronizedlyricsframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unsynchronizedlyricsframe.cpp; sourceTree = ""; }; - EDE8637825CF6D710086EFD3 /* tableofcontentsframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tableofcontentsframe.h; sourceTree = ""; }; - EDE8637925CF6D710086EFD3 /* podcastframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = podcastframe.h; sourceTree = ""; }; - EDE8637A25CF6D710086EFD3 /* podcastframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = podcastframe.cpp; sourceTree = ""; }; - EDE8637B25CF6D710086EFD3 /* synchronizedlyricsframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = synchronizedlyricsframe.h; sourceTree = ""; }; - EDE8637C25CF6D710086EFD3 /* commentsframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commentsframe.cpp; sourceTree = ""; }; - EDE8637D25CF6D710086EFD3 /* chapterframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chapterframe.cpp; sourceTree = ""; }; - EDE8637E25CF6D710086EFD3 /* tableofcontentsframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tableofcontentsframe.cpp; sourceTree = ""; }; - EDE8637F25CF6D710086EFD3 /* generalencapsulatedobjectframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = generalencapsulatedobjectframe.cpp; sourceTree = ""; }; - EDE8638025CF6D710086EFD3 /* commentsframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = commentsframe.h; sourceTree = ""; }; - EDE8638125CF6D710086EFD3 /* relativevolumeframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relativevolumeframe.cpp; sourceTree = ""; }; - EDE8638225CF6D710086EFD3 /* popularimeterframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = popularimeterframe.h; sourceTree = ""; }; - EDE8638325CF6D710086EFD3 /* ownershipframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ownershipframe.cpp; sourceTree = ""; }; - EDE8638425CF6D710086EFD3 /* attachedpictureframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attachedpictureframe.cpp; sourceTree = ""; }; - EDE8638525CF6D710086EFD3 /* relativevolumeframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = relativevolumeframe.h; sourceTree = ""; }; - EDE8638625CF6D710086EFD3 /* privateframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = privateframe.h; sourceTree = ""; }; - EDE8638725CF6D710086EFD3 /* eventtimingcodesframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventtimingcodesframe.h; sourceTree = ""; }; - EDE8638825CF6D710086EFD3 /* chapterframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chapterframe.h; sourceTree = ""; }; - EDE8638925CF6D710086EFD3 /* ownershipframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ownershipframe.h; sourceTree = ""; }; - EDE8638A25CF6D710086EFD3 /* textidentificationframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = textidentificationframe.cpp; sourceTree = ""; }; - EDE8638B25CF6D710086EFD3 /* urllinkframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = urllinkframe.cpp; sourceTree = ""; }; - EDE8638C25CF6D710086EFD3 /* uniquefileidentifierframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uniquefileidentifierframe.h; sourceTree = ""; }; - EDE8638D25CF6D710086EFD3 /* textidentificationframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textidentificationframe.h; sourceTree = ""; }; - EDE8638E25CF6D710086EFD3 /* popularimeterframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = popularimeterframe.cpp; sourceTree = ""; }; - EDE8638F25CF6D710086EFD3 /* urllinkframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = urllinkframe.h; sourceTree = ""; }; - EDE8639025CF6D710086EFD3 /* id3v2synchdata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2synchdata.cpp; sourceTree = ""; }; - EDE8639125CF6D710086EFD3 /* id3v2.3.0.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = id3v2.3.0.txt; sourceTree = ""; }; - EDE8639225CF6D710086EFD3 /* id3v2framefactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2framefactory.cpp; sourceTree = ""; }; - EDE8639325CF6D710086EFD3 /* id3v2synchdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2synchdata.h; sourceTree = ""; }; - EDE8639425CF6D710086EFD3 /* id3v2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2.h; sourceTree = ""; }; - EDE8639525CF6D710086EFD3 /* id3v2extendedheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2extendedheader.cpp; sourceTree = ""; }; - EDE8639625CF6D710086EFD3 /* id3v2tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v2tag.cpp; sourceTree = ""; }; - EDE8639725CF6D710086EFD3 /* id3v2.4.0-frames.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "id3v2.4.0-frames.txt"; sourceTree = ""; }; - EDE8639825CF6D710086EFD3 /* id3v2tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v2tag.h; sourceTree = ""; }; - EDE8639925CF6D710086EFD3 /* mpegheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpegheader.cpp; sourceTree = ""; }; - EDE8639A25CF6D710086EFD3 /* mpegutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegutils.h; sourceTree = ""; }; - EDE8639B25CF6D710086EFD3 /* xingheader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = xingheader.cpp; sourceTree = ""; }; - EDE8639C25CF6D710086EFD3 /* mpegproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegproperties.h; sourceTree = ""; }; - EDE8639D25CF6D710086EFD3 /* mpegheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegheader.h; sourceTree = ""; }; - EDE8639E25CF6D710086EFD3 /* mpegfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpegfile.h; sourceTree = ""; }; - EDE863A025CF6D710086EFD3 /* id3v1tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v1tag.h; sourceTree = ""; }; - EDE863A125CF6D710086EFD3 /* id3v1genres.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v1genres.cpp; sourceTree = ""; }; - EDE863A225CF6D710086EFD3 /* id3v1tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = id3v1tag.cpp; sourceTree = ""; }; - EDE863A325CF6D710086EFD3 /* id3v1genres.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = id3v1genres.h; sourceTree = ""; }; - EDE863A425CF6D710086EFD3 /* mpegproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mpegproperties.cpp; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 8DC2EF560486A6940098B216 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 83B46FCA2707EED200847FC9 /* libiconv.tbd in Frameworks */, - 83B46FCC2707EEDB00847FC9 /* libz.tbd in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DFFF38A50411DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - 8DC2EF5B0486A6940098B216 /* TagLib.framework */, - ); - name = Products; - sourceTree = ""; - }; - 0867D691FE84028FC02AAC07 /* TagLib */ = { - isa = PBXGroup; - children = ( - 83747BD12862D5B00021245F /* Xcode-config */, - 8E75700C09F318D70080F1EE /* Source */, - 089C1665FE841158C02AAC07 /* Resources */, - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, - 034768DFFF38A50411DB9C8B /* Products */, - 83B46FC82707EED200847FC9 /* Frameworks */, - ); - name = TagLib; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */, - 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C1665FE841158C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 8DC2EF5A0486A6940098B216 /* Info.plist */, - 089C1666FE841158C02AAC07 /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = { - isa = PBXGroup; - children = ( - 174C7A360F4FD43100E18B0F /* libz.dylib */, - ); - name = "Linked Frameworks"; - sourceTree = ""; - }; - 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = "Other Frameworks"; - sourceTree = ""; - }; - 32AE59A114E70ED600420CA0 /* taglib */ = { - isa = PBXGroup; - children = ( - EDE8635F25CF6D710086EFD3 /* mpeg */, - EDE8634325CF6D1C0086EFD3 /* tagutils.cpp */, - EDE8634425CF6D1C0086EFD3 /* tagutils.h */, - EDE8632425CF6CDF0086EFD3 /* s3m */, - EDE8631125CF6CC60086EFD3 /* mod */, - EDE8630825CF6CAE0086EFD3 /* xm */, - 8315533628741C7A00D4D746 /* ape */, - 32AE59AE14E70ED600420CA0 /* asf */, - 32AE59B914E70ED600420CA0 /* audioproperties.cpp */, - 32AE59BA14E70ED600420CA0 /* audioproperties.h */, - 32AE59BB14E70ED600420CA0 /* fileref.cpp */, - 32AE59BC14E70ED600420CA0 /* fileref.h */, - 32AE59D514E70ED600420CA0 /* mpc */, - 32AE59DA14E70ED600420CA0 /* mpeg */, - 32AE5A2814E70ED600420CA0 /* riff */, - 32AE5A3514E70ED600420CA0 /* tag.cpp */, - 32AE5A3614E70ED600420CA0 /* tag.h */, - 32AE5A3814E70ED600420CA0 /* taglib_export.h */, - 32AE5A3914E70ED600420CA0 /* tagunion.cpp */, - 32AE5A3A14E70ED600420CA0 /* tagunion.h */, - 32AE5A3B14E70ED600420CA0 /* toolkit */, - 32AE5A5414E70ED600420CA0 /* wavpack */, - ); - name = taglib; - path = taglib/taglib; - sourceTree = ""; - }; - 32AE59AE14E70ED600420CA0 /* asf */ = { - isa = PBXGroup; - children = ( - 32AE59AF14E70ED600420CA0 /* asfattribute.cpp */, - 32AE59B014E70ED600420CA0 /* asfattribute.h */, - 32AE59B114E70ED600420CA0 /* asffile.cpp */, - 32AE59B214E70ED600420CA0 /* asffile.h */, - 32AE59B314E70ED600420CA0 /* asfpicture.cpp */, - 32AE59B414E70ED600420CA0 /* asfpicture.h */, - 32AE59B514E70ED600420CA0 /* asfproperties.cpp */, - 32AE59B614E70ED600420CA0 /* asfproperties.h */, - 32AE59B714E70ED600420CA0 /* asftag.cpp */, - 32AE59B814E70ED600420CA0 /* asftag.h */, - ); - path = asf; - sourceTree = ""; - }; - 32AE59D514E70ED600420CA0 /* mpc */ = { - isa = PBXGroup; - children = ( - 32AE59D614E70ED600420CA0 /* mpcfile.cpp */, - 32AE59D714E70ED600420CA0 /* mpcfile.h */, - 32AE59D814E70ED600420CA0 /* mpcproperties.cpp */, - 32AE59D914E70ED600420CA0 /* mpcproperties.h */, - ); - path = mpc; - sourceTree = ""; - }; - 32AE59DA14E70ED600420CA0 /* mpeg */ = { - isa = PBXGroup; - children = ( - 32AE59DB14E70ED600420CA0 /* id3v1 */, - 32AE59E014E70ED600420CA0 /* id3v2 */, - 32AE5A0A14E70ED600420CA0 /* mpegfile.cpp */, - 32AE5A0B14E70ED600420CA0 /* mpegfile.h */, - 32AE5A0C14E70ED600420CA0 /* mpegheader.cpp */, - 32AE5A0D14E70ED600420CA0 /* mpegheader.h */, - 32AE5A0E14E70ED600420CA0 /* mpegproperties.cpp */, - 32AE5A0F14E70ED600420CA0 /* mpegproperties.h */, - 32AE5A1014E70ED600420CA0 /* xingheader.cpp */, - 32AE5A1114E70ED600420CA0 /* xingheader.h */, - ); - path = mpeg; - sourceTree = ""; - }; - 32AE59DB14E70ED600420CA0 /* id3v1 */ = { - isa = PBXGroup; - children = ( - 32AE59DC14E70ED600420CA0 /* id3v1genres.cpp */, - 32AE59DD14E70ED600420CA0 /* id3v1genres.h */, - 32AE59DE14E70ED600420CA0 /* id3v1tag.cpp */, - 32AE59DF14E70ED600420CA0 /* id3v1tag.h */, - ); - path = id3v1; - sourceTree = ""; - }; - 32AE59E014E70ED600420CA0 /* id3v2 */ = { - isa = PBXGroup; - children = ( - 32AE59E114E70ED600420CA0 /* frames */, - 32AE59F814E70ED600420CA0 /* id3v2.2.0.txt */, - 32AE59F914E70ED600420CA0 /* id3v2.3.0.txt */, - 32AE59FA14E70ED600420CA0 /* id3v2.4.0-frames.txt */, - 32AE59FB14E70ED600420CA0 /* id3v2.4.0-structure.txt */, - 32AE59FC14E70ED600420CA0 /* id3v2extendedheader.cpp */, - 32AE59FD14E70ED600420CA0 /* id3v2extendedheader.h */, - 32AE59FE14E70ED600420CA0 /* id3v2footer.cpp */, - 32AE59FF14E70ED600420CA0 /* id3v2footer.h */, - 32AE5A0014E70ED600420CA0 /* id3v2frame.cpp */, - 32AE5A0114E70ED600420CA0 /* id3v2frame.h */, - 32AE5A0214E70ED600420CA0 /* id3v2framefactory.cpp */, - 32AE5A0314E70ED600420CA0 /* id3v2framefactory.h */, - 32AE5A0414E70ED600420CA0 /* id3v2header.cpp */, - 32AE5A0514E70ED600420CA0 /* id3v2header.h */, - 32AE5A0614E70ED600420CA0 /* id3v2synchdata.cpp */, - 32AE5A0714E70ED600420CA0 /* id3v2synchdata.h */, - 32AE5A0814E70ED600420CA0 /* id3v2tag.cpp */, - 32AE5A0914E70ED600420CA0 /* id3v2tag.h */, - ); - path = id3v2; - sourceTree = ""; - }; - 32AE59E114E70ED600420CA0 /* frames */ = { - isa = PBXGroup; - children = ( - 32AE59E214E70ED600420CA0 /* attachedpictureframe.cpp */, - 32AE59E314E70ED600420CA0 /* attachedpictureframe.h */, - 32AE59E414E70ED600420CA0 /* commentsframe.cpp */, - 32AE59E514E70ED600420CA0 /* commentsframe.h */, - 32AE59E614E70ED600420CA0 /* generalencapsulatedobjectframe.cpp */, - 32AE59E714E70ED600420CA0 /* generalencapsulatedobjectframe.h */, - 32AE59E814E70ED600420CA0 /* popularimeterframe.cpp */, - 32AE59E914E70ED600420CA0 /* popularimeterframe.h */, - 32AE59EA14E70ED600420CA0 /* privateframe.cpp */, - 32AE59EB14E70ED600420CA0 /* privateframe.h */, - 32AE59EC14E70ED600420CA0 /* relativevolumeframe.cpp */, - 32AE59ED14E70ED600420CA0 /* relativevolumeframe.h */, - 32AE59EE14E70ED600420CA0 /* textidentificationframe.cpp */, - 32AE59EF14E70ED600420CA0 /* textidentificationframe.h */, - 32AE59F014E70ED600420CA0 /* uniquefileidentifierframe.cpp */, - 32AE59F114E70ED600420CA0 /* uniquefileidentifierframe.h */, - 32AE59F214E70ED600420CA0 /* unknownframe.cpp */, - 32AE59F314E70ED600420CA0 /* unknownframe.h */, - 32AE59F414E70ED600420CA0 /* unsynchronizedlyricsframe.cpp */, - 32AE59F514E70ED600420CA0 /* unsynchronizedlyricsframe.h */, - 32AE59F614E70ED600420CA0 /* urllinkframe.cpp */, - 32AE59F714E70ED600420CA0 /* urllinkframe.h */, - ); - path = frames; - sourceTree = ""; - }; - 32AE5A2814E70ED600420CA0 /* riff */ = { - isa = PBXGroup; - children = ( - EDE8633425CF6CF50086EFD3 /* aiff */, - EDE8632D25CF6CF50086EFD3 /* wav */, - EDE8630525CF6C5B0086EFD3 /* itfile.cpp */, - EDE8630425CF6C5B0086EFD3 /* itproperties.cpp */, - 32AE5A2914E70ED600420CA0 /* aiff */, - 32AE5A2E14E70ED600420CA0 /* rifffile.cpp */, - 32AE5A2F14E70ED600420CA0 /* rifffile.h */, - ); - path = riff; - sourceTree = ""; - }; - 32AE5A2914E70ED600420CA0 /* aiff */ = { - isa = PBXGroup; - children = ( - 32AE5A2A14E70ED600420CA0 /* aifffile.cpp */, - 32AE5A2B14E70ED600420CA0 /* aifffile.h */, - 32AE5A2C14E70ED600420CA0 /* aiffproperties.cpp */, - 32AE5A2D14E70ED600420CA0 /* aiffproperties.h */, - ); - path = aiff; - sourceTree = ""; - }; - 32AE5A3B14E70ED600420CA0 /* toolkit */ = { - isa = PBXGroup; - children = ( - EDE8634725CF6D3D0086EFD3 /* tbytevectorstream.cpp */, - EDE8634D25CF6D3D0086EFD3 /* tbytevectorstream.h */, - EDE8634925CF6D3D0086EFD3 /* tdebuglistener.cpp */, - EDE8634C25CF6D3D0086EFD3 /* tdebuglistener.h */, - EDE8634825CF6D3D0086EFD3 /* tfilestream.h */, - EDE8635025CF6D3D0086EFD3 /* tiostream.cpp */, - EDE8634F25CF6D3D0086EFD3 /* tiostream.h */, - EDE8634A25CF6D3D0086EFD3 /* tpropertymap.h */, - EDE8634B25CF6D3D0086EFD3 /* trefcounter.h */, - EDE8634E25CF6D3D0086EFD3 /* tutils.h */, - EDE8635125CF6D3D0086EFD3 /* tzlib.cpp */, - EDE8635225CF6D3D0086EFD3 /* tzlib.h */, - EDE8630025CF6C260086EFD3 /* tfilestream.cpp */, - EDE8630125CF6C260086EFD3 /* trefcounter.cpp */, - EDE862FC25CF6BD60086EFD3 /* tpropertymap.cpp */, - 32AE5A3C14E70ED600420CA0 /* taglib.h */, - 32AE5A3D14E70ED600420CA0 /* tbytevector.cpp */, - 32AE5A3E14E70ED600420CA0 /* tbytevector.h */, - 32AE5A3F14E70ED600420CA0 /* tbytevectorlist.cpp */, - 32AE5A4014E70ED600420CA0 /* tbytevectorlist.h */, - 32AE5A4114E70ED600420CA0 /* tdebug.cpp */, - 32AE5A4214E70ED600420CA0 /* tdebug.h */, - 32AE5A4314E70ED600420CA0 /* tfile.cpp */, - 32AE5A4414E70ED600420CA0 /* tfile.h */, - 32AE5A4514E70ED600420CA0 /* tlist.h */, - 32AE5A4614E70ED600420CA0 /* tlist.tcc */, - 32AE5A4714E70ED600420CA0 /* tmap.h */, - 32AE5A4814E70ED600420CA0 /* tmap.tcc */, - 32AE5A4914E70ED600420CA0 /* tstring.cpp */, - 32AE5A4A14E70ED600420CA0 /* tstring.h */, - 32AE5A4B14E70ED600420CA0 /* tstringlist.cpp */, - 32AE5A4C14E70ED600420CA0 /* tstringlist.h */, - ); - path = toolkit; - sourceTree = ""; - }; - 32AE5A5414E70ED600420CA0 /* wavpack */ = { - isa = PBXGroup; - children = ( - 32AE5A5514E70ED600420CA0 /* wavpackfile.cpp */, - 32AE5A5614E70ED600420CA0 /* wavpackfile.h */, - 32AE5A5714E70ED600420CA0 /* wavpackproperties.cpp */, - 32AE5A5814E70ED600420CA0 /* wavpackproperties.h */, - ); - path = wavpack; - sourceTree = ""; - }; - 8315533628741C7A00D4D746 /* ape */ = { - isa = PBXGroup; - children = ( - 8315533728741C7A00D4D746 /* apeproperties.cpp */, - 8315533828741C7A00D4D746 /* apefile.h */, - 8315533928741C7A00D4D746 /* apeproperties.h */, - 8315533A28741C7A00D4D746 /* apeitem.h */, - 8315533B28741C7A00D4D746 /* apefile.cpp */, - 8315533C28741C7A00D4D746 /* ape-tag-format.txt */, - 8315533D28741C7A00D4D746 /* apefooter.cpp */, - 8315533E28741C7A00D4D746 /* apetag.cpp */, - 8315533F28741C7A00D4D746 /* apefooter.h */, - 8315534028741C7A00D4D746 /* apeitem.cpp */, - 8315534128741C7A00D4D746 /* apegenfile.h */, - 8315534228741C7A00D4D746 /* apetag.h */, - 8315534328741C7A00D4D746 /* apegenfile.cpp */, - ); - path = ape; - sourceTree = ""; - }; - 83747BD12862D5B00021245F /* Xcode-config */ = { - isa = PBXGroup; - children = ( - 83747BD22862D5B00021245F /* Shared.xcconfig */, - ); - name = "Xcode-config"; - path = "../../Xcode-config"; - sourceTree = ""; - }; - 83B46FC82707EED200847FC9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 83B46FCB2707EEDB00847FC9 /* libz.tbd */, - 83B46FC92707EED200847FC9 /* libiconv.tbd */, - ); - name = Frameworks; - sourceTree = ""; - }; - 8E75700C09F318D70080F1EE /* Source */ = { - isa = PBXGroup; - children = ( - 32AE59A014E70ED600420CA0 /* config.h */, - 32AE59A114E70ED600420CA0 /* taglib */, - 32AE5A5914E70ED600420CA0 /* taglib_config.h */, - ); - name = Source; - sourceTree = ""; - }; - EDE8630825CF6CAE0086EFD3 /* xm */ = { - isa = PBXGroup; - children = ( - EDE8630925CF6CAE0086EFD3 /* xmfile.h */, - EDE8630A25CF6CAE0086EFD3 /* xmfile.cpp */, - EDE8630B25CF6CAE0086EFD3 /* xmproperties.h */, - EDE8630C25CF6CAE0086EFD3 /* xmproperties.cpp */, - ); - path = xm; - sourceTree = ""; - }; - EDE8631125CF6CC60086EFD3 /* mod */ = { - isa = PBXGroup; - children = ( - EDE8631225CF6CC60086EFD3 /* modproperties.h */, - EDE8631325CF6CC60086EFD3 /* modfileprivate.h */, - EDE8631425CF6CC60086EFD3 /* modtag.cpp */, - EDE8631525CF6CC60086EFD3 /* modfilebase.cpp */, - EDE8631625CF6CC60086EFD3 /* modfile.cpp */, - EDE8631725CF6CC60086EFD3 /* modfile.h */, - EDE8631825CF6CC60086EFD3 /* modtag.h */, - EDE8631925CF6CC60086EFD3 /* modproperties.cpp */, - EDE8631A25CF6CC60086EFD3 /* modfilebase.h */, - ); - path = mod; - sourceTree = ""; - }; - EDE8632425CF6CDF0086EFD3 /* s3m */ = { - isa = PBXGroup; - children = ( - EDE8632525CF6CDF0086EFD3 /* s3mfile.h */, - EDE8632625CF6CDF0086EFD3 /* s3mproperties.h */, - EDE8632725CF6CDF0086EFD3 /* s3mproperties.cpp */, - EDE8632825CF6CDF0086EFD3 /* s3mfile.cpp */, - ); - path = s3m; - sourceTree = ""; - }; - EDE8632D25CF6CF50086EFD3 /* wav */ = { - isa = PBXGroup; - children = ( - EDE8632E25CF6CF50086EFD3 /* infotag.cpp */, - EDE8632F25CF6CF50086EFD3 /* infotag.h */, - EDE8633025CF6CF50086EFD3 /* wavfile.h */, - EDE8633125CF6CF50086EFD3 /* wavfile.cpp */, - EDE8633225CF6CF50086EFD3 /* wavproperties.h */, - EDE8633325CF6CF50086EFD3 /* wavproperties.cpp */, - ); - path = wav; - sourceTree = ""; - }; - EDE8633425CF6CF50086EFD3 /* aiff */ = { - isa = PBXGroup; - children = ( - EDE8633525CF6CF50086EFD3 /* aiffproperties.h */, - EDE8633625CF6CF50086EFD3 /* aiffproperties.cpp */, - EDE8633725CF6CF50086EFD3 /* aifffile.cpp */, - EDE8633825CF6CF50086EFD3 /* aifffile.h */, - ); - path = aiff; - sourceTree = ""; - }; - EDE8635F25CF6D710086EFD3 /* mpeg */ = { - isa = PBXGroup; - children = ( - EDE8636025CF6D710086EFD3 /* mpegfile.cpp */, - EDE8636125CF6D710086EFD3 /* xingheader.h */, - EDE8636225CF6D710086EFD3 /* id3v2 */, - EDE8639925CF6D710086EFD3 /* mpegheader.cpp */, - EDE8639A25CF6D710086EFD3 /* mpegutils.h */, - EDE8639B25CF6D710086EFD3 /* xingheader.cpp */, - EDE8639C25CF6D710086EFD3 /* mpegproperties.h */, - EDE8639D25CF6D710086EFD3 /* mpegheader.h */, - EDE8639E25CF6D710086EFD3 /* mpegfile.h */, - EDE8639F25CF6D710086EFD3 /* id3v1 */, - EDE863A425CF6D710086EFD3 /* mpegproperties.cpp */, - ); - path = mpeg; - sourceTree = ""; - }; - EDE8636225CF6D710086EFD3 /* id3v2 */ = { - isa = PBXGroup; - children = ( - EDE8636325CF6D710086EFD3 /* id3v2footer.cpp */, - EDE8636425CF6D710086EFD3 /* id3v2footer.h */, - EDE8636525CF6D710086EFD3 /* id3v2extendedheader.h */, - EDE8636625CF6D710086EFD3 /* id3v2.4.0-structure.txt */, - EDE8636725CF6D710086EFD3 /* id3v2header.h */, - EDE8636825CF6D710086EFD3 /* id3v2.2.0.txt */, - EDE8636925CF6D710086EFD3 /* id3v2frame.h */, - EDE8636A25CF6D710086EFD3 /* id3v2framefactory.h */, - EDE8636B25CF6D710086EFD3 /* id3v2header.cpp */, - EDE8636C25CF6D710086EFD3 /* id3v2frame.cpp */, - EDE8636D25CF6D710086EFD3 /* frames */, - EDE8639025CF6D710086EFD3 /* id3v2synchdata.cpp */, - EDE8639125CF6D710086EFD3 /* id3v2.3.0.txt */, - EDE8639225CF6D710086EFD3 /* id3v2framefactory.cpp */, - EDE8639325CF6D710086EFD3 /* id3v2synchdata.h */, - EDE8639425CF6D710086EFD3 /* id3v2.h */, - EDE8639525CF6D710086EFD3 /* id3v2extendedheader.cpp */, - EDE8639625CF6D710086EFD3 /* id3v2tag.cpp */, - EDE8639725CF6D710086EFD3 /* id3v2.4.0-frames.txt */, - EDE8639825CF6D710086EFD3 /* id3v2tag.h */, - ); - path = id3v2; - sourceTree = ""; - }; - EDE8636D25CF6D710086EFD3 /* frames */ = { - isa = PBXGroup; - children = ( - EDE8636E25CF6D710086EFD3 /* synchronizedlyricsframe.cpp */, - EDE8636F25CF6D710086EFD3 /* uniquefileidentifierframe.cpp */, - EDE8637025CF6D710086EFD3 /* privateframe.cpp */, - EDE8637125CF6D710086EFD3 /* attachedpictureframe.h */, - EDE8637225CF6D710086EFD3 /* unknownframe.h */, - EDE8637325CF6D710086EFD3 /* unknownframe.cpp */, - EDE8637425CF6D710086EFD3 /* unsynchronizedlyricsframe.h */, - EDE8637525CF6D710086EFD3 /* generalencapsulatedobjectframe.h */, - EDE8637625CF6D710086EFD3 /* eventtimingcodesframe.cpp */, - EDE8637725CF6D710086EFD3 /* unsynchronizedlyricsframe.cpp */, - EDE8637825CF6D710086EFD3 /* tableofcontentsframe.h */, - EDE8637925CF6D710086EFD3 /* podcastframe.h */, - EDE8637A25CF6D710086EFD3 /* podcastframe.cpp */, - EDE8637B25CF6D710086EFD3 /* synchronizedlyricsframe.h */, - EDE8637C25CF6D710086EFD3 /* commentsframe.cpp */, - EDE8637D25CF6D710086EFD3 /* chapterframe.cpp */, - EDE8637E25CF6D710086EFD3 /* tableofcontentsframe.cpp */, - EDE8637F25CF6D710086EFD3 /* generalencapsulatedobjectframe.cpp */, - EDE8638025CF6D710086EFD3 /* commentsframe.h */, - EDE8638125CF6D710086EFD3 /* relativevolumeframe.cpp */, - EDE8638225CF6D710086EFD3 /* popularimeterframe.h */, - EDE8638325CF6D710086EFD3 /* ownershipframe.cpp */, - EDE8638425CF6D710086EFD3 /* attachedpictureframe.cpp */, - EDE8638525CF6D710086EFD3 /* relativevolumeframe.h */, - EDE8638625CF6D710086EFD3 /* privateframe.h */, - EDE8638725CF6D710086EFD3 /* eventtimingcodesframe.h */, - EDE8638825CF6D710086EFD3 /* chapterframe.h */, - EDE8638925CF6D710086EFD3 /* ownershipframe.h */, - EDE8638A25CF6D710086EFD3 /* textidentificationframe.cpp */, - EDE8638B25CF6D710086EFD3 /* urllinkframe.cpp */, - EDE8638C25CF6D710086EFD3 /* uniquefileidentifierframe.h */, - EDE8638D25CF6D710086EFD3 /* textidentificationframe.h */, - EDE8638E25CF6D710086EFD3 /* popularimeterframe.cpp */, - EDE8638F25CF6D710086EFD3 /* urllinkframe.h */, - ); - path = frames; - sourceTree = ""; - }; - EDE8639F25CF6D710086EFD3 /* id3v1 */ = { - isa = PBXGroup; - children = ( - EDE863A025CF6D710086EFD3 /* id3v1tag.h */, - EDE863A125CF6D710086EFD3 /* id3v1genres.cpp */, - EDE863A225CF6D710086EFD3 /* id3v1tag.cpp */, - EDE863A325CF6D710086EFD3 /* id3v1genres.h */, - ); - path = id3v1; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 8DC2EF500486A6940098B216 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 32AE5A5A14E70ED600420CA0 /* config.h in Headers */, - 32AE5A6714E70ED600420CA0 /* asfattribute.h in Headers */, - 32AE5A6914E70ED600420CA0 /* asffile.h in Headers */, - 32AE5A6B14E70ED600420CA0 /* asfpicture.h in Headers */, - 32AE5A6D14E70ED600420CA0 /* asfproperties.h in Headers */, - 32AE5A6F14E70ED600420CA0 /* asftag.h in Headers */, - 32AE5A7114E70ED600420CA0 /* audioproperties.h in Headers */, - 32AE5A7314E70ED600420CA0 /* fileref.h in Headers */, - 8315534728741C7A00D4D746 /* apeitem.h in Headers */, - 32AE5A8B14E70ED600420CA0 /* mpcfile.h in Headers */, - 32AE5A8D14E70ED600420CA0 /* mpcproperties.h in Headers */, - 32AE5A8F14E70ED600420CA0 /* id3v1genres.h in Headers */, - 32AE5A9114E70ED600420CA0 /* id3v1tag.h in Headers */, - 32AE5A9314E70ED600420CA0 /* attachedpictureframe.h in Headers */, - 32AE5A9514E70ED600420CA0 /* commentsframe.h in Headers */, - 32AE5A9714E70ED600420CA0 /* generalencapsulatedobjectframe.h in Headers */, - 32AE5A9914E70ED600420CA0 /* popularimeterframe.h in Headers */, - 32AE5A9B14E70ED600420CA0 /* privateframe.h in Headers */, - 32AE5A9D14E70ED600420CA0 /* relativevolumeframe.h in Headers */, - 32AE5A9F14E70ED600420CA0 /* textidentificationframe.h in Headers */, - 32AE5AA114E70ED600420CA0 /* uniquefileidentifierframe.h in Headers */, - 32AE5AA314E70ED600420CA0 /* unknownframe.h in Headers */, - 32AE5AA514E70ED600420CA0 /* unsynchronizedlyricsframe.h in Headers */, - 32AE5AA714E70ED600420CA0 /* urllinkframe.h in Headers */, - 32AE5AAD14E70ED600420CA0 /* id3v2extendedheader.h in Headers */, - 32AE5AAF14E70ED600420CA0 /* id3v2footer.h in Headers */, - 32AE5AB114E70ED600420CA0 /* id3v2frame.h in Headers */, - 32AE5AB314E70ED600420CA0 /* id3v2framefactory.h in Headers */, - 32AE5AB514E70ED600420CA0 /* id3v2header.h in Headers */, - 32AE5AB714E70ED600420CA0 /* id3v2synchdata.h in Headers */, - 32AE5AB914E70ED600420CA0 /* id3v2tag.h in Headers */, - 32AE5ABB14E70ED600420CA0 /* mpegfile.h in Headers */, - 32AE5ABD14E70ED600420CA0 /* mpegheader.h in Headers */, - 32AE5ABF14E70ED600420CA0 /* mpegproperties.h in Headers */, - 32AE5AC114E70ED600420CA0 /* xingheader.h in Headers */, - 8315534528741C7A00D4D746 /* apefile.h in Headers */, - 8315534C28741C7A00D4D746 /* apefooter.h in Headers */, - 8315534628741C7A00D4D746 /* apeproperties.h in Headers */, - 8315534F28741C7A00D4D746 /* apetag.h in Headers */, - 32AE5AD514E70ED600420CA0 /* aifffile.h in Headers */, - 32AE5AD714E70ED600420CA0 /* aiffproperties.h in Headers */, - 32AE5AD914E70ED600420CA0 /* rifffile.h in Headers */, - 32AE5B0014E70F4700420CA0 /* tlist.tcc in Headers */, - 32AE5B0114E70F4A00420CA0 /* tmap.tcc in Headers */, - 8315534E28741C7A00D4D746 /* apegenfile.h in Headers */, - 32AE5ADF14E70ED600420CA0 /* tag.h in Headers */, - 32AE5AE114E70ED600420CA0 /* taglib_export.h in Headers */, - 32AE5AE314E70ED600420CA0 /* tagunion.h in Headers */, - 32AE5AE414E70ED600420CA0 /* taglib.h in Headers */, - 32AE5AE614E70ED600420CA0 /* tbytevector.h in Headers */, - 32AE5AE814E70ED600420CA0 /* tbytevectorlist.h in Headers */, - 32AE5AEA14E70ED600420CA0 /* tdebug.h in Headers */, - 32AE5AEC14E70ED600420CA0 /* tfile.h in Headers */, - 32AE5AED14E70ED600420CA0 /* tlist.h in Headers */, - 32AE5AEF14E70ED600420CA0 /* tmap.h in Headers */, - 32AE5AF214E70ED600420CA0 /* tstring.h in Headers */, - 32AE5AF414E70ED600420CA0 /* tstringlist.h in Headers */, - 32AE5AFC14E70ED700420CA0 /* wavpackfile.h in Headers */, - 32AE5AFE14E70ED700420CA0 /* wavpackproperties.h in Headers */, - 32AE5AFF14E70ED700420CA0 /* taglib_config.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 8DC2EF4F0486A6940098B216 /* TagLib Framework */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "TagLib Framework" */; - buildPhases = ( - 8DC2EF500486A6940098B216 /* Headers */, - 8DC2EF520486A6940098B216 /* Resources */, - 8DC2EF540486A6940098B216 /* Sources */, - 8DC2EF560486A6940098B216 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "TagLib Framework"; - productInstallPath = "$(HOME)/Library/Frameworks"; - productName = TagLib; - productReference = 8DC2EF5B0486A6940098B216 /* TagLib.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1400; - TargetAttributes = { - 8DC2EF4F0486A6940098B216 = { - DevelopmentTeam = ""; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "TagLib" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 1; - knownRegions = ( - en, - es, - Base, - pl, - tr, - ); - mainGroup = 0867D691FE84028FC02AAC07 /* TagLib */; - productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 8DC2EF4F0486A6940098B216 /* TagLib Framework */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 8DC2EF520486A6940098B216 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */, - 8315534928741C7A00D4D746 /* ape-tag-format.txt in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 8DC2EF540486A6940098B216 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EDE8630325CF6C260086EFD3 /* trefcounter.cpp in Sources */, - EDE8631F25CF6CC60086EFD3 /* modfile.cpp in Sources */, - EDE8631025CF6CAE0086EFD3 /* xmproperties.cpp in Sources */, - 32AE5A6614E70ED600420CA0 /* asfattribute.cpp in Sources */, - 32AE5A6814E70ED600420CA0 /* asffile.cpp in Sources */, - 32AE5A6A14E70ED600420CA0 /* asfpicture.cpp in Sources */, - 32AE5A6C14E70ED600420CA0 /* asfproperties.cpp in Sources */, - 32AE5A6E14E70ED600420CA0 /* asftag.cpp in Sources */, - EDE8634525CF6D1C0086EFD3 /* tagutils.cpp in Sources */, - 32AE5A7014E70ED600420CA0 /* audioproperties.cpp in Sources */, - EDE863B125CF6D710086EFD3 /* synchronizedlyricsframe.cpp in Sources */, - 32AE5A7214E70ED600420CA0 /* fileref.cpp in Sources */, - EDE8630725CF6C5B0086EFD3 /* itfile.cpp in Sources */, - EDE863C625CF6D710086EFD3 /* ownershipframe.cpp in Sources */, - 32AE5A8A14E70ED600420CA0 /* mpcfile.cpp in Sources */, - 32AE5A8C14E70ED600420CA0 /* mpcproperties.cpp in Sources */, - 32AE5A8E14E70ED600420CA0 /* id3v1genres.cpp in Sources */, - EDE8631D25CF6CC60086EFD3 /* modtag.cpp in Sources */, - EDE863E425CF6D710086EFD3 /* id3v1tag.cpp in Sources */, - 32AE5A9814E70ED600420CA0 /* popularimeterframe.cpp in Sources */, - 32AE5A9C14E70ED600420CA0 /* relativevolumeframe.cpp in Sources */, - EDE863B925CF6D710086EFD3 /* eventtimingcodesframe.cpp in Sources */, - EDE8633925CF6CF50086EFD3 /* infotag.cpp in Sources */, - 32AE5AA614E70ED600420CA0 /* urllinkframe.cpp in Sources */, - EDE863C025CF6D710086EFD3 /* chapterframe.cpp in Sources */, - 32AE5AAE14E70ED600420CA0 /* id3v2footer.cpp in Sources */, - 32AE5AB014E70ED600420CA0 /* id3v2frame.cpp in Sources */, - 8315534D28741C7A00D4D746 /* apeitem.cpp in Sources */, - 32AE5AB414E70ED600420CA0 /* id3v2header.cpp in Sources */, - EDE8633C25CF6CF50086EFD3 /* wavfile.cpp in Sources */, - 32AE5AB614E70ED600420CA0 /* id3v2synchdata.cpp in Sources */, - EDE863D525CF6D710086EFD3 /* id3v2framefactory.cpp in Sources */, - EDE863B225CF6D710086EFD3 /* uniquefileidentifierframe.cpp in Sources */, - 32AE5AB814E70ED600420CA0 /* id3v2tag.cpp in Sources */, - 8315534B28741C7A00D4D746 /* apetag.cpp in Sources */, - 32AE5ABA14E70ED600420CA0 /* mpegfile.cpp in Sources */, - 32AE5ABC14E70ED600420CA0 /* mpegheader.cpp in Sources */, - EDE8635325CF6D3D0086EFD3 /* tbytevectorstream.cpp in Sources */, - EDE863BD25CF6D710086EFD3 /* podcastframe.cpp in Sources */, - 32AE5AC014E70ED600420CA0 /* xingheader.cpp in Sources */, - EDE863BF25CF6D710086EFD3 /* commentsframe.cpp in Sources */, - 8315534A28741C7A00D4D746 /* apefooter.cpp in Sources */, - EDE8635D25CF6D3D0086EFD3 /* tzlib.cpp in Sources */, - EDE863D825CF6D710086EFD3 /* id3v2extendedheader.cpp in Sources */, - EDE863B625CF6D710086EFD3 /* unknownframe.cpp in Sources */, - EDE8630E25CF6CAE0086EFD3 /* xmfile.cpp in Sources */, - EDE8635C25CF6D3D0086EFD3 /* tiostream.cpp in Sources */, - EDE8631E25CF6CC60086EFD3 /* modfilebase.cpp in Sources */, - 8315534828741C7A00D4D746 /* apefile.cpp in Sources */, - EDE8635525CF6D3D0086EFD3 /* tdebuglistener.cpp in Sources */, - 32AE5AD414E70ED600420CA0 /* aifffile.cpp in Sources */, - 32AE5AD614E70ED600420CA0 /* aiffproperties.cpp in Sources */, - 32AE5AD814E70ED600420CA0 /* rifffile.cpp in Sources */, - 32AE5ADE14E70ED600420CA0 /* tag.cpp in Sources */, - 32AE5AE214E70ED600420CA0 /* tagunion.cpp in Sources */, - EDE862FD25CF6BD70086EFD3 /* tpropertymap.cpp in Sources */, - EDE863C225CF6D710086EFD3 /* generalencapsulatedobjectframe.cpp in Sources */, - 32AE5AE514E70ED600420CA0 /* tbytevector.cpp in Sources */, - EDE863BA25CF6D710086EFD3 /* unsynchronizedlyricsframe.cpp in Sources */, - 32AE5AE714E70ED600420CA0 /* tbytevectorlist.cpp in Sources */, - EDE863C125CF6D710086EFD3 /* tableofcontentsframe.cpp in Sources */, - EDE8632B25CF6CDF0086EFD3 /* s3mproperties.cpp in Sources */, - EDE863B325CF6D710086EFD3 /* privateframe.cpp in Sources */, - 32AE5AE914E70ED600420CA0 /* tdebug.cpp in Sources */, - EDE863C725CF6D710086EFD3 /* attachedpictureframe.cpp in Sources */, - EDE8632225CF6CC60086EFD3 /* modproperties.cpp in Sources */, - 32AE5AEB14E70ED600420CA0 /* tfile.cpp in Sources */, - 32AE5AF114E70ED600420CA0 /* tstring.cpp in Sources */, - 32AE5AF314E70ED600420CA0 /* tstringlist.cpp in Sources */, - EDE8630625CF6C5B0086EFD3 /* itproperties.cpp in Sources */, - EDE863E625CF6D710086EFD3 /* mpegproperties.cpp in Sources */, - 8315534428741C7A00D4D746 /* apeproperties.cpp in Sources */, - EDE8630225CF6C260086EFD3 /* tfilestream.cpp in Sources */, - 32AE5AFB14E70ED700420CA0 /* wavpackfile.cpp in Sources */, - EDE8633E25CF6CF50086EFD3 /* wavproperties.cpp in Sources */, - 8315535028741C7A00D4D746 /* apegenfile.cpp in Sources */, - 32AE5AFD14E70ED700420CA0 /* wavpackproperties.cpp in Sources */, - EDE8632C25CF6CE00086EFD3 /* s3mfile.cpp in Sources */, - EDE863CD25CF6D710086EFD3 /* textidentificationframe.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 833F683D1CDBCAB300AFB9F0 /* es */, - 835C889822CC1889001B4B3F /* en */, - 83F0E6CA287CAB4300D84594 /* pl */, - 838EE8D029A8600D00CD0580 /* tr */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 1DEB91AE08733DA50010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - GCC_DYNAMIC_NO_PIC = NO; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREFIX_HEADER = ""; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "taglib/**", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "@loader_path/../Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.cogx.lib.taglib; - PRODUCT_NAME = TagLib; - SDKROOT = macosx; - WRAPPER_EXTENSION = framework; - ZERO_LINK = YES; - }; - name = Debug; - }; - 1DEB91AF08733DA50010E9CD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COMBINE_HIDPI_IMAGES = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - FRAMEWORK_VERSION = A; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_PREFIX_HEADER = ""; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "taglib/**", - ); - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "@loader_path/../Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.cogx.lib.taglib; - PRODUCT_NAME = TagLib; - SDKROOT = macosx; - WRAPPER_EXTENSION = framework; - }; - name = Release; - }; - 1DEB91B208733DA50010E9CD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 83747BD22862D5B00021245F /* Shared.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1"; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = ( - "-DHAVE_CONFIG_H", - "-Wframe-larger-than=4000", - ); - OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SYMROOT = ../../build; - }; - name = Debug; - }; - 1DEB91B308733DA50010E9CD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 83747BD22862D5B00021245F /* Shared.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_INHIBIT_ALL_WARNINGS = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; - OTHER_CFLAGS = ( - "-DHAVE_CONFIG_H", - "-Wframe-larger-than=4000", - ); - OTHER_CPLUSPLUSFLAGS = "-Wframe-larger-than=16000"; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SYMROOT = ../../build; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "TagLib Framework" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB91AE08733DA50010E9CD /* Debug */, - 1DEB91AF08733DA50010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "TagLib" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB91B208733DA50010E9CD /* Debug */, - 1DEB91B308733DA50010E9CD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -} diff --git a/Frameworks/TagLib/TagLib.xcodeproj/xcshareddata/xcschemes/TagLib Framework.xcscheme b/Frameworks/TagLib/TagLib.xcodeproj/xcshareddata/xcschemes/TagLib Framework.xcscheme deleted file mode 100644 index ca532a370..000000000 --- a/Frameworks/TagLib/TagLib.xcodeproj/xcshareddata/xcschemes/TagLib Framework.xcscheme +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Frameworks/TagLib/en.lproj/InfoPlist.strings b/Frameworks/TagLib/en.lproj/InfoPlist.strings deleted file mode 100644 index cde2c3450..000000000 --- a/Frameworks/TagLib/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,3 +0,0 @@ -/* Localized versions of Info.plist keys */ - -NSHumanReadableCopyright = "© __MyCompanyName__, 2006"; diff --git a/Frameworks/TagLib/es.lproj/InfoPlist.strings b/Frameworks/TagLib/es.lproj/InfoPlist.strings deleted file mode 100644 index cde2c3450..000000000 --- a/Frameworks/TagLib/es.lproj/InfoPlist.strings +++ /dev/null @@ -1,3 +0,0 @@ -/* Localized versions of Info.plist keys */ - -NSHumanReadableCopyright = "© __MyCompanyName__, 2006"; diff --git a/Frameworks/TagLib/pl.lproj/InfoPlist.strings b/Frameworks/TagLib/pl.lproj/InfoPlist.strings deleted file mode 100644 index cde2c3450..000000000 --- a/Frameworks/TagLib/pl.lproj/InfoPlist.strings +++ /dev/null @@ -1,3 +0,0 @@ -/* Localized versions of Info.plist keys */ - -NSHumanReadableCopyright = "© __MyCompanyName__, 2006"; diff --git a/Frameworks/TagLib/taglib/3rdparty/utf8-cpp/checked.h b/Frameworks/TagLib/taglib/3rdparty/utf8-cpp/checked.h deleted file mode 100644 index 2aef5838d..000000000 --- a/Frameworks/TagLib/taglib/3rdparty/utf8-cpp/checked.h +++ /dev/null @@ -1,327 +0,0 @@ -// Copyright 2006-2016 Nemanja Trifunovic - -/* -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -*/ - - -#ifndef UTF8_FOR_CPP_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 -#define UTF8_FOR_CPP_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 - -#include "core.h" -#include - -namespace utf8 -{ - // Base for the exceptions that may be thrown from the library - class exception : public ::std::exception { - }; - - // Exceptions that may be thrown from the library functions. - class invalid_code_point : public exception { - uint32_t cp; - public: - invalid_code_point(uint32_t codepoint) : cp(codepoint) {} - virtual const char* what() const throw() { return "Invalid code point"; } - uint32_t code_point() const {return cp;} - }; - - class invalid_utf8 : public exception { - uint8_t u8; - public: - invalid_utf8 (uint8_t u) : u8(u) {} - virtual const char* what() const throw() { return "Invalid UTF-8"; } - uint8_t utf8_octet() const {return u8;} - }; - - class invalid_utf16 : public exception { - uint16_t u16; - public: - invalid_utf16 (uint16_t u) : u16(u) {} - virtual const char* what() const throw() { return "Invalid UTF-16"; } - uint16_t utf16_word() const {return u16;} - }; - - class not_enough_room : public exception { - public: - virtual const char* what() const throw() { return "Not enough space"; } - }; - - /// The library API - functions intended to be called by the users - - template - octet_iterator append(uint32_t cp, octet_iterator result) - { - if (!utf8::internal::is_code_point_valid(cp)) - throw invalid_code_point(cp); - - if (cp < 0x80) // one octet - *(result++) = static_cast(cp); - else if (cp < 0x800) { // two octets - *(result++) = static_cast((cp >> 6) | 0xc0); - *(result++) = static_cast((cp & 0x3f) | 0x80); - } - else if (cp < 0x10000) { // three octets - *(result++) = static_cast((cp >> 12) | 0xe0); - *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); - *(result++) = static_cast((cp & 0x3f) | 0x80); - } - else { // four octets - *(result++) = static_cast((cp >> 18) | 0xf0); - *(result++) = static_cast(((cp >> 12) & 0x3f) | 0x80); - *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); - *(result++) = static_cast((cp & 0x3f) | 0x80); - } - return result; - } - - template - output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out, uint32_t replacement) - { - while (start != end) { - octet_iterator sequence_start = start; - internal::utf_error err_code = utf8::internal::validate_next(start, end); - switch (err_code) { - case internal::UTF8_OK : - for (octet_iterator it = sequence_start; it != start; ++it) - *out++ = *it; - break; - case internal::NOT_ENOUGH_ROOM: - throw not_enough_room(); - case internal::INVALID_LEAD: - out = utf8::append (replacement, out); - ++start; - break; - case internal::INCOMPLETE_SEQUENCE: - case internal::OVERLONG_SEQUENCE: - case internal::INVALID_CODE_POINT: - out = utf8::append (replacement, out); - ++start; - // just one replacement mark for the sequence - while (start != end && utf8::internal::is_trail(*start)) - ++start; - break; - } - } - return out; - } - - template - inline output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out) - { - static const uint32_t replacement_marker = utf8::internal::mask16(0xfffd); - return utf8::replace_invalid(start, end, out, replacement_marker); - } - - template - uint32_t next(octet_iterator& it, octet_iterator end) - { - uint32_t cp = 0; - internal::utf_error err_code = utf8::internal::validate_next(it, end, cp); - switch (err_code) { - case internal::UTF8_OK : - break; - case internal::NOT_ENOUGH_ROOM : - throw not_enough_room(); - case internal::INVALID_LEAD : - case internal::INCOMPLETE_SEQUENCE : - case internal::OVERLONG_SEQUENCE : - throw invalid_utf8(*it); - case internal::INVALID_CODE_POINT : - throw invalid_code_point(cp); - } - return cp; - } - - template - uint32_t peek_next(octet_iterator it, octet_iterator end) - { - return utf8::next(it, end); - } - - template - uint32_t prior(octet_iterator& it, octet_iterator start) - { - // can't do much if it == start - if (it == start) - throw not_enough_room(); - - octet_iterator end = it; - // Go back until we hit either a lead octet or start - while (utf8::internal::is_trail(*(--it))) - if (it == start) - throw invalid_utf8(*it); // error - no lead byte in the sequence - return utf8::peek_next(it, end); - } - - /// Deprecated in versions that include "prior" - template - uint32_t previous(octet_iterator& it, octet_iterator pass_start) - { - octet_iterator end = it; - while (utf8::internal::is_trail(*(--it))) - if (it == pass_start) - throw invalid_utf8(*it); // error - no lead byte in the sequence - octet_iterator temp = it; - return utf8::next(temp, end); - } - - template - void advance (octet_iterator& it, distance_type n, octet_iterator end) - { - for (distance_type i = 0; i < n; ++i) - utf8::next(it, end); - } - - template - typename std::iterator_traits::difference_type - distance (octet_iterator first, octet_iterator last) - { - typename std::iterator_traits::difference_type dist; - for (dist = 0; first < last; ++dist) - utf8::next(first, last); - return dist; - } - - template - octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result) - { - while (start != end) { - uint32_t cp = utf8::internal::mask16(*start++); - // Take care of surrogate pairs first - if (utf8::internal::is_lead_surrogate(cp)) { - if (start != end) { - uint32_t trail_surrogate = utf8::internal::mask16(*start++); - if (utf8::internal::is_trail_surrogate(trail_surrogate)) - cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET; - else - throw invalid_utf16(static_cast(trail_surrogate)); - } - else - throw invalid_utf16(static_cast(cp)); - - } - // Lone trail surrogate - else if (utf8::internal::is_trail_surrogate(cp)) - throw invalid_utf16(static_cast(cp)); - - result = utf8::append(cp, result); - } - return result; - } - - template - u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result) - { - while (start < end) { - uint32_t cp = utf8::next(start, end); - if (cp > 0xffff) { //make a surrogate pair - *result++ = static_cast((cp >> 10) + internal::LEAD_OFFSET); - *result++ = static_cast((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN); - } - else - *result++ = static_cast(cp); - } - return result; - } - - template - octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result) - { - while (start != end) - result = utf8::append(*(start++), result); - - return result; - } - - template - u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result) - { - while (start < end) - (*result++) = utf8::next(start, end); - - return result; - } - - // The iterator class - template - class iterator : public std::iterator { - octet_iterator it; - octet_iterator range_start; - octet_iterator range_end; - public: - iterator () {} - explicit iterator (const octet_iterator& octet_it, - const octet_iterator& rangestart, - const octet_iterator& rangeend) : - it(octet_it), range_start(rangestart), range_end(rangeend) - { - if (it < range_start || it > range_end) - throw std::out_of_range("Invalid utf-8 iterator position"); - } - // the default "big three" are OK - octet_iterator base () const { return it; } - uint32_t operator * () const - { - octet_iterator temp = it; - return utf8::next(temp, range_end); - } - bool operator == (const iterator& rhs) const - { - if (range_start != rhs.range_start || range_end != rhs.range_end) - throw std::logic_error("Comparing utf-8 iterators defined with different ranges"); - return (it == rhs.it); - } - bool operator != (const iterator& rhs) const - { - return !(operator == (rhs)); - } - iterator& operator ++ () - { - utf8::next(it, range_end); - return *this; - } - iterator operator ++ (int) - { - iterator temp = *this; - utf8::next(it, range_end); - return temp; - } - iterator& operator -- () - { - utf8::prior(it, range_start); - return *this; - } - iterator operator -- (int) - { - iterator temp = *this; - utf8::prior(it, range_start); - return temp; - } - }; // class iterator - -} // namespace utf8 - -#endif //header guard - - diff --git a/Frameworks/TagLib/taglib/3rdparty/utf8-cpp/core.h b/Frameworks/TagLib/taglib/3rdparty/utf8-cpp/core.h deleted file mode 100644 index ae0f367db..000000000 --- a/Frameworks/TagLib/taglib/3rdparty/utf8-cpp/core.h +++ /dev/null @@ -1,332 +0,0 @@ -// Copyright 2006 Nemanja Trifunovic - -/* -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -*/ - - -#ifndef UTF8_FOR_CPP_CORE_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 -#define UTF8_FOR_CPP_CORE_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 - -#include - -namespace utf8 -{ - // The typedefs for 8-bit, 16-bit and 32-bit unsigned integers - // You may need to change them to match your system. - // These typedefs have the same names as ones from cstdint, or boost/cstdint - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; - -// Helper code - not intended to be directly called by the library users. May be changed at any time -namespace internal -{ - // Unicode constants - // Leading (high) surrogates: 0xd800 - 0xdbff - // Trailing (low) surrogates: 0xdc00 - 0xdfff - const uint16_t LEAD_SURROGATE_MIN = 0xd800u; - const uint16_t LEAD_SURROGATE_MAX = 0xdbffu; - const uint16_t TRAIL_SURROGATE_MIN = 0xdc00u; - const uint16_t TRAIL_SURROGATE_MAX = 0xdfffu; - const uint16_t LEAD_OFFSET = LEAD_SURROGATE_MIN - (0x10000 >> 10); - const uint32_t SURROGATE_OFFSET = 0x10000u - (LEAD_SURROGATE_MIN << 10) - TRAIL_SURROGATE_MIN; - - // Maximum valid value for a Unicode code point - const uint32_t CODE_POINT_MAX = 0x0010ffffu; - - template - inline uint8_t mask8(octet_type oc) - { - return static_cast(0xff & oc); - } - template - inline uint16_t mask16(u16_type oc) - { - return static_cast(0xffff & oc); - } - template - inline bool is_trail(octet_type oc) - { - return ((utf8::internal::mask8(oc) >> 6) == 0x2); - } - - template - inline bool is_lead_surrogate(u16 cp) - { - return (cp >= LEAD_SURROGATE_MIN && cp <= LEAD_SURROGATE_MAX); - } - - template - inline bool is_trail_surrogate(u16 cp) - { - return (cp >= TRAIL_SURROGATE_MIN && cp <= TRAIL_SURROGATE_MAX); - } - - template - inline bool is_surrogate(u16 cp) - { - return (cp >= LEAD_SURROGATE_MIN && cp <= TRAIL_SURROGATE_MAX); - } - - template - inline bool is_code_point_valid(u32 cp) - { - return (cp <= CODE_POINT_MAX && !utf8::internal::is_surrogate(cp)); - } - - template - inline typename std::iterator_traits::difference_type - sequence_length(octet_iterator lead_it) - { - uint8_t lead = utf8::internal::mask8(*lead_it); - if (lead < 0x80) - return 1; - else if ((lead >> 5) == 0x6) - return 2; - else if ((lead >> 4) == 0xe) - return 3; - else if ((lead >> 3) == 0x1e) - return 4; - else - return 0; - } - - template - inline bool is_overlong_sequence(uint32_t cp, octet_difference_type length) - { - if (cp < 0x80) { - if (length != 1) - return true; - } - else if (cp < 0x800) { - if (length != 2) - return true; - } - else if (cp < 0x10000) { - if (length != 3) - return true; - } - - return false; - } - - enum utf_error {UTF8_OK, NOT_ENOUGH_ROOM, INVALID_LEAD, INCOMPLETE_SEQUENCE, OVERLONG_SEQUENCE, INVALID_CODE_POINT}; - - /// Helper for get_sequence_x - template - utf_error increase_safely(octet_iterator& it, octet_iterator end) - { - if (++it == end) - return NOT_ENOUGH_ROOM; - - if (!utf8::internal::is_trail(*it)) - return INCOMPLETE_SEQUENCE; - - return UTF8_OK; - } - - #define UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(IT, END) {utf_error ret = increase_safely(IT, END); if (ret != UTF8_OK) return ret;} - - /// get_sequence_x functions decode utf-8 sequences of the length x - template - utf_error get_sequence_1(octet_iterator& it, octet_iterator end, uint32_t& code_point) - { - if (it == end) - return NOT_ENOUGH_ROOM; - - code_point = utf8::internal::mask8(*it); - - return UTF8_OK; - } - - template - utf_error get_sequence_2(octet_iterator& it, octet_iterator end, uint32_t& code_point) - { - if (it == end) - return NOT_ENOUGH_ROOM; - - code_point = utf8::internal::mask8(*it); - - UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) - - code_point = ((code_point << 6) & 0x7ff) + ((*it) & 0x3f); - - return UTF8_OK; - } - - template - utf_error get_sequence_3(octet_iterator& it, octet_iterator end, uint32_t& code_point) - { - if (it == end) - return NOT_ENOUGH_ROOM; - - code_point = utf8::internal::mask8(*it); - - UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) - - code_point = ((code_point << 12) & 0xffff) + ((utf8::internal::mask8(*it) << 6) & 0xfff); - - UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) - - code_point += (*it) & 0x3f; - - return UTF8_OK; - } - - template - utf_error get_sequence_4(octet_iterator& it, octet_iterator end, uint32_t& code_point) - { - if (it == end) - return NOT_ENOUGH_ROOM; - - code_point = utf8::internal::mask8(*it); - - UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) - - code_point = ((code_point << 18) & 0x1fffff) + ((utf8::internal::mask8(*it) << 12) & 0x3ffff); - - UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) - - code_point += (utf8::internal::mask8(*it) << 6) & 0xfff; - - UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) - - code_point += (*it) & 0x3f; - - return UTF8_OK; - } - - #undef UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR - - template - utf_error validate_next(octet_iterator& it, octet_iterator end, uint32_t& code_point) - { - if (it == end) - return NOT_ENOUGH_ROOM; - - // Save the original value of it so we can go back in case of failure - // Of course, it does not make much sense with i.e. stream iterators - octet_iterator original_it = it; - - uint32_t cp = 0; - // Determine the sequence length based on the lead octet - typedef typename std::iterator_traits::difference_type octet_difference_type; - const octet_difference_type length = utf8::internal::sequence_length(it); - - // Get trail octets and calculate the code point - utf_error err = UTF8_OK; - switch (length) { - case 0: - return INVALID_LEAD; - case 1: - err = utf8::internal::get_sequence_1(it, end, cp); - break; - case 2: - err = utf8::internal::get_sequence_2(it, end, cp); - break; - case 3: - err = utf8::internal::get_sequence_3(it, end, cp); - break; - case 4: - err = utf8::internal::get_sequence_4(it, end, cp); - break; - } - - if (err == UTF8_OK) { - // Decoding succeeded. Now, security checks... - if (utf8::internal::is_code_point_valid(cp)) { - if (!utf8::internal::is_overlong_sequence(cp, length)){ - // Passed! Return here. - code_point = cp; - ++it; - return UTF8_OK; - } - else - err = OVERLONG_SEQUENCE; - } - else - err = INVALID_CODE_POINT; - } - - // Failure branch - restore the original value of the iterator - it = original_it; - return err; - } - - template - inline utf_error validate_next(octet_iterator& it, octet_iterator end) { - uint32_t ignored; - return utf8::internal::validate_next(it, end, ignored); - } - -} // namespace internal - - /// The library API - functions intended to be called by the users - - // Byte order mark - const uint8_t bom[] = {0xef, 0xbb, 0xbf}; - - template - octet_iterator find_invalid(octet_iterator start, octet_iterator end) - { - octet_iterator result = start; - while (result != end) { - utf8::internal::utf_error err_code = utf8::internal::validate_next(result, end); - if (err_code != internal::UTF8_OK) - return result; - } - return result; - } - - template - inline bool is_valid(octet_iterator start, octet_iterator end) - { - return (utf8::find_invalid(start, end) == end); - } - - template - inline bool starts_with_bom (octet_iterator it, octet_iterator end) - { - return ( - ((it != end) && (utf8::internal::mask8(*it++)) == bom[0]) && - ((it != end) && (utf8::internal::mask8(*it++)) == bom[1]) && - ((it != end) && (utf8::internal::mask8(*it)) == bom[2]) - ); - } - - //Deprecated in release 2.3 - template - inline bool is_bom (octet_iterator it) - { - return ( - (utf8::internal::mask8(*it++)) == bom[0] && - (utf8::internal::mask8(*it++)) == bom[1] && - (utf8::internal::mask8(*it)) == bom[2] - ); - } -} // namespace utf8 - -#endif // header guard - - diff --git a/Frameworks/TagLib/taglib/AUTHORS b/Frameworks/TagLib/taglib/AUTHORS deleted file mode 100644 index 279ee2219..000000000 --- a/Frameworks/TagLib/taglib/AUTHORS +++ /dev/null @@ -1,21 +0,0 @@ -Scott Wheeler - Author, maintainer -Lukas Lalinsky - Implementation of multiple new file formats, many bug fixes, maintainer -Tsuda Kageyu - A lot of bug fixes and performance improvements, maintainer. -Stephen F. Booth - DSF metadata implementation, bug fixes, maintainer. -Ismael Orenstein - Xing header implementation -Allan Sandfeld Jensen - FLAC metadata implementation -Teemu Tervo - Numerous bug reports and fixes -Mathias Panzenböck - Mod, S3M, IT and XM metadata implementations -Damien Plisson - DSDIFF metadata implementation - -Please send all patches and questions to taglib-devel@kde.org rather than to -individual developers! diff --git a/Frameworks/TagLib/taglib/CMakeLists.txt b/Frameworks/TagLib/taglib/CMakeLists.txt deleted file mode 100644 index 5fc91cc63..000000000 --- a/Frameworks/TagLib/taglib/CMakeLists.txt +++ /dev/null @@ -1,168 +0,0 @@ -cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR) - -project(taglib) - -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") - -if(DEFINED ENABLE_STATIC) - message(FATAL_ERROR "This option is no longer available, use BUILD_SHARED_LIBS instead") -endif() - -option(BUILD_SHARED_LIBS "Build shared libraries" OFF) -if(APPLE) - option(BUILD_FRAMEWORK "Build an OS X framework" OFF) - if(BUILD_FRAMEWORK) - set(BUILD_SHARED_LIBS ON) - #set(CMAKE_MACOSX_RPATH 1) - set(FRAMEWORK_INSTALL_DIR "/Library/Frameworks" CACHE STRING "Directory to install frameworks to.") - endif() -endif() -if(NOT BUILD_SHARED_LIBS) - add_definitions(-DTAGLIB_STATIC) -endif() -option(ENABLE_STATIC_RUNTIME "Visual Studio, link with runtime statically" OFF) - -option(ENABLE_CCACHE "Use ccache when building libtag" OFF) -if(ENABLE_CCACHE) - find_program(CCACHE_FOUND ccache) - if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) - endif() -endif() - -option(VISIBILITY_HIDDEN "Build with -fvisibility=hidden" OFF) -option(BUILD_TESTS "Build the test suite" OFF) -option(BUILD_EXAMPLES "Build the examples" OFF) -option(BUILD_BINDINGS "Build the bindings" ON) - -option(NO_ITUNES_HACKS "Disable workarounds for iTunes bugs" OFF) - -option(PLATFORM_WINRT "Enable WinRT support" OFF) -if(PLATFORM_WINRT) - add_definitions(-DPLATFORM_WINRT) -endif() - -add_definitions(-DHAVE_CONFIG_H) -set(TESTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/") - -## the following are directories where stuff will be installed to -set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)") -set(EXEC_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Base directory for executables and libraries") -set(BIN_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/bin" CACHE PATH "The subdirectory to the binaries prefix (default prefix/bin)") -set(LIB_INSTALL_DIR "${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})") -set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The subdirectory to the header prefix") - -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") -endif() - -if(MSVC AND ENABLE_STATIC_RUNTIME) - foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endforeach(flag_var) -endif() - -# Read version information from file taglib/toolkit/taglib.h into variables -# TAGLIB_LIB_MAJOR_VERSION, TAGLIB_LIB_MINOR_VERSION, TAGLIB_LIB_PATCH_VERSION. -foreach(version_part MAJOR MINOR PATCH) - set(version_var_name "TAGLIB_${version_part}_VERSION") - file(STRINGS taglib/toolkit/taglib.h version_line - REGEX "^#define +${version_var_name}") - if(NOT version_line) - message(FATAL_ERROR "${version_var_name} not found in taglib.h") - endif() - string(REGEX MATCH "${version_var_name} +([^ ]+)" result ${version_line}) - set(TAGLIB_LIB_${version_part}_VERSION ${CMAKE_MATCH_1}) -endforeach(version_part) - -# Only used to force cmake rerun when taglib.h changes. -configure_file(taglib/toolkit/taglib.h ${CMAKE_CURRENT_BINARY_DIR}/taglib.h.stamp) - -if("${TAGLIB_LIB_PATCH_VERSION}" EQUAL "0") - set(TAGLIB_LIB_VERSION_STRING "${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}") -else() - set(TAGLIB_LIB_VERSION_STRING "${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION}") -endif() - -# 1. If the library source code has changed at all since the last update, then increment revision. -# 2. If any interfaces have been added, removed, or changed since the last update, increment current, and set revision to 0. -# 3. If any interfaces have been added since the last public release, then increment age. -# 4. If any interfaces have been removed since the last public release, then set age to 0. -set(TAGLIB_SOVERSION_CURRENT 19) -set(TAGLIB_SOVERSION_REVISION 0) -set(TAGLIB_SOVERSION_AGE 18) - -math(EXPR TAGLIB_SOVERSION_MAJOR "${TAGLIB_SOVERSION_CURRENT} - ${TAGLIB_SOVERSION_AGE}") -math(EXPR TAGLIB_SOVERSION_MINOR "${TAGLIB_SOVERSION_AGE}") -math(EXPR TAGLIB_SOVERSION_PATCH "${TAGLIB_SOVERSION_REVISION}") - -include(ConfigureChecks.cmake) - -if(${ZLIB_FOUND}) - set(ZLIB_LIBRARIES_FLAGS -lz) -endif() - -if(NOT WIN32) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/taglib-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/taglib-config" @ONLY) - install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/taglib-config" DESTINATION "${BIN_INSTALL_DIR}") -endif() - -if(WIN32) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/taglib-config.cmd.cmake" "${CMAKE_CURRENT_BINARY_DIR}/taglib-config.cmd") - install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/taglib-config.cmd" DESTINATION "${BIN_INSTALL_DIR}") -endif() - -if(NOT BUILD_FRAMEWORK) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/taglib.pc.cmake" "${CMAKE_CURRENT_BINARY_DIR}/taglib.pc" @ONLY) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/taglib.pc" DESTINATION "${LIB_INSTALL_DIR}/pkgconfig") -endif() - -if(NOT HAVE_ZLIB AND ZLIB_SOURCE) - set(HAVE_ZLIB 1) - set(HAVE_ZLIB_SOURCE 1) -endif() - -include_directories(${CMAKE_CURRENT_BINARY_DIR}) -configure_file(config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/config.h") - -if(WITH_ASF) - set(TAGLIB_WITH_ASF TRUE) -endif() -if(WITH_MP4) - set(TAGLIB_WITH_MP4 TRUE) -endif() - -option(TRACE_IN_RELEASE "Output debug messages even in release mode" OFF) -if(TRACE_IN_RELEASE) - set(TRACE_IN_RELEASE TRUE) -endif() - -configure_file(taglib/taglib_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/taglib_config.h") - -add_subdirectory(taglib) - -if(BUILD_BINDINGS) - add_subdirectory(bindings) -endif() - -if(BUILD_TESTS AND NOT BUILD_SHARED_LIBS) - enable_testing() - add_subdirectory(tests) -endif() - -if(BUILD_EXAMPLES) - add_subdirectory(examples) -endif() - -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake" "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") -file(COPY doc/taglib.png DESTINATION doc) -add_custom_target(docs doxygen) - -# uninstall target -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) - -if(NOT TARGET uninstall) - add_custom_target(uninstall COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") -endif() diff --git a/Frameworks/TagLib/taglib/COPYING.LGPL b/Frameworks/TagLib/taglib/COPYING.LGPL deleted file mode 100644 index 4362b4915..000000000 --- a/Frameworks/TagLib/taglib/COPYING.LGPL +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/Frameworks/TagLib/taglib/COPYING.MPL b/Frameworks/TagLib/taglib/COPYING.MPL deleted file mode 100644 index 7714141d1..000000000 --- a/Frameworks/TagLib/taglib/COPYING.MPL +++ /dev/null @@ -1,470 +0,0 @@ - MOZILLA PUBLIC LICENSE - Version 1.1 - - --------------- - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] - diff --git a/Frameworks/TagLib/taglib/ConfigureChecks.cmake b/Frameworks/TagLib/taglib/ConfigureChecks.cmake deleted file mode 100644 index bcdbfe20f..000000000 --- a/Frameworks/TagLib/taglib/ConfigureChecks.cmake +++ /dev/null @@ -1,203 +0,0 @@ -include(CheckLibraryExists) -include(CheckTypeSize) -include(CheckCXXSourceCompiles) - -# Check if the size of numeric types are suitable. - -check_type_size("short" SIZEOF_SHORT) -if(NOT ${SIZEOF_SHORT} EQUAL 2) - message(FATAL_ERROR "TagLib requires that short is 16-bit wide.") -endif() - -check_type_size("int" SIZEOF_INT) -if(NOT ${SIZEOF_INT} EQUAL 4) - message(FATAL_ERROR "TagLib requires that int is 32-bit wide.") -endif() - -check_type_size("long long" SIZEOF_LONGLONG) -if(NOT ${SIZEOF_LONGLONG} EQUAL 8) - message(FATAL_ERROR "TagLib requires that long long is 64-bit wide.") -endif() - -check_type_size("wchar_t" SIZEOF_WCHAR_T) -if(${SIZEOF_WCHAR_T} LESS 2) - message(FATAL_ERROR "TagLib requires that wchar_t is sufficient to store a UTF-16 char.") -endif() - -check_type_size("float" SIZEOF_FLOAT) -if(NOT ${SIZEOF_FLOAT} EQUAL 4) - message(FATAL_ERROR "TagLib requires that float is 32-bit wide.") -endif() - -check_type_size("double" SIZEOF_DOUBLE) -if(NOT ${SIZEOF_DOUBLE} EQUAL 8) - message(FATAL_ERROR "TagLib requires that double is 64-bit wide.") -endif() - -# Determine which kind of atomic operations your compiler supports. - -check_cxx_source_compiles(" - int main() { - volatile int x; - __sync_add_and_fetch(&x, 1); - int y = __sync_sub_and_fetch(&x, 1); - return 0; - } - " HAVE_GCC_ATOMIC) - -if(NOT HAVE_GCC_ATOMIC) - check_cxx_source_compiles(" - #include - int main() { - volatile int32_t x; - OSAtomicIncrement32Barrier(&x); - int32_t y = OSAtomicDecrement32Barrier(&x); - return 0; - } - " HAVE_MAC_ATOMIC) - - if(NOT HAVE_MAC_ATOMIC) - check_cxx_source_compiles(" - #include - int main() { - volatile LONG x; - InterlockedIncrement(&x); - LONG y = InterlockedDecrement(&x); - return 0; - } - " HAVE_WIN_ATOMIC) - - if(NOT HAVE_WIN_ATOMIC) - check_cxx_source_compiles(" - #include - int main() { - volatile int x; - __sync_add_and_fetch(&x, 1); - int y = __sync_sub_and_fetch(&x, 1); - return 0; - } - " HAVE_IA64_ATOMIC) - endif() - endif() -endif() - -# Determine which kind of byte swap functions your compiler supports. - -check_cxx_source_compiles(" - int main() { - __builtin_bswap16(0); - __builtin_bswap32(0); - __builtin_bswap64(0); - return 0; - } -" HAVE_GCC_BYTESWAP) - -if(NOT HAVE_GCC_BYTESWAP) - check_cxx_source_compiles(" - #include - int main() { - __bswap_16(0); - __bswap_32(0); - __bswap_64(0); - return 0; - } - " HAVE_GLIBC_BYTESWAP) - - if(NOT HAVE_GLIBC_BYTESWAP) - check_cxx_source_compiles(" - #include - int main() { - _byteswap_ushort(0); - _byteswap_ulong(0); - _byteswap_uint64(0); - return 0; - } - " HAVE_MSC_BYTESWAP) - - if(NOT HAVE_MSC_BYTESWAP) - check_cxx_source_compiles(" - #include - int main() { - OSSwapInt16(0); - OSSwapInt32(0); - OSSwapInt64(0); - return 0; - } - " HAVE_MAC_BYTESWAP) - - if(NOT HAVE_MAC_BYTESWAP) - check_cxx_source_compiles(" - #include - int main() { - swap16(0); - swap32(0); - swap64(0); - return 0; - } - " HAVE_OPENBSD_BYTESWAP) - endif() - endif() - endif() -endif() - -# Determine whether your compiler supports some safer version of vsprintf. - -check_cxx_source_compiles(" - #include - #include - int main() { - char buf[20]; - va_list args; - vsnprintf(buf, 20, \"%d\", args); - return 0; - } -" HAVE_VSNPRINTF) - -if(NOT HAVE_VSNPRINTF) - check_cxx_source_compiles(" - #include - #include - int main() { - char buf[20]; - va_list args; - vsprintf_s(buf, \"%d\", args); - return 0; - } - " HAVE_VSPRINTF_S) -endif() - -# Determine whether your compiler supports ISO _strdup. - -check_cxx_source_compiles(" - #include - int main() { - _strdup(0); - return 0; - } -" HAVE_ISO_STRDUP) - -# Determine whether zlib is installed. - -if(NOT ZLIB_SOURCE) - find_package(ZLIB) - if(ZLIB_FOUND) - set(HAVE_ZLIB 1) - else() - set(HAVE_ZLIB 0) - endif() -endif() - -# Determine whether CppUnit is installed. - -if(BUILD_TESTS AND NOT BUILD_SHARED_LIBS) - find_package(CppUnit) - if(NOT CppUnit_FOUND) - message(STATUS "CppUnit not found, disabling tests.") - set(BUILD_TESTS OFF) - endif() -endif() - -# Detect WinRT mode -if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - set(PLATFORM WINRT 1) -endif() diff --git a/Frameworks/TagLib/taglib/Doxyfile.cmake b/Frameworks/TagLib/taglib/Doxyfile.cmake deleted file mode 100644 index 6da30bb5d..000000000 --- a/Frameworks/TagLib/taglib/Doxyfile.cmake +++ /dev/null @@ -1,210 +0,0 @@ -# Doxyfile 1.3.4 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = TagLib -PROJECT_NUMBER = ${TAGLIB_LIB_VERSION_STRING} -OUTPUT_DIRECTORY = doc -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 4 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = YES -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -GENERATE_TODOLIST = NO -GENERATE_TESTLIST = NO -GENERATE_BUGLIST = NO -GENERATE_DEPRECATEDLIST= NO -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = NO -WARN_IF_DOC_ERROR = YES -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = @CMAKE_SOURCE_DIR@/taglib -FILE_PATTERNS = *.h \ - *.hh \ - *.H -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = @CMAKE_SOURCE_DIR@/doc/api-header.html -HTML_FOOTER = @CMAKE_SOURCE_DIR@/doc/api-footer.html -HTML_STYLESHEET = @CMAKE_SOURCE_DIR@/doc/taglib-api.css -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = YES -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = letter -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = DO_NOT_DOCUMENT \ - DOXYGEN \ - WITH_MP4 \ - WITH_ASF -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/Frameworks/TagLib/taglib/INSTALL.md b/Frameworks/TagLib/taglib/INSTALL.md deleted file mode 100644 index ee9a81ae6..000000000 --- a/Frameworks/TagLib/taglib/INSTALL.md +++ /dev/null @@ -1,175 +0,0 @@ -TagLib Installation -=================== - -TagLib uses the CMake build system. As a user, you will most likely want to -build TagLib in release mode and install it into a system-wide location. -This can be done using the following commands: - - cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release . - make - sudo make install - -In order to build the included examples, use the `BUILD_EXAMPLES` option: - - cmake -DBUILD_EXAMPLES=ON [...] - -See http://www.cmake.org/cmake/help/runningcmake.html for generic help on -running CMake. - -Mac OS X --------- - -On Mac OS X, you might want to build a framework that can be easily integrated -into your application. If you set the BUILD_FRAMEWORK option on, it will compile -TagLib as a framework. For example, the following command can be used to build -an Universal Binary framework with Mac OS X 10.4 as the deployment target: - - cmake -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_FRAMEWORK=ON \ - -DCMAKE_C_COMPILER=/usr/bin/gcc-4.0 \ - -DCMAKE_CXX_COMPILER=/usr/bin/c++-4.0 \ - -DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk/ \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.4 \ - -DCMAKE_OSX_ARCHITECTURES="ppc;i386;x86_64" - -For a 10.6 Snow Leopard static library with both 32-bit and 64-bit code, use: - - cmake -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_OSX_DEPLOYMENT_TARGET=10.6 \ - -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" \ - -DBUILD_SHARED_LIBS=OFF \ - -DCMAKE_INSTALL_PREFIX="" - -After `make`, and `make install`, add `libtag.` to your XCode project, and add -the include folder to the project's User Header Search Paths. - -Windows -------- - -It's Windows ... Systems vary! -This means you need to adjust things to suit your system, especially paths. - -Tested with: -* Microsoft Visual Studio 2010, 2015, 2017 -* Microsoft C++ Build Tools 2015, 2017 (standalone packages not requiring Visual Studio) -* Gcc by mingw-w64.sf.net v4.6.3 (Strawberry Perl 32b) -* MinGW32-4.8.0 - -Requirements: -* Tool chain, build environment, whatever ya want to call it ... - Installed and working. -* CMake program. (Available at: www.cmake.org) - Installed and working. - -Optional: -* Zlib library. - Available in some tool chains, not all. - Search the web, take your choice. - -Useful configuration options used with CMake (GUI and/or command line): - Any of the `ZLIB_` variables may be used at the command line, `ZLIB_ROOT` is only - available on the command line. - - | option | description | - ---------------------| ------------| - `ZLIB_ROOT=` | Where to find ZLib's root directory. Assumes parent of: `\include` and `\lib.`| - `ZLIB_INCLUDE_DIR=` | Where to find ZLib's Include directory.| - `ZLIB_LIBRARY=` | Where to find ZLib's Library. - `ZLIB_SOURCE=` | Where to find ZLib's Source Code. Alternative to `ZLIB_INCLUDE_DIR` and `ZLIB_LIBRARY`. - `CMAKE_INSTALL_PREFIX=` | Where to install Taglib. | - `CMAKE_BUILD_TYPE=` | Release, Debug, etc ... (Not available in MSVC) | - -The easiest way is at the command prompt (Visual C++ command prompt for MSVS users – batch file and/or shortcuts are your friends). - -1. **Build the Makefiles:** - - Replace "GENERATOR" with your needs. - * For MSVS: `Visual Studio XX YYYY`, e.g. `Visual Studio 14 2015`. - - **Note**: As Visual Studio 2017 supports CMake, you can skip this step and open the taglib - folder in VS instead. - * For MinGW: `MinGW Makefiles` - - C:\GitRoot\taglib> cmake -G "GENERATOR" -DCMAKE_INSTALL_PREFIX=C:\Libraries\taglib - - Or use the CMake GUI: - 1. Open CMake GUI. - 2. Set paths: *Where is the source code* and *Where to build the binaries*. - - In the example, both would be: `C:\GitRoot\taglib` - 3. Tick: Advanced - 4. Select: Configure - 5. Select: Generator - 6. Tick: Use default native compilers - 7. Select: Finish - Wait until done. - 8. If using ZLib, Scroll down. - (to the bottom of the list of options ... should go over them all) - 1. Edit: `ZLIB_INCLUDE_DIR` - 2. Edit: `ZLIB_LIBRARY` - 9. Select: Generate - -2. **Build the project** - * MSVS: - - C:\GitRoot\taglib> msbuild all_build.vcxproj /p:Configuration=Release - OR (Depending on MSVS version or personal choice) - - C:\GitRoot\taglib> devenv all_build.vcxproj /build Release - OR in the MSVS GUI: - 1. Open MSVS. - 2. Open taglib solution. - 3. Set build type to: Release (look in the tool bars) - 2. Hit F7 to build the solution. (project) - * MinGW: - - C:\GitRoot\taglib> gmake - - OR (Depending on MinGW install) - - C:\GitRoot\taglib> mingw32-make - - - -3. **Install the project** - - (Change `install` to `uninstall` to uninstall the project) - * MSVS: - - C:\GitRoot\taglib> msbuild install.vcxproj - OR (Depending on MSVC version or personal choice) - - C:\GitRoot\taglib> devenv install.vcxproj - - Or in the MSVS GUI: - 1. Open project. - 2. Open Solution Explorer. - 3. Right Click: INSTALL - 4. Select: Project Only - 5. Select: Build Only INSTALL - * MinGW: - - C:\GitRoot\taglib> gmake install - OR (Depending on MinGW install) - - C:\GitRoot\taglib> mingw32-make install - - -To build a static library, set the following two options with CMake: - - -DBUILD_SHARED_LIBS=OFF -DENABLE_STATIC_RUNTIME=ON - -Including `ENABLE_STATIC_RUNTIME=ON` indicates you want TagLib built using the -static runtime library, rather than the DLL form of the runtime. - -Unit Tests ----------- - -If you want to run the test suite to make sure TagLib works properly on your -system, you need to have cppunit installed. To build the tests, include -the option `-DBUILD_TESTS=on` when running cmake. - -The test suite has a custom target in the build system, so you can run -the tests using make: - - make check diff --git a/Frameworks/TagLib/taglib/NEWS b/Frameworks/TagLib/taglib/NEWS deleted file mode 100644 index 4b1cab502..000000000 --- a/Frameworks/TagLib/taglib/NEWS +++ /dev/null @@ -1,335 +0,0 @@ -============================ - - * Added support for WinRT. - * Added support for Linux on POWER. - * Added support for classical music tags of iTunes 12.5. - * Added support for file descriptor to FileStream. - * Added support for 'cmID', 'purl', 'egid' MP4 atoms. - * Added support for 'GRP1' ID3v2 frame. - * Added support for extensible WAV subformat. - * Enabled FileRef to detect file types based on the stream content. - * Dropped support for Windows 9x and NT 4.0 or older. - * Check for mandatory header objects in ASF files. - * More tolerant handling of RIFF padding, WAV files, broken MPEG streams. - * Improved calculation of Ogg, Opus, Speex, WAV, MP4 bitrates. - * Improved Windows compatibility by storing FLAC picture after comments. - * Fixed numerical genres in ID3v2.3.0 'TCON' frames. - * Fixed consistency of API removing MP4 items when empty values are set. - * Fixed consistency of API preferring COMM frames with no description. - * Fixed OOB read on invalid Ogg FLAC files (CVE-2018-11439). - * Fixed handling of empty MPEG files. - * Fixed parsing MP4 mdhd timescale. - * Fixed reading MP4 atoms with zero length. - * Fixed reading FLAC files with zero-sized seektables. - * Fixed handling of lowercase field names in Vorbis Comments. - * Fixed handling of 'rate' atoms in MP4 files. - * Fixed handling of invalid UTF-8 sequences. - * Fixed possible file corruptions when saving Ogg files. - * Fixed handling of non-audio blocks, sampling rates, DSD audio in WavPack files. - * TableOfContentsFrame::toString() improved. - * UserTextIdentificationFrame::toString() improved. - * Marked FileRef::create() deprecated. - * Marked MPEG::File::save() with boolean parameters deprecated, - provide overloads with enum parameters. - * Several smaller bug fixes and performance improvements. - -TagLib 1.11.1 (Oct 24, 2016) -============================ - - * Fixed binary incompatible change in TagLib::String. - * Fixed reading ID3v2 CTOC frames with a lot of entries. - * Fixed seeking ByteVectorStream from the end. - -TagLib 1.11 (Apr 29, 2016) -========================== - -1.11: - - * Fixed reading APE items with long keys. - * Fixed reading ID3v2 SYLT frames when description is empty. - -1.11 BETA 2: - - * Better handling of PCM WAV files with a 'fact' chunk. - * Better handling of corrupted APE tags. - * Efficient decoding of unsynchronized ID3v2 frames. - * Fixed text encoding when saving certain frames in ID3v2.3 tags. - * Fixed updating the size of RIFF files when removing chunks. - * Several smaller bug fixes and performance improvements. - -1.11 BETA: - - * New API for creating FileRef from IOStream. - * Added support for ID3v2 PCST and WFED frames. - * Added support for pictures in XiphComment. - * Added String::clear(). - * Added FLAC::File::strip() for removing non-standard tags. - * Added alternative functions to XiphComment::removeField(). - * Added BUILD_BINDINGS build option. - * Added ENABLE_CCACHE build option. - * Replaced ENABLE_STATIC build option with BUILD_SHARED_LIBS. - * Better handling of duplicate ID3v2 tags in all kinds of files. - * Better handling of duplicate tag chunks in WAV files. - * Better handling of duplicate tag chunks in AIFF files. - * Better handling of duplicate Vorbis comment blocks in FLAC files. - * Better handling of broken MPEG audio frames. - * Fixed crash when calling File::properties() after strip(). - * Fixed crash when parsing certain MPEG files. - * Fixed crash when saving Ogg files. - * Fixed possible file corruptions when saving ASF files. - * Fixed possible file corruptions when saving FLAC files. - * Fixed possible file corruptions when saving MP4 files. - * Fixed possible file corruptions when saving MPEG files. - * Fixed possible file corruptions when saving APE files. - * Fixed possible file corruptions when saving Musepack files. - * Fixed possible file corruptions when saving WavPack files. - * Fixed updating the comment field of Vorbis comments. - * Fixed reading date and time in ID3v2.3 tags. - * Marked ByteVector::null and ByteVector::isNull() deprecated. - * Marked String::null and String::isNull() deprecated. - * Marked XiphComment::removeField() deprecated. - * Marked Ogg::Page::getCopyWithNewPageSequenceNumber() deprecated. It returns null. - * Marked custom integer types deprecated. - * Many smaller bug fixes and performance improvements. - -TagLib 1.10 (Nov 11, 2015) -========================== - -1.10: - - * Added new options to the tagwriter example. - * Fixed self-assignment operator in some types. - * Fixed extraction of MP4 tag keys with an empty list. - -1.10 BETA: - - * New API for the audio length in milliseconds. - * Added support for ID3v2 ETCO and SYLT frames. - * Added support for album artist in PropertyMap API of MP4 files. - * Added support for embedded frames in ID3v2 CHAP and CTOC frames. - * Added support for AIFF-C files. - * Better handling of duplicate ID3v2 tags in MPEG files. - * Allowed generating taglib.pc on Windows. - * Added ZLIB_SOURCE build option. - * Fixed backwards-incompatible change in TagLib::String when constructing UTF16 strings. - * Fixed crash when parsing certain FLAC files. - * Fixed crash when encoding empty strings. - * Fixed saving of certain XM files on OS X. - * Changed Xiph and APE generic getters to return space-concatenated values. - * Fixed possible file corruptions when removing tags from WAV files. - * Added support for MP4 files with 64-bit atoms in certain 64-bit environments. - * Prevented ID3v2 padding from being too large. - * Fixed crash when parsing corrupted APE files. - * Fixed crash when parsing corrupted WAV files. - * Fixed crash when parsing corrupted Ogg FLAC files. - * Fixed crash when parsing corrupted MPEG files. - * Fixed saving empty tags in WAV files. - * Fixed crash when parsing corrupted Musepack files. - * Fixed possible memory leaks when parsing AIFF and WAV files. - * Fixed crash when parsing corrupted MP4 files. - * Stopped writing empty ID3v2 frames. - * Fixed possible file corruptions when saving WMA files. - * Added TagLib::MP4::Tag::isEmpty(). - * Added accessors to manipulate MP4 tags. - * Fixed crash when parsing corrupted WavPack files. - * Fixed seeking MPEG frames. - * Fixed reading FLAC files with zero-sized padding blocks. - * Added support for reading the encoder information of WMA files. - * Added support for reading the codec of WAV files. - * Added support for multi channel WavPack files. - * Added support for reading the nominal bitrate of Ogg Speex files. - * Added support for VBR headers in MPEG files. - * Marked FLAC::File::streamInfoData() deprecated. It returns an empty ByteVector. - * Marked FLAC::File::streamLength() deprecated. It returns zero. - * Fixed possible file corruptions when adding an ID3v1 tag to FLAC files. - * Many smaller bug fixes and performance improvements. - -TagLib 1.9.1 (Oct 8, 2013) -========================== - - * Fixed binary incompatible change in TagLib::Map and TagLib::List. - * Fixed constructing String from ByteVector. - * Fixed compilation on MSVC with the /Zc:wchar_t- option. - * Fixed detecting of RIFF files with invalid chunk sizes. - * Added TagLib::MP4::Properties::codec(). - -TagLib 1.9 (Oct 6, 2013) -======================== - - * Added support for the Ogg Opus file format. - * Added support for INFO tags in WAV files. - * Changed FileStream to use Windows file API. - * Included taglib-config.cmd script for Windows. - * New ID3v1::Tag methods for working directly with genre numbers. - * New MPEG::File methods for checking which tags are saved in the file. - * Added support for the PropertyMap API to ASF and MP4 files. - * Added MusicBrainz identifiers to the PropertyMap API. - * Allowed reading of MP4 cover art without an explicitly specified format. - * Better parsing of corrupted FLAC files. - * Fixed saving of PropertyMap comments without description into ID3v2 tags. - * Fixed crash when parsing certain XM files. - * Fixed compilation of unit test with clang. - * Better handling of files that can't be open or have read-only permissions. - * Improved atomic reference counting. - * New hookable API for debug messages. - * More complete Windows install instructions. - * Many smaller bug fixes and performance improvements. - -TagLib 1.8 (Sep 6, 2012) -======================== - -1.8: - - * Added support for OWNE ID3 frames. - * Changed key validation in the new PropertyMap API. - * ID3v1::Tag::setStringHandler will no londer delete the previous handler, - the caller is responsible for this. - * File objects will also no longer delete the passed IOStream objects. It - should be done in the caller code after the File object is no longer - used. - * Added ID3v2::Tag::setLatin1StringHandler for custom handling of - latin1-encoded text in ID3v2 frames. - * Fixed validation of ID3v2 frame IDs (IDs with '0' were ignored). - -1.8 BETA: - - * New API for accessing tags by name. - * New abstract I/O stream layer to allow custom I/O handlers. - * Support for writing ID3v2.3 tags. - * Support for various module file formats (MOD, S3M, IT, XM). - * Support for MP4 and ASF is now enabled by default. - * Started using atomic int operations for reference counting. - * Added methods for checking if WMA and MP4 files are DRM-protected. - * Added taglib_free to the C bindings. - * New method to allow removing pictures from FLAC files. - * Support for reading audio properties from ALAC and Musepack SV8 files. - * Added replay-gain information to Musepack audio properties. - * Support for APEv2 binary tags. - * Many AudioProperties subclasses now provide information about the total number of samples. - * Various small bug fixes. - -TagLib 1.7.2 (Apr 20, 2012) -=========================== - - * Fixed division by zero while parsing corrupted MP4 files (CVE-2012-2396). - * Fixed compilation on Haiku. - -TagLib 1.7.1 (Mar 17, 2012) -=========================== - - * Improved parsing of corrupted WMA, RIFF and OGG files. - * Fixed a memory leak in the WMA parser. - * Fixed a memory leak in the FLAC parser. - * Fixed a possible division by zero in the APE parser. - * Added detection of TTA2 files. - * Fixed saving of multiple identically named tags to Vorbis Comments. - -TagLib 1.7 (Mar 11, 2011) -========================= - -1.7: - - * Fixed memory leaks in the FLAC file format parser. - * Fixed bitrate calculation for WAV files. - -1.7 RC1: - - * Support for reading/writing tags from Monkey's Audio files. (BUG:210404) - * Support for reading/writing embedded pictures from WMA files. - * Support for reading/writing embedded pictures from FLAC files (BUG:218696). - * Implemented APE::Tag::isEmpty() to check for all APE tags, not just the - basic ones. - * Added reading of WAV audio length. (BUG:116033) - * Exposed FLAC MD5 signature of the uncompressed audio stream via - FLAC::Properties::signature(). (BUG:160172) - * Added function ByteVector::toHex() for hex-encoding of byte vectors. - * WavPack reader now tries to get the audio length by finding the final - block, if the header doesn't have the information. (BUG:258016) - * Fixed a memory leak in the ID3v2.2 PIC frame parser. (BUG:257007) - * Fixed writing of RIFF files with even chunk sizes. (BUG:243954) - * Fixed compilation on MSVC 2010. - * Removed support for building using autoconf/automake. - * API docs can be now built using "make docs". - -TagLib 1.6.3 (Apr 17, 2010) -=========================== - - * Fixed definitions of the TAGLIB_WITH_MP4 and TAGLIB_WITH_ASF macros. - * Fixed upgrading of ID3v2.3 genre frame with ID3v1 code 0 (Blues). - * New method `int String::toInt(bool *ok)` which can return whether the - conversion to a number was successful. - * Fixed parsing of incorrectly written lengths in ID3v2 (affects mainly - compressed frames). (BUG:231075) - -TagLib 1.6.2 (Apr 9, 2010) -========================== - - * Read Vorbis Comments from the first FLAC metadata block, if there are - multiple ones. (BUG:211089) - * Fixed a memory leak in FileRef's OGA format detection. - * Fixed compilation with the Sun Studio compiler. (BUG:215225) - * Handle WM/TrackNumber attributes with DWORD content in WMA files. - (BUG:218526) - * More strict check if something is a valid MP4 file. (BUG:216819) - * Correctly save MP4 int-pair atoms with flags set to 0. - * Fixed compilation of the test runner on Windows. - * Store ASF attributes larger than 64k in the metadata library object. - * Ignore trailing non-data atoms when parsing MP4 covr atoms. - * Don't upgrade ID3v2.2 frame TDA to TDRC. (BUG:228968) - -TagLib 1.6.1 (Oct 31, 2009) -=========================== - - * Better detection of the audio codec of .oga files in FileRef. - * Fixed saving of Vorbis comments to Ogg FLAC files. TagLib tried to - include the Vorbis framing bit, which is only correct for Ogg Vorbis. - * Public symbols now have explicitly set visibility to "default" on GCC. - * Added missing exports for static ID3v1 functions. - * Fixed a typo in taglib_c.pc - * Fixed a failing test on ppc64. - * Support for binary 'covr' atom in MP4 files. TagLib 1.6 treated them - as text atoms, which corrupted them in some cases. - * Fixed ID3v1-style genre to string conversion in MP4 files. - -TagLib 1.6 (Sep 13, 2009) -========================= - -1.6: - - * New CMake option to build a static version - ENABLE_STATIC. - * Added support for disabling dllimport/dllexport on Windows using the - TAGLIB_STATIC macro. - * Support for parsing the obsolete 'gnre' MP4 atom. - * New cpp macros TAGLIB_WITH_MP4 and TAGLIB_WITH_ASF to determine if - TagLib was built with MP4/ASF support. - -1.6 RC1: - - * Split Ogg packets larger than 64k into multiple pages. (BUG:171957) - * TagLib can now use FLAC padding block. (BUG:107659) - * ID3v2.2 frames are now not incorrectly saved. (BUG:176373) - * Support for ID3v2.2 PIC frames. (BUG:167786) - * Fixed a bug in ByteVectorList::split(). - * XiphComment::year() now falls back to YEAR if DATE doesn't exist - and XiphComment::year() falls back to TRACKNUM if TRACKNUMBER doesn't - exist. (BUG:144396) - * Improved ID3v2.3 genre parsing. (BUG:188578) - * Better checking of corrupted ID3v2 APIC data. (BUG:168382) - * Bitrate calculating using the Xing header now uses floating point - numbers. (BUG:172556) - * New TagLib::String method rfind(). - * Added support for MP4 file format with iTunes-style metadata [optional]. - * Added support for ASF (WMA) file format [optional]. - * Fixed crash when saving a Locator APEv2 tag. (BUG:169810) - * Fixed a possible crash in the non-const version of String::operator[] - and in String::operator+=. (BUG:169389) - * Added support for PRIV ID3v2 frames. - * Empty ID3v2 genres are no longer treated as numeric ID3v1 genres. - * Added support for the POPM (rating/playcount) ID3v2 frame. - * Generic RIFF file format support: - * Support for AIFF files with ID3v2 tags. - * Support for WAV files with ID3v2 tags. - * Fixed crash on handling unsupported ID3v2 frames, e.g. on encrypted - frames. (BUG:161721) - * Fixed overflow while calculating bitrate of FLAC files with a very - high bitrate. diff --git a/Frameworks/TagLib/taglib/README.md b/Frameworks/TagLib/taglib/README.md deleted file mode 100644 index 1c9b1f38a..000000000 --- a/Frameworks/TagLib/taglib/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# TagLib - -[![Build Status](https://travis-ci.org/taglib/taglib.svg?branch=master)](https://travis-ci.org/taglib/taglib) - -### TagLib Audio Metadata Library - -http://taglib.org/ - -TagLib is a library for reading and editing the metadata of several -popular audio formats. Currently it supports both ID3v1 and [ID3v2][] -for MP3 files, [Ogg Vorbis][] comments and ID3 tags -in [FLAC][], MPC, Speex, WavPack, TrueAudio, WAV, AIFF, MP4, APE, -and ASF files. - -TagLib is distributed under the [GNU Lesser General Public License][] -(LGPL) and [Mozilla Public License][] (MPL). Essentially that means that -it may be used in proprietary applications, but if changes are made to -TagLib they must be contributed back to the project. Please review the -licenses if you are considering using TagLib in your project. - - [ID3v2]: http://www.id3.org - [Ogg Vorbis]: http://vorbis.com/ - [FLAC]: https://xiph.org/flac/ - [GNU Lesser General Public License]: http://www.gnu.org/licenses/lgpl.html - [Mozilla Public License]: http://www.mozilla.org/MPL/MPL-1.1.html - diff --git a/Frameworks/TagLib/taglib/bindings/CMakeLists.txt b/Frameworks/TagLib/taglib/bindings/CMakeLists.txt deleted file mode 100644 index d019843ec..000000000 --- a/Frameworks/TagLib/taglib/bindings/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -add_subdirectory(c) diff --git a/Frameworks/TagLib/taglib/bindings/README b/Frameworks/TagLib/taglib/bindings/README deleted file mode 100644 index bfbd44ae0..000000000 --- a/Frameworks/TagLib/taglib/bindings/README +++ /dev/null @@ -1,6 +0,0 @@ -There are a few other people that have done bindings externally that I have -been made aware of. I have not personally reviewed these bindings, but I'm -listing them here so that those who find them useful are able to find them: - -http://developer.kde.org/~wheeler/taglib.html#bindings - diff --git a/Frameworks/TagLib/taglib/bindings/c/CMakeLists.txt b/Frameworks/TagLib/taglib/bindings/c/CMakeLists.txt deleted file mode 100644 index ebb1267f1..000000000 --- a/Frameworks/TagLib/taglib/bindings/c/CMakeLists.txt +++ /dev/null @@ -1,75 +0,0 @@ -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/asf - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/trueaudio -) - -set(tag_c_HDRS tag_c.h) - -add_library(tag_c tag_c.cpp ${tag_c_HDRS}) - -target_link_libraries(tag_c tag) -set_target_properties(tag_c PROPERTIES - PUBLIC_HEADER "${tag_c_HDRS}" - DEFINE_SYMBOL MAKE_TAGLIB_LIB -) -if(VISIBILITY_HIDDEN) - set_target_properties(tag_c PROPERTIES C_VISIBILITY_PRESET hidden - ) -endif() -if(BUILD_FRAMEWORK) - set_target_properties(tag_c PROPERTIES FRAMEWORK TRUE) -endif() - -# On Solaris we need to explicitly add the C++ standard and runtime -# libraries to the libs used by the C bindings, because those C bindings -# themselves won't pull in the C++ libs -- and if a C application is -# using the C bindings then we get link errors. -check_library_exists(Crun __RTTI___ "" HAVE_CRUN_LIB) -if(HAVE_CRUN_LIB) - # Which libraries to link depends critically on which - # STL version is going to be used by your application - # and which runtime is in use. While Crun is pretty much - # the only game in town, the three available STLs -- Cstd, - # stlport4 and stdcxx -- make this a mess. The KDE-Solaris - # team supports stdcxx (Apache RogueWave stdcxx 4.1.3). - - # According to http://bugs.kde.org/show_bug.cgi?id=215225 the library can have the following two names: - find_library(ROGUEWAVE_STDCXX_LIBRARY NAMES stdcxx4 stdcxx) - if(NOT ROGUEWAVE_STDCXX_LIBRARY) - message(FATAL_ERROR "Did not find supported STL library (tried stdcxx4 and stdcxx)") - endif() - target_link_libraries(tag_c ${ROGUEWAVE_STDCXX_LIBRARY} Crun) -endif() - -set_target_properties(tag_c PROPERTIES - VERSION 0.0.0 - SOVERSION 0 - DEFINE_SYMBOL MAKE_TAGLIB_C_LIB - INSTALL_NAME_DIR ${LIB_INSTALL_DIR} -) -install(TARGETS tag_c - FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} - RUNTIME DESTINATION ${BIN_INSTALL_DIR} - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/taglib -) - -if(NOT BUILD_FRAMEWORK) - configure_file(${CMAKE_CURRENT_SOURCE_DIR}/taglib_c.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/taglib_c.pc) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/taglib_c.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -endif() - diff --git a/Frameworks/TagLib/taglib/bindings/c/tag_c.cpp b/Frameworks/TagLib/taglib/bindings/c/tag_c.cpp deleted file mode 100644 index 04c549566..000000000 --- a/Frameworks/TagLib/taglib/bindings/c/tag_c.cpp +++ /dev/null @@ -1,315 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * - * USA * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "tag_c.h" - -using namespace TagLib; - -namespace -{ - List strings; - bool unicodeStrings = true; - bool stringManagementEnabled = true; - - char *stringToCharArray(const String &s) - { - const std::string str = s.to8Bit(unicodeStrings); - -#ifdef HAVE_ISO_STRDUP - - return ::_strdup(str.c_str()); - -#else - - return ::strdup(str.c_str()); - -#endif - } - - String charArrayToString(const char *s) - { - return String(s, unicodeStrings ? String::UTF8 : String::Latin1); - } -} - -void taglib_set_strings_unicode(BOOL unicode) -{ - unicodeStrings = (unicode != 0); -} - -void taglib_set_string_management_enabled(BOOL management) -{ - stringManagementEnabled = (management != 0); -} - -void taglib_free(void* pointer) -{ - free(pointer); -} - -//////////////////////////////////////////////////////////////////////////////// -// TagLib::File wrapper -//////////////////////////////////////////////////////////////////////////////// - -TagLib_File *taglib_file_new(const char *filename) -{ - return reinterpret_cast(FileRef::create(filename)); -} - -TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type) -{ - switch(type) { - case TagLib_File_MPEG: - return reinterpret_cast(new MPEG::File(filename)); - case TagLib_File_OggVorbis: - return reinterpret_cast(new Ogg::Vorbis::File(filename)); - case TagLib_File_FLAC: - return reinterpret_cast(new FLAC::File(filename)); - case TagLib_File_MPC: - return reinterpret_cast(new MPC::File(filename)); - case TagLib_File_OggFlac: - return reinterpret_cast(new Ogg::FLAC::File(filename)); - case TagLib_File_WavPack: - return reinterpret_cast(new WavPack::File(filename)); - case TagLib_File_Speex: - return reinterpret_cast(new Ogg::Speex::File(filename)); - case TagLib_File_TrueAudio: - return reinterpret_cast(new TrueAudio::File(filename)); - case TagLib_File_MP4: - return reinterpret_cast(new MP4::File(filename)); - case TagLib_File_ASF: - return reinterpret_cast(new ASF::File(filename)); - default: - return 0; - } -} - -void taglib_file_free(TagLib_File *file) -{ - delete reinterpret_cast(file); -} - -BOOL taglib_file_is_valid(const TagLib_File *file) -{ - return reinterpret_cast(file)->isValid(); -} - -TagLib_Tag *taglib_file_tag(const TagLib_File *file) -{ - const File *f = reinterpret_cast(file); - return reinterpret_cast(f->tag()); -} - -const TagLib_AudioProperties *taglib_file_audioproperties(const TagLib_File *file) -{ - const File *f = reinterpret_cast(file); - return reinterpret_cast(f->audioProperties()); -} - -BOOL taglib_file_save(TagLib_File *file) -{ - return reinterpret_cast(file)->save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// TagLib::Tag wrapper -//////////////////////////////////////////////////////////////////////////////// - -char *taglib_tag_title(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = stringToCharArray(t->title()); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_artist(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = stringToCharArray(t->artist()); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_album(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = stringToCharArray(t->album()); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_comment(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = stringToCharArray(t->comment()); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -char *taglib_tag_genre(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - char *s = stringToCharArray(t->genre()); - if(stringManagementEnabled) - strings.append(s); - return s; -} - -unsigned int taglib_tag_year(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - return t->year(); -} - -unsigned int taglib_tag_track(const TagLib_Tag *tag) -{ - const Tag *t = reinterpret_cast(tag); - return t->track(); -} - -void taglib_tag_set_title(TagLib_Tag *tag, const char *title) -{ - Tag *t = reinterpret_cast(tag); - t->setTitle(charArrayToString(title)); -} - -void taglib_tag_set_artist(TagLib_Tag *tag, const char *artist) -{ - Tag *t = reinterpret_cast(tag); - t->setArtist(charArrayToString(artist)); -} - -void taglib_tag_set_album(TagLib_Tag *tag, const char *album) -{ - Tag *t = reinterpret_cast(tag); - t->setAlbum(charArrayToString(album)); -} - -void taglib_tag_set_comment(TagLib_Tag *tag, const char *comment) -{ - Tag *t = reinterpret_cast(tag); - t->setComment(charArrayToString(comment)); -} - -void taglib_tag_set_genre(TagLib_Tag *tag, const char *genre) -{ - Tag *t = reinterpret_cast(tag); - t->setGenre(charArrayToString(genre)); -} - -void taglib_tag_set_year(TagLib_Tag *tag, unsigned int year) -{ - Tag *t = reinterpret_cast(tag); - t->setYear(year); -} - -void taglib_tag_set_track(TagLib_Tag *tag, unsigned int track) -{ - Tag *t = reinterpret_cast(tag); - t->setTrack(track); -} - -void taglib_tag_free_strings() -{ - if(!stringManagementEnabled) - return; - - for(List::ConstIterator it = strings.begin(); it != strings.end(); ++it) - free(*it); - strings.clear(); -} - -//////////////////////////////////////////////////////////////////////////////// -// TagLib::AudioProperties wrapper -//////////////////////////////////////////////////////////////////////////////// - -int taglib_audioproperties_length(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->length(); -} - -int taglib_audioproperties_bitrate(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->bitrate(); -} - -int taglib_audioproperties_samplerate(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->sampleRate(); -} - -int taglib_audioproperties_channels(const TagLib_AudioProperties *audioProperties) -{ - const AudioProperties *p = reinterpret_cast(audioProperties); - return p->channels(); -} - -void taglib_id3v2_set_default_text_encoding(TagLib_ID3v2_Encoding encoding) -{ - String::Type type = String::Latin1; - - switch(encoding) - { - case TagLib_ID3v2_Latin1: - type = String::Latin1; - break; - case TagLib_ID3v2_UTF16: - type = String::UTF16; - break; - case TagLib_ID3v2_UTF16BE: - type = String::UTF16BE; - break; - case TagLib_ID3v2_UTF8: - type = String::UTF8; - break; - } - - ID3v2::FrameFactory::instance()->setDefaultTextEncoding(type); -} diff --git a/Frameworks/TagLib/taglib/bindings/c/tag_c.h b/Frameworks/TagLib/taglib/bindings/c/tag_c.h deleted file mode 100644 index 8d5f85ff7..000000000 --- a/Frameworks/TagLib/taglib/bindings/c/tag_c.h +++ /dev/null @@ -1,299 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * - * USA * - ***************************************************************************/ - -#ifndef TAGLIB_TAG_C -#define TAGLIB_TAG_C - -/* Do not include this in the main TagLib documentation. */ -#ifndef DO_NOT_DOCUMENT - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(TAGLIB_STATIC) -#define TAGLIB_C_EXPORT -#elif defined(_WIN32) || defined(_WIN64) -#ifdef MAKE_TAGLIB_C_LIB -#define TAGLIB_C_EXPORT __declspec(dllexport) -#else -#define TAGLIB_C_EXPORT __declspec(dllimport) -#endif -#elif defined(__GNUC__) && (__GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ >= 1) -#define TAGLIB_C_EXPORT __attribute__ ((visibility("default"))) -#else -#define TAGLIB_C_EXPORT -#endif - -#ifndef BOOL -#define BOOL int -#endif - -/******************************************************************************* - * [ TagLib C Binding ] - * - * This is an interface to TagLib's "simple" API, meaning that you can read and - * modify media files in a generic, but not specialized way. This is a rough - * representation of TagLib::File and TagLib::Tag, for which the documentation - * is somewhat more complete and worth consulting. - *******************************************************************************/ - -/* - * These are used for type provide some type safety to the C API (as opposed to - * using void *, but pointers to them are simply cast to the corresponding C++ - * types in the implementation. - */ - -typedef struct { int dummy; } TagLib_File; -typedef struct { int dummy; } TagLib_Tag; -typedef struct { int dummy; } TagLib_AudioProperties; - -/*! - * By default all strings coming into or out of TagLib's C API are in UTF8. - * However, it may be desirable for TagLib to operate on Latin1 (ISO-8859-1) - * strings in which case this should be set to FALSE. - */ -TAGLIB_C_EXPORT void taglib_set_strings_unicode(BOOL unicode); - -/*! - * TagLib can keep track of strings that are created when outputting tag values - * and clear them using taglib_tag_clear_strings(). This is enabled by default. - * However if you wish to do more fine grained management of strings, you can do - * so by setting \a management to FALSE. - */ -TAGLIB_C_EXPORT void taglib_set_string_management_enabled(BOOL management); - -/*! - * Explicitly free a string returned from TagLib - */ -TAGLIB_C_EXPORT void taglib_free(void* pointer); - -/******************************************************************************* - * File API - ******************************************************************************/ - -typedef enum { - TagLib_File_MPEG, - TagLib_File_OggVorbis, - TagLib_File_FLAC, - TagLib_File_MPC, - TagLib_File_OggFlac, - TagLib_File_WavPack, - TagLib_File_Speex, - TagLib_File_TrueAudio, - TagLib_File_MP4, - TagLib_File_ASF -} TagLib_File_Type; - -/*! - * Creates a TagLib file based on \a filename. TagLib will try to guess the file - * type. - * - * \returns NULL if the file type cannot be determined or the file cannot - * be opened. - */ -TAGLIB_C_EXPORT TagLib_File *taglib_file_new(const char *filename); - -/*! - * Creates a TagLib file based on \a filename. Rather than attempting to guess - * the type, it will use the one specified by \a type. - */ -TAGLIB_C_EXPORT TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type); - -/*! - * Frees and closes the file. - */ -TAGLIB_C_EXPORT void taglib_file_free(TagLib_File *file); - -/*! - * Returns true if the file is open and readable and valid information for - * the Tag and / or AudioProperties was found. - */ - -TAGLIB_C_EXPORT BOOL taglib_file_is_valid(const TagLib_File *file); - -/*! - * Returns a pointer to the tag associated with this file. This will be freed - * automatically when the file is freed. - */ -TAGLIB_C_EXPORT TagLib_Tag *taglib_file_tag(const TagLib_File *file); - -/*! - * Returns a pointer to the audio properties associated with this file. This - * will be freed automatically when the file is freed. - */ -TAGLIB_C_EXPORT const TagLib_AudioProperties *taglib_file_audioproperties(const TagLib_File *file); - -/*! - * Saves the \a file to disk. - */ -TAGLIB_C_EXPORT BOOL taglib_file_save(TagLib_File *file); - -/****************************************************************************** - * Tag API - ******************************************************************************/ - -/*! - * Returns a string with this tag's title. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_title(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's artist. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_artist(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's album name. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_album(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's comment. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_comment(const TagLib_Tag *tag); - -/*! - * Returns a string with this tag's genre. - * - * \note By default this string should be UTF8 encoded and its memory should be - * freed using taglib_tag_free_strings(). - */ -TAGLIB_C_EXPORT char *taglib_tag_genre(const TagLib_Tag *tag); - -/*! - * Returns the tag's year or 0 if year is not set. - */ -TAGLIB_C_EXPORT unsigned int taglib_tag_year(const TagLib_Tag *tag); - -/*! - * Returns the tag's track number or 0 if track number is not set. - */ -TAGLIB_C_EXPORT unsigned int taglib_tag_track(const TagLib_Tag *tag); - -/*! - * Sets the tag's title. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_title(TagLib_Tag *tag, const char *title); - -/*! - * Sets the tag's artist. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_artist(TagLib_Tag *tag, const char *artist); - -/*! - * Sets the tag's album. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_album(TagLib_Tag *tag, const char *album); - -/*! - * Sets the tag's comment. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_comment(TagLib_Tag *tag, const char *comment); - -/*! - * Sets the tag's genre. - * - * \note By default this string should be UTF8 encoded. - */ -TAGLIB_C_EXPORT void taglib_tag_set_genre(TagLib_Tag *tag, const char *genre); - -/*! - * Sets the tag's year. 0 indicates that this field should be cleared. - */ -TAGLIB_C_EXPORT void taglib_tag_set_year(TagLib_Tag *tag, unsigned int year); - -/*! - * Sets the tag's track number. 0 indicates that this field should be cleared. - */ -TAGLIB_C_EXPORT void taglib_tag_set_track(TagLib_Tag *tag, unsigned int track); - -/*! - * Frees all of the strings that have been created by the tag. - */ -TAGLIB_C_EXPORT void taglib_tag_free_strings(void); - -/****************************************************************************** - * Audio Properties API - ******************************************************************************/ - -/*! - * Returns the length of the file in seconds. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_length(const TagLib_AudioProperties *audioProperties); - -/*! - * Returns the bitrate of the file in kb/s. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_bitrate(const TagLib_AudioProperties *audioProperties); - -/*! - * Returns the sample rate of the file in Hz. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_samplerate(const TagLib_AudioProperties *audioProperties); - -/*! - * Returns the number of channels in the audio stream. - */ -TAGLIB_C_EXPORT int taglib_audioproperties_channels(const TagLib_AudioProperties *audioProperties); - -/******************************************************************************* - * Special convenience ID3v2 functions - *******************************************************************************/ - -typedef enum { - TagLib_ID3v2_Latin1, - TagLib_ID3v2_UTF16, - TagLib_ID3v2_UTF16BE, - TagLib_ID3v2_UTF8 -} TagLib_ID3v2_Encoding; - -/*! - * This sets the default encoding for ID3v2 frames that are written to tags. - */ - -TAGLIB_C_EXPORT void taglib_id3v2_set_default_text_encoding(TagLib_ID3v2_Encoding encoding); - -#ifdef __cplusplus -} -#endif -#endif /* DO_NOT_DOCUMENT */ -#endif diff --git a/Frameworks/TagLib/taglib/bindings/c/taglib_c.pc.cmake b/Frameworks/TagLib/taglib/bindings/c/taglib_c.pc.cmake deleted file mode 100644 index 232f4f784..000000000 --- a/Frameworks/TagLib/taglib/bindings/c/taglib_c.pc.cmake +++ /dev/null @@ -1,12 +0,0 @@ -prefix=${CMAKE_INSTALL_PREFIX} -exec_prefix=${CMAKE_INSTALL_PREFIX} -libdir=${LIB_INSTALL_DIR} -includedir=${INCLUDE_INSTALL_DIR} - - -Name: TagLib C Bindings -Description: Audio meta-data library (C bindings) -Requires: taglib -Version: ${TAGLIB_LIB_VERSION_STRING} -Libs: -L${LIB_INSTALL_DIR} -ltag_c -Cflags: -I${INCLUDE_INSTALL_DIR}/taglib diff --git a/Frameworks/TagLib/taglib/cmake/modules/FindCppUnit.cmake b/Frameworks/TagLib/taglib/cmake/modules/FindCppUnit.cmake deleted file mode 100644 index adaaeb614..000000000 --- a/Frameworks/TagLib/taglib/cmake/modules/FindCppUnit.cmake +++ /dev/null @@ -1,69 +0,0 @@ -# - Try to find the libcppunit libraries -# Once done this will define -# -# CppUnit_FOUND - system has libcppunit -# CPPUNIT_INCLUDE_DIR - the libcppunit include directory -# CPPUNIT_LIBRARIES - libcppunit library - -include (MacroEnsureVersion) - -if(NOT CPPUNIT_MIN_VERSION) - SET(CPPUNIT_MIN_VERSION 1.12.0) -endif(NOT CPPUNIT_MIN_VERSION) - -FIND_PROGRAM(CPPUNIT_CONFIG_EXECUTABLE cppunit-config ) - -IF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - # in cache already - SET(CppUnit_FOUND TRUE) - -ELSE(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - SET(CPPUNIT_INCLUDE_DIR) - SET(CPPUNIT_LIBRARIES) - - IF(CPPUNIT_CONFIG_EXECUTABLE) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_CFLAGS) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_LIBRARIES) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_INSTALLED_VERSION) - STRING(REGEX REPLACE "-I(.+)" "\\1" CPPUNIT_CFLAGS "${CPPUNIT_CFLAGS}") - ELSE(CPPUNIT_CONFIG_EXECUTABLE) - # in case win32 needs to find it the old way? - FIND_PATH(CPPUNIT_CFLAGS cppunit/TestRunner.h PATHS /usr/include /usr/local/include ) - FIND_LIBRARY(CPPUNIT_LIBRARIES NAMES cppunit PATHS /usr/lib /usr/local/lib ) - # how can we find cppunit version? - MESSAGE (STATUS "Ensure you cppunit installed version is at least ${CPPUNIT_MIN_VERSION}") - SET (CPPUNIT_INSTALLED_VERSION ${CPPUNIT_MIN_VERSION}) - ENDIF(CPPUNIT_CONFIG_EXECUTABLE) - - SET(CPPUNIT_INCLUDE_DIR ${CPPUNIT_CFLAGS} "${CPPUNIT_CFLAGS}/cppunit") - -ENDIF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - -IF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - SET(CppUnit_FOUND TRUE) - - if(NOT CppUnit_FIND_QUIETLY) - MESSAGE (STATUS "Found cppunit: ${CPPUNIT_LIBRARIES}") - endif(NOT CppUnit_FIND_QUIETLY) - - IF(CPPUNIT_CONFIG_EXECUTABLE) - EXEC_PROGRAM(${CPPUNIT_CONFIG_EXECUTABLE} ARGS --version RETURN_VALUE _return_VALUE OUTPUT_VARIABLE CPPUNIT_INSTALLED_VERSION) - ENDIF(CPPUNIT_CONFIG_EXECUTABLE) - - macro_ensure_version( ${CPPUNIT_MIN_VERSION} ${CPPUNIT_INSTALLED_VERSION} CPPUNIT_INSTALLED_VERSION_OK ) - - IF(NOT CPPUNIT_INSTALLED_VERSION_OK) - MESSAGE ("** CppUnit version is too old: found ${CPPUNIT_INSTALLED_VERSION} installed, ${CPPUNIT_MIN_VERSION} or major is required") - SET(CppUnit_FOUND FALSE) - ENDIF(NOT CPPUNIT_INSTALLED_VERSION_OK) - -ELSE(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - - SET(CppUnit_FOUND FALSE CACHE BOOL "Not found cppunit library") - -ENDIF(CPPUNIT_INCLUDE_DIR AND CPPUNIT_LIBRARIES) - -MARK_AS_ADVANCED(CPPUNIT_INCLUDE_DIR CPPUNIT_LIBRARIES) diff --git a/Frameworks/TagLib/taglib/cmake/modules/MacroEnsureVersion.cmake b/Frameworks/TagLib/taglib/cmake/modules/MacroEnsureVersion.cmake deleted file mode 100644 index c6df537a4..000000000 --- a/Frameworks/TagLib/taglib/cmake/modules/MacroEnsureVersion.cmake +++ /dev/null @@ -1,71 +0,0 @@ -# This macro compares version numbers of the form "x.y.z" -# MACRO_ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) -# will set FOO_VERSIN_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION -# where both have to be in a 3-part-version format, leading and trailing -# text is ok, e.g. -# MACRO_ENSURE_VERSION( "2.5.31" "flex 2.5.4a" VERSION_OK) -# which means 2.5.31 is required and "flex 2.5.4a" is what was found on the system - -# Copyright (c) 2006, David Faure, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -MACRO(MACRO_ENSURE_VERSION requested_version found_version var_too_old) - - # parse the parts of the version string - STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_major_vers "${requested_version}") - STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" req_minor_vers "${requested_version}") - STRING(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_patch_vers "${requested_version}") - - STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" found_major_vers "${found_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+)\\.[0-9]+.*" "\\1" found_minor_vers "${found_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" found_patch_vers "${found_version}") - - # compute an overall version number which can be compared at once - MATH(EXPR req_vers_num "${req_major_vers}*10000 + ${req_minor_vers}*100 + ${req_patch_vers}") - MATH(EXPR found_vers_num "${found_major_vers}*10000 + ${found_minor_vers}*100 + ${found_patch_vers}") - - if (found_vers_num LESS req_vers_num) - set( ${var_too_old} FALSE ) - else (found_vers_num LESS req_vers_num) - set( ${var_too_old} TRUE ) - endif (found_vers_num LESS req_vers_num) - -ENDMACRO(MACRO_ENSURE_VERSION) - - -# This macro compares version numbers of the form "x.y" -# MACRO_ENSURE_VERSION( FOO_MIN_VERSION FOO_VERSION_FOUND FOO_VERSION_OK) -# will set FOO_VERSIN_OK to true if FOO_VERSION_FOUND >= FOO_MIN_VERSION -# where both have to be in a 2-part-version format, leading and trailing -# text is ok, e.g. -# MACRO_ENSURE_VERSION( "0.5" "foo 0.6" VERSION_OK) -# which means 0.5 is required and "foo 0.6" is what was found on the system - -# Copyright (c) 2006, David Faure, -# Copyright (c) 2007, Pino Toscano, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -MACRO(MACRO_ENSURE_VERSION2 requested_version found_version var_too_old) - - # parse the parts of the version string - STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+" "\\1" req_major_vers "${requested_version}") - STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)" "\\1" req_minor_vers "${requested_version}") - - STRING(REGEX REPLACE "[^0-9]*([0-9]+)\\.[0-9]+.*" "\\1" found_major_vers "${found_version}") - STRING(REGEX REPLACE "[^0-9]*[0-9]+\\.([0-9]+).*" "\\1" found_minor_vers "${found_version}") - - # compute an overall version number which can be compared at once - MATH(EXPR req_vers_num "${req_major_vers}*100 + ${req_minor_vers}") - MATH(EXPR found_vers_num "${found_major_vers}*100 + ${found_minor_vers}") - - if (found_vers_num LESS req_vers_num) - set( ${var_too_old} FALSE ) - else (found_vers_num LESS req_vers_num) - set( ${var_too_old} TRUE ) - endif (found_vers_num LESS req_vers_num) - -ENDMACRO(MACRO_ENSURE_VERSION2) diff --git a/Frameworks/TagLib/taglib/cmake_uninstall.cmake.in b/Frameworks/TagLib/taglib/cmake_uninstall.cmake.in deleted file mode 100644 index 72e030fb3..000000000 --- a/Frameworks/TagLib/taglib/cmake_uninstall.cmake.in +++ /dev/null @@ -1,21 +0,0 @@ -if (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") -endif() - -file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) -string(REGEX REPLACE "\n" ";" files "${files}") -foreach (file ${files}) - message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") - if (EXISTS "$ENV{DESTDIR}${file}") - execute_process( - COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}" - OUTPUT_VARIABLE rm_out - RESULT_VARIABLE rm_retval - ) - if(NOT ${rm_retval} EQUAL 0) - message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") - endif () - else () - message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") - endif () -endforeach() diff --git a/Frameworks/TagLib/taglib/config.h b/Frameworks/TagLib/taglib/config.h deleted file mode 100644 index fa812887f..000000000 --- a/Frameworks/TagLib/taglib/config.h +++ /dev/null @@ -1,34 +0,0 @@ -/* config.h. Generated by cmake from config.h.cmake */ - -#ifndef TAGLIB_CONFIG_H -#define TAGLIB_CONFIG_H - -/* Defined if your compiler supports some byte swap functions */ -#define HAVE_GCC_BYTESWAP 1 -/* #undef HAVE_GLIBC_BYTESWAP */ -/* #undef HAVE_MSC_BYTESWAP */ -/* #undef HAVE_MAC_BYTESWAP */ -/* #undef HAVE_OPENBSD_BYTESWAP */ - -/* Defined if your compiler supports some atomic operations */ -#define HAVE_GCC_ATOMIC 1 -/* #undef HAVE_MAC_ATOMIC */ -/* #undef HAVE_WIN_ATOMIC */ -/* #undef HAVE_IA64_ATOMIC */ - -/* Defined if your compiler supports some safer version of vsprintf */ -#define HAVE_VSNPRINTF 1 -/* #undef HAVE_VSPRINTF_S */ - -/* Defined if your compiler supports ISO _strdup */ -/* #undef HAVE_ISO_STRDUP */ - -/* Defined if zlib is installed */ -#define HAVE_ZLIB 1 - -/* Indicates whether debug messages are shown even in release mode */ -/* #undef TRACE_IN_RELEASE */ - -#define TESTS_DIR "/Users/nevack/work/taglib/tests/" - -#endif diff --git a/Frameworks/TagLib/taglib/config.h.cmake b/Frameworks/TagLib/taglib/config.h.cmake deleted file mode 100644 index 8d8c36abd..000000000 --- a/Frameworks/TagLib/taglib/config.h.cmake +++ /dev/null @@ -1,34 +0,0 @@ -/* config.h. Generated by cmake from config.h.cmake */ - -#ifndef TAGLIB_CONFIG_H -#define TAGLIB_CONFIG_H - -/* Defined if your compiler supports some byte swap functions */ -#cmakedefine HAVE_GCC_BYTESWAP 1 -#cmakedefine HAVE_GLIBC_BYTESWAP 1 -#cmakedefine HAVE_MSC_BYTESWAP 1 -#cmakedefine HAVE_MAC_BYTESWAP 1 -#cmakedefine HAVE_OPENBSD_BYTESWAP 1 - -/* Defined if your compiler supports some atomic operations */ -#cmakedefine HAVE_GCC_ATOMIC 1 -#cmakedefine HAVE_MAC_ATOMIC 1 -#cmakedefine HAVE_WIN_ATOMIC 1 -#cmakedefine HAVE_IA64_ATOMIC 1 - -/* Defined if your compiler supports some safer version of vsprintf */ -#cmakedefine HAVE_VSNPRINTF 1 -#cmakedefine HAVE_VSPRINTF_S 1 - -/* Defined if your compiler supports ISO _strdup */ -#cmakedefine HAVE_ISO_STRDUP 1 - -/* Defined if zlib is installed */ -#cmakedefine HAVE_ZLIB 1 - -/* Indicates whether debug messages are shown even in release mode */ -#cmakedefine TRACE_IN_RELEASE 1 - -#cmakedefine TESTS_DIR "@TESTS_DIR@" - -#endif diff --git a/Frameworks/TagLib/taglib/doc/README b/Frameworks/TagLib/taglib/doc/README deleted file mode 100644 index b2ebd36d6..000000000 --- a/Frameworks/TagLib/taglib/doc/README +++ /dev/null @@ -1 +0,0 @@ -Run "make docs" in the parent directory to generate the TagLib API documentation. diff --git a/Frameworks/TagLib/taglib/doc/api-footer.html b/Frameworks/TagLib/taglib/doc/api-footer.html deleted file mode 100644 index 9b151ee89..000000000 --- a/Frameworks/TagLib/taglib/doc/api-footer.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Frameworks/TagLib/taglib/doc/api-header.html b/Frameworks/TagLib/taglib/doc/api-header.html deleted file mode 100644 index ab133c258..000000000 --- a/Frameworks/TagLib/taglib/doc/api-header.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - $title ($projectname) - - - - - -
- - - - - - -
- - -
- - - - - -

TagLib $projectnumber ($title)

- -
-
-
- -
diff --git a/Frameworks/TagLib/taglib/doc/taglib-api.css b/Frameworks/TagLib/taglib/doc/taglib-api.css deleted file mode 100644 index 3fa820e25..000000000 --- a/Frameworks/TagLib/taglib/doc/taglib-api.css +++ /dev/null @@ -1,395 +0,0 @@ -body { - font-family: sans-serif; - background: white; - color: black; - margin: 0px; - padding: 15px; -} - -a:link { - font-weight: bold; - text-decoration: none; - color: gray; -} - -a:visited { - font-weight: bold; - text-decoration: none; - color: gray; -} - -a:hover { - color: #cccccc; - text-decoration: underline; -} - -a:active { - color: #cccccc; - text-decoration: underline; -} - -img { - border-style: none; -} - -h1 { - font-family: sans-serif; -} - -h2 { - font-family: sans-serif; -} - -h3 { - font-family: sans-serif; -} - -/* container */ - -#container { - position: absolute; - border-width: thin; - border-style: solid; - width: 95%; -} - -/* intro */ - -#intro { - padding: 5px; - margin: 0px; - background: #cccccc; - border-width: medium; - border-style: solid; -} - -#intro h1 { - margin: 5px; - padding: 5px; -} - -/* links */ - -#links { - font-size: x-small; - vertical-align: bottom; -} - -#links a { - border-width: thin; - border-style: dotted; - border-color: white; - /* margin: 0px 10px 0px 0px; */ - margin: 1px; - padding: 3px; - line-height: 230% -} - -#links a:hover { - color: black; - text-decoration: underline; -} - -#links h3 { - outline-width: thin; - border-style: solid; - padding: 2px; - margin: 3px 0px 3px 0px; -} - -/* menu */ - -#menu h3 { - text-align: center; -} - -/* text */ - -#text { - margin: 0px; - padding: 5px 5px 0px 5px; - float: left; -} - -#text h3 { - border-width: thin; - border-style: solid; - padding: 2px; - margin: 3px 0px 3px 0px; -} - -#text li { - margin: 0px 0px 10px 0px; -} - -#text ul { - margin: 5px; - padding: 0px 0px 0px 20px; -} - -#leftcolumn { - float: left; - width: 300px; - margin: 0px 10px 0px 0px; - padding: 0px; -} - -#rightcolumn { - float: right; - width: 210px; - margin: 0px; - padding: 0px; -} - -/* vspacer */ - -.vspacer { - height: 10px; -} - -.silver { - border-width: thin; - border-color: black; - border-style: solid; - background: #cccccc; -} - -a.code { - text-decoration: none; - font-weight: normal; - color: #4444ee -} - -a.codeRef { - font-weight: normal; - color: #4444ee -} - -div.fragment { - width: 98%; - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - padding-left: 4px; - margin: 4px; -} - -div.ah { - background-color: black; - font-weight: bold; color: #ffffff; - margin-bottom: 3px; - margin-top: 3px -} - -#text td { - width: auto; -} - -div.memdoc { - margin-top: 0px; - margin-bottom: 20px; - padding: 10px 10px 10px 40px; -} - -div.memproto { - border: thin solid black; - background-color: #f2f2ff; - width: 100%; - margin-top: 20px; - padding-top: 10px; - padding-bottom: 10px; -} - -td.paramtype { - color: #602020; -} - -table.memname { - font-weight: bold; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold -} - -div.groupText { - margin-left: 16px; - font-style: italic; - font-size: smaller -} - -body { - background: white; - color: black; - margin-right: 20px; - margin-left: 20px; -} - -td.indexkey { - background-color: #eeeeff; - font-weight: bold; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} - -td.indexvalue { - background-color: #eeeeff; - font-style: italic; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} - -tr.memlist { - background-color: #f0f0f0; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -.mdTable { - border: 1px solid #868686; - background-color: #f2f2ff; -} - -.mdRow { - padding: 8px 20px; -} - -.mdescLeft { - font-size: smaller; - font-family: Arial, Helvetica, sans-serif; - background-color: #FAFAFA; - padding-left: 8px; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} - -.mdescRight { - font-size: smaller; - font-family: Arial, Helvetica, sans-serif; - font-style: italic; - background-color: #FAFAFA; - padding-left: 4px; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; - padding-bottom: 0px; - padding-right: 8px; -} - -.memItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-style: solid; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-family: Geneva, Arial, Helvetica, sans-serif; - font-size: 12px; -} - -.memItemRight { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-style: solid; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-family: Geneva, Arial, Helvetica, sans-serif; - font-size: 13px; -} - -.search { - color: #0000ee; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #eeeeff; -} - -td.tiny { - font-size: 75%; -} diff --git a/Frameworks/TagLib/taglib/doc/taglib.png b/Frameworks/TagLib/taglib/doc/taglib.png deleted file mode 100644 index 2791cc887670ef22450bb7f35686912c8ebf1af3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2748 zcmeHJ`!^Ge8(;2WY-L&`>?<+KB}AdomW>SC3yDgZEawX$K{m4<5!+inxP@llC zU1rZ5-~s?5U5@7osNJD|;vWb8e;w%B$_m}xeu<33;sJX^M8(7#3n_E~Stj{7*=WNgz zTf6i2SO-TZ9G>8O!PU*(<0A1A>9Uu%kFTG9Kwwbtm8&74Vd0TcH=-#wV`6{16&FuU zNK8sjrKhFe&iMTfBQq;ICpYhI{=LGY;*!$)56W2O6_r&FA63^puC1$o^0c9`srgw; zYg_wsc1LGd_a8mIFZ%iiUJkx~!{H7Mza4r1;UjNs{NEFwCa0!nX6NQVFDx!Ce_2^w z`}SQR{IULXb8GuoK}4+#03eZ#L0S=R@K%a8TnN62-U#cQ zxshDVk#FbxU`Lz@(~J1&+eu_Ot!Zb!u*!iy;VrIT89^4V-MpyV4f}5Z6)S#xz44_nH)ZwLEX1m@h{jx#s^%-I12Uo{L;lYU>S6TgGhdGB z-86#$!MWVF=DePxCFXUv3MhxFgQId@QM>wAZS7>TD&n;AB}hM;sMl-S_gyQtOMwwaMxEZ(SGTen$NAH(Dr;;wTMLm2rm%dEFDtTox@-@yo_8=#PTFHV7~^?_z$R zxYn}=x)!a^d?VBXN`@a&+4V)@HnEI?SU4HG803Max{73rO=A^u6V+|LA$#@%CB=*IUN&JV>%TnPaWua;K8=X) zpSvd-Td5$wDKjt8&kuf+pJ>TL+qB&R?R2y>PS1{tx#f1xCAyl)A(-a{^sG4}pTUpl ztg3d6gXi+mVt)PemeH1eoYGiIzLX?oAlxv0CO2Tt2$3mtQ6CBPvdnoJ@5=iiQW;6p zc>9sOuYQ&Ylk4RZvdLE0c#sqmBw7x|aAJkrfxun-y0rEm@2t7Il^velx+l*`Qw)L2 z)`j*t2l*aEy9oZ)V-~)2jw||+ifBAL3^{cV3xm5QqFn!1=#fWOGe<@0y>#7aOb9Jd z!s*C3e4j~aj#e^~#w3Az7ur%2)4Wbpj*fhVUN6Wxbu4;*IfD{0% zQoa$@Udr-hi3Y79kklmJ=+Y4wsH+lFP@NgTzB48X%f#J#Nl6_S`s?6_dSO6N;J+5P zu^UPj*dEX5-;B6#=a%-SM}qHPr}dZ-ykfMyaF`YuAyW>Vm7?dh$lnh8;Nq`WWR{&b zBBsfxt^F7=KRqz~+RzDK#!s)vj zsatPb7)ztssHyH0VO`s+bIM6K6o8->F0jXseoN3oW9__3hbWIj{JeF=U4}s5lSVi# zw#t+TqrY&FE*YfDoD}>?lf~0)V&KF4hJpzmTg#Ul{||Qvj_p^UPjnwVWj4Ru^F)Xv zLGjvWoABrk%7>zpsxf$<+mDnCq9BWrcdZYyA%PApFWC2Z%3WSOK?QL$I3(B|F3WH? z4WfZQyeVn5U4GqoK{c)PD!)VUOcm3K|6JJ^PhZK+@oaI_KdM+%MOa|b23AVKQInP^ zYGNnIs!l>mJ>D7==NK<_P6bJ}Z}6~cAe#><8Q*GOw&NI@heJfQF$9%LP_DFP-r zcOWM=?B30%IXuiaEYmisp4m}nFn(~G&yB}u3|IbQ*v^zb9NK<*e+SU)oHl8-*H!25p8|uzA|G3m GsDA+=UdN#T diff --git a/Frameworks/TagLib/taglib/examples/CMakeLists.txt b/Frameworks/TagLib/taglib/examples/CMakeLists.txt deleted file mode 100644 index f991739dc..000000000 --- a/Frameworks/TagLib/taglib/examples/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ape - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v1 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/../bindings/c/ -) - -if(NOT BUILD_SHARED_LIBS) - add_definitions(-DTAGLIB_STATIC) -endif() - -########### next target ############### - -add_executable(tagreader tagreader.cpp) -target_link_libraries(tagreader tag) - -########### next target ############### - -add_executable(tagreader_c tagreader_c.c) -target_link_libraries(tagreader_c tag_c) - -########### next target ############### - -add_executable(tagwriter tagwriter.cpp) -target_link_libraries(tagwriter tag) - -########### next target ############### - -add_executable(framelist framelist.cpp) -target_link_libraries(framelist tag) - -########### next target ############### - -add_executable(strip-id3v1 strip-id3v1.cpp) -target_link_libraries(strip-id3v1 tag) - diff --git a/Frameworks/TagLib/taglib/examples/framelist.cpp b/Frameworks/TagLib/taglib/examples/framelist.cpp deleted file mode 100644 index 44914cc96..000000000 --- a/Frameworks/TagLib/taglib/examples/framelist.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -#include - -#include - -#include -#include -#include -#include - -#include - -#include - -using namespace std; -using namespace TagLib; - -int main(int argc, char *argv[]) -{ - // process the command line args - - - for(int i = 1; i < argc; i++) { - - cout << "******************** \"" << argv[i] << "\"********************" << endl; - - MPEG::File f(argv[i]); - - ID3v2::Tag *id3v2tag = f.ID3v2Tag(); - - if(id3v2tag) { - - cout << "ID3v2." - << id3v2tag->header()->majorVersion() - << "." - << id3v2tag->header()->revisionNumber() - << ", " - << id3v2tag->header()->tagSize() - << " bytes in tag" - << endl; - - ID3v2::FrameList::ConstIterator it = id3v2tag->frameList().begin(); - for(; it != id3v2tag->frameList().end(); it++) { - cout << (*it)->frameID(); - - if(ID3v2::CommentsFrame *comment = dynamic_cast(*it)) - if(!comment->description().isEmpty()) - cout << " [" << comment->description() << "]"; - - cout << " - \"" << (*it)->toString() << "\"" << endl; - } - } - else - cout << "file does not have a valid id3v2 tag" << endl; - - cout << endl << "ID3v1" << endl; - - ID3v1::Tag *id3v1tag = f.ID3v1Tag(); - - if(id3v1tag) { - cout << "title - \"" << id3v1tag->title() << "\"" << endl; - cout << "artist - \"" << id3v1tag->artist() << "\"" << endl; - cout << "album - \"" << id3v1tag->album() << "\"" << endl; - cout << "year - \"" << id3v1tag->year() << "\"" << endl; - cout << "comment - \"" << id3v1tag->comment() << "\"" << endl; - cout << "track - \"" << id3v1tag->track() << "\"" << endl; - cout << "genre - \"" << id3v1tag->genre() << "\"" << endl; - } - else - cout << "file does not have a valid id3v1 tag" << endl; - - APE::Tag *ape = f.APETag(); - - cout << endl << "APE" << endl; - - if(ape) { - for(APE::ItemListMap::ConstIterator it = ape->itemListMap().begin(); - it != ape->itemListMap().end(); ++it) - { - if((*it).second.type() != APE::Item::Binary) - cout << (*it).first << " - \"" << (*it).second.toString() << "\"" << endl; - else - cout << (*it).first << " - Binary data (" << (*it).second.binaryData().size() << " bytes)" << endl; - } - } - else - cout << "file does not have a valid APE tag" << endl; - - cout << endl; - } -} diff --git a/Frameworks/TagLib/taglib/examples/strip-id3v1.cpp b/Frameworks/TagLib/taglib/examples/strip-id3v1.cpp deleted file mode 100644 index ab36d7117..000000000 --- a/Frameworks/TagLib/taglib/examples/strip-id3v1.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include - -using namespace TagLib; - -int main(int argc, char *argv[]) -{ - for(int i = 1; i < argc; i++) { - - std::cout << "******************** Stripping ID3v1 Tag From: \"" << argv[i] << "\"********************" << std::endl; - - MPEG::File f(argv[i]); - f.strip(MPEG::File::ID3v1); - } -} diff --git a/Frameworks/TagLib/taglib/examples/tagreader.cpp b/Frameworks/TagLib/taglib/examples/tagreader.cpp deleted file mode 100644 index ac81be628..000000000 --- a/Frameworks/TagLib/taglib/examples/tagreader.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include - -#include -#include -#include - -using namespace std; - -int main(int argc, char *argv[]) -{ - for(int i = 1; i < argc; i++) { - - cout << "******************** \"" << argv[i] << "\" ********************" << endl; - - TagLib::FileRef f(argv[i]); - - if(!f.isNull() && f.tag()) { - - TagLib::Tag *tag = f.tag(); - - cout << "-- TAG (basic) --" << endl; - cout << "title - \"" << tag->title() << "\"" << endl; - cout << "artist - \"" << tag->artist() << "\"" << endl; - cout << "album - \"" << tag->album() << "\"" << endl; - cout << "year - \"" << tag->year() << "\"" << endl; - cout << "comment - \"" << tag->comment() << "\"" << endl; - cout << "track - \"" << tag->track() << "\"" << endl; - cout << "genre - \"" << tag->genre() << "\"" << endl; - - TagLib::PropertyMap tags = f.file()->properties(); - - unsigned int longest = 0; - for(TagLib::PropertyMap::ConstIterator i = tags.begin(); i != tags.end(); ++i) { - if (i->first.size() > longest) { - longest = i->first.size(); - } - } - - cout << "-- TAG (properties) --" << endl; - for(TagLib::PropertyMap::ConstIterator i = tags.begin(); i != tags.end(); ++i) { - for(TagLib::StringList::ConstIterator j = i->second.begin(); j != i->second.end(); ++j) { - cout << left << std::setw(longest) << i->first << " - " << '"' << *j << '"' << endl; - } - } - - } - - if(!f.isNull() && f.audioProperties()) { - - TagLib::AudioProperties *properties = f.audioProperties(); - - int seconds = properties->length() % 60; - int minutes = (properties->length() - seconds) / 60; - - cout << "-- AUDIO --" << endl; - cout << "bitrate - " << properties->bitrate() << endl; - cout << "sample rate - " << properties->sampleRate() << endl; - cout << "channels - " << properties->channels() << endl; - cout << "length - " << minutes << ":" << setfill('0') << setw(2) << seconds << endl; - } - } - return 0; -} diff --git a/Frameworks/TagLib/taglib/examples/tagreader_c.c b/Frameworks/TagLib/taglib/examples/tagreader_c.c deleted file mode 100644 index 043699264..000000000 --- a/Frameworks/TagLib/taglib/examples/tagreader_c.c +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (C) 2003 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include - -#ifndef FALSE -#define FALSE 0 -#endif - -int main(int argc, char *argv[]) -{ - int i; - int seconds; - int minutes; - TagLib_File *file; - TagLib_Tag *tag; - const TagLib_AudioProperties *properties; - - taglib_set_strings_unicode(FALSE); - - for(i = 1; i < argc; i++) { - printf("******************** \"%s\" ********************\n", argv[i]); - - file = taglib_file_new(argv[i]); - - if(file == NULL) - break; - - tag = taglib_file_tag(file); - properties = taglib_file_audioproperties(file); - - if(tag != NULL) { - printf("-- TAG --\n"); - printf("title - \"%s\"\n", taglib_tag_title(tag)); - printf("artist - \"%s\"\n", taglib_tag_artist(tag)); - printf("album - \"%s\"\n", taglib_tag_album(tag)); - printf("year - \"%i\"\n", taglib_tag_year(tag)); - printf("comment - \"%s\"\n", taglib_tag_comment(tag)); - printf("track - \"%i\"\n", taglib_tag_track(tag)); - printf("genre - \"%s\"\n", taglib_tag_genre(tag)); - } - - if(properties != NULL) { - seconds = taglib_audioproperties_length(properties) % 60; - minutes = (taglib_audioproperties_length(properties) - seconds) / 60; - - printf("-- AUDIO --\n"); - printf("bitrate - %i\n", taglib_audioproperties_bitrate(properties)); - printf("sample rate - %i\n", taglib_audioproperties_samplerate(properties)); - printf("channels - %i\n", taglib_audioproperties_channels(properties)); - printf("length - %i:%02i\n", minutes, seconds); - } - - taglib_tag_free_strings(); - taglib_file_free(file); - } - - return 0; -} diff --git a/Frameworks/TagLib/taglib/examples/tagwriter.cpp b/Frameworks/TagLib/taglib/examples/tagwriter.cpp deleted file mode 100644 index ed8b0d7ab..000000000 --- a/Frameworks/TagLib/taglib/examples/tagwriter.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* Copyright (C) 2004 Scott Wheeler - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -using namespace std; - -bool isArgument(const char *s) -{ - return strlen(s) == 2 && s[0] == '-'; -} - -bool isFile(const char *s) -{ - struct stat st; -#ifdef _WIN32 - return ::stat(s, &st) == 0 && (st.st_mode & (S_IFREG)); -#else - return ::stat(s, &st) == 0 && (st.st_mode & (S_IFREG | S_IFLNK)); -#endif -} - -void usage() -{ - cout << endl; - cout << "Usage: tagwriter " << endl; - cout << endl; - cout << "Where the valid fields are:" << endl; - cout << " -t " << endl; - cout << " -a <artist>" << endl; - cout << " -A <album>" << endl; - cout << " -c <comment>" << endl; - cout << " -g <genre>" << endl; - cout << " -y <year>" << endl; - cout << " -T <track>" << endl; - cout << " -R <tagname> <tagvalue>" << endl; - cout << " -I <tagname> <tagvalue>" << endl; - cout << " -D <tagname>" << endl; - cout << endl; - - exit(1); -} - -void checkForRejectedProperties(const TagLib::PropertyMap &tags) -{ // stolen from tagreader.cpp - if(tags.size() > 0) { - unsigned int longest = 0; - for(TagLib::PropertyMap::ConstIterator i = tags.begin(); i != tags.end(); ++i) { - if(i->first.size() > longest) { - longest = i->first.size(); - } - } - cout << "-- rejected TAGs (properties) --" << endl; - for(TagLib::PropertyMap::ConstIterator i = tags.begin(); i != tags.end(); ++i) { - for(TagLib::StringList::ConstIterator j = i->second.begin(); j != i->second.end(); ++j) { - cout << left << std::setw(longest) << i->first << " - " << '"' << *j << '"' << endl; - } - } - } -} - -int main(int argc, char *argv[]) -{ - TagLib::List<TagLib::FileRef> fileList; - - while(argc > 0 && isFile(argv[argc - 1])) { - - TagLib::FileRef f(argv[argc - 1]); - - if(!f.isNull() && f.tag()) - fileList.append(f); - - argc--; - } - - if(fileList.isEmpty()) - usage(); - - for(int i = 1; i < argc - 1; i += 2) { - - if(isArgument(argv[i]) && i + 1 < argc && !isArgument(argv[i + 1])) { - - char field = argv[i][1]; - TagLib::String value = argv[i + 1]; - - TagLib::List<TagLib::FileRef>::ConstIterator it; - for(it = fileList.begin(); it != fileList.end(); ++it) { - - TagLib::Tag *t = (*it).tag(); - - switch (field) { - case 't': - t->setTitle(value); - break; - case 'a': - t->setArtist(value); - break; - case 'A': - t->setAlbum(value); - break; - case 'c': - t->setComment(value); - break; - case 'g': - t->setGenre(value); - break; - case 'y': - t->setYear(value.toInt()); - break; - case 'T': - t->setTrack(value.toInt()); - break; - case 'R': - case 'I': - if(i + 2 < argc) { - TagLib::PropertyMap map = (*it).file()->properties (); - if(field == 'R') { - map.replace(value, TagLib::String(argv[i + 2])); - } - else { - map.insert(value, TagLib::String(argv[i + 2])); - } - ++i; - checkForRejectedProperties((*it).file()->setProperties(map)); - } - else { - usage(); - } - break; - case 'D': { - TagLib::PropertyMap map = (*it).file()->properties(); - map.erase(value); - checkForRejectedProperties((*it).file()->setProperties(map)); - break; - } - default: - usage(); - break; - } - } - } - else - usage(); - } - - TagLib::List<TagLib::FileRef>::ConstIterator it; - for(it = fileList.begin(); it != fileList.end(); ++it) - (*it).file()->save(); - - return 0; -} diff --git a/Frameworks/TagLib/taglib/taglib-config.cmake b/Frameworks/TagLib/taglib/taglib-config.cmake deleted file mode 100644 index d500fe606..000000000 --- a/Frameworks/TagLib/taglib/taglib-config.cmake +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh - -usage() -{ - echo "usage: $0 [OPTIONS]" -cat << EOH - -options: - [--libs] - [--cflags] - [--version] - [--prefix] -EOH - exit 1; -} - -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_INSTALL_DIR@ -includedir=@INCLUDE_INSTALL_DIR@ - -flags="" - -if test $# -eq 0 ; then - usage -fi - -while test $# -gt 0 -do - case $1 in - --libs) - flags="$flags -L$libdir -ltag @ZLIB_LIBRARIES_FLAGS@" - ;; - --cflags) - flags="$flags -I$includedir -I$includedir/taglib" - ;; - --version) - echo @TAGLIB_LIB_VERSION_STRING@ - ;; - --prefix) - echo $prefix - ;; - *) - echo "$0: unknown option $1" - echo - usage - ;; - esac - shift -done - -if test -n "$flags" -then - echo $flags -fi diff --git a/Frameworks/TagLib/taglib/taglib-config.cmd.cmake b/Frameworks/TagLib/taglib/taglib-config.cmd.cmake deleted file mode 100644 index 1b807ec85..000000000 --- a/Frameworks/TagLib/taglib/taglib-config.cmd.cmake +++ /dev/null @@ -1,36 +0,0 @@ -@echo off -goto beginning - * - * It is what it is, you can do with it as you please. - * - * Just don't blame me if it teaches your computer to smoke! - * - * -Enjoy - * fh :)_~ - * -:beginning -if /i "%1#" == "--libs#" goto doit -if /i "%1#" == "--cflags#" goto doit -if /i "%1#" == "--version#" goto doit -if /i "%1#" == "--prefix#" goto doit - -echo "usage: %0 [OPTIONS]" -echo [--libs] -echo [--cflags] -echo [--version] -echo [--prefix] -goto theend - - * - * NOTE: Windows does not assume libraries are prefixed with 'lib'. - * NOTE: If '-llibtag' is the last element, it is easily appended in the users installation/makefile process - * to allow for static, shared or debug builds. - * It would be preferable if the top level CMakeLists.txt provided the library name during config. ?? -:doit -if /i "%1#" == "--libs#" echo -L${LIB_INSTALL_DIR} -llibtag -if /i "%1#" == "--cflags#" echo -I${INCLUDE_INSTALL_DIR} -I${INCLUDE_INSTALL_DIR}/taglib -if /i "%1#" == "--version#" echo ${TAGLIB_LIB_VERSION_STRING} -if /i "%1#" == "--prefix#" echo ${CMAKE_INSTALL_PREFIX} - -:theend - diff --git a/Frameworks/TagLib/taglib/taglib.pc.cmake b/Frameworks/TagLib/taglib/taglib.pc.cmake deleted file mode 100644 index 71ee09af1..000000000 --- a/Frameworks/TagLib/taglib/taglib.pc.cmake +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_INSTALL_DIR@ -includedir=@INCLUDE_INSTALL_DIR@ - -Name: TagLib -Description: Audio meta-data library -Requires: -Version: @TAGLIB_LIB_VERSION_STRING@ -Libs: -L${libdir} -ltag @ZLIB_LIBRARIES_FLAGS@ -Cflags: -I${includedir} -I${includedir}/taglib diff --git a/Frameworks/TagLib/taglib/taglib/CMakeLists.txt b/Frameworks/TagLib/taglib/taglib/CMakeLists.txt deleted file mode 100644 index 563583efa..000000000 --- a/Frameworks/TagLib/taglib/taglib/CMakeLists.txt +++ /dev/null @@ -1,372 +0,0 @@ -set(CMAKE_INCLUDE_CURRENT_DIR ON) -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/asf - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/flac - ${CMAKE_CURRENT_SOURCE_DIR}/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/opus - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v1 - ${CMAKE_CURRENT_SOURCE_DIR}/ape - ${CMAKE_CURRENT_SOURCE_DIR}/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/trueaudio - ${CMAKE_CURRENT_SOURCE_DIR}/riff - ${CMAKE_CURRENT_SOURCE_DIR}/riff/aiff - ${CMAKE_CURRENT_SOURCE_DIR}/riff/wav - ${CMAKE_CURRENT_SOURCE_DIR}/mod - ${CMAKE_CURRENT_SOURCE_DIR}/s3m - ${CMAKE_CURRENT_SOURCE_DIR}/it - ${CMAKE_CURRENT_SOURCE_DIR}/xm - ${taglib_SOURCE_DIR}/3rdparty -) - -if(ZLIB_FOUND) - include_directories(${ZLIB_INCLUDE_DIR}) -elseif(HAVE_ZLIB_SOURCE) - include_directories(${ZLIB_SOURCE}) -endif() - -set(tag_HDRS - tag.h - fileref.h - audioproperties.h - taglib_export.h - ${CMAKE_CURRENT_BINARY_DIR}/../taglib_config.h - toolkit/taglib.h - toolkit/tstring.h - toolkit/tlist.h - toolkit/tlist.tcc - toolkit/tstringlist.h - toolkit/tbytevector.h - toolkit/tbytevectorlist.h - toolkit/tbytevectorstream.h - toolkit/tiostream.h - toolkit/tfile.h - toolkit/tfilestream.h - toolkit/tmap.h - toolkit/tmap.tcc - toolkit/tpropertymap.h - toolkit/trefcounter.h - toolkit/tdebuglistener.h - mpeg/mpegfile.h - mpeg/mpegproperties.h - mpeg/mpegheader.h - mpeg/xingheader.h - mpeg/id3v1/id3v1tag.h - mpeg/id3v1/id3v1genres.h - mpeg/id3v2/id3v2.h - mpeg/id3v2/id3v2extendedheader.h - mpeg/id3v2/id3v2frame.h - mpeg/id3v2/id3v2header.h - mpeg/id3v2/id3v2synchdata.h - mpeg/id3v2/id3v2footer.h - mpeg/id3v2/id3v2framefactory.h - mpeg/id3v2/id3v2tag.h - mpeg/id3v2/frames/attachedpictureframe.h - mpeg/id3v2/frames/commentsframe.h - mpeg/id3v2/frames/eventtimingcodesframe.h - mpeg/id3v2/frames/generalencapsulatedobjectframe.h - mpeg/id3v2/frames/ownershipframe.h - mpeg/id3v2/frames/popularimeterframe.h - mpeg/id3v2/frames/privateframe.h - mpeg/id3v2/frames/relativevolumeframe.h - mpeg/id3v2/frames/synchronizedlyricsframe.h - mpeg/id3v2/frames/textidentificationframe.h - mpeg/id3v2/frames/uniquefileidentifierframe.h - mpeg/id3v2/frames/unknownframe.h - mpeg/id3v2/frames/unsynchronizedlyricsframe.h - mpeg/id3v2/frames/urllinkframe.h - mpeg/id3v2/frames/chapterframe.h - mpeg/id3v2/frames/tableofcontentsframe.h - mpeg/id3v2/frames/podcastframe.h - ogg/oggfile.h - ogg/oggpage.h - ogg/oggpageheader.h - ogg/xiphcomment.h - ogg/vorbis/vorbisfile.h - ogg/vorbis/vorbisproperties.h - ogg/flac/oggflacfile.h - ogg/speex/speexfile.h - ogg/speex/speexproperties.h - ogg/opus/opusfile.h - ogg/opus/opusproperties.h - flac/flacfile.h - flac/flacpicture.h - flac/flacproperties.h - flac/flacmetadatablock.h - ape/apefile.h - ape/apeproperties.h - ape/apetag.h - ape/apefooter.h - ape/apeitem.h - mpc/mpcfile.h - mpc/mpcproperties.h - wavpack/wavpackfile.h - wavpack/wavpackproperties.h - trueaudio/trueaudiofile.h - trueaudio/trueaudioproperties.h - riff/rifffile.h - riff/aiff/aifffile.h - riff/aiff/aiffproperties.h - riff/wav/wavfile.h - riff/wav/wavproperties.h - riff/wav/infotag.h - asf/asffile.h - asf/asfproperties.h - asf/asftag.h - asf/asfattribute.h - asf/asfpicture.h - mp4/mp4file.h - mp4/mp4atom.h - mp4/mp4tag.h - mp4/mp4item.h - mp4/mp4properties.h - mp4/mp4coverart.h - mod/modfilebase.h - mod/modfile.h - mod/modtag.h - mod/modproperties.h - it/itfile.h - it/itproperties.h - s3m/s3mfile.h - s3m/s3mproperties.h - xm/xmfile.h - xm/xmproperties.h -) - -set(mpeg_SRCS - mpeg/mpegfile.cpp - mpeg/mpegproperties.cpp - mpeg/mpegheader.cpp - mpeg/xingheader.cpp -) - -set(id3v1_SRCS - mpeg/id3v1/id3v1tag.cpp - mpeg/id3v1/id3v1genres.cpp -) - -set(id3v2_SRCS - mpeg/id3v2/id3v2framefactory.cpp - mpeg/id3v2/id3v2synchdata.cpp - mpeg/id3v2/id3v2tag.cpp - mpeg/id3v2/id3v2header.cpp - mpeg/id3v2/id3v2frame.cpp - mpeg/id3v2/id3v2footer.cpp - mpeg/id3v2/id3v2extendedheader.cpp - ) - -set(frames_SRCS - mpeg/id3v2/frames/attachedpictureframe.cpp - mpeg/id3v2/frames/commentsframe.cpp - mpeg/id3v2/frames/eventtimingcodesframe.cpp - mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp - mpeg/id3v2/frames/ownershipframe.cpp - mpeg/id3v2/frames/popularimeterframe.cpp - mpeg/id3v2/frames/privateframe.cpp - mpeg/id3v2/frames/relativevolumeframe.cpp - mpeg/id3v2/frames/synchronizedlyricsframe.cpp - mpeg/id3v2/frames/textidentificationframe.cpp - mpeg/id3v2/frames/uniquefileidentifierframe.cpp - mpeg/id3v2/frames/unknownframe.cpp - mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp - mpeg/id3v2/frames/urllinkframe.cpp - mpeg/id3v2/frames/chapterframe.cpp - mpeg/id3v2/frames/tableofcontentsframe.cpp - mpeg/id3v2/frames/podcastframe.cpp -) - -set(ogg_SRCS - ogg/oggfile.cpp - ogg/oggpage.cpp - ogg/oggpageheader.cpp - ogg/xiphcomment.cpp -) - -set(vorbis_SRCS - ogg/vorbis/vorbisfile.cpp - ogg/vorbis/vorbisproperties.cpp -) - -set(flacs_SRCS - flac/flacfile.cpp - flac/flacpicture.cpp - flac/flacproperties.cpp - flac/flacmetadatablock.cpp - flac/flacunknownmetadatablock.cpp -) - -set(oggflacs_SRCS - ogg/flac/oggflacfile.cpp -) - -set(mpc_SRCS - mpc/mpcfile.cpp - mpc/mpcproperties.cpp -) - -set(mp4_SRCS - mp4/mp4file.cpp - mp4/mp4atom.cpp - mp4/mp4tag.cpp - mp4/mp4item.cpp - mp4/mp4properties.cpp - mp4/mp4coverart.cpp -) - -set(ape_SRCS - ape/apetag.cpp - ape/apefooter.cpp - ape/apeitem.cpp - ape/apefile.cpp - ape/apeproperties.cpp -) - -set(wavpack_SRCS - wavpack/wavpackfile.cpp - wavpack/wavpackproperties.cpp -) - -set(speex_SRCS - ogg/speex/speexfile.cpp - ogg/speex/speexproperties.cpp -) - -set(opus_SRCS - ogg/opus/opusfile.cpp - ogg/opus/opusproperties.cpp -) - -set(trueaudio_SRCS - trueaudio/trueaudiofile.cpp - trueaudio/trueaudioproperties.cpp -) - -set(asf_SRCS - asf/asftag.cpp - asf/asffile.cpp - asf/asfproperties.cpp - asf/asfattribute.cpp - asf/asfpicture.cpp -) - -set(riff_SRCS - riff/rifffile.cpp -) - -set(aiff_SRCS - riff/aiff/aifffile.cpp - riff/aiff/aiffproperties.cpp -) - -set(wav_SRCS - riff/wav/wavfile.cpp - riff/wav/wavproperties.cpp - riff/wav/infotag.cpp -) - -set(mod_SRCS - mod/modfilebase.cpp - mod/modfile.cpp - mod/modtag.cpp - mod/modproperties.cpp -) - -set(s3m_SRCS - s3m/s3mfile.cpp - s3m/s3mproperties.cpp -) - -set(it_SRCS - it/itfile.cpp - it/itproperties.cpp -) - -set(xm_SRCS - xm/xmfile.cpp - xm/xmproperties.cpp -) - -set(toolkit_SRCS - toolkit/tstring.cpp - toolkit/tstringlist.cpp - toolkit/tbytevector.cpp - toolkit/tbytevectorlist.cpp - toolkit/tbytevectorstream.cpp - toolkit/tiostream.cpp - toolkit/tfile.cpp - toolkit/tfilestream.cpp - toolkit/tdebug.cpp - toolkit/tpropertymap.cpp - toolkit/trefcounter.cpp - toolkit/tdebuglistener.cpp - toolkit/tzlib.cpp -) - -if(HAVE_ZLIB_SOURCE) - set(zlib_SRCS - ${ZLIB_SOURCE}/adler32.c - ${ZLIB_SOURCE}/crc32.c - ${ZLIB_SOURCE}/inffast.c - ${ZLIB_SOURCE}/inflate.c - ${ZLIB_SOURCE}/inftrees.c - ${ZLIB_SOURCE}/zutil.c - ) -endif() - -set(tag_LIB_SRCS - ${mpeg_SRCS} ${id3v1_SRCS} ${id3v2_SRCS} ${frames_SRCS} ${ogg_SRCS} - ${vorbis_SRCS} ${oggflacs_SRCS} ${mpc_SRCS} ${ape_SRCS} ${toolkit_SRCS} ${flacs_SRCS} - ${wavpack_SRCS} ${speex_SRCS} ${trueaudio_SRCS} ${riff_SRCS} ${aiff_SRCS} ${wav_SRCS} - ${asf_SRCS} ${mp4_SRCS} ${mod_SRCS} ${s3m_SRCS} ${it_SRCS} ${xm_SRCS} ${opus_SRCS} - ${zlib_SRCS} - tag.cpp - tagunion.cpp - fileref.cpp - audioproperties.cpp - tagutils.cpp -) - -add_library(tag ${tag_LIB_SRCS} ${tag_HDRS}) -set_property(TARGET tag PROPERTY CXX_STANDARD 98) - -if(HAVE_ZLIB AND NOT HAVE_ZLIB_SOURCE) - target_link_libraries(tag ${ZLIB_LIBRARIES}) -endif() - -set_target_properties(tag PROPERTIES - VERSION ${TAGLIB_SOVERSION_MAJOR}.${TAGLIB_SOVERSION_MINOR}.${TAGLIB_SOVERSION_PATCH} - SOVERSION ${TAGLIB_SOVERSION_MAJOR} - INSTALL_NAME_DIR ${LIB_INSTALL_DIR} - DEFINE_SYMBOL MAKE_TAGLIB_LIB - LINK_INTERFACE_LIBRARIES "" - PUBLIC_HEADER "${tag_HDRS}" -) -if(VISIBILITY_HIDDEN) - set_target_properties(tag PROPERTIES C_VISIBILITY_PRESET hidden) -endif() - -if(BUILD_FRAMEWORK) - unset(INSTALL_NAME_DIR) - set_target_properties(tag PROPERTIES - FRAMEWORK TRUE - MACOSX_RPATH 1 - VERSION "A" - SOVERSION "A" - ) -endif() - -install(TARGETS tag - FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR} - LIBRARY DESTINATION ${LIB_INSTALL_DIR} - RUNTIME DESTINATION ${BIN_INSTALL_DIR} - ARCHIVE DESTINATION ${LIB_INSTALL_DIR} - PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/taglib -) diff --git a/Frameworks/TagLib/taglib/taglib/ape/ape-tag-format.txt b/Frameworks/TagLib/taglib/taglib/ape/ape-tag-format.txt deleted file mode 100644 index cb6f46ff4..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/ape-tag-format.txt +++ /dev/null @@ -1,170 +0,0 @@ -================================================================================ -= APE Tag Specification, Version 2.000 -================================================================================ - -Original Content (C) 2004, Frank Klemm <frank.klemm@elster.offl.uni-jena.de> -Formatting / Editing (C) 2004, Scott Wheeler <wheeler@kde.org> - -================================================================================ -= Contents -================================================================================ - -1 - APE Tag General Structure -2 - APE Tag Header / Footer Format -3 - APE Tag Flags -4 - APE Tag Item Format -5 - APE Tag Item Supported Keys -6 - APE Tag Item Content -7 - Data Types -7.1 - Data Types / UTF-8 -7.2 - Data Types / Dates -7.3 - Data Types / Timestamps - -================================================================================ -= 1 - APE Tag General Structure -================================================================================ - -Member of Basic Components of SV8 Stream Note: - -It is strongly recommended that the data size be stored in the tags. The size -should normally be in the roughly one kilobyte, never more than 8 kilobytes. - -Larger data should be stored externally using link entries. Linked data is much -easier to process by normal programs, so for instance JPEG data should not be -included inside the audio file. - -APE Tag Version 2.000 (with header, recommended): - -/================================\ -| APE Tag Header | 32 bytes | -|-------------------|------------| -| APE Tag Item 1 | > 10 bytes | -| APE Tag Item 2 | > 10 bytes | -| APE Tag Item n-1 | > 10 bytes | -| APE Tag Item n | > 10 bytes | -|-------------------|------------| -| APE Tag Footer | 32 bytes | -\================================/ - - -APE tag items should be sorted ascending by size. When streaming, parts of the -APE tag may be dropped to reduce the danger of drop outs between tracks. This -is not required, but is strongly recommended. It would be desirable for the -items to be sorted by importance / size, but this is not feasible. This -convention should only be broken when adding less important small items and it -is not desirable to rewrite the entire tag. An APE tag at the end of a file -(the recommended location) must have at least a footer; an APE tag at the -beginning of a file (strongly discouraged) must have at least a header. - -APE Tag Version 1.000 (without header, deprecated) - -/================================\ -| APE Tag Item 1 | > 10 bytes | -| APE Tag Item 2 | > 10 bytes | -| APE Tag Item n-1 | > 10 bytes | -| APE Tag Item n | > 10 bytes | -|-------------------|------------| -| APE Tag Footer | 32 bytes | -\================================/ - -================================================================================ -= 2 - APE Tag Header / Footer Format -================================================================================ - -Contains number, length and attributes of all tag items - -Header and Footer are different in 1 bit in the Tags Flags to distinguish -between them. - -Member of APE Tag 2.0 - -/===========================================================================\ -| Preamble | 8 bytes | { 'A', 'P', 'E', 'T', 'A', 'G', 'E', 'X' } | -|----------------|---------|------------------------------------------------| -| Version Number | 4 bytes | 1000 = Version 1.000, 2000 = Version 2.000 | -|----------------|---------|------------------------------------------------| -| Tag Size | 4 bytes | Tag size in bytes including footer and all tag | -| | | items excluding the header (for 1.000 | -| | | compatibility) | -|----------------|---------|------------------------------------------------| -| Item Count | 4 bytes | Number of items in the tag | -|----------------|---------|------------------------------------------------| -| Tag Flags | 4 bytes | Global flags | -|----------------|---------|------------------------------------------------| -| Reserved | 8 bytes | Must be zeroed | -\===========================================================================/ - -================================================================================ -= 3 - APE Tag Flags -================================================================================ - -The general flag structure for either items or headers / footers is the same. -Bits 31, 30 and 29 are specific to headers / footers, whereas 2 through 0 are -item specific. - -Note: APE Tags from Version 1.0 do not use any of the following. All flags in -that version are zeroed and ignored when reading. - -/=================================================================\ -| Contains Header | Bit 31 | 1 - has header | 0 - no header | -|-----------------|-------------|---------------------------------| -| Contains Footer | Bit 30 | 1 - has footer | 0 - no footer | -|-----------------|-------------|---------------------------------| -| Is Header | Bit 29 | 1 - is header | 0 - is footer | -|-----------------|-------------|---------------------------------| -| Undefined | Bits 28 - 3 | Undefined, must be zeroed | -|-----------------|-------------|---------------------------------| -| Encoding | Bits 2 - 1 | 00 - UTF-8 | -| | | 01 - Binary Data * | -| | | 10 - External Reference ** | -| | | 11 - Reserved | -|-----------------|-------------|---------------------------------| -| Read Only | Bit 0 | 1 - read only | 0 - read/write | -\=================================================================/ - - (*) Should be ignored by tools for editing text values -(**) Allowed external reference formats: - - http://host/directory/filename.ext - - ftp://host/directory/filename.ext - - filename.ext - - /directory/filename.ext - - DRIVE:/directory/filename.ext - - Note: External references are also UTF-8 encoded. - -================================================================================ -= 4 - APE Tag Item Format -================================================================================ - -APE Tag Items are stored as key-value pairs. APE Tags Item Key are case -sensitive, however it is illegal to use keys which only differ in case and -it is recommended that tag reading not be case sensitive. - -Every key can only occur (at most) once. It is not possible to repeat a key -to signify updated contents. - -Tags can be partially or completely repeated in the streaming format. This -makes it possible to display an artist and / or title if it was missed at the -beginning of the stream. It is recommended that the important information like -artist, album and title should occur approximately every 2 minutes in the -stream and again 5 to 10 seconds before the end. However, care should be tak -en not to replicate this information too often or during passages with high -bitrate demands to avoid unnecessary drop-outs. - -/==============================================================================\ -| Content Size | 4 bytes | Length of the value in bytes | -|----------------|---------------|---------------------------------------------| -| Flags | 4 bytes | Item flags | -|----------------|---------------|---------------------------------------------| -| Key | 2 - 255 bytes | Item key | -|----------------|---------------|---------------------------------------------| -| Key Terminator | 1 byte | Null byte that indicates the end of the key | -|----------------|---------------|---------------------------------------------| -| Value | variable | Content (formatted according to the flags) | -\==============================================================================/ - -================================================================================ - -Sections 5 - 7 haven't yet been converted from: - -http://www.personal.uni-jena.de/~pfk/mpp/sv8/apetag.html diff --git a/Frameworks/TagLib/taglib/taglib/ape/apefile.cpp b/Frameworks/TagLib/taglib/taglib/ape/apefile.cpp deleted file mode 100644 index 9c9320f91..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/apefile.cpp +++ /dev/null @@ -1,314 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/tagunion.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/ape/apefile.h> -#include <taglib/ape/apetag.h> -#include <taglib/ape/apefooter.h> - -using namespace TagLib; - -namespace -{ - enum { ApeAPEIndex = 0, ApeID3v1Index = 1 }; -} - -class APE::File::FilePrivate -{ -public: - FilePrivate() : - APELocation(-1), - APESize(0), - ID3v1Location(-1), - ID3v2Header(0), - ID3v2Location(-1), - ID3v2Size(0), - properties(0) {} - - ~FilePrivate() - { - delete ID3v2Header; - delete properties; - } - - long APELocation; - long APESize; - - long ID3v1Location; - - ID3v2::Header *ID3v2Header; - long ID3v2Location; - long ID3v2Size; - - TagUnion tag; - - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool APE::File::isSupported(IOStream *stream) -{ - // An APE file has an ID "MAC " somewhere. An ID3v2 tag may precede. - - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), true); - return (buffer.find("MAC ") >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APE::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -APE::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -APE::File::~File() -{ - delete d; -} - -TagLib::Tag *APE::File::tag() const -{ - return &d->tag; -} - -PropertyMap APE::File::properties() const -{ - return d->tag.properties(); -} - -void APE::File::removeUnsupportedProperties(const StringList &properties) -{ - d->tag.removeUnsupportedProperties(properties); -} - -PropertyMap APE::File::setProperties(const PropertyMap &properties) -{ - if(ID3v1Tag()) - ID3v1Tag()->setProperties(properties); - - return APETag(true)->setProperties(properties); -} - -APE::Properties *APE::File::audioProperties() const -{ - return d->properties; -} - -bool APE::File::save() -{ - if(readOnly()) { - debug("APE::File::save() -- File is read only."); - return false; - } - - // Update ID3v1 tag - - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - - // ID3v1 tag is not empty. Update the old one or create a new one. - - if(d->ID3v1Location >= 0) { - seek(d->ID3v1Location); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - } - - writeBlock(ID3v1Tag()->render()); - } - else { - - // ID3v1 tag is empty. Remove the old one. - - if(d->ID3v1Location >= 0) { - truncate(d->ID3v1Location); - d->ID3v1Location = -1; - } - } - - // Update APE tag - - if(APETag() && !APETag()->isEmpty()) { - - // APE tag is not empty. Update the old one or create a new one. - - if(d->APELocation < 0) { - if(d->ID3v1Location >= 0) - d->APELocation = d->ID3v1Location; - else - d->APELocation = length(); - } - - const ByteVector data = APETag()->render(); - insert(data, d->APELocation, d->APESize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->APESize); - - d->APESize = data.size(); - } - else { - - // APE tag is empty. Remove the old one. - - if(d->APELocation >= 0) { - removeBlock(d->APELocation, d->APESize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->APESize; - - d->APELocation = -1; - d->APESize = 0; - } - } - - return true; -} - -ID3v1::Tag *APE::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(ApeID3v1Index, create); -} - -APE::Tag *APE::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(ApeAPEIndex, create); -} - -void APE::File::strip(int tags) -{ - if(tags & ID3v1) - d->tag.set(ApeID3v1Index, 0); - - if(tags & APE) - d->tag.set(ApeAPEIndex, 0); - - if(!ID3v1Tag()) - APETag(true); -} - -bool APE::File::hasAPETag() const -{ - return (d->APELocation >= 0); -} - -bool APE::File::hasID3v1Tag() const -{ - return (d->ID3v1Location >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void APE::File::read(bool readProperties) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = Utils::findID3v2(this); - - if(d->ID3v2Location >= 0) { - seek(d->ID3v2Location); - d->ID3v2Header = new ID3v2::Header(readBlock(ID3v2::Header::size())); - d->ID3v2Size = d->ID3v2Header->completeTagSize(); - } - - // Look for an ID3v1 tag - - d->ID3v1Location = Utils::findID3v1(this); - - if(d->ID3v1Location >= 0) - d->tag.set(ApeID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - - // Look for an APE tag - - d->APELocation = Utils::findAPE(this, d->ID3v1Location); - - if(d->APELocation >= 0) { - d->tag.set(ApeAPEIndex, new APE::Tag(this, d->APELocation)); - d->APESize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APE::Footer::size() - d->APESize; - } - - if(d->ID3v1Location < 0) - APETag(true); - - // Look for APE audio properties - - if(readProperties) { - - long streamLength; - - if(d->APELocation >= 0) - streamLength = d->APELocation; - else if(d->ID3v1Location >= 0) - streamLength = d->ID3v1Location; - else - streamLength = length(); - - if(d->ID3v2Location >= 0) { - seek(d->ID3v2Location + d->ID3v2Size); - streamLength -= (d->ID3v2Location + d->ID3v2Size); - } - else { - seek(0); - } - - d->properties = new Properties(this, streamLength); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/ape/apefooter.cpp b/Frameworks/TagLib/taglib/taglib/ape/apefooter.cpp deleted file mode 100644 index 6ca8809b9..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/apefooter.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - (C) 2002 - 2008 by Scott Wheeler (id3v2header.cpp) - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <iostream> -#include <bitset> - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/ape/apefooter.h> - -using namespace TagLib; -using namespace APE; - -class APE::Footer::FooterPrivate -{ -public: - FooterPrivate() : - version(0), - footerPresent(true), - headerPresent(false), - isHeader(false), - itemCount(0), - tagSize(0) {} - - unsigned int version; - - bool footerPresent; - bool headerPresent; - - bool isHeader; - - unsigned int itemCount; - unsigned int tagSize; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -unsigned int APE::Footer::size() -{ - return 32; -} - -ByteVector APE::Footer::fileIdentifier() -{ - return ByteVector("APETAGEX"); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APE::Footer::Footer() : - d(new FooterPrivate()) -{ -} - -APE::Footer::Footer(const ByteVector &data) : - d(new FooterPrivate()) -{ - parse(data); -} - -APE::Footer::~Footer() -{ - delete d; -} - -unsigned int APE::Footer::version() const -{ - return d->version; -} - -bool APE::Footer::headerPresent() const -{ - return d->headerPresent; -} - -bool APE::Footer::footerPresent() const -{ - return d->footerPresent; -} - -bool APE::Footer::isHeader() const -{ - return d->isHeader; -} - -void APE::Footer::setHeaderPresent(bool b) const -{ - d->headerPresent = b; -} - -unsigned int APE::Footer::itemCount() const -{ - return d->itemCount; -} - -void APE::Footer::setItemCount(unsigned int s) -{ - d->itemCount = s; -} - -unsigned int APE::Footer::tagSize() const -{ - return d->tagSize; -} - -unsigned int APE::Footer::completeTagSize() const -{ - if(d->headerPresent) - return d->tagSize + size(); - else - return d->tagSize; -} - -void APE::Footer::setTagSize(unsigned int s) -{ - d->tagSize = s; -} - -void APE::Footer::setData(const ByteVector &data) -{ - parse(data); -} - -ByteVector APE::Footer::renderFooter() const -{ - return render(false); -} - -ByteVector APE::Footer::renderHeader() const -{ - if(!d->headerPresent) - return ByteVector(); - else - return render(true); -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void APE::Footer::parse(const ByteVector &data) -{ - if(data.size() < size()) - return; - - // The first eight bytes, data[0..7], are the File Identifier, "APETAGEX". - - // Read the version number - - d->version = data.toUInt(8, false); - - // Read the tag size - - d->tagSize = data.toUInt(12, false); - - // Read the item count - - d->itemCount = data.toUInt(16, false); - - // Read the flags - - std::bitset<32> flags(TAGLIB_CONSTRUCT_BITSET(data.toUInt(20, false))); - - d->headerPresent = flags[31]; - d->footerPresent = !flags[30]; - d->isHeader = flags[29]; - -} - -ByteVector APE::Footer::render(bool isHeader) const -{ - ByteVector v; - - // add the file identifier -- "APETAGEX" - - v.append(fileIdentifier()); - - // add the version number -- we always render a 2.000 tag regardless of what - // the tag originally was. - - v.append(ByteVector::fromUInt(2000, false)); - - // add the tag size - - v.append(ByteVector::fromUInt(d->tagSize, false)); - - // add the item count - - v.append(ByteVector::fromUInt(d->itemCount, false)); - - // render and add the flags - - std::bitset<32> flags; - - flags[31] = d->headerPresent; - flags[30] = false; // footer is always present - flags[29] = isHeader; - - v.append(ByteVector::fromUInt(flags.to_ulong(), false)); - - // add the reserved 64bit - - v.append(ByteVector::fromLongLong(0)); - - return v; -} diff --git a/Frameworks/TagLib/taglib/taglib/ape/apegenfile.cpp b/Frameworks/TagLib/taglib/taglib/ape/apegenfile.cpp deleted file mode 100644 index fc7e4e2c9..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/apegenfile.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/tagunion.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/ape/apegenfile.h> -#include <taglib/ape/apetag.h> -#include <taglib/ape/apefooter.h> - -using namespace TagLib; - -namespace -{ - enum { ApeGenAPEIndex = 0 }; -} - -class APEGen::File::FilePrivate -{ -public: - FilePrivate() : - APELocation(-1), - APESize(0) {} - - ~FilePrivate() - { - } - - long APELocation; - long APESize; - - TagUnion tag; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool APEGen::File::isSupported(IOStream *stream) -{ - // Generic file support for anything with APE tags - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), true); - return (buffer.find("APETAGEX") >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APEGen::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -APEGen::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -APEGen::File::~File() -{ - delete d; -} - -TagLib::Tag *APEGen::File::tag() const -{ - return &d->tag; -} - -PropertyMap APEGen::File::properties() const -{ - return d->tag.properties(); -} - -void APEGen::File::removeUnsupportedProperties(const StringList &properties) -{ - d->tag.removeUnsupportedProperties(properties); -} - -PropertyMap APEGen::File::setProperties(const PropertyMap &properties) -{ - return APETag(true)->setProperties(properties); -} - -APEGen::Properties *APEGen::File::audioProperties() const -{ - return NULL; -} - -bool APEGen::File::save() -{ - if(readOnly()) { - debug("APEGen::File::save() -- File is read only."); - return false; - } - - // Update APE tag - - if(APETag() && !APETag()->isEmpty()) { - - // APE tag is not empty. Update the old one or create a new one. - - if(d->APELocation < 0) { - d->APELocation = length(); - } - - const ByteVector data = APETag()->render(); - insert(data, d->APELocation, d->APESize); - - d->APESize = data.size(); - } - else { - - // APE tag is empty. Remove the old one. - - if(d->APELocation >= 0) { - removeBlock(d->APELocation, d->APESize); - - d->APELocation = -1; - d->APESize = 0; - } - } - - return true; -} - -APE::Tag *APEGen::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(ApeGenAPEIndex, create); -} - -void APEGen::File::strip(int tags) -{ - if(tags & APE) - d->tag.set(ApeGenAPEIndex, 0); - - APETag(true); -} - -bool APEGen::File::hasAPETag() const -{ - return (d->APELocation >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void APEGen::File::read(bool readProperties) -{ - // Look for an APE tag - - d->APELocation = Utils::findAPE(this, -1); - - if(d->APELocation >= 0) { - d->tag.set(ApeGenAPEIndex, new APE::Tag(this, d->APELocation)); - d->APESize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APE::Footer::size() - d->APESize; - } - - APETag(true); -} diff --git a/Frameworks/TagLib/taglib/taglib/ape/apegenfile.h b/Frameworks/TagLib/taglib/taglib/ape/apegenfile.h deleted file mode 100644 index 4bcbdde0c..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/apegenfile.h +++ /dev/null @@ -1,201 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_APEGENFILE_H -#define TAGLIB_APEGENFILE_H - -#include <taglib/toolkit/tfile.h> -#include <taglib/taglib_export.h> -#include <taglib/ape/apeproperties.h> - -namespace TagLib { - - class Tag; - - namespace APE { class Tag; } - - //! An implementation of APE metadata - - /*! - * This is implementation of APE metadata. - * - * This supports APE (v1 and v2) style comments only. - */ - - namespace APEGen { - - class Properties : public APE::Properties { }; - - //! An implementation of TagLib::File with APE specific methods - - /*! - * This implements and provides an interface for any arbitrary file with - * APE tags appended, and no other tag format, using TagLib::Tag and - * TagLib::AudioProperties interfaces by way of implementing the abstract - * TagLib::File API as well as providing some additional information - * specific to APE tagged files. No technical info supported. - */ - - class TAGLIB_EXPORT File : public TagLib::File - { - public: - /*! - * This set of flags is used for various operations and is suitable for - * being OR-ed together. - */ - enum TagTypes { - //! Empty set. Matches no tag types. - NoTags = 0x0000, - //! Matches APE tags. - APE = 0x0001, - //! Matches all tag types. - AllTags = 0xffff - }; - - /*! - * Constructs an APE file from \a file. If \a readProperties is true the - * file's audio properties will also be read. - * - * \note In the current implementation, \a propertiesStyle is ignored. - */ - File(FileName file, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Constructs an APE file from \a stream. If \a readProperties is true the - * file's audio properties will also be read. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - * - * \note In the current implementation, \a propertiesStyle is ignored. - */ - File(IOStream *stream, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Destroys this instance of the File. - */ - virtual ~File(); - - /*! - * Returns the Tag for this file. This will be an APE tag. - */ - virtual TagLib::Tag *tag() const; - - /*! - * Implements the unified property interface -- export function. - */ - PropertyMap properties() const; - - /*! - * Removes unsupported properties. Forwards to the actual Tag's - * removeUnsupportedProperties() function. - */ - void removeUnsupportedProperties(const StringList &properties); - - /*! - * Implements the unified property interface -- import function. - * Creates an APEv2 tag if necessary. - */ - PropertyMap setProperties(const PropertyMap &); - - /*! - * Returns the APE::Properties for this file. If no audio properties - * were read then this will return a null pointer. - */ - virtual Properties *audioProperties() const; - - /*! - * Saves the file. - * - * Updates an existing APE tag, adds a new APEv2 tag, or removes it. - */ - virtual bool save(); - - /*! - * Returns a pointer to the APE tag of the file. - * - * If \a create is false (the default) this may return a null pointer - * if there is no valid APE tag. If \a create is true it will create - * an APE tag if one does not exist and returns a valid pointer. - * - * \note This may return a valid pointer regardless of whether or not the - * file on disk has an APE tag. Use hasAPETag() to check if the file - * on disk actually has an APE tag. - * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - * - * \see hasAPETag() - */ - APE::Tag *APETag(bool create = false); - - /*! - * This will remove the tags that match the OR-ed together TagTypes from the - * file. By default it removes all tags. - * - * \note This will also invalidate pointers to the tags - * as their memory will be freed. - * \note In order to make the removal permanent save() still needs to be called - */ - void strip(int tags = AllTags); - - /*! - * Returns whether or not the file on disk actually has an APE tag. - * - * \see APETag() - */ - bool hasAPETag() const; - - /*! - * Returns whether or not the given \a stream can be opened using an - * APE tag parser. Does no other validation. - * - * \note This method is designed to do a quick check. The result may - * not necessarily be correct. - */ - static bool isSupported(IOStream *stream); - - private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties); - - class FilePrivate; - FilePrivate *d; - }; - } -} - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/ape/apeitem.cpp b/Frameworks/TagLib/taglib/taglib/ape/apeitem.cpp deleted file mode 100644 index 37c5033fe..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/apeitem.cpp +++ /dev/null @@ -1,301 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/ape/apeitem.h> - -using namespace TagLib; -using namespace APE; - -class APE::Item::ItemPrivate -{ -public: - ItemPrivate() : - type(Text), - readOnly(false) {} - - Item::ItemTypes type; - String key; - ByteVector value; - StringList text; - bool readOnly; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APE::Item::Item() : - d(new ItemPrivate()) -{ -} - -APE::Item::Item(const String &key, const String &value) : - d(new ItemPrivate()) -{ - d->key = key; - d->text.append(value); -} - -APE::Item::Item(const String &key, const StringList &values) : - d(new ItemPrivate()) -{ - d->key = key; - d->text = values; -} - -APE::Item::Item(const String &key, const ByteVector &value, bool binary) : - d(new ItemPrivate()) -{ - d->key = key; - if(binary) { - d->type = Binary; - d->value = value; - } - else { - d->text.append(value); - } -} - -APE::Item::Item(const Item &item) : - d(new ItemPrivate(*item.d)) -{ -} - -APE::Item::~Item() -{ - delete d; -} - -Item &APE::Item::operator=(const Item &item) -{ - Item(item).swap(*this); - return *this; -} - -void APE::Item::swap(Item &item) -{ - using std::swap; - - swap(d, item.d); -} - -void APE::Item::setReadOnly(bool readOnly) -{ - d->readOnly = readOnly; -} - -bool APE::Item::isReadOnly() const -{ - return d->readOnly; -} - -void APE::Item::setType(APE::Item::ItemTypes val) -{ - d->type = val; -} - -APE::Item::ItemTypes APE::Item::type() const -{ - return d->type; -} - -String APE::Item::key() const -{ - return d->key; -} - -ByteVector APE::Item::binaryData() const -{ - return d->value; -} - -void APE::Item::setBinaryData(const ByteVector &value) -{ - d->type = Binary; - d->value = value; - d->text.clear(); -} - -ByteVector APE::Item::value() const -{ - // This seems incorrect as it won't be actually rendering the value to keep it - // up to date. - - return d->value; -} - -void APE::Item::setKey(const String &key) -{ - d->key = key; -} - -void APE::Item::setValue(const String &value) -{ - d->type = Text; - d->text = value; - d->value.clear(); -} - -void APE::Item::setValues(const StringList &value) -{ - d->type = Text; - d->text = value; - d->value.clear(); -} - -void APE::Item::appendValue(const String &value) -{ - d->type = Text; - d->text.append(value); - d->value.clear(); -} - -void APE::Item::appendValues(const StringList &values) -{ - d->type = Text; - d->text.append(values); - d->value.clear(); -} - -int APE::Item::size() const -{ - int result = 8 + d->key.size() + 1; - switch(d->type) { - case Text: - if(!d->text.isEmpty()) { - StringList::ConstIterator it = d->text.begin(); - - result += it->data(String::UTF8).size(); - it++; - for(; it != d->text.end(); ++it) - result += 1 + it->data(String::UTF8).size(); - } - break; - - case Binary: - case Locator: - result += d->value.size(); - break; - } - return result; -} - -StringList APE::Item::toStringList() const -{ - return d->text; -} - -StringList APE::Item::values() const -{ - return d->text; -} - -String APE::Item::toString() const -{ - if(d->type == Text && !isEmpty()) - return d->text.front(); - else - return String(); -} - -bool APE::Item::isEmpty() const -{ - switch(d->type) { - case Text: - if(d->text.isEmpty()) - return true; - if(d->text.size() == 1 && d->text.front().isEmpty()) - return true; - return false; - case Binary: - case Locator: - return d->value.isEmpty(); - default: - return false; - } -} - -void APE::Item::parse(const ByteVector &data) -{ - // 11 bytes is the minimum size for an APE item - - if(data.size() < 11) { - debug("APE::Item::parse() -- no data in item"); - return; - } - - const unsigned int valueLength = data.toUInt(0, false); - const unsigned int flags = data.toUInt(4, false); - - // An item key can contain ASCII characters from 0x20 up to 0x7E, not UTF-8. - // We assume that the validity of the given key has been checked. - - d->key = String(&data[8], String::Latin1); - - const ByteVector value = data.mid(8 + d->key.size() + 1, valueLength); - - setReadOnly(flags & 1); - setType(ItemTypes((flags >> 1) & 3)); - - if(Text == d->type) - d->text = StringList(ByteVectorList::split(value, '\0'), String::UTF8); - else - d->value = value; -} - -ByteVector APE::Item::render() const -{ - ByteVector data; - unsigned int flags = ((d->readOnly) ? 1 : 0) | (d->type << 1); - ByteVector value; - - if(isEmpty()) - return data; - - if(d->type == Text) { - StringList::ConstIterator it = d->text.begin(); - - value.append(it->data(String::UTF8)); - it++; - for(; it != d->text.end(); ++it) { - value.append('\0'); - value.append(it->data(String::UTF8)); - } - d->value = value; - } - else - value.append(d->value); - - data.append(ByteVector::fromUInt(value.size(), false)); - data.append(ByteVector::fromUInt(flags, false)); - data.append(d->key.data(String::Latin1)); - data.append(ByteVector('\0')); - data.append(value); - - return data; -} diff --git a/Frameworks/TagLib/taglib/taglib/ape/apeproperties.cpp b/Frameworks/TagLib/taglib/taglib/ape/apeproperties.cpp deleted file mode 100644 index 3ea18f28f..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/apeproperties.cpp +++ /dev/null @@ -1,252 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - (original WavPack implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <bitset> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/ape/apeproperties.h> -#include <taglib/ape/apefile.h> -#include <taglib/ape/apetag.h> -#include <taglib/ape/apefooter.h> - -using namespace TagLib; - -class APE::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - version(0), - bitsPerSample(0), - sampleFrames(0) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int version; - int bitsPerSample; - unsigned int sampleFrames; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -APE::Properties::Properties(File *, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - debug("APE::Properties::Properties() -- This constructor is no longer used."); -} - -APE::Properties::Properties(File *file, long streamLength, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file, streamLength); -} - -APE::Properties::~Properties() -{ - delete d; -} - -int APE::Properties::length() const -{ - return lengthInSeconds(); -} - -int APE::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int APE::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int APE::Properties::bitrate() const -{ - return d->bitrate; -} - -int APE::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int APE::Properties::channels() const -{ - return d->channels; -} - -int APE::Properties::version() const -{ - return d->version; -} - -int APE::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -unsigned int APE::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -namespace -{ - int headerVersion(const ByteVector &header) - { - if(header.size() < 6 || !header.startsWith("MAC ")) - return -1; - - return header.toUShort(4, false); - } -} - -void APE::Properties::read(File *file, long streamLength) -{ - // First, we assume that the file pointer is set at the first descriptor. - long offset = file->tell(); - int version = headerVersion(file->readBlock(6)); - - // Next, we look for the descriptor. - if(version < 0) { - offset = file->find("MAC ", offset); - file->seek(offset); - version = headerVersion(file->readBlock(6)); - } - - if(version < 0) { - debug("APE::Properties::read() -- APE descriptor not found"); - return; - } - - d->version = version; - - if(d->version >= 3980) - analyzeCurrent(file); - else - analyzeOld(file); - - if(d->sampleFrames > 0 && d->sampleRate > 0) { - const double length = d->sampleFrames * 1000.0 / d->sampleRate; - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } -} - -void APE::Properties::analyzeCurrent(File *file) -{ - // Read the descriptor - file->seek(2, File::Current); - const ByteVector descriptor = file->readBlock(44); - if(descriptor.size() < 44) { - debug("APE::Properties::analyzeCurrent() -- descriptor is too short."); - return; - } - - const unsigned int descriptorBytes = descriptor.toUInt(0, false); - - if((descriptorBytes - 52) > 0) - file->seek(descriptorBytes - 52, File::Current); - - // Read the header - const ByteVector header = file->readBlock(24); - if(header.size() < 24) { - debug("APE::Properties::analyzeCurrent() -- MAC header is too short."); - return; - } - - // Get the APE info - d->channels = header.toShort(18, false); - d->sampleRate = header.toUInt(20, false); - d->bitsPerSample = header.toShort(16, false); - - const unsigned int totalFrames = header.toUInt(12, false); - if(totalFrames == 0) - return; - - const unsigned int blocksPerFrame = header.toUInt(4, false); - const unsigned int finalFrameBlocks = header.toUInt(8, false); - d->sampleFrames = (totalFrames - 1) * blocksPerFrame + finalFrameBlocks; -} - -void APE::Properties::analyzeOld(File *file) -{ - const ByteVector header = file->readBlock(26); - if(header.size() < 26) { - debug("APE::Properties::analyzeOld() -- MAC header is too short."); - return; - } - - const unsigned int totalFrames = header.toUInt(18, false); - - // Fail on 0 length APE files (catches non-finalized APE files) - if(totalFrames == 0) - return; - - const short compressionLevel = header.toShort(0, false); - unsigned int blocksPerFrame; - if(d->version >= 3950) - blocksPerFrame = 73728 * 4; - else if(d->version >= 3900 || (d->version >= 3800 && compressionLevel == 4000)) - blocksPerFrame = 73728; - else - blocksPerFrame = 9216; - - // Get the APE info - d->channels = header.toShort(4, false); - d->sampleRate = header.toUInt(6, false); - - const unsigned int finalFrameBlocks = header.toUInt(22, false); - d->sampleFrames = (totalFrames - 1) * blocksPerFrame + finalFrameBlocks; - - // Get the bit depth from the RIFF-fmt chunk. - file->seek(16, File::Current); - const ByteVector fmt = file->readBlock(28); - if(fmt.size() < 28 || !fmt.startsWith("WAVEfmt ")) { - debug("APE::Properties::analyzeOld() -- fmt header is too short."); - return; - } - - d->bitsPerSample = fmt.toShort(26, false); -} diff --git a/Frameworks/TagLib/taglib/taglib/ape/apetag.cpp b/Frameworks/TagLib/taglib/taglib/ape/apetag.cpp deleted file mode 100644 index ab6ce800c..000000000 --- a/Frameworks/TagLib/taglib/taglib/ape/apetag.cpp +++ /dev/null @@ -1,572 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5130) -// Sun Studio finds multiple specializations of Map because -// it considers specializations with and without class types -// to be different; this define forces Map to use only the -// specialization with the class keyword. -#define WANT_CLASS_INSTANTIATION_OF_MAP (1) -#endif - -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tutils.h> - -#include <taglib/ape/apetag.h> -#include <taglib/ape/apefooter.h> -#include <taglib/ape/apeitem.h> - -using namespace TagLib; -using namespace APE; - -namespace -{ - const unsigned int MinKeyLength = 2; - const unsigned int MaxKeyLength = 255; - - bool isKeyValid(const ByteVector &key) - { - const char *invalidKeys[] = { "ID3", "TAG", "OGGS", "MP+", 0 }; - - // only allow printable ASCII including space (32..126) - - for(ByteVector::ConstIterator it = key.begin(); it != key.end(); ++it) { - const int c = static_cast<unsigned char>(*it); - if(c < 32 || c > 126) - return false; - } - - const String upperKey = String(key).upper(); - for(size_t i = 0; invalidKeys[i] != 0; ++i) { - if(upperKey == invalidKeys[i]) - return false; - } - - return true; - } -} - -class APE::Tag::TagPrivate -{ -public: - TagPrivate() : - file(0), - footerLocation(0) {} - - File *file; - long footerLocation; - - Footer footer; - ItemListMap itemListMap; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -APE::Tag::Tag() : - TagLib::Tag(), - d(new TagPrivate()) -{ -} - -APE::Tag::Tag(TagLib::File *file, long footerLocation) : - TagLib::Tag(), - d(new TagPrivate()) -{ - d->file = file; - d->footerLocation = footerLocation; - - read(); -} - -APE::Tag::~Tag() -{ - delete d; -} - -ByteVector APE::Tag::fileIdentifier() -{ - return ByteVector::fromCString("APETAGEX"); -} - -String APE::Tag::title() const -{ - if(d->itemListMap["TITLE"].isEmpty()) - return String(); - return d->itemListMap["TITLE"].values().toString(); -} - -String APE::Tag::albumartist() const -{ - if(!d->itemListMap["ALBUMARTIST"].isEmpty()) - return d->itemListMap["ALBUMARTIST"].values().toString(); - if(!d->itemListMap["ALBUM ARTIST"].isEmpty()) - return d->itemListMap["ALBUM ARTIST"].values().toString(); - return String(); -} - -String APE::Tag::artist() const -{ - if(d->itemListMap["ARTIST"].isEmpty()) - return String(); - return d->itemListMap["ARTIST"].values().toString(); -} - -String APE::Tag::composer() const -{ - if(!d->itemListMap["COMPOSER"].isEmpty()) - return d->itemListMap["COMPOSER"].values().toString(); - return String(); -} - -String APE::Tag::album() const -{ - if(d->itemListMap["ALBUM"].isEmpty()) - return String(); - return d->itemListMap["ALBUM"].values().toString(); -} - -String APE::Tag::unsyncedlyrics() const -{ - if(!d->itemListMap["UNSYNCEDLYRICS"].isEmpty()) - return d->itemListMap["UNSYNCEDLYRICS"].values().toString(); - if(!d->itemListMap["UNSYNCED LYRICS"].isEmpty()) - return d->itemListMap["UNSYNCED LYRICS"].values().toString(); - if(!d->itemListMap["LYRICS"].isEmpty()) - return d->itemListMap["LYRICS"].values().toString(); - return String(); -} - -String APE::Tag::comment() const -{ - if(d->itemListMap["COMMENT"].isEmpty()) - return String(); - return d->itemListMap["COMMENT"].values().toString(); -} - -String APE::Tag::genre() const -{ - if(d->itemListMap["GENRE"].isEmpty()) - return String(); - return d->itemListMap["GENRE"].values().toString(); -} - -unsigned int APE::Tag::year() const -{ - if(d->itemListMap["YEAR"].isEmpty()) - return 0; - return d->itemListMap["YEAR"].toString().toInt(); -} - -unsigned int APE::Tag::track() const -{ - if(d->itemListMap["TRACK"].isEmpty()) - return 0; - return d->itemListMap["TRACK"].toString().toInt(); -} - -unsigned int APE::Tag::disc() const -{ - if(d->itemListMap["DISC"].isEmpty()) - return 0; - return d->itemListMap["DISC"].toString().toInt(); -} - -String APE::Tag::cuesheet() const -{ - if(d->itemListMap["CUESHEET"].isEmpty()) - return String(); - return d->itemListMap["CUESHEET"].toString(); -} - -float APE::Tag::rgAlbumGain() const -{ - if (d->itemListMap["REPLAYGAIN_ALBUM_GAIN"].isEmpty()) - return 0; - return d->itemListMap["REPLAYGAIN_ALBUM_GAIN"].toString().toFloat(); -} - -float APE::Tag::rgAlbumPeak() const -{ - if (d->itemListMap["REPLAYGAIN_ALBUM_PEAK"].isEmpty()) - return 0; - return d->itemListMap["REPLAYGAIN_ALBUM_PEAK"].toString().toFloat(); -} - -float APE::Tag::rgTrackGain() const -{ - if (d->itemListMap["REPLAYGAIN_TRACK_GAIN"].isEmpty()) - return 0; - return d->itemListMap["REPLAYGAIN_TRACK_GAIN"].toString().toFloat(); -} - -float APE::Tag::rgTrackPeak() const -{ - if (d->itemListMap["REPLAYGAIN_TRACK_PEAK"].isEmpty()) - return 0; - return d->itemListMap["REPLAYGAIN_TRACK_PEAK"].toString().toFloat(); -} - -String APE::Tag::soundcheck() const -{ - return String(); -} - -void APE::Tag::setTitle(const String &s) -{ - addValue("TITLE", s, true); -} - -void APE::Tag::setAlbumArtist(const String &s) -{ - addValue("ALBUMARTIST", s, true); -} - -void APE::Tag::setArtist(const String &s) -{ - addValue("ARTIST", s, true); -} - -void APE::Tag::setComposer(const String &s) -{ - addValue("COMPOSER", s, true); -} - -void APE::Tag::setAlbum(const String &s) -{ - addValue("ALBUM", s, true); -} - -void APE::Tag::setUnsyncedlyrics(const String &s) -{ - addValue("UNSYNCED LYRICS", s); -} - -void APE::Tag::setComment(const String &s) -{ - addValue("COMMENT", s, true); -} - -void APE::Tag::setGenre(const String &s) -{ - addValue("GENRE", s, true); -} - -void APE::Tag::setYear(unsigned int i) -{ - if(i == 0) - removeItem("YEAR"); - else - addValue("YEAR", String::number(i), true); -} - -void APE::Tag::setTrack(unsigned int i) -{ - if(i == 0) - removeItem("TRACK"); - else - addValue("TRACK", String::number(i), true); -} - -void APE::Tag::setDisc(unsigned int i) -{ - if(i == 0) - removeItem("DISC"); - else - addValue("DISC", String::number(i), true); -} - -void APE::Tag::setCuesheet(const String &) -{ -} - -void APE::Tag::setRGAlbumGain(float f) -{ - if (f == 0) - removeItem("REPLAYGAIN_ALBUM_GAIN"); - else - addValue("REPLAYGAIN_ALBUM_GAIN", String::number(f) + " dB", true); -} - -void APE::Tag::setRGAlbumPeak(float f) -{ - if (f == 0) - removeItem("REPLAYGAIN_ALBUM_PEAK"); - else - addValue("REPLAYGAIN_ALBUM_PEAK", String::number(f), true); -} - -void APE::Tag::setRGTrackGain(float f) -{ - if (f == 0) - removeItem("REPLAYGAIN_TRACK_GAIN"); - else - addValue("REPLAYGAIN_TRACK_GAIN", String::number(f) + " dB", true); -} - -void APE::Tag::setRGTrackPeak(float f) -{ - if (f == 0) - removeItem("REPLAYGAIN_TRACK_PEAK"); - else - addValue("REPLAYGAIN_TRACK_PEAK", String::number(f), true); -} - -namespace -{ - // conversions of tag keys between what we use in PropertyMap and what's usual - // for APE tags - // usual, APE - const char *keyConversions[][2] = {{"TRACKNUMBER", "TRACK" }, - {"DATE", "YEAR" }, - {"ALBUMARTIST", "ALBUM ARTIST"}, - {"DISCNUMBER", "DISC" }, - {"REMIXER", "MIXARTIST" }, - {"RELEASESTATUS", "MUSICBRAINZ_ALBUMSTATUS" }, - {"RELEASETYPE", "MUSICBRAINZ_ALBUMTYPE" }}; - const size_t keyConversionsSize = sizeof(keyConversions) / sizeof(keyConversions[0]); -} - -PropertyMap APE::Tag::properties() const -{ - PropertyMap properties; - ItemListMap::ConstIterator it = itemListMap().begin(); - for(; it != itemListMap().end(); ++it) { - String tagName = it->first.upper(); - // if the item is Binary or Locator, or if the key is an invalid string, - // add to unsupportedData - if(it->second.type() != Item::Text || tagName.isEmpty()) { - properties.unsupportedData().append(it->first); - } - else { - // Some tags need to be handled specially - for(size_t i = 0; i < keyConversionsSize; ++i) { - if(tagName == keyConversions[i][1]) - tagName = keyConversions[i][0]; - } - properties[tagName].append(it->second.toStringList()); - } - } - return properties; -} - -void APE::Tag::removeUnsupportedProperties(const StringList &properties) -{ - StringList::ConstIterator it = properties.begin(); - for(; it != properties.end(); ++it) - removeItem(*it); -} - -PropertyMap APE::Tag::setProperties(const PropertyMap &origProps) -{ - PropertyMap properties(origProps); // make a local copy that can be modified - - // see comment in properties() - for(size_t i = 0; i < keyConversionsSize; ++i) - if(properties.contains(keyConversions[i][0])) { - properties.insert(keyConversions[i][1], properties[keyConversions[i][0]]); - properties.erase(keyConversions[i][0]); - } - - // first check if tags need to be removed completely - StringList toRemove; - ItemListMap::ConstIterator remIt = itemListMap().begin(); - for(; remIt != itemListMap().end(); ++remIt) { - String key = remIt->first.upper(); - // only remove if a) key is valid, b) type is text, c) key not contained in new properties - if(!key.isEmpty() && remIt->second.type() == APE::Item::Text && !properties.contains(key)) - toRemove.append(remIt->first); - } - - for(StringList::ConstIterator removeIt = toRemove.begin(); removeIt != toRemove.end(); removeIt++) - removeItem(*removeIt); - - // now sync in the "forward direction" - PropertyMap::ConstIterator it = properties.begin(); - PropertyMap invalid; - for(; it != properties.end(); ++it) { - const String &tagName = it->first; - if(!checkKey(tagName)) - invalid.insert(it->first, it->second); - else if(!(itemListMap().contains(tagName)) || !(itemListMap()[tagName].values() == it->second)) { - if(it->second.isEmpty()) - removeItem(tagName); - else { - StringList::ConstIterator valueIt = it->second.begin(); - addValue(tagName, *valueIt, true); - ++valueIt; - for(; valueIt != it->second.end(); ++valueIt) - addValue(tagName, *valueIt, false); - } - } - } - return invalid; -} - -bool APE::Tag::checkKey(const String &key) -{ - if(key.size() < MinKeyLength || key.size() > MaxKeyLength) - return false; - - return isKeyValid(key.data(String::UTF8)); -} - -APE::Footer *APE::Tag::footer() const -{ - return &d->footer; -} - -const APE::ItemListMap& APE::Tag::itemListMap() const -{ - return d->itemListMap; -} - -void APE::Tag::removeItem(const String &key) -{ - d->itemListMap.erase(key.upper()); -} - -void APE::Tag::addValue(const String &key, const String &value, bool replace) -{ - if(replace) - removeItem(key); - - if(value.isEmpty()) - return; - - // Text items may contain more than one value. - // Binary or locator items may have only one value, hence always replaced. - - ItemListMap::Iterator it = d->itemListMap.find(key.upper()); - - if(it != d->itemListMap.end() && it->second.type() == Item::Text) - it->second.appendValue(value); - else - setItem(key, Item(key, value)); -} - -void APE::Tag::setData(const String &key, const ByteVector &value) -{ - removeItem(key); - - if(value.isEmpty()) - return; - - setItem(key, Item(key, value, true)); -} - -void APE::Tag::setItem(const String &key, const Item &item) -{ - if(!checkKey(key)) { - debug("APE::Tag::setItem() - Couldn't set an item due to an invalid key."); - return; - } - - d->itemListMap[key.upper()] = item; -} - -bool APE::Tag::isEmpty() const -{ - return d->itemListMap.isEmpty(); -} - -//////////////////////////////////////////////////////////////////////////////// -// protected methods -//////////////////////////////////////////////////////////////////////////////// - -void APE::Tag::read() -{ - if(d->file && d->file->isValid()) { - - d->file->seek(d->footerLocation); - d->footer.setData(d->file->readBlock(Footer::size())); - - if(d->footer.tagSize() <= Footer::size() || - d->footer.tagSize() > static_cast<unsigned long>(d->file->length())) - return; - - d->file->seek(d->footerLocation + Footer::size() - d->footer.tagSize()); - parse(d->file->readBlock(d->footer.tagSize() - Footer::size())); - } -} - -ByteVector APE::Tag::render() const -{ - ByteVector data; - unsigned int itemCount = 0; - - for(ItemListMap::ConstIterator it = d->itemListMap.begin(); it != d->itemListMap.end(); ++it) { - data.append(it->second.render()); - itemCount++; - } - - d->footer.setItemCount(itemCount); - d->footer.setTagSize(data.size() + Footer::size()); - d->footer.setHeaderPresent(true); - - return d->footer.renderHeader() + data + d->footer.renderFooter(); -} - -void APE::Tag::parse(const ByteVector &data) -{ - // 11 bytes is the minimum size for an APE item - - if(data.size() < 11) - return; - - unsigned int pos = 0; - - for(unsigned int i = 0; i < d->footer.itemCount() && pos <= data.size() - 11; i++) { - - const int nullPos = data.find('\0', pos + 8); - if(nullPos < 0) { - debug("APE::Tag::parse() - Couldn't find a key/value separator. Stopped parsing."); - return; - } - - const unsigned int keyLength = nullPos - pos - 8; - const unsigned int valLegnth = data.toUInt(pos, false); - - if(keyLength >= MinKeyLength - && keyLength <= MaxKeyLength - && isKeyValid(data.mid(pos + 8, keyLength))) - { - APE::Item item; - item.parse(data.mid(pos)); - - d->itemListMap.insert(item.key().upper(), item); - } - else { - debug("APE::Tag::parse() - Skipped an item due to an invalid key."); - } - - pos += keyLength + valLegnth + 9; - } -} diff --git a/Frameworks/TagLib/taglib/taglib/asf/asfattribute.cpp b/Frameworks/TagLib/taglib/taglib/asf/asfattribute.cpp deleted file mode 100644 index 034c81fbb..000000000 --- a/Frameworks/TagLib/taglib/taglib/asf/asfattribute.cpp +++ /dev/null @@ -1,351 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/trefcounter.h> - -#include <taglib/asf/asfattribute.h> -#include <taglib/asf/asffile.h> -#include <taglib/asf/asfutils.h> - -using namespace TagLib; - -class ASF::Attribute::AttributePrivate : public RefCounter -{ -public: - AttributePrivate() : - pictureValue(ASF::Picture::fromInvalid()), - numericValue(0), - stream(0), - language(0) {} - AttributeTypes type; - String stringValue; - ByteVector byteVectorValue; - ASF::Picture pictureValue; - unsigned long long numericValue; - int stream; - int language; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ASF::Attribute::Attribute() : - d(new AttributePrivate()) -{ - d->type = UnicodeType; -} - -ASF::Attribute::Attribute(const ASF::Attribute &other) : - d(other.d) -{ - d->ref(); -} - -ASF::Attribute::Attribute(const String &value) : - d(new AttributePrivate()) -{ - d->type = UnicodeType; - d->stringValue = value; -} - -ASF::Attribute::Attribute(const ByteVector &value) : - d(new AttributePrivate()) -{ - d->type = BytesType; - d->byteVectorValue = value; -} - -ASF::Attribute::Attribute(const ASF::Picture &value) : - d(new AttributePrivate()) -{ - d->type = BytesType; - d->pictureValue = value; -} - -ASF::Attribute::Attribute(unsigned int value) : - d(new AttributePrivate()) -{ - d->type = DWordType; - d->numericValue = value; -} - -ASF::Attribute::Attribute(unsigned long long value) : - d(new AttributePrivate()) -{ - d->type = QWordType; - d->numericValue = value; -} - -ASF::Attribute::Attribute(unsigned short value) : - d(new AttributePrivate()) -{ - d->type = WordType; - d->numericValue = value; -} - -ASF::Attribute::Attribute(bool value) : - d(new AttributePrivate()) -{ - d->type = BoolType; - d->numericValue = value; -} - -ASF::Attribute &ASF::Attribute::operator=(const ASF::Attribute &other) -{ - Attribute(other).swap(*this); - return *this; -} - -void ASF::Attribute::swap(Attribute &other) -{ - using std::swap; - - swap(d, other.d); -} - -ASF::Attribute::~Attribute() -{ - if(d->deref()) - delete d; -} - -ASF::Attribute::AttributeTypes ASF::Attribute::type() const -{ - return d->type; -} - -String ASF::Attribute::toString() const -{ - return d->stringValue; -} - -ByteVector ASF::Attribute::toByteVector() const -{ - if(d->pictureValue.isValid()) - return d->pictureValue.render(); - return d->byteVectorValue; -} - -unsigned short ASF::Attribute::toBool() const -{ - return d->numericValue ? 1 : 0; -} - -unsigned short ASF::Attribute::toUShort() const -{ - return static_cast<unsigned short>(d->numericValue); -} - -unsigned int ASF::Attribute::toUInt() const -{ - return static_cast<unsigned int>(d->numericValue); -} - -unsigned long long ASF::Attribute::toULongLong() const -{ - return static_cast<unsigned long long>(d->numericValue); -} - -ASF::Picture ASF::Attribute::toPicture() const -{ - return d->pictureValue; -} - -String ASF::Attribute::parse(ASF::File &f, int kind) -{ - unsigned int size, nameLength; - String name; - d->pictureValue = Picture::fromInvalid(); - // extended content descriptor - if(kind == 0) { - nameLength = readWORD(&f); - name = readString(&f, nameLength); - d->type = ASF::Attribute::AttributeTypes(readWORD(&f)); - size = readWORD(&f); - } - // metadata & metadata library - else { - int temp = readWORD(&f); - // metadata library - if(kind == 2) { - d->language = temp; - } - d->stream = readWORD(&f); - nameLength = readWORD(&f); - d->type = ASF::Attribute::AttributeTypes(readWORD(&f)); - size = readDWORD(&f); - name = readString(&f, nameLength); - } - - if(kind != 2 && size > 65535) { - debug("ASF::Attribute::parse() -- Value larger than 64kB"); - } - - switch(d->type) { - case WordType: - d->numericValue = readWORD(&f); - break; - - case BoolType: - if(kind == 0) { - d->numericValue = (readDWORD(&f) != 0); - } - else { - d->numericValue = (readWORD(&f) != 0); - } - break; - - case DWordType: - d->numericValue = readDWORD(&f); - break; - - case QWordType: - d->numericValue = readQWORD(&f); - break; - - case UnicodeType: - d->stringValue = readString(&f, size); - break; - - case BytesType: - case GuidType: - d->byteVectorValue = f.readBlock(size); - break; - } - - if(d->type == BytesType && name == "WM/Picture") { - d->pictureValue.parse(d->byteVectorValue); - if(d->pictureValue.isValid()) { - d->byteVectorValue.clear(); - } - } - - return name; -} - -int ASF::Attribute::dataSize() const -{ - switch (d->type) { - case WordType: - return 2; - case BoolType: - return 4; - case DWordType: - return 4; - case QWordType: - return 5; - case UnicodeType: - return d->stringValue.size() * 2 + 2; - case BytesType: - if(d->pictureValue.isValid()) - return d->pictureValue.dataSize(); - case GuidType: - return d->byteVectorValue.size(); - } - return 0; -} - -ByteVector ASF::Attribute::render(const String &name, int kind) const -{ - ByteVector data; - - switch (d->type) { - case WordType: - data.append(ByteVector::fromShort(toUShort(), false)); - break; - - case BoolType: - if(kind == 0) { - data.append(ByteVector::fromUInt(toBool(), false)); - } - else { - data.append(ByteVector::fromShort(toBool(), false)); - } - break; - - case DWordType: - data.append(ByteVector::fromUInt(toUInt(), false)); - break; - - case QWordType: - data.append(ByteVector::fromLongLong(toULongLong(), false)); - break; - - case UnicodeType: - data.append(renderString(d->stringValue)); - break; - - case BytesType: - if(d->pictureValue.isValid()) { - data.append(d->pictureValue.render()); - break; - } - case GuidType: - data.append(d->byteVectorValue); - break; - } - - if(kind == 0) { - data = renderString(name, true) + - ByteVector::fromShort((int)d->type, false) + - ByteVector::fromShort(data.size(), false) + - data; - } - else { - ByteVector nameData = renderString(name); - data = ByteVector::fromShort(kind == 2 ? d->language : 0, false) + - ByteVector::fromShort(d->stream, false) + - ByteVector::fromShort(nameData.size(), false) + - ByteVector::fromShort((int)d->type, false) + - ByteVector::fromUInt(data.size(), false) + - nameData + - data; - } - - return data; -} - -int ASF::Attribute::language() const -{ - return d->language; -} - -void ASF::Attribute::setLanguage(int value) -{ - d->language = value; -} - -int ASF::Attribute::stream() const -{ - return d->stream; -} - -void ASF::Attribute::setStream(int value) -{ - d->stream = value; -} diff --git a/Frameworks/TagLib/taglib/taglib/asf/asffile.cpp b/Frameworks/TagLib/taglib/taglib/asf/asffile.cpp deleted file mode 100644 index 8120cfa39..000000000 --- a/Frameworks/TagLib/taglib/taglib/asf/asffile.cpp +++ /dev/null @@ -1,705 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/tagutils.h> - -#include <taglib/asf/asffile.h> -#include <taglib/asf/asftag.h> -#include <taglib/asf/asfproperties.h> -#include <taglib/asf/asfutils.h> - -using namespace TagLib; - -class ASF::File::FilePrivate -{ -public: - class BaseObject; - class UnknownObject; - class FilePropertiesObject; - class StreamPropertiesObject; - class ContentDescriptionObject; - class ExtendedContentDescriptionObject; - class HeaderExtensionObject; - class CodecListObject; - class MetadataObject; - class MetadataLibraryObject; - - FilePrivate(): - headerSize(0), - tag(0), - properties(0), - contentDescriptionObject(0), - extendedContentDescriptionObject(0), - headerExtensionObject(0), - metadataObject(0), - metadataLibraryObject(0) - { - objects.setAutoDelete(true); - } - - ~FilePrivate() - { - delete tag; - delete properties; - } - - unsigned long long headerSize; - - ASF::Tag *tag; - ASF::Properties *properties; - - List<BaseObject *> objects; - - ContentDescriptionObject *contentDescriptionObject; - ExtendedContentDescriptionObject *extendedContentDescriptionObject; - HeaderExtensionObject *headerExtensionObject; - MetadataObject *metadataObject; - MetadataLibraryObject *metadataLibraryObject; -}; - -namespace -{ - const ByteVector headerGuid("\x30\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); - const ByteVector filePropertiesGuid("\xA1\xDC\xAB\x8C\x47\xA9\xCF\x11\x8E\xE4\x00\xC0\x0C\x20\x53\x65", 16); - const ByteVector streamPropertiesGuid("\x91\x07\xDC\xB7\xB7\xA9\xCF\x11\x8E\xE6\x00\xC0\x0C\x20\x53\x65", 16); - const ByteVector contentDescriptionGuid("\x33\x26\xB2\x75\x8E\x66\xCF\x11\xA6\xD9\x00\xAA\x00\x62\xCE\x6C", 16); - const ByteVector extendedContentDescriptionGuid("\x40\xA4\xD0\xD2\x07\xE3\xD2\x11\x97\xF0\x00\xA0\xC9\x5E\xA8\x50", 16); - const ByteVector headerExtensionGuid("\xb5\x03\xbf_.\xa9\xcf\x11\x8e\xe3\x00\xc0\x0c Se", 16); - const ByteVector metadataGuid("\xEA\xCB\xF8\xC5\xAF[wH\204g\xAA\214D\xFAL\xCA", 16); - const ByteVector metadataLibraryGuid("\224\034#D\230\224\321I\241A\x1d\x13NEpT", 16); - const ByteVector codecListGuid("\x40\x52\xd1\x86\x1d\x31\xd0\x11\xa3\xa4\x00\xa0\xc9\x03\x48\xf6", 16); - const ByteVector contentEncryptionGuid("\xFB\xB3\x11\x22\x23\xBD\xD2\x11\xB4\xB7\x00\xA0\xC9\x55\xFC\x6E", 16); - const ByteVector extendedContentEncryptionGuid("\x14\xE6\x8A\x29\x22\x26 \x17\x4C\xB9\x35\xDA\xE0\x7E\xE9\x28\x9C", 16); - const ByteVector advancedContentEncryptionGuid("\xB6\x9B\x07\x7A\xA4\xDA\x12\x4E\xA5\xCA\x91\xD3\x8D\xC1\x1A\x8D", 16); -} - -class ASF::File::FilePrivate::BaseObject -{ -public: - ByteVector data; - virtual ~BaseObject() {} - virtual ByteVector guid() const = 0; - virtual void parse(ASF::File *file, unsigned int size); - virtual ByteVector render(ASF::File *file); -}; - -class ASF::File::FilePrivate::UnknownObject : public ASF::File::FilePrivate::BaseObject -{ - ByteVector myGuid; -public: - UnknownObject(const ByteVector &guid); - ByteVector guid() const; -}; - -class ASF::File::FilePrivate::FilePropertiesObject : public ASF::File::FilePrivate::BaseObject -{ -public: - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); -}; - -class ASF::File::FilePrivate::StreamPropertiesObject : public ASF::File::FilePrivate::BaseObject -{ -public: - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); -}; - -class ASF::File::FilePrivate::ContentDescriptionObject : public ASF::File::FilePrivate::BaseObject -{ -public: - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::FilePrivate::ExtendedContentDescriptionObject : public ASF::File::FilePrivate::BaseObject -{ -public: - ByteVectorList attributeData; - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::FilePrivate::MetadataObject : public ASF::File::FilePrivate::BaseObject -{ -public: - ByteVectorList attributeData; - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::FilePrivate::MetadataLibraryObject : public ASF::File::FilePrivate::BaseObject -{ -public: - ByteVectorList attributeData; - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::FilePrivate::HeaderExtensionObject : public ASF::File::FilePrivate::BaseObject -{ -public: - List<ASF::File::FilePrivate::BaseObject *> objects; - HeaderExtensionObject(); - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); - ByteVector render(ASF::File *file); -}; - -class ASF::File::FilePrivate::CodecListObject : public ASF::File::FilePrivate::BaseObject -{ -public: - ByteVector guid() const; - void parse(ASF::File *file, unsigned int size); - -private: - enum CodecType - { - Video = 0x0001, - Audio = 0x0002, - Unknown = 0xFFFF - }; -}; - -void ASF::File::FilePrivate::BaseObject::parse(ASF::File *file, unsigned int size) -{ - data.clear(); - if(size > 24 && size <= (unsigned int)(file->length())) - data = file->readBlock(size - 24); - else - data = ByteVector(); -} - -ByteVector ASF::File::FilePrivate::BaseObject::render(ASF::File * /*file*/) -{ - return guid() + ByteVector::fromLongLong(data.size() + 24, false) + data; -} - -ASF::File::FilePrivate::UnknownObject::UnknownObject(const ByteVector &guid) : myGuid(guid) -{ -} - -ByteVector ASF::File::FilePrivate::UnknownObject::guid() const -{ - return myGuid; -} - -ByteVector ASF::File::FilePrivate::FilePropertiesObject::guid() const -{ - return filePropertiesGuid; -} - -void ASF::File::FilePrivate::FilePropertiesObject::parse(ASF::File *file, unsigned int size) -{ - BaseObject::parse(file, size); - if(data.size() < 64) { - debug("ASF::File::FilePrivate::FilePropertiesObject::parse() -- data is too short."); - return; - } - - const long long duration = data.toLongLong(40, false); - const long long preroll = data.toLongLong(56, false); - file->d->properties->setLengthInMilliseconds(static_cast<int>(duration / 10000.0 - preroll + 0.5)); -} - -ByteVector ASF::File::FilePrivate::StreamPropertiesObject::guid() const -{ - return streamPropertiesGuid; -} - -void ASF::File::FilePrivate::StreamPropertiesObject::parse(ASF::File *file, unsigned int size) -{ - BaseObject::parse(file, size); - if(data.size() < 70) { - debug("ASF::File::FilePrivate::StreamPropertiesObject::parse() -- data is too short."); - return; - } - - file->d->properties->setCodec(data.toUShort(54, false)); - file->d->properties->setChannels(data.toUShort(56, false)); - file->d->properties->setSampleRate(data.toUInt(58, false)); - file->d->properties->setBitrate(static_cast<int>(data.toUInt(62, false) * 8.0 / 1000.0 + 0.5)); - file->d->properties->setBitsPerSample(data.toUShort(68, false)); -} - -ByteVector ASF::File::FilePrivate::ContentDescriptionObject::guid() const -{ - return contentDescriptionGuid; -} - -void ASF::File::FilePrivate::ContentDescriptionObject::parse(ASF::File *file, unsigned int /*size*/) -{ - const int titleLength = readWORD(file); - const int artistLength = readWORD(file); - const int copyrightLength = readWORD(file); - const int commentLength = readWORD(file); - const int ratingLength = readWORD(file); - file->d->tag->setTitle(readString(file,titleLength)); - file->d->tag->setArtist(readString(file,artistLength)); - file->d->tag->setCopyright(readString(file,copyrightLength)); - file->d->tag->setComment(readString(file,commentLength)); - file->d->tag->setRating(readString(file,ratingLength)); -} - -ByteVector ASF::File::FilePrivate::ContentDescriptionObject::render(ASF::File *file) -{ - const ByteVector v1 = renderString(file->d->tag->title()); - const ByteVector v2 = renderString(file->d->tag->artist()); - const ByteVector v3 = renderString(file->d->tag->copyright()); - const ByteVector v4 = renderString(file->d->tag->comment()); - const ByteVector v5 = renderString(file->d->tag->rating()); - data.clear(); - data.append(ByteVector::fromShort(v1.size(), false)); - data.append(ByteVector::fromShort(v2.size(), false)); - data.append(ByteVector::fromShort(v3.size(), false)); - data.append(ByteVector::fromShort(v4.size(), false)); - data.append(ByteVector::fromShort(v5.size(), false)); - data.append(v1); - data.append(v2); - data.append(v3); - data.append(v4); - data.append(v5); - return BaseObject::render(file); -} - -ByteVector ASF::File::FilePrivate::ExtendedContentDescriptionObject::guid() const -{ - return extendedContentDescriptionGuid; -} - -void ASF::File::FilePrivate::ExtendedContentDescriptionObject::parse(ASF::File *file, unsigned int /*size*/) -{ - int count = readWORD(file); - while(count--) { - ASF::Attribute attribute; - String name = attribute.parse(*file); - file->d->tag->addAttribute(name, attribute); - } -} - -ByteVector ASF::File::FilePrivate::ExtendedContentDescriptionObject::render(ASF::File *file) -{ - data.clear(); - data.append(ByteVector::fromShort(attributeData.size(), false)); - data.append(attributeData.toByteVector("")); - return BaseObject::render(file); -} - -ByteVector ASF::File::FilePrivate::MetadataObject::guid() const -{ - return metadataGuid; -} - -void ASF::File::FilePrivate::MetadataObject::parse(ASF::File *file, unsigned int /*size*/) -{ - int count = readWORD(file); - while(count--) { - ASF::Attribute attribute; - String name = attribute.parse(*file, 1); - file->d->tag->addAttribute(name, attribute); - } -} - -ByteVector ASF::File::FilePrivate::MetadataObject::render(ASF::File *file) -{ - data.clear(); - data.append(ByteVector::fromShort(attributeData.size(), false)); - data.append(attributeData.toByteVector("")); - return BaseObject::render(file); -} - -ByteVector ASF::File::FilePrivate::MetadataLibraryObject::guid() const -{ - return metadataLibraryGuid; -} - -void ASF::File::FilePrivate::MetadataLibraryObject::parse(ASF::File *file, unsigned int /*size*/) -{ - int count = readWORD(file); - while(count--) { - ASF::Attribute attribute; - String name = attribute.parse(*file, 2); - file->d->tag->addAttribute(name, attribute); - } -} - -ByteVector ASF::File::FilePrivate::MetadataLibraryObject::render(ASF::File *file) -{ - data.clear(); - data.append(ByteVector::fromShort(attributeData.size(), false)); - data.append(attributeData.toByteVector("")); - return BaseObject::render(file); -} - -ASF::File::FilePrivate::HeaderExtensionObject::HeaderExtensionObject() -{ - objects.setAutoDelete(true); -} - -ByteVector ASF::File::FilePrivate::HeaderExtensionObject::guid() const -{ - return headerExtensionGuid; -} - -void ASF::File::FilePrivate::HeaderExtensionObject::parse(ASF::File *file, unsigned int /*size*/) -{ - file->seek(18, File::Current); - long long dataSize = readDWORD(file); - long long dataPos = 0; - while(dataPos < dataSize) { - ByteVector guid = file->readBlock(16); - if(guid.size() != 16) { - file->setValid(false); - break; - } - bool ok; - long long size = readQWORD(file, &ok); - if(!ok) { - file->setValid(false); - break; - } - BaseObject *obj; - if(guid == metadataGuid) { - file->d->metadataObject = new MetadataObject(); - obj = file->d->metadataObject; - } - else if(guid == metadataLibraryGuid) { - file->d->metadataLibraryObject = new MetadataLibraryObject(); - obj = file->d->metadataLibraryObject; - } - else { - obj = new UnknownObject(guid); - } - obj->parse(file, (unsigned int)size); - objects.append(obj); - dataPos += size; - } -} - -ByteVector ASF::File::FilePrivate::HeaderExtensionObject::render(ASF::File *file) -{ - data.clear(); - for(List<BaseObject *>::ConstIterator it = objects.begin(); it != objects.end(); ++it) { - data.append((*it)->render(file)); - } - data = ByteVector("\x11\xD2\xD3\xAB\xBA\xA9\xcf\x11\x8E\xE6\x00\xC0\x0C\x20\x53\x65\x06\x00", 18) + ByteVector::fromUInt(data.size(), false) + data; - return BaseObject::render(file); -} - -ByteVector ASF::File::FilePrivate::CodecListObject::guid() const -{ - return codecListGuid; -} - -void ASF::File::FilePrivate::CodecListObject::parse(ASF::File *file, unsigned int size) -{ - BaseObject::parse(file, size); - if(data.size() <= 20) { - debug("ASF::File::FilePrivate::CodecListObject::parse() -- data is too short."); - return; - } - - unsigned int pos = 16; - - const int count = data.toUInt(pos, false); - pos += 4; - - for(int i = 0; i < count; ++i) { - - if(pos >= data.size()) - break; - - const CodecType type = static_cast<CodecType>(data.toUShort(pos, false)); - pos += 2; - - int nameLength = data.toUShort(pos, false); - pos += 2; - - const unsigned int namePos = pos; - pos += nameLength * 2; - - const int descLength = data.toUShort(pos, false); - pos += 2; - - const unsigned int descPos = pos; - pos += descLength * 2; - - const int infoLength = data.toUShort(pos, false); - pos += 2 + infoLength * 2; - - if(type == CodecListObject::Audio) { - // First audio codec found. - - const String name(data.mid(namePos, nameLength * 2), String::UTF16LE); - file->d->properties->setCodecName(name.stripWhiteSpace()); - - const String desc(data.mid(descPos, descLength * 2), String::UTF16LE); - file->d->properties->setCodecDescription(desc.stripWhiteSpace()); - - break; - } - } -} - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool ASF::File::isSupported(IOStream *stream) -{ - // An ASF file has to start with the designated GUID. - - const ByteVector id = Utils::readHeader(stream, 16, false); - return (id == headerGuid); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ASF::File::File(FileName file, bool, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(); -} - -ASF::File::File(IOStream *stream, bool, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(); -} - -ASF::File::~File() -{ - delete d; -} - -ASF::Tag *ASF::File::tag() const -{ - return d->tag; -} - -PropertyMap ASF::File::properties() const -{ - return d->tag->properties(); -} - -void ASF::File::removeUnsupportedProperties(const StringList &properties) -{ - d->tag->removeUnsupportedProperties(properties); -} - -PropertyMap ASF::File::setProperties(const PropertyMap &properties) -{ - return d->tag->setProperties(properties); -} - -ASF::Properties *ASF::File::audioProperties() const -{ - return d->properties; -} - -bool ASF::File::save() -{ - if(readOnly()) { - debug("ASF::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("ASF::File::save() -- Trying to save invalid file."); - return false; - } - - if(!d->contentDescriptionObject) { - d->contentDescriptionObject = new FilePrivate::ContentDescriptionObject(); - d->objects.append(d->contentDescriptionObject); - } - if(!d->extendedContentDescriptionObject) { - d->extendedContentDescriptionObject = new FilePrivate::ExtendedContentDescriptionObject(); - d->objects.append(d->extendedContentDescriptionObject); - } - if(!d->headerExtensionObject) { - d->headerExtensionObject = new FilePrivate::HeaderExtensionObject(); - d->objects.append(d->headerExtensionObject); - } - if(!d->metadataObject) { - d->metadataObject = new FilePrivate::MetadataObject(); - d->headerExtensionObject->objects.append(d->metadataObject); - } - if(!d->metadataLibraryObject) { - d->metadataLibraryObject = new FilePrivate::MetadataLibraryObject(); - d->headerExtensionObject->objects.append(d->metadataLibraryObject); - } - - d->extendedContentDescriptionObject->attributeData.clear(); - d->metadataObject->attributeData.clear(); - d->metadataLibraryObject->attributeData.clear(); - - const AttributeListMap allAttributes = d->tag->attributeListMap(); - - for(AttributeListMap::ConstIterator it = allAttributes.begin(); it != allAttributes.end(); ++it) { - - const String &name = it->first; - const AttributeList &attributes = it->second; - - bool inExtendedContentDescriptionObject = false; - bool inMetadataObject = false; - - for(AttributeList::ConstIterator jt = attributes.begin(); jt != attributes.end(); ++jt) { - - const Attribute &attribute = *jt; - const bool largeValue = (attribute.dataSize() > 65535); - const bool guid = (attribute.type() == Attribute::GuidType); - - if(!inExtendedContentDescriptionObject && !guid && !largeValue && attribute.language() == 0 && attribute.stream() == 0) { - d->extendedContentDescriptionObject->attributeData.append(attribute.render(name)); - inExtendedContentDescriptionObject = true; - } - else if(!inMetadataObject && !guid && !largeValue && attribute.language() == 0 && attribute.stream() != 0) { - d->metadataObject->attributeData.append(attribute.render(name, 1)); - inMetadataObject = true; - } - else { - d->metadataLibraryObject->attributeData.append(attribute.render(name, 2)); - } - } - } - - ByteVector data; - for(List<FilePrivate::BaseObject *>::ConstIterator it = d->objects.begin(); it != d->objects.end(); ++it) { - data.append((*it)->render(this)); - } - - seek(16); - writeBlock(ByteVector::fromLongLong(data.size() + 30, false)); - writeBlock(ByteVector::fromUInt(d->objects.size(), false)); - writeBlock(ByteVector("\x01\x02", 2)); - - insert(data, 30, static_cast<unsigned long>(d->headerSize - 30)); - - d->headerSize = data.size() + 30; - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void ASF::File::read() -{ - if(!isValid()) - return; - - if(readBlock(16) != headerGuid) { - debug("ASF::File::read(): Not an ASF file."); - setValid(false); - return; - } - - d->tag = new ASF::Tag(); - d->properties = new ASF::Properties(); - - bool ok; - d->headerSize = readQWORD(this, &ok); - if(!ok) { - setValid(false); - return; - } - int numObjects = readDWORD(this, &ok); - if(!ok) { - setValid(false); - return; - } - seek(2, Current); - - FilePrivate::FilePropertiesObject *filePropertiesObject = 0; - FilePrivate::StreamPropertiesObject *streamPropertiesObject = 0; - for(int i = 0; i < numObjects; i++) { - const ByteVector guid = readBlock(16); - if(guid.size() != 16) { - setValid(false); - break; - } - long size = (long)readQWORD(this, &ok); - if(!ok) { - setValid(false); - break; - } - FilePrivate::BaseObject *obj; - if(guid == filePropertiesGuid) { - filePropertiesObject = new FilePrivate::FilePropertiesObject(); - obj = filePropertiesObject; - } - else if(guid == streamPropertiesGuid) { - streamPropertiesObject = new FilePrivate::StreamPropertiesObject(); - obj = streamPropertiesObject; - } - else if(guid == contentDescriptionGuid) { - d->contentDescriptionObject = new FilePrivate::ContentDescriptionObject(); - obj = d->contentDescriptionObject; - } - else if(guid == extendedContentDescriptionGuid) { - d->extendedContentDescriptionObject = new FilePrivate::ExtendedContentDescriptionObject(); - obj = d->extendedContentDescriptionObject; - } - else if(guid == headerExtensionGuid) { - d->headerExtensionObject = new FilePrivate::HeaderExtensionObject(); - obj = d->headerExtensionObject; - } - else if(guid == codecListGuid) { - obj = new FilePrivate::CodecListObject(); - } - else { - if(guid == contentEncryptionGuid || - guid == extendedContentEncryptionGuid || - guid == advancedContentEncryptionGuid) { - d->properties->setEncrypted(true); - } - obj = new FilePrivate::UnknownObject(guid); - } - obj->parse(this, size); - d->objects.append(obj); - } - - if(!filePropertiesObject || !streamPropertiesObject) { - debug("ASF::File::read(): Missing mandatory header objects."); - setValid(false); - return; - } -} diff --git a/Frameworks/TagLib/taglib/taglib/asf/asfpicture.cpp b/Frameworks/TagLib/taglib/taglib/asf/asfpicture.cpp deleted file mode 100644 index 6cada46a4..000000000 --- a/Frameworks/TagLib/taglib/taglib/asf/asfpicture.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Anton Sergunov - email : setosha@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/trefcounter.h> - -#include <taglib/asf/asfattribute.h> -#include <taglib/asf/asffile.h> -#include <taglib/asf/asfpicture.h> -#include <taglib/asf/asfutils.h> - -using namespace TagLib; - -class ASF::Picture::PicturePrivate : public RefCounter -{ -public: - bool valid; - Type type; - String mimeType; - String description; - ByteVector picture; -}; - -//////////////////////////////////////////////////////////////////////////////// -// Picture class members -//////////////////////////////////////////////////////////////////////////////// - -ASF::Picture::Picture() : - d(new PicturePrivate()) -{ - d->valid = true; -} - -ASF::Picture::Picture(const Picture& other) : - d(other.d) -{ - d->ref(); -} - -ASF::Picture::~Picture() -{ - if(d->deref()) - delete d; -} - -bool ASF::Picture::isValid() const -{ - return d->valid; -} - -String ASF::Picture::mimeType() const -{ - return d->mimeType; -} - -void ASF::Picture::setMimeType(const String &value) -{ - d->mimeType = value; -} - -ASF::Picture::Type ASF::Picture::type() const -{ - return d->type; -} - -void ASF::Picture::setType(const ASF::Picture::Type& t) -{ - d->type = t; -} - -String ASF::Picture::description() const -{ - return d->description; -} - -void ASF::Picture::setDescription(const String &desc) -{ - d->description = desc; -} - -ByteVector ASF::Picture::picture() const -{ - return d->picture; -} - -void ASF::Picture::setPicture(const ByteVector &p) -{ - d->picture = p; -} - -int ASF::Picture::dataSize() const -{ - return - 9 + (d->mimeType.length() + d->description.length()) * 2 + - d->picture.size(); -} - -ASF::Picture& ASF::Picture::operator=(const ASF::Picture& other) -{ - Picture(other).swap(*this); - return *this; -} - -void ASF::Picture::swap(Picture &other) -{ - using std::swap; - - swap(d, other.d); -} - -ByteVector ASF::Picture::render() const -{ - if(!isValid()) - return ByteVector(); - - return - ByteVector((char)d->type) + - ByteVector::fromUInt(d->picture.size(), false) + - renderString(d->mimeType) + - renderString(d->description) + - d->picture; -} - -void ASF::Picture::parse(const ByteVector& bytes) -{ - d->valid = false; - if(bytes.size() < 9) - return; - int pos = 0; - d->type = (Type)bytes[0]; ++pos; - const unsigned int dataLen = bytes.toUInt(pos, false); pos+=4; - - const ByteVector nullStringTerminator(2, 0); - - int endPos = bytes.find(nullStringTerminator, pos, 2); - if(endPos < 0) - return; - d->mimeType = String(bytes.mid(pos, endPos - pos), String::UTF16LE); - pos = endPos+2; - - endPos = bytes.find(nullStringTerminator, pos, 2); - if(endPos < 0) - return; - d->description = String(bytes.mid(pos, endPos - pos), String::UTF16LE); - pos = endPos+2; - - if(dataLen + pos != bytes.size()) - return; - - d->picture = bytes.mid(pos, dataLen); - d->valid = true; - return; -} - -ASF::Picture ASF::Picture::fromInvalid() -{ - Picture ret; - ret.d->valid = false; - return ret; -} diff --git a/Frameworks/TagLib/taglib/taglib/asf/asfproperties.cpp b/Frameworks/TagLib/taglib/taglib/asf/asfproperties.cpp deleted file mode 100644 index c2e725f01..000000000 --- a/Frameworks/TagLib/taglib/taglib/asf/asfproperties.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/asf/asfproperties.h> - -using namespace TagLib; - -class ASF::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - bitsPerSample(0), - codec(ASF::Properties::Unknown), - encrypted(false) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int bitsPerSample; - ASF::Properties::Codec codec; - String codecName; - String codecDescription; - bool encrypted; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ASF::Properties::Properties() : - AudioProperties(AudioProperties::Average), - d(new PropertiesPrivate()) -{ -} - -ASF::Properties::~Properties() -{ - delete d; -} - -int ASF::Properties::length() const -{ - return lengthInSeconds(); -} - -int ASF::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int ASF::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int ASF::Properties::bitrate() const -{ - return d->bitrate; -} - -int ASF::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int ASF::Properties::channels() const -{ - return d->channels; -} - -int ASF::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -ASF::Properties::Codec ASF::Properties::codec() const -{ - return d->codec; -} - -String ASF::Properties::codecName() const -{ - return d->codecName; -} - -String ASF::Properties::codecDescription() const -{ - return d->codecDescription; -} - -bool ASF::Properties::isEncrypted() const -{ - return d->encrypted; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void ASF::Properties::setLength(int /*length*/) -{ - debug("ASF::Properties::setLength() -- This method is deprecated. Do not use."); -} - -void ASF::Properties::setLengthInMilliseconds(int value) -{ - d->length = value; -} - -void ASF::Properties::setBitrate(int value) -{ - d->bitrate = value; -} - -void ASF::Properties::setSampleRate(int value) -{ - d->sampleRate = value; -} - -void ASF::Properties::setChannels(int value) -{ - d->channels = value; -} - -void ASF::Properties::setBitsPerSample(int value) -{ - d->bitsPerSample = value; -} - -void ASF::Properties::setCodec(int value) -{ - switch(value) - { - case 0x0160: - d->codec = WMA1; - break; - case 0x0161: - d->codec = WMA2; - break; - case 0x0162: - d->codec = WMA9Pro; - break; - case 0x0163: - d->codec = WMA9Lossless; - break; - default: - d->codec = Unknown; - break; - } -} - -void ASF::Properties::setCodecName(const String &value) -{ - d->codecName = value; -} - -void ASF::Properties::setCodecDescription(const String &value) -{ - d->codecDescription = value; -} - -void ASF::Properties::setEncrypted(bool value) -{ - d->encrypted = value; -} diff --git a/Frameworks/TagLib/taglib/taglib/asf/asftag.cpp b/Frameworks/TagLib/taglib/taglib/asf/asftag.cpp deleted file mode 100644 index 21d82aa3e..000000000 --- a/Frameworks/TagLib/taglib/taglib/asf/asftag.cpp +++ /dev/null @@ -1,489 +0,0 @@ -/************************************************************************** - copyright : (C) 2005-2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/asf/asftag.h> - -using namespace TagLib; - -class ASF::Tag::TagPrivate -{ -public: - String title; - String artist; - String copyright; - String comment; - String rating; - AttributeListMap attributeListMap; -}; - -ASF::Tag::Tag() : - TagLib::Tag(), - d(new TagPrivate()) -{ -} - -ASF::Tag::~Tag() -{ - delete d; -} - -String ASF::Tag::title() const -{ - return d->title; -} - -String ASF::Tag::albumartist() const -{ - if(d->attributeListMap.contains("WM/AlbumArtist")) - return d->attributeListMap["WM/AlbumArtist"][0].toString(); - return String(); -} - -String ASF::Tag::artist() const -{ - return d->artist; -} - -String ASF::Tag::composer() const -{ - if(d->attributeListMap.contains("WM/Composer")) - return d->attributeListMap["WM/Composer"][0].toString(); - return String(); -} - -String ASF::Tag::album() const -{ - if(d->attributeListMap.contains("WM/AlbumTitle")) - return d->attributeListMap["WM/AlbumTitle"][0].toString(); - return String(); -} - -String ASF::Tag::unsyncedlyrics() const -{ - if(d->attributeListMap.contains("WM/Lyrics")) - return d->attributeListMap["WM/Lyrics"][0].toString(); - return String(); -} - -String ASF::Tag::copyright() const -{ - return d->copyright; -} - -String ASF::Tag::comment() const -{ - return d->comment; -} - -String ASF::Tag::rating() const -{ - return d->rating; -} - -unsigned int ASF::Tag::year() const -{ - if(d->attributeListMap.contains("WM/Year")) - return d->attributeListMap["WM/Year"][0].toString().toInt(); - return 0; -} - -unsigned int ASF::Tag::track() const -{ - if(d->attributeListMap.contains("WM/TrackNumber")) { - const ASF::Attribute attr = d->attributeListMap["WM/TrackNumber"][0]; - if(attr.type() == ASF::Attribute::DWordType) - return attr.toUInt(); - else - return attr.toString().toInt(); - } - if(d->attributeListMap.contains("WM/Track")) - return d->attributeListMap["WM/Track"][0].toUInt(); - return 0; -} - -unsigned int ASF::Tag::disc() const -{ - if(d->attributeListMap.contains("WM/DiscNumber")) { - const ASF::Attribute attr = d->attributeListMap["WM/DiscNumber"][0]; - if(attr.type() == ASF::Attribute::DWordType) - return attr.toUInt(); - else - return attr.toString().toInt(); - } - if(d->attributeListMap.contains("WM/Disc")) - return d->attributeListMap["WM/Disc"][0].toUInt(); - return 0; -} - -String ASF::Tag::genre() const -{ - if(d->attributeListMap.contains("WM/Genre")) - return d->attributeListMap["WM/Genre"][0].toString(); - return String(); -} - -String ASF::Tag::cuesheet() const -{ - return String(); -} - -float ASF::Tag::rgAlbumGain() const -{ - return 0; -} - -float ASF::Tag::rgAlbumPeak() const -{ - return 0; -} - -float ASF::Tag::rgTrackGain() const -{ - return 0; -} - -float ASF::Tag::rgTrackPeak() const -{ - return 0; -} - -String ASF::Tag::soundcheck() const -{ - return String(); -} - -void ASF::Tag::setTitle(const String &value) -{ - d->title = value; -} - -void ASF::Tag::setAlbumArtist(const String &value) -{ - setAttribute("WM/AlbumArtist", value); -} - -void ASF::Tag::setArtist(const String &value) -{ - d->artist = value; -} - -void ASF::Tag::setComposer(const String &value) -{ - setAttribute("WM/Composer", value); -} - -void ASF::Tag::setCopyright(const String &value) -{ - d->copyright = value; -} - -void ASF::Tag::setComment(const String &value) -{ - d->comment = value; -} - -void ASF::Tag::setRating(const String &value) -{ - d->rating = value; -} - -void ASF::Tag::setAlbum(const String &value) -{ - setAttribute("WM/AlbumTitle", value); -} - -void ASF::Tag::setUnsyncedlyrics(const String &value) -{ - setAttribute("WM/Lyrics", value); -} - -void ASF::Tag::setGenre(const String &value) -{ - setAttribute("WM/Genre", value); -} - -void ASF::Tag::setYear(unsigned int value) -{ - setAttribute("WM/Year", String::number(value)); -} - -void ASF::Tag::setTrack(unsigned int value) -{ - setAttribute("WM/TrackNumber", String::number(value)); -} - -void ASF::Tag::setDisc(unsigned int value) -{ - setAttribute("WM/DiscNumber", String::number(value)); -} - -void ASF::Tag::setCuesheet(const String &) -{ -} - -void ASF::Tag::setRGAlbumGain(float) -{ -} - -void ASF::Tag::setRGAlbumPeak(float) -{ -} - -void ASF::Tag::setRGTrackGain(float) -{ -} - -void ASF::Tag::setRGTrackPeak(float) -{ -} - -ASF::AttributeListMap& ASF::Tag::attributeListMap() -{ - return d->attributeListMap; -} - -const ASF::AttributeListMap &ASF::Tag::attributeListMap() const -{ - return d->attributeListMap; -} - -bool ASF::Tag::contains(const String &key) const -{ - return d->attributeListMap.contains(key); -} - -void ASF::Tag::removeItem(const String &key) -{ - d->attributeListMap.erase(key); -} - -ASF::AttributeList ASF::Tag::attribute(const String &name) const -{ - return d->attributeListMap[name]; -} - -void ASF::Tag::setAttribute(const String &name, const Attribute &attribute) -{ - AttributeList value; - value.append(attribute); - d->attributeListMap.insert(name, value); -} - -void ASF::Tag::setAttribute(const String &name, const AttributeList &values) -{ - d->attributeListMap.insert(name, values); -} - -void ASF::Tag::addAttribute(const String &name, const Attribute &attribute) -{ - if(d->attributeListMap.contains(name)) { - d->attributeListMap[name].append(attribute); - } - else { - setAttribute(name, attribute); - } -} - -bool ASF::Tag::isEmpty() const -{ - return TagLib::Tag::isEmpty() && - copyright().isEmpty() && - rating().isEmpty() && - d->attributeListMap.isEmpty(); -} - -namespace -{ - const char *keyTranslation[][2] = { - { "WM/AlbumTitle", "ALBUM" }, - { "WM/AlbumArtist", "ALBUMARTIST" }, - { "WM/Composer", "COMPOSER" }, - { "WM/Writer", "LYRICIST" }, - { "WM/Conductor", "CONDUCTOR" }, - { "WM/ModifiedBy", "REMIXER" }, - { "WM/Year", "DATE" }, - { "WM/OriginalReleaseYear", "ORIGINALDATE" }, - { "WM/Producer", "PRODUCER" }, - { "WM/ContentGroupDescription", "GROUPING" }, - { "WM/SubTitle", "SUBTITLE" }, - { "WM/SetSubTitle", "DISCSUBTITLE" }, - { "WM/TrackNumber", "TRACKNUMBER" }, - { "WM/PartOfSet", "DISCNUMBER" }, - { "WM/Genre", "GENRE" }, - { "WM/BeatsPerMinute", "BPM" }, - { "WM/Mood", "MOOD" }, - { "WM/ISRC", "ISRC" }, - { "WM/Lyrics", "LYRICS" }, - { "WM/Media", "MEDIA" }, - { "WM/Publisher", "LABEL" }, - { "WM/CatalogNo", "CATALOGNUMBER" }, - { "WM/Barcode", "BARCODE" }, - { "WM/EncodedBy", "ENCODEDBY" }, - { "WM/AlbumSortOrder", "ALBUMSORT" }, - { "WM/AlbumArtistSortOrder", "ALBUMARTISTSORT" }, - { "WM/ArtistSortOrder", "ARTISTSORT" }, - { "WM/TitleSortOrder", "TITLESORT" }, - { "WM/Script", "SCRIPT" }, - { "WM/Language", "LANGUAGE" }, - { "WM/ARTISTS", "ARTISTS" }, - { "ASIN", "ASIN" }, - { "MusicBrainz/Track Id", "MUSICBRAINZ_TRACKID" }, - { "MusicBrainz/Artist Id", "MUSICBRAINZ_ARTISTID" }, - { "MusicBrainz/Album Id", "MUSICBRAINZ_ALBUMID" }, - { "MusicBrainz/Album Artist Id", "MUSICBRAINZ_ALBUMARTISTID" }, - { "MusicBrainz/Album Release Country", "RELEASECOUNTRY" }, - { "MusicBrainz/Album Status", "RELEASESTATUS" }, - { "MusicBrainz/Album Type", "RELEASETYPE" }, - { "MusicBrainz/Release Group Id", "MUSICBRAINZ_RELEASEGROUPID" }, - { "MusicBrainz/Release Track Id", "MUSICBRAINZ_RELEASETRACKID" }, - { "MusicBrainz/Work Id", "MUSICBRAINZ_WORKID" }, - { "MusicIP/PUID", "MUSICIP_PUID" }, - { "Acoustid/Id", "ACOUSTID_ID" }, - { "Acoustid/Fingerprint", "ACOUSTID_FINGERPRINT" }, - }; - const size_t keyTranslationSize = sizeof(keyTranslation) / sizeof(keyTranslation[0]); - - String translateKey(const String &key) - { - for(size_t i = 0; i < keyTranslationSize; ++i) { - if(key == keyTranslation[i][0]) - return keyTranslation[i][1]; - } - - return String(); - } -} - -PropertyMap ASF::Tag::properties() const -{ - PropertyMap props; - - if(!d->title.isEmpty()) { - props["TITLE"] = d->title; - } - if(!d->artist.isEmpty()) { - props["ARTIST"] = d->artist; - } - if(!d->copyright.isEmpty()) { - props["COPYRIGHT"] = d->copyright; - } - if(!d->comment.isEmpty()) { - props["COMMENT"] = d->comment; - } - - ASF::AttributeListMap::ConstIterator it = d->attributeListMap.begin(); - for(; it != d->attributeListMap.end(); ++it) { - const String key = translateKey(it->first); - if(!key.isEmpty()) { - AttributeList::ConstIterator it2 = it->second.begin(); - for(; it2 != it->second.end(); ++it2) { - if(key == "TRACKNUMBER") { - if(it2->type() == ASF::Attribute::DWordType) - props.insert(key, String::number(it2->toUInt())); - else - props.insert(key, it2->toString()); - } - else { - props.insert(key, it2->toString()); - } - } - } - else { - props.unsupportedData().append(it->first); - } - } - return props; -} - -void ASF::Tag::removeUnsupportedProperties(const StringList &props) -{ - StringList::ConstIterator it = props.begin(); - for(; it != props.end(); ++it) - d->attributeListMap.erase(*it); -} - -PropertyMap ASF::Tag::setProperties(const PropertyMap &props) -{ - static Map<String, String> reverseKeyMap; - if(reverseKeyMap.isEmpty()) { - int numKeys = sizeof(keyTranslation) / sizeof(keyTranslation[0]); - for(int i = 0; i < numKeys; i++) { - reverseKeyMap[keyTranslation[i][1]] = keyTranslation[i][0]; - } - } - - PropertyMap origProps = properties(); - PropertyMap::ConstIterator it = origProps.begin(); - for(; it != origProps.end(); ++it) { - if(!props.contains(it->first) || props[it->first].isEmpty()) { - if(it->first == "TITLE") { - d->title.clear(); - } - else if(it->first == "ARTIST") { - d->artist.clear(); - } - else if(it->first == "COMMENT") { - d->comment.clear(); - } - else if(it->first == "COPYRIGHT") { - d->copyright.clear(); - } - else { - d->attributeListMap.erase(reverseKeyMap[it->first]); - } - } - } - - PropertyMap ignoredProps; - it = props.begin(); - for(; it != props.end(); ++it) { - if(reverseKeyMap.contains(it->first)) { - String name = reverseKeyMap[it->first]; - removeItem(name); - StringList::ConstIterator it2 = it->second.begin(); - for(; it2 != it->second.end(); ++it2) { - addAttribute(name, *it2); - } - } - else if(it->first == "TITLE") { - d->title = it->second.toString(); - } - else if(it->first == "ARTIST") { - d->artist = it->second.toString(); - } - else if(it->first == "COMMENT") { - d->comment = it->second.toString(); - } - else if(it->first == "COPYRIGHT") { - d->copyright = it->second.toString(); - } - else { - ignoredProps.insert(it->first, it->second); - } - } - - return ignoredProps; -} diff --git a/Frameworks/TagLib/taglib/taglib/asf/asfutils.h b/Frameworks/TagLib/taglib/taglib/asf/asfutils.h deleted file mode 100644 index a8ecd70dc..000000000 --- a/Frameworks/TagLib/taglib/taglib/asf/asfutils.h +++ /dev/null @@ -1,104 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_ASFUTILS_H -#define TAGLIB_ASFUTILS_H - -// THIS FILE IS NOT A PART OF THE TAGLIB API - -#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header - -namespace TagLib -{ - namespace ASF - { - namespace - { - - inline unsigned short readWORD(File *file, bool *ok = 0) - { - const ByteVector v = file->readBlock(2); - if(v.size() != 2) { - if(ok) *ok = false; - return 0; - } - if(ok) *ok = true; - return v.toUShort(false); - } - - inline unsigned int readDWORD(File *file, bool *ok = 0) - { - const ByteVector v = file->readBlock(4); - if(v.size() != 4) { - if(ok) *ok = false; - return 0; - } - if(ok) *ok = true; - return v.toUInt(false); - } - - inline long long readQWORD(File *file, bool *ok = 0) - { - const ByteVector v = file->readBlock(8); - if(v.size() != 8) { - if(ok) *ok = false; - return 0; - } - if(ok) *ok = true; - return v.toLongLong(false); - } - - inline String readString(File *file, int length) - { - ByteVector data = file->readBlock(length); - unsigned int size = data.size(); - while (size >= 2) { - if(data[size - 1] != '\0' || data[size - 2] != '\0') { - break; - } - size -= 2; - } - if(size != data.size()) { - data.resize(size); - } - return String(data, String::UTF16LE); - } - - inline ByteVector renderString(const String &str, bool includeLength = false) - { - ByteVector data = str.data(String::UTF16LE) + ByteVector::fromShort(0, false); - if(includeLength) { - data = ByteVector::fromShort(data.size(), false) + data; - } - return data; - } - - } - } -} - -#endif - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/audioproperties.cpp b/Frameworks/TagLib/taglib/taglib/audioproperties.cpp deleted file mode 100644 index 8dedbba3c..000000000 --- a/Frameworks/TagLib/taglib/taglib/audioproperties.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> - -#include <taglib/ape/apeproperties.h> -#include <taglib/asf/asfproperties.h> -#include <taglib/mp4/mp4properties.h> -#include <taglib/mpc/mpcproperties.h> -#include <taglib/mpeg/mpegproperties.h> -#include <taglib/riff/aiff/aiffproperties.h> -#include <taglib/riff/wav/wavproperties.h> -#include <taglib/wavpack/wavpackproperties.h> - -#include <taglib/audioproperties.h> - -using namespace TagLib; - -// This macro is a workaround for the fact that we can't add virtual functions. -// Should be true virtual functions in taglib2. - -#define VIRTUAL_FUNCTION_WORKAROUND(function_name, default_value) \ - if(dynamic_cast<const APE::Properties*>(this)) \ - return dynamic_cast<const APE::Properties*>(this)->function_name(); \ - else if(dynamic_cast<const ASF::Properties*>(this)) \ - return dynamic_cast<const ASF::Properties*>(this)->function_name(); \ - else if(dynamic_cast<const MPC::Properties*>(this)) \ - return dynamic_cast<const MPC::Properties*>(this)->function_name(); \ - else if(dynamic_cast<const MPEG::Properties*>(this)) \ - return dynamic_cast<const MPEG::Properties*>(this)->function_name(); \ - else if(dynamic_cast<const RIFF::AIFF::Properties*>(this)) \ - return dynamic_cast<const RIFF::AIFF::Properties*>(this)->function_name(); \ - else if(dynamic_cast<const RIFF::WAV::Properties*>(this)) \ - return dynamic_cast<const RIFF::WAV::Properties*>(this)->function_name(); \ - else if(dynamic_cast<const WavPack::Properties*>(this)) \ - return dynamic_cast<const WavPack::Properties*>(this)->function_name(); \ - else \ - return (default_value); - -class AudioProperties::AudioPropertiesPrivate -{ - -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -AudioProperties::~AudioProperties() -{ - -} - -int AudioProperties::lengthInSeconds() const -{ - VIRTUAL_FUNCTION_WORKAROUND(lengthInSeconds, 0) -} - -int AudioProperties::lengthInMilliseconds() const -{ - VIRTUAL_FUNCTION_WORKAROUND(lengthInMilliseconds, 0) -} - -//////////////////////////////////////////////////////////////////////////////// -// protected methods -//////////////////////////////////////////////////////////////////////////////// - -AudioProperties::AudioProperties(ReadStyle) : - d(0) -{ - -} diff --git a/Frameworks/TagLib/taglib/taglib/fileref.cpp b/Frameworks/TagLib/taglib/taglib/fileref.cpp deleted file mode 100644 index 6e88b6ede..000000000 --- a/Frameworks/TagLib/taglib/taglib/fileref.cpp +++ /dev/null @@ -1,415 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - - copyright : (C) 2010 by Alex Novichkov - email : novichko@atnet.ru - (added APE file support) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <cstring> - -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tfilestream.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/trefcounter.h> - -#include <taglib/asf/asffile.h> -#include <taglib/fileref.h> -#include <taglib/it/itfile.h> -#include <taglib/mod/modfile.h> -#include <taglib/mp4/mp4file.h> -#include <taglib/mpc/mpcfile.h> -#include <taglib/mpeg/mpegfile.h> -#include <taglib/riff/aiff/aifffile.h> -#include <taglib/riff/wav/wavfile.h> -#include <taglib/s3m/s3mfile.h> -#include <taglib/wavpack/wavpackfile.h> -#include <taglib/xm/xmfile.h> - -using namespace TagLib; - -namespace -{ - typedef List<const FileRef::FileTypeResolver *> ResolverList; - ResolverList fileTypeResolvers; - - // Detect the file type by user-defined resolvers. - - File *detectByResolvers(FileName fileName, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) - { - if(::strlen(fileName) == 0) - return 0; - ResolverList::ConstIterator it = fileTypeResolvers.begin(); - for(; it != fileTypeResolvers.end(); ++it) { - File *file = (*it)->createFile(fileName, readAudioProperties, audioPropertiesStyle); - if(file) - return file; - } - - return 0; - } - - // Detect the file type based on the file extension. - - File* detectByExtension(IOStream *stream, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) - { -#ifdef _WIN32 - const String s = stream->name().toString(); -#else - const String s(stream->name()); -#endif - - String ext; - const int pos = s.rfind("."); - if(pos != -1) - ext = s.substr(pos + 1).upper(); - - // If this list is updated, the method defaultFileExtensions() should also be - // updated. However at some point that list should be created at the same time - // that a default file type resolver is created. - - if(ext.isEmpty()) { - // HACK - return new MPEG::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - } - - // .oga can be any audio in the Ogg container. So leave it to content-based detection. - - if(ext == "MP3") - return new MPEG::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - if(ext == "MPC") - return new MPC::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "WV") - return new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "WMA" || ext == "ASF") - return new ASF::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "AIF" || ext == "AIFF" || ext == "AFC" || ext == "AIFC") - return new RIFF::AIFF::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "WAV") - return new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); - // module, nst and wow are possible but uncommon extensions - if(ext == "MOD" || ext == "MODULE" || ext == "NST" || ext == "WOW") - return new Mod::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "S3M") - return new S3M::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "IT") - return new IT::File(stream, readAudioProperties, audioPropertiesStyle); - if(ext == "XM") - return new XM::File(stream, readAudioProperties, audioPropertiesStyle); - - return 0; - } - - // Detect the file type based on the actual content of the stream. - - File *detectByContent(IOStream *stream, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) - { - File *file = 0; - - if(MPEG::File::isSupported(stream)) - file = new MPEG::File(stream, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - else if(MPC::File::isSupported(stream)) - file = new MPC::File(stream, readAudioProperties, audioPropertiesStyle); - else if(WavPack::File::isSupported(stream)) - file = new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); - else if(ASF::File::isSupported(stream)) - file = new ASF::File(stream, readAudioProperties, audioPropertiesStyle); - else if(RIFF::AIFF::File::isSupported(stream)) - file = new RIFF::AIFF::File(stream, readAudioProperties, audioPropertiesStyle); - else if(RIFF::WAV::File::isSupported(stream)) - file = new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); - - // isSupported() only does a quick check, so double check the file here. - - if(file) { - if(file->isValid()) - return file; - else - delete file; - } - - return 0; - } - - // Internal function that supports FileRef::create(). - // This looks redundant, but necessary in order not to change the previous - // behavior of FileRef::create(). - - File* createInternal(FileName fileName, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) - { - File *file = detectByResolvers(fileName, readAudioProperties, audioPropertiesStyle); - if(file) - return file; - -#ifdef _WIN32 - const String s = fileName.toString(); -#else - const String s(fileName); -#endif - - String ext; - const int pos = s.rfind("."); - if(pos != -1) - ext = s.substr(pos + 1).upper(); - - if(ext.isEmpty()) - return 0; - - if(ext == "MP3") - return new MPEG::File(fileName, ID3v2::FrameFactory::instance(), readAudioProperties, audioPropertiesStyle); - if(ext == "MPC") - return new MPC::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WV") - return new WavPack::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WMA" || ext == "ASF") - return new ASF::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "AIF" || ext == "AIFF" || ext == "AFC" || ext == "AIFC") - return new RIFF::AIFF::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "WAV") - return new RIFF::WAV::File(fileName, readAudioProperties, audioPropertiesStyle); - // module, nst and wow are possible but uncommon extensions - if(ext == "MOD" || ext == "MODULE" || ext == "NST" || ext == "WOW") - return new Mod::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "S3M") - return new S3M::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "IT") - return new IT::File(fileName, readAudioProperties, audioPropertiesStyle); - if(ext == "XM") - return new XM::File(fileName, readAudioProperties, audioPropertiesStyle); - - return 0; - } -} - -class FileRef::FileRefPrivate : public RefCounter -{ -public: - FileRefPrivate() : - RefCounter(), - file(0), - stream(0) {} - - ~FileRefPrivate() { - delete file; - delete stream; - } - - File *file; - IOStream *stream; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FileRef::FileRef() : - d(new FileRefPrivate()) -{ -} - -FileRef::FileRef(FileName fileName, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) : - d(new FileRefPrivate()) -{ - parse(fileName, readAudioProperties, audioPropertiesStyle); -} - -FileRef::FileRef(IOStream* stream, bool readAudioProperties, AudioProperties::ReadStyle audioPropertiesStyle) : - d(new FileRefPrivate()) -{ - parse(stream, readAudioProperties, audioPropertiesStyle); -} - -FileRef::FileRef(File *file) : - d(new FileRefPrivate()) -{ - d->file = file; -} - -FileRef::FileRef(const FileRef &ref) : - d(ref.d) -{ - d->ref(); -} - -FileRef::~FileRef() -{ - if(d->deref()) - delete d; -} - -Tag *FileRef::tag() const -{ - if(isNull()) { - debug("FileRef::tag() - Called without a valid file."); - return 0; - } - return d->file->tag(); -} - -AudioProperties *FileRef::audioProperties() const -{ - if(isNull()) { - debug("FileRef::audioProperties() - Called without a valid file."); - return 0; - } - return d->file->audioProperties(); -} - -File *FileRef::file() const -{ - return d->file; -} - -bool FileRef::save() -{ - if(isNull()) { - debug("FileRef::save() - Called without a valid file."); - return false; - } - return d->file->save(); -} - -const FileRef::FileTypeResolver *FileRef::addFileTypeResolver(const FileRef::FileTypeResolver *resolver) // static -{ - fileTypeResolvers.prepend(resolver); - return resolver; -} - -StringList FileRef::defaultFileExtensions() -{ - StringList l; - - l.append("mp3"); - l.append("mpc"); - l.append("wv"); - l.append("3g2"); - l.append("wma"); - l.append("asf"); - l.append("aif"); - l.append("aiff"); - l.append("afc"); - l.append("aifc"); - l.append("wav"); - l.append("mod"); - l.append("module"); // alias for "mod" - l.append("nst"); // alias for "mod" - l.append("wow"); // alias for "mod" - l.append("s3m"); - l.append("it"); - l.append("xm"); - - return l; -} - -bool FileRef::isNull() const -{ - return (!d->file || !d->file->isValid()); -} - -FileRef &FileRef::operator=(const FileRef &ref) -{ - FileRef(ref).swap(*this); - return *this; -} - -void FileRef::swap(FileRef &ref) -{ - using std::swap; - - swap(d, ref.d); -} - -bool FileRef::operator==(const FileRef &ref) const -{ - return (ref.d->file == d->file); -} - -bool FileRef::operator!=(const FileRef &ref) const -{ - return (ref.d->file != d->file); -} - -File *FileRef::create(FileName fileName, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) // static -{ - return createInternal(fileName, readAudioProperties, audioPropertiesStyle); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void FileRef::parse(FileName fileName, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) -{ - // Try user-defined resolvers. - - d->file = detectByResolvers(fileName, readAudioProperties, audioPropertiesStyle); - if(d->file) - return; - - // Try to resolve file types based on the file extension. - - d->stream = new FileStream(fileName); - d->file = detectByExtension(d->stream, readAudioProperties, audioPropertiesStyle); - if(d->file) - return; - - // At last, try to resolve file types based on the actual content. - - d->file = detectByContent(d->stream, readAudioProperties, audioPropertiesStyle); - if(d->file) - return; - - // Stream have to be closed here if failed to resolve file types. - - delete d->stream; - d->stream = 0; -} - -void FileRef::parse(IOStream *stream, bool readAudioProperties, - AudioProperties::ReadStyle audioPropertiesStyle) -{ - // Try user-defined resolvers. - - d->file = detectByResolvers(stream->name(), readAudioProperties, audioPropertiesStyle); - if(d->file) - return; - - // Try to resolve file types based on the file extension. - - d->file = detectByExtension(stream, readAudioProperties, audioPropertiesStyle); - if(d->file) - return; - - // At last, try to resolve file types based on the actual content of the file. - - d->file = detectByContent(stream, readAudioProperties, audioPropertiesStyle); -} diff --git a/Frameworks/TagLib/taglib/taglib/fileref.h b/Frameworks/TagLib/taglib/taglib/fileref.h deleted file mode 100644 index d8ca670a7..000000000 --- a/Frameworks/TagLib/taglib/taglib/fileref.h +++ /dev/null @@ -1,287 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_FILEREF_H -#define TAGLIB_FILEREF_H - -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tstringlist.h> - -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> - -namespace TagLib { - - class Tag; - - //! This class provides a simple abstraction for creating and handling files - - /*! - * FileRef exists to provide a minimal, generic and value-based wrapper around - * a File. It is lightweight and implicitly shared, and as such suitable for - * pass-by-value use. This hides some of the uglier details of TagLib::File - * and the non-generic portions of the concrete file implementations. - * - * This class is useful in a "simple usage" situation where it is desirable - * to be able to get and set some of the tag information that is similar - * across file types. - * - * Also note that it is probably a good idea to plug this into your mime - * type system rather than using the constructor that accepts a file name using - * the FileTypeResolver. - * - * \see FileTypeResolver - * \see addFileTypeResolver() - */ - - class TAGLIB_EXPORT FileRef - { - public: - - //! A class for pluggable file type resolution. - - /*! - * This class is used to add extend TagLib's very basic file name based file - * type resolution. - * - * This can be accomplished with: - * - * \code - * - * class MyFileTypeResolver : FileTypeResolver - * { - * TagLib::File *createFile(TagLib::FileName *fileName, bool, AudioProperties::ReadStyle) const - * { - * if(someCheckForAnMP3File(fileName)) - * return new TagLib::MPEG::File(fileName); - * return 0; - * } - * } - * - * FileRef::addFileTypeResolver(new MyFileTypeResolver); - * - * \endcode - * - * Naturally a less contrived example would be slightly more complex. This - * can be used to plug in mime-type detection systems or to add new file types - * to TagLib. - */ - - class TAGLIB_EXPORT FileTypeResolver - { - TAGLIB_IGNORE_MISSING_DESTRUCTOR - public: - /*! - * This method must be overridden to provide an additional file type - * resolver. If the resolver is able to determine the file type it should - * return a valid File object; if not it should return 0. - * - * \note The created file is then owned by the FileRef and should not be - * deleted. Deletion will happen automatically when the FileRef passes - * out of scope. - */ - virtual File *createFile(FileName fileName, - bool readAudioProperties = true, - AudioProperties::ReadStyle - audioPropertiesStyle = AudioProperties::Average) const = 0; - }; - - /*! - * Creates a null FileRef. - */ - FileRef(); - - /*! - * Create a FileRef from \a fileName. If \a readAudioProperties is true then - * the audio properties will be read using \a audioPropertiesStyle. If - * \a readAudioProperties is false then \a audioPropertiesStyle will be - * ignored. - * - * Also see the note in the class documentation about why you may not want to - * use this method in your application. - */ - explicit FileRef(FileName fileName, - bool readAudioProperties = true, - AudioProperties::ReadStyle - audioPropertiesStyle = AudioProperties::Average); - - /*! - * Construct a FileRef from an opened \a IOStream. If \a readAudioProperties - * is true then the audio properties will be read using \a audioPropertiesStyle. - * If \a readAudioProperties is false then \a audioPropertiesStyle will be - * ignored. - * - * Also see the note in the class documentation about why you may not want to - * use this method in your application. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - */ - explicit FileRef(IOStream* stream, - bool readAudioProperties = true, - AudioProperties::ReadStyle - audioPropertiesStyle = AudioProperties::Average); - - /*! - * Construct a FileRef using \a file. The FileRef now takes ownership of the - * pointer and will delete the File when it passes out of scope. - */ - explicit FileRef(File *file); - - /*! - * Make a copy of \a ref. - */ - FileRef(const FileRef &ref); - - /*! - * Destroys this FileRef instance. - */ - virtual ~FileRef(); - - /*! - * Returns a pointer to represented file's tag. - * - * \warning This pointer will become invalid when this FileRef and all - * copies pass out of scope. - * - * \warning Do not cast it to any subclasses of \class Tag. - * Use tag returning methods of appropriate subclasses of \class File instead. - * - * \see File::tag() - */ - Tag *tag() const; - - /*! - * Returns the audio properties for this FileRef. If no audio properties - * were read then this will returns a null pointer. - */ - AudioProperties *audioProperties() const; - - /*! - * Returns a pointer to the file represented by this handler class. - * - * As a general rule this call should be avoided since if you need to work - * with file objects directly, you are probably better served instantiating - * the File subclasses (i.e. MPEG::File) manually and working with their APIs. - * - * This <i>handle</i> exists to provide a minimal, generic and value-based - * wrapper around a File. Accessing the file directly generally indicates - * a moving away from this simplicity (and into things beyond the scope of - * FileRef). - * - * \warning This pointer will become invalid when this FileRef and all - * copies pass out of scope. - */ - File *file() const; - - /*! - * Saves the file. Returns true on success. - */ - bool save(); - - /*! - * Adds a FileTypeResolver to the list of those used by TagLib. Each - * additional FileTypeResolver is added to the front of a list of resolvers - * that are tried. If the FileTypeResolver returns zero the next resolver - * is tried. - * - * Returns a pointer to the added resolver (the same one that's passed in -- - * this is mostly so that static initializers have something to use for - * assignment). - * - * \see FileTypeResolver - */ - static const FileTypeResolver *addFileTypeResolver(const FileTypeResolver *resolver); - - /*! - * As is mentioned elsewhere in this class's documentation, the default file - * type resolution code provided by TagLib only works by comparing file - * extensions. - * - * This method returns the list of file extensions that are used by default. - * - * The extensions are all returned in lowercase, though the comparison used - * by TagLib for resolution is case-insensitive. - * - * \note This does not account for any additional file type resolvers that - * are plugged in. Also note that this is not intended to replace a proper - * mime-type resolution system, but is just here for reference. - * - * \see FileTypeResolver - */ - static StringList defaultFileExtensions(); - - /*! - * Returns true if the file (and as such other pointers) are null. - */ - bool isNull() const; - - /*! - * Assign the file pointed to by \a ref to this FileRef. - */ - FileRef &operator=(const FileRef &ref); - - /*! - * Exchanges the content of the FileRef by the content of \a ref. - */ - void swap(FileRef &ref); - - /*! - * Returns true if this FileRef and \a ref point to the same File object. - */ - bool operator==(const FileRef &ref) const; - - /*! - * Returns true if this FileRef and \a ref do not point to the same File - * object. - */ - bool operator!=(const FileRef &ref) const; - - /*! - * A simple implementation of file type guessing. If \a readAudioProperties - * is true then the audio properties will be read using - * \a audioPropertiesStyle. If \a readAudioProperties is false then - * \a audioPropertiesStyle will be ignored. - * - * \note You generally shouldn't use this method, but instead the constructor - * directly. - * - * \deprecated - */ - static File *create(FileName fileName, - bool readAudioProperties = true, - AudioProperties::ReadStyle audioPropertiesStyle = AudioProperties::Average); - - private: - void parse(FileName fileName, bool readAudioProperties, AudioProperties::ReadStyle audioPropertiesStyle); - void parse(IOStream *stream, bool readAudioProperties, AudioProperties::ReadStyle audioPropertiesStyle); - - class FileRefPrivate; - FileRefPrivate *d; - }; - -} // namespace TagLib - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacfile.cpp b/Frameworks/TagLib/taglib/taglib/flac/flacfile.cpp deleted file mode 100644 index ce7d4c5cc..000000000 --- a/Frameworks/TagLib/taglib/taglib/flac/flacfile.cpp +++ /dev/null @@ -1,583 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003-2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/tagunion.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/ogg/xiphcomment.h> - -#include <taglib/flac/flacpicture.h> -#include <taglib/flac/flacfile.h> -#include <taglib/flac/flacmetadatablock.h> -#include <taglib/flac/flacunknownmetadatablock.h> - -using namespace TagLib; - -namespace -{ - typedef List<FLAC::MetadataBlock *> BlockList; - typedef BlockList::Iterator BlockIterator; - typedef BlockList::Iterator BlockConstIterator; - - enum { FlacXiphIndex = 0, FlacID3v2Index = 1, FlacID3v1Index = 2 }; - - const long MinPaddingLength = 4096; - const long MaxPaddingLegnth = 1024 * 1024; - - const char LastBlockFlag = '\x80'; -} - -class FLAC::File::FilePrivate -{ -public: - FilePrivate(const ID3v2::FrameFactory *frameFactory = ID3v2::FrameFactory::instance()) : - ID3v2FrameFactory(frameFactory), - ID3v2Location(-1), - ID3v2OriginalSize(0), - ID3v1Location(-1), - properties(0), - flacStart(0), - streamStart(0), - scanned(false) - { - blocks.setAutoDelete(true); - } - - ~FilePrivate() - { - delete properties; - } - - const ID3v2::FrameFactory *ID3v2FrameFactory; - long ID3v2Location; - long ID3v2OriginalSize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; - ByteVector xiphCommentData; - BlockList blocks; - - long flacStart; - long streamStart; - bool scanned; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool FLAC::File::isSupported(IOStream *stream) -{ - // A FLAC file has an ID "fLaC" somewhere. An ID3v2 tag may precede. - - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), true); - return (buffer.find("fLaC") >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FLAC::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -FLAC::File::File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate(frameFactory)) -{ - if(isOpen()) - read(readProperties); -} - -FLAC::File::File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate(frameFactory)) -{ - if(isOpen()) - read(readProperties); -} - -FLAC::File::~File() -{ - delete d; -} - -TagLib::Tag *FLAC::File::tag() const -{ - return &d->tag; -} - -PropertyMap FLAC::File::properties() const -{ - return d->tag.properties(); -} - -void FLAC::File::removeUnsupportedProperties(const StringList &unsupported) -{ - d->tag.removeUnsupportedProperties(unsupported); -} - -PropertyMap FLAC::File::setProperties(const PropertyMap &properties) -{ - return xiphComment(true)->setProperties(properties); -} - -FLAC::Properties *FLAC::File::audioProperties() const -{ - return d->properties; -} - -bool FLAC::File::save() -{ - if(readOnly()) { - debug("FLAC::File::save() - Cannot save to a read only file."); - return false; - } - - if(!isValid()) { - debug("FLAC::File::save() -- Trying to save invalid file."); - return false; - } - - // Create new vorbis comments - if(!hasXiphComment()) - Tag::duplicate(&d->tag, xiphComment(true), false); - - d->xiphCommentData = xiphComment()->render(false); - - // Replace metadata blocks - - MetadataBlock *commentBlock = - new UnknownMetadataBlock(MetadataBlock::VorbisComment, d->xiphCommentData); - for(BlockIterator it = d->blocks.begin(); it != d->blocks.end();) { - if((*it)->code() == MetadataBlock::VorbisComment) { - // Remove the old Vorbis Comment block - delete *it; - it = d->blocks.erase(it); - continue; - } - if(commentBlock && (*it)->code() == MetadataBlock::Picture) { - // Set the new Vorbis Comment block before the first picture block - d->blocks.insert(it, commentBlock); - commentBlock = 0; - } - ++it; - } - if(commentBlock) - d->blocks.append(commentBlock); - - // Render data for the metadata blocks - - ByteVector data; - for(BlockConstIterator it = d->blocks.begin(); it != d->blocks.end(); ++it) { - ByteVector blockData = (*it)->render(); - ByteVector blockHeader = ByteVector::fromUInt(blockData.size()); - blockHeader[0] = (*it)->code(); - data.append(blockHeader); - data.append(blockData); - } - - // Compute the amount of padding, and append that to data. - - long originalLength = d->streamStart - d->flacStart; - long paddingLength = originalLength - data.size() - 4; - - if(paddingLength <= 0) { - paddingLength = MinPaddingLength; - } - else { - // Padding won't increase beyond 1% of the file size or 1MB. - - long threshold = length() / 100; - threshold = std::max(threshold, MinPaddingLength); - threshold = std::min(threshold, MaxPaddingLegnth); - - if(paddingLength > threshold) - paddingLength = MinPaddingLength; - } - - ByteVector paddingHeader = ByteVector::fromUInt(paddingLength); - paddingHeader[0] = static_cast<char>(MetadataBlock::Padding | LastBlockFlag); - data.append(paddingHeader); - data.resize(static_cast<unsigned int>(data.size() + paddingLength)); - - // Write the data to the file - - insert(data, d->flacStart, originalLength); - - d->streamStart += (static_cast<long>(data.size()) - originalLength); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - originalLength); - - // Update ID3 tags - - if(ID3v2Tag() && !ID3v2Tag()->isEmpty()) { - - // ID3v2 tag is not empty. Update the old one or create a new one. - - if(d->ID3v2Location < 0) - d->ID3v2Location = 0; - - data = ID3v2Tag()->render(); - insert(data, d->ID3v2Location, d->ID3v2OriginalSize); - - d->flacStart += (static_cast<long>(data.size()) - d->ID3v2OriginalSize); - d->streamStart += (static_cast<long>(data.size()) - d->ID3v2OriginalSize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->ID3v2OriginalSize); - - d->ID3v2OriginalSize = data.size(); - } - else { - - // ID3v2 tag is empty. Remove the old one. - - if(d->ID3v2Location >= 0) { - removeBlock(d->ID3v2Location, d->ID3v2OriginalSize); - - d->flacStart -= d->ID3v2OriginalSize; - d->streamStart -= d->ID3v2OriginalSize; - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->ID3v2OriginalSize; - - d->ID3v2Location = -1; - d->ID3v2OriginalSize = 0; - } - } - - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - - // ID3v1 tag is not empty. Update the old one or create a new one. - - if(d->ID3v1Location >= 0) { - seek(d->ID3v1Location); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - } - - writeBlock(ID3v1Tag()->render()); - } - else { - - // ID3v1 tag is empty. Remove the old one. - - if(d->ID3v1Location >= 0) { - truncate(d->ID3v1Location); - d->ID3v1Location = -1; - } - } - - return true; -} - -ID3v2::Tag *FLAC::File::ID3v2Tag(bool create) -{ - return d->tag.access<ID3v2::Tag>(FlacID3v2Index, create); -} - -ID3v1::Tag *FLAC::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(FlacID3v1Index, create); -} - -Ogg::XiphComment *FLAC::File::xiphComment(bool create) -{ - return d->tag.access<Ogg::XiphComment>(FlacXiphIndex, create); -} - -void FLAC::File::setID3v2FrameFactory(const ID3v2::FrameFactory *factory) -{ - d->ID3v2FrameFactory = factory; -} - -ByteVector FLAC::File::streamInfoData() -{ - debug("FLAC::File::streamInfoData() -- This function is obsolete. Returning an empty ByteVector."); - return ByteVector(); -} - -long FLAC::File::streamLength() -{ - debug("FLAC::File::streamLength() -- This function is obsolete. Returning zero."); - return 0; -} - -List<FLAC::Picture *> FLAC::File::pictureList() -{ - List<Picture *> pictures; - for(BlockConstIterator it = d->blocks.begin(); it != d->blocks.end(); ++it) { - Picture *picture = dynamic_cast<Picture *>(*it); - if(picture) { - pictures.append(picture); - } - } - return pictures; -} - -void FLAC::File::addPicture(Picture *picture) -{ - d->blocks.append(picture); -} - -void FLAC::File::removePicture(Picture *picture, bool del) -{ - BlockIterator it = d->blocks.find(picture); - if(it != d->blocks.end()) - d->blocks.erase(it); - - if(del) - delete picture; -} - -void FLAC::File::removePictures() -{ - for(BlockIterator it = d->blocks.begin(); it != d->blocks.end(); ) { - if(dynamic_cast<Picture *>(*it)) { - delete *it; - it = d->blocks.erase(it); - } - else { - ++it; - } - } -} - -void FLAC::File::strip(int tags) -{ - if(tags & ID3v1) - d->tag.set(FlacID3v1Index, 0); - - if(tags & ID3v2) - d->tag.set(FlacID3v2Index, 0); - - if(tags & XiphComment) { - xiphComment()->removeAllFields(); - xiphComment()->removeAllPictures(); - } -} - -bool FLAC::File::hasXiphComment() const -{ - return !d->xiphCommentData.isEmpty(); -} - -bool FLAC::File::hasID3v1Tag() const -{ - return (d->ID3v1Location >= 0); -} - -bool FLAC::File::hasID3v2Tag() const -{ - return (d->ID3v2Location >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void FLAC::File::read(bool readProperties) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = Utils::findID3v2(this); - - if(d->ID3v2Location >= 0) { - d->tag.set(FlacID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory)); - d->ID3v2OriginalSize = ID3v2Tag()->header()->completeTagSize(); - } - - // Look for an ID3v1 tag - - d->ID3v1Location = Utils::findID3v1(this); - - if(d->ID3v1Location >= 0) - d->tag.set(FlacID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - - // Look for FLAC metadata, including vorbis comments - - scan(); - - if(!isValid()) - return; - - if(!d->xiphCommentData.isEmpty()) - d->tag.set(FlacXiphIndex, new Ogg::XiphComment(d->xiphCommentData)); - else - d->tag.set(FlacXiphIndex, new Ogg::XiphComment()); - - if(readProperties) { - - // First block should be the stream_info metadata - - const ByteVector infoData = d->blocks.front()->render(); - - long streamLength; - - if(d->ID3v1Location >= 0) - streamLength = d->ID3v1Location - d->streamStart; - else - streamLength = length() - d->streamStart; - - d->properties = new Properties(infoData, streamLength); - } -} - -void FLAC::File::scan() -{ - // Scan the metadata pages - - if(d->scanned) - return; - - if(!isValid()) - return; - - long nextBlockOffset; - - if(d->ID3v2Location >= 0) - nextBlockOffset = find("fLaC", d->ID3v2Location + d->ID3v2OriginalSize); - else - nextBlockOffset = find("fLaC"); - - if(nextBlockOffset < 0) { - debug("FLAC::File::scan() -- FLAC stream not found"); - setValid(false); - return; - } - - nextBlockOffset += 4; - d->flacStart = nextBlockOffset; - - while(true) { - - seek(nextBlockOffset); - const ByteVector header = readBlock(4); - - // Header format (from spec): - // <1> Last-metadata-block flag - // <7> BLOCK_TYPE - // 0 : STREAMINFO - // 1 : PADDING - // .. - // 4 : VORBIS_COMMENT - // .. - // 6 : PICTURE - // .. - // <24> Length of metadata to follow - - const char blockType = header[0] & ~LastBlockFlag; - const bool isLastBlock = (header[0] & LastBlockFlag) != 0; - const unsigned int blockLength = header.toUInt(1U, 3U); - - // First block should be the stream_info metadata - - if(d->blocks.isEmpty() && blockType != MetadataBlock::StreamInfo) { - debug("FLAC::File::scan() -- First block should be the stream_info metadata"); - setValid(false); - return; - } - - if(blockLength == 0 - && blockType != MetadataBlock::Padding && blockType != MetadataBlock::SeekTable) - { - debug("FLAC::File::scan() -- Zero-sized metadata block found"); - setValid(false); - return; - } - - const ByteVector data = readBlock(blockLength); - if(data.size() != blockLength) { - debug("FLAC::File::scan() -- Failed to read a metadata block"); - setValid(false); - return; - } - - MetadataBlock *block = 0; - - // Found the vorbis-comment - if(blockType == MetadataBlock::VorbisComment) { - if(d->xiphCommentData.isEmpty()) { - d->xiphCommentData = data; - block = new UnknownMetadataBlock(MetadataBlock::VorbisComment, data); - } - else { - debug("FLAC::File::scan() -- multiple Vorbis Comment blocks found, discarding"); - } - } - else if(blockType == MetadataBlock::Picture) { - FLAC::Picture *picture = new FLAC::Picture(); - if(picture->parse(data)) { - block = picture; - } - else { - debug("FLAC::File::scan() -- invalid picture found, discarding"); - delete picture; - } - } - else if(blockType == MetadataBlock::Padding) { - // Skip all padding blocks. - } - else { - block = new UnknownMetadataBlock(blockType, data); - } - - if(block) - d->blocks.append(block); - - nextBlockOffset += blockLength + 4; - - if(isLastBlock) - break; - } - - // End of metadata, now comes the datastream - - d->streamStart = nextBlockOffset; - - d->scanned = true; -} diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacmetadatablock.cpp b/Frameworks/TagLib/taglib/taglib/flac/flacmetadatablock.cpp deleted file mode 100644 index 47ab5f897..000000000 --- a/Frameworks/TagLib/taglib/taglib/flac/flacmetadatablock.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/flac/flacmetadatablock.h> - -using namespace TagLib; - -class FLAC::MetadataBlock::MetadataBlockPrivate -{ -public: - MetadataBlockPrivate() {} - -}; - -FLAC::MetadataBlock::MetadataBlock() -{ - d = 0; -} - -FLAC::MetadataBlock::~MetadataBlock() -{ -} - diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacpicture.cpp b/Frameworks/TagLib/taglib/taglib/flac/flacpicture.cpp deleted file mode 100644 index 0761fc0c8..000000000 --- a/Frameworks/TagLib/taglib/taglib/flac/flacpicture.cpp +++ /dev/null @@ -1,217 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/flac/flacpicture.h> - -using namespace TagLib; - -class FLAC::Picture::PicturePrivate -{ -public: - PicturePrivate() : - type(FLAC::Picture::Other), - width(0), - height(0), - colorDepth(0), - numColors(0) - {} - - Type type; - String mimeType; - String description; - int width; - int height; - int colorDepth; - int numColors; - ByteVector data; -}; - -FLAC::Picture::Picture() : - d(new PicturePrivate()) -{ -} - -FLAC::Picture::Picture(const ByteVector &data) : - d(new PicturePrivate()) -{ - parse(data); -} - -FLAC::Picture::~Picture() -{ - delete d; -} - -int FLAC::Picture::code() const -{ - return FLAC::MetadataBlock::Picture; -} - -bool FLAC::Picture::parse(const ByteVector &data) -{ - if(data.size() < 32) { - debug("A picture block must contain at least 5 bytes."); - return false; - } - - unsigned int pos = 0; - d->type = FLAC::Picture::Type(data.toUInt(pos)); - pos += 4; - unsigned int mimeTypeLength = data.toUInt(pos); - pos += 4; - if(pos + mimeTypeLength + 24 > data.size()) { - debug("Invalid picture block."); - return false; - } - d->mimeType = String(data.mid(pos, mimeTypeLength), String::UTF8); - pos += mimeTypeLength; - unsigned int descriptionLength = data.toUInt(pos); - pos += 4; - if(pos + descriptionLength + 20 > data.size()) { - debug("Invalid picture block."); - return false; - } - d->description = String(data.mid(pos, descriptionLength), String::UTF8); - pos += descriptionLength; - d->width = data.toUInt(pos); - pos += 4; - d->height = data.toUInt(pos); - pos += 4; - d->colorDepth = data.toUInt(pos); - pos += 4; - d->numColors = data.toUInt(pos); - pos += 4; - unsigned int dataLength = data.toUInt(pos); - pos += 4; - if(pos + dataLength > data.size()) { - debug("Invalid picture block."); - return false; - } - d->data = data.mid(pos, dataLength); - - return true; -} - -ByteVector FLAC::Picture::render() const -{ - ByteVector result; - result.append(ByteVector::fromUInt(d->type)); - ByteVector mimeTypeData = d->mimeType.data(String::UTF8); - result.append(ByteVector::fromUInt(mimeTypeData.size())); - result.append(mimeTypeData); - ByteVector descriptionData = d->description.data(String::UTF8); - result.append(ByteVector::fromUInt(descriptionData.size())); - result.append(descriptionData); - result.append(ByteVector::fromUInt(d->width)); - result.append(ByteVector::fromUInt(d->height)); - result.append(ByteVector::fromUInt(d->colorDepth)); - result.append(ByteVector::fromUInt(d->numColors)); - result.append(ByteVector::fromUInt(d->data.size())); - result.append(d->data); - return result; -} - -FLAC::Picture::Type FLAC::Picture::type() const -{ - return d->type; -} - -void FLAC::Picture::setType(FLAC::Picture::Type type) -{ - d->type = type; -} - -String FLAC::Picture::mimeType() const -{ - return d->mimeType; -} - -void FLAC::Picture::setMimeType(const String &mimeType) -{ - d->mimeType = mimeType; -} - -String FLAC::Picture::description() const -{ - return d->description; -} - -void FLAC::Picture::setDescription(const String &description) -{ - d->description = description; -} - -int FLAC::Picture::width() const -{ - return d->width; -} - -void FLAC::Picture::setWidth(int width) -{ - d->width = width; -} - -int FLAC::Picture::height() const -{ - return d->height; -} - -void FLAC::Picture::setHeight(int height) -{ - d->height = height; -} - -int FLAC::Picture::colorDepth() const -{ - return d->colorDepth; -} - -void FLAC::Picture::setColorDepth(int colorDepth) -{ - d->colorDepth = colorDepth; -} - -int FLAC::Picture::numColors() const -{ - return d->numColors; -} - -void FLAC::Picture::setNumColors(int numColors) -{ - d->numColors = numColors; -} - -ByteVector FLAC::Picture::data() const -{ - return d->data; -} - -void FLAC::Picture::setData(const ByteVector &data) -{ - d->data = data; -} - diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacproperties.cpp b/Frameworks/TagLib/taglib/taglib/flac/flacproperties.cpp deleted file mode 100644 index 331c7adeb..000000000 --- a/Frameworks/TagLib/taglib/taglib/flac/flacproperties.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/flac/flacproperties.h> -#include <taglib/flac/flacfile.h> - -using namespace TagLib; - -class FLAC::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - bitsPerSample(0), - channels(0), - sampleFrames(0) {} - - int length; - int bitrate; - int sampleRate; - int bitsPerSample; - int channels; - unsigned long long sampleFrames; - ByteVector signature; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FLAC::Properties::Properties(ByteVector data, long streamLength, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(data, streamLength); -} - -FLAC::Properties::Properties(File *, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - debug("FLAC::Properties::Properties() - This constructor is no longer used."); -} - -FLAC::Properties::~Properties() -{ - delete d; -} - -int FLAC::Properties::length() const -{ - return lengthInSeconds(); -} - -int FLAC::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int FLAC::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int FLAC::Properties::bitrate() const -{ - return d->bitrate; -} - -int FLAC::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int FLAC::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -int FLAC::Properties::sampleWidth() const -{ - return bitsPerSample(); -} - -int FLAC::Properties::channels() const -{ - return d->channels; -} - -unsigned long long FLAC::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -ByteVector FLAC::Properties::signature() const -{ - return d->signature; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void FLAC::Properties::read(const ByteVector &data, long streamLength) -{ - if(data.size() < 18) { - debug("FLAC::Properties::read() - FLAC properties must contain at least 18 bytes."); - return; - } - - unsigned int pos = 0; - - // Minimum block size (in samples) - pos += 2; - - // Maximum block size (in samples) - pos += 2; - - // Minimum frame size (in bytes) - pos += 3; - - // Maximum frame size (in bytes) - pos += 3; - - const unsigned int flags = data.toUInt(pos, true); - pos += 4; - - d->sampleRate = flags >> 12; - d->channels = ((flags >> 9) & 7) + 1; - d->bitsPerSample = ((flags >> 4) & 31) + 1; - - // The last 4 bits are the most significant 4 bits for the 36 bit - // stream length in samples. (Audio files measured in days) - - const unsigned long long hi = flags & 0xf; - const unsigned long long lo = data.toUInt(pos, true); - pos += 4; - - d->sampleFrames = (hi << 32) | lo; - - if(d->sampleFrames > 0 && d->sampleRate > 0) { - const double length = d->sampleFrames * 1000.0 / d->sampleRate; - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } - - if(data.size() >= pos + 16) - d->signature = data.mid(pos, 16); -} diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.cpp b/Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.cpp deleted file mode 100644 index 57444e502..000000000 --- a/Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/flac/flacunknownmetadatablock.h> - -using namespace TagLib; - -class FLAC::UnknownMetadataBlock::UnknownMetadataBlockPrivate -{ -public: - UnknownMetadataBlockPrivate() : code(0) {} - - int code; - ByteVector data; -}; - -FLAC::UnknownMetadataBlock::UnknownMetadataBlock(int code, const ByteVector &data) : - d(new UnknownMetadataBlockPrivate()) -{ - d->code = code; - d->data = data; -} - -FLAC::UnknownMetadataBlock::~UnknownMetadataBlock() -{ - delete d; -} - -int FLAC::UnknownMetadataBlock::code() const -{ - return d->code; -} - -void FLAC::UnknownMetadataBlock::setCode(int code) -{ - d->code = code; -} - -ByteVector FLAC::UnknownMetadataBlock::data() const -{ - return d->data; -} - -void FLAC::UnknownMetadataBlock::setData(const ByteVector &data) -{ - d->data = data; -} - -ByteVector FLAC::UnknownMetadataBlock::render() const -{ - return d->data; -} - diff --git a/Frameworks/TagLib/taglib/taglib/it/itfile.cpp b/Frameworks/TagLib/taglib/taglib/it/itfile.cpp deleted file mode 100644 index 63b3b517d..000000000 --- a/Frameworks/TagLib/taglib/taglib/it/itfile.cpp +++ /dev/null @@ -1,335 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/toolkit/tstringlist.h> -#include <taglib/it/itfile.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/mod/modfileprivate.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace IT; - -class IT::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : tag(), properties(propertiesStyle) - { - } - - Mod::Tag tag; - IT::Properties properties; -}; - -IT::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -IT::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -IT::File::~File() -{ - delete d; -} - -Mod::Tag *IT::File::tag() const -{ - return &d->tag; -} - -PropertyMap IT::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap IT::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -IT::Properties *IT::File::audioProperties() const -{ - return &d->properties; -} - -bool IT::File::save() -{ - if(readOnly()) - { - debug("IT::File::save() - Cannot save to a read only file."); - return false; - } - seek(4); - writeString(d->tag.title(), 25); - writeByte(0); - - seek(2, Current); - - unsigned short length = 0; - unsigned short instrumentCount = 0; - unsigned short sampleCount = 0; - - if(!readU16L(length) || !readU16L(instrumentCount) || !readU16L(sampleCount)) - return false; - - seek(15, Current); - - // write comment as instrument and sample names: - StringList lines = d->tag.comment().split("\n"); - for(unsigned short i = 0; i < instrumentCount; ++ i) { - seek(192L + length + ((long)i << 2)); - unsigned long instrumentOffset = 0; - if(!readU32L(instrumentOffset)) - return false; - - seek(instrumentOffset + 32); - - if(i < lines.size()) - writeString(lines[i], 25); - else - writeString(String(), 25); - writeByte(0); - } - - for(unsigned short i = 0; i < sampleCount; ++ i) { - seek(192L + length + ((long)instrumentCount << 2) + ((long)i << 2)); - unsigned long sampleOffset = 0; - if(!readU32L(sampleOffset)) - return false; - - seek(sampleOffset + 20); - - if((unsigned int)(i + instrumentCount) < lines.size()) - writeString(lines[i + instrumentCount], 25); - else - writeString(String(), 25); - writeByte(0); - } - - // write rest as message: - StringList messageLines; - for(unsigned int i = instrumentCount + sampleCount; i < lines.size(); ++ i) - messageLines.append(lines[i]); - ByteVector message = messageLines.toString("\r").data(String::Latin1); - - // it's actually not really stated if the message needs a - // terminating NUL but it does not hurt to add one: - if(message.size() > 7999) - message.resize(7999); - message.append((char)0); - - unsigned short special = 0; - unsigned short messageLength = 0; - unsigned long messageOffset = 0; - - seek(46); - if(!readU16L(special)) - return false; - - unsigned long fileSize = File::length(); - if(special & Properties::MessageAttached) { - seek(54); - if(!readU16L(messageLength) || !readU32L(messageOffset)) - return false; - - if(messageLength == 0) - messageOffset = fileSize; - } - else - { - messageOffset = fileSize; - seek(46); - writeU16L(special | 0x1); - } - - if(messageOffset + messageLength >= fileSize) { - // append new message - seek(54); - writeU16L(message.size()); - writeU32L(messageOffset); - seek(messageOffset); - writeBlock(message); - truncate(messageOffset + message.size()); - } - else { - // Only overwrite existing message. - // I'd need to parse (understand!) the whole file for more. - // Although I could just move the message to the end of file - // and let the existing one be, but that would waste space. - message.resize(messageLength, 0); - seek(messageOffset); - writeBlock(message); - } - return true; -} - -void IT::File::read(bool) -{ - if(!isOpen()) - return; - - seek(0); - READ_ASSERT(readBlock(4) == "IMPM"); - READ_STRING(d->tag.setTitle, 26); - - seek(2, Current); - - READ_U16L_AS(length); - READ_U16L_AS(instrumentCount); - READ_U16L_AS(sampleCount); - - d->properties.setInstrumentCount(instrumentCount); - d->properties.setSampleCount(sampleCount); - READ_U16L(d->properties.setPatternCount); - READ_U16L(d->properties.setVersion); - READ_U16L(d->properties.setCompatibleVersion); - READ_U16L(d->properties.setFlags); - READ_U16L_AS(special); - d->properties.setSpecial(special); - READ_BYTE(d->properties.setGlobalVolume); - READ_BYTE(d->properties.setMixVolume); - READ_BYTE(d->properties.setBpmSpeed); - READ_BYTE(d->properties.setTempo); - READ_BYTE(d->properties.setPanningSeparation); - READ_BYTE(d->properties.setPitchWheelDepth); - - // IT supports some kind of comment tag. Still, the - // sample/instrument names are abused as comments so - // I just add all together. - String message; - if(special & Properties::MessageAttached) { - READ_U16L_AS(messageLength); - READ_U32L_AS(messageOffset); - seek(messageOffset); - ByteVector messageBytes = readBlock(messageLength); - READ_ASSERT(messageBytes.size() == messageLength); - int index = messageBytes.find((char) 0); - if(index > -1) - messageBytes.resize(index, 0); - messageBytes.replace('\r', '\n'); - message = messageBytes; - } - - seek(64); - - ByteVector pannings = readBlock(64); - ByteVector volumes = readBlock(64); - READ_ASSERT(pannings.size() == 64 && volumes.size() == 64); - int channels = 0; - for(int i = 0; i < 64; ++ i) { - // Strictly speaking an IT file has always 64 channels, but - // I don't count disabled and muted channels. - // But this always gives 64 channels for all my files anyway. - // Strangely VLC does report other values. I wonder how VLC - // gets it's values. - if((unsigned char) pannings[i] < 128 && volumes[i] > 0) - ++channels; - } - d->properties.setChannels(channels); - - // real length might be shorter because of skips and terminator - unsigned short realLength = 0; - for(unsigned short i = 0; i < length; ++ i) { - READ_BYTE_AS(order); - if(order == 255) break; - if(order != 254) ++ realLength; - } - d->properties.setLengthInPatterns(realLength); - - StringList comment; - // Note: I found files that have nil characters somewhere - // in the instrument/sample names and more characters - // afterwards. The spec does not mention such a case. - // Currently I just discard anything after a nil, but - // e.g. VLC seems to interpret a nil as a space. I - // don't know what is the proper behaviour. - for(unsigned short i = 0; i < instrumentCount; ++ i) { - seek(192L + length + ((long)i << 2)); - READ_U32L_AS(instrumentOffset); - seek(instrumentOffset); - - ByteVector instrumentMagic = readBlock(4); - READ_ASSERT(instrumentMagic == "IMPI"); - - READ_STRING_AS(dosFileName, 13); - - seek(15, Current); - - READ_STRING_AS(instrumentName, 26); - comment.append(instrumentName); - } - - for(unsigned short i = 0; i < sampleCount; ++ i) { - seek(192L + length + ((long)instrumentCount << 2) + ((long)i << 2)); - READ_U32L_AS(sampleOffset); - - seek(sampleOffset); - - ByteVector sampleMagic = readBlock(4); - READ_ASSERT(sampleMagic == "IMPS"); - - READ_STRING_AS(dosFileName, 13); - READ_BYTE_AS(globalVolume); - READ_BYTE_AS(sampleFlags); - READ_BYTE_AS(sampleVolume); - READ_STRING_AS(sampleName, 26); - /* - READ_BYTE_AS(sampleCvt); - READ_BYTE_AS(samplePanning); - READ_U32L_AS(sampleLength); - READ_U32L_AS(loopStart); - READ_U32L_AS(loopStop); - READ_U32L_AS(c5speed); - READ_U32L_AS(sustainLoopStart); - READ_U32L_AS(sustainLoopEnd); - READ_U32L_AS(sampleDataOffset); - READ_BYTE_AS(vibratoSpeed); - READ_BYTE_AS(vibratoDepth); - READ_BYTE_AS(vibratoRate); - READ_BYTE_AS(vibratoType); - */ - - comment.append(sampleName); - } - - if(message.size() > 0) - comment.append(message); - d->tag.setComment(comment.toString("\n")); - d->tag.setTrackerName("Impulse Tracker"); -} diff --git a/Frameworks/TagLib/taglib/taglib/it/itproperties.cpp b/Frameworks/TagLib/taglib/taglib/it/itproperties.cpp deleted file mode 100644 index 4e0f4b1a6..000000000 --- a/Frameworks/TagLib/taglib/taglib/it/itproperties.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/*************************************************************************** - copyright :(C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/it/itproperties.h> - -using namespace TagLib; -using namespace IT; - -class IT::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - channels(0), - lengthInPatterns(0), - instrumentCount(0), - sampleCount(0), - patternCount(0), - version(0), - compatibleVersion(0), - flags(0), - special(0), - globalVolume(0), - mixVolume(0), - tempo(0), - bpmSpeed(0), - panningSeparation(0), - pitchWheelDepth(0) - { - } - - int channels; - unsigned short lengthInPatterns; - unsigned short instrumentCount; - unsigned short sampleCount; - unsigned short patternCount; - unsigned short version; - unsigned short compatibleVersion; - unsigned short flags; - unsigned short special; - unsigned char globalVolume; - unsigned char mixVolume; - unsigned char tempo; - unsigned char bpmSpeed; - unsigned char panningSeparation; - unsigned char pitchWheelDepth; -}; - -IT::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate()) -{ -} - -IT::Properties::~Properties() -{ - delete d; -} - -int IT::Properties::length() const -{ - return 0; -} - -int IT::Properties::lengthInSeconds() const -{ - return 0; -} - -int IT::Properties::lengthInMilliseconds() const -{ - return 0; -} - -int IT::Properties::bitrate() const -{ - return 0; -} - -int IT::Properties::sampleRate() const -{ - return 0; -} - -int IT::Properties::channels() const -{ - return d->channels; -} - -unsigned short IT::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -bool IT::Properties::stereo() const -{ - return d->flags & Stereo; -} - -unsigned short IT::Properties::instrumentCount() const -{ - return d->instrumentCount; -} - -unsigned short IT::Properties::sampleCount() const -{ - return d->sampleCount; -} - -unsigned short IT::Properties::patternCount() const -{ - return d->patternCount; -} - -unsigned short IT::Properties::version() const -{ - return d->version; -} - -unsigned short IT::Properties::compatibleVersion() const -{ - return d->compatibleVersion; -} - -unsigned short IT::Properties::flags() const -{ - return d->flags; -} - -unsigned short IT::Properties::special() const -{ - return d->special; -} - -unsigned char IT::Properties::globalVolume() const -{ - return d->globalVolume; -} - -unsigned char IT::Properties::mixVolume() const -{ - return d->mixVolume; -} - -unsigned char IT::Properties::tempo() const -{ - return d->tempo; -} - -unsigned char IT::Properties::bpmSpeed() const -{ - return d->bpmSpeed; -} - -unsigned char IT::Properties::panningSeparation() const -{ - return d->panningSeparation; -} - -unsigned char IT::Properties::pitchWheelDepth() const -{ - return d->pitchWheelDepth; -} - -void IT::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void IT::Properties::setLengthInPatterns(unsigned short lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} - -void IT::Properties::setInstrumentCount(unsigned short instrumentCount) -{ - d->instrumentCount = instrumentCount; -} - -void IT::Properties::setSampleCount(unsigned short sampleCount) -{ - d->sampleCount = sampleCount; -} - -void IT::Properties::setPatternCount(unsigned short patternCount) -{ - d->patternCount = patternCount; -} - -void IT::Properties::setFlags(unsigned short flags) -{ - d->flags = flags; -} - -void IT::Properties::setSpecial(unsigned short special) -{ - d->special = special; -} - -void IT::Properties::setCompatibleVersion(unsigned short compatibleVersion) -{ - d->compatibleVersion = compatibleVersion; -} - -void IT::Properties::setVersion(unsigned short version) -{ - d->version = version; -} - -void IT::Properties::setGlobalVolume(unsigned char globalVolume) -{ - d->globalVolume = globalVolume; -} - -void IT::Properties::setMixVolume(unsigned char mixVolume) -{ - d->mixVolume = mixVolume; -} - -void IT::Properties::setTempo(unsigned char tempo) -{ - d->tempo = tempo; -} - -void IT::Properties::setBpmSpeed(unsigned char bpmSpeed) -{ - d->bpmSpeed = bpmSpeed; -} - -void IT::Properties::setPanningSeparation(unsigned char panningSeparation) -{ - d->panningSeparation = panningSeparation; -} - -void IT::Properties::setPitchWheelDepth(unsigned char pitchWheelDepth) -{ - d->pitchWheelDepth = pitchWheelDepth; -} diff --git a/Frameworks/TagLib/taglib/taglib/mod/modfile.cpp b/Frameworks/TagLib/taglib/taglib/mod/modfile.cpp deleted file mode 100644 index cf034ac33..000000000 --- a/Frameworks/TagLib/taglib/taglib/mod/modfile.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/mod/modfile.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/mod/modfileprivate.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace Mod; - -class Mod::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : properties(propertiesStyle) - { - } - - Mod::Tag tag; - Mod::Properties properties; -}; - -Mod::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -Mod::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -Mod::File::~File() -{ - delete d; -} - -Mod::Tag *Mod::File::tag() const -{ - return &d->tag; -} - -Mod::Properties *Mod::File::audioProperties() const -{ - return &d->properties; -} - -PropertyMap Mod::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap Mod::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -bool Mod::File::save() -{ - if(readOnly()) { - debug("Mod::File::save() - Cannot save to a read only file."); - return false; - } - seek(0); - writeString(d->tag.title(), 20); - StringList lines = d->tag.comment().split("\n"); - unsigned int n = std::min(lines.size(), d->properties.instrumentCount()); - for(unsigned int i = 0; i < n; ++ i) { - writeString(lines[i], 22); - seek(8, Current); - } - - for(unsigned int i = n; i < d->properties.instrumentCount(); ++ i) { - writeString(String(), 22); - seek(8, Current); - } - return true; -} - -void Mod::File::read(bool) -{ - if(!isOpen()) - return; - - seek(1080); - ByteVector modId = readBlock(4); - READ_ASSERT(modId.size() == 4); - - int channels = 4; - unsigned int instruments = 31; - if(modId == "M.K." || modId == "M!K!" || modId == "M&K!" || modId == "N.T.") { - d->tag.setTrackerName("ProTracker"); - channels = 4; - } - else if(modId.startsWith("FLT") || modId.startsWith("TDZ")) { - d->tag.setTrackerName("StarTrekker"); - char digit = modId[3]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels = digit - '0'; - } - else if(modId.endsWith("CHN")) { - d->tag.setTrackerName("StarTrekker"); - char digit = modId[0]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels = digit - '0'; - } - else if(modId == "CD81" || modId == "OKTA") { - d->tag.setTrackerName("Atari Oktalyzer"); - channels = 8; - } - else if(modId.endsWith("CH") || modId.endsWith("CN")) { - d->tag.setTrackerName("TakeTracker"); - char digit = modId[0]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels = (digit - '0') * 10; - digit = modId[1]; - READ_ASSERT(digit >= '0' && digit <= '9'); - channels += digit - '0'; - } - else { - // Not sure if this is correct. I'd need a file - // created with NoiseTracker to check this. - d->tag.setTrackerName("NoiseTracker"); // probably - channels = 4; - instruments = 15; - } - d->properties.setChannels(channels); - d->properties.setInstrumentCount(instruments); - - seek(0); - READ_STRING(d->tag.setTitle, 20); - - StringList comment; - for(unsigned int i = 0; i < instruments; ++ i) { - READ_STRING_AS(instrumentName, 22); - // value in words, * 2 (<< 1) for bytes: - READ_U16B_AS(sampleLength); - - READ_BYTE_AS(fineTuneByte); - int fineTune = fineTuneByte & 0xF; - // > 7 means negative value - if(fineTune > 7) fineTune -= 16; - - READ_BYTE_AS(volume); - if(volume > 64) volume = 64; - // volume in decibels: 20 * log10(volume / 64) - - // value in words, * 2 (<< 1) for bytes: - READ_U16B_AS(repeatStart); - // value in words, * 2 (<< 1) for bytes: - READ_U16B_AS(repatLength); - - comment.append(instrumentName); - } - - READ_BYTE(d->properties.setLengthInPatterns); - - d->tag.setComment(comment.toString("\n")); -} diff --git a/Frameworks/TagLib/taglib/taglib/mod/modfilebase.cpp b/Frameworks/TagLib/taglib/taglib/mod/modfilebase.cpp deleted file mode 100644 index edb25c606..000000000 --- a/Frameworks/TagLib/taglib/taglib/mod/modfilebase.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/toolkit/tdebug.h> -#include <taglib/mod/modfilebase.h> - -using namespace TagLib; -using namespace Mod; - -Mod::FileBase::FileBase(FileName file) : TagLib::File(file) -{ -} - -Mod::FileBase::FileBase(IOStream *stream) : TagLib::File(stream) -{ -} - -void Mod::FileBase::writeString(const String &s, unsigned long size, char padding) -{ - ByteVector data(s.data(String::Latin1)); - data.resize(size, padding); - writeBlock(data); -} - -bool Mod::FileBase::readString(String &s, unsigned long size) -{ - ByteVector data(readBlock(size)); - if(data.size() < size) return false; - int index = data.find((char) 0); - if(index > -1) - { - data.resize(index); - } - data.replace('\xff', ' '); - - s = data; - return true; -} - -void Mod::FileBase::writeByte(unsigned char byte) -{ - ByteVector data(1, byte); - writeBlock(data); -} - -void Mod::FileBase::writeU16L(unsigned short number) -{ - writeBlock(ByteVector::fromShort(number, false)); -} - -void Mod::FileBase::writeU32L(unsigned long number) -{ - writeBlock(ByteVector::fromUInt(number, false)); -} - -void Mod::FileBase::writeU16B(unsigned short number) -{ - writeBlock(ByteVector::fromShort(number, true)); -} - -void Mod::FileBase::writeU32B(unsigned long number) -{ - writeBlock(ByteVector::fromUInt(number, true)); -} - -bool Mod::FileBase::readByte(unsigned char &byte) -{ - ByteVector data(readBlock(1)); - if(data.size() < 1) return false; - byte = data[0]; - return true; -} - -bool Mod::FileBase::readU16L(unsigned short &number) -{ - ByteVector data(readBlock(2)); - if(data.size() < 2) return false; - number = data.toUShort(false); - return true; -} - -bool Mod::FileBase::readU32L(unsigned long &number) { - ByteVector data(readBlock(4)); - if(data.size() < 4) return false; - number = data.toUInt(false); - return true; -} - -bool Mod::FileBase::readU16B(unsigned short &number) -{ - ByteVector data(readBlock(2)); - if(data.size() < 2) return false; - number = data.toUShort(true); - return true; -} - -bool Mod::FileBase::readU32B(unsigned long &number) { - ByteVector data(readBlock(4)); - if(data.size() < 4) return false; - number = data.toUInt(true); - return true; -} diff --git a/Frameworks/TagLib/taglib/taglib/mod/modfileprivate.h b/Frameworks/TagLib/taglib/taglib/mod/modfileprivate.h deleted file mode 100644 index 781db74c9..000000000 --- a/Frameworks/TagLib/taglib/taglib/mod/modfileprivate.h +++ /dev/null @@ -1,67 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * - * MA 02110-1301 USA * - ***************************************************************************/ - -#ifndef TAGLIB_MODFILEPRIVATE_H -#define TAGLIB_MODFILEPRIVATE_H - -// some helper-macros only used internally by (s3m|it|xm)file.cpp -#define READ_ASSERT(cond) \ - if(!(cond)) \ - { \ - setValid(false); \ - return; \ - } - -#define READ(setter,type,read) \ - { \ - type number; \ - READ_ASSERT(read(number)); \ - setter(number); \ - } - -#define READ_BYTE(setter) READ(setter,unsigned char,readByte) -#define READ_U16L(setter) READ(setter,unsigned short,readU16L) -#define READ_U32L(setter) READ(setter,unsigned long,readU32L) -#define READ_U16B(setter) READ(setter,unsigned short,readU16B) -#define READ_U32B(setter) READ(setter,unsigned long,readU32B) - -#define READ_STRING(setter,size) \ - { \ - String s; \ - READ_ASSERT(readString(s, size)); \ - setter(s); \ - } - -#define READ_AS(type,name,read) \ - type name = 0; \ - READ_ASSERT(read(name)); - -#define READ_BYTE_AS(name) READ_AS(unsigned char,name,readByte) -#define READ_U16L_AS(name) READ_AS(unsigned short,name,readU16L) -#define READ_U32L_AS(name) READ_AS(unsigned long,name,readU32L) -#define READ_U16B_AS(name) READ_AS(unsigned short,name,readU16B) -#define READ_U32B_AS(name) READ_AS(unsigned long,name,readU32B) - -#define READ_STRING_AS(name,size) \ - String name; \ - READ_ASSERT(readString(name, size)); - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/mod/modproperties.cpp b/Frameworks/TagLib/taglib/taglib/mod/modproperties.cpp deleted file mode 100644 index fca1813d7..000000000 --- a/Frameworks/TagLib/taglib/taglib/mod/modproperties.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/mod/modproperties.h> - -using namespace TagLib; -using namespace Mod; - -class Mod::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - channels(0), - instrumentCount(0), - lengthInPatterns(0) - { - } - - int channels; - unsigned int instrumentCount; - unsigned char lengthInPatterns; -}; - -Mod::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate()) -{ -} - -Mod::Properties::~Properties() -{ - delete d; -} - -int Mod::Properties::length() const -{ - return 0; -} - -int Mod::Properties::lengthInSeconds() const -{ - return 0; -} - -int Mod::Properties::lengthInMilliseconds() const -{ - return 0; -} - -int Mod::Properties::bitrate() const -{ - return 0; -} - -int Mod::Properties::sampleRate() const -{ - return 0; -} - -int Mod::Properties::channels() const -{ - return d->channels; -} - -unsigned int Mod::Properties::instrumentCount() const -{ - return d->instrumentCount; -} - -unsigned char Mod::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -void Mod::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void Mod::Properties::setInstrumentCount(unsigned int instrumentCount) -{ - d->instrumentCount = instrumentCount; -} - -void Mod::Properties::setLengthInPatterns(unsigned char lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} diff --git a/Frameworks/TagLib/taglib/taglib/mod/modtag.cpp b/Frameworks/TagLib/taglib/taglib/mod/modtag.cpp deleted file mode 100644 index 735b84126..000000000 --- a/Frameworks/TagLib/taglib/taglib/mod/modtag.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/mod/modtag.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace Mod; - -class Mod::Tag::TagPrivate -{ -public: - TagPrivate() - { - } - - String title; - String comment; - String trackerName; -}; - -Mod::Tag::Tag() : - TagLib::Tag(), - d(new TagPrivate()) -{ -} - -Mod::Tag::~Tag() -{ - delete d; -} - -String Mod::Tag::title() const -{ - return d->title; -} - -String Mod::Tag::albumartist() const -{ - return String(); -} - -String Mod::Tag::artist() const -{ - return String(); -} - -String Mod::Tag::composer() const -{ - return String(); -} - -String Mod::Tag::album() const -{ - return String(); -} - -String Mod::Tag::unsyncedlyrics() const -{ - return String(); -} - -String Mod::Tag::comment() const -{ - return d->comment; -} - -String Mod::Tag::genre() const -{ - return String(); -} - -unsigned int Mod::Tag::year() const -{ - return 0; -} - -unsigned int Mod::Tag::track() const -{ - return 0; -} - -unsigned int Mod::Tag::disc() const -{ - return 0; -} - -String Mod::Tag::cuesheet() const -{ - return String(); -} - -float Mod::Tag::rgAlbumGain() const -{ - return 0; -} - -float Mod::Tag::rgAlbumPeak() const -{ - return 0; -} - -float Mod::Tag::rgTrackGain() const -{ - return 0; -} - -float Mod::Tag::rgTrackPeak() const -{ - return 0; -} - -String Mod::Tag::soundcheck() const -{ - return String(); -} - -String Mod::Tag::trackerName() const -{ - return d->trackerName; -} - -void Mod::Tag::setTitle(const String &title) -{ - d->title = title; -} - -void Mod::Tag::setAlbumArtist(const String &) -{ -} - -void Mod::Tag::setArtist(const String &) -{ -} - -void Mod::Tag::setComposer(const String &) -{ -} - -void Mod::Tag::setAlbum(const String &) -{ -} - -void Mod::Tag::setUnsyncedlyrics(const String &) -{ -} - -void Mod::Tag::setComment(const String &comment) -{ - d->comment = comment; -} - -void Mod::Tag::setGenre(const String &) -{ -} - -void Mod::Tag::setYear(unsigned int) -{ -} - -void Mod::Tag::setTrack(unsigned int) -{ -} - -void Mod::Tag::setDisc(unsigned int) -{ -} - -void Mod::Tag::setCuesheet(const String &) -{ -} - -void Mod::Tag::setRGAlbumGain(float) -{ -} - -void Mod::Tag::setRGAlbumPeak(float) -{ -} - -void Mod::Tag::setRGTrackGain(float) -{ -} - -void Mod::Tag::setRGTrackPeak(float) -{ -} - -void Mod::Tag::setTrackerName(const String &trackerName) -{ - d->trackerName = trackerName; -} - -PropertyMap Mod::Tag::properties() const -{ - PropertyMap properties; - properties["TITLE"] = d->title; - properties["COMMENT"] = d->comment; - if(!(d->trackerName.isEmpty())) - properties["TRACKERNAME"] = d->trackerName; - return properties; -} - -PropertyMap Mod::Tag::setProperties(const PropertyMap &origProps) -{ - PropertyMap properties(origProps); - properties.removeEmpty(); - StringList oneValueSet; - if(properties.contains("TITLE")) { - d->title = properties["TITLE"].front(); - oneValueSet.append("TITLE"); - } else - d->title.clear(); - - if(properties.contains("COMMENT")) { - d->comment = properties["COMMENT"].front(); - oneValueSet.append("COMMENT"); - } else - d->comment.clear(); - - if(properties.contains("TRACKERNAME")) { - d->trackerName = properties["TRACKERNAME"].front(); - oneValueSet.append("TRACKERNAME"); - } else - d->trackerName.clear(); - - // for each tag that has been set above, remove the first entry in the corresponding - // value list. The others will be returned as unsupported by this format. - for(StringList::ConstIterator it = oneValueSet.begin(); it != oneValueSet.end(); ++it) { - if(properties[*it].size() == 1) - properties.erase(*it); - else - properties[*it].erase( properties[*it].begin() ); - } - return properties; -} diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4atom.cpp b/Frameworks/TagLib/taglib/taglib/mp4/mp4atom.cpp deleted file mode 100644 index e0f7dd44d..000000000 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4atom.cpp +++ /dev/null @@ -1,197 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <climits> - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/mp4/mp4atom.h> - -using namespace TagLib; - -const char *MP4::Atom::containers[11] = { - "moov", "udta", "mdia", "meta", "ilst", - "stbl", "minf", "moof", "traf", "trak", - "stsd" -}; - -MP4::Atom::Atom(File *file) -{ - children.setAutoDelete(true); - - offset = file->tell(); - ByteVector header = file->readBlock(8); - if(header.size() != 8) { - // The atom header must be 8 bytes long, otherwise there is either - // trailing garbage or the file is truncated - debug("MP4: Couldn't read 8 bytes of data for atom header"); - length = 0; - file->seek(0, File::End); - return; - } - - length = header.toUInt(); - - if(length == 0) { - // The last atom which extends to the end of the file. - length = file->length() - offset; - } - else if(length == 1) { - // The atom has a 64-bit length. - const long long longLength = file->readBlock(8).toLongLong(); - if(longLength <= LONG_MAX) { - // The actual length fits in long. That's always the case if long is 64-bit. - length = static_cast<long>(longLength); - } - else { - debug("MP4: 64-bit atoms are not supported"); - length = 0; - file->seek(0, File::End); - return; - } - } - - if(length < 8) { - debug("MP4: Invalid atom size"); - length = 0; - file->seek(0, File::End); - return; - } - - name = header.mid(4, 4); - - for(int i = 0; i < numContainers; i++) { - if(name == containers[i]) { - if(name == "meta") { - file->seek(4, File::Current); - } - else if(name == "stsd") { - file->seek(8, File::Current); - } - while(file->tell() < offset + length) { - MP4::Atom *child = new MP4::Atom(file); - children.append(child); - if(child->length == 0) - return; - } - return; - } - } - - file->seek(offset + length); -} - -MP4::Atom::~Atom() -{ -} - -MP4::Atom * -MP4::Atom::find(const char *name1, const char *name2, const char *name3, const char *name4) -{ - if(name1 == 0) { - return this; - } - for(AtomList::ConstIterator it = children.begin(); it != children.end(); ++it) { - if((*it)->name == name1) { - return (*it)->find(name2, name3, name4); - } - } - return 0; -} - -MP4::AtomList -MP4::Atom::findall(const char *name, bool recursive) -{ - MP4::AtomList result; - for(AtomList::ConstIterator it = children.begin(); it != children.end(); ++it) { - if((*it)->name == name) { - result.append(*it); - } - if(recursive) { - result.append((*it)->findall(name, recursive)); - } - } - return result; -} - -bool -MP4::Atom::path(MP4::AtomList &path, const char *name1, const char *name2, const char *name3) -{ - path.append(this); - if(name1 == 0) { - return true; - } - for(AtomList::ConstIterator it = children.begin(); it != children.end(); ++it) { - if((*it)->name == name1) { - return (*it)->path(path, name2, name3); - } - } - return false; -} - -MP4::Atoms::Atoms(File *file) -{ - atoms.setAutoDelete(true); - - file->seek(0, File::End); - long end = file->tell(); - file->seek(0); - while(file->tell() + 8 <= end) { - MP4::Atom *atom = new MP4::Atom(file); - atoms.append(atom); - if (atom->length == 0) - break; - } -} - -MP4::Atoms::~Atoms() -{ -} - -MP4::Atom * -MP4::Atoms::find(const char *name1, const char *name2, const char *name3, const char *name4) -{ - for(AtomList::ConstIterator it = atoms.begin(); it != atoms.end(); ++it) { - if((*it)->name == name1) { - return (*it)->find(name2, name3, name4); - } - } - return 0; -} - -MP4::AtomList -MP4::Atoms::path(const char *name1, const char *name2, const char *name3, const char *name4) -{ - MP4::AtomList path; - for(AtomList::ConstIterator it = atoms.begin(); it != atoms.end(); ++it) { - if((*it)->name == name1) { - if(!(*it)->path(path, name2, name3, name4)) { - path.clear(); - } - return path; - } - } - return path; -} diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4file.cpp b/Frameworks/TagLib/taglib/taglib/mp4/mp4file.cpp deleted file mode 100644 index 831e21e7f..000000000 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4file.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/mp4/mp4atom.h> -#include <taglib/mp4/mp4tag.h> -#include <taglib/mp4/mp4file.h> - -using namespace TagLib; - -namespace -{ - bool checkValid(const MP4::AtomList &list) - { - for(MP4::AtomList::ConstIterator it = list.begin(); it != list.end(); ++it) { - - if((*it)->length == 0) - return false; - - if(!checkValid((*it)->children)) - return false; - } - - return true; - } -} - -class MP4::File::FilePrivate -{ -public: - FilePrivate() : - tag(0), - atoms(0), - properties(0) {} - - ~FilePrivate() - { - delete atoms; - delete tag; - delete properties; - } - - MP4::Tag *tag; - MP4::Atoms *atoms; - MP4::Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool MP4::File::isSupported(IOStream *stream) -{ - // An MP4 file has to have an "ftyp" box first. - - const ByteVector id = Utils::readHeader(stream, 8, false); - return id.containsAt("ftyp", 4); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MP4::File::File(FileName file, bool readProperties, AudioProperties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -MP4::File::File(IOStream *stream, bool readProperties, AudioProperties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -MP4::File::~File() -{ - delete d; -} - -MP4::Tag * -MP4::File::tag() const -{ - return d->tag; -} - -PropertyMap MP4::File::properties() const -{ - return d->tag->properties(); -} - -void MP4::File::removeUnsupportedProperties(const StringList &properties) -{ - d->tag->removeUnsupportedProperties(properties); -} - -PropertyMap MP4::File::setProperties(const PropertyMap &properties) -{ - return d->tag->setProperties(properties); -} - -MP4::Properties * -MP4::File::audioProperties() const -{ - return d->properties; -} - -void -MP4::File::read(bool readProperties) -{ - if(!isValid()) - return; - - d->atoms = new Atoms(this); - if(!checkValid(d->atoms->atoms)) { - setValid(false); - return; - } - - // must have a moov atom, otherwise consider it invalid - if(!d->atoms->find("moov")) { - setValid(false); - return; - } - - d->tag = new Tag(this, d->atoms); - if(readProperties) { - d->properties = new Properties(this, d->atoms); - } -} - -bool -MP4::File::save() -{ - if(readOnly()) { - debug("MP4::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("MP4::File::save() -- Trying to save invalid file."); - return false; - } - - return d->tag->save(); -} - -bool -MP4::File::hasMP4Tag() const -{ - return (d->atoms->find("moov", "udta", "meta", "ilst") != 0); -} diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4item.cpp b/Frameworks/TagLib/taglib/taglib/mp4/mp4item.cpp deleted file mode 100644 index cf5c9f047..000000000 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4item.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/trefcounter.h> -#include <taglib/mp4/mp4item.h> - -using namespace TagLib; - -class MP4::Item::ItemPrivate : public RefCounter -{ -public: - ItemPrivate() : - RefCounter(), - valid(true), - atomDataType(TypeUndefined) {} - - bool valid; - AtomDataType atomDataType; - union { - bool m_bool; - int m_int; - IntPair m_intPair; - unsigned char m_byte; - unsigned int m_uint; - long long m_longlong; - }; - StringList m_stringList; - ByteVectorList m_byteVectorList; - MP4::CoverArtList m_coverArtList; -}; - -MP4::Item::Item() : - d(new ItemPrivate()) -{ - d->valid = false; -} - -MP4::Item::Item(const Item &item) : - d(item.d) -{ - d->ref(); -} - -MP4::Item & -MP4::Item::operator=(const Item &item) -{ - Item(item).swap(*this); - return *this; -} - -void -MP4::Item::swap(Item &item) -{ - using std::swap; - - swap(d, item.d); -} - -MP4::Item::~Item() -{ - if(d->deref()) - delete d; -} - -MP4::Item::Item(bool value) : - d(new ItemPrivate()) -{ - d->m_bool = value; -} - -MP4::Item::Item(int value) : - d(new ItemPrivate()) -{ - d->m_int = value; -} - -MP4::Item::Item(unsigned char value) : - d(new ItemPrivate()) -{ - d->m_byte = value; -} - -MP4::Item::Item(unsigned int value) : - d(new ItemPrivate()) -{ - d->m_uint = value; -} - -MP4::Item::Item(long long value) : - d(new ItemPrivate()) -{ - d->m_longlong = value; -} - -MP4::Item::Item(int value1, int value2) : - d(new ItemPrivate()) -{ - d->m_intPair.first = value1; - d->m_intPair.second = value2; -} - -MP4::Item::Item(const ByteVectorList &value) : - d(new ItemPrivate()) -{ - d->m_byteVectorList = value; -} - -MP4::Item::Item(const StringList &value) : - d(new ItemPrivate()) -{ - d->m_stringList = value; -} - -MP4::Item::Item(const MP4::CoverArtList &value) : - d(new ItemPrivate()) -{ - d->m_coverArtList = value; -} - -void MP4::Item::setAtomDataType(MP4::AtomDataType type) -{ - d->atomDataType = type; -} - -MP4::AtomDataType MP4::Item::atomDataType() const -{ - return d->atomDataType; -} - -bool -MP4::Item::toBool() const -{ - return d->m_bool; -} - -int -MP4::Item::toInt() const -{ - return d->m_int; -} - -unsigned char -MP4::Item::toByte() const -{ - return d->m_byte; -} - -unsigned int -MP4::Item::toUInt() const -{ - return d->m_uint; -} - -long long -MP4::Item::toLongLong() const -{ - return d->m_longlong; -} - -MP4::Item::IntPair -MP4::Item::toIntPair() const -{ - return d->m_intPair; -} - -StringList -MP4::Item::toStringList() const -{ - return d->m_stringList; -} - -ByteVectorList -MP4::Item::toByteVectorList() const -{ - return d->m_byteVectorList; -} - -MP4::CoverArtList -MP4::Item::toCoverArtList() const -{ - return d->m_coverArtList; -} - -bool -MP4::Item::isValid() const -{ - return d->valid; -} diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4properties.cpp b/Frameworks/TagLib/taglib/taglib/mp4/mp4properties.cpp deleted file mode 100644 index 85a3e1f4e..000000000 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4properties.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/************************************************************************** - copyright : (C) 2007 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/mp4/mp4file.h> -#include <taglib/mp4/mp4atom.h> -#include <taglib/mp4/mp4properties.h> - -using namespace TagLib; - -namespace -{ - // Calculate the total bytes used by audio data, used to calculate the bitrate - long long calculateMdatLength(const MP4::AtomList &list) - { - long long totalLength = 0; - for(MP4::AtomList::ConstIterator it = list.begin(); it != list.end(); ++it) { - long length = (*it)->length; - if(length == 0) - return 0; // for safety, see checkValid() in mp4file.cpp - - if((*it)->name == "mdat") - totalLength += length; - - totalLength += calculateMdatLength((*it)->children); - } - - return totalLength; - } -} - -class MP4::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - bitsPerSample(0), - encrypted(false), - codec(MP4::Properties::Unknown) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int bitsPerSample; - bool encrypted; - Codec codec; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MP4::Properties::Properties(File *file, MP4::Atoms *atoms, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file, atoms); -} - -MP4::Properties::~Properties() -{ - delete d; -} - -int -MP4::Properties::channels() const -{ - return d->channels; -} - -int -MP4::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int -MP4::Properties::length() const -{ - return lengthInSeconds(); -} - -int -MP4::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int -MP4::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int -MP4::Properties::bitrate() const -{ - return d->bitrate; -} - -int -MP4::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -bool -MP4::Properties::isEncrypted() const -{ - return d->encrypted; -} - -MP4::Properties::Codec -MP4::Properties::codec() const -{ - return d->codec; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void -MP4::Properties::read(File *file, Atoms *atoms) -{ - MP4::Atom *moov = atoms->find("moov"); - if(!moov) { - debug("MP4: Atom 'moov' not found"); - return; - } - - MP4::Atom *trak = 0; - ByteVector data; - - const MP4::AtomList trakList = moov->findall("trak"); - for(MP4::AtomList::ConstIterator it = trakList.begin(); it != trakList.end(); ++it) { - trak = *it; - MP4::Atom *hdlr = trak->find("mdia", "hdlr"); - if(!hdlr) { - debug("MP4: Atom 'trak.mdia.hdlr' not found"); - return; - } - file->seek(hdlr->offset); - data = file->readBlock(hdlr->length); - if(data.containsAt("soun", 16)) { - break; - } - trak = 0; - } - if(!trak) { - debug("MP4: No audio tracks"); - return; - } - - MP4::Atom *mdhd = trak->find("mdia", "mdhd"); - if(!mdhd) { - debug("MP4: Atom 'trak.mdia.mdhd' not found"); - return; - } - - file->seek(mdhd->offset); - data = file->readBlock(mdhd->length); - - const unsigned int version = data[8]; - long long unit; - long long length; - if(version == 1) { - if(data.size() < 36 + 8) { - debug("MP4: Atom 'trak.mdia.mdhd' is smaller than expected"); - return; - } - unit = data.toUInt(28U); - length = data.toLongLong(32U); - } - else { - if(data.size() < 24 + 8) { - debug("MP4: Atom 'trak.mdia.mdhd' is smaller than expected"); - return; - } - unit = data.toUInt(20U); - length = data.toUInt(24U); - } - if(unit > 0 && length > 0) - d->length = static_cast<int>(length * 1000.0 / unit + 0.5); - - MP4::Atom *atom = trak->find("mdia", "minf", "stbl", "stsd"); - if(!atom) { - return; - } - - file->seek(atom->offset); - data = file->readBlock(atom->length); - if(data.containsAt("mp4a", 20)) { - d->codec = AAC; - d->channels = data.toShort(40U); - d->bitsPerSample = data.toShort(42U); - d->sampleRate = data.toUInt(46U); - if(data.containsAt("esds", 56) && data[64] == 0x03) { - unsigned int pos = 65; - if(data.containsAt("\x80\x80\x80", pos)) { - pos += 3; - } - pos += 4; - if(data[pos] == 0x04) { - pos += 1; - if(data.containsAt("\x80\x80\x80", pos)) { - pos += 3; - } - pos += 10; - const unsigned int bitrateValue = data.toUInt(pos); - if(bitrateValue != 0 || d->length <= 0) { - d->bitrate = static_cast<int>((bitrateValue + 500) / 1000.0 + 0.5); - } - else { - d->bitrate = static_cast<int>( - (calculateMdatLength(atoms->atoms) * 8) / d->length); - } - } - } - } - else if(data.containsAt("alac", 20)) { - if(atom->length == 88 && data.containsAt("alac", 56)) { - d->codec = ALAC; - d->bitsPerSample = data.at(69); - d->channels = data.at(73); - d->bitrate = static_cast<int>(data.toUInt(80U) / 1000.0 + 0.5); - d->sampleRate = data.toUInt(84U); - - if(d->bitrate == 0 && d->length > 0) { - // There are files which do not contain a nominal bitrate, e.g. those - // generated by refalac64.exe. Calculate the bitrate from the audio - // data size (mdat atoms) and the duration. - d->bitrate = (calculateMdatLength(atoms->atoms) * 8) / d->length; - } - } - } - - MP4::Atom *drms = atom->find("drms"); - if(drms) { - d->encrypted = true; - } -} diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp b/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp deleted file mode 100644 index 729845fdc..000000000 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.cpp +++ /dev/null @@ -1,1186 +0,0 @@ -/************************************************************************** - copyright : (C) 2007,2011 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/mp4/mp4atom.h> -#include <taglib/mp4/mp4tag.h> -#include <taglib/mpeg/id3v1/id3v1genres.h> - -using namespace TagLib; - -class MP4::Tag::TagPrivate -{ -public: - TagPrivate() : - file(0), - atoms(0) {} - - TagLib::File *file; - Atoms *atoms; - ItemMap items; -}; - -MP4::Tag::Tag() : - d(new TagPrivate()) -{ -} - -MP4::Tag::Tag(TagLib::File *file, MP4::Atoms *atoms) : - d(new TagPrivate()) -{ - d->file = file; - d->atoms = atoms; - - MP4::Atom *ilst = atoms->find("moov", "udta", "meta", "ilst"); - if(!ilst) { - //debug("Atom moov.udta.meta.ilst not found."); - return; - } - - for(AtomList::ConstIterator it = ilst->children.begin(); it != ilst->children.end(); ++it) { - MP4::Atom *atom = *it; - file->seek(atom->offset + 8); - if(atom->name == "----") { - parseFreeForm(atom); - } - else if(atom->name == "trkn" || atom->name == "disk") { - parseIntPair(atom); - } - else if(atom->name == "cpil" || atom->name == "pgap" || atom->name == "pcst" || - atom->name == "hdvd" || atom->name == "shwm") { - parseBool(atom); - } - else if(atom->name == "tmpo" || atom->name == "\251mvi" || atom->name == "\251mvc") { - parseInt(atom); - } - else if(atom->name == "rate") { - AtomDataList data = parseData2(atom); - if(!data.isEmpty()) { - AtomData val = data[0]; - if (val.type == TypeUTF8) { - addItem(atom->name, StringList(String(val.data, String::UTF8))); - } else { - addItem(atom->name, (int)(val.data.toShort())); - } - } - } - else if(atom->name == "tvsn" || atom->name == "tves" || atom->name == "cnID" || - atom->name == "sfID" || atom->name == "atID" || atom->name == "geID" || - atom->name == "cmID") { - parseUInt(atom); - } - else if(atom->name == "plID") { - parseLongLong(atom); - } - else if(atom->name == "stik" || atom->name == "rtng" || atom->name == "akID") { - parseByte(atom); - } - else if(atom->name == "gnre") { - parseGnre(atom); - } - else if(atom->name == "covr") { - parseCovr(atom); - } - else if(atom->name == "purl" || atom->name == "egid") { - parseText(atom, -1); - } - else { - parseText(atom); - } - } -} - -MP4::Tag::~Tag() -{ - delete d; -} - -MP4::AtomDataList -MP4::Tag::parseData2(const MP4::Atom *atom, int expectedFlags, bool freeForm) -{ - AtomDataList result; - ByteVector data = d->file->readBlock(atom->length - 8); - int i = 0; - unsigned int pos = 0; - while(pos < data.size()) { - const int length = static_cast<int>(data.toUInt(pos)); - if(length < 12) { - debug("MP4: Too short atom"); - return result; - } - - const ByteVector name = data.mid(pos + 4, 4); - const int flags = static_cast<int>(data.toUInt(pos + 8)); - if(freeForm && i < 2) { - if(i == 0 && name != "mean") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"mean\""); - return result; - } - else if(i == 1 && name != "name") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"name\""); - return result; - } - result.append(AtomData(AtomDataType(flags), data.mid(pos + 12, length - 12))); - } - else { - if(name != "data") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"data\""); - return result; - } - if(expectedFlags == -1 || flags == expectedFlags) { - result.append(AtomData(AtomDataType(flags), data.mid(pos + 16, length - 16))); - } - } - pos += length; - i++; - } - return result; -} - -ByteVectorList -MP4::Tag::parseData(const MP4::Atom *atom, int expectedFlags, bool freeForm) -{ - AtomDataList data = parseData2(atom, expectedFlags, freeForm); - ByteVectorList result; - for(AtomDataList::ConstIterator it = data.begin(); it != data.end(); ++it) { - result.append(it->data); - } - return result; -} - -void -MP4::Tag::parseInt(const MP4::Atom *atom) -{ - ByteVectorList data = parseData(atom); - if(!data.isEmpty()) { - addItem(atom->name, (int)data[0].toShort()); - } -} - -void -MP4::Tag::parseUInt(const MP4::Atom *atom) -{ - ByteVectorList data = parseData(atom); - if(!data.isEmpty()) { - addItem(atom->name, data[0].toUInt()); - } -} - -void -MP4::Tag::parseLongLong(const MP4::Atom *atom) -{ - ByteVectorList data = parseData(atom); - if(!data.isEmpty()) { - addItem(atom->name, data[0].toLongLong()); - } -} - -void -MP4::Tag::parseByte(const MP4::Atom *atom) -{ - ByteVectorList data = parseData(atom); - if(!data.isEmpty()) { - addItem(atom->name, static_cast<unsigned char>(data[0].at(0))); - } -} - -void -MP4::Tag::parseGnre(const MP4::Atom *atom) -{ - ByteVectorList data = parseData(atom); - if(!data.isEmpty()) { - int idx = (int)data[0].toShort(); - if(idx > 0) { - addItem("\251gen", StringList(ID3v1::genre(idx - 1))); - } - } -} - -void -MP4::Tag::parseIntPair(const MP4::Atom *atom) -{ - ByteVectorList data = parseData(atom); - if(!data.isEmpty()) { - const int a = data[0].toShort(2U); - const int b = data[0].toShort(4U); - addItem(atom->name, MP4::Item(a, b)); - } -} - -void -MP4::Tag::parseBool(const MP4::Atom *atom) -{ - ByteVectorList data = parseData(atom); - if(!data.isEmpty()) { - bool value = data[0].size() ? data[0][0] != '\0' : false; - addItem(atom->name, value); - } -} - -void -MP4::Tag::parseText(const MP4::Atom *atom, int expectedFlags) -{ - ByteVectorList data = parseData(atom, expectedFlags); - if(!data.isEmpty()) { - StringList value; - for(ByteVectorList::ConstIterator it = data.begin(); it != data.end(); ++it) { - value.append(String(*it, String::UTF8)); - } - addItem(atom->name, value); - } -} - -void -MP4::Tag::parseFreeForm(const MP4::Atom *atom) -{ - AtomDataList data = parseData2(atom, -1, true); - if(data.size() > 2) { - AtomDataList::ConstIterator itBegin = data.begin(); - - String name = "----:"; - name += String((itBegin++)->data, String::UTF8); // data[0].data - name += ':'; - name += String((itBegin++)->data, String::UTF8); // data[1].data - - AtomDataType type = itBegin->type; // data[2].type - - for(AtomDataList::ConstIterator it = itBegin; it != data.end(); ++it) { - if(it->type != type) { - debug("MP4: We currently don't support values with multiple types"); - break; - } - } - if(type == TypeUTF8) { - StringList value; - for(AtomDataList::ConstIterator it = itBegin; it != data.end(); ++it) { - value.append(String(it->data, String::UTF8)); - } - Item item(value); - item.setAtomDataType(type); - addItem(name, item); - } - else { - ByteVectorList value; - for(AtomDataList::ConstIterator it = itBegin; it != data.end(); ++it) { - value.append(it->data); - } - Item item(value); - item.setAtomDataType(type); - addItem(name, item); - } - } -} - -void -MP4::Tag::parseCovr(const MP4::Atom *atom) -{ - MP4::CoverArtList value; - ByteVector data = d->file->readBlock(atom->length - 8); - unsigned int pos = 0; - while(pos < data.size()) { - const int length = static_cast<int>(data.toUInt(pos)); - if(length < 12) { - debug("MP4: Too short atom"); - break; - } - - const ByteVector name = data.mid(pos + 4, 4); - const int flags = static_cast<int>(data.toUInt(pos + 8)); - if(name != "data") { - debug("MP4: Unexpected atom \"" + name + "\", expecting \"data\""); - break; - } - if(flags == TypeJPEG || flags == TypePNG || flags == TypeBMP || - flags == TypeGIF || flags == TypeImplicit) { - value.append(MP4::CoverArt(MP4::CoverArt::Format(flags), - data.mid(pos + 16, length - 16))); - } - else { - debug("MP4: Unknown covr format " + String::number(flags)); - } - pos += length; - } - if(!value.isEmpty()) - addItem(atom->name, value); -} - -ByteVector -MP4::Tag::padIlst(const ByteVector &data, int length) const -{ - if(length == -1) { - length = ((data.size() + 1023) & ~1023) - data.size(); - } - return renderAtom("free", ByteVector(length, '\1')); -} - -ByteVector -MP4::Tag::renderAtom(const ByteVector &name, const ByteVector &data) const -{ - return ByteVector::fromUInt(data.size() + 8) + name + data; -} - -ByteVector -MP4::Tag::renderData(const ByteVector &name, int flags, const ByteVectorList &data) const -{ - ByteVector result; - for(ByteVectorList::ConstIterator it = data.begin(); it != data.end(); ++it) { - result.append(renderAtom("data", ByteVector::fromUInt(flags) + ByteVector(4, '\0') + *it)); - } - return renderAtom(name, result); -} - -ByteVector -MP4::Tag::renderBool(const ByteVector &name, const MP4::Item &item) const -{ - ByteVectorList data; - data.append(ByteVector(1, item.toBool() ? '\1' : '\0')); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderInt(const ByteVector &name, const MP4::Item &item) const -{ - ByteVectorList data; - data.append(ByteVector::fromShort(item.toInt())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderUInt(const ByteVector &name, const MP4::Item &item) const -{ - ByteVectorList data; - data.append(ByteVector::fromUInt(item.toUInt())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderLongLong(const ByteVector &name, const MP4::Item &item) const -{ - ByteVectorList data; - data.append(ByteVector::fromLongLong(item.toLongLong())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderByte(const ByteVector &name, const MP4::Item &item) const -{ - ByteVectorList data; - data.append(ByteVector(1, item.toByte())); - return renderData(name, TypeInteger, data); -} - -ByteVector -MP4::Tag::renderIntPair(const ByteVector &name, const MP4::Item &item) const -{ - ByteVectorList data; - data.append(ByteVector(2, '\0') + - ByteVector::fromShort(item.toIntPair().first) + - ByteVector::fromShort(item.toIntPair().second) + - ByteVector(2, '\0')); - return renderData(name, TypeImplicit, data); -} - -ByteVector -MP4::Tag::renderIntPairNoTrailing(const ByteVector &name, const MP4::Item &item) const -{ - ByteVectorList data; - data.append(ByteVector(2, '\0') + - ByteVector::fromShort(item.toIntPair().first) + - ByteVector::fromShort(item.toIntPair().second)); - return renderData(name, TypeImplicit, data); -} - -ByteVector -MP4::Tag::renderText(const ByteVector &name, const MP4::Item &item, int flags) const -{ - ByteVectorList data; - StringList value = item.toStringList(); - for(StringList::ConstIterator it = value.begin(); it != value.end(); ++it) { - data.append(it->data(String::UTF8)); - } - return renderData(name, flags, data); -} - -ByteVector -MP4::Tag::renderCovr(const ByteVector &name, const MP4::Item &item) const -{ - ByteVector data; - MP4::CoverArtList value = item.toCoverArtList(); - for(MP4::CoverArtList::ConstIterator it = value.begin(); it != value.end(); ++it) { - data.append(renderAtom("data", ByteVector::fromUInt(it->format()) + - ByteVector(4, '\0') + it->data())); - } - return renderAtom(name, data); -} - -ByteVector -MP4::Tag::renderFreeForm(const String &name, const MP4::Item &item) const -{ - StringList header = StringList::split(name, ":"); - if(header.size() != 3) { - debug("MP4: Invalid free-form item name \"" + name + "\""); - return ByteVector(); - } - ByteVector data; - data.append(renderAtom("mean", ByteVector::fromUInt(0) + header[1].data(String::UTF8))); - data.append(renderAtom("name", ByteVector::fromUInt(0) + header[2].data(String::UTF8))); - AtomDataType type = item.atomDataType(); - if(type == TypeUndefined) { - if(!item.toStringList().isEmpty()) { - type = TypeUTF8; - } - else { - type = TypeImplicit; - } - } - if(type == TypeUTF8) { - StringList value = item.toStringList(); - for(StringList::ConstIterator it = value.begin(); it != value.end(); ++it) { - data.append(renderAtom("data", ByteVector::fromUInt(type) + ByteVector(4, '\0') + it->data(String::UTF8))); - } - } - else { - ByteVectorList value = item.toByteVectorList(); - for(ByteVectorList::ConstIterator it = value.begin(); it != value.end(); ++it) { - data.append(renderAtom("data", ByteVector::fromUInt(type) + ByteVector(4, '\0') + *it)); - } - } - return renderAtom("----", data); -} - -bool -MP4::Tag::save() -{ - ByteVector data; - for(MP4::ItemMap::ConstIterator it = d->items.begin(); it != d->items.end(); ++it) { - const String name = it->first; - if(name.startsWith("----")) { - data.append(renderFreeForm(name, it->second)); - } - else if(name == "trkn") { - data.append(renderIntPair(name.data(String::Latin1), it->second)); - } - else if(name == "disk") { - data.append(renderIntPairNoTrailing(name.data(String::Latin1), it->second)); - } - else if(name == "cpil" || name == "pgap" || name == "pcst" || name == "hdvd" || - name == "shwm") { - data.append(renderBool(name.data(String::Latin1), it->second)); - } - else if(name == "tmpo" || name == "\251mvi" || name == "\251mvc") { - data.append(renderInt(name.data(String::Latin1), it->second)); - } - else if (name == "rate") { - const MP4::Item& item = it->second; - StringList value = item.toStringList(); - if (value.isEmpty()) { - data.append(renderInt(name.data(String::Latin1), item)); - } - else { - data.append(renderText(name.data(String::Latin1), item)); - } - } - else if(name == "tvsn" || name == "tves" || name == "cnID" || - name == "sfID" || name == "atID" || name == "geID" || - name == "cmID") { - data.append(renderUInt(name.data(String::Latin1), it->second)); - } - else if(name == "plID") { - data.append(renderLongLong(name.data(String::Latin1), it->second)); - } - else if(name == "stik" || name == "rtng" || name == "akID") { - data.append(renderByte(name.data(String::Latin1), it->second)); - } - else if(name == "covr") { - data.append(renderCovr(name.data(String::Latin1), it->second)); - } - else if(name == "purl" || name == "egid") { - data.append(renderText(name.data(String::Latin1), it->second, TypeImplicit)); - } - else if(name.size() == 4){ - data.append(renderText(name.data(String::Latin1), it->second)); - } - else { - debug("MP4: Unknown item name \"" + name + "\""); - } - } - data = renderAtom("ilst", data); - - AtomList path = d->atoms->path("moov", "udta", "meta", "ilst"); - if(path.size() == 4) { - saveExisting(data, path); - } - else { - saveNew(data); - } - - return true; -} - -void -MP4::Tag::updateParents(const AtomList &path, long delta, int ignore) -{ - if(static_cast<int>(path.size()) <= ignore) - return; - - AtomList::ConstIterator itEnd = path.end(); - std::advance(itEnd, 0 - ignore); - - for(AtomList::ConstIterator it = path.begin(); it != itEnd; ++it) { - d->file->seek((*it)->offset); - long size = d->file->readBlock(4).toUInt(); - // 64-bit - if (size == 1) { - d->file->seek(4, File::Current); // Skip name - long long longSize = d->file->readBlock(8).toLongLong(); - // Seek the offset of the 64-bit size - d->file->seek((*it)->offset + 8); - d->file->writeBlock(ByteVector::fromLongLong(longSize + delta)); - } - // 32-bit - else { - d->file->seek((*it)->offset); - d->file->writeBlock(ByteVector::fromUInt(size + delta)); - } - } -} - -void -MP4::Tag::updateOffsets(long delta, long offset) -{ - MP4::Atom *moov = d->atoms->find("moov"); - if(moov) { - MP4::AtomList stco = moov->findall("stco", true); - for(MP4::AtomList::ConstIterator it = stco.begin(); it != stco.end(); ++it) { - MP4::Atom *atom = *it; - if(atom->offset > offset) { - atom->offset += delta; - } - d->file->seek(atom->offset + 12); - ByteVector data = d->file->readBlock(atom->length - 12); - unsigned int count = data.toUInt(); - d->file->seek(atom->offset + 16); - unsigned int pos = 4; - while(count--) { - long o = static_cast<long>(data.toUInt(pos)); - if(o > offset) { - o += delta; - } - d->file->writeBlock(ByteVector::fromUInt(o)); - pos += 4; - } - } - - MP4::AtomList co64 = moov->findall("co64", true); - for(MP4::AtomList::ConstIterator it = co64.begin(); it != co64.end(); ++it) { - MP4::Atom *atom = *it; - if(atom->offset > offset) { - atom->offset += delta; - } - d->file->seek(atom->offset + 12); - ByteVector data = d->file->readBlock(atom->length - 12); - unsigned int count = data.toUInt(); - d->file->seek(atom->offset + 16); - unsigned int pos = 4; - while(count--) { - long long o = data.toLongLong(pos); - if(o > offset) { - o += delta; - } - d->file->writeBlock(ByteVector::fromLongLong(o)); - pos += 8; - } - } - } - - MP4::Atom *moof = d->atoms->find("moof"); - if(moof) { - MP4::AtomList tfhd = moof->findall("tfhd", true); - for(MP4::AtomList::ConstIterator it = tfhd.begin(); it != tfhd.end(); ++it) { - MP4::Atom *atom = *it; - if(atom->offset > offset) { - atom->offset += delta; - } - d->file->seek(atom->offset + 9); - ByteVector data = d->file->readBlock(atom->length - 9); - const unsigned int flags = data.toUInt(0, 3, true); - if(flags & 1) { - long long o = data.toLongLong(7U); - if(o > offset) { - o += delta; - } - d->file->seek(atom->offset + 16); - d->file->writeBlock(ByteVector::fromLongLong(o)); - } - } - } -} - -void -MP4::Tag::saveNew(ByteVector data) -{ - data = renderAtom("meta", ByteVector(4, '\0') + - renderAtom("hdlr", ByteVector(8, '\0') + ByteVector("mdirappl") + - ByteVector(9, '\0')) + - data + padIlst(data)); - - AtomList path = d->atoms->path("moov", "udta"); - if(path.size() != 2) { - path = d->atoms->path("moov"); - data = renderAtom("udta", data); - } - - long offset = path.back()->offset + 8; - d->file->insert(data, offset, 0); - - updateParents(path, data.size()); - updateOffsets(data.size(), offset); - - // Insert the newly created atoms into the tree to keep it up-to-date. - - d->file->seek(offset); - path.back()->children.prepend(new Atom(d->file)); -} - -void -MP4::Tag::saveExisting(ByteVector data, const AtomList &path) -{ - AtomList::ConstIterator it = path.end(); - - MP4::Atom *ilst = *(--it); - long offset = ilst->offset; - long length = ilst->length; - - MP4::Atom *meta = *(--it); - AtomList::ConstIterator index = meta->children.find(ilst); - - // check if there is an atom before 'ilst', and possibly use it as padding - if(index != meta->children.begin()) { - AtomList::ConstIterator prevIndex = index; - prevIndex--; - MP4::Atom *prev = *prevIndex; - if(prev->name == "free") { - offset = prev->offset; - length += prev->length; - } - } - // check if there is an atom after 'ilst', and possibly use it as padding - AtomList::ConstIterator nextIndex = index; - nextIndex++; - if(nextIndex != meta->children.end()) { - MP4::Atom *next = *nextIndex; - if(next->name == "free") { - length += next->length; - } - } - - long delta = data.size() - length; - if(delta > 0 || (delta < 0 && delta > -8)) { - data.append(padIlst(data)); - delta = data.size() - length; - } - else if(delta < 0) { - data.append(padIlst(data, -delta - 8)); - delta = 0; - } - - d->file->insert(data, offset, length); - - if(delta) { - updateParents(path, delta, 1); - updateOffsets(delta, offset); - } -} - -String -MP4::Tag::title() const -{ - if(d->items.contains("\251nam")) - return d->items["\251nam"].toStringList().toString(", "); - return String(); -} - -String -MP4::Tag::artist() const -{ - if(d->items.contains("\251ART")) - return d->items["\251ART"].toStringList().toString(", "); - return String(); -} - -String -MP4::Tag::albumartist() const -{ - if(d->items.contains("aART")) - return d->items["aART"].toStringList().toString(", "); - return String(); -} - -String -MP4::Tag::album() const -{ - if(d->items.contains("\251alb")) - return d->items["\251alb"].toStringList().toString(", "); - return String(); -} - -String -MP4::Tag::comment() const -{ - if(d->items.contains("\251cmt")) - return d->items["\251cmt"].toStringList().toString(", "); - return String(); -} - -String -MP4::Tag::genre() const -{ - if(d->items.contains("\251gen")) - return d->items["\251gen"].toStringList().toString(", "); - return String(); -} - -unsigned int -MP4::Tag::year() const -{ - if(d->items.contains("\251day")) - return d->items["\251day"].toStringList().toString().toInt(); - return 0; -} - -unsigned int -MP4::Tag::track() const -{ - if(d->items.contains("trkn")) - return d->items["trkn"].toIntPair().first; - return 0; -} - -unsigned int -MP4::Tag::disc() const -{ - if(d->items.contains("disk")) - return d->items["disk"].toIntPair().first; - return 0; -} - -String -MP4::Tag::cuesheet() const -{ - return String(); -} - -float -MP4::Tag::rgAlbumGain() const -{ - if(d->items.contains("----:com.apple.iTunes:replaygain_album_gain")) - return d->items["----:com.apple.iTunes:replaygain_album_gain"].toStringList()[0].toFloat(); - if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_album_gain")) - return d->items["----:org.hydrogenaudio.replaygain:replaygain_album_gain"].toStringList()[0].toFloat(); - return 0; -} - -float -MP4::Tag::rgAlbumPeak() const -{ - if(d->items.contains("----:com.apple.iTunes:replaygain_album_peak")) - return d->items["----:com.apple.iTunes:replaygain_album_peak"].toStringList()[0].toFloat(); - if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_album_peak")) - return d->items["----:org.hydrogenaudio.replaygain:replaygain_album_peak"].toStringList()[0].toFloat(); - return 0; -} - -float -MP4::Tag::rgTrackGain() const -{ - if(d->items.contains("----:com.apple.iTunes:replaygain_track_gain")) - return d->items["----:com.apple.iTunes:replaygain_track_gain"].toStringList()[0].toFloat(); - if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_track_gain")) - return d->items["----:org.hydrogenaudio.replaygain:replaygain_track_gain"].toStringList()[0].toFloat(); - return 0; -} - -float -MP4::Tag::rgTrackPeak() const -{ - if(d->items.contains("----:com.apple.iTunes:replaygain_track_peak")) - return d->items["----:com.apple.iTunes:replaygain_track_peak"].toStringList()[0].toFloat(); - if(d->items.contains("----:org.hydrogenaudio.replaygain:replaygain_track_peak")) - return d->items["----:org.hydrogenaudio.replaygain:replaygain_track_peak"].toStringList()[0].toFloat(); - return 0; -} - -String -MP4::Tag::soundcheck() const -{ - if (d->items.contains("----:com.apple.iTunes:iTunNORM")) - return d->items["----:com.apple.iTunes:iTunNORM"].toStringList()[0]; - return String(); -} - -void -MP4::Tag::setTitle(const String &value) -{ - setTextItem("\251nam", value); -} - -void -MP4::Tag::setAlbumArtist(const String &value) -{ - setTextItem("aART", value); -} - -void -MP4::Tag::setArtist(const String &value) -{ - setTextItem("\251ART", value); -} - -void -MP4::Tag::setAlbum(const String &value) -{ - setTextItem("\251alb", value); -} - -void -MP4::Tag::setComment(const String &value) -{ - setTextItem("\251cmt", value); -} - -void -MP4::Tag::setGenre(const String &value) -{ - setTextItem("\251gen", value); -} - -void -MP4::Tag::setTextItem(const String &key, const String &value) -{ - if (!value.isEmpty()) { - d->items[key] = StringList(value); - } else { - d->items.erase(key); - } -} - -void -MP4::Tag::setYear(unsigned int value) -{ - if (value == 0) { - d->items.erase("\251day"); - } - else { - d->items["\251day"] = StringList(String::number(value)); - } -} - -void -MP4::Tag::setTrack(unsigned int value) -{ - if (value == 0) { - d->items.erase("trkn"); - } - else { - d->items["trkn"] = MP4::Item(value, 0); - } -} - -void -MP4::Tag::setDisc(unsigned int value) -{ - if (value == 0) { - d->items.erase("disk"); - } - else { - d->items["disk"] = MP4::Item(value, 0); - } -} - -void -MP4::Tag::setCuesheet(const String &) -{ -} - -void -MP4::Tag::setRGAlbumGain(float f) -{ - setTextItem("----:com.apple.iTunes:replaygain_album_gain", String::number(f) + " dB"); -} - -void -MP4::Tag::setRGAlbumPeak(float f) -{ - setTextItem("----:com.apple.iTunes:replaygain_album_peak", String::number(f)); -} - -void -MP4::Tag::setRGTrackGain(float f) -{ - setTextItem("----:com.apple.iTunes:replaygain_track_gain", String() + ((f >= 0) ? "+" : "") + String::number(f) + " dB"); -} - -void -MP4::Tag::setRGTrackPeak(float f) -{ - setTextItem("----:com.apple.iTunes:replaygain_track_peak", String::number(f)); -} - -bool MP4::Tag::isEmpty() const -{ - return d->items.isEmpty(); -} - -MP4::ItemMap &MP4::Tag::itemListMap() -{ - return d->items; -} - -const MP4::ItemMap &MP4::Tag::itemMap() const -{ - return d->items; -} - -MP4::Item MP4::Tag::item(const String &key) const -{ - return d->items[key]; -} - -void MP4::Tag::setItem(const String &key, const Item &value) -{ - d->items[key] = value; -} - -void MP4::Tag::removeItem(const String &key) -{ - d->items.erase(key); -} - -bool MP4::Tag::contains(const String &key) const -{ - return d->items.contains(key); -} - -namespace -{ - const char *keyTranslation[][2] = { - { "\251nam", "TITLE" }, - { "\251ART", "ARTIST" }, - { "\251alb", "ALBUM" }, - { "\251cmt", "COMMENT" }, - { "\251gen", "GENRE" }, - { "\251day", "DATE" }, - { "\251wrt", "COMPOSER" }, - { "\251grp", "GROUPING" }, - { "aART", "ALBUMARTIST" }, - { "trkn", "TRACKNUMBER" }, - { "disk", "DISCNUMBER" }, - { "cpil", "COMPILATION" }, - { "tmpo", "BPM" }, - { "cprt", "COPYRIGHT" }, - { "\251lyr", "LYRICS" }, - { "\251too", "ENCODEDBY" }, - { "soal", "ALBUMSORT" }, - { "soaa", "ALBUMARTISTSORT" }, - { "soar", "ARTISTSORT" }, - { "sonm", "TITLESORT" }, - { "soco", "COMPOSERSORT" }, - { "sosn", "SHOWSORT" }, - { "shwm", "SHOWWORKMOVEMENT" }, - { "pgap", "GAPLESSPLAYBACK" }, - { "pcst", "PODCAST" }, - { "catg", "PODCASTCATEGORY" }, - { "desc", "PODCASTDESC" }, - { "egid", "PODCASTID" }, - { "purl", "PODCASTURL" }, - { "tves", "TVEPISODE" }, - { "tven", "TVEPISODEID" }, - { "tvnn", "TVNETWORK" }, - { "tvsn", "TVSEASON" }, - { "tvsh", "TVSHOW" }, - { "\251wrk", "WORK" }, - { "\251mvn", "MOVEMENTNAME" }, - { "\251mvi", "MOVEMENTNUMBER" }, - { "\251mvc", "MOVEMENTCOUNT" }, - { "----:org.hydrogenaudio.replaygain:replaygain_track_gain", "REPLAYGAIN_TRACK_GAIN" }, - { "----:org.hydrogenaudio.replaygain:replaygain_track_peak", "REPLAYGAIN_TRACK_PEAK" }, - { "----:org.hydrogenaudio.replaygain:replaygain_album_gain", "REPLAYGAIN_ALBUM_GAIN" }, - { "----:org.hydrogenaudio.replaygain:replaygain_album_peak", "REPLAYGAIN_ALBUM_PEAK" }, - { "----:com.apple.iTunes:replaygain_track_gain", "REPLAYGAIN_TRACK_GAIN" }, - { "----:com.apple.iTunes:replaygain_track_peak", "REPLAYGAIN_TRACK_PEAK" }, - { "----:com.apple.iTunes:replaygain_album_gain", "REPLAYGAIN_ALBUM_GAIN" }, - { "----:com.apple.iTunes:replaygain_album_peak", "REPLAYGAIN_ALBUM_PEAK" }, - { "----:com.apple.iTunes:MusicBrainz Track Id", "MUSICBRAINZ_TRACKID" }, - { "----:com.apple.iTunes:MusicBrainz Artist Id", "MUSICBRAINZ_ARTISTID" }, - { "----:com.apple.iTunes:MusicBrainz Album Id", "MUSICBRAINZ_ALBUMID" }, - { "----:com.apple.iTunes:MusicBrainz Album Artist Id", "MUSICBRAINZ_ALBUMARTISTID" }, - { "----:com.apple.iTunes:MusicBrainz Release Group Id", "MUSICBRAINZ_RELEASEGROUPID" }, - { "----:com.apple.iTunes:MusicBrainz Release Track Id", "MUSICBRAINZ_RELEASETRACKID" }, - { "----:com.apple.iTunes:MusicBrainz Work Id", "MUSICBRAINZ_WORKID" }, - { "----:com.apple.iTunes:MusicBrainz Album Release Country", "RELEASECOUNTRY" }, - { "----:com.apple.iTunes:MusicBrainz Album Status", "RELEASESTATUS" }, - { "----:com.apple.iTunes:MusicBrainz Album Type", "RELEASETYPE" }, - { "----:com.apple.iTunes:ARTISTS", "ARTISTS" }, - { "----:com.apple.iTunes:originaldate", "ORIGINALDATE" }, - { "----:com.apple.iTunes:ASIN", "ASIN" }, - { "----:com.apple.iTunes:LABEL", "LABEL" }, - { "----:com.apple.iTunes:LYRICIST", "LYRICIST" }, - { "----:com.apple.iTunes:CONDUCTOR", "CONDUCTOR" }, - { "----:com.apple.iTunes:REMIXER", "REMIXER" }, - { "----:com.apple.iTunes:ENGINEER", "ENGINEER" }, - { "----:com.apple.iTunes:PRODUCER", "PRODUCER" }, - { "----:com.apple.iTunes:DJMIXER", "DJMIXER" }, - { "----:com.apple.iTunes:MIXER", "MIXER" }, - { "----:com.apple.iTunes:SUBTITLE", "SUBTITLE" }, - { "----:com.apple.iTunes:DISCSUBTITLE", "DISCSUBTITLE" }, - { "----:com.apple.iTunes:MOOD", "MOOD" }, - { "----:com.apple.iTunes:ISRC", "ISRC" }, - { "----:com.apple.iTunes:CATALOGNUMBER", "CATALOGNUMBER" }, - { "----:com.apple.iTunes:BARCODE", "BARCODE" }, - { "----:com.apple.iTunes:SCRIPT", "SCRIPT" }, - { "----:com.apple.iTunes:LANGUAGE", "LANGUAGE" }, - { "----:com.apple.iTunes:LICENSE", "LICENSE" }, - { "----:com.apple.iTunes:MEDIA", "MEDIA" }, - { "----:com.apple.iTunes:iTunNORM", "SOUNDCHECK" }, - }; - const size_t keyTranslationSize = sizeof(keyTranslation) / sizeof(keyTranslation[0]); - - String translateKey(const String &key) - { - for(size_t i = 0; i < keyTranslationSize; ++i) { - if(key == keyTranslation[i][0]) - return keyTranslation[i][1]; - } - - return String(); - } -} - -PropertyMap MP4::Tag::properties() const -{ - PropertyMap props; - for(MP4::ItemMap::ConstIterator it = d->items.begin(); it != d->items.end(); ++it) { - const String key = translateKey(it->first); - if(!key.isEmpty()) { - if(key == "TRACKNUMBER" || key == "DISCNUMBER") { - MP4::Item::IntPair ip = it->second.toIntPair(); - String value = String::number(ip.first); - if(ip.second) { - value += "/" + String::number(ip.second); - } - props[key] = value; - } - else if(key == "BPM" || key == "MOVEMENTNUMBER" || key == "MOVEMENTCOUNT" || - key == "TVEPISODE" || key == "TVSEASON") { - props[key] = String::number(it->second.toInt()); - } - else if(key == "COMPILATION" || key == "SHOWWORKMOVEMENT" || - key == "GAPLESSPLAYBACK" || key == "PODCAST") { - props[key] = String::number(it->second.toBool()); - } - else { - props[key] = it->second.toStringList(); - } - } - else { - props.unsupportedData().append(it->first); - } - } - return props; -} - -void MP4::Tag::removeUnsupportedProperties(const StringList &props) -{ - for(StringList::ConstIterator it = props.begin(); it != props.end(); ++it) - d->items.erase(*it); -} - -PropertyMap MP4::Tag::setProperties(const PropertyMap &props) -{ - static Map<String, String> reverseKeyMap; - if(reverseKeyMap.isEmpty()) { - int numKeys = sizeof(keyTranslation) / sizeof(keyTranslation[0]); - for(int i = 0; i < numKeys; i++) { - reverseKeyMap[keyTranslation[i][1]] = keyTranslation[i][0]; - } - } - - PropertyMap origProps = properties(); - for(PropertyMap::ConstIterator it = origProps.begin(); it != origProps.end(); ++it) { - if(!props.contains(it->first) || props[it->first].isEmpty()) { - d->items.erase(reverseKeyMap[it->first]); - } - } - - PropertyMap ignoredProps; - for(PropertyMap::ConstIterator it = props.begin(); it != props.end(); ++it) { - if(reverseKeyMap.contains(it->first)) { - String name = reverseKeyMap[it->first]; - if((it->first == "TRACKNUMBER" || it->first == "DISCNUMBER") && !it->second.isEmpty()) { - StringList parts = StringList::split(it->second.front(), "/"); - if(!parts.isEmpty()) { - int first = parts[0].toInt(); - int second = 0; - if(parts.size() > 1) { - second = parts[1].toInt(); - } - d->items[name] = MP4::Item(first, second); - } - } - else if((it->first == "BPM" || it->first == "MOVEMENTNUMBER" || - it->first == "MOVEMENTCOUNT" || it->first == "TVEPISODE" || - it->first == "TVSEASON") && !it->second.isEmpty()) { - int value = it->second.front().toInt(); - d->items[name] = MP4::Item(value); - } - else if((it->first == "COMPILATION" || it->first == "SHOWWORKMOVEMENT" || - it->first == "GAPLESSPLAYBACK" || it->first == "PODCAST") && - !it->second.isEmpty()) { - bool value = (it->second.front().toInt() != 0); - d->items[name] = MP4::Item(value); - } - else { - d->items[name] = it->second; - } - } - else { - ignoredProps.insert(it->first, it->second); - } - } - - return ignoredProps; -} - -void MP4::Tag::addItem(const String &name, const Item &value) -{ - if(!d->items.contains(name)) { - d->items.insert(name, value); - } - else { - debug("MP4: Ignoring duplicate atom \"" + name + "\""); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.h b/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.h deleted file mode 100644 index 71423ff36..000000000 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4tag.h +++ /dev/null @@ -1,179 +0,0 @@ -/************************************************************************** - copyright : (C) 2007,2011 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MP4TAG_H -#define TAGLIB_MP4TAG_H - -#include <taglib/tag.h> -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/taglib_export.h> -#include <taglib/mp4/mp4atom.h> -#include <taglib/mp4/mp4item.h> - -namespace TagLib { - - namespace MP4 { - - /*! - * \deprecated - */ - TAGLIB_DEPRECATED typedef TagLib::Map<String, Item> ItemListMap; - typedef TagLib::Map<String, Item> ItemMap; - - class TAGLIB_EXPORT Tag: public TagLib::Tag - { - public: - Tag(); - Tag(TagLib::File *file, Atoms *atoms); - virtual ~Tag(); - bool save(); - - virtual String title() const; - virtual String albumartist() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual unsigned int year() const; - virtual unsigned int track() const; - virtual unsigned int disc() const; - virtual String cuesheet() const; - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; - - virtual void setTitle(const String &value); - virtual void setAlbumArtist(const String &value); - virtual void setArtist(const String &value); - virtual void setAlbum(const String &value); - virtual void setComment(const String &value); - virtual void setGenre(const String &value); - virtual void setYear(unsigned int value); - virtual void setTrack(unsigned int value); - virtual void setDisc(unsigned int value); - virtual void setCuesheet(const String &value); - virtual void setRGAlbumGain(float); - virtual void setRGAlbumPeak(float); - virtual void setRGTrackGain(float); - virtual void setRGTrackPeak(float); - - virtual bool isEmpty() const; - - /*! - * \deprecated Use the item() and setItem() API instead - */ - TAGLIB_DEPRECATED ItemMap &itemListMap(); - - /*! - * Returns a string-keyed map of the MP4::Items for this tag. - */ - const ItemMap &itemMap() const; - - /*! - * \return The item, if any, corresponding to \a key. - */ - Item item(const String &key) const; - - /*! - * Sets the value of \a key to \a value, overwriting any previous value. - */ - void setItem(const String &key, const Item &value); - - /*! - * Removes the entry with \a key from the tag, or does nothing if it does - * not exist. - */ - void removeItem(const String &key); - - /*! - * \return True if the tag contains an entry for \a key. - */ - bool contains(const String &key) const; - - PropertyMap properties() const; - void removeUnsupportedProperties(const StringList& properties); - PropertyMap setProperties(const PropertyMap &properties); - - protected: - /*! - * Sets the value of \a key to \a value, overwriting any previous value. - * If \a value is empty, the item is removed. - */ - void setTextItem(const String &key, const String &value); - - private: - AtomDataList parseData2(const Atom *atom, int expectedFlags = -1, - bool freeForm = false); - ByteVectorList parseData(const Atom *atom, int expectedFlags = -1, - bool freeForm = false); - void parseText(const Atom *atom, int expectedFlags = 1); - void parseFreeForm(const Atom *atom); - void parseInt(const Atom *atom); - void parseByte(const Atom *atom); - void parseUInt(const Atom *atom); - void parseLongLong(const Atom *atom); - void parseGnre(const Atom *atom); - void parseIntPair(const Atom *atom); - void parseBool(const Atom *atom); - void parseCovr(const Atom *atom); - - ByteVector padIlst(const ByteVector &data, int length = -1) const; - ByteVector renderAtom(const ByteVector &name, const ByteVector &data) const; - ByteVector renderData(const ByteVector &name, int flags, - const ByteVectorList &data) const; - ByteVector renderText(const ByteVector &name, const Item &item, - int flags = TypeUTF8) const; - ByteVector renderFreeForm(const String &name, const Item &item) const; - ByteVector renderBool(const ByteVector &name, const Item &item) const; - ByteVector renderInt(const ByteVector &name, const Item &item) const; - ByteVector renderByte(const ByteVector &name, const Item &item) const; - ByteVector renderUInt(const ByteVector &name, const Item &item) const; - ByteVector renderLongLong(const ByteVector &name, const Item &item) const; - ByteVector renderIntPair(const ByteVector &name, const Item &item) const; - ByteVector renderIntPairNoTrailing(const ByteVector &name, const Item &item) const; - ByteVector renderCovr(const ByteVector &name, const Item &item) const; - - void updateParents(const AtomList &path, long delta, int ignore = 0); - void updateOffsets(long delta, long offset); - - void saveNew(ByteVector data); - void saveExisting(ByteVector data, const AtomList &path); - - void addItem(const String &name, const Item &value); - - class TagPrivate; - TagPrivate *d; - }; - - } - -} - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/mpc/mpcfile.cpp b/Frameworks/TagLib/taglib/taglib/mpc/mpcfile.cpp deleted file mode 100644 index 279fc3ac3..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpc/mpcfile.cpp +++ /dev/null @@ -1,332 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/tagunion.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/mpc/mpcfile.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/ape/apetag.h> -#include <taglib/ape/apefooter.h> - -using namespace TagLib; - -namespace -{ - enum { MPCAPEIndex = 0, MPCID3v1Index = 1 }; -} - -class MPC::File::FilePrivate -{ -public: - FilePrivate() : - APELocation(-1), - APESize(0), - ID3v1Location(-1), - ID3v2Header(0), - ID3v2Location(-1), - ID3v2Size(0), - properties(0) {} - - ~FilePrivate() - { - delete ID3v2Header; - delete properties; - } - - long APELocation; - long APESize; - - long ID3v1Location; - - ID3v2::Header *ID3v2Header; - long ID3v2Location; - long ID3v2Size; - - TagUnion tag; - - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool MPC::File::isSupported(IOStream *stream) -{ - // A newer MPC file has to start with "MPCK" or "MP+", but older files don't - // have keys to do a quick check. - - const ByteVector id = Utils::readHeader(stream, 4, false); - return (id == "MPCK" || id.startsWith("MP+")); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPC::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -MPC::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -MPC::File::~File() -{ - delete d; -} - -TagLib::Tag *MPC::File::tag() const -{ - return &d->tag; -} - -PropertyMap MPC::File::properties() const -{ - return d->tag.properties(); -} - -void MPC::File::removeUnsupportedProperties(const StringList &properties) -{ - d->tag.removeUnsupportedProperties(properties); -} - -PropertyMap MPC::File::setProperties(const PropertyMap &properties) -{ - if(ID3v1Tag()) - ID3v1Tag()->setProperties(properties); - - return APETag(true)->setProperties(properties); -} - -MPC::Properties *MPC::File::audioProperties() const -{ - return d->properties; -} - -bool MPC::File::save() -{ - if(readOnly()) { - debug("MPC::File::save() -- File is read only."); - return false; - } - - // Possibly strip ID3v2 tag - - if(!d->ID3v2Header && d->ID3v2Location >= 0) { - removeBlock(d->ID3v2Location, d->ID3v2Size); - - if(d->APELocation >= 0) - d->APELocation -= d->ID3v2Size; - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->ID3v2Size; - - d->ID3v2Location = -1; - d->ID3v2Size = 0; - } - - // Update ID3v1 tag - - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - - // ID3v1 tag is not empty. Update the old one or create a new one. - - if(d->ID3v1Location >= 0) { - seek(d->ID3v1Location); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - } - - writeBlock(ID3v1Tag()->render()); - } - else { - - // ID3v1 tag is empty. Remove the old one. - - if(d->ID3v1Location >= 0) { - truncate(d->ID3v1Location); - d->ID3v1Location = -1; - } - } - - // Update APE tag - - if(APETag() && !APETag()->isEmpty()) { - - // APE tag is not empty. Update the old one or create a new one. - - if(d->APELocation < 0) { - if(d->ID3v1Location >= 0) - d->APELocation = d->ID3v1Location; - else - d->APELocation = length(); - } - - const ByteVector data = APETag()->render(); - insert(data, d->APELocation, d->APESize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->APESize); - - d->APESize = data.size(); - } - else { - - // APE tag is empty. Remove the old one. - - if(d->APELocation >= 0) { - removeBlock(d->APELocation, d->APESize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->APESize; - - d->APELocation = -1; - d->APESize = 0; - } - } - - return true; -} - -ID3v1::Tag *MPC::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(MPCID3v1Index, create); -} - -APE::Tag *MPC::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(MPCAPEIndex, create); -} - -void MPC::File::strip(int tags) -{ - if(tags & ID3v1) - d->tag.set(MPCID3v1Index, 0); - - if(tags & APE) - d->tag.set(MPCAPEIndex, 0); - - if(!ID3v1Tag()) - APETag(true); - - if(tags & ID3v2) { - delete d->ID3v2Header; - d->ID3v2Header = 0; - } -} - -void MPC::File::remove(int tags) -{ - strip(tags); -} - -bool MPC::File::hasID3v1Tag() const -{ - return (d->ID3v1Location >= 0); -} - -bool MPC::File::hasAPETag() const -{ - return (d->APELocation >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPC::File::read(bool readProperties) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = Utils::findID3v2(this); - - if(d->ID3v2Location >= 0) { - seek(d->ID3v2Location); - d->ID3v2Header = new ID3v2::Header(readBlock(ID3v2::Header::size())); - d->ID3v2Size = d->ID3v2Header->completeTagSize(); - } - - // Look for an ID3v1 tag - - d->ID3v1Location = Utils::findID3v1(this); - - if(d->ID3v1Location >= 0) - d->tag.set(MPCID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - - // Look for an APE tag - - d->APELocation = Utils::findAPE(this, d->ID3v1Location); - - if(d->APELocation >= 0) { - d->tag.set(MPCAPEIndex, new APE::Tag(this, d->APELocation)); - d->APESize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APE::Footer::size() - d->APESize; - } - - if(d->ID3v1Location < 0) - APETag(true); - - // Look for MPC metadata - - if(readProperties) { - - long streamLength; - - if(d->APELocation >= 0) - streamLength = d->APELocation; - else if(d->ID3v1Location >= 0) - streamLength = d->ID3v1Location; - else - streamLength = length(); - - if(d->ID3v2Location >= 0) { - seek(d->ID3v2Location + d->ID3v2Size); - streamLength -= (d->ID3v2Location + d->ID3v2Size); - } - else { - seek(0); - } - - d->properties = new Properties(this, streamLength); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/mpc/mpcproperties.cpp b/Frameworks/TagLib/taglib/taglib/mpc/mpcproperties.cpp deleted file mode 100644 index 2bee5e812..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpc/mpcproperties.cpp +++ /dev/null @@ -1,368 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <bitset> -#include <math.h> - -#include <taglib/mpc/mpcproperties.h> -#include <taglib/mpc/mpcfile.h> - -using namespace TagLib; - -class MPC::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - version(0), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - totalFrames(0), - sampleFrames(0), - trackGain(0), - trackPeak(0), - albumGain(0), - albumPeak(0) {} - - int version; - int length; - int bitrate; - int sampleRate; - int channels; - unsigned int totalFrames; - unsigned int sampleFrames; - int trackGain; - int trackPeak; - int albumGain; - int albumPeak; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPC::Properties::Properties(const ByteVector &data, long streamLength, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - readSV7(data, streamLength); -} - -MPC::Properties::Properties(File *file, long streamLength, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - ByteVector magic = file->readBlock(4); - if(magic == "MPCK") { - // Musepack version 8 - readSV8(file, streamLength); - } - else { - // Musepack version 7 or older, fixed size header - readSV7(magic + file->readBlock(MPC::HeaderSize - 4), streamLength); - } -} - -MPC::Properties::~Properties() -{ - delete d; -} - -int MPC::Properties::length() const -{ - return lengthInSeconds(); -} - -int MPC::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int MPC::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int MPC::Properties::bitrate() const -{ - return d->bitrate; -} - -int MPC::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int MPC::Properties::channels() const -{ - return d->channels; -} - -int MPC::Properties::mpcVersion() const -{ - return d->version; -} - -unsigned int MPC::Properties::totalFrames() const -{ - return d->totalFrames; -} - -unsigned int MPC::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -int MPC::Properties::trackGain() const -{ - return d->trackGain; -} - -int MPC::Properties::trackPeak() const -{ - return d->trackPeak; -} - -int MPC::Properties::albumGain() const -{ - return d->albumGain; -} - -int MPC::Properties::albumPeak() const -{ - return d->albumPeak; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -namespace -{ - unsigned long readSize(File *file, unsigned int &sizeLength, bool &eof) - { - sizeLength = 0; - eof = false; - - unsigned char tmp; - unsigned long size = 0; - - do { - const ByteVector b = file->readBlock(1); - if(b.isEmpty()) { - eof = true; - break; - } - - tmp = b[0]; - size = (size << 7) | (tmp & 0x7F); - sizeLength++; - } while((tmp & 0x80)); - return size; - } - - unsigned long readSize(const ByteVector &data, unsigned int &pos) - { - unsigned char tmp; - unsigned long size = 0; - - do { - tmp = data[pos++]; - size = (size << 7) | (tmp & 0x7F); - } while((tmp & 0x80) && (pos < data.size())); - return size; - } - - // This array looks weird, but the same as original MusePack code found at: - // https://www.musepack.net/index.php?pg=src - const unsigned short sftable [8] = { 44100, 48000, 37800, 32000, 0, 0, 0, 0 }; -} - -void MPC::Properties::readSV8(File *file, long streamLength) -{ - bool readSH = false, readRG = false; - - while(!readSH && !readRG) { - const ByteVector packetType = file->readBlock(2); - - unsigned int packetSizeLength; - bool eof; - const unsigned long packetSize = readSize(file, packetSizeLength, eof); - if(eof) { - debug("MPC::Properties::readSV8() - Reached to EOF."); - break; - } - - const unsigned long dataSize = packetSize - 2 - packetSizeLength; - - const ByteVector data = file->readBlock(dataSize); - if(data.size() != dataSize) { - debug("MPC::Properties::readSV8() - dataSize doesn't match the actual data size."); - break; - } - - if(packetType == "SH") { - // Stream Header - // http://trac.musepack.net/wiki/SV8Specification#StreamHeaderPacket - - if(dataSize <= 5) { - debug("MPC::Properties::readSV8() - \"SH\" packet is too short to parse."); - break; - } - - readSH = true; - - unsigned int pos = 4; - d->version = data[pos]; - pos += 1; - d->sampleFrames = readSize(data, pos); - if(pos > dataSize - 3) { - debug("MPC::Properties::readSV8() - \"SH\" packet is corrupt."); - break; - } - - const unsigned long begSilence = readSize(data, pos); - if(pos > dataSize - 2) { - debug("MPC::Properties::readSV8() - \"SH\" packet is corrupt."); - break; - } - - const unsigned short flags = data.toUShort(pos, true); - pos += 2; - - d->sampleRate = sftable[(flags >> 13) & 0x07]; - d->channels = ((flags >> 4) & 0x0F) + 1; - - const unsigned int frameCount = d->sampleFrames - begSilence; - if(frameCount > 0 && d->sampleRate > 0) { - const double length = frameCount * 1000.0 / d->sampleRate; - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } - } - else if (packetType == "RG") { - // Replay Gain - // http://trac.musepack.net/wiki/SV8Specification#ReplaygainPacket - - if(dataSize <= 9) { - debug("MPC::Properties::readSV8() - \"RG\" packet is too short to parse."); - break; - } - - readRG = true; - - const int replayGainVersion = data[0]; - if(replayGainVersion == 1) { - d->trackGain = data.toShort(1, true); - d->trackPeak = data.toShort(3, true); - d->albumGain = data.toShort(5, true); - d->albumPeak = data.toShort(7, true); - } - } - - else if(packetType == "SE") { - break; - } - - else { - file->seek(dataSize, File::Current); - } - } -} - -void MPC::Properties::readSV7(const ByteVector &data, long streamLength) -{ - if(data.startsWith("MP+")) { - d->version = data[3] & 15; - if(d->version < 7) - return; - - d->totalFrames = data.toUInt(4, false); - - const unsigned int flags = data.toUInt(8, false); - d->sampleRate = sftable[(flags >> 16) & 0x03]; - d->channels = 2; - - const unsigned int gapless = data.toUInt(5, false); - - d->trackGain = data.toShort(14, false); - d->trackPeak = data.toUShort(12, false); - d->albumGain = data.toShort(18, false); - d->albumPeak = data.toUShort(16, false); - - // convert gain info - if(d->trackGain != 0) { - int tmp = (int)((64.82 - (short)d->trackGain / 100.) * 256. + .5); - if(tmp >= (1 << 16) || tmp < 0) tmp = 0; - d->trackGain = tmp; - } - - if(d->albumGain != 0) { - int tmp = (int)((64.82 - d->albumGain / 100.) * 256. + .5); - if(tmp >= (1 << 16) || tmp < 0) tmp = 0; - d->albumGain = tmp; - } - - if (d->trackPeak != 0) - d->trackPeak = (int)(log10((double)d->trackPeak) * 20 * 256 + .5); - - if (d->albumPeak != 0) - d->albumPeak = (int)(log10((double)d->albumPeak) * 20 * 256 + .5); - - bool trueGapless = (gapless >> 31) & 0x0001; - if(trueGapless) { - unsigned int lastFrameSamples = (gapless >> 20) & 0x07FF; - d->sampleFrames = d->totalFrames * 1152 - lastFrameSamples; - } - else - d->sampleFrames = d->totalFrames * 1152 - 576; - } - else { - const unsigned int headerData = data.toUInt(0, false); - - d->bitrate = (headerData >> 23) & 0x01ff; - d->version = (headerData >> 11) & 0x03ff; - d->sampleRate = 44100; - d->channels = 2; - - if(d->version >= 5) - d->totalFrames = data.toUInt(4, false); - else - d->totalFrames = data.toUShort(6, false); - - d->sampleFrames = d->totalFrames * 1152 - 576; - } - - if(d->sampleFrames > 0 && d->sampleRate > 0) { - const double length = d->sampleFrames * 1000.0 / d->sampleRate; - d->length = static_cast<int>(length + 0.5); - - if(d->bitrate == 0) - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1genres.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1genres.cpp deleted file mode 100644 index 7463100e7..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1genres.cpp +++ /dev/null @@ -1,286 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v1/id3v1genres.h> - -using namespace TagLib; - -namespace -{ - const wchar_t *genres[] = { - L"Blues", - L"Classic Rock", - L"Country", - L"Dance", - L"Disco", - L"Funk", - L"Grunge", - L"Hip-Hop", - L"Jazz", - L"Metal", - L"New Age", - L"Oldies", - L"Other", - L"Pop", - L"R&B", - L"Rap", - L"Reggae", - L"Rock", - L"Techno", - L"Industrial", - L"Alternative", - L"Ska", - L"Death Metal", - L"Pranks", - L"Soundtrack", - L"Euro-Techno", - L"Ambient", - L"Trip-Hop", - L"Vocal", - L"Jazz-Funk", - L"Fusion", - L"Trance", - L"Classical", - L"Instrumental", - L"Acid", - L"House", - L"Game", - L"Sound Clip", - L"Gospel", - L"Noise", - L"Alternative Rock", - L"Bass", - L"Soul", - L"Punk", - L"Space", - L"Meditative", - L"Instrumental Pop", - L"Instrumental Rock", - L"Ethnic", - L"Gothic", - L"Darkwave", - L"Techno-Industrial", - L"Electronic", - L"Pop-Folk", - L"Eurodance", - L"Dream", - L"Southern Rock", - L"Comedy", - L"Cult", - L"Gangsta", - L"Top 40", - L"Christian Rap", - L"Pop/Funk", - L"Jungle", - L"Native American", - L"Cabaret", - L"New Wave", - L"Psychedelic", - L"Rave", - L"Showtunes", - L"Trailer", - L"Lo-Fi", - L"Tribal", - L"Acid Punk", - L"Acid Jazz", - L"Polka", - L"Retro", - L"Musical", - L"Rock & Roll", - L"Hard Rock", - L"Folk", - L"Folk Rock", - L"National Folk", - L"Swing", - L"Fast Fusion", - L"Bebop", - L"Latin", - L"Revival", - L"Celtic", - L"Bluegrass", - L"Avant-garde", - L"Gothic Rock", - L"Progressive Rock", - L"Psychedelic Rock", - L"Symphonic Rock", - L"Slow Rock", - L"Big Band", - L"Chorus", - L"Easy Listening", - L"Acoustic", - L"Humour", - L"Speech", - L"Chanson", - L"Opera", - L"Chamber Music", - L"Sonata", - L"Symphony", - L"Booty Bass", - L"Primus", - L"Porn Groove", - L"Satire", - L"Slow Jam", - L"Club", - L"Tango", - L"Samba", - L"Folklore", - L"Ballad", - L"Power Ballad", - L"Rhythmic Soul", - L"Freestyle", - L"Duet", - L"Punk Rock", - L"Drum Solo", - L"A Cappella", - L"Euro-House", - L"Dancehall", - L"Goa", - L"Drum & Bass", - L"Club-House", - L"Hardcore Techno", - L"Terror", - L"Indie", - L"Britpop", - L"Worldbeat", - L"Polsk Punk", - L"Beat", - L"Christian Gangsta Rap", - L"Heavy Metal", - L"Black Metal", - L"Crossover", - L"Contemporary Christian", - L"Christian Rock", - L"Merengue", - L"Salsa", - L"Thrash Metal", - L"Anime", - L"Jpop", - L"Synthpop", - L"Abstract", - L"Art Rock", - L"Baroque", - L"Bhangra", - L"Big Beat", - L"Breakbeat", - L"Chillout", - L"Downtempo", - L"Dub", - L"EBM", - L"Eclectic", - L"Electro", - L"Electroclash", - L"Emo", - L"Experimental", - L"Garage", - L"Global", - L"IDM", - L"Illbient", - L"Industro-Goth", - L"Jam Band", - L"Krautrock", - L"Leftfield", - L"Lounge", - L"Math Rock", - L"New Romantic", - L"Nu-Breakz", - L"Post-Punk", - L"Post-Rock", - L"Psytrance", - L"Shoegaze", - L"Space Rock", - L"Trop Rock", - L"World Music", - L"Neoclassical", - L"Audiobook", - L"Audio Theatre", - L"Neue Deutsche Welle", - L"Podcast", - L"Indie Rock", - L"G-Funk", - L"Dubstep", - L"Garage Rock", - L"Psybient" - }; - const int genresSize = sizeof(genres) / sizeof(genres[0]); -} - -StringList ID3v1::genreList() -{ - StringList l; - for(int i = 0; i < genresSize; i++) { - l.append(genres[i]); - } - - return l; -} - -ID3v1::GenreMap ID3v1::genreMap() -{ - GenreMap m; - for(int i = 0; i < genresSize; i++) { - m.insert(genres[i], i); - } - - return m; -} - -String ID3v1::genre(int i) -{ - if(i >= 0 && i < genresSize) - return String(genres[i]); // always make a copy - else - return String(); -} - -int ID3v1::genreIndex(const String &name) -{ - for(int i = 0; i < genresSize; ++i) { - if(name == genres[i]) - return i; - } - - // If the name was not found, try the names which have been changed - static const struct { - const wchar_t *genre; - int code; - } fixUpGenres[] = { - { L"Jazz+Funk", 29 }, - { L"Folk/Rock", 81 }, - { L"Bebob", 85 }, - { L"Avantgarde", 90 }, - { L"Dance Hall", 125 }, - { L"Hardcore", 129 }, - { L"BritPop", 132 }, - { L"Negerpunk", 133 } - }; - static const int fixUpGenresSize = - sizeof(fixUpGenres) / sizeof(fixUpGenres[0]); - for(int i = 0; i < fixUpGenresSize; ++i) { - if(name == fixUpGenres[i].genre) - return fixUpGenres[i].code; - } - - return 255; -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1tag.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1tag.cpp deleted file mode 100644 index 03d9536aa..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1tag.cpp +++ /dev/null @@ -1,356 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tfile.h> - -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v1/id3v1genres.h> - -using namespace TagLib; -using namespace ID3v1; - -namespace -{ - const ID3v1::StringHandler defaultStringHandler; - const ID3v1::StringHandler *stringHandler = &defaultStringHandler; -} - -class ID3v1::Tag::TagPrivate -{ -public: - TagPrivate() : - file(0), - tagOffset(0), - track(0), - genre(255) {} - - File *file; - long tagOffset; - - String title; - String artist; - String album; - String year; - String comment; - unsigned char track; - unsigned char genre; -}; - -//////////////////////////////////////////////////////////////////////////////// -// StringHandler implementation -//////////////////////////////////////////////////////////////////////////////// - -StringHandler::StringHandler() -{ -} - -String ID3v1::StringHandler::parse(const ByteVector &data) const -{ - return String(data, String::Latin1).stripWhiteSpace(); -} - -ByteVector ID3v1::StringHandler::render(const String &s) const -{ - if(s.isLatin1()) - return s.data(String::Latin1); - else - return ByteVector(); -} - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -ID3v1::Tag::Tag() : - TagLib::Tag(), - d(new TagPrivate()) -{ -} - -ID3v1::Tag::Tag(File *file, long tagOffset) : - TagLib::Tag(), - d(new TagPrivate()) -{ - d->file = file; - d->tagOffset = tagOffset; - - read(); -} - -ID3v1::Tag::~Tag() -{ - delete d; -} - -ByteVector ID3v1::Tag::render() const -{ - ByteVector data; - - data.append(fileIdentifier()); - data.append(stringHandler->render(d->title).resize(30)); - data.append(stringHandler->render(d->artist).resize(30)); - data.append(stringHandler->render(d->album).resize(30)); - data.append(stringHandler->render(d->year).resize(4)); - data.append(stringHandler->render(d->comment).resize(28)); - data.append(char(0)); - data.append(char(d->track)); - data.append(char(d->genre)); - - return data; -} - -ByteVector ID3v1::Tag::fileIdentifier() -{ - return ByteVector::fromCString("TAG"); -} - -String ID3v1::Tag::title() const -{ - return d->title; -} - -String ID3v1::Tag::albumartist() const -{ - return String(); -} - -String ID3v1::Tag::artist() const -{ - return d->artist; -} - -String ID3v1::Tag::composer() const -{ - return String(); -} - -String ID3v1::Tag::album() const -{ - return d->album; -} - -String ID3v1::Tag::unsyncedlyrics() const -{ - return String(); -} - -String ID3v1::Tag::comment() const -{ - return d->comment; -} - -String ID3v1::Tag::genre() const -{ - return ID3v1::genre(d->genre); -} - -unsigned int ID3v1::Tag::year() const -{ - return d->year.toInt(); -} - -unsigned int ID3v1::Tag::track() const -{ - return d->track; -} - -unsigned int ID3v1::Tag::disc() const -{ - return 0; -} - -String ID3v1::Tag::cuesheet() const -{ - return String(); -} - -float ID3v1::Tag::rgAlbumGain() const -{ - return 0; -} - -float ID3v1::Tag::rgAlbumPeak() const -{ - return 0; -} - -float ID3v1::Tag::rgTrackGain() const -{ - return 0; -} - -float ID3v1::Tag::rgTrackPeak() const -{ - return 0; -} - -String ID3v1::Tag::soundcheck() const -{ - return String(); -} - -void ID3v1::Tag::setTitle(const String &s) -{ - d->title = s; -} - -void ID3v1::Tag::setAlbumArtist(const String &) -{ -} - -void ID3v1::Tag::setArtist(const String &s) -{ - d->artist = s; -} - -void ID3v1::Tag::setComposer(const String &s) -{ -} - -void ID3v1::Tag::setAlbum(const String &s) -{ - d->album = s; -} - -void ID3v1::Tag::setUnsyncedlyrics(const String &s) -{ -} - -void ID3v1::Tag::setComment(const String &s) -{ - d->comment = s; -} - -void ID3v1::Tag::setGenre(const String &s) -{ - d->genre = ID3v1::genreIndex(s); -} - -void ID3v1::Tag::setYear(unsigned int i) -{ - d->year = i > 0 ? String::number(i) : String(); -} - -void ID3v1::Tag::setTrack(unsigned int i) -{ - d->track = i < 256 ? i : 0; -} - -void ID3v1::Tag::setDisc(unsigned int i) -{ -} - -void ID3v1::Tag::setCuesheet(const String &) -{ -} - -void ID3v1::Tag::setRGAlbumGain(float) -{ -} - -void ID3v1::Tag::setRGAlbumPeak(float) -{ -} - -void ID3v1::Tag::setRGTrackGain(float) -{ -} - -void ID3v1::Tag::setRGTrackPeak(float) -{ -} - -unsigned int ID3v1::Tag::genreNumber() const -{ - return d->genre; -} - -void ID3v1::Tag::setGenreNumber(unsigned int i) -{ - d->genre = i < 256 ? i : 255; -} - -void ID3v1::Tag::setStringHandler(const StringHandler *handler) -{ - if(handler) - stringHandler = handler; - else - stringHandler = &defaultStringHandler; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected methods -//////////////////////////////////////////////////////////////////////////////// - -void ID3v1::Tag::read() -{ - if(d->file && d->file->isValid()) { - d->file->seek(d->tagOffset); - // read the tag -- always 128 bytes - const ByteVector data = d->file->readBlock(128); - - // some initial sanity checking - if(data.size() == 128 && data.startsWith("TAG")) - parse(data); - else - debug("ID3v1 tag is not valid or could not be read at the specified offset."); - } -} - -void ID3v1::Tag::parse(const ByteVector &data) -{ - int offset = 3; - - d->title = stringHandler->parse(data.mid(offset, 30)); - offset += 30; - - d->artist = stringHandler->parse(data.mid(offset, 30)); - offset += 30; - - d->album = stringHandler->parse(data.mid(offset, 30)); - offset += 30; - - d->year = stringHandler->parse(data.mid(offset, 4)); - offset += 4; - - // Check for ID3v1.1 -- Note that ID3v1 *does not* support "track zero" -- this - // is not a bug in TagLib. Since a zeroed byte is what we would expect to - // indicate the end of a C-String, specifically the comment string, a value of - // zero must be assumed to be just that. - - if(data[offset + 28] == 0 && data[offset + 29] != 0) { - // ID3v1.1 detected - - d->comment = stringHandler->parse(data.mid(offset, 28)); - d->track = static_cast<unsigned char>(data[offset + 29]); - } - else - d->comment = data.mid(offset, 30); - - offset += 30; - - d->genre = static_cast<unsigned char>(data[offset]); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp deleted file mode 100644 index e1ad21b29..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/frames/attachedpictureframe.h> - -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tdebug.h> - -using namespace TagLib; -using namespace ID3v2; - -class AttachedPictureFrame::AttachedPictureFramePrivate -{ -public: - AttachedPictureFramePrivate() : textEncoding(String::Latin1), - type(AttachedPictureFrame::Other) {} - - String::Type textEncoding; - String mimeType; - AttachedPictureFrame::Type type; - String description; - ByteVector data; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -AttachedPictureFrame::AttachedPictureFrame() : - Frame("APIC"), - d(new AttachedPictureFramePrivate()) -{ -} - -AttachedPictureFrame::AttachedPictureFrame(const ByteVector &data) : - Frame(data), - d(new AttachedPictureFramePrivate()) -{ - setData(data); -} - -AttachedPictureFrame::~AttachedPictureFrame() -{ - delete d; -} - -String AttachedPictureFrame::toString() const -{ - String s = "[" + d->mimeType + "]"; - return d->description.isEmpty() ? s : d->description + " " + s; -} - -String::Type AttachedPictureFrame::textEncoding() const -{ - return d->textEncoding; -} - -void AttachedPictureFrame::setTextEncoding(String::Type t) -{ - d->textEncoding = t; -} - -String AttachedPictureFrame::mimeType() const -{ - return d->mimeType; -} - -void AttachedPictureFrame::setMimeType(const String &m) -{ - d->mimeType = m; -} - -AttachedPictureFrame::Type AttachedPictureFrame::type() const -{ - return d->type; -} - -void AttachedPictureFrame::setType(Type t) -{ - d->type = t; -} - -String AttachedPictureFrame::description() const -{ - return d->description; -} - -void AttachedPictureFrame::setDescription(const String &desc) -{ - d->description = desc; -} - -ByteVector AttachedPictureFrame::picture() const -{ - return d->data; -} - -void AttachedPictureFrame::setPicture(const ByteVector &p) -{ - d->data = p; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void AttachedPictureFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("A picture frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - - int pos = 1; - - d->mimeType = readStringField(data, String::Latin1, &pos); - /* Now we need at least two more bytes available */ - if(static_cast<unsigned int>(pos) + 1 >= data.size()) { - debug("Truncated picture frame."); - return; - } - - d->type = (TagLib::ID3v2::AttachedPictureFrame::Type)data[pos++]; - d->description = readStringField(data, d->textEncoding, &pos); - - d->data = data.mid(pos); -} - -ByteVector AttachedPictureFrame::renderFields() const -{ - ByteVector data; - - String::Type encoding = checkTextEncoding(d->description, d->textEncoding); - - data.append(char(encoding)); - data.append(d->mimeType.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - data.append(char(d->type)); - data.append(d->description.data(encoding)); - data.append(textDelimiter(encoding)); - data.append(d->data); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -AttachedPictureFrame::AttachedPictureFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new AttachedPictureFramePrivate()) -{ - parseFields(fieldData(data)); -} - -//////////////////////////////////////////////////////////////////////////////// -// support for ID3v2.2 PIC frames -//////////////////////////////////////////////////////////////////////////////// - -void AttachedPictureFrameV22::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("A picture frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - - int pos = 1; - - String fixedString = String(data.mid(pos, 3), String::Latin1); - pos += 3; - // convert fixed string image type to mime string - if (fixedString.upper() == "JPG") { - d->mimeType = "image/jpeg"; - } else if (fixedString.upper() == "PNG") { - d->mimeType = "image/png"; - } else { - debug("probably unsupported image type"); - d->mimeType = "image/" + fixedString; - } - - d->type = (TagLib::ID3v2::AttachedPictureFrame::Type)data[pos++]; - d->description = readStringField(data, d->textEncoding, &pos); - - d->data = data.mid(pos); -} - -AttachedPictureFrameV22::AttachedPictureFrameV22(const ByteVector &data, Header *h) -{ - // set v2.2 header to make fieldData work correctly - setHeader(h, true); - - parseFields(fieldData(data)); - - // now set the v2.4 header - Frame::Header *newHeader = new Frame::Header("APIC"); - newHeader->setFrameSize(h->frameSize()); - setHeader(newHeader, true); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/chapterframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/chapterframe.cpp deleted file mode 100644 index e3fdfa8ea..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/chapterframe.cpp +++ /dev/null @@ -1,309 +0,0 @@ -/*************************************************************************** - copyright : (C) 2013 by Lukas Krejci - email : krejclu6@fel.cvut.cz - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/toolkit/tdebug.h> -#include <stdio.h> - -#include <taglib/mpeg/id3v2/frames/chapterframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class ChapterFrame::ChapterFramePrivate -{ -public: - ChapterFramePrivate() : - tagHeader(0), - startTime(0), - endTime(0), - startOffset(0), - endOffset(0) - { - embeddedFrameList.setAutoDelete(true); - } - - const ID3v2::Header *tagHeader; - ByteVector elementID; - unsigned int startTime; - unsigned int endTime; - unsigned int startOffset; - unsigned int endOffset; - FrameListMap embeddedFrameListMap; - FrameList embeddedFrameList; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -ChapterFrame::ChapterFrame(const ID3v2::Header *tagHeader, const ByteVector &data) : - ID3v2::Frame(data), - d(new ChapterFramePrivate()) -{ - d->tagHeader = tagHeader; - setData(data); -} - -ChapterFrame::ChapterFrame(const ByteVector &elementID, - unsigned int startTime, unsigned int endTime, - unsigned int startOffset, unsigned int endOffset, - const FrameList &embeddedFrames) : - ID3v2::Frame("CHAP"), - d(new ChapterFramePrivate()) -{ - // setElementID has a workaround for a previously silly API where you had to - // specifically include the null byte. - - setElementID(elementID); - - d->startTime = startTime; - d->endTime = endTime; - d->startOffset = startOffset; - d->endOffset = endOffset; - - for(FrameList::ConstIterator it = embeddedFrames.begin(); - it != embeddedFrames.end(); ++it) - addEmbeddedFrame(*it); -} - -ChapterFrame::~ChapterFrame() -{ - delete d; -} - -ByteVector ChapterFrame::elementID() const -{ - return d->elementID; -} - -unsigned int ChapterFrame::startTime() const -{ - return d->startTime; -} - -unsigned int ChapterFrame::endTime() const -{ - return d->endTime; -} - -unsigned int ChapterFrame::startOffset() const -{ - return d->startOffset; -} - -unsigned int ChapterFrame::endOffset() const -{ - return d->endOffset; -} - -void ChapterFrame::setElementID(const ByteVector &eID) -{ - d->elementID = eID; - - if(d->elementID.endsWith(char(0))) - d->elementID = d->elementID.mid(0, d->elementID.size() - 1); -} - -void ChapterFrame::setStartTime(const unsigned int &sT) -{ - d->startTime = sT; -} - -void ChapterFrame::setEndTime(const unsigned int &eT) -{ - d->endTime = eT; -} - -void ChapterFrame::setStartOffset(const unsigned int &sO) -{ - d->startOffset = sO; -} - -void ChapterFrame::setEndOffset(const unsigned int &eO) -{ - d->endOffset = eO; -} - -const FrameListMap &ChapterFrame::embeddedFrameListMap() const -{ - return d->embeddedFrameListMap; -} - -const FrameList &ChapterFrame::embeddedFrameList() const -{ - return d->embeddedFrameList; -} - -const FrameList &ChapterFrame::embeddedFrameList(const ByteVector &frameID) const -{ - return d->embeddedFrameListMap[frameID]; -} - -void ChapterFrame::addEmbeddedFrame(Frame *frame) -{ - d->embeddedFrameList.append(frame); - d->embeddedFrameListMap[frame->frameID()].append(frame); -} - -void ChapterFrame::removeEmbeddedFrame(Frame *frame, bool del) -{ - // remove the frame from the frame list - FrameList::Iterator it = d->embeddedFrameList.find(frame); - d->embeddedFrameList.erase(it); - - // ...and from the frame list map - it = d->embeddedFrameListMap[frame->frameID()].find(frame); - d->embeddedFrameListMap[frame->frameID()].erase(it); - - // ...and delete as desired - if(del) - delete frame; -} - -void ChapterFrame::removeEmbeddedFrames(const ByteVector &id) -{ - FrameList l = d->embeddedFrameListMap[id]; - for(FrameList::ConstIterator it = l.begin(); it != l.end(); ++it) - removeEmbeddedFrame(*it, true); -} - -String ChapterFrame::toString() const -{ - String s = String(d->elementID) + - ": start time: " + String::number(d->startTime) + - ", end time: " + String::number(d->endTime); - - if(d->startOffset != 0xFFFFFFFF) - s += ", start offset: " + String::number(d->startOffset); - - if(d->endOffset != 0xFFFFFFFF) - s += ", end offset: " + String::number(d->endOffset); - - if(!d->embeddedFrameList.isEmpty()) { - StringList frameIDs; - for(FrameList::ConstIterator it = d->embeddedFrameList.begin(); - it != d->embeddedFrameList.end(); ++it) - frameIDs.append((*it)->frameID()); - s += ", sub-frames: [ " + frameIDs.toString(", ") + " ]"; - } - - return s; -} - -PropertyMap ChapterFrame::asProperties() const -{ - PropertyMap map; - - map.unsupportedData().append(frameID() + String("/") + d->elementID); - - return map; -} - -ChapterFrame *ChapterFrame::findByElementID(const ID3v2::Tag *tag, const ByteVector &eID) // static -{ - ID3v2::FrameList comments = tag->frameList("CHAP"); - - for(ID3v2::FrameList::ConstIterator it = comments.begin(); - it != comments.end(); - ++it) - { - ChapterFrame *frame = dynamic_cast<ChapterFrame *>(*it); - if(frame && frame->elementID() == eID) - return frame; - } - - return 0; -} - -void ChapterFrame::parseFields(const ByteVector &data) -{ - unsigned int size = data.size(); - if(size < 18) { - debug("A CHAP frame must contain at least 18 bytes (1 byte element ID " - "terminated by null and 4x4 bytes for start and end time and offset)."); - return; - } - - int pos = 0; - unsigned int embPos = 0; - d->elementID = readStringField(data, String::Latin1, &pos).data(String::Latin1); - d->startTime = data.toUInt(pos, true); - pos += 4; - d->endTime = data.toUInt(pos, true); - pos += 4; - d->startOffset = data.toUInt(pos, true); - pos += 4; - d->endOffset = data.toUInt(pos, true); - pos += 4; - size -= pos; - - // Embedded frames are optional - - if(size < header()->size()) - return; - - while(embPos < size - header()->size()) { - Frame *frame = FrameFactory::instance()->createFrame(data.mid(pos + embPos), d->tagHeader); - - if(!frame) - return; - - // Checks to make sure that frame parsed correctly. - if(frame->size() <= 0) { - delete frame; - return; - } - - embPos += frame->size() + header()->size(); - addEmbeddedFrame(frame); - } -} - -ByteVector ChapterFrame::renderFields() const -{ - ByteVector data; - - data.append(d->elementID); - data.append('\0'); - data.append(ByteVector::fromUInt(d->startTime, true)); - data.append(ByteVector::fromUInt(d->endTime, true)); - data.append(ByteVector::fromUInt(d->startOffset, true)); - data.append(ByteVector::fromUInt(d->endOffset, true)); - FrameList l = d->embeddedFrameList; - for(FrameList::ConstIterator it = l.begin(); it != l.end(); ++it) - data.append((*it)->render()); - - return data; -} - -ChapterFrame::ChapterFrame(const ID3v2::Header *tagHeader, const ByteVector &data, Header *h) : - Frame(h), - d(new ChapterFramePrivate()) -{ - d->tagHeader = tagHeader; - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp deleted file mode 100644 index 9b8b1e4af..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/commentsframe.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstringlist.h> - -#include <taglib/mpeg/id3v2/frames/commentsframe.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class CommentsFrame::CommentsFramePrivate -{ -public: - CommentsFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - ByteVector language; - String description; - String text; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -CommentsFrame::CommentsFrame(String::Type encoding) : - Frame("COMM"), - d(new CommentsFramePrivate()) -{ - d->textEncoding = encoding; -} - -CommentsFrame::CommentsFrame(const ByteVector &data) : - Frame(data), - d(new CommentsFramePrivate()) -{ - setData(data); -} - -CommentsFrame::~CommentsFrame() -{ - delete d; -} - -String CommentsFrame::toString() const -{ - return d->text; -} - -ByteVector CommentsFrame::language() const -{ - return d->language; -} - -String CommentsFrame::description() const -{ - return d->description; -} - -String CommentsFrame::text() const -{ - return d->text; -} - -void CommentsFrame::setLanguage(const ByteVector &languageEncoding) -{ - d->language = languageEncoding.mid(0, 3); -} - -void CommentsFrame::setDescription(const String &s) -{ - d->description = s; -} - -void CommentsFrame::setText(const String &s) -{ - d->text = s; -} - -String::Type CommentsFrame::textEncoding() const -{ - return d->textEncoding; -} - -void CommentsFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -PropertyMap CommentsFrame::asProperties() const -{ - String key = description().upper(); - PropertyMap map; - if(key.isEmpty() || key == "COMMENT") - map.insert("COMMENT", text()); - else - map.insert("COMMENT:" + key, text()); - return map; -} - -CommentsFrame *CommentsFrame::findByDescription(const ID3v2::Tag *tag, const String &d) // static -{ - ID3v2::FrameList comments = tag->frameList("COMM"); - - for(ID3v2::FrameList::ConstIterator it = comments.begin(); - it != comments.end(); - ++it) - { - CommentsFrame *frame = dynamic_cast<CommentsFrame *>(*it); - if(frame && frame->description() == d) - return frame; - } - - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void CommentsFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("A comment frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - d->language = data.mid(1, 3); - - int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2; - - ByteVectorList l = ByteVectorList::split(data.mid(4), textDelimiter(d->textEncoding), byteAlign, 2); - - if(l.size() == 2) { - if(d->textEncoding == String::Latin1) { - d->description = Tag::latin1StringHandler()->parse(l.front()); - d->text = Tag::latin1StringHandler()->parse(l.back()); - } else { - d->description = String(l.front(), d->textEncoding); - d->text = String(l.back(), d->textEncoding); - } - } -} - -ByteVector CommentsFrame::renderFields() const -{ - ByteVector v; - - String::Type encoding = d->textEncoding; - - encoding = checkTextEncoding(d->description, encoding); - encoding = checkTextEncoding(d->text, encoding); - - v.append(char(encoding)); - v.append(d->language.size() == 3 ? d->language : "XXX"); - v.append(d->description.data(encoding)); - v.append(textDelimiter(encoding)); - v.append(d->text.data(encoding)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -CommentsFrame::CommentsFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new CommentsFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/eventtimingcodesframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/eventtimingcodesframe.cpp deleted file mode 100644 index f2c766204..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/eventtimingcodesframe.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/*************************************************************************** - copyright : (C) 2014 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/frames/eventtimingcodesframe.h> -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class EventTimingCodesFrame::EventTimingCodesFramePrivate -{ -public: - EventTimingCodesFramePrivate() : - timestampFormat(EventTimingCodesFrame::AbsoluteMilliseconds) {} - EventTimingCodesFrame::TimestampFormat timestampFormat; - EventTimingCodesFrame::SynchedEventList synchedEvents; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -EventTimingCodesFrame::EventTimingCodesFrame() : - Frame("ETCO"), - d(new EventTimingCodesFramePrivate()) -{ -} - -EventTimingCodesFrame::EventTimingCodesFrame(const ByteVector &data) : - Frame(data), - d(new EventTimingCodesFramePrivate()) -{ - setData(data); -} - -EventTimingCodesFrame::~EventTimingCodesFrame() -{ - delete d; -} - -String EventTimingCodesFrame::toString() const -{ - return String(); -} - -EventTimingCodesFrame::TimestampFormat -EventTimingCodesFrame::timestampFormat() const -{ - return d->timestampFormat; -} - -EventTimingCodesFrame::SynchedEventList -EventTimingCodesFrame::synchedEvents() const -{ - return d->synchedEvents; -} - -void EventTimingCodesFrame::setTimestampFormat( - EventTimingCodesFrame::TimestampFormat f) -{ - d->timestampFormat = f; -} - -void EventTimingCodesFrame::setSynchedEvents( - const EventTimingCodesFrame::SynchedEventList &e) -{ - d->synchedEvents = e; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void EventTimingCodesFrame::parseFields(const ByteVector &data) -{ - const int end = data.size(); - if(end < 1) { - debug("An event timing codes frame must contain at least 1 byte."); - return; - } - - d->timestampFormat = TimestampFormat(data[0]); - - int pos = 1; - d->synchedEvents.clear(); - while(pos + 4 < end) { - EventType type = static_cast<EventType>(static_cast<unsigned char>(data[pos++])); - unsigned int time = data.toUInt(pos, true); - pos += 4; - d->synchedEvents.append(SynchedEvent(time, type)); - } -} - -ByteVector EventTimingCodesFrame::renderFields() const -{ - ByteVector v; - - v.append(char(d->timestampFormat)); - for(SynchedEventList::ConstIterator it = d->synchedEvents.begin(); - it != d->synchedEvents.end(); - ++it) { - const SynchedEvent &entry = *it; - v.append(char(entry.type)); - v.append(ByteVector::fromUInt(entry.time)); - } - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -EventTimingCodesFrame::EventTimingCodesFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new EventTimingCodesFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp deleted file mode 100644 index 9541b5b0a..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - - copyright : (C) 2006 by Aaron VonderHaar - email : avh4@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstringlist.h> - -#include <taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFramePrivate -{ -public: - GeneralEncapsulatedObjectFramePrivate() : textEncoding(String::Latin1) {} - - String::Type textEncoding; - String mimeType; - String fileName; - String description; - ByteVector data; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFrame() : - Frame("GEOB"), - d(new GeneralEncapsulatedObjectFramePrivate()) -{ -} - -GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFrame(const ByteVector &data) : - Frame(data), - d(new GeneralEncapsulatedObjectFramePrivate()) -{ - setData(data); -} - -GeneralEncapsulatedObjectFrame::~GeneralEncapsulatedObjectFrame() -{ - delete d; -} - -String GeneralEncapsulatedObjectFrame::toString() const -{ - String text = "[" + d->mimeType + "]"; - - if(!d->fileName.isEmpty()) - text += " " + d->fileName; - - if(!d->description.isEmpty()) - text += " \"" + d->description + "\""; - - return text; -} - -String::Type GeneralEncapsulatedObjectFrame::textEncoding() const -{ - return d->textEncoding; -} - -void GeneralEncapsulatedObjectFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -String GeneralEncapsulatedObjectFrame::mimeType() const -{ - return d->mimeType; -} - -void GeneralEncapsulatedObjectFrame::setMimeType(const String &type) -{ - d->mimeType = type; -} - -String GeneralEncapsulatedObjectFrame::fileName() const -{ - return d->fileName; -} - -void GeneralEncapsulatedObjectFrame::setFileName(const String &name) -{ - d->fileName = name; -} - -String GeneralEncapsulatedObjectFrame::description() const -{ - return d->description; -} - -void GeneralEncapsulatedObjectFrame::setDescription(const String &desc) -{ - d->description = desc; -} - -ByteVector GeneralEncapsulatedObjectFrame::object() const -{ - return d->data; -} - -void GeneralEncapsulatedObjectFrame::setObject(const ByteVector &data) -{ - d->data = data; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void GeneralEncapsulatedObjectFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 4) { - debug("An object frame must contain at least 4 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - - int pos = 1; - - d->mimeType = readStringField(data, String::Latin1, &pos); - d->fileName = readStringField(data, d->textEncoding, &pos); - d->description = readStringField(data, d->textEncoding, &pos); - - d->data = data.mid(pos); -} - -ByteVector GeneralEncapsulatedObjectFrame::renderFields() const -{ - StringList sl; - sl.append(d->fileName); - sl.append(d->description); - - const String::Type encoding = checkTextEncoding(sl, d->textEncoding); - - ByteVector data; - - data.append(char(encoding)); - data.append(d->mimeType.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - data.append(d->fileName.data(encoding)); - data.append(textDelimiter(encoding)); - data.append(d->description.data(encoding)); - data.append(textDelimiter(encoding)); - data.append(d->data); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -GeneralEncapsulatedObjectFrame::GeneralEncapsulatedObjectFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new GeneralEncapsulatedObjectFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/ownershipframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/ownershipframe.cpp deleted file mode 100644 index 1ae40ea0a..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/ownershipframe.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Rupert Daniel - email : rupert@cancelmonday.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> - -#include <taglib/mpeg/id3v2/frames/ownershipframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class OwnershipFrame::OwnershipFramePrivate -{ -public: - String pricePaid; - String datePurchased; - String seller; - String::Type textEncoding; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -OwnershipFrame::OwnershipFrame(String::Type encoding) : - Frame("OWNE"), - d(new OwnershipFramePrivate()) -{ - d->textEncoding = encoding; -} - -OwnershipFrame::OwnershipFrame(const ByteVector &data) : - Frame(data), - d(new OwnershipFramePrivate()) -{ - setData(data); -} - -OwnershipFrame::~OwnershipFrame() -{ - delete d; -} - -String OwnershipFrame::toString() const -{ - return "pricePaid=" + d->pricePaid + " datePurchased=" + d->datePurchased + " seller=" + d->seller; -} - -String OwnershipFrame::pricePaid() const -{ - return d->pricePaid; -} - -void OwnershipFrame::setPricePaid(const String &s) -{ - d->pricePaid = s; -} - -String OwnershipFrame::datePurchased() const -{ - return d->datePurchased; -} - -void OwnershipFrame::setDatePurchased(const String &s) -{ - d->datePurchased = s; -} - -String OwnershipFrame::seller() const -{ - return d->seller; -} - -void OwnershipFrame::setSeller(const String &s) -{ - d->seller = s; -} - -String::Type OwnershipFrame::textEncoding() const -{ - return d->textEncoding; -} - -void OwnershipFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void OwnershipFrame::parseFields(const ByteVector &data) -{ - int pos = 0; - - // Get the text encoding - d->textEncoding = String::Type(data[0]); - pos += 1; - - // Read the price paid this is a null terminate string - d->pricePaid = readStringField(data, String::Latin1, &pos); - - // If we don't have at least 8 bytes left then don't parse the rest of the - // data - if(data.size() - pos < 8) { - return; - } - - // Read the date purchased YYYYMMDD - d->datePurchased = String(data.mid(pos, 8)); - pos += 8; - - // Read the seller - if(d->textEncoding == String::Latin1) - d->seller = Tag::latin1StringHandler()->parse(data.mid(pos)); - else - d->seller = String(data.mid(pos), d->textEncoding); -} - -ByteVector OwnershipFrame::renderFields() const -{ - StringList sl; - sl.append(d->seller); - - const String::Type encoding = checkTextEncoding(sl, d->textEncoding); - - ByteVector v; - - v.append(char(encoding)); - v.append(d->pricePaid.data(String::Latin1)); - v.append(textDelimiter(String::Latin1)); - v.append(d->datePurchased.data(String::Latin1)); - v.append(d->seller.data(encoding)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -OwnershipFrame::OwnershipFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new OwnershipFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/podcastframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/podcastframe.cpp deleted file mode 100644 index 207b29d27..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/podcastframe.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/frames/podcastframe.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class PodcastFrame::PodcastFramePrivate -{ -public: - ByteVector fieldData; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -PodcastFrame::PodcastFrame() : - Frame("PCST"), - d(new PodcastFramePrivate()) -{ - d->fieldData = ByteVector(4, '\0'); -} - -PodcastFrame::~PodcastFrame() -{ - delete d; -} - -String PodcastFrame::toString() const -{ - return String(); -} - -PropertyMap PodcastFrame::asProperties() const -{ - PropertyMap map; - map.insert("PODCAST", StringList()); - return map; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void PodcastFrame::parseFields(const ByteVector &data) -{ - d->fieldData = data; -} - -ByteVector PodcastFrame::renderFields() const -{ - return d->fieldData; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -PodcastFrame::PodcastFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new PodcastFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.cpp deleted file mode 100644 index 2c2d1a46c..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/id3v2/frames/popularimeterframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class PopularimeterFrame::PopularimeterFramePrivate -{ -public: - PopularimeterFramePrivate() : rating(0), counter(0) {} - String email; - int rating; - unsigned int counter; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -PopularimeterFrame::PopularimeterFrame() : - Frame("POPM"), - d(new PopularimeterFramePrivate()) -{ -} - -PopularimeterFrame::PopularimeterFrame(const ByteVector &data) : - Frame(data), - d(new PopularimeterFramePrivate()) -{ - setData(data); -} - -PopularimeterFrame::~PopularimeterFrame() -{ - delete d; -} - -String PopularimeterFrame::toString() const -{ - return d->email + " rating=" + String::number(d->rating) + " counter=" + String::number(d->counter); -} - -String PopularimeterFrame::email() const -{ - return d->email; -} - -void PopularimeterFrame::setEmail(const String &s) -{ - d->email = s; -} - -int PopularimeterFrame::rating() const -{ - return d->rating; -} - -void PopularimeterFrame::setRating(int s) -{ - d->rating = s; -} - -unsigned int PopularimeterFrame::counter() const -{ - return d->counter; -} - -void PopularimeterFrame::setCounter(unsigned int s) -{ - d->counter = s; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void PopularimeterFrame::parseFields(const ByteVector &data) -{ - int pos = 0, size = int(data.size()); - - d->email = readStringField(data, String::Latin1, &pos); - - d->rating = 0; - d->counter = 0; - if(pos < size) { - d->rating = (unsigned char)(data[pos++]); - if(pos < size) { - d->counter = data.toUInt(static_cast<unsigned int>(pos)); - } - } -} - -ByteVector PopularimeterFrame::renderFields() const -{ - ByteVector data; - - data.append(d->email.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - data.append(char(d->rating)); - data.append(ByteVector::fromUInt(d->counter)); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -PopularimeterFrame::PopularimeterFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new PopularimeterFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/privateframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/privateframe.cpp deleted file mode 100644 index 3baa4729c..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/privateframe.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Serkan Kalyoncu - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org -***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/id3v2/frames/privateframe.h> - -using namespace TagLib; -using namespace ID3v2; - - -class PrivateFrame::PrivateFramePrivate -{ -public: - ByteVector data; - String owner; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -PrivateFrame::PrivateFrame() : - Frame("PRIV"), - d(new PrivateFramePrivate()) -{ -} - -PrivateFrame::PrivateFrame(const ByteVector &data) : - Frame(data), - d(new PrivateFramePrivate()) -{ - Frame::setData(data); -} - -PrivateFrame::~PrivateFrame() -{ - delete d; -} - -String PrivateFrame::toString() const -{ - return d->owner; -} - -String PrivateFrame::owner() const -{ - return d->owner; -} - -ByteVector PrivateFrame::data() const -{ - return d->data; -} - -void PrivateFrame::setOwner(const String &s) -{ - d->owner = s; -} - -void PrivateFrame::setData(const ByteVector & data) -{ - d->data = data; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void PrivateFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 2) { - debug("A private frame must contain at least 2 bytes."); - return; - } - - // Owner identifier is assumed to be Latin1 - - const int byteAlign = 1; - const int endOfOwner = data.find(textDelimiter(String::Latin1), 0, byteAlign); - - d->owner = String(data.mid(0, endOfOwner)); - d->data = data.mid(endOfOwner + 1); -} - -ByteVector PrivateFrame::renderFields() const -{ - ByteVector v; - - v.append(d->owner.data(String::Latin1)); - v.append(textDelimiter(String::Latin1)); - v.append(d->data); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -PrivateFrame::PrivateFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new PrivateFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp deleted file mode 100644 index 9e4e3d285..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tmap.h> - -#include <taglib/mpeg/id3v2/frames/relativevolumeframe.h> - -using namespace TagLib; -using namespace ID3v2; - -struct ChannelData -{ - ChannelData() : channelType(RelativeVolumeFrame::Other), volumeAdjustment(0) {} - - RelativeVolumeFrame::ChannelType channelType; - short volumeAdjustment; - RelativeVolumeFrame::PeakVolume peakVolume; -}; - -class RelativeVolumeFrame::RelativeVolumeFramePrivate -{ -public: - String identification; - Map<ChannelType, ChannelData> channels; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RelativeVolumeFrame::RelativeVolumeFrame() : - Frame("RVA2"), - d(new RelativeVolumeFramePrivate()) -{ -} - -RelativeVolumeFrame::RelativeVolumeFrame(const ByteVector &data) : - Frame(data), - d(new RelativeVolumeFramePrivate()) -{ - setData(data); -} - -RelativeVolumeFrame::~RelativeVolumeFrame() -{ - delete d; -} - -String RelativeVolumeFrame::toString() const -{ - return d->identification; -} - -List<RelativeVolumeFrame::ChannelType> RelativeVolumeFrame::channels() const -{ - List<ChannelType> l; - - Map<ChannelType, ChannelData>::ConstIterator it = d->channels.begin(); - for(; it != d->channels.end(); ++it) - l.append((*it).first); - - return l; -} - -// deprecated - -RelativeVolumeFrame::ChannelType RelativeVolumeFrame::channelType() const -{ - return MasterVolume; -} - -// deprecated - -void RelativeVolumeFrame::setChannelType(ChannelType) -{ - -} - -short RelativeVolumeFrame::volumeAdjustmentIndex(ChannelType type) const -{ - return d->channels.contains(type) ? d->channels[type].volumeAdjustment : 0; -} - -short RelativeVolumeFrame::volumeAdjustmentIndex() const -{ - return volumeAdjustmentIndex(MasterVolume); -} - -void RelativeVolumeFrame::setVolumeAdjustmentIndex(short index, ChannelType type) -{ - d->channels[type].volumeAdjustment = index; -} - -void RelativeVolumeFrame::setVolumeAdjustmentIndex(short index) -{ - setVolumeAdjustmentIndex(index, MasterVolume); -} - -float RelativeVolumeFrame::volumeAdjustment(ChannelType type) const -{ - return d->channels.contains(type) ? float(d->channels[type].volumeAdjustment) / float(512) : 0; -} - -float RelativeVolumeFrame::volumeAdjustment() const -{ - return volumeAdjustment(MasterVolume); -} - -void RelativeVolumeFrame::setVolumeAdjustment(float adjustment, ChannelType type) -{ - d->channels[type].volumeAdjustment = short(adjustment * float(512)); -} - -void RelativeVolumeFrame::setVolumeAdjustment(float adjustment) -{ - setVolumeAdjustment(adjustment, MasterVolume); -} - -RelativeVolumeFrame::PeakVolume RelativeVolumeFrame::peakVolume(ChannelType type) const -{ - return d->channels.contains(type) ? d->channels[type].peakVolume : PeakVolume(); -} - -RelativeVolumeFrame::PeakVolume RelativeVolumeFrame::peakVolume() const -{ - return peakVolume(MasterVolume); -} - -void RelativeVolumeFrame::setPeakVolume(const PeakVolume &peak, ChannelType type) -{ - d->channels[type].peakVolume = peak; -} - -void RelativeVolumeFrame::setPeakVolume(const PeakVolume &peak) -{ - setPeakVolume(peak, MasterVolume); -} - -String RelativeVolumeFrame::identification() const -{ - return d->identification; -} - -void RelativeVolumeFrame::setIdentification(const String &s) -{ - d->identification = s; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void RelativeVolumeFrame::parseFields(const ByteVector &data) -{ - int pos = 0; - d->identification = readStringField(data, String::Latin1, &pos); - - // Each channel is at least 4 bytes. - - while(pos <= (int)data.size() - 4) { - - ChannelType type = ChannelType(data[pos]); - pos += 1; - - ChannelData &channel = d->channels[type]; - - channel.volumeAdjustment = data.toShort(static_cast<unsigned int>(pos)); - pos += 2; - - channel.peakVolume.bitsRepresentingPeak = data[pos]; - pos += 1; - - const int bytes = (channel.peakVolume.bitsRepresentingPeak + 7) / 8; - channel.peakVolume.peakVolume = data.mid(pos, bytes); - pos += bytes; - } -} - -ByteVector RelativeVolumeFrame::renderFields() const -{ - ByteVector data; - - data.append(d->identification.data(String::Latin1)); - data.append(textDelimiter(String::Latin1)); - - Map<ChannelType, ChannelData>::ConstIterator it = d->channels.begin(); - - for(; it != d->channels.end(); ++it) { - ChannelType type = (*it).first; - const ChannelData &channel = (*it).second; - - data.append(char(type)); - data.append(ByteVector::fromShort(channel.volumeAdjustment)); - data.append(char(channel.peakVolume.bitsRepresentingPeak)); - data.append(channel.peakVolume.peakVolume); - } - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -RelativeVolumeFrame::RelativeVolumeFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new RelativeVolumeFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.cpp deleted file mode 100644 index e51cee2ca..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/*************************************************************************** - copyright : (C) 2014 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/frames/synchronizedlyricsframe.h> -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class SynchronizedLyricsFrame::SynchronizedLyricsFramePrivate -{ -public: - SynchronizedLyricsFramePrivate() : - textEncoding(String::Latin1), - timestampFormat(SynchronizedLyricsFrame::AbsoluteMilliseconds), - type(SynchronizedLyricsFrame::Lyrics) {} - String::Type textEncoding; - ByteVector language; - SynchronizedLyricsFrame::TimestampFormat timestampFormat; - SynchronizedLyricsFrame::Type type; - String description; - SynchronizedLyricsFrame::SynchedTextList synchedText; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -SynchronizedLyricsFrame::SynchronizedLyricsFrame(String::Type encoding) : - Frame("SYLT"), - d(new SynchronizedLyricsFramePrivate()) -{ - d->textEncoding = encoding; -} - -SynchronizedLyricsFrame::SynchronizedLyricsFrame(const ByteVector &data) : - Frame(data), - d(new SynchronizedLyricsFramePrivate()) -{ - setData(data); -} - -SynchronizedLyricsFrame::~SynchronizedLyricsFrame() -{ - delete d; -} - -String SynchronizedLyricsFrame::toString() const -{ - return d->description; -} - -String::Type SynchronizedLyricsFrame::textEncoding() const -{ - return d->textEncoding; -} - -ByteVector SynchronizedLyricsFrame::language() const -{ - return d->language; -} - -SynchronizedLyricsFrame::TimestampFormat -SynchronizedLyricsFrame::timestampFormat() const -{ - return d->timestampFormat; -} - -SynchronizedLyricsFrame::Type SynchronizedLyricsFrame::type() const -{ - return d->type; -} - -String SynchronizedLyricsFrame::description() const -{ - return d->description; -} - -SynchronizedLyricsFrame::SynchedTextList -SynchronizedLyricsFrame::synchedText() const -{ - return d->synchedText; -} - -void SynchronizedLyricsFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -void SynchronizedLyricsFrame::setLanguage(const ByteVector &languageEncoding) -{ - d->language = languageEncoding.mid(0, 3); -} - -void SynchronizedLyricsFrame::setTimestampFormat(SynchronizedLyricsFrame::TimestampFormat f) -{ - d->timestampFormat = f; -} - -void SynchronizedLyricsFrame::setType(SynchronizedLyricsFrame::Type t) -{ - d->type = t; -} - -void SynchronizedLyricsFrame::setDescription(const String &s) -{ - d->description = s; -} - -void SynchronizedLyricsFrame::setSynchedText( - const SynchronizedLyricsFrame::SynchedTextList &t) -{ - d->synchedText = t; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void SynchronizedLyricsFrame::parseFields(const ByteVector &data) -{ - const int end = data.size(); - if(end < 7) { - debug("A synchronized lyrics frame must contain at least 7 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - d->language = data.mid(1, 3); - d->timestampFormat = TimestampFormat(data[4]); - d->type = Type(data[5]); - - int pos = 6; - - d->description = readStringField(data, d->textEncoding, &pos); - if(pos == 6) - return; - - /* - * If UTF16 strings are found in SYLT frames, a BOM may only be - * present in the first string (content descriptor), and the strings of - * the synchronized text have no BOM. Here the BOM is read from - * the first string to have a specific encoding with endianness for the - * case of strings without BOM so that readStringField() will work. - */ - String::Type encWithEndianness = d->textEncoding; - if(d->textEncoding == String::UTF16) { - unsigned short bom = data.toUShort(6, true); - if(bom == 0xfffe) { - encWithEndianness = String::UTF16LE; - } else if(bom == 0xfeff) { - encWithEndianness = String::UTF16BE; - } - } - - d->synchedText.clear(); - while(pos < end) { - String::Type enc = d->textEncoding; - // If a UTF16 string has no BOM, use the encoding found above. - if(enc == String::UTF16 && pos + 1 < end) { - unsigned short bom = data.toUShort(pos, true); - if(bom != 0xfffe && bom != 0xfeff) { - enc = encWithEndianness; - } - } - String text = readStringField(data, enc, &pos); - if(pos + 4 > end) - return; - - unsigned int time = data.toUInt(pos, true); - pos += 4; - - d->synchedText.append(SynchedText(time, text)); - } -} - -ByteVector SynchronizedLyricsFrame::renderFields() const -{ - ByteVector v; - - String::Type encoding = d->textEncoding; - - encoding = checkTextEncoding(d->description, encoding); - for(SynchedTextList::ConstIterator it = d->synchedText.begin(); - it != d->synchedText.end(); - ++it) { - encoding = checkTextEncoding(it->text, encoding); - } - - v.append(char(encoding)); - v.append(d->language.size() == 3 ? d->language : "XXX"); - v.append(char(d->timestampFormat)); - v.append(char(d->type)); - v.append(d->description.data(encoding)); - v.append(textDelimiter(encoding)); - for(SynchedTextList::ConstIterator it = d->synchedText.begin(); - it != d->synchedText.end(); - ++it) { - const SynchedText &entry = *it; - v.append(entry.text.data(encoding)); - v.append(textDelimiter(encoding)); - v.append(ByteVector::fromUInt(entry.time)); - } - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -SynchronizedLyricsFrame::SynchronizedLyricsFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new SynchronizedLyricsFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp deleted file mode 100644 index 1e875fee6..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp +++ /dev/null @@ -1,360 +0,0 @@ -/*************************************************************************** - copyright : (C) 2013 by Lukas Krejci - email : krejclu6@fel.cvut.cz - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/id3v2/frames/tableofcontentsframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class TableOfContentsFrame::TableOfContentsFramePrivate -{ -public: - TableOfContentsFramePrivate() : - tagHeader(0), - isTopLevel(false), - isOrdered(false) - { - embeddedFrameList.setAutoDelete(true); - } - - const ID3v2::Header *tagHeader; - ByteVector elementID; - bool isTopLevel; - bool isOrdered; - ByteVectorList childElements; - FrameListMap embeddedFrameListMap; - FrameList embeddedFrameList; -}; - -namespace { - - // These functions are needed to try to aim for backward compatibility with - // an API that previously (unreasonably) required null bytes to be appended - // at the end of identifiers explicitly by the API user. - - // BIC: remove these - - ByteVector &strip(ByteVector &b) - { - if(b.endsWith('\0')) - b.resize(b.size() - 1); - return b; - } - - ByteVectorList &strip(ByteVectorList &l) - { - for(ByteVectorList::Iterator it = l.begin(); it != l.end(); ++it) - { - strip(*it); - } - return l; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -TableOfContentsFrame::TableOfContentsFrame(const ID3v2::Header *tagHeader, const ByteVector &data) : - ID3v2::Frame(data), - d(new TableOfContentsFramePrivate()) -{ - d->tagHeader = tagHeader; - setData(data); -} - -TableOfContentsFrame::TableOfContentsFrame(const ByteVector &elementID, - const ByteVectorList &children, - const FrameList &embeddedFrames) : - ID3v2::Frame("CTOC"), - d(new TableOfContentsFramePrivate()) -{ - d->elementID = elementID; - strip(d->elementID); - d->childElements = children; - - for(FrameList::ConstIterator it = embeddedFrames.begin(); it != embeddedFrames.end(); ++it) - addEmbeddedFrame(*it); -} - -TableOfContentsFrame::~TableOfContentsFrame() -{ - delete d; -} - -ByteVector TableOfContentsFrame::elementID() const -{ - return d->elementID; -} - -bool TableOfContentsFrame::isTopLevel() const -{ - return d->isTopLevel; -} - -bool TableOfContentsFrame::isOrdered() const -{ - return d->isOrdered; -} - -unsigned int TableOfContentsFrame::entryCount() const -{ - return d->childElements.size(); -} - -ByteVectorList TableOfContentsFrame::childElements() const -{ - return d->childElements; -} - -void TableOfContentsFrame::setElementID(const ByteVector &eID) -{ - d->elementID = eID; - strip(d->elementID); -} - -void TableOfContentsFrame::setIsTopLevel(const bool &t) -{ - d->isTopLevel = t; -} - -void TableOfContentsFrame::setIsOrdered(const bool &o) -{ - d->isOrdered = o; -} - -void TableOfContentsFrame::setChildElements(const ByteVectorList &l) -{ - d->childElements = l; - strip(d->childElements); -} - -void TableOfContentsFrame::addChildElement(const ByteVector &cE) -{ - d->childElements.append(cE); - strip(d->childElements); -} - -void TableOfContentsFrame::removeChildElement(const ByteVector &cE) -{ - ByteVectorList::Iterator it = d->childElements.find(cE); - - if(it == d->childElements.end()) - it = d->childElements.find(cE + ByteVector("\0")); - - if(it != d->childElements.end()) - d->childElements.erase(it); -} - -const FrameListMap &TableOfContentsFrame::embeddedFrameListMap() const -{ - return d->embeddedFrameListMap; -} - -const FrameList &TableOfContentsFrame::embeddedFrameList() const -{ - return d->embeddedFrameList; -} - -const FrameList &TableOfContentsFrame::embeddedFrameList(const ByteVector &frameID) const -{ - return d->embeddedFrameListMap[frameID]; -} - -void TableOfContentsFrame::addEmbeddedFrame(Frame *frame) -{ - d->embeddedFrameList.append(frame); - d->embeddedFrameListMap[frame->frameID()].append(frame); -} - -void TableOfContentsFrame::removeEmbeddedFrame(Frame *frame, bool del) -{ - // remove the frame from the frame list - FrameList::Iterator it = d->embeddedFrameList.find(frame); - if(it != d->embeddedFrameList.end()) - d->embeddedFrameList.erase(it); - - // ...and from the frame list map - FrameList &mappedList = d->embeddedFrameListMap[frame->frameID()]; - it = mappedList.find(frame); - if(it != mappedList.end()) - mappedList.erase(it); - - // ...and delete as desired - if(del) - delete frame; -} - -void TableOfContentsFrame::removeEmbeddedFrames(const ByteVector &id) -{ - FrameList l = d->embeddedFrameListMap[id]; - for(FrameList::ConstIterator it = l.begin(); it != l.end(); ++it) - removeEmbeddedFrame(*it, true); -} - -String TableOfContentsFrame::toString() const -{ - String s = String(d->elementID) + - ": top level: " + (d->isTopLevel ? "true" : "false") + - ", ordered: " + (d->isOrdered ? "true" : "false"); - - if(!d->childElements.isEmpty()) { - s+= ", chapters: [ " + String(d->childElements.toByteVector(", ")) + " ]"; - } - - if(!d->embeddedFrameList.isEmpty()) { - StringList frameIDs; - for(FrameList::ConstIterator it = d->embeddedFrameList.begin(); - it != d->embeddedFrameList.end(); ++it) - frameIDs.append((*it)->frameID()); - s += ", sub-frames: [ " + frameIDs.toString(", ") + " ]"; - } - - return s; -} - -PropertyMap TableOfContentsFrame::asProperties() const -{ - PropertyMap map; - - map.unsupportedData().append(frameID() + String("/") + d->elementID); - - return map; -} - -TableOfContentsFrame *TableOfContentsFrame::findByElementID(const ID3v2::Tag *tag, - const ByteVector &eID) // static -{ - ID3v2::FrameList tablesOfContents = tag->frameList("CTOC"); - - for(ID3v2::FrameList::ConstIterator it = tablesOfContents.begin(); - it != tablesOfContents.end(); - ++it) - { - TableOfContentsFrame *frame = dynamic_cast<TableOfContentsFrame *>(*it); - if(frame && frame->elementID() == eID) - return frame; - } - - return 0; -} - -TableOfContentsFrame *TableOfContentsFrame::findTopLevel(const ID3v2::Tag *tag) // static -{ - ID3v2::FrameList tablesOfContents = tag->frameList("CTOC"); - - for(ID3v2::FrameList::ConstIterator it = tablesOfContents.begin(); - it != tablesOfContents.end(); - ++it) - { - TableOfContentsFrame *frame = dynamic_cast<TableOfContentsFrame *>(*it); - if(frame && frame->isTopLevel() == true) - return frame; - } - - return 0; -} - -void TableOfContentsFrame::parseFields(const ByteVector &data) -{ - unsigned int size = data.size(); - if(size < 6) { - debug("A CTOC frame must contain at least 6 bytes (1 byte element ID terminated by " - "null, 1 byte flags, 1 byte entry count and 1 byte child element ID terminated " - "by null."); - return; - } - - int pos = 0; - unsigned int embPos = 0; - d->elementID = readStringField(data, String::Latin1, &pos).data(String::Latin1); - d->isTopLevel = (data.at(pos) & 2) != 0; - d->isOrdered = (data.at(pos++) & 1) != 0; - unsigned int entryCount = static_cast<unsigned char>(data.at(pos++)); - for(unsigned int i = 0; i < entryCount; i++) { - ByteVector childElementID = readStringField(data, String::Latin1, &pos).data(String::Latin1); - d->childElements.append(childElementID); - } - - size -= pos; - - if(size < header()->size()) - return; - - while(embPos < size - header()->size()) { - Frame *frame = FrameFactory::instance()->createFrame(data.mid(pos + embPos), d->tagHeader); - - if(!frame) - return; - - // Checks to make sure that frame parsed correctly. - if(frame->size() <= 0) { - delete frame; - return; - } - - embPos += frame->size() + header()->size(); - addEmbeddedFrame(frame); - } -} - -ByteVector TableOfContentsFrame::renderFields() const -{ - ByteVector data; - - data.append(d->elementID); - data.append('\0'); - char flags = 0; - if(d->isTopLevel) - flags += 2; - if(d->isOrdered) - flags += 1; - data.append(flags); - data.append((char)(entryCount())); - ByteVectorList::ConstIterator it = d->childElements.begin(); - while(it != d->childElements.end()) { - data.append(*it); - data.append('\0'); - it++; - } - FrameList l = d->embeddedFrameList; - for(FrameList::ConstIterator it = l.begin(); it != l.end(); ++it) - data.append((*it)->render()); - - return data; -} - -TableOfContentsFrame::TableOfContentsFrame(const ID3v2::Header *tagHeader, - const ByteVector &data, Header *h) : - Frame(h), - d(new TableOfContentsFramePrivate()) -{ - d->tagHeader = tagHeader; - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp deleted file mode 100644 index d6b791f78..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.cpp +++ /dev/null @@ -1,437 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/frames/textidentificationframe.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/mpeg/id3v1/id3v1genres.h> - -using namespace TagLib; -using namespace ID3v2; - -class TextIdentificationFrame::TextIdentificationFramePrivate -{ -public: - TextIdentificationFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - StringList fieldList; -}; - -//////////////////////////////////////////////////////////////////////////////// -// TextIdentificationFrame public members -//////////////////////////////////////////////////////////////////////////////// - -TextIdentificationFrame::TextIdentificationFrame(const ByteVector &type, String::Type encoding) : - Frame(type), - d(new TextIdentificationFramePrivate()) -{ - d->textEncoding = encoding; -} - -TextIdentificationFrame::TextIdentificationFrame(const ByteVector &data) : - Frame(data), - d(new TextIdentificationFramePrivate()) -{ - setData(data); -} - -TextIdentificationFrame *TextIdentificationFrame::createTIPLFrame(const PropertyMap &properties) // static -{ - TextIdentificationFrame *frame = new TextIdentificationFrame("TIPL"); - StringList l; - for(PropertyMap::ConstIterator it = properties.begin(); it != properties.end(); ++it){ - const String role = involvedPeopleMap()[it->first]; - if(role.isEmpty()) // should not happen - continue; - l.append(role); - l.append(it->second.toString(",")); // comma-separated list of names - } - frame->setText(l); - return frame; -} - -TextIdentificationFrame *TextIdentificationFrame::createTMCLFrame(const PropertyMap &properties) // static -{ - TextIdentificationFrame *frame = new TextIdentificationFrame("TMCL"); - StringList l; - for(PropertyMap::ConstIterator it = properties.begin(); it != properties.end(); ++it){ - if(!it->first.startsWith(instrumentPrefix)) // should not happen - continue; - l.append(it->first.substr(instrumentPrefix.size())); - l.append(it->second.toString(",")); - } - frame->setText(l); - return frame; -} - -TextIdentificationFrame::~TextIdentificationFrame() -{ - delete d; -} - -void TextIdentificationFrame::setText(const StringList &l) -{ - d->fieldList = l; -} - -void TextIdentificationFrame::setText(const String &s) -{ - d->fieldList = s; -} - -String TextIdentificationFrame::toString() const -{ - return d->fieldList.toString(); -} - -StringList TextIdentificationFrame::fieldList() const -{ - return d->fieldList; -} - -String::Type TextIdentificationFrame::textEncoding() const -{ - return d->textEncoding; -} - -void TextIdentificationFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -namespace -{ - // array of allowed TIPL prefixes and their corresponding key value - const char* involvedPeople[][2] = { - {"ARRANGER", "ARRANGER"}, - {"ENGINEER", "ENGINEER"}, - {"PRODUCER", "PRODUCER"}, - {"DJ-MIX", "DJMIXER"}, - {"MIX", "MIXER"}, - }; - const size_t involvedPeopleSize = sizeof(involvedPeople) / sizeof(involvedPeople[0]); -} - -const KeyConversionMap &TextIdentificationFrame::involvedPeopleMap() // static -{ - static KeyConversionMap m; - if(m.isEmpty()) { - for(size_t i = 0; i < involvedPeopleSize; ++i) - m.insert(involvedPeople[i][1], involvedPeople[i][0]); - } - return m; -} - -PropertyMap TextIdentificationFrame::asProperties() const -{ - if(frameID() == "TIPL") - return makeTIPLProperties(); - if(frameID() == "TMCL") - return makeTMCLProperties(); - PropertyMap map; - String tagName = frameIDToKey(frameID()); - if(tagName.isEmpty()) { - map.unsupportedData().append(frameID()); - return map; - } - StringList values = fieldList(); - if(tagName == "GENRE") { - // Special case: Support ID3v1-style genre numbers. They are not officially supported in - // ID3v2, however it seems that still a lot of programs use them. - for(StringList::Iterator it = values.begin(); it != values.end(); ++it) { - bool ok = false; - int test = it->toInt(&ok); // test if the genre value is an integer - if(ok) - *it = ID3v1::genre(test); - } - } else if(tagName == "DATE") { - for(StringList::Iterator it = values.begin(); it != values.end(); ++it) { - // ID3v2 specifies ISO8601 timestamps which contain a 'T' as separator between date and time. - // Since this is unusual in other formats, the T is removed. - int tpos = it->find("T"); - if(tpos != -1) - (*it)[tpos] = ' '; - } - } - PropertyMap ret; - ret.insert(tagName, values); - return ret; -} - -//////////////////////////////////////////////////////////////////////////////// -// TextIdentificationFrame protected members -//////////////////////////////////////////////////////////////////////////////// - -void TextIdentificationFrame::parseFields(const ByteVector &data) -{ - // Don't try to parse invalid frames - - if(data.size() < 2) - return; - - // read the string data type (the first byte of the field data) - - d->textEncoding = String::Type(data[0]); - - // split the byte array into chunks based on the string type (two byte delimiter - // for unicode encodings) - - int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2; - - // build a small counter to strip nulls off the end of the field - - int dataLength = data.size() - 1; - - while(dataLength > 0 && data[dataLength] == 0) - dataLength--; - - while(dataLength % byteAlign != 0) - dataLength++; - - ByteVectorList l = ByteVectorList::split(data.mid(1, dataLength), textDelimiter(d->textEncoding), byteAlign); - - d->fieldList.clear(); - - // append those split values to the list and make sure that the new string's - // type is the same specified for this frame - - for(ByteVectorList::ConstIterator it = l.begin(); it != l.end(); it++) { - if(!(*it).isEmpty()) { - if(d->textEncoding == String::Latin1) - d->fieldList.append(Tag::latin1StringHandler()->parse(*it)); - else - d->fieldList.append(String(*it, d->textEncoding)); - } - } -} - -ByteVector TextIdentificationFrame::renderFields() const -{ - String::Type encoding = checkTextEncoding(d->fieldList, d->textEncoding); - - ByteVector v; - - v.append(char(encoding)); - - for(StringList::ConstIterator it = d->fieldList.begin(); it != d->fieldList.end(); it++) { - - // Since the field list is null delimited, if this is not the first - // element in the list, append the appropriate delimiter for this - // encoding. - - if(it != d->fieldList.begin()) - v.append(textDelimiter(encoding)); - - v.append((*it).data(encoding)); - } - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// TextIdentificationFrame private members -//////////////////////////////////////////////////////////////////////////////// - -TextIdentificationFrame::TextIdentificationFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new TextIdentificationFramePrivate()) -{ - parseFields(fieldData(data)); -} - -PropertyMap TextIdentificationFrame::makeTIPLProperties() const -{ - PropertyMap map; - if(fieldList().size() % 2 != 0){ - // according to the ID3 spec, TIPL must contain an even number of entries - map.unsupportedData().append(frameID()); - return map; - } - StringList l = fieldList(); - for(StringList::ConstIterator it = l.begin(); it != l.end(); ++it) { - bool found = false; - for(size_t i = 0; i < involvedPeopleSize; ++i) - if(*it == involvedPeople[i][0]) { - map.insert(involvedPeople[i][1], (++it)->split(",")); - found = true; - break; - } - if(!found){ - // invalid involved role -> mark whole frame as unsupported in order to be consistent with writing - map.clear(); - map.unsupportedData().append(frameID()); - return map; - } - } - return map; -} - -PropertyMap TextIdentificationFrame::makeTMCLProperties() const -{ - PropertyMap map; - if(fieldList().size() % 2 != 0){ - // according to the ID3 spec, TMCL must contain an even number of entries - map.unsupportedData().append(frameID()); - return map; - } - StringList l = fieldList(); - for(StringList::ConstIterator it = l.begin(); it != l.end(); ++it) { - String instrument = it->upper(); - if(instrument.isEmpty()) { - // instrument is not a valid key -> frame unsupported - map.clear(); - map.unsupportedData().append(frameID()); - return map; - } - map.insert(L"PERFORMER:" + instrument, (++it)->split(",")); - } - return map; -} - -//////////////////////////////////////////////////////////////////////////////// -// UserTextIdentificationFrame public members -//////////////////////////////////////////////////////////////////////////////// - -UserTextIdentificationFrame::UserTextIdentificationFrame(String::Type encoding) : - TextIdentificationFrame("TXXX", encoding), - d(0) -{ - StringList l; - l.append(String()); - l.append(String()); - setText(l); -} - - -UserTextIdentificationFrame::UserTextIdentificationFrame(const ByteVector &data) : - TextIdentificationFrame(data) -{ - checkFields(); -} - -UserTextIdentificationFrame::UserTextIdentificationFrame(const String &description, const StringList &values, String::Type encoding) : - TextIdentificationFrame("TXXX", encoding), - d(0) -{ - setDescription(description); - setText(values); -} - -String UserTextIdentificationFrame::toString() const -{ - // first entry is the description itself, drop from values list - StringList l = fieldList(); - for(StringList::Iterator it = l.begin(); it != l.end(); ++it) { - l.erase(it); - break; - } - return "[" + description() + "] " + l.toString(); -} - -String UserTextIdentificationFrame::description() const -{ - return !TextIdentificationFrame::fieldList().isEmpty() - ? TextIdentificationFrame::fieldList().front() - : String(); -} - -StringList UserTextIdentificationFrame::fieldList() const -{ - // TODO: remove this function - - return TextIdentificationFrame::fieldList(); -} - -void UserTextIdentificationFrame::setText(const String &text) -{ - if(description().isEmpty()) - setDescription(String()); - - TextIdentificationFrame::setText(StringList(description()).append(text)); -} - -void UserTextIdentificationFrame::setText(const StringList &fields) -{ - if(description().isEmpty()) - setDescription(String()); - - TextIdentificationFrame::setText(StringList(description()).append(fields)); -} - -void UserTextIdentificationFrame::setDescription(const String &s) -{ - StringList l = fieldList(); - - if(l.isEmpty()) - l.append(s); - else - l[0] = s; - - TextIdentificationFrame::setText(l); -} - -PropertyMap UserTextIdentificationFrame::asProperties() const -{ - PropertyMap map; - String tagName = txxxToKey(description()); - StringList v = fieldList(); - for(StringList::ConstIterator it = v.begin(); it != v.end(); ++it) - if(it != v.begin()) - map.insert(tagName, *it); - return map; -} - -UserTextIdentificationFrame *UserTextIdentificationFrame::find( - ID3v2::Tag *tag, const String &description) // static -{ - FrameList l = tag->frameList("TXXX"); - for(FrameList::ConstIterator it = l.begin(); it != l.end(); ++it) { - UserTextIdentificationFrame *f = dynamic_cast<UserTextIdentificationFrame *>(*it); - if(f && f->description() == description) - return f; - } - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// UserTextIdentificationFrame private members -//////////////////////////////////////////////////////////////////////////////// - -UserTextIdentificationFrame::UserTextIdentificationFrame(const ByteVector &data, Header *h) : - TextIdentificationFrame(data, h) -{ - checkFields(); -} - -void UserTextIdentificationFrame::checkFields() -{ - int fields = fieldList().size(); - - if(fields == 0) - setDescription(String()); - if(fields <= 1) - setText(String()); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp deleted file mode 100644 index ce6458248..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class UniqueFileIdentifierFrame::UniqueFileIdentifierFramePrivate -{ -public: - String owner; - ByteVector identifier; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -UniqueFileIdentifierFrame::UniqueFileIdentifierFrame(const ByteVector &data) : - ID3v2::Frame(data), - d(new UniqueFileIdentifierFramePrivate()) -{ - setData(data); -} - -UniqueFileIdentifierFrame::UniqueFileIdentifierFrame(const String &owner, const ByteVector &id) : - ID3v2::Frame("UFID"), - d(new UniqueFileIdentifierFramePrivate()) -{ - d->owner = owner; - d->identifier = id; -} - -UniqueFileIdentifierFrame::~UniqueFileIdentifierFrame() -{ - delete d; -} - -String UniqueFileIdentifierFrame::owner() const -{ - return d->owner; -} - -ByteVector UniqueFileIdentifierFrame::identifier() const -{ - return d->identifier; -} - -void UniqueFileIdentifierFrame::setOwner(const String &s) -{ - d->owner = s; -} - -void UniqueFileIdentifierFrame::setIdentifier(const ByteVector &v) -{ - d->identifier = v; -} - -String UniqueFileIdentifierFrame::toString() const -{ - return String(); -} - -PropertyMap UniqueFileIdentifierFrame::asProperties() const -{ - PropertyMap map; - if(d->owner == "http://musicbrainz.org") { - map.insert("MUSICBRAINZ_TRACKID", String(d->identifier)); - } - else { - map.unsupportedData().append(frameID() + String("/") + d->owner); - } - return map; -} - -UniqueFileIdentifierFrame *UniqueFileIdentifierFrame::findByOwner(const ID3v2::Tag *tag, const String &o) // static -{ - ID3v2::FrameList comments = tag->frameList("UFID"); - - for(ID3v2::FrameList::ConstIterator it = comments.begin(); - it != comments.end(); - ++it) - { - UniqueFileIdentifierFrame *frame = dynamic_cast<UniqueFileIdentifierFrame *>(*it); - if(frame && frame->owner() == o) - return frame; - } - - return 0; -} - -void UniqueFileIdentifierFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 1) { - debug("An UFID frame must contain at least 1 byte."); - return; - } - - int pos = 0; - d->owner = readStringField(data, String::Latin1, &pos); - d->identifier = data.mid(pos); -} - -ByteVector UniqueFileIdentifierFrame::renderFields() const -{ - ByteVector data; - - data.append(d->owner.data(String::Latin1)); - data.append(char(0)); - data.append(d->identifier); - - return data; -} - -UniqueFileIdentifierFrame::UniqueFileIdentifierFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new UniqueFileIdentifierFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp deleted file mode 100644 index 2d27cbd2b..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unknownframe.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/frames/unknownframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class UnknownFrame::UnknownFramePrivate -{ -public: - ByteVector fieldData; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -UnknownFrame::UnknownFrame(const ByteVector &data) : - Frame(data), - d(new UnknownFramePrivate()) -{ - setData(data); -} - -UnknownFrame::~UnknownFrame() -{ - delete d; -} - -String UnknownFrame::toString() const -{ - return String(); -} - -ByteVector UnknownFrame::data() const -{ - return d->fieldData; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void UnknownFrame::parseFields(const ByteVector &data) -{ - d->fieldData = data; -} - -ByteVector UnknownFrame::renderFields() const -{ - return d->fieldData; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -UnknownFrame::UnknownFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new UnknownFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp deleted file mode 100644 index 4f33987ec..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - - copyright : (C) 2006 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h> -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class UnsynchronizedLyricsFrame::UnsynchronizedLyricsFramePrivate -{ -public: - UnsynchronizedLyricsFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - ByteVector language; - String description; - String text; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -UnsynchronizedLyricsFrame::UnsynchronizedLyricsFrame(String::Type encoding) : - Frame("USLT"), - d(new UnsynchronizedLyricsFramePrivate()) -{ - d->textEncoding = encoding; -} - -UnsynchronizedLyricsFrame::UnsynchronizedLyricsFrame(const ByteVector &data) : - Frame(data), - d(new UnsynchronizedLyricsFramePrivate()) -{ - setData(data); -} - -UnsynchronizedLyricsFrame::~UnsynchronizedLyricsFrame() -{ - delete d; -} - -String UnsynchronizedLyricsFrame::toString() const -{ - return d->text; -} - -ByteVector UnsynchronizedLyricsFrame::language() const -{ - return d->language; -} - -String UnsynchronizedLyricsFrame::description() const -{ - return d->description; -} - -String UnsynchronizedLyricsFrame::text() const -{ - return d->text; -} - -void UnsynchronizedLyricsFrame::setLanguage(const ByteVector &languageEncoding) -{ - d->language = languageEncoding.mid(0, 3); -} - -void UnsynchronizedLyricsFrame::setDescription(const String &s) -{ - d->description = s; -} - -void UnsynchronizedLyricsFrame::setText(const String &s) -{ - d->text = s; -} - - -String::Type UnsynchronizedLyricsFrame::textEncoding() const -{ - return d->textEncoding; -} - -void UnsynchronizedLyricsFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -PropertyMap UnsynchronizedLyricsFrame::asProperties() const -{ - PropertyMap map; - String key = description().upper(); - if(key.isEmpty() || key == "LYRICS") - map.insert("LYRICS", text()); - else - map.insert("LYRICS:" + key, text()); - return map; -} - -UnsynchronizedLyricsFrame *UnsynchronizedLyricsFrame::findByDescription(const ID3v2::Tag *tag, const String &d) // static -{ - ID3v2::FrameList lyrics = tag->frameList("USLT"); - - for(ID3v2::FrameList::ConstIterator it = lyrics.begin(); it != lyrics.end(); ++it){ - UnsynchronizedLyricsFrame *frame = dynamic_cast<UnsynchronizedLyricsFrame *>(*it); - if(frame && frame->description() == d) - return frame; - } - return 0; -} -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void UnsynchronizedLyricsFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 5) { - debug("An unsynchronized lyrics frame must contain at least 5 bytes."); - return; - } - - d->textEncoding = String::Type(data[0]); - d->language = data.mid(1, 3); - - int byteAlign - = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2; - - ByteVectorList l = - ByteVectorList::split(data.mid(4), textDelimiter(d->textEncoding), byteAlign, 2); - - if(l.size() == 2) { - if(d->textEncoding == String::Latin1) { - d->description = Tag::latin1StringHandler()->parse(l.front()); - d->text = Tag::latin1StringHandler()->parse(l.back()); - } else { - d->description = String(l.front(), d->textEncoding); - d->text = String(l.back(), d->textEncoding); - } - } -} - -ByteVector UnsynchronizedLyricsFrame::renderFields() const -{ - StringList sl; - sl.append(d->description); - sl.append(d->text); - - const String::Type encoding = checkTextEncoding(sl, d->textEncoding); - - ByteVector v; - - v.append(char(encoding)); - v.append(d->language.size() == 3 ? d->language : "XXX"); - v.append(d->description.data(encoding)); - v.append(textDelimiter(encoding)); - v.append(d->text.data(encoding)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -UnsynchronizedLyricsFrame::UnsynchronizedLyricsFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new UnsynchronizedLyricsFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp deleted file mode 100644 index 84ba9f8c7..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/urllinkframe.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - - copyright : (C) 2006 by Urs Fleisch - email : ufleisch@users.sourceforge.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/frames/urllinkframe.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; -using namespace ID3v2; - -class UrlLinkFrame::UrlLinkFramePrivate -{ -public: - String url; -}; - -class UserUrlLinkFrame::UserUrlLinkFramePrivate -{ -public: - UserUrlLinkFramePrivate() : textEncoding(String::Latin1) {} - String::Type textEncoding; - String description; -}; - -//////////////////////////////////////////////////////////////////////////////// -// UrlLinkFrame public members -//////////////////////////////////////////////////////////////////////////////// - -UrlLinkFrame::UrlLinkFrame(const ByteVector &data) : - Frame(data), - d(new UrlLinkFramePrivate()) -{ - setData(data); -} - -UrlLinkFrame::~UrlLinkFrame() -{ - delete d; -} - -void UrlLinkFrame::setUrl(const String &s) -{ - d->url = s; -} - -String UrlLinkFrame::url() const -{ - return d->url; -} - -void UrlLinkFrame::setText(const String &s) -{ - setUrl(s); -} - -String UrlLinkFrame::toString() const -{ - return url(); -} - -PropertyMap UrlLinkFrame::asProperties() const -{ - String key = frameIDToKey(frameID()); - PropertyMap map; - if(key.isEmpty()) - // unknown W*** frame - this normally shouldn't happen - map.unsupportedData().append(frameID()); - else - map.insert(key, url()); - return map; -} - -//////////////////////////////////////////////////////////////////////////////// -// UrlLinkFrame protected members -//////////////////////////////////////////////////////////////////////////////// - -void UrlLinkFrame::parseFields(const ByteVector &data) -{ - d->url = String(data); -} - -ByteVector UrlLinkFrame::renderFields() const -{ - return d->url.data(String::Latin1); -} - -UrlLinkFrame::UrlLinkFrame(const ByteVector &data, Header *h) : - Frame(h), - d(new UrlLinkFramePrivate()) -{ - parseFields(fieldData(data)); -} - -//////////////////////////////////////////////////////////////////////////////// -// UserUrlLinkFrame public members -//////////////////////////////////////////////////////////////////////////////// - -UserUrlLinkFrame::UserUrlLinkFrame(String::Type encoding) : - UrlLinkFrame("WXXX"), - d(new UserUrlLinkFramePrivate()) -{ - d->textEncoding = encoding; -} - -UserUrlLinkFrame::UserUrlLinkFrame(const ByteVector &data) : - UrlLinkFrame(data), - d(new UserUrlLinkFramePrivate()) -{ - setData(data); -} - -UserUrlLinkFrame::~UserUrlLinkFrame() -{ - delete d; -} - -String UserUrlLinkFrame::toString() const -{ - return "[" + description() + "] " + url(); -} - -String::Type UserUrlLinkFrame::textEncoding() const -{ - return d->textEncoding; -} - -void UserUrlLinkFrame::setTextEncoding(String::Type encoding) -{ - d->textEncoding = encoding; -} - -String UserUrlLinkFrame::description() const -{ - return d->description; -} - -void UserUrlLinkFrame::setDescription(const String &s) -{ - d->description = s; -} - -PropertyMap UserUrlLinkFrame::asProperties() const -{ - PropertyMap map; - String key = description().upper(); - if(key.isEmpty() || key == "URL") - map.insert("URL", url()); - else - map.insert("URL:" + key, url()); - return map; -} - -UserUrlLinkFrame *UserUrlLinkFrame::find(ID3v2::Tag *tag, const String &description) // static -{ - FrameList l = tag->frameList("WXXX"); - for(FrameList::ConstIterator it = l.begin(); it != l.end(); ++it) { - UserUrlLinkFrame *f = dynamic_cast<UserUrlLinkFrame *>(*it); - if(f && f->description() == description) - return f; - } - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// UserUrlLinkFrame protected members -//////////////////////////////////////////////////////////////////////////////// - -void UserUrlLinkFrame::parseFields(const ByteVector &data) -{ - if(data.size() < 2) { - debug("A user URL link frame must contain at least 2 bytes."); - return; - } - - int pos = 0; - - d->textEncoding = String::Type(data[0]); - pos += 1; - - if(d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8) { - int offset = data.find(textDelimiter(d->textEncoding), pos); - if(offset < pos) - return; - - d->description = String(data.mid(pos, offset - pos), d->textEncoding); - pos = offset + 1; - } - else { - int len = data.mid(pos).find(textDelimiter(d->textEncoding), 0, 2); - if(len < 0) - return; - - d->description = String(data.mid(pos, len), d->textEncoding); - pos += len + 2; - } - - setUrl(String(data.mid(pos))); -} - -ByteVector UserUrlLinkFrame::renderFields() const -{ - ByteVector v; - - String::Type encoding = checkTextEncoding(d->description, d->textEncoding); - - v.append(char(encoding)); - v.append(d->description.data(encoding)); - v.append(textDelimiter(encoding)); - v.append(url().data(String::Latin1)); - - return v; -} - -UserUrlLinkFrame::UserUrlLinkFrame(const ByteVector &data, Header *h) : - UrlLinkFrame(data, h), - d(new UserUrlLinkFramePrivate()) -{ - parseFields(fieldData(data)); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt deleted file mode 100644 index a69bddd32..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.2.0.txt +++ /dev/null @@ -1,1660 +0,0 @@ - -Informal standard M. Nilsson -Document: id3v2-00.txt 26th March 1998 - - - ID3 tag version 2 - -Status of this document - - This document is an Informal standard and is released so that - implementors could have a set standard before the formal standard is - set. The formal standard will use another version number if not - identical to what is described in this document. The contents in this - document may change for clarifications but never for added or altered - functionallity. - - Distribution of this document is unlimited. - - -Abstract - - The recent gain of popularity for MPEG layer III audio files on the - internet forced a standardised way of storing information about an - audio file within itself to determinate its origin and contents. - - Today the most accepted way to do this is with the so called ID3 tag, - which is simple but very limited and in some cases very unsuitable. - The ID3 tag has very limited space in every field, very limited - numbers of fields, not expandable or upgradeable and is placed at the - end of a the file, which is unsuitable for streaming audio. This draft - is an attempt to answer these issues with a new version of the ID3 - tag. - - -1. Table of contents - - 2. Conventions in this document - 3. ID3v2 overview - 3.1. ID3v2 header - 3.2. ID3v2 frames overview - 4. Declared ID3v2 frames - 4.1. Unique file identifier - 4.2. Text information frames - 4.2.1. Text information frames - details - 4.2.2. User defined text information frame - 4.3. URL link frames - 4.3.1. URL link frames - details - 4.3.2. User defined URL link frame - 4.4. Involved people list - 4.5. Music CD Identifier - 4.6. Event timing codes - 4.7. MPEG location lookup table - 4.8. Synced tempo codes - 4.9. Unsychronised lyrics/text transcription - 4.10. Synchronised lyrics/text - 4.11. Comments - 4.12. Relative volume adjustment - 4.13. Equalisation - 4.14. Reverb - 4.15. Attached picture - 4.16. General encapsulated object - 4.17. Play counter - 4.18. Popularimeter - 4.19. Recommended buffer size - 4.20. Encrypted meta frame - 4.21. Audio encryption - 4.22. Linked information - 5. The 'unsynchronisation scheme' - 6. Copyright - 7. References - 8. Appendix - A. Appendix A - ID3-Tag Specification V1.1 - A.1. Overview - A.2. ID3v1 Implementation - A.3. Genre List - A.4. Track addition - ID3v1.1 - 9. Author's Address - - -2. Conventions in this document - - In the examples, text within "" is a text string exactly as it appears - in a file. Numbers preceded with $ are hexadecimal and numbers - preceded with % are binary. $xx is used to indicate a byte with - unknown content. %x is used to indicate a bit with unknown content. - The most significant bit (MSB) of a byte is called 'bit 7' and the - least significant bit (LSB) is called 'bit 0'. - - A tag is the whole tag described in this document. A frame is a block - of information in the tag. The tag consists of a header, frames and - optional padding. A field is a piece of information; one value, a - string etc. A numeric string is a string that consists of the - characters 0-9 only. - - -3. ID3v2 overview - - The two biggest design goals were to be able to implement ID3v2 - without disturbing old software too much and that ID3v2 should be - expandable. - - The first criterion is met by the simple fact that the MPEG [MPEG] - decoding software uses a syncsignal, embedded in the audiostream, to - 'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid - syncsignal, no software will attempt to play the tag. If, for any - reason, coincidence make a syncsignal appear within the tag it will be - taken care of by the 'unsynchronisation scheme' described in section - 5. - - The second criterion has made a more noticeable impact on the design - of the ID3v2 tag. It is constructed as a container for several - information blocks, called frames, whose format need not be known to - the software that encounters them. At the start of every frame there - is an identifier that explains the frames's format and content, and a - size descriptor that allows software to skip unknown frames. - - If a total revision of the ID3v2 tag should be needed, there is a - version number and a size descriptor in the ID3v2 header. - - The ID3 tag described in this document is mainly targeted to files - encoded with MPEG-2 layer I, MPEG-2 layer II, MPEG-2 layer III and - MPEG-2.5, but may work with other types of encoded audio. - - The bitorder in ID3v2 is most significant bit first (MSB). The - byteorder in multibyte numbers is most significant byte first (e.g. - $12345678 would be encoded $12 34 56 78). - - It is permitted to include padding after all the final frame (at the - end of the ID3 tag), making the size of all the frames together - smaller than the size given in the head of the tag. A possible purpose - of this padding is to allow for adding a few additional frames or - enlarge existing frames within the tag without having to rewrite the - entire file. The value of the padding bytes must be $00. - - -3.1. ID3v2 header - - The ID3v2 tag header, which should be the first information in the - file, is 10 bytes as follows: - - ID3/file identifier "ID3" - ID3 version $02 00 - ID3 flags %xx000000 - ID3 size 4 * %0xxxxxxx - - The first three bytes of the tag are always "ID3" to indicate that - this is an ID3 tag, directly followed by the two version bytes. The - first byte of ID3 version is it's major version, while the second byte - is its revision number. All revisions are backwards compatible while - major versions are not. If software with ID3v2 and below support - should encounter version three or higher it should simply ignore the - whole tag. Version and revision will never be $FF. - - The first bit (bit 7) in the 'ID3 flags' is indicating whether or not - unsynchronisation is used (see section 5 for details); a set bit - indicates usage. - - The second bit (bit 6) is indicating whether or not compression is - used; a set bit indicates usage. Since no compression scheme has been - decided yet, the ID3 decoder (for now) should just ignore the entire - tag if the compression bit is set. - - The ID3 tag size is encoded with four bytes where the first bit (bit - 7) is set to zero in every byte, making a total of 28 bits. The zeroed - bits are ignored, so a 257 bytes long tag is represented as $00 00 02 - 01. - - The ID3 tag size is the size of the complete tag after - unsychronisation, including padding, excluding the header (total tag - size - 10). The reason to use 28 bits (representing up to 256MB) for - size description is that we don't want to run out of space here. - - A ID3v2 tag can be detected with the following pattern: - $49 44 33 yy yy xx zz zz zz zz - Where yy is less than $FF, xx is the 'flags' byte and zz is less than - $80. - - -3.2. ID3v2 frames overview - - The headers of the frames are similar in their construction. They - consist of one three character identifier (capital A-Z and 0-9) and - one three byte size field, making a total of six bytes. The header is - excluded from the size. Identifiers beginning with "X", "Y" and "Z" - are for experimental use and free for everyone to use. Have in mind - that someone else might have used the same identifier as you. All - other identifiers are either used or reserved for future use. - - The three character frame identifier is followed by a three byte size - descriptor, making a total header size of six bytes in every frame. - The size is calculated as framesize excluding frame identifier and - size descriptor (frame size - 6). - - There is no fixed order of the frames' appearance in the tag, although - it is desired that the frames are arranged in order of significance - concerning the recognition of the file. An example of such order: - UFI, MCI, TT2 ... - - A tag must contain at least one frame. A frame must be at least 1 byte - big, excluding the 6-byte header. - - If nothing else is said a string is represented as ISO-8859-1 - [ISO-8859-1] characters in the range $20 - $FF. All unicode strings - [UNICODE] use 16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). All - numeric strings are always encoded as ISO-8859-1. Terminated strings - are terminated with $00 if encoded with ISO-8859-1 and $00 00 if - encoded as unicode. If nothing else is said newline character is - forbidden. In ISO-8859-1 a new line is represented, when allowed, with - $0A only. Frames that allow different types of text encoding have a - text encoding description byte directly after the frame size. If - ISO-8859-1 is used this byte should be $00, if unicode is used it - should be $01. - - The three byte language field is used to describe the language of the - frame's content, according to ISO-639-2 [ISO-639-2]. - - All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt". - - If a frame is longer than it should be, e.g. having more fields than - specified in this document, that indicates that additions to the - frame have been made in a later version of the ID3 standard. This - is reflected by the revision number in the header of the tag. - - -4. Declared ID3v2 frames - - The following frames are declared in this draft. - - 4.19 BUF Recommended buffer size - - 4.17 CNT Play counter - 4.11 COM Comments - 4.21 CRA Audio encryption - 4.20 CRM Encrypted meta frame - - 4.6 ETC Event timing codes - 4.13 EQU Equalization - - 4.16 GEO General encapsulated object - - 4.4 IPL Involved people list - - 4.22 LNK Linked information - - 4.5 MCI Music CD Identifier - 4.7 MLL MPEG location lookup table - - 4.15 PIC Attached picture - 4.18 POP Popularimeter - - 4.14 REV Reverb - 4.12 RVA Relative volume adjustment - - 4.10 SLT Synchronized lyric/text - 4.8 STC Synced tempo codes - - 4.2.1 TAL Album/Movie/Show title - 4.2.1 TBP BPM (Beats Per Minute) - 4.2.1 TCM Composer - 4.2.1 TCO Content type - 4.2.1 TCR Copyright message - 4.2.1 TDA Date - 4.2.1 TDY Playlist delay - 4.2.1 TEN Encoded by - 4.2.1 TFT File type - 4.2.1 TIM Time - 4.2.1 TKE Initial key - 4.2.1 TLA Language(s) - 4.2.1 TLE Length - 4.2.1 TMT Media type - 4.2.1 TOA Original artist(s)/performer(s) - 4.2.1 TOF Original filename - 4.2.1 TOL Original Lyricist(s)/text writer(s) - 4.2.1 TOR Original release year - 4.2.1 TOT Original album/Movie/Show title - 4.2.1 TP1 Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group - 4.2.1 TP2 Band/Orchestra/Accompaniment - 4.2.1 TP3 Conductor/Performer refinement - 4.2.1 TP4 Interpreted, remixed, or otherwise modified by - 4.2.1 TPA Part of a set - 4.2.1 TPB Publisher - 4.2.1 TRC ISRC (International Standard Recording Code) - 4.2.1 TRD Recording dates - 4.2.1 TRK Track number/Position in set - 4.2.1 TSI Size - 4.2.1 TSS Software/hardware and settings used for encoding - 4.2.1 TT1 Content group description - 4.2.1 TT2 Title/Songname/Content description - 4.2.1 TT3 Subtitle/Description refinement - 4.2.1 TXT Lyricist/text writer - 4.2.2 TXX User defined text information frame - 4.2.1 TYE Year - - 4.1 UFI Unique file identifier - 4.9 ULT Unsychronized lyric/text transcription - - 4.3.1 WAF Official audio file webpage - 4.3.1 WAR Official artist/performer webpage - 4.3.1 WAS Official audio source webpage - 4.3.1 WCM Commercial information - 4.3.1 WCP Copyright/Legal information - 4.3.1 WPB Publishers official webpage - 4.3.2 WXX User defined URL link frame - - -4.1. Unique file identifier - - This frame's purpose is to be able to identify the audio file in a - database that may contain more information relevant to the content. - Since standardisation of such a database is beyond this document, all - frames begin with a null-terminated string with a URL [URL] containing - an email address, or a link to a location where an email address can - be found, that belongs to the organisation responsible for this - specific database implementation. Questions regarding the database - should be sent to the indicated email address. The URL should not be - used for the actual database queries. If a $00 is found directly after - the 'Frame size' the whole frame should be ignored, and preferably be - removed. The 'Owner identifier' is then followed by the actual - identifier, which may be up to 64 bytes. There may be more than one - "UFI" frame in a tag, but only one with the same 'Owner identifier'. - - Unique file identifier "UFI" - Frame size $xx xx xx - Owner identifier <textstring> $00 - Identifier <up to 64 bytes binary data> - - -4.2. Text information frames - - The text information frames are the most important frames, containing - information like artist, album and more. There may only be one text - information frame of its kind in an tag. If the textstring is followed - by a termination ($00 (00)) all the following information should be - ignored and not be displayed. All the text information frames have the - following format: - - Text information identifier "T00" - "TZZ" , excluding "TXX", - described in 4.2.2. - Frame size $xx xx xx - Text encoding $xx - Information <textstring> - - -4.2.1. Text information frames - details - - TT1 - The 'Content group description' frame is used if the sound belongs to - a larger category of sounds/music. For example, classical music is - often sorted in different musical sections (e.g. "Piano Concerto", - "Weather - Hurricane"). - - TT2 - The 'Title/Songname/Content description' frame is the actual name of - the piece (e.g. "Adagio", "Hurricane Donna"). - - TT3 - The 'Subtitle/Description refinement' frame is used for information - directly related to the contents title (e.g. "Op. 16" or "Performed - live at wembley"). - - TP1 - The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is - used for the main artist(s). They are seperated with the "/" - character. - - TP2 - The 'Band/Orchestra/Accompaniment' frame is used for additional - information about the performers in the recording. - - TP3 - The 'Conductor' frame is used for the name of the conductor. - - TP4 - The 'Interpreted, remixed, or otherwise modified by' frame contains - more information about the people behind a remix and similar - interpretations of another existing piece. - - TCM - The 'Composer(s)' frame is intended for the name of the composer(s). - They are seperated with the "/" character. - - TXT - The 'Lyricist(s)/text writer(s)' frame is intended for the writer(s) - of the text or lyrics in the recording. They are seperated with the - "/" character. - - TLA - The 'Language(s)' frame should contain the languages of the text or - lyrics in the audio file. The language is represented with three - characters according to ISO-639-2. If more than one language is used - in the text their language codes should follow according to their - usage. - - TCO - The content type, which previously (in ID3v1.1, see appendix A) was - stored as a one byte numeric value only, is now a numeric string. You - may use one or several of the types as ID3v1.1 did or, since the - category list would be impossible to maintain with accurate and up to - date categories, define your own. - References to the ID3v1 genres can be made by, as first byte, enter - "(" followed by a number from the genres list (section A.3.) and - ended with a ")" character. This is optionally followed by a - refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be - made in the same frame, e.g. "(51)(39)". If the refinement should - begin with a "(" character it should be replaced with "((", e.g. "((I - can figure out any genre)" or "(55)((I think...)". The following new - content types is defined in ID3v2 and is implemented in the same way - as the numerig content types, e.g. "(RX)". - - RX Remix - CR Cover - - TAL - The 'Album/Movie/Show title' frame is intended for the title of the - recording(/source of sound) which the audio in the file is taken from. - - TPA - The 'Part of a set' frame is a numeric string that describes which - part of a set the audio came from. This frame is used if the source - described in the "TAL" frame is divided into several mediums, e.g. a - double CD. The value may be extended with a "/" character and a - numeric string containing the total number of parts in the set. E.g. - "1/2". - - TRK - The 'Track number/Position in set' frame is a numeric string - containing the order number of the audio-file on its original - recording. This may be extended with a "/" character and a numeric - string containing the total numer of tracks/elements on the original - recording. E.g. "4/9". - - TRC - The 'ISRC' frame should contian the International Standard Recording - Code [ISRC]. - - TYE - The 'Year' frame is a numeric string with a year of the recording. - This frames is always four characters long (until the year 10000). - - TDA - The 'Date' frame is a numeric string in the DDMM format containing - the date for the recording. This field is always four characters - long. - - TIM - The 'Time' frame is a numeric string in the HHMM format containing - the time for the recording. This field is always four characters - long. - - TRD - The 'Recording dates' frame is a intended to be used as complement to - the "TYE", "TDA" and "TIM" frames. E.g. "4th-7th June, 12th June" in - combination with the "TYE" frame. - - TMT - The 'Media type' frame describes from which media the sound - originated. This may be a textstring or a reference to the predefined - media types found in the list below. References are made within "(" - and ")" and are optionally followed by a text refinement, e.g. "(MC) - with four channels". If a text refinement should begin with a "(" - character it should be replaced with "((" in the same way as in the - "TCO" frame. Predefined refinements is appended after the media type, - e.g. "(CD/S)" or "(VID/PAL/VHS)". - - DIG Other digital media - /A Analog transfer from media - - ANA Other analog media - /WAC Wax cylinder - /8CA 8-track tape cassette - - CD CD - /A Analog transfer from media - /DD DDD - /AD ADD - /AA AAD - - LD Laserdisc - /A Analog transfer from media - - TT Turntable records - /33 33.33 rpm - /45 45 rpm - /71 71.29 rpm - /76 76.59 rpm - /78 78.26 rpm - /80 80 rpm - - MD MiniDisc - /A Analog transfer from media - - DAT DAT - /A Analog transfer from media - /1 standard, 48 kHz/16 bits, linear - /2 mode 2, 32 kHz/16 bits, linear - /3 mode 3, 32 kHz/12 bits, nonlinear, low speed - /4 mode 4, 32 kHz/12 bits, 4 channels - /5 mode 5, 44.1 kHz/16 bits, linear - /6 mode 6, 44.1 kHz/16 bits, 'wide track' play - - DCC DCC - /A Analog transfer from media - - DVD DVD - /A Analog transfer from media - - TV Television - /PAL PAL - /NTSC NTSC - /SECAM SECAM - - VID Video - /PAL PAL - /NTSC NTSC - /SECAM SECAM - /VHS VHS - /SVHS S-VHS - /BETA BETAMAX - - RAD Radio - /FM FM - /AM AM - /LW LW - /MW MW - - TEL Telephone - /I ISDN - - MC MC (normal cassette) - /4 4.75 cm/s (normal speed for a two sided cassette) - /9 9.5 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - REE Reel - /9 9.5 cm/s - /19 19 cm/s - /38 38 cm/s - /76 76 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - TFT - The 'File type' frame indicates which type of audio this tag defines. - The following type and refinements are defined: - - MPG MPEG Audio - /1 MPEG 2 layer I - /2 MPEG 2 layer II - /3 MPEG 2 layer III - /2.5 MPEG 2.5 - /AAC Advanced audio compression - - but other types may be used, not for these types though. This is used - in a similar way to the predefined types in the "TMT" frame, but - without parenthesis. If this frame is not present audio type is - assumed to be "MPG". - - TBP - BPM is short for beats per minute, and is easily computed by - dividing the number of beats in a musical piece with its length. To - get a more accurate result, do the BPM calculation on the main-part - only. To acquire best result measure the time between each beat and - calculate individual BPM for each beat and use the median value as - result. BPM is an integer and represented as a numerical string. - - TCR - The 'Copyright message' frame, which must begin with a year and a - space character (making five characters), is intended for the - copyright holder of the original sound, not the audio file itself. The - absence of this frame means only that the copyright information is - unavailable or has been removed, and must not be interpreted to mean - that the sound is public domain. Every time this field is displayed - the field must be preceded with "Copyright " (C) " ", where (C) is one - character showing a C in a circle. - - TPB - The 'Publisher' frame simply contains the name of the label or - publisher. - - TEN - The 'Encoded by' frame contains the name of the person or - organisation that encoded the audio file. This field may contain a - copyright message, if the audio file also is copyrighted by the - encoder. - - TSS - The 'Software/hardware and settings used for encoding' frame - includes the used audio encoder and its settings when the file was - encoded. Hardware refers to hardware encoders, not the computer on - which a program was run. - - TOF - The 'Original filename' frame contains the preferred filename for the - file, since some media doesn't allow the desired length of the - filename. The filename is case sensitive and includes its suffix. - - TLE - The 'Length' frame contains the length of the audiofile in - milliseconds, represented as a numeric string. - - TSI - The 'Size' frame contains the size of the audiofile in bytes - excluding the tag, represented as a numeric string. - - TDY - The 'Playlist delay' defines the numbers of milliseconds of silence - between every song in a playlist. The player should use the "ETC" - frame, if present, to skip initial silence and silence at the end of - the audio to match the 'Playlist delay' time. The time is represented - as a numeric string. - - TKE - The 'Initial key' frame contains the musical key in which the sound - starts. It is represented as a string with a maximum length of three - characters. The ground keys are represented with "A","B","C","D","E", - "F" and "G" and halfkeys represented with "b" and "#". Minor is - represented as "m". Example "Cbm". Off key is represented with an "o" - only. - - TOT - The 'Original album/Movie/Show title' frame is intended for the title - of the original recording(/source of sound), if for example the music - in the file should be a cover of a previously released song. - - TOA - The 'Original artist(s)/performer(s)' frame is intended for the - performer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The - performers are seperated with the "/" character. - - TOL - The 'Original Lyricist(s)/text writer(s)' frame is intended for the - text writer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The text - writers are seperated with the "/" character. - - TOR - The 'Original release year' frame is intended for the year when the - original recording, if for example the music in the file should be a - cover of a previously released song, was released. The field is - formatted as in the "TDY" frame. - - -4.2.2. User defined text information frame - - This frame is intended for one-string text information concerning the - audiofile in a similar way to the other "T"xx frames. The frame body - consists of a description of the string, represented as a terminated - string, followed by the actual string. There may be more than one - "TXX" frame in each tag, but only one with the same description. - - User defined... "TXX" - Frame size $xx xx xx - Text encoding $xx - Description <textstring> $00 (00) - Value <textstring> - - -4.3. URL link frames - - With these frames dynamic data such as webpages with touring - information, price information or plain ordinary news can be added to - the tag. There may only be one URL [URL] link frame of its kind in an - tag, except when stated otherwise in the frame description. If the - textstring is followed by a termination ($00 (00)) all the following - information should be ignored and not be displayed. All URL link - frames have the following format: - - URL link frame "W00" - "WZZ" , excluding "WXX" - (described in 4.3.2.) - Frame size $xx xx xx - URL <textstring> - - -4.3.1. URL link frames - details - - WAF - The 'Official audio file webpage' frame is a URL pointing at a file - specific webpage. - - WAR - The 'Official artist/performer webpage' frame is a URL pointing at - the artists official webpage. There may be more than one "WAR" frame - in a tag if the audio contains more than one performer. - - WAS - The 'Official audio source webpage' frame is a URL pointing at the - official webpage for the source of the audio file, e.g. a movie. - - WCM - The 'Commercial information' frame is a URL pointing at a webpage - with information such as where the album can be bought. There may be - more than one "WCM" frame in a tag. - - WCP - The 'Copyright/Legal information' frame is a URL pointing at a - webpage where the terms of use and ownership of the file is described. - - WPB - The 'Publishers official webpage' frame is a URL pointing at the - official wepage for the publisher. - - -4.3.2. User defined URL link frame - - This frame is intended for URL [URL] links concerning the audiofile in - a similar way to the other "W"xx frames. The frame body consists of a - description of the string, represented as a terminated string, - followed by the actual URL. The URL is always encoded with ISO-8859-1 - [ISO-8859-1]. There may be more than one "WXX" frame in each tag, but - only one with the same description. - - User defined... "WXX" - Frame size $xx xx xx - Text encoding $xx - Description <textstring> $00 (00) - URL <textstring> - - -4.4. Involved people list - - Since there might be a lot of people contributing to an audio file in - various ways, such as musicians and technicians, the 'Text - information frames' are often insufficient to list everyone involved - in a project. The 'Involved people list' is a frame containing the - names of those involved, and how they were involved. The body simply - contains a terminated string with the involvement directly followed by - a terminated string with the involvee followed by a new involvement - and so on. There may only be one "IPL" frame in each tag. - - Involved people list "IPL" - Frame size $xx xx xx - Text encoding $xx - People list strings <textstrings> - - -4.5. Music CD Identifier - - This frame is intended for music that comes from a CD, so that the CD - can be identified in databases such as the CDDB [CDDB]. The frame - consists of a binary dump of the Table Of Contents, TOC, from the CD, - which is a header of 4 bytes and then 8 bytes/track on the CD making a - maximum of 804 bytes. This frame requires a present and valid "TRK" - frame. There may only be one "MCI" frame in each tag. - - Music CD identifier "MCI" - Frame size $xx xx xx - CD TOC <binary data> - - -4.6. Event timing codes - - This frame allows synchronisation with key events in a song or sound. - The head is: - - Event timing codes "ETC" - Frame size $xx xx xx - Time stamp format $xx - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - Followed by a list of key events in the following format: - - Type of event $xx - Time stamp $xx (xx ...) - - The 'Time stamp' is set to zero if directly at the beginning of the - sound or after the previous event. All events should be sorted in - chronological order. The type of event is as follows: - - $00 padding (has no meaning) - $01 end of initial silence - $02 intro start - $03 mainpart start - $04 outro start - $05 outro end - $06 verse begins - $07 refrain begins - $08 interlude - $09 theme start - $0A variation - $0B key change - $0C time change - $0D unwanted noise (Snap, Crackle & Pop) - - $0E-$DF reserved for future use - - $E0-$EF not predefined sync 0-F - - $F0-$FC reserved for future use - - $FD audio end (start of silence) - $FE audio file ends - $FF one more byte of events follows (all the following bytes with - the value $FF have the same function) - - The 'Not predefined sync's ($E0-EF) are for user events. You might - want to synchronise your music to something, like setting of an - explosion on-stage, turning on your screensaver etc. - - There may only be one "ETC" frame in each tag. - - -4.7. MPEG location lookup table - - To increase performance and accuracy of jumps within a MPEG [MPEG] - audio file, frames with timecodes in different locations in the file - might be useful. The ID3 frame includes references that the software - can use to calculate positions in the file. After the frame header is - a descriptor of how much the 'frame counter' should increase for every - reference. If this value is two then the first reference points out - the second frame, the 2nd reference the 4th frame, the 3rd reference - the 6th frame etc. In a similar way the 'bytes between reference' and - 'milliseconds between reference' points out bytes and milliseconds - respectively. - - Each reference consists of two parts; a certain number of bits, as - defined in 'bits for bytes deviation', that describes the difference - between what is said in 'bytes between reference' and the reality and - a certain number of bits, as defined in 'bits for milliseconds - deviation', that describes the difference between what is said in - 'milliseconds between reference' and the reality. The number of bits - in every reference, i.e. 'bits for bytes deviation'+'bits for - milliseconds deviation', must be a multiple of four. There may only be - one "MLL" frame in each tag. - - Location lookup table "MLL" - ID3 frame size $xx xx xx - MPEG frames between reference $xx xx - Bytes between reference $xx xx xx - Milliseconds between reference $xx xx xx - Bits for bytes deviation $xx - Bits for milliseconds dev. $xx - - Then for every reference the following data is included; - - Deviation in bytes %xxx.... - Deviation in milliseconds %xxx.... - - -4.8. Synced tempo codes - - For a more accurate description of the tempo of a musical piece this - frame might be used. After the header follows one byte describing - which time stamp format should be used. Then follows one or more tempo - codes. Each tempo code consists of one tempo part and one time part. - The tempo is in BPM described with one or two bytes. If the first byte - has the value $FF, one more byte follows, which is added to the first - giving a range from 2 - 510 BPM, since $00 and $01 is reserved. $00 is - used to describe a beat-free time period, which is not the same as a - music-free time period. $01 is used to indicate one single beat-stroke - followed by a beat-free period. - - The tempo descriptor is followed by a time stamp. Every time the tempo - in the music changes, a tempo descriptor may indicate this for the - player. All tempo descriptors should be sorted in chronological order. - The first beat-stroke in a time-period is at the same time as the beat - description occurs. There may only be one "STC" frame in each tag. - - Synced tempo codes "STC" - Frame size $xx xx xx - Time stamp format $xx - Tempo data <binary data> - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - -4.9. Unsychronised lyrics/text transcription - - This frame contains the lyrics of the song or a text transcription of - other vocal activities. The head includes an encoding descriptor and - a content descriptor. The body consists of the actual text. The - 'Content descriptor' is a terminated string. If no descriptor is - entered, 'Content descriptor' is $00 (00) only. Newline characters - are allowed in the text. Maximum length for the descriptor is 64 - bytes. There may be more than one lyrics/text frame in each tag, but - only one with the same language and content descriptor. - - Unsynced lyrics/text "ULT" - Frame size $xx xx xx - Text encoding $xx - Language $xx xx xx - Content descriptor <textstring> $00 (00) - Lyrics/text <textstring> - - -4.10. Synchronised lyrics/text - - This is another way of incorporating the words, said or sung lyrics, - in the audio file as text, this time, however, in sync with the audio. - It might also be used to describing events e.g. occurring on a stage - or on the screen in sync with the audio. The header includes a content - descriptor, represented with as terminated textstring. If no - descriptor is entered, 'Content descriptor' is $00 (00) only. - - Synced lyrics/text "SLT" - Frame size $xx xx xx - Text encoding $xx - Language $xx xx xx - Time stamp format $xx - Content type $xx - Content descriptor <textstring> $00 (00) - - - Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00 - is sync identifier. - $01 Unicode [UNICODE] character set is used => $00 00 is - sync identifier. - - Content type: $00 is other - $01 is lyrics - $02 is text transcription - $03 is movement/part name (e.g. "Adagio") - $04 is events (e.g. "Don Quijote enters the stage") - $05 is chord (e.g. "Bb F Fsus") - - Time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - The text that follows the frame header differs from that of the - unsynchronised lyrics/text transcription in one major way. Each - syllable (or whatever size of text is considered to be convenient by - the encoder) is a null terminated string followed by a time stamp - denoting where in the sound file it belongs. Each sync thus has the - following structure: - - Terminated text to be synced (typically a syllable) - Sync identifier (terminator to above string) $00 (00) - Time stamp $xx (xx ...) - - The 'time stamp' is set to zero or the whole sync is omitted if - located directly at the beginning of the sound. All time stamps should - be sorted in chronological order. The sync can be considered as a - validator of the subsequent string. - - Newline characters are allowed in all "SLT" frames and should be used - after every entry (name, event etc.) in a frame with the content type - $03 - $04. - - A few considerations regarding whitespace characters: Whitespace - separating words should mark the beginning of a new word, thus - occurring in front of the first syllable of a new word. This is also - valid for new line characters. A syllable followed by a comma should - not be broken apart with a sync (both the syllable and the comma - should be before the sync). - - An example: The "ULT" passage - - "Strangers in the night" $0A "Exchanging glances" - - would be "SLT" encoded as: - - "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx - " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx - xx "glan" $00 xx xx "ces" $00 xx xx - - There may be more than one "SLT" frame in each tag, but only one with - the same language and content descriptor. - - -4.11. Comments - - This frame replaces the old 30-character comment field in ID3v1. It - consists of a frame head followed by encoding, language and content - descriptors and is ended with the actual comment as a text string. - Newline characters are allowed in the comment text string. There may - be more than one comment frame in each tag, but only one with the same - language and content descriptor. - - Comment "COM" - Frame size $xx xx xx - Text encoding $xx - Language $xx xx xx - Short content description <textstring> $00 (00) - The actual text <textstring> - - -4.12. Relative volume adjustment - - This is a more subjective function than the previous ones. It allows - the user to say how much he wants to increase/decrease the volume on - each channel while the file is played. The purpose is to be able to - align all files to a reference volume, so that you don't have to - change the volume constantly. This frame may also be used to balance - adjust the audio. If the volume peak levels are known then this could - be described with the 'Peak volume right' and 'Peak volume left' - field. If Peakvolume is not known these fields could be left zeroed - or completely omitted. There may only be one "RVA" frame in each - tag. - - Relative volume adjustment "RVA" - Frame size $xx xx xx - Increment/decrement %000000xx - Bits used for volume descr. $xx - Relative volume change, right $xx xx (xx ...) - Relative volume change, left $xx xx (xx ...) - Peak volume right $xx xx (xx ...) - Peak volume left $xx xx (xx ...) - - In the increment/decrement field bit 0 is used to indicate the right - channel and bit 1 is used to indicate the left channel. 1 is - increment and 0 is decrement. - - The 'bits used for volume description' field is normally $10 (16 bits) - for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not - be $00. The volume is always represented with whole bytes, padded in - the beginning (highest bits) when 'bits used for volume description' - is not a multiple of eight. - - -4.13. Equalisation - - This is another subjective, alignment frame. It allows the user to - predefine an equalisation curve within the audio file. There may only - be one "EQU" frame in each tag. - - Equalisation "EQU" - Frame size $xx xx xx - Adjustment bits $xx - - The 'adjustment bits' field defines the number of bits used for - representation of the adjustment. This is normally $10 (16 bits) for - MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be - $00. - - This is followed by 2 bytes + ('adjustment bits' rounded up to the - nearest byte) for every equalisation band in the following format, - giving a frequency range of 0 - 32767Hz: - - Increment/decrement %x (MSB of the Frequency) - Frequency (lower 15 bits) - Adjustment $xx (xx ...) - - The increment/decrement bit is 1 for increment and 0 for decrement. - The equalisation bands should be ordered increasingly with reference - to frequency. All frequencies don't have to be declared. Adjustments - with the value $00 should be omitted. A frequency should only be - described once in the frame. - - -4.14. Reverb - - Yet another subjective one. You may here adjust echoes of different - kinds. Reverb left/right is the delay between every bounce in ms. - Reverb bounces left/right is the number of bounces that should be - made. $FF equals an infinite number of bounces. Feedback is the amount - of volume that should be returned to the next echo bounce. $00 is 0%, - $FF is 100%. If this value were $7F, there would be 50% volume - reduction on the first bounce, yet 50% on the second and so on. Left - to left means the sound from the left bounce to be played in the left - speaker, while left to right means sound from the left bounce to be - played in the right speaker. - - 'Premix left to right' is the amount of left sound to be mixed in the - right before any reverb is applied, where $00 id 0% and $FF is 100%. - 'Premix right to left' does the same thing, but right to left. Setting - both premix to $FF would result in a mono output (if the reverb is - applied symmetric). There may only be one "REV" frame in each tag. - - Reverb settings "REV" - Frame size $00 00 0C - Reverb left (ms) $xx xx - Reverb right (ms) $xx xx - Reverb bounces, left $xx - Reverb bounces, right $xx - Reverb feedback, left to left $xx - Reverb feedback, left to right $xx - Reverb feedback, right to right $xx - Reverb feedback, right to left $xx - Premix left to right $xx - Premix right to left $xx - - -4.15. Attached picture - - This frame contains a picture directly related to the audio file. - Image format is preferably "PNG" [PNG] or "JPG" [JFIF]. Description - is a short description of the picture, represented as a terminated - textstring. The description has a maximum length of 64 characters, - but may be empty. There may be several pictures attached to one file, - each in their individual "PIC" frame, but only one with the same - content descriptor. There may only be one picture with the picture - type declared as picture type $01 and $02 respectively. There is a - possibility to put only a link to the image file by using the 'image - format' "-->" and having a complete URL [URL] instead of picture data. - The use of linked files should however be used restrictively since - there is the risk of separation of files. - - Attached picture "PIC" - Frame size $xx xx xx - Text encoding $xx - Image format $xx xx xx - Picture type $xx - Description <textstring> $00 (00) - Picture data <binary data> - - - Picture type: $00 Other - $01 32x32 pixels 'file icon' (PNG only) - $02 Other file icon - $03 Cover (front) - $04 Cover (back) - $05 Leaflet page - $06 Media (e.g. lable side of CD) - $07 Lead artist/lead performer/soloist - $08 Artist/performer - $09 Conductor - $0A Band/Orchestra - $0B Composer - $0C Lyricist/text writer - $0D Recording Location - $0E During recording - $0F During performance - $10 Movie/video screen capture - $11 A bright coloured fish - $12 Illustration - $13 Band/artist logotype - $14 Publisher/Studio logotype - - -4.16. General encapsulated object - - In this frame any type of file can be encapsulated. After the header, - 'Frame size' and 'Encoding' follows 'MIME type' [MIME] and 'Filename' - for the encapsulated object, both represented as terminated strings - encoded with ISO 8859-1 [ISO-8859-1]. The filename is case sensitive. - Then follows a content description as terminated string, encoded as - 'Encoding'. The last thing in the frame is the actual object. The - first two strings may be omitted, leaving only their terminations. - MIME type is always an ISO-8859-1 text string. There may be more than - one "GEO" frame in each tag, but only one with the same content - descriptor. - - General encapsulated object "GEO" - Frame size $xx xx xx - Text encoding $xx - MIME type <textstring> $00 - Filename <textstring> $00 (00) - Content description <textstring> $00 (00) - Encapsulated object <binary data> - - -4.17. Play counter - - This is simply a counter of the number of times a file has been - played. The value is increased by one every time the file begins to - play. There may only be one "CNT" frame in each tag. When the counter - reaches all one's, one byte is inserted in front of the counter thus - making the counter eight bits bigger. The counter must be at least - 32-bits long to begin with. - - Play counter "CNT" - Frame size $xx xx xx - Counter $xx xx xx xx (xx ...) - - -4.18. Popularimeter - - The purpose of this frame is to specify how good an audio file is. - Many interesting applications could be found to this frame such as a - playlist that features better audiofiles more often than others or it - could be used to profile a persons taste and find other 'good' files - by comparing people's profiles. The frame is very simple. It contains - the email address to the user, one rating byte and a four byte play - counter, intended to be increased with one for every time the file is - played. The email is a terminated string. The rating is 1-255 where - 1 is worst and 255 is best. 0 is unknown. If no personal counter is - wanted it may be omitted. When the counter reaches all one's, one - byte is inserted in front of the counter thus making the counter - eight bits bigger in the same away as the play counter ("CNT"). - There may be more than one "POP" frame in each tag, but only one with - the same email address. - - Popularimeter "POP" - Frame size $xx xx xx - Email to user <textstring> $00 - Rating $xx - Counter $xx xx xx xx (xx ...) - - -4.19. Recommended buffer size - - Sometimes the server from which a audio file is streamed is aware of - transmission or coding problems resulting in interruptions in the - audio stream. In these cases, the size of the buffer can be - recommended by the server using this frame. If the 'embedded info - flag' is true (1) then this indicates that an ID3 tag with the - maximum size described in 'Buffer size' may occur in the audiostream. - In such case the tag should reside between two MPEG [MPEG] frames, if - the audio is MPEG encoded. If the position of the next tag is known, - 'offset to next tag' may be used. The offset is calculated from the - end of tag in which this frame resides to the first byte of the header - in the next. This field may be omitted. Embedded tags is currently not - recommended since this could render unpredictable behaviour from - present software/hardware. The 'Buffer size' should be kept to a - minimum. There may only be one "BUF" frame in each tag. - - Recommended buffer size "BUF" - Frame size $xx xx xx - Buffer size $xx xx xx - Embedded info flag %0000000x - Offset to next tag $xx xx xx xx - - -4.20. Encrypted meta frame - - This frame contains one or more encrypted frames. This enables - protection of copyrighted information such as pictures and text, that - people might want to pay extra for. Since standardisation of such an - encryption scheme is beyond this document, all "CRM" frames begin with - a terminated string with a URL [URL] containing an email address, or a - link to a location where an email adress can be found, that belongs to - the organisation responsible for this specific encrypted meta frame. - - Questions regarding the encrypted frame should be sent to the - indicated email address. If a $00 is found directly after the 'Frame - size', the whole frame should be ignored, and preferably be removed. - The 'Owner identifier' is then followed by a short content description - and explanation as to why it's encrypted. After the - 'content/explanation' description, the actual encrypted block follows. - - When an ID3v2 decoder encounters a "CRM" frame, it should send the - datablock to the 'plugin' with the corresponding 'owner identifier' - and expect to receive either a datablock with one or several ID3v2 - frames after each other or an error. There may be more than one "CRM" - frames in a tag, but only one with the same 'owner identifier'. - - Encrypted meta frame "CRM" - Frame size $xx xx xx - Owner identifier <textstring> $00 (00) - Content/explanation <textstring> $00 (00) - Encrypted datablock <binary data> - - -4.21. Audio encryption - - This frame indicates if the actual audio stream is encrypted, and by - whom. Since standardisation of such encrypion scheme is beyond this - document, all "CRA" frames begin with a terminated string with a - URL containing an email address, or a link to a location where an - email address can be found, that belongs to the organisation - responsible for this specific encrypted audio file. Questions - regarding the encrypted audio should be sent to the email address - specified. If a $00 is found directly after the 'Frame size' and the - audiofile indeed is encrypted, the whole file may be considered - useless. - - After the 'Owner identifier', a pointer to an unencrypted part of the - audio can be specified. The 'Preview start' and 'Preview length' is - described in frames. If no part is unencrypted, these fields should be - left zeroed. After the 'preview length' field follows optionally a - datablock required for decryption of the audio. There may be more than - one "CRA" frames in a tag, but only one with the same 'Owner - identifier'. - - Audio encryption "CRA" - Frame size $xx xx xx - Owner identifier <textstring> $00 (00) - Preview start $xx xx - Preview length $xx xx - Encryption info <binary data> - - -4.22. Linked information - - To keep space waste as low as possible this frame may be used to link - information from another ID3v2 tag that might reside in another audio - file or alone in a binary file. It is recommended that this method is - only used when the files are stored on a CD-ROM or other circumstances - when the risk of file seperation is low. The frame contains a frame - identifier, which is the frame that should be linked into this tag, a - URL [URL] field, where a reference to the file where the frame is - given, and additional ID data, if needed. Data should be retrieved - from the first tag found in the file to which this link points. There - may be more than one "LNK" frame in a tag, but only one with the same - contents. A linked frame is to be considered as part of the tag and - has the same restrictions as if it was a physical part of the tag - (i.e. only one "REV" frame allowed, whether it's linked or not). - - Linked information "LNK" - Frame size $xx xx xx - Frame identifier $xx xx xx - URL <textstring> $00 (00) - Additional ID data <textstring(s)> - - Frames that may be linked and need no additional data are "IPL", - "MCI", "ETC", "LLT", "STC", "RVA", "EQU", "REV", "BUF", the text - information frames and the URL link frames. - - The "TXX", "PIC", "GEO", "CRM" and "CRA" frames may be linked with the - content descriptor as additional ID data. - - The "COM", "SLT" and "ULT" frames may be linked with three bytes of - language descriptor directly followed by a content descriptor as - additional ID data. - - -5. The 'unsynchronisation scheme' - - The only purpose of the 'unsychronisation scheme' is to make the ID3v2 - tag as compatible as possible with existing software. There is no use - in 'unsynchronising' tags if the file is only to be processed by new - software. Unsynchronisation may only be made with MPEG 2 layer I, II - and III and MPEG 2.5 files. - - Whenever a false synchronisation is found within the tag, one zeroed - byte is inserted after the first false synchronisation byte. The - format of a correct sync that should be altered by ID3 encoders is as - follows: - - %11111111 111xxxxx - - And should be replaced with: - - %11111111 00000000 111xxxxx - - This has the side effect that all $FF 00 combinations have to be - altered, so they won't be affected by the decoding process. Therefore - all the $FF 00 combinations have to be replaced with the $FF 00 00 - combination during the unsynchonisation. - - To indicate usage of the unsynchronisation, the first bit in 'ID3 - flags' should be set. This bit should only be set if the tag - contained a, now corrected, false synchronisation. The bit should - only be clear if the tag does not contain any false synchronisations. - - Do bear in mind, that if a compression scheme is used by the encoder, - the unsyncronisation scheme should be applied *afterwards*. When - decoding a compressed, 'unsyncronised' file, the 'unsyncronisation - scheme' should be parsed first, compression afterwards. - - -6. Copyright - - Copyright (C) Martin Nilsson 1998. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE - INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -7. References - - [CDDB] Compact Disc Data Base - - <url:http://www.cddb.com> - - [ISO-639-2] ISO/FDIS 639-2. - Codes for the representation of names of languages, Part 2: Alpha-3 - code. Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-8859-1] ISO/IEC DIS 8859-1. - 8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2 - - [ISRC] ISO 3901:1986 - International Standard Recording Code (ISRC). - Technical committee / subcommittee: TC 46 / SC 9 - - [JFIF] JPEG File Interchange Format, version 1.02 - - <url:http://www.w3.org/Graphics/JPEG/jfif.txt> - - [MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part One: Format of Internet Message Bodies", - RFC 2045, November 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc2045.txt> - - [MPEG] ISO/IEC 11172-3:1993. - Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - Generic coding of moving pictures and associated audio information, - Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995) - - - [PNG] Portable Network Graphics, version 1.0 - - <url:http://www.w3.org/TR/REC-png-multi.html> - - [UNICODE] ISO/IEC 10646-1:1993. - Universal Multiple-Octet Coded Character Set (UCS), Part 1: - Architecture and Basic Multilingual Plane. Technical committee - / subcommittee: JTC 1 / SC 2 - - <url:http://www.unicode.org> - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource - Locators (URL).", RFC 1738, December 1994. - - <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt> - - -8. Appendix - - -A. Appendix A - ID3-Tag Specification V1.1 - - ID3-Tag Specification V1.1 (12 dec 1997) by Michael Mutschler - <amiga2@info2.rus.uni-stuttgart.de>, edited for space and clarity - reasons. - - -A.1. Overview - - The ID3-Tag is an information field for MPEG Layer 3 audio files. - Since a standalone MP3 doesn't provide a method of storing other - information than those directly needed for replay reasons, the - ID3-tag was invented by Eric Kemp in 1996. - - A revision from ID3v1 to ID3v1.1 was made by Michael Mutschler to - support track number information is described in A.4. - - -A.2. ID3v1 Implementation - - The Information is stored in the last 128 bytes of an MP3. The Tag - has got the following fields, and the offsets given here, are from - 0-127. - - Field Length Offsets - Tag 3 0-2 - Songname 30 3-32 - Artist 30 33-62 - Album 30 63-92 - Year 4 93-96 - Comment 30 97-126 - Genre 1 127 - - - The string-fields contain ASCII-data, coded in ISO-Latin 1 codepage. - Strings which are smaller than the field length are padded with zero- - bytes. - - Tag: The tag is valid if this field contains the string "TAG". This - has to be uppercase! - - Songname: This field contains the title of the MP3 (string as - above). - - Artist: This field contains the artist of the MP3 (string as above). - - Album: this field contains the album where the MP3 comes from - (string as above). - - Year: this field contains the year when this song has originally - been released (string as above). - - Comment: this field contains a comment for the MP3 (string as - above). Revision to this field has been made in ID3v1.1. See - A.4. - - Genre: this byte contains the offset of a genre in a predefined - list the byte is treated as an unsigned byte. The offset is - starting from 0. See A.3. - - -A.3. Genre List - - The following genres is defined in ID3v1 - - 0.Blues - 1.Classic Rock - 2.Country - 3.Dance - 4.Disco - 5.Funk - 6.Grunge - 7.Hip-Hop - 8.Jazz - 9.Metal - 10.New Age - 11.Oldies - 12.Other - 13.Pop - 14.R&B - 15.Rap - 16.Reggae - 17.Rock - 18.Techno - 19.Industrial - 20.Alternative - 21.Ska - 22.Death Metal - 23.Pranks - 24.Soundtrack - 25.Euro-Techno - 26.Ambient - 27.Trip-Hop - 28.Vocal - 29.Jazz+Funk - 30.Fusion - 31.Trance - 32.Classical - 33.Instrumental - 34.Acid - 35.House - 36.Game - 37.Sound Clip - 38.Gospel - 39.Noise - 40.AlternRock - 41.Bass - 42.Soul - 43.Punk - 44.Space - 45.Meditative - 46.Instrumental Pop - 47.Instrumental Rock - 48.Ethnic - 49.Gothic - 50.Darkwave - 51.Techno-Industrial - 52.Electronic - 53.Pop-Folk - 54.Eurodance - 55.Dream - 56.Southern Rock - 57.Comedy - 58.Cult - 59.Gangsta - 60.Top 40 - 61.Christian Rap - 62.Pop/Funk - 63.Jungle - 64.Native American - 65.Cabaret - 66.New Wave - 67.Psychadelic - 68.Rave - 69.Showtunes - 70.Trailer - 71.Lo-Fi - 72.Tribal - 73.Acid Punk - 74.Acid Jazz - 75.Polka - 76.Retro - 77.Musical - 78.Rock & Roll - 79.Hard Rock - - The following genres are Winamp extensions - - 80.Folk - 81.Folk-Rock - 82.National Folk - 83.Swing - 84.Fast Fusion - 85.Bebob - 86.Latin - 87.Revival - 88.Celtic - 89.Bluegrass - 90.Avantgarde - 91.Gothic Rock - 92.Progressive Rock - 93.Psychedelic Rock - 94.Symphonic Rock - 95.Slow Rock - 96.Big Band - 97.Chorus - 98.Easy Listening - 99.Acoustic - 100.Humour - 101.Speech - 102.Chanson - 103.Opera - 104.Chamber Music - 105.Sonata - 106.Symphony - 107.Booty Bass - 108.Primus - 109.Porn Groove - 110.Satire - 111.Slow Jam - 112.Club - 113.Tango - 114.Samba - 115.Folklore - 116.Ballad - 117.Power Ballad - 118.Rhythmic Soul - 119.Freestyle - 120.Duet - 121.Punk Rock - 122.Drum Solo - 123.A capella - 124.Euro-House - 125.Dance Hall - - -A.4. Track addition - ID3v1.1 - - In ID3v1.1, Michael Mutschler revised the specification of the - comment field in order to implement the track number. The new format - of the comment field is a 28 character string followed by a mandatory - null ($00) character and the original album tracknumber stored as an - unsigned byte-size integer. In such cases where the 29th byte is not - the null character or when the 30th is a null character, the - tracknumber is to be considered undefined. - - -9. Author's Address - - Martin Nilsson - Rydsvägen 246 C. 30 - S-584 34 Linköping - Sweden - - Email: nilsson@id3.org - - Co-authors: - - Johan Sundström Email: johan@id3.org - - diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt deleted file mode 100644 index b4ed763ee..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.3.0.txt +++ /dev/null @@ -1,2022 +0,0 @@ -Informal standard M. Nilsson -Document: id3v2.3.0.txt 3rd February 1999 - - - ID3 tag version 2.3.0 - -Status of this document - - This document is an informal standard and replaces the ID3v2.2.0 - standard [ID3v2]. The informal standard is released so that - implementors could have a set standard before a formal standard is - set. The formal standard will use another version or revision number - if not identical to what is described in this document. The contents - in this document may change for clarifications but never for added or - altered functionallity. - - Distribution of this document is unlimited. - - -Abstract - - This document describes the ID3v2.3.0, which is a more developed - version of the ID3v2 informal standard [ID3v2] (version 2.2.0), - evolved from the ID3 tagging system. The ID3v2 offers a flexible way - of storing information about an audio file within itself to determine - its origin and contents. The information may be technical - information, such as equalisation curves, as well as related meta - information, such as title, performer, copyright etc. - - -1. Table of contents - - 2. Conventions in this document - 3. ID3v2 overview - 3.1. ID3v2 header - 3.2. ID3v2 extended header - 3.3. ID3v2 frames overview - 3.3.1. Frame header flags - 3.3.2. Default flags - 4. Declared ID3v2 frames - 4.1. Unique file identifier - 4.2. Text information frames - 4.2.1. Text information frames - details - 4.2.2. User defined text information frame - 4.3. URL link frames - 4.3.1. URL link frames - details - 4.3.2. User defined URL link frame - 4.4. Involved people list - 4.5. Music CD Identifier - 4.6. Event timing codes - 4.7. MPEG location lookup table - 4.8. Synced tempo codes - 4.9. Unsychronised lyrics/text transcription - 4.10. Synchronised lyrics/text - 4.11. Comments - 4.12. Relative volume adjustment - 4.13. Equalisation - 4.14. Reverb - 4.15. Attached picture - 4.16. General encapsulated object - 4.17. Play counter - 4.18. Popularimeter - 4.19. Recommended buffer size - 4.20. Audio encryption - 4.21. Linked information - 4.22. Position synchronisation frame - 4.23. Terms of use - 4.24. Ownership frame - 4.25. Commercial frame - 4.26. Encryption method registration - 4.27. Group identification registration - 4.28. Private frame - 5. The 'unsynchronisation scheme' - 6. Copyright - 7. References - 8. Appendix - A. Appendix A - Genre List from ID3v1 - 9. Author's Address - - -2. Conventions in this document - - In the examples, text within "" is a text string exactly as it - appears in a file. Numbers preceded with $ are hexadecimal and - numbers preceded with % are binary. $xx is used to indicate a byte - with unknown content. %x is used to indicate a bit with unknown - content. The most significant bit (MSB) of a byte is called 'bit 7' - and the least significant bit (LSB) is called 'bit 0'. - - A tag is the whole tag described in this document. A frame is a block - of information in the tag. The tag consists of a header, frames and - optional padding. A field is a piece of information; one value, a - string etc. A numeric string is a string that consists of the - characters 0-9 only. - - -3. ID3v2 overview - - The two biggest design goals were to be able to implement ID3v2 - without disturbing old software too much and that ID3v2 should be - as flexible and expandable as possible. - - The first criterion is met by the simple fact that the MPEG [MPEG] - decoding software uses a syncsignal, embedded in the audiostream, to - 'lock on to' the audio. Since the ID3v2 tag doesn't contain a valid - syncsignal, no software will attempt to play the tag. If, for any - reason, coincidence make a syncsignal appear within the tag it will - be taken care of by the 'unsynchronisation scheme' described in - section 5. - - The second criterion has made a more noticeable impact on the design - of the ID3v2 tag. It is constructed as a container for several - information blocks, called frames, whose format need not be known to - the software that encounters them. At the start of every frame there - is an identifier that explains the frames' format and content, and a - size descriptor that allows software to skip unknown frames. - - If a total revision of the ID3v2 tag should be needed, there is a - version number and a size descriptor in the ID3v2 header. - - The ID3 tag described in this document is mainly targeted at files - encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III - and MPEG-2.5, but may work with other types of encoded audio. - - The bitorder in ID3v2 is most significant bit first (MSB). The - byteorder in multibyte numbers is most significant byte first (e.g. - $12345678 would be encoded $12 34 56 78). - - It is permitted to include padding after all the final frame (at the - end of the ID3 tag), making the size of all the frames together - smaller than the size given in the head of the tag. A possible - purpose of this padding is to allow for adding a few additional - frames or enlarge existing frames within the tag without having to - rewrite the entire file. The value of the padding bytes must be $00. - - -3.1. ID3v2 header - - The ID3v2 tag header, which should be the first information in the - file, is 10 bytes as follows: - - ID3v2/file identifier "ID3" - ID3v2 version $03 00 - ID3v2 flags %abc00000 - ID3v2 size 4 * %0xxxxxxx - - The first three bytes of the tag are always "ID3" to indicate that - this is an ID3v2 tag, directly followed by the two version bytes. The - first byte of ID3v2 version is it's major version, while the second - byte is its revision number. In this case this is ID3v2.3.0. All - revisions are backwards compatible while major versions are not. If - software with ID3v2.2.0 and below support should encounter version - three or higher it should simply ignore the whole tag. Version and - revision will never be $FF. - - The version is followed by one the ID3v2 flags field, of which - currently only three flags are used. - - - a - Unsynchronisation - - Bit 7 in the 'ID3v2 flags' indicates whether or not - unsynchronisation is used (see section 5 for details); a set bit - indicates usage. - - - b - Extended header - - The second bit (bit 6) indicates whether or not the header is - followed by an extended header. The extended header is described in - section 3.2. - - - c - Experimental indicator - - The third bit (bit 5) should be used as an 'experimental - indicator'. This flag should always be set when the tag is in an - experimental stage. - - All the other flags should be cleared. If one of these undefined - flags are set that might mean that the tag is not readable for a - parser that does not know the flags function. - - The ID3v2 tag size is encoded with four bytes where the most - significant bit (bit 7) is set to zero in every byte, making a total - of 28 bits. The zeroed bits are ignored, so a 257 bytes long tag is - represented as $00 00 02 01. - - The ID3v2 tag size is the size of the complete tag after - unsychronisation, including padding, excluding the header but not - excluding the extended header (total tag size - 10). Only 28 bits - (representing up to 256MB) are used in the size description to avoid - the introducuction of 'false syncsignals'. - - An ID3v2 tag can be detected with the following pattern: - $49 44 33 yy yy xx zz zz zz zz - Where yy is less than $FF, xx is the 'flags' byte and zz is less than - $80. - - -3.2. ID3v2 extended header - - The extended header contains information that is not vital to the - correct parsing of the tag information, hence the extended header is - optional. - - Extended header size $xx xx xx xx - Extended Flags $xx xx - Size of padding $xx xx xx xx - - Where the 'Extended header size', currently 6 or 10 bytes, excludes - itself. The 'Size of padding' is simply the total tag size excluding - the frames and the headers, in other words the padding. The extended - header is considered separate from the header proper, and as such is - subject to unsynchronisation. - - The extended flags are a secondary flag set which describes further - attributes of the tag. These attributes are currently defined as - follows - - %x0000000 00000000 - - - x - CRC data present - - If this flag is set four bytes of CRC-32 data is appended to the - extended header. The CRC should be calculated before - unsynchronisation on the data between the extended header and the - padding, i.e. the frames and only the frames. - - Total frame CRC $xx xx xx xx - - -3.3. ID3v2 frame overview - - As the tag consists of a tag header and a tag body with one or more - frames, all the frames consists of a frame header followed by one or - more fields containing the actual information. The layout of the - frame header: - - Frame ID $xx xx xx xx (four characters) - Size $xx xx xx xx - Flags $xx xx - - The frame ID made out of the characters capital A-Z and 0-9. - Identifiers beginning with "X", "Y" and "Z" are for experimental use - and free for everyone to use, without the need to set the - experimental bit in the tag header. Have in mind that someone else - might have used the same identifier as you. All other identifiers are - either used or reserved for future use. - - The frame ID is followed by a size descriptor, making a total header - size of ten bytes in every frame. The size is calculated as frame - size excluding frame header (frame size - 10). - - In the frame header the size descriptor is followed by two flags - bytes. These flags are described in section 3.3.1. - - There is no fixed order of the frames' appearance in the tag, - although it is desired that the frames are arranged in order of - significance concerning the recognition of the file. An example of - such order: UFID, TIT2, MCDI, TRCK ... - - A tag must contain at least one frame. A frame must be at least 1 - byte big, excluding the header. - - If nothing else is said a string is represented as ISO-8859-1 - [ISO-8859-1] characters in the range $20 - $FF. Such strings are - represented as <text string>, or <full text string> if newlines are - allowed, in the frame descriptions. All Unicode strings [UNICODE] use - 16-bit unicode 2.0 (ISO/IEC 10646-1:1993, UCS-2). Unicode strings - must begin with the Unicode BOM ($FF FE or $FE FF) to identify the - byte order. - - All numeric strings and URLs [URL] are always encoded as ISO-8859-1. - Terminated strings are terminated with $00 if encoded with ISO-8859-1 - and $00 00 if encoded as unicode. If nothing else is said newline - character is forbidden. In ISO-8859-1 a new line is represented, when - allowed, with $0A only. Frames that allow different types of text - encoding have a text encoding description byte directly after the - frame size. If ISO-8859-1 is used this byte should be $00, if Unicode - is used it should be $01. Strings dependent on encoding is - represented as <text string according to encoding>, or <full text - string according to encoding> if newlines are allowed. Any empty - Unicode strings which are NULL-terminated may have the Unicode BOM - followed by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00). - - The three byte language field is used to describe the language of the - frame's content, according to ISO-639-2 [ISO-639-2]. - - All URLs [URL] may be relative, e.g. "picture.png", "../doc.txt". - - If a frame is longer than it should be, e.g. having more fields than - specified in this document, that indicates that additions to the - frame have been made in a later version of the ID3v2 standard. This - is reflected by the revision number in the header of the tag. - - -3.3.1. Frame header flags - - In the frame header the size descriptor is followed by two flags - bytes. All unused flags must be cleared. The first byte is for - 'status messages' and the second byte is for encoding purposes. If an - unknown flag is set in the first byte the frame may not be changed - without the bit cleared. If an unknown flag is set in the second byte - it is likely to not be readable. The flags field is defined as - follows. - - %abc00000 %ijk00000 - - - a - Tag alter preservation - - This flag tells the software what to do with this frame if it is - unknown and the tag is altered in any way. This applies to all - kinds of alterations, including adding more padding and reordering - the frames. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - b - File alter preservation - - This flag tells the software what to do with this frame if it is - unknown and the file, excluding the tag, is altered. This does not - apply when the audio is completely replaced with other audio data. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - c - Read only - - This flag, if set, tells the software that the contents of this - frame is intended to be read only. Changing the contents might - break something, e.g. a signature. If the contents are changed, - without knowledge in why the frame was flagged read only and - without taking the proper means to compensate, e.g. recalculating - the signature, the bit should be cleared. - - - i - Compression - - This flag indicates whether or not the frame is compressed. - - 0 Frame is not compressed. - 1 Frame is compressed using zlib [zlib] with 4 bytes for - 'decompressed size' appended to the frame header. - - - j - Encryption - - This flag indicates wether or not the frame is enrypted. If set - one byte indicating with which method it was encrypted will be - appended to the frame header. See section 4.26. for more - information about encryption method registration. - - 0 Frame is not encrypted. - 1 Frame is encrypted. - - - k - Grouping identity - - This flag indicates whether or not this frame belongs in a group - with other frames. If set a group identifier byte is added to the - frame header. Every frame with the same group identifier belongs - to the same group. - - 0 Frame does not contain group information - 1 Frame contains group information - - - Some flags indicates that the frame header is extended with - additional information. This information will be added to the frame - header in the same order as the flags indicating the additions. I.e. - the four bytes of decompressed size will preceed the encryption - method byte. These additions to the frame header, while not included - in the frame header size but are included in the 'frame size' field, - are not subject to encryption or compression. - - -3.3.2. Default flags - - The default settings for the frames described in this document can be - divided into the following classes. The flags may be set differently - if found more suitable by the software. - - 1. Discarded if tag is altered, discarded if file is altered. - - None. - - 2. Discarded if tag is altered, preserved if file is altered. - - None. - - 3. Preserved if tag is altered, discarded if file is altered. - - AENC, ETCO, EQUA, MLLT, POSS, SYLT, SYTC, RVAD, TENC, TLEN, TSIZ - - 4. Preserved if tag is altered, preserved if file is altered. - - The rest of the frames. - - -4. Declared ID3v2 frames - - The following frames are declared in this draft. - - 4.21 AENC Audio encryption - 4.15 APIC Attached picture - - 4.11 COMM Comments - 4.25 COMR Commercial frame - - 4.26 ENCR Encryption method registration - 4.13 EQUA Equalization - 4.6 ETCO Event timing codes - - 4.16 GEOB General encapsulated object - 4.27 GRID Group identification registration - - 4.4 IPLS Involved people list - - 4.21 LINK Linked information - - 4.5 MCDI Music CD identifier - 4.7 MLLT MPEG location lookup table - - 4.24 OWNE Ownership frame - - 4.28. PRIV Private frame - 4.17 PCNT Play counter - 4.18 POPM Popularimeter - 4.22 POSS Position synchronisation frame - - 4.19 RBUF Recommended buffer size - 4.12 RVAD Relative volume adjustment - 4.14 RVRB Reverb - - 4.10 SYLT Synchronized lyric/text - 4.8 SYTC Synchronized tempo codes - - 4.2.1 TALB Album/Movie/Show title - 4.2.1 TBPM BPM (beats per minute) - 4.2.1 TCOM Composer - 4.2.1 TCON Content type - 4.2.1 TCOP Copyright message - 4.2.1 TDAT Date - 4.2.1 TDLY Playlist delay - 4.2.1 TENC Encoded by - 4.2.1 TEXT Lyricist/Text writer - 4.2.1 TFLT File type - 4.2.1 TIME Time - 4.2.1 TIT1 Content group description - 4.2.1 TIT2 Title/songname/content description - 4.2.1 TIT3 Subtitle/Description refinement - 4.2.1 TKEY Initial key - 4.2.1 TLAN Language(s) - 4.2.1 TLEN Length - 4.2.1 TMED Media type - 4.2.1 TOAL Original album/movie/show title - 4.2.1 TOFN Original filename - 4.2.1 TOLY Original lyricist(s)/text writer(s) - 4.2.1 TOPE Original artist(s)/performer(s) - 4.2.1 TORY Original release year - 4.2.1 TOWN File owner/licensee - 4.2.1 TPE1 Lead performer(s)/Soloist(s) - 4.2.1 TPE2 Band/orchestra/accompaniment - 4.2.1 TPE3 Conductor/performer refinement - 4.2.1 TPE4 Interpreted, remixed, or otherwise modified by - 4.2.1 TPOS Part of a set - 4.2.1 TPUB Publisher - 4.2.1 TRCK Track number/Position in set - 4.2.1 TRDA Recording dates - 4.2.1 TRSN Internet radio station name - 4.2.1 TRSO Internet radio station owner - 4.2.1 TSIZ Size - 4.2.1 TSRC ISRC (international standard recording code) - 4.2.1 TSSE Software/Hardware and settings used for encoding - 4.2.1 TYER Year - 4.2.2 TXXX User defined text information frame - - 4.1 UFID Unique file identifier - 4.23 USER Terms of use - 4.9 USLT Unsychronized lyric/text transcription - - 4.3.1 WCOM Commercial information - 4.3.1 WCOP Copyright/Legal information - 4.3.1 WOAF Official audio file webpage - 4.3.1 WOAR Official artist/performer webpage - 4.3.1 WOAS Official audio source webpage - 4.3.1 WORS Official internet radio station homepage - 4.3.1 WPAY Payment - 4.3.1 WPUB Publishers official webpage - 4.3.2 WXXX User defined URL link frame - - -4.1. Unique file identifier - - This frame's purpose is to be able to identify the audio file in a - database that may contain more information relevant to the content. - Since standardisation of such a database is beyond this document, all - frames begin with a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for this specific database implementation. Questions regarding the - database should be sent to the indicated email address. The URL - should not be used for the actual database queries. The string - "<a href="http://www.id3.org/dummy/ufid.html">http://www.id3.org/dummy/ufid.html</a>" should be used for tests. - Software that isn't told otherwise may safely remove such frames. The - 'Owner identifier' must be non-empty (more than just a termination). - The 'Owner identifier' is then followed by the actual identifier, - which may be up to 64 bytes. There may be more than one "UFID" frame - in a tag, but only one with the same 'Owner identifier'. - - <Header for 'Unique file identifier', ID: "UFID"> - Owner identifier <text string> $00 - Identifier <up to 64 bytes binary data> - - -4.2. Text information frames - - The text information frames are the most important frames, containing - information like artist, album and more. There may only be one text - information frame of its kind in an tag. If the textstring is - followed by a termination ($00 (00)) all the following information - should be ignored and not be displayed. All text frame identifiers - begin with "T". Only text frame identifiers begin with "T", with the - exception of the "TXXX" frame. All the text information frames have - the following format: - - <Header for 'Text information frame', ID: "T000" - "TZZZ", - excluding "TXXX" described in 4.2.2.> - Text encoding $xx - Information <text string according to encoding> - - -4.2.1. Text information frames - details - - TALB - The 'Album/Movie/Show title' frame is intended for the title of the - recording(/source of sound) which the audio in the file is taken - from. - - TBPM - The 'BPM' frame contains the number of beats per minute in the - mainpart of the audio. The BPM is an integer and represented as a - numerical string. - - TCOM - The 'Composer(s)' frame is intended for the name of the composer(s). - They are seperated with the "/" character. - - TCON - The 'Content type', which previously was stored as a one byte numeric - value only, is now a numeric string. You may use one or several of - the types as ID3v1.1 did or, since the category list would be - impossible to maintain with accurate and up to date categories, - define your own. - - References to the ID3v1 genres can be made by, as first byte, enter - "(" followed by a number from the genres list (appendix A.) and - ended with a ")" character. This is optionally followed by a - refinement, e.g. "(21)" or "(4)Eurodisco". Several references can be - made in the same frame, e.g. "(51)(39)". If the refinement should - begin with a "(" character it should be replaced with "((", e.g. "((I - can figure out any genre)" or "(55)((I think...)". The following new - content types is defined in ID3v2 and is implemented in the same way - as the numerig content types, e.g. "(RX)". - - RX Remix - CR Cover - - TCOP - The 'Copyright message' frame, which must begin with a year and a - space character (making five characters), is intended for the - copyright holder of the original sound, not the audio file itself. - The absence of this frame means only that the copyright information - is unavailable or has been removed, and must not be interpreted to - mean that the sound is public domain. Every time this field is - displayed the field must be preceded with "Copyright " (C) " ", where - (C) is one character showing a C in a circle. - - TDAT - The 'Date' frame is a numeric string in the DDMM format containing - the date for the recording. This field is always four characters - long. - - TDLY - The 'Playlist delay' defines the numbers of milliseconds of silence - between every song in a playlist. The player should use the "ETC" - frame, if present, to skip initial silence and silence at the end of - the audio to match the 'Playlist delay' time. The time is represented - as a numeric string. - - TENC - The 'Encoded by' frame contains the name of the person or - organisation that encoded the audio file. This field may contain a - copyright message, if the audio file also is copyrighted by the - encoder. - - TEXT - The 'Lyricist(s)/Text writer(s)' frame is intended for the writer(s) - of the text or lyrics in the recording. They are seperated with the - "/" character. - - TFLT - The 'File type' frame indicates which type of audio this tag defines. - The following type and refinements are defined: - - MPG MPEG Audio - /1 MPEG 1/2 layer I - /2 MPEG 1/2 layer II - /3 MPEG 1/2 layer III - /2.5 MPEG 2.5 - /AAC Advanced audio compression - VQF Transform-domain Weighted Interleave Vector Quantization - PCM Pulse Code Modulated audio - - but other types may be used, not for these types though. This is used - in a similar way to the predefined types in the "TMED" frame, but - without parentheses. If this frame is not present audio type is - assumed to be "MPG". - - TIME - The 'Time' frame is a numeric string in the HHMM format containing - the time for the recording. This field is always four characters - long. - - TIT1 - The 'Content group description' frame is used if the sound belongs to - a larger category of sounds/music. For example, classical music is - often sorted in different musical sections (e.g. "Piano Concerto", - "Weather - Hurricane"). - - TIT2 - The 'Title/Songname/Content description' frame is the actual name of - the piece (e.g. "Adagio", "Hurricane Donna"). - - TIT3 - The 'Subtitle/Description refinement' frame is used for information - directly related to the contents title (e.g. "Op. 16" or "Performed - live at Wembley"). - - TKEY - The 'Initial key' frame contains the musical key in which the sound - starts. It is represented as a string with a maximum length of three - characters. The ground keys are represented with "A","B","C","D","E", - "F" and "G" and halfkeys represented with "b" and "#". Minor is - represented as "m". Example "Cbm". Off key is represented with an "o" - only. - - TLAN - The 'Language(s)' frame should contain the languages of the text or - lyrics spoken or sung in the audio. The language is represented with - three characters according to ISO-639-2. If more than one language is - used in the text their language codes should follow according to - their usage. - - TLEN - The 'Length' frame contains the length of the audiofile in - milliseconds, represented as a numeric string. - - TMED - The 'Media type' frame describes from which media the sound - originated. This may be a text string or a reference to the - predefined media types found in the list below. References are made - within "(" and ")" and are optionally followed by a text refinement, - e.g. "(MC) with four channels". If a text refinement should begin - with a "(" character it should be replaced with "((" in the same way - as in the "TCO" frame. Predefined refinements is appended after the - media type, e.g. "(CD/A)" or "(VID/PAL/VHS)". - - DIG Other digital media - /A Analog transfer from media - - ANA Other analog media - /WAC Wax cylinder - /8CA 8-track tape cassette - - CD CD - /A Analog transfer from media - /DD DDD - /AD ADD - /AA AAD - - LD Laserdisc - /A Analog transfer from media - - TT Turntable records - /33 33.33 rpm - /45 45 rpm - /71 71.29 rpm - /76 76.59 rpm - /78 78.26 rpm - /80 80 rpm - - MD MiniDisc - /A Analog transfer from media - - DAT DAT - /A Analog transfer from media - /1 standard, 48 kHz/16 bits, linear - /2 mode 2, 32 kHz/16 bits, linear - /3 mode 3, 32 kHz/12 bits, nonlinear, low speed - /4 mode 4, 32 kHz/12 bits, 4 channels - /5 mode 5, 44.1 kHz/16 bits, linear - /6 mode 6, 44.1 kHz/16 bits, 'wide track' play - - DCC DCC - /A Analog transfer from media - - DVD DVD - /A Analog transfer from media - - TV Television - /PAL PAL - /NTSC NTSC - /SECAM SECAM - - VID Video - /PAL PAL - /NTSC NTSC - /SECAM SECAM - /VHS VHS - /SVHS S-VHS - /BETA BETAMAX - - RAD Radio - /FM FM - /AM AM - /LW LW - /MW MW - - TEL Telephone - /I ISDN - - MC MC (normal cassette) - /4 4.75 cm/s (normal speed for a two sided cassette) - /9 9.5 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - REE Reel - /9 9.5 cm/s - /19 19 cm/s - /38 38 cm/s - /76 76 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - TOAL - The 'Original album/movie/show title' frame is intended for the title - of the original recording (or source of sound), if for example the - music in the file should be a cover of a previously released song. - - TOFN - The 'Original filename' frame contains the preferred filename for the - file, since some media doesn't allow the desired length of the - filename. The filename is case sensitive and includes its suffix. - - TOLY - The 'Original lyricist(s)/text writer(s)' frame is intended for the - text writer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The text - writers are seperated with the "/" character. - - TOPE - The 'Original artist(s)/performer(s)' frame is intended for the - performer(s) of the original recording, if for example the music in - the file should be a cover of a previously released song. The - performers are seperated with the "/" character. - - TORY - The 'Original release year' frame is intended for the year when the - original recording, if for example the music in the file should be a - cover of a previously released song, was released. The field is - formatted as in the "TYER" frame. - - TOWN - The 'File owner/licensee' frame contains the name of the owner or - licensee of the file and it's contents. - - TPE1 - The 'Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group' is - used for the main artist(s). They are seperated with the "/" - character. - - TPE2 - The 'Band/Orchestra/Accompaniment' frame is used for additional - information about the performers in the recording. - - TPE3 - The 'Conductor' frame is used for the name of the conductor. - - TPE4 - The 'Interpreted, remixed, or otherwise modified by' frame contains - more information about the people behind a remix and similar - interpretations of another existing piece. - - TPOS - The 'Part of a set' frame is a numeric string that describes which - part of a set the audio came from. This frame is used if the source - described in the "TALB" frame is divided into several mediums, e.g. a - double CD. The value may be extended with a "/" character and a - numeric string containing the total number of parts in the set. E.g. - "1/2". - - TPUB - The 'Publisher' frame simply contains the name of the label or - publisher. - - TRCK - The 'Track number/Position in set' frame is a numeric string - containing the order number of the audio-file on its original - recording. This may be extended with a "/" character and a numeric - string containing the total numer of tracks/elements on the original - recording. E.g. "4/9". - - TRDA - The 'Recording dates' frame is a intended to be used as complement to - the "TYER", "TDAT" and "TIME" frames. E.g. "4th-7th June, 12th June" - in combination with the "TYER" frame. - - TRSN - The 'Internet radio station name' frame contains the name of the - internet radio station from which the audio is streamed. - - TRSO - The 'Internet radio station owner' frame contains the name of the - owner of the internet radio station from which the audio is - streamed. - - TSIZ - The 'Size' frame contains the size of the audiofile in bytes, - excluding the ID3v2 tag, represented as a numeric string. - - TSRC - The 'ISRC' frame should contain the International Standard Recording - Code [ISRC] (12 characters). - - TSSE - The 'Software/Hardware and settings used for encoding' frame - includes the used audio encoder and its settings when the file was - encoded. Hardware refers to hardware encoders, not the computer on - which a program was run. - - TYER - The 'Year' frame is a numeric string with a year of the recording. - This frames is always four characters long (until the year 10000). - - -4.2.2. User defined text information frame - - This frame is intended for one-string text information concerning the - audiofile in a similar way to the other "T"-frames. The frame body - consists of a description of the string, represented as a terminated - string, followed by the actual string. There may be more than one - "TXXX" frame in each tag, but only one with the same description. - - <Header for 'User defined text information frame', ID: "TXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - Value <text string according to encoding> - - -4.3. URL link frames - - With these frames dynamic data such as webpages with touring - information, price information or plain ordinary news can be added to - the tag. There may only be one URL [URL] link frame of its kind in an - tag, except when stated otherwise in the frame description. If the - textstring is followed by a termination ($00 (00)) all the following - information should be ignored and not be displayed. All URL link - frame identifiers begins with "W". Only URL link frame identifiers - begins with "W". All URL link frames have the following format: - - <Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX" - described in 4.3.2.> - URL <text string> - - -4.3.1. URL link frames - details - - WCOM - The 'Commercial information' frame is a URL pointing at a webpage - with information such as where the album can be bought. There may be - more than one "WCOM" frame in a tag, but not with the same content. - - WCOP - The 'Copyright/Legal information' frame is a URL pointing at a - webpage where the terms of use and ownership of the file is - described. - - WOAF - The 'Official audio file webpage' frame is a URL pointing at a file - specific webpage. - - WOAR - The 'Official artist/performer webpage' frame is a URL pointing at - the artists official webpage. There may be more than one "WOAR" frame - in a tag if the audio contains more than one performer, but not with - the same content. - - WOAS - The 'Official audio source webpage' frame is a URL pointing at the - official webpage for the source of the audio file, e.g. a movie. - - WORS - The 'Official internet radio station homepage' contains a URL - pointing at the homepage of the internet radio station. - - WPAY - The 'Payment' frame is a URL pointing at a webpage that will handle - the process of paying for this file. - - WPUB - The 'Publishers official webpage' frame is a URL pointing at the - official wepage for the publisher. - - -4.3.2. User defined URL link frame - - This frame is intended for URL [URL] links concerning the audiofile - in a similar way to the other "W"-frames. The frame body consists - of a description of the string, represented as a terminated string, - followed by the actual URL. The URL is always encoded with ISO-8859-1 - [ISO-8859-1]. There may be more than one "WXXX" frame in each tag, - but only one with the same description. - - <Header for 'User defined URL link frame', ID: "WXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - URL <text string> - - -4.4. Involved people list - - Since there might be a lot of people contributing to an audio file in - various ways, such as musicians and technicians, the 'Text - information frames' are often insufficient to list everyone involved - in a project. The 'Involved people list' is a frame containing the - names of those involved, and how they were involved. The body simply - contains a terminated string with the involvement directly followed - by a terminated string with the involvee followed by a new - involvement and so on. There may only be one "IPLS" frame in each - tag. - - <Header for 'Involved people list', ID: "IPLS"> - Text encoding $xx - People list strings <text strings according to encoding> - - -4.5. Music CD identifier - - This frame is intended for music that comes from a CD, so that the CD - can be identified in databases such as the CDDB [CDDB]. The frame - consists of a binary dump of the Table Of Contents, TOC, from the CD, - which is a header of 4 bytes and then 8 bytes/track on the CD plus 8 - bytes for the 'lead out' making a maximum of 804 bytes. The offset to - the beginning of every track on the CD should be described with a - four bytes absolute CD-frame address per track, and not with absolute - time. This frame requires a present and valid "TRCK" frame, even if - the CD's only got one track. There may only be one "MCDI" frame in - each tag. - - <Header for 'Music CD identifier', ID: "MCDI"> - CD TOC <binary data> - - -4.6. Event timing codes - - This frame allows synchronisation with key events in a song or sound. - The header is: - - <Header for 'Event timing codes', ID: "ETCO"> - Time stamp format $xx - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - Followed by a list of key events in the following format: - - Type of event $xx - Time stamp $xx (xx ...) - - The 'Time stamp' is set to zero if directly at the beginning of the - sound or after the previous event. All events should be sorted in - chronological order. The type of event is as follows: - - $00 padding (has no meaning) - $01 end of initial silence - $02 intro start - $03 mainpart start - $04 outro start - $05 outro end - $06 verse start - $07 refrain start - $08 interlude start - $09 theme start - $0A variation start - $0B key change - $0C time change - $0D momentary unwanted noise (Snap, Crackle & Pop) - $0E sustained noise - $0F sustained noise end - $10 intro end - $11 mainpart end - $12 verse end - $13 refrain end - $14 theme end - - $15-$DF reserved for future use - - $E0-$EF not predefined sync 0-F - - $F0-$FC reserved for future use - - $FD audio end (start of silence) - $FE audio file ends - $FF one more byte of events follows (all the following bytes with - the value $FF have the same function) - - Terminating the start events such as "intro start" is not required. - The 'Not predefined sync's ($E0-EF) are for user events. You might - want to synchronise your music to something, like setting of an - explosion on-stage, turning on your screensaver etc. - - There may only be one "ETCO" frame in each tag. - - -4.7. MPEG location lookup table - - To increase performance and accuracy of jumps within a MPEG [MPEG] - audio file, frames with timecodes in different locations in the file - might be useful. The ID3v2 frame includes references that the - software can use to calculate positions in the file. After the frame - header is a descriptor of how much the 'frame counter' should - increase for every reference. If this value is two then the first - reference points out the second frame, the 2nd reference the 4th - frame, the 3rd reference the 6th frame etc. In a similar way the - 'bytes between reference' and 'milliseconds between reference' points - out bytes and milliseconds respectively. - - Each reference consists of two parts; a certain number of bits, as - defined in 'bits for bytes deviation', that describes the difference - between what is said in 'bytes between reference' and the reality and - a certain number of bits, as defined in 'bits for milliseconds - deviation', that describes the difference between what is said in - 'milliseconds between reference' and the reality. The number of bits - in every reference, i.e. 'bits for bytes deviation'+'bits for - milliseconds deviation', must be a multiple of four. There may only - be one "MLLT" frame in each tag. - - <Header for 'Location lookup table', ID: "MLLT"> - MPEG frames between reference $xx xx - Bytes between reference $xx xx xx - Milliseconds between reference $xx xx xx - Bits for bytes deviation $xx - Bits for milliseconds dev. $xx - - Then for every reference the following data is included; - - Deviation in bytes %xxx.... - Deviation in milliseconds %xxx.... - - -4.8. Synchronised tempo codes - - For a more accurate description of the tempo of a musical piece this - frame might be used. After the header follows one byte describing - which time stamp format should be used. Then follows one or more - tempo codes. Each tempo code consists of one tempo part and one time - part. The tempo is in BPM described with one or two bytes. If the - first byte has the value $FF, one more byte follows, which is added - to the first giving a range from 2 - 510 BPM, since $00 and $01 is - reserved. $00 is used to describe a beat-free time period, which is - not the same as a music-free time period. $01 is used to indicate one - single beat-stroke followed by a beat-free period. - - The tempo descriptor is followed by a time stamp. Every time the - tempo in the music changes, a tempo descriptor may indicate this for - the player. All tempo descriptors should be sorted in chronological - order. The first beat-stroke in a time-period is at the same time as - the beat description occurs. There may only be one "SYTC" frame in - each tag. - - <Header for 'Synchronised tempo codes', ID: "SYTC"> - Time stamp format $xx - Tempo data <binary data> - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - -4.9. Unsychronised lyrics/text transcription - - This frame contains the lyrics of the song or a text transcription of - other vocal activities. The head includes an encoding descriptor and - a content descriptor. The body consists of the actual text. The - 'Content descriptor' is a terminated string. If no descriptor is - entered, 'Content descriptor' is $00 (00) only. Newline characters - are allowed in the text. There may be more than one 'Unsynchronised - lyrics/text transcription' frame in each tag, but only one with the - same language and content descriptor. - - <Header for 'Unsynchronised lyrics/text transcription', ID: "USLT"> - Text encoding $xx - Language $xx xx xx - Content descriptor <text string according to encoding> $00 (00) - Lyrics/text <full text string according to encoding> - - -4.10. Synchronised lyrics/text - - This is another way of incorporating the words, said or sung lyrics, - in the audio file as text, this time, however, in sync with the - audio. It might also be used to describing events e.g. occurring on a - stage or on the screen in sync with the audio. The header includes a - content descriptor, represented with as terminated textstring. If no - descriptor is entered, 'Content descriptor' is $00 (00) only. - - <Header for 'Synchronised lyrics/text', ID: "SYLT"> - Text encoding $xx - Language $xx xx xx - Time stamp format $xx - Content type $xx - Content descriptor <text string according to encoding> $00 (00) - - - Encoding: $00 ISO-8859-1 [ISO-8859-1] character set is used => $00 - is sync identifier. - $01 Unicode [UNICODE] character set is used => $00 00 is - sync identifier. - - Content type: $00 is other - $01 is lyrics - $02 is text transcription - $03 is movement/part name (e.g. "Adagio") - $04 is events (e.g. "Don Quijote enters the stage") - $05 is chord (e.g. "Bb F Fsus") - $06 is trivia/'pop up' information - - Time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Abolute time means that every stamp contains the time from the - beginning of the file. - - The text that follows the frame header differs from that of the - unsynchronised lyrics/text transcription in one major way. Each - syllable (or whatever size of text is considered to be convenient by - the encoder) is a null terminated string followed by a time stamp - denoting where in the sound file it belongs. Each sync thus has the - following structure: - - Terminated text to be synced (typically a syllable) - Sync identifier (terminator to above string) $00 (00) - Time stamp $xx (xx ...) - - The 'time stamp' is set to zero or the whole sync is omitted if - located directly at the beginning of the sound. All time stamps - should be sorted in chronological order. The sync can be considered - as a validator of the subsequent string. - - Newline ($0A) characters are allowed in all "SYLT" frames and should - be used after every entry (name, event etc.) in a frame with the - content type $03 - $04. - - A few considerations regarding whitespace characters: Whitespace - separating words should mark the beginning of a new word, thus - occurring in front of the first syllable of a new word. This is also - valid for new line characters. A syllable followed by a comma should - not be broken apart with a sync (both the syllable and the comma - should be before the sync). - - An example: The "USLT" passage - - "Strangers in the night" $0A "Exchanging glances" - - would be "SYLT" encoded as: - - "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx - " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx - xx "glan" $00 xx xx "ces" $00 xx xx - - There may be more than one "SYLT" frame in each tag, but only one - with the same language and content descriptor. - - -4.11. Comments - - This frame is indended for any kind of full text information that - does not fit in any other frame. It consists of a frame header - followed by encoding, language and content descriptors and is ended - with the actual comment as a text string. Newline characters are - allowed in the comment text string. There may be more than one - comment frame in each tag, but only one with the same language and - content descriptor. - - <Header for 'Comment', ID: "COMM"> - Text encoding $xx - Language $xx xx xx - Short content descrip. <text string according to encoding> $00 (00) - The actual text <full text string according to encoding> - - -4.12. Relative volume adjustment - - This is a more subjective function than the previous ones. It allows - the user to say how much he wants to increase/decrease the volume on - each channel while the file is played. The purpose is to be able to - align all files to a reference volume, so that you don't have to - change the volume constantly. This frame may also be used to balance - adjust the audio. If the volume peak levels are known then this could - be described with the 'Peak volume right' and 'Peak volume left' - field. If Peakvolume is not known these fields could be left zeroed - or, if no other data follows, be completely omitted. There may only - be one "RVAD" frame in each tag. - - <Header for 'Relative volume adjustment', ID: "RVAD"> - Increment/decrement %00xxxxxx - Bits used for volume descr. $xx - Relative volume change, right $xx xx (xx ...) - Relative volume change, left $xx xx (xx ...) - Peak volume right $xx xx (xx ...) - Peak volume left $xx xx (xx ...) - - In the increment/decrement field bit 0 is used to indicate the right - channel and bit 1 is used to indicate the left channel. 1 is - increment and 0 is decrement. - - The 'bits used for volume description' field is normally $10 (16 - bits) for MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value - may not be $00. The volume is always represented with whole bytes, - padded in the beginning (highest bits) when 'bits used for volume - description' is not a multiple of eight. - - This datablock is then optionally followed by a volume definition for - the left and right back channels. If this information is appended to - the frame the first two channels will be treated as front channels. - In the increment/decrement field bit 2 is used to indicate the right - back channel and bit 3 for the left back channel. - - Relative volume change, right back $xx xx (xx ...) - Relative volume change, left back $xx xx (xx ...) - Peak volume right back $xx xx (xx ...) - Peak volume left back $xx xx (xx ...) - - If the center channel adjustment is present the following is appended - to the existing frame, after the left and right back channels. The - center channel is represented by bit 4 in the increase/decrease - field. - - Relative volume change, center $xx xx (xx ...) - Peak volume center $xx xx (xx ...) - - If the bass channel adjustment is present the following is appended - to the existing frame, after the center channel. The bass channel is - represented by bit 5 in the increase/decrease field. - - Relative volume change, bass $xx xx (xx ...) - Peak volume bass $xx xx (xx ...) - - -4.13. Equalisation - - This is another subjective, alignment frame. It allows the user to - predefine an equalisation curve within the audio file. There may only - be one "EQUA" frame in each tag. - - <Header of 'Equalisation', ID: "EQUA"> - Adjustment bits $xx - - The 'adjustment bits' field defines the number of bits used for - representation of the adjustment. This is normally $10 (16 bits) for - MPEG 2 layer I, II and III [MPEG] and MPEG 2.5. This value may not be - $00. - - This is followed by 2 bytes + ('adjustment bits' rounded up to the - nearest byte) for every equalisation band in the following format, - giving a frequency range of 0 - 32767Hz: - - Increment/decrement %x (MSB of the Frequency) - Frequency (lower 15 bits) - Adjustment $xx (xx ...) - - The increment/decrement bit is 1 for increment and 0 for decrement. - The equalisation bands should be ordered increasingly with reference - to frequency. All frequencies don't have to be declared. The - equalisation curve in the reading software should be interpolated - between the values in this frame. Three equal adjustments for three - subsequent frequencies. A frequency should only be described once in - the frame. - - -4.14. Reverb - - Yet another subjective one. You may here adjust echoes of different - kinds. Reverb left/right is the delay between every bounce in ms. - Reverb bounces left/right is the number of bounces that should be - made. $FF equals an infinite number of bounces. Feedback is the - amount of volume that should be returned to the next echo bounce. $00 - is 0%, $FF is 100%. If this value were $7F, there would be 50% volume - reduction on the first bounce, 50% of that on the second and so on. - Left to left means the sound from the left bounce to be played in the - left speaker, while left to right means sound from the left bounce to - be played in the right speaker. - - 'Premix left to right' is the amount of left sound to be mixed in the - right before any reverb is applied, where $00 id 0% and $FF is 100%. - 'Premix right to left' does the same thing, but right to left. - Setting both premix to $FF would result in a mono output (if the - reverb is applied symmetric). There may only be one "RVRB" frame in - each tag. - - <Header for 'Reverb', ID: "RVRB"> - Reverb left (ms) $xx xx - Reverb right (ms) $xx xx - Reverb bounces, left $xx - Reverb bounces, right $xx - Reverb feedback, left to left $xx - Reverb feedback, left to right $xx - Reverb feedback, right to right $xx - Reverb feedback, right to left $xx - Premix left to right $xx - Premix right to left $xx - - -4.15. Attached picture - - This frame contains a picture directly related to the audio file. - Image format is the MIME type and subtype [MIME] for the image. In - the event that the MIME media type name is omitted, "image/" will be - implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format - should be used when interoperability is wanted. Description is a - short description of the picture, represented as a terminated - textstring. The description has a maximum length of 64 characters, - but may be empty. There may be several pictures attached to one file, - each in their individual "APIC" frame, but only one with the same - content descriptor. There may only be one picture with the picture - type declared as picture type $01 and $02 respectively. There is the - possibility to put only a link to the image file by using the 'MIME - type' "-->" and having a complete URL [URL] instead of picture data. - The use of linked files should however be used sparingly since there - is the risk of separation of files. - - <Header for 'Attached picture', ID: "APIC"> - Text encoding $xx - MIME type <text string> $00 - Picture type $xx - Description <text string according to encoding> $00 (00) - Picture data <binary data> - - - Picture type: $00 Other - $01 32x32 pixels 'file icon' (PNG only) - $02 Other file icon - $03 Cover (front) - $04 Cover (back) - $05 Leaflet page - $06 Media (e.g. lable side of CD) - $07 Lead artist/lead performer/soloist - $08 Artist/performer - $09 Conductor - $0A Band/Orchestra - $0B Composer - $0C Lyricist/text writer - $0D Recording Location - $0E During recording - $0F During performance - $10 Movie/video screen capture - $11 A bright coloured fish - $12 Illustration - $13 Band/artist logotype - $14 Publisher/Studio logotype - - -4.16. General encapsulated object - - In this frame any type of file can be encapsulated. After the header, - 'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as - as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The - filename is case sensitive and is encoded as 'Encoding'. Then follows - a content description as terminated string, encoded as 'Encoding'. - The last thing in the frame is the actual object. The first two - strings may be omitted, leaving only their terminations. MIME type is - always an ISO-8859-1 text string. There may be more than one "GEOB" - frame in each tag, but only one with the same content descriptor. - - <Header for 'General encapsulated object', ID: "GEOB"> - Text encoding $xx - MIME type <text string> $00 - Filename <text string according to encoding> $00 (00) - Content description <text string according to encóding> $00 (00) - Encapsulated object <binary data> - - -4.17. Play counter - - This is simply a counter of the number of times a file has been - played. The value is increased by one every time the file begins to - play. There may only be one "PCNT" frame in each tag. When the - counter reaches all one's, one byte is inserted in front of the - counter thus making the counter eight bits bigger. The counter must - be at least 32-bits long to begin with. - - <Header for 'Play counter', ID: "PCNT"> - Counter $xx xx xx xx (xx ...) - - -4.18. Popularimeter - - The purpose of this frame is to specify how good an audio file is. - Many interesting applications could be found to this frame such as a - playlist that features better audiofiles more often than others or it - could be used to profile a person's taste and find other 'good' files - by comparing people's profiles. The frame is very simple. It contains - the email address to the user, one rating byte and a four byte play - counter, intended to be increased with one for every time the file is - played. The email is a terminated string. The rating is 1-255 where - 1 is worst and 255 is best. 0 is unknown. If no personal counter is - wanted it may be omitted. When the counter reaches all one's, one - byte is inserted in front of the counter thus making the counter - eight bits bigger in the same away as the play counter ("PCNT"). - There may be more than one "POPM" frame in each tag, but only one - with the same email address. - - <Header for 'Popularimeter', ID: "POPM"> - Email to user <text string> $00 - Rating $xx - Counter $xx xx xx xx (xx ...) - - -4.19. Recommended buffer size - - Sometimes the server from which a audio file is streamed is aware of - transmission or coding problems resulting in interruptions in the - audio stream. In these cases, the size of the buffer can be - recommended by the server using this frame. If the 'embedded info - flag' is true (1) then this indicates that an ID3 tag with the - maximum size described in 'Buffer size' may occur in the audiostream. - In such case the tag should reside between two MPEG [MPEG] frames, if - the audio is MPEG encoded. If the position of the next tag is known, - 'offset to next tag' may be used. The offset is calculated from the - end of tag in which this frame resides to the first byte of the - header in the next. This field may be omitted. Embedded tags are - generally not recommended since this could render unpredictable - behaviour from present software/hardware. - - For applications like streaming audio it might be an idea to embed - tags into the audio stream though. If the clients connects to - individual connections like HTTP and there is a possibility to begin - every transmission with a tag, then this tag should include a - 'recommended buffer size' frame. If the client is connected to a - arbitrary point in the stream, such as radio or multicast, then the - 'recommended buffer size' frame should be included in every tag. - Every tag that is picked up after the initial/first tag is to be - considered as an update of the previous one. E.g. if there is a - "TIT2" frame in the first received tag and one in the second tag, - then the first should be 'replaced' with the second. - - The 'Buffer size' should be kept to a minimum. There may only be one - "RBUF" frame in each tag. - - <Header for 'Recommended buffer size', ID: "RBUF"> - Buffer size $xx xx xx - Embedded info flag %0000000x - Offset to next tag $xx xx xx xx - - -4.20. Audio encryption - - This frame indicates if the actual audio stream is encrypted, and by - whom. Since standardisation of such encrypion scheme is beyond this - document, all "AENC" frames begin with a terminated string with a - URL containing an email address, or a link to a location where an - email address can be found, that belongs to the organisation - responsible for this specific encrypted audio file. Questions - regarding the encrypted audio should be sent to the email address - specified. If a $00 is found directly after the 'Frame size' and the - audiofile indeed is encrypted, the whole file may be considered - useless. - - After the 'Owner identifier', a pointer to an unencrypted part of the - audio can be specified. The 'Preview start' and 'Preview length' is - described in frames. If no part is unencrypted, these fields should - be left zeroed. After the 'preview length' field follows optionally a - datablock required for decryption of the audio. There may be more - than one "AENC" frames in a tag, but only one with the same 'Owner - identifier'. - - <Header for 'Audio encryption', ID: "AENC"> - Owner identifier <text string> $00 - Preview start $xx xx - Preview length $xx xx - Encryption info <binary data> - - -4.21. Linked information - - To keep space waste as low as possible this frame may be used to link - information from another ID3v2 tag that might reside in another audio - file or alone in a binary file. It is recommended that this method is - only used when the files are stored on a CD-ROM or other - circumstances when the risk of file seperation is low. The frame - contains a frame identifier, which is the frame that should be linked - into this tag, a URL [URL] field, where a reference to the file where - the frame is given, and additional ID data, if needed. Data should be - retrieved from the first tag found in the file to which this link - points. There may be more than one "LINK" frame in a tag, but only - one with the same contents. A linked frame is to be considered as - part of the tag and has the same restrictions as if it was a physical - part of the tag (i.e. only one "RVRB" frame allowed, whether it's - linked or not). - - <Header for 'Linked information', ID: "LINK"> - Frame identifier $xx xx xx - URL <text string> $00 - ID and additional data <text string(s)> - - Frames that may be linked and need no additional data are "IPLS", - "MCID", "ETCO", "MLLT", "SYTC", "RVAD", "EQUA", "RVRB", "RBUF", the - text information frames and the URL link frames. - - The "TXXX", "APIC", "GEOB" and "AENC" frames may be linked with - the content descriptor as additional ID data. - - The "COMM", "SYLT" and "USLT" frames may be linked with three bytes - of language descriptor directly followed by a content descriptor as - additional ID data. - - -4.22. Position synchronisation frame - - This frame delivers information to the listener of how far into the - audio stream he picked up; in effect, it states the time offset of - the first frame in the stream. The frame layout is: - - <Head for 'Position synchronisation', ID: "POSS"> - Time stamp format $xx - Position $xx (xx ...) - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - and position is where in the audio the listener starts to receive, - i.e. the beginning of the next frame. If this frame is used in the - beginning of a file the value is always 0. There may only be one - "POSS" frame in each tag. - - -4.23. Terms of use frame - - This frame contains a brief description of the terms of use and - ownership of the file. More detailed information concerning the legal - terms might be available through the "WCOP" frame. Newlines are - allowed in the text. There may only be one "USER" frame in a tag. - - <Header for 'Terms of use frame', ID: "USER"> - Text encoding $xx - Language $xx xx xx - The actual text <text string according to encoding> - - -4.24. Ownership frame - - The ownership frame might be used as a reminder of a made transaction - or, if signed, as proof. Note that the "USER" and "TOWN" frames are - good to use in conjunction with this one. The frame begins, after the - frame ID, size and encoding fields, with a 'price payed' field. The - first three characters of this field contains the currency used for - the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic - currency code. Concatenated to this is the actual price payed, as a - numerical string using "." as the decimal separator. Next is an 8 - character date string (YYYYMMDD) followed by a string with the name - of the seller as the last field in the frame. There may only be one - "OWNE" frame in a tag. - - <Header for 'Ownership frame', ID: "OWNE"> - Text encoding $xx - Price payed <text string> $00 - Date of purch. <text string> - Seller <text string according to encoding> - - -4.25. Commercial frame - - This frame enables several competing offers in the same tag by - bundling all needed information. That makes this frame rather complex - but it's an easier solution than if one tries to achieve the same - result with several frames. The frame begins, after the frame ID, - size and encoding fields, with a price string field. A price is - constructed by one three character currency code, encoded according - to ISO 4217 [ISO-4217] alphabetic currency code, followed by a - numerical value where "." is used as decimal seperator. In the price - string several prices may be concatenated, seperated by a "/" - character, but there may only be one currency of each type. - - The price string is followed by an 8 character date string in the - format YYYYMMDD, describing for how long the price is valid. After - that is a contact URL, with which the user can contact the seller, - followed by a one byte 'received as' field. It describes how the - audio is delivered when bought according to the following list: - - $00 Other - $01 Standard CD album with other songs - $02 Compressed audio on CD - $03 File over the Internet - $04 Stream over the Internet - $05 As note sheets - $06 As note sheets in a book with other sheets - $07 Music on other media - $08 Non-musical merchandise - - Next follows a terminated string with the name of the seller followed - by a terminated string with a short description of the product. The - last thing is the ability to include a company logotype. The first of - them is the 'Picture MIME type' field containing information about - which picture format is used. In the event that the MIME media type - name is omitted, "image/" will be implied. Currently only "image/png" - and "image/jpeg" are allowed. This format string is followed by the - binary picture data. This two last fields may be omitted if no - picture is to attach. - - <Header for 'Commercial frame', ID: "COMR"> - Text encoding $xx - Price string <text string> $00 - Valid until <text string> - Contact URL <text string> $00 - Received as $xx - Name of seller <text string according to encoding> $00 (00) - Description <text string according to encoding> $00 (00) - Picture MIME type <string> $00 - Seller logo <binary data> - - -4.26. Encryption method registration - - To identify with which method a frame has been encrypted the - encryption method must be registered in the tag with this frame. The - 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for this specific encryption method. Questions regarding the - encryption method should be sent to the indicated email address. The - 'Method symbol' contains a value that is associated with this method - throughout the whole tag. Values below $80 are reserved. The 'Method - symbol' may optionally be followed by encryption specific data. There - may be several "ENCR" frames in a tag but only one containing the - same symbol and only one containing the same owner identifier. The - method must be used somewhere in the tag. See section 3.3.1, flag j - for more information. - - <Header for 'Encryption method registration', ID: "ENCR"> - Owner identifier <text string> $00 - Method symbol $xx - Encryption data <binary data> - - -4.27. Group identification registration - - This frame enables grouping of otherwise unrelated frames. This can - be used when some frames are to be signed. To identify which frames - belongs to a set of frames a group identifier must be registered in - the tag with this frame. The 'Owner identifier' is a null-terminated - string with a URL [URL] containing an email address, or a link to a - location where an email address can be found, that belongs to the - organisation responsible for this grouping. Questions regarding the - grouping should be sent to the indicated email address. The 'Group - symbol' contains a value that associates the frame with this group - throughout the whole tag. Values below $80 are reserved. The 'Group - symbol' may optionally be followed by some group specific data, e.g. - a digital signature. There may be several "GRID" frames in a tag but - only one containing the same symbol and only one containing the same - owner identifier. The group symbol must be used somewhere in the tag. - See section 3.3.1, flag j for more information. - - <Header for 'Group ID registration', ID: "GRID"> - Owner identifier <text string> $00 - Group symbol $xx - Group dependent data <binary data> - - -4.28. Private frame - - This frame is used to contain information from a software producer - that its program uses and does not fit into the other frames. The - frame consists of an 'Owner identifier' string and the binary data. - The 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for the frame. Questions regarding the frame should be sent to the - indicated email address. The tag may contain more than one "PRIV" - frame but only with different contents. It is recommended to keep the - number of "PRIV" frames as low as possible. - - <Header for 'Private frame', ID: "PRIV"> - Owner identifier <text string> $00 - The private data <binary data> - - -5. The 'unsynchronisation scheme' - - The only purpose of the 'unsynchronisation scheme' is to make the - ID3v2 tag as compatible as possible with existing software. There is - no use in 'unsynchronising' tags if the file is only to be processed - by new software. Unsynchronisation may only be made with MPEG 2 layer - I, II and III and MPEG 2.5 files. - - Whenever a false synchronisation is found within the tag, one zeroed - byte is inserted after the first false synchronisation byte. The - format of a correct sync that should be altered by ID3 encoders is as - follows: - - %11111111 111xxxxx - - And should be replaced with: - - %11111111 00000000 111xxxxx - - This has the side effect that all $FF 00 combinations have to be - altered, so they won't be affected by the decoding process. Therefore - all the $FF 00 combinations have to be replaced with the $FF 00 00 - combination during the unsynchronisation. - - To indicate usage of the unsynchronisation, the first bit in 'ID3 - flags' should be set. This bit should only be set if the tag - contains a, now corrected, false synchronisation. The bit should - only be clear if the tag does not contain any false synchronisations. - - Do bear in mind, that if a compression scheme is used by the encoder, - the unsynchronisation scheme should be applied *afterwards*. When - decoding a compressed, 'unsynchronised' file, the 'unsynchronisation - scheme' should be parsed first, decompression afterwards. - - If the last byte in the tag is $FF, and there is a need to eliminate - false synchronisations in the tag, at least one byte of padding - should be added. - - -6. Copyright - - Copyright (C) Martin Nilsson 1998. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF - THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -7. References - - [CDDB] Compact Disc Data Base - - http://www.cddb.com - - [ID3v2] Martin Nilsson, "ID3v2 informal standard". - - http://www.id3lib.org/id3/id3v2-00.txt - - [ISO-639-2] ISO/FDIS 639-2. - Codes for the representation of names of languages, Part 2: Alpha-3 - code. Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-4217] ISO 4217:1995. - Codes for the representation of currencies and funds. - Technical committee / subcommittee: TC 68 - - [ISO-8859-1] ISO/IEC DIS 8859-1. - 8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2 - - [ISRC] ISO 3901:1986 - International Standard Recording Code (ISRC). - Technical committee / subcommittee: TC 46 / SC 9 - - [JFIF] JPEG File Interchange Format, version 1.02 - - http://www.w3.org/Graphics/JPEG/jfif.txt">http://www.w3.org/Graphics/JPEG/jfif.txt - - [MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part One: Format of Internet Message Bodies", - RFC 2045, November 1996. - - ftp://ftp.isi.edu/in-notes/rfc2045.txt">ftp://ftp.isi.edu/in-notes/rfc2045.txt - - [MPEG] ISO/IEC 11172-3:1993. - Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - Generic coding of moving pictures and associated audio information, - Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995) - - - [PNG] Portable Network Graphics, version 1.0 - - http://www.w3.org/TR/REC-png-multi.html - - [UNICODE] ISO/IEC 10646-1:1993. - Universal Multiple-Octet Coded Character Set (UCS), Part 1: - Architecture and Basic Multilingual Plane. - Technical committee / subcommittee: JTC 1 / SC 2 - - http://www.unicode.org/ - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource - Locators (URL).", RFC 1738, December 1994. - - ftp://ftp.isi.edu/in-notes/rfc1738.txt - - [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB - Compressed - Data Format Specification version 3.3", RFC 1950, May 1996. - - ftp://ftp.isi.edu/in-notes/rfc1950.txt - - -8. Appendix - - -A. Appendix A - Genre List from ID3v1 - - The following genres is defined in ID3v1 - - 0.Blues - 1.Classic Rock - 2.Country - 3.Dance - 4.Disco - 5.Funk - 6.Grunge - 7.Hip-Hop - 8.Jazz - 9.Metal - 10.New Age - 11.Oldies - 12.Other - 13.Pop - 14.R&B - 15.Rap - 16.Reggae - 17.Rock - 18.Techno - 19.Industrial - 20.Alternative - 21.Ska - 22.Death Metal - 23.Pranks - 24.Soundtrack - 25.Euro-Techno - 26.Ambient - 27.Trip-Hop - 28.Vocal - 29.Jazz+Funk - 30.Fusion - 31.Trance - 32.Classical - 33.Instrumental - 34.Acid - 35.House - 36.Game - 37.Sound Clip - 38.Gospel - 39.Noise - 40.AlternRock - 41.Bass - 42.Soul - 43.Punk - 44.Space - 45.Meditative - 46.Instrumental Pop - 47.Instrumental Rock - 48.Ethnic - 49.Gothic - 50.Darkwave - 51.Techno-Industrial - 52.Electronic - 53.Pop-Folk - 54.Eurodance - 55.Dream - 56.Southern Rock - 57.Comedy - 58.Cult - 59.Gangsta - 60.Top 40 - 61.Christian Rap - 62.Pop/Funk - 63.Jungle - 64.Native American - 65.Cabaret - 66.New Wave - 67.Psychadelic - 68.Rave - 69.Showtunes - 70.Trailer - 71.Lo-Fi - 72.Tribal - 73.Acid Punk - 74.Acid Jazz - 75.Polka - 76.Retro - 77.Musical - 78.Rock & Roll - 79.Hard Rock - - The following genres are Winamp extensions - - 80.Folk - 81.Folk-Rock - 82.National Folk - 83.Swing - 84.Fast Fusion - 85.Bebob - 86.Latin - 87.Revival - 88.Celtic - 89.Bluegrass - 90.Avantgarde - 91.Gothic Rock - 92.Progressive Rock - 93.Psychedelic Rock - 94.Symphonic Rock - 95.Slow Rock - 96.Big Band - 97.Chorus - 98.Easy Listening - 99.Acoustic - 100.Humour - 101.Speech - 102.Chanson - 103.Opera - 104.Chamber Music - 105.Sonata - 106.Symphony - 107.Booty Bass - 108.Primus - 109.Porn Groove - 110.Satire - 111.Slow Jam - 112.Club - 113.Tango - 114.Samba - 115.Folklore - 116.Ballad - 117.Power Ballad - 118.Rhythmic Soul - 119.Freestyle - 120.Duet - 121.Punk Rock - 122.Drum Solo - 123.Acapella - 124.Euro-House - 125.Dance Hall - - -9. Author's Address - - Written by - - Martin Nilsson - Rydsvägen 246 C. 30 - S-584 34 Linköping - Sweden - - Email: nilsson@id3.org - - - Edited by - - Dirk Mahoney - 57 Pechey Street - Chermside Q - Australia 4032 - - Email: dirk@id3.org - - - Johan Sundström - Alsättersgatan 5 A. 34 - S-584 35 Linköping - Sweden - - Email: johan@id3.org diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt deleted file mode 100644 index 74a21bed3..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-frames.txt +++ /dev/null @@ -1,1734 +0,0 @@ -$Id$ - -Informal standard M. Nilsson -Document: id3v2.4.0-frames.txt 1st November 2000 - - - ID3 tag version 2.4.0 - Native Frames - -Status of this document - - This document is an informal standard and replaces the ID3v2.3.0 - standard [ID3v2]. A formal standard will use another revision number - even if the content is identical to document. The contents in this - document may change for clarifications but never for added or altered - functionallity. - - Distribution of this document is unlimited. - - -Abstract - - This document describes the frames natively supported by ID3v2.4.0, - which is a revised version of the ID3v2 informal standard [ID3v2.3.0] - version 2.3.0. The ID3v2 offers a flexible way of storing audio meta - information within audio file itself. The information may be - technical information, such as equalisation curves, as well as title, - performer, copyright etc. - - ID3v2.4.0 is meant to be as close as possible to ID3v2.3.0 in order - to allow for implementations to be revised as easily as possible. - - -1. Table of contents - - 2. Conventions in this document - 3. Default flags - 4. Declared ID3v2 frames - 4.1. Unique file identifier - 4.2. Text information frames - 4.2.1. Identification frames - 4.2.2. Involved persons frames - 4.2.3. Derived and subjective properties frames - 4.2.4. Rights and license frames - 4.2.5. Other text frames - 4.2.6. User defined text information frame - 4.3. URL link frames - 4.3.1. URL link frames - details - 4.3.2. User defined URL link frame - 4.4. Music CD Identifier - 4.5. Event timing codes - 4.6. MPEG location lookup table - 4.7. Synced tempo codes - 4.8. Unsynchronised lyrics/text transcription - 4.9. Synchronised lyrics/text - 4.10. Comments - 4.11. Relative volume adjustment (2) - 4.12. Equalisation (2) - 4.13. Reverb - 4.14. Attached picture - 4.15. General encapsulated object - 4.16. Play counter - 4.17. Popularimeter - 4.18. Recommended buffer size - 4.19. Audio encryption - 4.20. Linked information - 4.21. Position synchronisation frame - 4.22. Terms of use - 4.23. Ownership frame - 4.24. Commercial frame - 4.25. Encryption method registration - 4.26. Group identification registration - 4.27. Private frame - 4.28. Signature frame - 4.29. Seek frame - 4.30. Audio seek point index - 5. Copyright - 6. References - 7. Appendix - A. Appendix A - Genre List from ID3v1 - 8. Author's Address - - -2. Conventions in this document - - Text within "" is a text string exactly as it appears in a tag. - Numbers preceded with $ are hexadecimal and numbers preceded with % - are binary. $xx is used to indicate a byte with unknown content. %x - is used to indicate a bit with unknown content. The most significant - bit (MSB) of a byte is called 'bit 7' and the least significant bit - (LSB) is called 'bit 0'. - - A tag is the whole tag described the ID3v2 main structure document - [ID3v2-strct]. A frame is a block of information in the tag. The tag - consists of a header, frames and optional padding. A field is a piece - of information; one value, a string etc. A numeric string is a string - that consists of the characters "0123456789" only. - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in RFC 2119 [KEYWORDS]. - - -3. Default flags - - The default settings for the frames described in this document can be - divided into the following classes. The flags may be set differently - if found more suitable by the software. - - 1. Discarded if tag is altered, discarded if file is altered. - - None. - - 2. Discarded if tag is altered, preserved if file is altered. - - None. - - 3. Preserved if tag is altered, discarded if file is altered. - - ASPI, AENC, ETCO, EQU2, MLLT, POSS, SEEK, SYLT, SYTC, RVA2, TENC, - TLEN - - 4. Preserved if tag is altered, preserved if file is altered. - - The rest of the frames. - - -4. Declared ID3v2 frames - - The following frames are declared in this draft. - - 4.19 AENC Audio encryption - 4.14 APIC Attached picture - 4.30 ASPI Audio seek point index - - 4.10 COMM Comments - 4.24 COMR Commercial frame - - 4.25 ENCR Encryption method registration - 4.12 EQU2 Equalisation (2) - 4.5 ETCO Event timing codes - - 4.15 GEOB General encapsulated object - 4.26 GRID Group identification registration - - 4.20 LINK Linked information - - 4.4 MCDI Music CD identifier - 4.6 MLLT MPEG location lookup table - - 4.23 OWNE Ownership frame - - 4.27 PRIV Private frame - 4.16 PCNT Play counter - 4.17 POPM Popularimeter - 4.21 POSS Position synchronisation frame - - 4.18 RBUF Recommended buffer size - 4.11 RVA2 Relative volume adjustment (2) - 4.13 RVRB Reverb - - 4.29 SEEK Seek frame - 4.28 SIGN Signature frame - 4.9 SYLT Synchronised lyric/text - 4.7 SYTC Synchronised tempo codes - - 4.2.1 TALB Album/Movie/Show title - 4.2.3 TBPM BPM (beats per minute) - 4.2.2 TCOM Composer - 4.2.3 TCON Content type - 4.2.4 TCOP Copyright message - 4.2.5 TDEN Encoding time - 4.2.5 TDLY Playlist delay - 4.2.5 TDOR Original release time - 4.2.5 TDRC Recording time - 4.2.5 TDRL Release time - 4.2.5 TDTG Tagging time - 4.2.2 TENC Encoded by - 4.2.2 TEXT Lyricist/Text writer - 4.2.3 TFLT File type - 4.2.2 TIPL Involved people list - 4.2.1 TIT1 Content group description - 4.2.1 TIT2 Title/songname/content description - 4.2.1 TIT3 Subtitle/Description refinement - 4.2.3 TKEY Initial key - 4.2.3 TLAN Language(s) - 4.2.3 TLEN Length - 4.2.2 TMCL Musician credits list - 4.2.3 TMED Media type - 4.2.3 TMOO Mood - 4.2.1 TOAL Original album/movie/show title - 4.2.5 TOFN Original filename - 4.2.2 TOLY Original lyricist(s)/text writer(s) - 4.2.2 TOPE Original artist(s)/performer(s) - 4.2.4 TOWN File owner/licensee - 4.2.2 TPE1 Lead performer(s)/Soloist(s) - 4.2.2 TPE2 Band/orchestra/accompaniment - 4.2.2 TPE3 Conductor/performer refinement - 4.2.2 TPE4 Interpreted, remixed, or otherwise modified by - 4.2.1 TPOS Part of a set - 4.2.4 TPRO Produced notice - 4.2.4 TPUB Publisher - 4.2.1 TRCK Track number/Position in set - 4.2.4 TRSN Internet radio station name - 4.2.4 TRSO Internet radio station owner - 4.2.5 TSOA Album sort order - 4.2.5 TSOP Performer sort order - 4.2.5 TSOT Title sort order - 4.2.1 TSRC ISRC (international standard recording code) - 4.2.5 TSSE Software/Hardware and settings used for encoding - 4.2.1 TSST Set subtitle - 4.2.2 TXXX User defined text information frame - - 4.1 UFID Unique file identifier - 4.22 USER Terms of use - 4.8 USLT Unsynchronised lyric/text transcription - - 4.3.1 WCOM Commercial information - 4.3.1 WCOP Copyright/Legal information - 4.3.1 WOAF Official audio file webpage - 4.3.1 WOAR Official artist/performer webpage - 4.3.1 WOAS Official audio source webpage - 4.3.1 WORS Official Internet radio station homepage - 4.3.1 WPAY Payment - 4.3.1 WPUB Publishers official webpage - 4.3.2 WXXX User defined URL link frame - - -4.1. Unique file identifier - - This frame's purpose is to be able to identify the audio file in a - database, that may provide more information relevant to the content. - Since standardisation of such a database is beyond this document, all - UFID frames begin with an 'owner identifier' field. It is a null- - terminated string with a URL [URL] containing an email address, or a - link to a location where an email address can be found, that belongs - to the organisation responsible for this specific database - implementation. Questions regarding the database should be sent to - the indicated email address. The URL should not be used for the - actual database queries. The string - "http://www.id3.org/dummy/ufid.html" should be used for tests. The - 'Owner identifier' must be non-empty (more than just a termination). - The 'Owner identifier' is then followed by the actual identifier, - which may be up to 64 bytes. There may be more than one "UFID" frame - in a tag, but only one with the same 'Owner identifier'. - - <Header for 'Unique file identifier', ID: "UFID"> - Owner identifier <text string> $00 - Identifier <up to 64 bytes binary data> - - -4.2. Text information frames - - The text information frames are often the most important frames, - containing information like artist, album and more. There may only be - one text information frame of its kind in an tag. All text - information frames supports multiple strings, stored as a null - separated list, where null is reperesented by the termination code - for the charater encoding. All text frame identifiers begin with "T". - Only text frame identifiers begin with "T", with the exception of the - "TXXX" frame. All the text information frames have the following - format: - - <Header for 'Text information frame', ID: "T000" - "TZZZ", - excluding "TXXX" described in 4.2.6.> - Text encoding $xx - Information <text string(s) according to encoding> - - -4.2.1. Identification frames - - TIT1 - The 'Content group description' frame is used if the sound belongs to - a larger category of sounds/music. For example, classical music is - often sorted in different musical sections (e.g. "Piano Concerto", - "Weather - Hurricane"). - - TIT2 - The 'Title/Songname/Content description' frame is the actual name of - the piece (e.g. "Adagio", "Hurricane Donna"). - - TIT3 - The 'Subtitle/Description refinement' frame is used for information - directly related to the contents title (e.g. "Op. 16" or "Performed - live at Wembley"). - - TALB - The 'Album/Movie/Show title' frame is intended for the title of the - recording (or source of sound) from which the audio in the file is - taken. - - TOAL - The 'Original album/movie/show title' frame is intended for the title - of the original recording (or source of sound), if for example the - music in the file should be a cover of a previously released song. - - TRCK - The 'Track number/Position in set' frame is a numeric string - containing the order number of the audio-file on its original - recording. This MAY be extended with a "/" character and a numeric - string containing the total number of tracks/elements on the original - recording. E.g. "4/9". - - TPOS - The 'Part of a set' frame is a numeric string that describes which - part of a set the audio came from. This frame is used if the source - described in the "TALB" frame is divided into several mediums, e.g. a - double CD. The value MAY be extended with a "/" character and a - numeric string containing the total number of parts in the set. E.g. - "1/2". - - TSST - The 'Set subtitle' frame is intended for the subtitle of the part of - a set this track belongs to. - - TSRC - The 'ISRC' frame should contain the International Standard Recording - Code [ISRC] (12 characters). - - -4.2.2. Involved persons frames - - TPE1 - The 'Lead artist/Lead performer/Soloist/Performing group' is - used for the main artist. - - TPE2 - The 'Band/Orchestra/Accompaniment' frame is used for additional - information about the performers in the recording. - - TPE3 - The 'Conductor' frame is used for the name of the conductor. - - TPE4 - The 'Interpreted, remixed, or otherwise modified by' frame contains - more information about the people behind a remix and similar - interpretations of another existing piece. - - TOPE - The 'Original artist/performer' frame is intended for the performer - of the original recording, if for example the music in the file - should be a cover of a previously released song. - - TEXT - The 'Lyricist/Text writer' frame is intended for the writer of the - text or lyrics in the recording. - - TOLY - The 'Original lyricist/text writer' frame is intended for the - text writer of the original recording, if for example the music in - the file should be a cover of a previously released song. - - TCOM - The 'Composer' frame is intended for the name of the composer. - - TMCL - The 'Musician credits list' is intended as a mapping between - instruments and the musician that played it. Every odd field is an - instrument and every even is an artist or a comma delimited list of - artists. - - TIPL - The 'Involved people list' is very similar to the musician credits - list, but maps between functions, like producer, and names. - - TENC - The 'Encoded by' frame contains the name of the person or - organisation that encoded the audio file. This field may contain a - copyright message, if the audio file also is copyrighted by the - encoder. - - -4.2.3. Derived and subjective properties frames - - TBPM - The 'BPM' frame contains the number of beats per minute in the - main part of the audio. The BPM is an integer and represented as a - numerical string. - - TLEN - The 'Length' frame contains the length of the audio file in - milliseconds, represented as a numeric string. - - TKEY - The 'Initial key' frame contains the musical key in which the sound - starts. It is represented as a string with a maximum length of three - characters. The ground keys are represented with "A","B","C","D","E", - "F" and "G" and halfkeys represented with "b" and "#". Minor is - represented as "m", e.g. "Dbm" $00. Off key is represented with an - "o" only. - - TLAN - The 'Language' frame should contain the languages of the text or - lyrics spoken or sung in the audio. The language is represented with - three characters according to ISO-639-2 [ISO-639-2]. If more than one - language is used in the text their language codes should follow - according to the amount of their usage, e.g. "eng" $00 "sve" $00. - - TCON - The 'Content type', which ID3v1 was stored as a one byte numeric - value only, is now a string. You may use one or several of the ID3v1 - types as numerical strings, or, since the category list would be - impossible to maintain with accurate and up to date categories, - define your own. Example: "21" $00 "Eurodisco" $00 - - You may also use any of the following keywords: - - RX Remix - CR Cover - - TFLT - The 'File type' frame indicates which type of audio this tag defines. - The following types and refinements are defined: - - MIME MIME type follows - MPG MPEG Audio - /1 MPEG 1/2 layer I - /2 MPEG 1/2 layer II - /3 MPEG 1/2 layer III - /2.5 MPEG 2.5 - /AAC Advanced audio compression - VQF Transform-domain Weighted Interleave Vector Quantisation - PCM Pulse Code Modulated audio - - but other types may be used, but not for these types though. This is - used in a similar way to the predefined types in the "TMED" frame, - but without parentheses. If this frame is not present audio type is - assumed to be "MPG". - - TMED - The 'Media type' frame describes from which media the sound - originated. This may be a text string or a reference to the - predefined media types found in the list below. Example: - "VID/PAL/VHS" $00. - - DIG Other digital media - /A Analogue transfer from media - - ANA Other analogue media - /WAC Wax cylinder - /8CA 8-track tape cassette - - CD CD - /A Analogue transfer from media - /DD DDD - /AD ADD - /AA AAD - - LD Laserdisc - - TT Turntable records - /33 33.33 rpm - /45 45 rpm - /71 71.29 rpm - /76 76.59 rpm - /78 78.26 rpm - /80 80 rpm - - MD MiniDisc - /A Analogue transfer from media - - DAT DAT - /A Analogue transfer from media - /1 standard, 48 kHz/16 bits, linear - /2 mode 2, 32 kHz/16 bits, linear - /3 mode 3, 32 kHz/12 bits, non-linear, low speed - /4 mode 4, 32 kHz/12 bits, 4 channels - /5 mode 5, 44.1 kHz/16 bits, linear - /6 mode 6, 44.1 kHz/16 bits, 'wide track' play - - DCC DCC - /A Analogue transfer from media - - DVD DVD - /A Analogue transfer from media - - TV Television - /PAL PAL - /NTSC NTSC - /SECAM SECAM - - VID Video - /PAL PAL - /NTSC NTSC - /SECAM SECAM - /VHS VHS - /SVHS S-VHS - /BETA BETAMAX - - RAD Radio - /FM FM - /AM AM - /LW LW - /MW MW - - TEL Telephone - /I ISDN - - MC MC (normal cassette) - /4 4.75 cm/s (normal speed for a two sided cassette) - /9 9.5 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - REE Reel - /9 9.5 cm/s - /19 19 cm/s - /38 38 cm/s - /76 76 cm/s - /I Type I cassette (ferric/normal) - /II Type II cassette (chrome) - /III Type III cassette (ferric chrome) - /IV Type IV cassette (metal) - - TMOO - The 'Mood' frame is intended to reflect the mood of the audio with a - few keywords, e.g. "Romantic" or "Sad". - - -4.2.4. Rights and license frames - - TCOP - The 'Copyright message' frame, in which the string must begin with a - year and a space character (making five characters), is intended for - the copyright holder of the original sound, not the audio file - itself. The absence of this frame means only that the copyright - information is unavailable or has been removed, and must not be - interpreted to mean that the audio is public domain. Every time this - field is displayed the field must be preceded with "Copyright " (C) " - ", where (C) is one character showing a C in a circle. - - TPRO - The 'Produced notice' frame, in which the string must begin with a - year and a space character (making five characters), is intended for - the production copyright holder of the original sound, not the audio - file itself. The absence of this frame means only that the production - copyright information is unavailable or has been removed, and must - not be interpreted to mean that the audio is public domain. Every - time this field is displayed the field must be preceded with - "Produced " (P) " ", where (P) is one character showing a P in a - circle. - - TPUB - The 'Publisher' frame simply contains the name of the label or - publisher. - - TOWN - The 'File owner/licensee' frame contains the name of the owner or - licensee of the file and it's contents. - - TRSN - The 'Internet radio station name' frame contains the name of the - internet radio station from which the audio is streamed. - - TRSO - The 'Internet radio station owner' frame contains the name of the - owner of the internet radio station from which the audio is - streamed. - -4.2.5. Other text frames - - TOFN - The 'Original filename' frame contains the preferred filename for the - file, since some media doesn't allow the desired length of the - filename. The filename is case sensitive and includes its suffix. - - TDLY - The 'Playlist delay' defines the numbers of milliseconds of silence - that should be inserted before this audio. The value zero indicates - that this is a part of a multifile audio track that should be played - continuously. - - TDEN - The 'Encoding time' frame contains a timestamp describing when the - audio was encoded. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TDOR - The 'Original release time' frame contains a timestamp describing - when the original recording of the audio was released. Timestamp - format is described in the ID3v2 structure document [ID3v2-strct]. - - TDRC - The 'Recording time' frame contains a timestamp describing when the - audio was recorded. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TDRL - The 'Release time' frame contains a timestamp describing when the - audio was first released. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TDTG - The 'Tagging time' frame contains a timestamp describing then the - audio was tagged. Timestamp format is described in the ID3v2 - structure document [ID3v2-strct]. - - TSSE - The 'Software/Hardware and settings used for encoding' frame - includes the used audio encoder and its settings when the file was - encoded. Hardware refers to hardware encoders, not the computer on - which a program was run. - - TSOA - The 'Album sort order' frame defines a string which should be used - instead of the album name (TALB) for sorting purposes. E.g. an album - named "A Soundtrack" might preferably be sorted as "Soundtrack". - - TSOP - The 'Performer sort order' frame defines a string which should be - used instead of the performer (TPE2) for sorting purposes. - - TSOT - The 'Title sort order' frame defines a string which should be used - instead of the title (TIT2) for sorting purposes. - - -4.2.6. User defined text information frame - - This frame is intended for one-string text information concerning the - audio file in a similar way to the other "T"-frames. The frame body - consists of a description of the string, represented as a terminated - string, followed by the actual string. There may be more than one - "TXXX" frame in each tag, but only one with the same description. - - <Header for 'User defined text information frame', ID: "TXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - Value <text string according to encoding> - - -4.3. URL link frames - - With these frames dynamic data such as webpages with touring - information, price information or plain ordinary news can be added to - the tag. There may only be one URL [URL] link frame of its kind in an - tag, except when stated otherwise in the frame description. If the - text string is followed by a string termination, all the following - information should be ignored and not be displayed. All URL link - frame identifiers begins with "W". Only URL link frame identifiers - begins with "W", except for "WXXX". All URL link frames have the - following format: - - <Header for 'URL link frame', ID: "W000" - "WZZZ", excluding "WXXX" - described in 4.3.2.> - URL <text string> - - -4.3.1. URL link frames - details - - WCOM - The 'Commercial information' frame is a URL pointing at a webpage - with information such as where the album can be bought. There may be - more than one "WCOM" frame in a tag, but not with the same content. - - WCOP - The 'Copyright/Legal information' frame is a URL pointing at a - webpage where the terms of use and ownership of the file is - described. - - WOAF - The 'Official audio file webpage' frame is a URL pointing at a file - specific webpage. - - WOAR - The 'Official artist/performer webpage' frame is a URL pointing at - the artists official webpage. There may be more than one "WOAR" frame - in a tag if the audio contains more than one performer, but not with - the same content. - - WOAS - The 'Official audio source webpage' frame is a URL pointing at the - official webpage for the source of the audio file, e.g. a movie. - - WORS - The 'Official Internet radio station homepage' contains a URL - pointing at the homepage of the internet radio station. - - WPAY - The 'Payment' frame is a URL pointing at a webpage that will handle - the process of paying for this file. - - WPUB - The 'Publishers official webpage' frame is a URL pointing at the - official webpage for the publisher. - - -4.3.2. User defined URL link frame - - This frame is intended for URL [URL] links concerning the audio file - in a similar way to the other "W"-frames. The frame body consists - of a description of the string, represented as a terminated string, - followed by the actual URL. The URL is always encoded with ISO-8859-1 - [ISO-8859-1]. There may be more than one "WXXX" frame in each tag, - but only one with the same description. - - <Header for 'User defined URL link frame', ID: "WXXX"> - Text encoding $xx - Description <text string according to encoding> $00 (00) - URL <text string> - - -4.4. Music CD identifier - - This frame is intended for music that comes from a CD, so that the CD - can be identified in databases such as the CDDB [CDDB]. The frame - consists of a binary dump of the Table Of Contents, TOC, from the CD, - which is a header of 4 bytes and then 8 bytes/track on the CD plus 8 - bytes for the 'lead out', making a maximum of 804 bytes. The offset - to the beginning of every track on the CD should be described with a - four bytes absolute CD-frame address per track, and not with absolute - time. When this frame is used the presence of a valid "TRCK" frame is - REQUIRED, even if the CD's only got one track. It is recommended that - this frame is always added to tags originating from CDs. There may - only be one "MCDI" frame in each tag. - - <Header for 'Music CD identifier', ID: "MCDI"> - CD TOC <binary data> - - -4.5. Event timing codes - - This frame allows synchronisation with key events in the audio. The - header is: - - <Header for 'Event timing codes', ID: "ETCO"> - Time stamp format $xx - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Absolute time means that every stamp contains the time from the - beginning of the file. - - Followed by a list of key events in the following format: - - Type of event $xx - Time stamp $xx (xx ...) - - The 'Time stamp' is set to zero if directly at the beginning of the - sound or after the previous event. All events MUST be sorted in - chronological order. The type of event is as follows: - - $00 padding (has no meaning) - $01 end of initial silence - $02 intro start - $03 main part start - $04 outro start - $05 outro end - $06 verse start - $07 refrain start - $08 interlude start - $09 theme start - $0A variation start - $0B key change - $0C time change - $0D momentary unwanted noise (Snap, Crackle & Pop) - $0E sustained noise - $0F sustained noise end - $10 intro end - $11 main part end - $12 verse end - $13 refrain end - $14 theme end - $15 profanity - $16 profanity end - - $17-$DF reserved for future use - - $E0-$EF not predefined synch 0-F - - $F0-$FC reserved for future use - - $FD audio end (start of silence) - $FE audio file ends - $FF one more byte of events follows (all the following bytes with - the value $FF have the same function) - - Terminating the start events such as "intro start" is OPTIONAL. The - 'Not predefined synch's ($E0-EF) are for user events. You might want - to synchronise your music to something, like setting off an explosion - on-stage, activating a screensaver etc. - - There may only be one "ETCO" frame in each tag. - - -4.6. MPEG location lookup table - - To increase performance and accuracy of jumps within a MPEG [MPEG] - audio file, frames with time codes in different locations in the file - might be useful. This ID3v2 frame includes references that the - software can use to calculate positions in the file. After the frame - header follows a descriptor of how much the 'frame counter' should be - increased for every reference. If this value is two then the first - reference points out the second frame, the 2nd reference the 4th - frame, the 3rd reference the 6th frame etc. In a similar way the - 'bytes between reference' and 'milliseconds between reference' points - out bytes and milliseconds respectively. - - Each reference consists of two parts; a certain number of bits, as - defined in 'bits for bytes deviation', that describes the difference - between what is said in 'bytes between reference' and the reality and - a certain number of bits, as defined in 'bits for milliseconds - deviation', that describes the difference between what is said in - 'milliseconds between reference' and the reality. The number of bits - in every reference, i.e. 'bits for bytes deviation'+'bits for - milliseconds deviation', must be a multiple of four. There may only - be one "MLLT" frame in each tag. - - <Header for 'Location lookup table', ID: "MLLT"> - MPEG frames between reference $xx xx - Bytes between reference $xx xx xx - Milliseconds between reference $xx xx xx - Bits for bytes deviation $xx - Bits for milliseconds dev. $xx - - Then for every reference the following data is included; - - Deviation in bytes %xxx.... - Deviation in milliseconds %xxx.... - - -4.7. Synchronised tempo codes - - For a more accurate description of the tempo of a musical piece, this - frame might be used. After the header follows one byte describing - which time stamp format should be used. Then follows one or more - tempo codes. Each tempo code consists of one tempo part and one time - part. The tempo is in BPM described with one or two bytes. If the - first byte has the value $FF, one more byte follows, which is added - to the first giving a range from 2 - 510 BPM, since $00 and $01 is - reserved. $00 is used to describe a beat-free time period, which is - not the same as a music-free time period. $01 is used to indicate one - single beat-stroke followed by a beat-free period. - - The tempo descriptor is followed by a time stamp. Every time the - tempo in the music changes, a tempo descriptor may indicate this for - the player. All tempo descriptors MUST be sorted in chronological - order. The first beat-stroke in a time-period is at the same time as - the beat description occurs. There may only be one "SYTC" frame in - each tag. - - <Header for 'Synchronised tempo codes', ID: "SYTC"> - Time stamp format $xx - Tempo data <binary data> - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Absolute time means that every stamp contains the time from the - beginning of the file. - - -4.8. Unsynchronised lyrics/text transcription - - This frame contains the lyrics of the song or a text transcription of - other vocal activities. The head includes an encoding descriptor and - a content descriptor. The body consists of the actual text. The - 'Content descriptor' is a terminated string. If no descriptor is - entered, 'Content descriptor' is $00 (00) only. Newline characters - are allowed in the text. There may be more than one 'Unsynchronised - lyrics/text transcription' frame in each tag, but only one with the - same language and content descriptor. - - <Header for 'Unsynchronised lyrics/text transcription', ID: "USLT"> - Text encoding $xx - Language $xx xx xx - Content descriptor <text string according to encoding> $00 (00) - Lyrics/text <full text string according to encoding> - - -4.9. Synchronised lyrics/text - - This is another way of incorporating the words, said or sung lyrics, - in the audio file as text, this time, however, in sync with the - audio. It might also be used to describing events e.g. occurring on a - stage or on the screen in sync with the audio. The header includes a - content descriptor, represented with as terminated text string. If no - descriptor is entered, 'Content descriptor' is $00 (00) only. - - <Header for 'Synchronised lyrics/text', ID: "SYLT"> - Text encoding $xx - Language $xx xx xx - Time stamp format $xx - Content type $xx - Content descriptor <text string according to encoding> $00 (00) - - Content type: $00 is other - $01 is lyrics - $02 is text transcription - $03 is movement/part name (e.g. "Adagio") - $04 is events (e.g. "Don Quijote enters the stage") - $05 is chord (e.g. "Bb F Fsus") - $06 is trivia/'pop up' information - $07 is URLs to webpages - $08 is URLs to images - - Time stamp format: - - $01 Absolute time, 32 bit sized, using MPEG [MPEG] frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - Absolute time means that every stamp contains the time from the - beginning of the file. - - The text that follows the frame header differs from that of the - unsynchronised lyrics/text transcription in one major way. Each - syllable (or whatever size of text is considered to be convenient by - the encoder) is a null terminated string followed by a time stamp - denoting where in the sound file it belongs. Each sync thus has the - following structure: - - Terminated text to be synced (typically a syllable) - Sync identifier (terminator to above string) $00 (00) - Time stamp $xx (xx ...) - - The 'time stamp' is set to zero or the whole sync is omitted if - located directly at the beginning of the sound. All time stamps - should be sorted in chronological order. The sync can be considered - as a validator of the subsequent string. - - Newline characters are allowed in all "SYLT" frames and MUST be used - after every entry (name, event etc.) in a frame with the content type - $03 - $04. - - A few considerations regarding whitespace characters: Whitespace - separating words should mark the beginning of a new word, thus - occurring in front of the first syllable of a new word. This is also - valid for new line characters. A syllable followed by a comma should - not be broken apart with a sync (both the syllable and the comma - should be before the sync). - - An example: The "USLT" passage - - "Strangers in the night" $0A "Exchanging glances" - - would be "SYLT" encoded as: - - "Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx - " night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx - xx "glan" $00 xx xx "ces" $00 xx xx - - There may be more than one "SYLT" frame in each tag, but only one - with the same language and content descriptor. - - -4.10. Comments - - This frame is intended for any kind of full text information that - does not fit in any other frame. It consists of a frame header - followed by encoding, language and content descriptors and is ended - with the actual comment as a text string. Newline characters are - allowed in the comment text string. There may be more than one - comment frame in each tag, but only one with the same language and - content descriptor. - - <Header for 'Comment', ID: "COMM"> - Text encoding $xx - Language $xx xx xx - Short content descrip. <text string according to encoding> $00 (00) - The actual text <full text string according to encoding> - - -4.11. Relative volume adjustment (2) - - This is a more subjective frame than the previous ones. It allows the - user to say how much he wants to increase/decrease the volume on each - channel when the file is played. The purpose is to be able to align - all files to a reference volume, so that you don't have to change the - volume constantly. This frame may also be used to balance adjust the - audio. The volume adjustment is encoded as a fixed point decibel - value, 16 bit signed integer representing (adjustment*512), giving - +/- 64 dB with a precision of 0.001953125 dB. E.g. +2 dB is stored as - $04 00 and -2 dB is $FC 00. There may be more than one "RVA2" frame - in each tag, but only one with the same identification string. - - <Header for 'Relative volume adjustment (2)', ID: "RVA2"> - Identification <text string> $00 - - The 'identification' string is used to identify the situation and/or - device where this adjustment should apply. The following is then - repeated for every channel - - Type of channel $xx - Volume adjustment $xx xx - Bits representing peak $xx - Peak volume $xx (xx ...) - - - Type of channel: $00 Other - $01 Master volume - $02 Front right - $03 Front left - $04 Back right - $05 Back left - $06 Front centre - $07 Back centre - $08 Subwoofer - - Bits representing peak can be any number between 0 and 255. 0 means - that there is no peak volume field. The peak volume field is always - padded to whole bytes, setting the most significant bits to zero. - - -4.12. Equalisation (2) - - This is another subjective, alignment frame. It allows the user to - predefine an equalisation curve within the audio file. There may be - more than one "EQU2" frame in each tag, but only one with the same - identification string. - - <Header of 'Equalisation (2)', ID: "EQU2"> - Interpolation method $xx - Identification <text string> $00 - - The 'interpolation method' describes which method is preferred when - an interpolation between the adjustment point that follows. The - following methods are currently defined: - - $00 Band - No interpolation is made. A jump from one adjustment level to - another occurs in the middle between two adjustment points. - $01 Linear - Interpolation between adjustment points is linear. - - The 'identification' string is used to identify the situation and/or - device where this adjustment should apply. The following is then - repeated for every adjustment point - - Frequency $xx xx - Volume adjustment $xx xx - - The frequency is stored in units of 1/2 Hz, giving it a range from 0 - to 32767 Hz. - - The volume adjustment is encoded as a fixed point decibel value, 16 - bit signed integer representing (adjustment*512), giving +/- 64 dB - with a precision of 0.001953125 dB. E.g. +2 dB is stored as $04 00 - and -2 dB is $FC 00. - - Adjustment points should be ordered by frequency and one frequency - should only be described once in the frame. - - -4.13. Reverb - - Yet another subjective frame, with which you can adjust echoes of - different kinds. Reverb left/right is the delay between every bounce - in ms. Reverb bounces left/right is the number of bounces that should - be made. $FF equals an infinite number of bounces. Feedback is the - amount of volume that should be returned to the next echo bounce. $00 - is 0%, $FF is 100%. If this value were $7F, there would be 50% volume - reduction on the first bounce, 50% of that on the second and so on. - Left to left means the sound from the left bounce to be played in the - left speaker, while left to right means sound from the left bounce to - be played in the right speaker. - - 'Premix left to right' is the amount of left sound to be mixed in the - right before any reverb is applied, where $00 id 0% and $FF is 100%. - 'Premix right to left' does the same thing, but right to left. - Setting both premix to $FF would result in a mono output (if the - reverb is applied symmetric). There may only be one "RVRB" frame in - each tag. - - <Header for 'Reverb', ID: "RVRB"> - Reverb left (ms) $xx xx - Reverb right (ms) $xx xx - Reverb bounces, left $xx - Reverb bounces, right $xx - Reverb feedback, left to left $xx - Reverb feedback, left to right $xx - Reverb feedback, right to right $xx - Reverb feedback, right to left $xx - Premix left to right $xx - Premix right to left $xx - - -4.14. Attached picture - - This frame contains a picture directly related to the audio file. - Image format is the MIME type and subtype [MIME] for the image. In - the event that the MIME media type name is omitted, "image/" will be - implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format - should be used when interoperability is wanted. Description is a - short description of the picture, represented as a terminated - text string. There may be several pictures attached to one file, each - in their individual "APIC" frame, but only one with the same content - descriptor. There may only be one picture with the picture type - declared as picture type $01 and $02 respectively. There is the - possibility to put only a link to the image file by using the 'MIME - type' "-->" and having a complete URL [URL] instead of picture data. - The use of linked files should however be used sparingly since there - is the risk of separation of files. - - <Header for 'Attached picture', ID: "APIC"> - Text encoding $xx - MIME type <text string> $00 - Picture type $xx - Description <text string according to encoding> $00 (00) - Picture data <binary data> - - - Picture type: $00 Other - $01 32x32 pixels 'file icon' (PNG only) - $02 Other file icon - $03 Cover (front) - $04 Cover (back) - $05 Leaflet page - $06 Media (e.g. label side of CD) - $07 Lead artist/lead performer/soloist - $08 Artist/performer - $09 Conductor - $0A Band/Orchestra - $0B Composer - $0C Lyricist/text writer - $0D Recording Location - $0E During recording - $0F During performance - $10 Movie/video screen capture - $11 A bright coloured fish - $12 Illustration - $13 Band/artist logotype - $14 Publisher/Studio logotype - - -4.15. General encapsulated object - - In this frame any type of file can be encapsulated. After the header, - 'Frame size' and 'Encoding' follows 'MIME type' [MIME] represented as - as a terminated string encoded with ISO 8859-1 [ISO-8859-1]. The - filename is case sensitive and is encoded as 'Encoding'. Then follows - a content description as terminated string, encoded as 'Encoding'. - The last thing in the frame is the actual object. The first two - strings may be omitted, leaving only their terminations. MIME type is - always an ISO-8859-1 text string. There may be more than one "GEOB" - frame in each tag, but only one with the same content descriptor. - - <Header for 'General encapsulated object', ID: "GEOB"> - Text encoding $xx - MIME type <text string> $00 - Filename <text string according to encoding> $00 (00) - Content description <text string according to encoding> $00 (00) - Encapsulated object <binary data> - - -4.16. Play counter - - This is simply a counter of the number of times a file has been - played. The value is increased by one every time the file begins to - play. There may only be one "PCNT" frame in each tag. When the - counter reaches all one's, one byte is inserted in front of the - counter thus making the counter eight bits bigger. The counter must - be at least 32-bits long to begin with. - - <Header for 'Play counter', ID: "PCNT"> - Counter $xx xx xx xx (xx ...) - - -4.17. Popularimeter - - The purpose of this frame is to specify how good an audio file is. - Many interesting applications could be found to this frame such as a - playlist that features better audio files more often than others or - it could be used to profile a person's taste and find other 'good' - files by comparing people's profiles. The frame contains the email - address to the user, one rating byte and a four byte play counter, - intended to be increased with one for every time the file is played. - The email is a terminated string. The rating is 1-255 where 1 is - worst and 255 is best. 0 is unknown. If no personal counter is wanted - it may be omitted. When the counter reaches all one's, one byte is - inserted in front of the counter thus making the counter eight bits - bigger in the same away as the play counter ("PCNT"). There may be - more than one "POPM" frame in each tag, but only one with the same - email address. - - <Header for 'Popularimeter', ID: "POPM"> - Email to user <text string> $00 - Rating $xx - Counter $xx xx xx xx (xx ...) - - -4.18. Recommended buffer size - - Sometimes the server from which an audio file is streamed is aware of - transmission or coding problems resulting in interruptions in the - audio stream. In these cases, the size of the buffer can be - recommended by the server using this frame. If the 'embedded info - flag' is true (1) then this indicates that an ID3 tag with the - maximum size described in 'Buffer size' may occur in the audio - stream. In such case the tag should reside between two MPEG [MPEG] - frames, if the audio is MPEG encoded. If the position of the next tag - is known, 'offset to next tag' may be used. The offset is calculated - from the end of tag in which this frame resides to the first byte of - the header in the next. This field may be omitted. Embedded tags are - generally not recommended since this could render unpredictable - behaviour from present software/hardware. - - For applications like streaming audio it might be an idea to embed - tags into the audio stream though. If the clients connects to - individual connections like HTTP and there is a possibility to begin - every transmission with a tag, then this tag should include a - 'recommended buffer size' frame. If the client is connected to a - arbitrary point in the stream, such as radio or multicast, then the - 'recommended buffer size' frame SHOULD be included in every tag. - - The 'Buffer size' should be kept to a minimum. There may only be one - "RBUF" frame in each tag. - - <Header for 'Recommended buffer size', ID: "RBUF"> - Buffer size $xx xx xx - Embedded info flag %0000000x - Offset to next tag $xx xx xx xx - - -4.19. Audio encryption - - This frame indicates if the actual audio stream is encrypted, and by - whom. Since standardisation of such encryption scheme is beyond this - document, all "AENC" frames begin with a terminated string with a - URL containing an email address, or a link to a location where an - email address can be found, that belongs to the organisation - responsible for this specific encrypted audio file. Questions - regarding the encrypted audio should be sent to the email address - specified. If a $00 is found directly after the 'Frame size' and the - audio file indeed is encrypted, the whole file may be considered - useless. - - After the 'Owner identifier', a pointer to an unencrypted part of the - audio can be specified. The 'Preview start' and 'Preview length' is - described in frames. If no part is unencrypted, these fields should - be left zeroed. After the 'preview length' field follows optionally a - data block required for decryption of the audio. There may be more - than one "AENC" frames in a tag, but only one with the same 'Owner - identifier'. - - <Header for 'Audio encryption', ID: "AENC"> - Owner identifier <text string> $00 - Preview start $xx xx - Preview length $xx xx - Encryption info <binary data> - - -4.20. Linked information - - To keep information duplication as low as possible this frame may be - used to link information from another ID3v2 tag that might reside in - another audio file or alone in a binary file. It is RECOMMENDED that - this method is only used when the files are stored on a CD-ROM or - other circumstances when the risk of file separation is low. The - frame contains a frame identifier, which is the frame that should be - linked into this tag, a URL [URL] field, where a reference to the - file where the frame is given, and additional ID data, if needed. - Data should be retrieved from the first tag found in the file to - which this link points. There may be more than one "LINK" frame in a - tag, but only one with the same contents. A linked frame is to be - considered as part of the tag and has the same restrictions as if it - was a physical part of the tag (i.e. only one "RVRB" frame allowed, - whether it's linked or not). - - <Header for 'Linked information', ID: "LINK"> - Frame identifier $xx xx xx xx - URL <text string> $00 - ID and additional data <text string(s)> - - Frames that may be linked and need no additional data are "ASPI", - "ETCO", "EQU2", "MCID", "MLLT", "OWNE", "RVA2", "RVRB", "SYTC", the - text information frames and the URL link frames. - - The "AENC", "APIC", "GEOB" and "TXXX" frames may be linked with - the content descriptor as additional ID data. - - The "USER" frame may be linked with the language field as additional - ID data. - - The "PRIV" frame may be linked with the owner identifier as - additional ID data. - - The "COMM", "SYLT" and "USLT" frames may be linked with three bytes - of language descriptor directly followed by a content descriptor as - additional ID data. - - -4.21. Position synchronisation frame - - This frame delivers information to the listener of how far into the - audio stream he picked up; in effect, it states the time offset from - the first frame in the stream. The frame layout is: - - <Head for 'Position synchronisation', ID: "POSS"> - Time stamp format $xx - Position $xx (xx ...) - - Where time stamp format is: - - $01 Absolute time, 32 bit sized, using MPEG frames as unit - $02 Absolute time, 32 bit sized, using milliseconds as unit - - and position is where in the audio the listener starts to receive, - i.e. the beginning of the next frame. If this frame is used in the - beginning of a file the value is always 0. There may only be one - "POSS" frame in each tag. - - -4.22. Terms of use frame - - This frame contains a brief description of the terms of use and - ownership of the file. More detailed information concerning the legal - terms might be available through the "WCOP" frame. Newlines are - allowed in the text. There may be more than one 'Terms of use' frame - in a tag, but only one with the same 'Language'. - - <Header for 'Terms of use frame', ID: "USER"> - Text encoding $xx - Language $xx xx xx - The actual text <text string according to encoding> - - -4.23. Ownership frame - - The ownership frame might be used as a reminder of a made transaction - or, if signed, as proof. Note that the "USER" and "TOWN" frames are - good to use in conjunction with this one. The frame begins, after the - frame ID, size and encoding fields, with a 'price paid' field. The - first three characters of this field contains the currency used for - the transaction, encoded according to ISO 4217 [ISO-4217] alphabetic - currency code. Concatenated to this is the actual price paid, as a - numerical string using "." as the decimal separator. Next is an 8 - character date string (YYYYMMDD) followed by a string with the name - of the seller as the last field in the frame. There may only be one - "OWNE" frame in a tag. - - <Header for 'Ownership frame', ID: "OWNE"> - Text encoding $xx - Price paid <text string> $00 - Date of purch. <text string> - Seller <text string according to encoding> - - -4.24. Commercial frame - - This frame enables several competing offers in the same tag by - bundling all needed information. That makes this frame rather complex - but it's an easier solution than if one tries to achieve the same - result with several frames. The frame begins, after the frame ID, - size and encoding fields, with a price string field. A price is - constructed by one three character currency code, encoded according - to ISO 4217 [ISO-4217] alphabetic currency code, followed by a - numerical value where "." is used as decimal separator. In the price - string several prices may be concatenated, separated by a "/" - character, but there may only be one currency of each type. - - The price string is followed by an 8 character date string in the - format YYYYMMDD, describing for how long the price is valid. After - that is a contact URL, with which the user can contact the seller, - followed by a one byte 'received as' field. It describes how the - audio is delivered when bought according to the following list: - - $00 Other - $01 Standard CD album with other songs - $02 Compressed audio on CD - $03 File over the Internet - $04 Stream over the Internet - $05 As note sheets - $06 As note sheets in a book with other sheets - $07 Music on other media - $08 Non-musical merchandise - - Next follows a terminated string with the name of the seller followed - by a terminated string with a short description of the product. The - last thing is the ability to include a company logotype. The first of - them is the 'Picture MIME type' field containing information about - which picture format is used. In the event that the MIME media type - name is omitted, "image/" will be implied. Currently only "image/png" - and "image/jpeg" are allowed. This format string is followed by the - binary picture data. This two last fields may be omitted if no - picture is attached. There may be more than one 'commercial frame' in - a tag, but no two may be identical. - - <Header for 'Commercial frame', ID: "COMR"> - Text encoding $xx - Price string <text string> $00 - Valid until <text string> - Contact URL <text string> $00 - Received as $xx - Name of seller <text string according to encoding> $00 (00) - Description <text string according to encoding> $00 (00) - Picture MIME type <string> $00 - Seller logo <binary data> - - -4.25. Encryption method registration - - To identify with which method a frame has been encrypted the - encryption method must be registered in the tag with this frame. The - 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for this specific encryption method. Questions regarding the - encryption method should be sent to the indicated email address. The - 'Method symbol' contains a value that is associated with this method - throughout the whole tag, in the range $80-F0. All other values are - reserved. The 'Method symbol' may optionally be followed by - encryption specific data. There may be several "ENCR" frames in a tag - but only one containing the same symbol and only one containing the - same owner identifier. The method must be used somewhere in the tag. - See the description of the frame encryption flag in the ID3v2 - structure document [ID3v2-strct] for more information. - - <Header for 'Encryption method registration', ID: "ENCR"> - Owner identifier <text string> $00 - Method symbol $xx - Encryption data <binary data> - - -4.26. Group identification registration - - This frame enables grouping of otherwise unrelated frames. This can - be used when some frames are to be signed. To identify which frames - belongs to a set of frames a group identifier must be registered in - the tag with this frame. The 'Owner identifier' is a null-terminated - string with a URL [URL] containing an email address, or a link to a - location where an email address can be found, that belongs to the - organisation responsible for this grouping. Questions regarding the - grouping should be sent to the indicated email address. The 'Group - symbol' contains a value that associates the frame with this group - throughout the whole tag, in the range $80-F0. All other values are - reserved. The 'Group symbol' may optionally be followed by some group - specific data, e.g. a digital signature. There may be several "GRID" - frames in a tag but only one containing the same symbol and only one - containing the same owner identifier. The group symbol must be used - somewhere in the tag. See the description of the frame grouping flag - in the ID3v2 structure document [ID3v2-strct] for more information. - - <Header for 'Group ID registration', ID: "GRID"> - Owner identifier <text string> $00 - Group symbol $xx - Group dependent data <binary data> - - -4.27. Private frame - - This frame is used to contain information from a software producer - that its program uses and does not fit into the other frames. The - frame consists of an 'Owner identifier' string and the binary data. - The 'Owner identifier' is a null-terminated string with a URL [URL] - containing an email address, or a link to a location where an email - address can be found, that belongs to the organisation responsible - for the frame. Questions regarding the frame should be sent to the - indicated email address. The tag may contain more than one "PRIV" - frame but only with different contents. - - <Header for 'Private frame', ID: "PRIV"> - Owner identifier <text string> $00 - The private data <binary data> - - -4.28. Signature frame - - This frame enables a group of frames, grouped with the 'Group - identification registration', to be signed. Although signatures can - reside inside the registration frame, it might be desired to store - the signature elsewhere, e.g. in watermarks. There may be more than - one 'signature frame' in a tag, but no two may be identical. - - <Header for 'Signature frame', ID: "SIGN"> - Group symbol $xx - Signature <binary data> - - -4.29. Seek frame - - This frame indicates where other tags in a file/stream can be found. - The 'minimum offset to next tag' is calculated from the end of this - tag to the beginning of the next. There may only be one 'seek frame' - in a tag. - - <Header for 'Seek frame', ID: "SEEK"> - Minimum offset to next tag $xx xx xx xx - - -4.30. Audio seek point index - - Audio files with variable bit rates are intrinsically difficult to - deal with in the case of seeking within the file. The ASPI frame - makes seeking easier by providing a list a seek points within the - audio file. The seek points are a fractional offset within the audio - data, providing a starting point from which to find an appropriate - point to start decoding. The presence of an ASPI frame requires the - existence of a TLEN frame, indicating the duration of the file in - milliseconds. There may only be one 'audio seek point index' frame in - a tag. - - <Header for 'Seek Point Index', ID: "ASPI"> - Indexed data start (S) $xx xx xx xx - Indexed data length (L) $xx xx xx xx - Number of index points (N) $xx xx - Bits per index point (b) $xx - - Then for every index point the following data is included; - - Fraction at index (Fi) $xx (xx) - - 'Indexed data start' is a byte offset from the beginning of the file. - 'Indexed data length' is the byte length of the audio data being - indexed. 'Number of index points' is the number of index points, as - the name implies. The recommended number is 100. 'Bits per index - point' is 8 or 16, depending on the chosen precision. 8 bits works - well for short files (less than 5 minutes of audio), while 16 bits is - advantageous for long files. 'Fraction at index' is the numerator of - the fraction representing a relative position in the data. The - denominator is 2 to the power of b. - - Here are the algorithms to be used in the calculation. The known data - must be the offset of the start of the indexed data (S), the offset - of the end of the indexed data (E), the number of index points (N), - the offset at index i (Oi). We calculate the fraction at index i - (Fi). - - Oi is the offset of the frame whose start is soonest after the point - for which the time offset is (i/N * duration). - - The frame data should be calculated as follows: - - Fi = Oi/L * 2^b (rounded down to the nearest integer) - - Offset calculation should be calculated as follows from data in the - frame: - - Oi = (Fi/2^b)*L (rounded up to the nearest integer) - - -5. Copyright - - Copyright (C) Martin Nilsson 2000. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - "AS IS" basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF - THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -6. References - - [CDDB] Compact Disc Data Base - - <url:http://www.cddb.com> - - [ID3v2.3.0] Martin Nilsson, "ID3v2 informal standard". - - <url:http://www.id3.org/id3v2.3.0.txt> - - [ID3v2-strct] Martin Nilsson, - "ID3 tag version 2.4.0 - Main Structure" - - <url:http//www.id3.org/id3v2.4.0-structure.txt> - - [ISO-639-2] ISO/FDIS 639-2. - Codes for the representation of names of languages, Part 2: Alpha-3 - code. Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-4217] ISO 4217:1995. - Codes for the representation of currencies and funds. - Technical committee / subcommittee: TC 68 - - [ISO-8859-1] ISO/IEC DIS 8859-1. - 8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1. Technical committee / subcommittee: JTC 1 / SC 2 - - [ISRC] ISO 3901:1986 - International Standard Recording Code (ISRC). - Technical committee / subcommittee: TC 46 / SC 9 - - [JFIF] JPEG File Interchange Format, version 1.02 - - <url:http://www.w3.org/Graphics/JPEG/jfif.txt> - - [KEYWORDS] S. Bradner, 'Key words for use in RFCs to Indicate - Requirement Levels', RFC 2119, March 1997. - - <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt> - - [MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part One: Format of Internet Message Bodies", - RFC 2045, November 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc2045.txt> - - [MPEG] ISO/IEC 11172-3:1993. - Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - Generic coding of moving pictures and associated audio information, - Part 3: Audio. - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995) - - - [PNG] Portable Network Graphics, version 1.0 - - <url:http://www.w3.org/TR/REC-png-multi.html> - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, "Uniform Resource - Locators (URL).", RFC 1738, December 1994. - - <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt> - - [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, "ZLIB - Compressed - Data Format Specification version 3.3", RFC 1950, May 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc1950.txt> - - -7. Appendix - - -A. Appendix A - Genre List from ID3v1 - - The following genres is defined in ID3v1 - - 0.Blues - 1.Classic Rock - 2.Country - 3.Dance - 4.Disco - 5.Funk - 6.Grunge - 7.Hip-Hop - 8.Jazz - 9.Metal - 10.New Age - 11.Oldies - 12.Other - 13.Pop - 14.R&B - 15.Rap - 16.Reggae - 17.Rock - 18.Techno - 19.Industrial - 20.Alternative - 21.Ska - 22.Death Metal - 23.Pranks - 24.Soundtrack - 25.Euro-Techno - 26.Ambient - 27.Trip-Hop - 28.Vocal - 29.Jazz+Funk - 30.Fusion - 31.Trance - 32.Classical - 33.Instrumental - 34.Acid - 35.House - 36.Game - 37.Sound Clip - 38.Gospel - 39.Noise - 40.AlternRock - 41.Bass - 42.Soul - 43.Punk - 44.Space - 45.Meditative - 46.Instrumental Pop - 47.Instrumental Rock - 48.Ethnic - 49.Gothic - 50.Darkwave - 51.Techno-Industrial - 52.Electronic - 53.Pop-Folk - 54.Eurodance - 55.Dream - 56.Southern Rock - 57.Comedy - 58.Cult - 59.Gangsta - 60.Top 40 - 61.Christian Rap - 62.Pop/Funk - 63.Jungle - 64.Native American - 65.Cabaret - 66.New Wave - 67.Psychadelic - 68.Rave - 69.Showtunes - 70.Trailer - 71.Lo-Fi - 72.Tribal - 73.Acid Punk - 74.Acid Jazz - 75.Polka - 76.Retro - 77.Musical - 78.Rock & Roll - 79.Hard Rock - - -8. Author's Address - - Written by - - Martin Nilsson - Rydsvägen 246 C. 30 - SE-584 34 Linköping - Sweden - - Email: nilsson@id3.org diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt deleted file mode 100644 index 5fa156a0a..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.4.0-structure.txt +++ /dev/null @@ -1,733 +0,0 @@ - -Informal standard M. Nilsson -Document: id3v2.4.0-structure.txt 16 September 2001 - - - ID3 tag version 2.4.0 - Main Structure - -Status of this document - - This document is an informal standard and replaces the ID3v2.3.0 - standard [ID3v2]. A formal standard will use another revision number - even if the content is identical to document. The contents in this - document may change for clarifications but never for added or altered - functionallity. - - Distribution of this document is unlimited. - - -Abstract - - This document describes the main structure of ID3v2.4.0, which is a - revised version of the ID3v2 informal standard [ID3v2] version - 2.3.0. The ID3v2 offers a flexible way of storing audio meta - information within the audio file itself. The information may be - technical information, such as equalisation curves, as well as - title, performer, copyright etc. - - ID3v2.4.0 is meant to be as close as possible to ID3v2.3.0 in order - to allow for implementations to be revised as easily as possible. - - -1. Table of contents - - Status of this document - Abstract - 1. Table of contents - 2. Conventions in this document - 2. Standard overview - 3. ID3v2 overview - 3.1. ID3v2 header - 3.2. ID3v2 extended header - 3.3. Padding - 3.4. ID3v2 footer - 4. ID3v2 frames overview - 4.1. Frame header flags - 4.1.1. Frame status flags - 4.1.2. Frame format flags - 5. Tag location - 6. Unsynchronisation - 6.1. The unsynchronisation scheme - 6.2. Synchsafe integers - 7. Copyright - 8. References - 9. Author's Address - - -2. Conventions in this document - - Text within "" is a text string exactly as it appears in a tag. - Numbers preceded with $ are hexadecimal and numbers preceded with % - are binary. $xx is used to indicate a byte with unknown content. %x - is used to indicate a bit with unknown content. The most significant - bit (MSB) of a byte is called 'bit 7' and the least significant bit - (LSB) is called 'bit 0'. - - A tag is the whole tag described in this document. A frame is a block - of information in the tag. The tag consists of a header, frames and - optional padding. A field is a piece of information; one value, a - string etc. A numeric string is a string that consists of the - characters "0123456789" only. - - The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", - "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this - document are to be interpreted as described in RFC 2119 [KEYWORDS]. - - -3. ID3v2 overview - - ID3v2 is a general tagging format for audio, which makes it possible - to store meta data about the audio inside the audio file itself. The - ID3 tag described in this document is mainly targeted at files - encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III - and MPEG-2.5, but may work with other types of encoded audio or as a - stand alone format for audio meta data. - - ID3v2 is designed to be as flexible and expandable as possible to - meet new meta information needs that might arise. To achieve that - ID3v2 is constructed as a container for several information blocks, - called frames, whose format need not be known to the software that - encounters them. At the start of every frame is an unique and - predefined identifier, a size descriptor that allows software to skip - unknown frames and a flags field. The flags describes encoding - details and if the frame should remain in the tag, should it be - unknown to the software, if the file is altered. - - The bitorder in ID3v2 is most significant bit first (MSB). The - byteorder in multibyte numbers is most significant byte first (e.g. - $12345678 would be encoded $12 34 56 78), also known as big endian - and network byte order. - - Overall tag structure: - - +-----------------------------+ - | Header (10 bytes) | - +-----------------------------+ - | Extended Header | - | (variable length, OPTIONAL) | - +-----------------------------+ - | Frames (variable length) | - +-----------------------------+ - | Padding | - | (variable length, OPTIONAL) | - +-----------------------------+ - | Footer (10 bytes, OPTIONAL) | - +-----------------------------+ - - In general, padding and footer are mutually exclusive. See details in - sections 3.3, 3.4 and 5. - - -3.1. ID3v2 header - - The first part of the ID3v2 tag is the 10 byte tag header, laid out - as follows: - - ID3v2/file identifier "ID3" - ID3v2 version $04 00 - ID3v2 flags %abcd0000 - ID3v2 size 4 * %0xxxxxxx - - The first three bytes of the tag are always "ID3", to indicate that - this is an ID3v2 tag, directly followed by the two version bytes. The - first byte of ID3v2 version is its major version, while the second - byte is its revision number. In this case this is ID3v2.4.0. All - revisions are backwards compatible while major versions are not. If - software with ID3v2.4.0 and below support should encounter version - five or higher it should simply ignore the whole tag. Version or - revision will never be $FF. - - The version is followed by the ID3v2 flags field, of which currently - four flags are used. - - - a - Unsynchronisation - - Bit 7 in the 'ID3v2 flags' indicates whether or not - unsynchronisation is applied on all frames (see section 6.1 for - details); a set bit indicates usage. - - - b - Extended header - - The second bit (bit 6) indicates whether or not the header is - followed by an extended header. The extended header is described in - section 3.2. A set bit indicates the presence of an extended - header. - - - c - Experimental indicator - - The third bit (bit 5) is used as an 'experimental indicator'. This - flag SHALL always be set when the tag is in an experimental stage. - - - d - Footer present - - Bit 4 indicates that a footer (section 3.4) is present at the very - end of the tag. A set bit indicates the presence of a footer. - - - All the other flags MUST be cleared. If one of these undefined flags - are set, the tag might not be readable for a parser that does not - know the flags function. - - The ID3v2 tag size is stored as a 32 bit synchsafe integer (section - 6.2), making a total of 28 effective bits (representing up to 256MB). - - The ID3v2 tag size is the sum of the byte length of the extended - header, the padding and the frames after unsynchronisation. If a - footer is present this equals to ('total size' - 20) bytes, otherwise - ('total size' - 10) bytes. - - An ID3v2 tag can be detected with the following pattern: - $49 44 33 yy yy xx zz zz zz zz - Where yy is less than $FF, xx is the 'flags' byte and zz is less than - $80. - - -3.2. Extended header - - The extended header contains information that can provide further - insight in the structure of the tag, but is not vital to the correct - parsing of the tag information; hence the extended header is - optional. - - Extended header size 4 * %0xxxxxxx - Number of flag bytes $01 - Extended Flags $xx - - Where the 'Extended header size' is the size of the whole extended - header, stored as a 32 bit synchsafe integer. An extended header can - thus never have a size of fewer than six bytes. - - The extended flags field, with its size described by 'number of flag - bytes', is defined as: - - %0bcd0000 - - Each flag that is set in the extended header has data attached, which - comes in the order in which the flags are encountered (i.e. the data - for flag 'b' comes before the data for flag 'c'). Unset flags cannot - have any attached data. All unknown flags MUST be unset and their - corresponding data removed when a tag is modified. - - Every set flag's data starts with a length byte, which contains a - value between 0 and 127 ($00 - $7f), followed by data that has the - field length indicated by the length byte. If a flag has no attached - data, the value $00 is used as length byte. - - - b - Tag is an update - - If this flag is set, the present tag is an update of a tag found - earlier in the present file or stream. If frames defined as unique - are found in the present tag, they are to override any - corresponding ones found in the earlier tag. This flag has no - corresponding data. - - Flag data length $00 - - c - CRC data present - - If this flag is set, a CRC-32 [ISO-3309] data is included in the - extended header. The CRC is calculated on all the data between the - header and footer as indicated by the header's tag length field, - minus the extended header. Note that this includes the padding (if - there is any), but excludes the footer. The CRC-32 is stored as an - 35 bit synchsafe integer, leaving the upper four bits always - zeroed. - - Flag data length $05 - Total frame CRC 5 * %0xxxxxxx - - d - Tag restrictions - - For some applications it might be desired to restrict a tag in more - ways than imposed by the ID3v2 specification. Note that the - presence of these restrictions does not affect how the tag is - decoded, merely how it was restricted before encoding. If this flag - is set the tag is restricted as follows: - - Flag data length $01 - Restrictions %ppqrrstt - - p - Tag size restrictions - - 00 No more than 128 frames and 1 MB total tag size. - 01 No more than 64 frames and 128 KB total tag size. - 10 No more than 32 frames and 40 KB total tag size. - 11 No more than 32 frames and 4 KB total tag size. - - q - Text encoding restrictions - - 0 No restrictions - 1 Strings are only encoded with ISO-8859-1 [ISO-8859-1] or - UTF-8 [UTF-8]. - - r - Text fields size restrictions - - 00 No restrictions - 01 No string is longer than 1024 characters. - 10 No string is longer than 128 characters. - 11 No string is longer than 30 characters. - - Note that nothing is said about how many bytes is used to - represent those characters, since it is encoding dependent. If a - text frame consists of more than one string, the sum of the - strungs is restricted as stated. - - s - Image encoding restrictions - - 0 No restrictions - 1 Images are encoded only with PNG [PNG] or JPEG [JFIF]. - - t - Image size restrictions - - 00 No restrictions - 01 All images are 256x256 pixels or smaller. - 10 All images are 64x64 pixels or smaller. - 11 All images are exactly 64x64 pixels, unless required - otherwise. - - -3.3. Padding - - It is OPTIONAL to include padding after the final frame (at the end - of the ID3 tag), making the size of all the frames together smaller - than the size given in the tag header. A possible purpose of this - padding is to allow for adding a few additional frames or enlarge - existing frames within the tag without having to rewrite the entire - file. The value of the padding bytes must be $00. A tag MUST NOT have - any padding between the frames or between the tag header and the - frames. Furthermore it MUST NOT have any padding when a tag footer is - added to the tag. - - -3.4. ID3v2 footer - - To speed up the process of locating an ID3v2 tag when searching from - the end of a file, a footer can be added to the tag. It is REQUIRED - to add a footer to an appended tag, i.e. a tag located after all - audio data. The footer is a copy of the header, but with a different - identifier. - - ID3v2 identifier "3DI" - ID3v2 version $04 00 - ID3v2 flags %abcd0000 - ID3v2 size 4 * %0xxxxxxx - - -4. ID3v2 frame overview - - All ID3v2 frames consists of one frame header followed by one or more - fields containing the actual information. The header is always 10 - bytes and laid out as follows: - - Frame ID $xx xx xx xx (four characters) - Size 4 * %0xxxxxxx - Flags $xx xx - - The frame ID is made out of the characters capital A-Z and 0-9. - Identifiers beginning with "X", "Y" and "Z" are for experimental - frames and free for everyone to use, without the need to set the - experimental bit in the tag header. Bear in mind that someone else - might have used the same identifier as you. All other identifiers are - either used or reserved for future use. - - The frame ID is followed by a size descriptor containing the size of - the data in the final frame, after encryption, compression and - unsynchronisation. The size is excluding the frame header ('total - frame size' - 10 bytes) and stored as a 32 bit synchsafe integer. - - In the frame header the size descriptor is followed by two flag - bytes. These flags are described in section 4.1. - - There is no fixed order of the frames' appearance in the tag, - although it is desired that the frames are arranged in order of - significance concerning the recognition of the file. An example of - such order: UFID, TIT2, MCDI, TRCK ... - - A tag MUST contain at least one frame. A frame must be at least 1 - byte big, excluding the header. - - If nothing else is said, strings, including numeric strings and URLs - [URL], are represented as ISO-8859-1 [ISO-8859-1] characters in the - range $20 - $FF. Such strings are represented in frame descriptions - as <text string>, or <full text string> if newlines are allowed. If - nothing else is said newline character is forbidden. In ISO-8859-1 a - newline is represented, when allowed, with $0A only. - - Frames that allow different types of text encoding contains a text - encoding description byte. Possible encodings: - - $00 ISO-8859-1 [ISO-8859-1]. Terminated with $00. - $01 UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM. All - strings in the same frame SHALL have the same byteorder. - Terminated with $00 00. - $02 UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM. - Terminated with $00 00. - $03 UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00. - - Strings dependent on encoding are represented in frame descriptions - as <text string according to encoding>, or <full text string - according to encoding> if newlines are allowed. Any empty strings of - type $01 which are NULL-terminated may have the Unicode BOM followed - by a Unicode NULL ($FF FE 00 00 or $FE FF 00 00). - - The timestamp fields are based on a subset of ISO 8601. When being as - precise as possible the format of a time string is - yyyy-MM-ddTHH:mm:ss (year, "-", month, "-", day, "T", hour (out of - 24), ":", minutes, ":", seconds), but the precision may be reduced by - removing as many time indicators as wanted. Hence valid timestamps - are - yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-ddTHH, yyyy-MM-ddTHH:mm and - yyyy-MM-ddTHH:mm:ss. All time stamps are UTC. For durations, use - the slash character as described in 8601, and for multiple non- - contiguous dates, use multiple strings, if allowed by the frame - definition. - - The three byte language field, present in several frames, is used to - describe the language of the frame's content, according to ISO-639-2 - [ISO-639-2]. The language should be represented in lower case. If the - language is not known the string "XXX" should be used. - - All URLs [URL] MAY be relative, e.g. "picture.png", "../doc.txt". - - If a frame is longer than it should be, e.g. having more fields than - specified in this document, that indicates that additions to the - frame have been made in a later version of the ID3v2 standard. This - is reflected by the revision number in the header of the tag. - - -4.1. Frame header flags - - In the frame header the size descriptor is followed by two flag - bytes. All unused flags MUST be cleared. The first byte is for - 'status messages' and the second byte is a format description. If an - unknown flag is set in the first byte the frame MUST NOT be changed - without that bit cleared. If an unknown flag is set in the second - byte the frame is likely to not be readable. Some flags in the second - byte indicates that extra information is added to the header. These - fields of extra information is ordered as the flags that indicates - them. The flags field is defined as follows (l and o left out because - ther resemblence to one and zero): - - %0abc0000 %0h00kmnp - - Some frame format flags indicate that additional information fields - are added to the frame. This information is added after the frame - header and before the frame data in the same order as the flags that - indicates them. I.e. the four bytes of decompressed size will precede - the encryption method byte. These additions affects the 'frame size' - field, but are not subject to encryption or compression. - - The default status flags setting for a frame is, unless stated - otherwise, 'preserved if tag is altered' and 'preserved if file is - altered', i.e. %00000000. - - -4.1.1. Frame status flags - - a - Tag alter preservation - - This flag tells the tag parser what to do with this frame if it is - unknown and the tag is altered in any way. This applies to all - kinds of alterations, including adding more padding and reordering - the frames. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - b - File alter preservation - - This flag tells the tag parser what to do with this frame if it is - unknown and the file, excluding the tag, is altered. This does not - apply when the audio is completely replaced with other audio data. - - 0 Frame should be preserved. - 1 Frame should be discarded. - - - c - Read only - - This flag, if set, tells the software that the contents of this - frame are intended to be read only. Changing the contents might - break something, e.g. a signature. If the contents are changed, - without knowledge of why the frame was flagged read only and - without taking the proper means to compensate, e.g. recalculating - the signature, the bit MUST be cleared. - - -4.1.2. Frame format flags - - h - Grouping identity - - This flag indicates whether or not this frame belongs in a group - with other frames. If set, a group identifier byte is added to the - frame. Every frame with the same group identifier belongs to the - same group. - - 0 Frame does not contain group information - 1 Frame contains group information - - - k - Compression - - This flag indicates whether or not the frame is compressed. - A 'Data Length Indicator' byte MUST be included in the frame. - - 0 Frame is not compressed. - 1 Frame is compressed using zlib [zlib] deflate method. - If set, this requires the 'Data Length Indicator' bit - to be set as well. - - - m - Encryption - - This flag indicates whether or not the frame is encrypted. If set, - one byte indicating with which method it was encrypted will be - added to the frame. See description of the ENCR frame for more - information about encryption method registration. Encryption - should be done after compression. Whether or not setting this flag - requires the presence of a 'Data Length Indicator' depends on the - specific algorithm used. - - 0 Frame is not encrypted. - 1 Frame is encrypted. - - n - Unsynchronisation - - This flag indicates whether or not unsynchronisation was applied - to this frame. See section 6 for details on unsynchronisation. - If this flag is set all data from the end of this header to the - end of this frame has been unsynchronised. Although desirable, the - presence of a 'Data Length Indicator' is not made mandatory by - unsynchronisation. - - 0 Frame has not been unsynchronised. - 1 Frame has been unsyrchronised. - - p - Data length indicator - - This flag indicates that a data length indicator has been added to - the frame. The data length indicator is the value one would write - as the 'Frame length' if all of the frame format flags were - zeroed, represented as a 32 bit synchsafe integer. - - 0 There is no Data Length Indicator. - 1 A data length Indicator has been added to the frame. - - -5. Tag location - - The default location of an ID3v2 tag is prepended to the audio so - that players can benefit from the information when the data is - streamed. It is however possible to append the tag, or make a - prepend/append combination. When deciding upon where an unembedded - tag should be located, the following order of preference SHOULD be - considered. - - 1. Prepend the tag. - - 2. Prepend a tag with all vital information and add a second tag at - the end of the file, before tags from other tagging systems. The - first tag is required to have a SEEK frame. - - 3. Add a tag at the end of the file, before tags from other tagging - systems. - - In case 2 and 3 the tag can simply be appended if no other known tags - are present. The suggested method to find ID3v2 tags are: - - 1. Look for a prepended tag using the pattern found in section 3.1. - - 2. If a SEEK frame was found, use its values to guide further - searching. - - 3. Look for a tag footer, scanning from the back of the file. - - For every new tag that is found, the old tag should be discarded - unless the update flag in the extended header (section 3.2) is set. - - -6. Unsynchronisation - - The only purpose of unsynchronisation is to make the ID3v2 tag as - compatible as possible with existing software and hardware. There is - no use in 'unsynchronising' tags if the file is only to be processed - only by ID3v2 aware software and hardware. Unsynchronisation is only - useful with tags in MPEG 1/2 layer I, II and III, MPEG 2.5 and AAC - files. - - -6.1. The unsynchronisation scheme - - Whenever a false synchronisation is found within the tag, one zeroed - byte is inserted after the first false synchronisation byte. The - format of synchronisations that should be altered by ID3 encoders is - as follows: - - %11111111 111xxxxx - - and should be replaced with: - - %11111111 00000000 111xxxxx - - This has the side effect that all $FF 00 combinations have to be - altered, so they will not be affected by the decoding process. - Therefore all the $FF 00 combinations have to be replaced with the - $FF 00 00 combination during the unsynchronisation. - - To indicate usage of the unsynchronisation, the unsynchronisation - flag in the frame header should be set. This bit MUST be set if the - frame was altered by the unsynchronisation and SHOULD NOT be set if - unaltered. If all frames in the tag are unsynchronised the - unsynchronisation flag in the tag header SHOULD be set. It MUST NOT - be set if the tag has a frame which is not unsynchronised. - - Assume the first byte of the audio to be $FF. The special case when - the last byte of the last frame is $FF and no padding nor footer is - used will then introduce a false synchronisation. This can be solved - by adding a footer, adding padding or unsynchronising the frame and - add $00 to the end of the frame data, thus adding more byte to the - frame size than a normal unsynchronisation would. Although not - preferred, it is allowed to apply the last method on all frames - ending with $FF. - - It is preferred that the tag is either completely unsynchronised or - not unsynchronised at all. A completely unsynchronised tag has no - false synchonisations in it, as defined above, and does not end with - $FF. A completely non-unsynchronised tag contains no unsynchronised - frames, and thus the unsynchronisation flag in the header is cleared. - - Do bear in mind, that if compression or encryption is used, the - unsynchronisation scheme MUST be applied afterwards. When decoding an - unsynchronised frame, the unsynchronisation scheme MUST be reversed - first, encryption and decompression afterwards. - - -6.2. Synchsafe integers - - In some parts of the tag it is inconvenient to use the - unsychronisation scheme because the size of unsynchronised data is - not known in advance, which is particularly problematic with size - descriptors. The solution in ID3v2 is to use synchsafe integers, in - which there can never be any false synchs. Synchsafe integers are - integers that keep its highest bit (bit 7) zeroed, making seven bits - out of eight available. Thus a 32 bit synchsafe integer can store 28 - bits of information. - - Example: - - 255 (%11111111) encoded as a 16 bit synchsafe integer is 383 - (%00000001 01111111). - - -7. Copyright - - Copyright (C) Martin Nilsson 2000. All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that a reference to this document is included on all - such copies and derivative works. However, this document itself may - not be modified in any way and reissued as the original document. - - The limited permissions granted above are perpetual and will not be - revoked. - - This document and the information contained herein is provided on an - 'AS IS' basis and THE AUTHORS DISCLAIMS ALL WARRANTIES, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF - THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED - WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - - -8. References - - [ID3v2] Martin Nilsson, 'ID3v2 informal standard'. - - <url:http://www.id3.org/id3v2.3.0.txt> - - [ISO-639-2] ISO/FDIS 639-2. - 'Codes for the representation of names of languages, Part 2: Alpha-3 - code.' Technical committee / subcommittee: TC 37 / SC 2 - - [ISO-3309] ISO 3309 - 'Information Processing Systems--Data Communication High-Level Data - Link Control Procedure--Frame Structure', IS 3309, October 1984, 3rd - Edition. - - [ISO-8859-1] ISO/IEC DIS 8859-1. - '8-bit single-byte coded graphic character sets, Part 1: Latin - alphabet No. 1.' Technical committee / subcommittee: JTC 1 / SC 2 - - [JFIF] 'JPEG File Interchange Format, version 1.02' - - <url:http://www.w3.org/Graphics/JPEG/jfif.txt> - - [KEYWORDS] S. Bradner, 'Key words for use in RFCs to Indicate - Requirement Levels', RFC 2119, March 1997. - - <url:ftp://ftp.isi.edu/in-notes/rfc2119.txt> - - [MPEG] ISO/IEC 11172-3:1993. - 'Coding of moving pictures and associated audio for digital storage - media at up to about 1,5 Mbit/s, Part 3: Audio.' - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC 13818-3:1995 - 'Generic coding of moving pictures and associated audio information, - Part 3: Audio.' - Technical committee / subcommittee: JTC 1 / SC 29 - and - ISO/IEC DIS 13818-3 - 'Generic coding of moving pictures and associated audio information, - Part 3: Audio (Revision of ISO/IEC 13818-3:1995)' - - [PNG] 'Portable Network Graphics, version 1.0' - - <url:http://www.w3.org/TR/REC-png-multi.html> - - [UNICODE] The Unicode Consortium, - 'The Unicode Standard Version 3.0', ISBN 0-201-61633-5. - - <url:http://www.unicode.org/unicode/standard/versions/Unicode3.0.htm> - - [URL] T. Berners-Lee, L. Masinter & M. McCahill, 'Uniform Resource - Locators (URL)', RFC 1738, December 1994. - - <url:ftp://ftp.isi.edu/in-notes/rfc1738.txt> - - [UTF-8] F. Yergeau, 'UTF-8, a transformation format of ISO 10646', - RFC 2279, January 1998. - - <url:ftp://ftp.isi.edu/in-notes/rfc2279.txt> - - [UTF-16] F. Yergeau, 'UTF-16, an encoding of ISO 10646', RFC 2781, - February 2000. - - <url:ftp://ftp.isi.edu/in-notes/rfc2781.txt> - - [ZLIB] P. Deutsch, Aladdin Enterprises & J-L. Gailly, 'ZLIB - Compressed Data Format Specification version 3.3', RFC 1950, - May 1996. - - <url:ftp://ftp.isi.edu/in-notes/rfc1950.txt> - - -9. Author's Address - - Written by - - Martin Nilsson - Rydsvägen 246 C. 30 - SE-584 34 Linköping - Sweden - - Email: nilsson@id3.org - diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.h b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.h deleted file mode 100644 index bef82519e..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef TAGLIB_ID3V2_H -#define TAGLIB_ID3V2_H - -namespace TagLib { - //! An ID3v2 implementation - - /*! - * This is a relatively complete and flexible framework for working with ID3v2 - * tags. - * - * \see ID3v2::Tag - */ - namespace ID3v2 { - /*! - * Used to specify which version of the ID3 standard to use when saving tags. - */ - enum Version { - v3 = 3, //<! ID3v2.3 - v4 = 4 //<! ID3v2.4 - }; - } -} - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp deleted file mode 100644 index e005457a7..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2extendedheader.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/id3v2extendedheader.h> -#include <taglib/mpeg/id3v2/id3v2synchdata.h> - -using namespace TagLib; -using namespace ID3v2; - -class ExtendedHeader::ExtendedHeaderPrivate -{ -public: - ExtendedHeaderPrivate() : size(0) {} - - unsigned int size; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public methods -//////////////////////////////////////////////////////////////////////////////// - -ExtendedHeader::ExtendedHeader() : - d(new ExtendedHeaderPrivate()) -{ -} - -ExtendedHeader::~ExtendedHeader() -{ - delete d; -} - -unsigned int ExtendedHeader::size() const -{ - return d->size; -} - -void ExtendedHeader::setData(const ByteVector &data) -{ - parse(data); -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void ExtendedHeader::parse(const ByteVector &data) -{ - d->size = SynchData::toUInt(data.mid(0, 4)); // (structure 3.2 "Extended header size") -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2footer.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2footer.cpp deleted file mode 100644 index 5ed739586..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2footer.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/mpeg/id3v2/id3v2footer.h> -#include <taglib/mpeg/id3v2/id3v2header.h> - -using namespace TagLib; -using namespace ID3v2; - -class Footer::FooterPrivate -{ -}; - -Footer::Footer() : - d(0) -{ -} - -Footer::~Footer() -{ -} - -unsigned int Footer::size() -{ - return 10; -} - -ByteVector Footer::render(const Header *header) const -{ - ByteVector headerData = header->render(); - headerData[0] = '3'; - headerData[1] = 'D'; - headerData[2] = 'I'; - return headerData; -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2frame.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2frame.cpp deleted file mode 100644 index 5fdde9451..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2frame.cpp +++ /dev/null @@ -1,836 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <bitset> - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tzlib.h> - -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/mpeg/id3v2/id3v2synchdata.h> - -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/mpeg/id3v2/frames/textidentificationframe.h> -#include <taglib/mpeg/id3v2/frames/urllinkframe.h> -#include <taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h> -#include <taglib/mpeg/id3v2/frames/commentsframe.h> -#include <taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h> -#include <taglib/mpeg/id3v2/frames/unknownframe.h> -#include <taglib/mpeg/id3v2/frames/podcastframe.h> - -using namespace TagLib; -using namespace ID3v2; - -class Frame::FramePrivate -{ -public: - FramePrivate() : - header(0) - {} - - ~FramePrivate() - { - delete header; - } - - Frame::Header *header; -}; - -namespace -{ - bool isValidFrameID(const ByteVector &frameID) - { - if(frameID.size() != 4) - return false; - - for(ByteVector::ConstIterator it = frameID.begin(); it != frameID.end(); it++) { - if( (*it < 'A' || *it > 'Z') && (*it < '0' || *it > '9') ) { - return false; - } - } - return true; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// static methods -//////////////////////////////////////////////////////////////////////////////// - -unsigned int Frame::headerSize() -{ - return Header::size(); -} - -unsigned int Frame::headerSize(unsigned int version) -{ - return Header::size(version); -} - -ByteVector Frame::textDelimiter(String::Type t) -{ - if(t == String::UTF16 || t == String::UTF16BE || t == String::UTF16LE) - return ByteVector(2, '\0'); - else - return ByteVector(1, '\0'); -} - -const String Frame::instrumentPrefix("PERFORMER:"); -const String Frame::commentPrefix("COMMENT:"); -const String Frame::lyricsPrefix("LYRICS:"); -const String Frame::urlPrefix("URL:"); - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Frame *Frame::createTextualFrame(const String &key, const StringList &values) //static -{ - // check if the key is contained in the key<=>frameID mapping - ByteVector frameID = keyToFrameID(key); - if(!frameID.isEmpty()) { - // Apple proprietary WFED (Podcast URL), MVNM (Movement Name), MVIN (Movement Number), GRP1 (Grouping) are in fact text frames. - if(frameID[0] == 'T' || frameID == "WFED" || frameID == "MVNM" || frameID == "MVIN" || frameID == "GRP1"){ // text frame - TextIdentificationFrame *frame = new TextIdentificationFrame(frameID, String::UTF8); - frame->setText(values); - return frame; - } else if((frameID[0] == 'W') && (values.size() == 1)){ // URL frame (not WXXX); support only one value - UrlLinkFrame* frame = new UrlLinkFrame(frameID); - frame->setUrl(values.front()); - return frame; - } else if(frameID == "PCST") { - return new PodcastFrame(); - } - } - if(key == "MUSICBRAINZ_TRACKID" && values.size() == 1) { - UniqueFileIdentifierFrame *frame = new UniqueFileIdentifierFrame("http://musicbrainz.org", values.front().data(String::UTF8)); - return frame; - } - // now we check if it's one of the "special" cases: - // -LYRICS: depending on the number of values, use USLT or TXXX (with description=LYRICS) - if((key == "LYRICS" || key.startsWith(lyricsPrefix)) && values.size() == 1){ - UnsynchronizedLyricsFrame *frame = new UnsynchronizedLyricsFrame(String::UTF8); - frame->setDescription(key == "LYRICS" ? key : key.substr(lyricsPrefix.size())); - frame->setText(values.front()); - return frame; - } - // -URL: depending on the number of values, use WXXX or TXXX (with description=URL) - if((key == "URL" || key.startsWith(urlPrefix)) && values.size() == 1){ - UserUrlLinkFrame *frame = new UserUrlLinkFrame(String::UTF8); - frame->setDescription(key == "URL" ? key : key.substr(urlPrefix.size())); - frame->setUrl(values.front()); - return frame; - } - // -COMMENT: depending on the number of values, use COMM or TXXX (with description=COMMENT) - if((key == "COMMENT" || key.startsWith(commentPrefix)) && values.size() == 1){ - CommentsFrame *frame = new CommentsFrame(String::UTF8); - if (key != "COMMENT"){ - frame->setDescription(key.substr(commentPrefix.size())); - } - frame->setText(values.front()); - return frame; - } - // if non of the above cases apply, we use a TXXX frame with the key as description - return new UserTextIdentificationFrame(keyToTXXX(key), values, String::UTF8); -} - -Frame::~Frame() -{ - delete d; -} - -ByteVector Frame::frameID() const -{ - if(d->header) - return d->header->frameID(); - else - return ByteVector(); -} - -unsigned int Frame::size() const -{ - if(d->header) - return d->header->frameSize(); - else - return 0; -} - -void Frame::setData(const ByteVector &data) -{ - parse(data); -} - -void Frame::setText(const String &) -{ - -} - -ByteVector Frame::render() const -{ - ByteVector fieldData = renderFields(); - d->header->setFrameSize(fieldData.size()); - ByteVector headerData = d->header->render(); - - return headerData + fieldData; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -Frame::Frame(const ByteVector &data) : - d(new FramePrivate()) -{ - d->header = new Header(data); -} - -Frame::Frame(Header *h) : - d(new FramePrivate()) -{ - d->header = h; -} - -Frame::Header *Frame::header() const -{ - return d->header; -} - -void Frame::setHeader(Header *h, bool deleteCurrent) -{ - if(deleteCurrent) - delete d->header; - - d->header = h; -} - -void Frame::parse(const ByteVector &data) -{ - if(d->header) - d->header->setData(data); - else - d->header = new Header(data); - - parseFields(fieldData(data)); -} - -ByteVector Frame::fieldData(const ByteVector &frameData) const -{ - unsigned int headerSize = Header::size(d->header->version()); - - unsigned int frameDataOffset = headerSize; - unsigned int frameDataLength = size(); - - if(d->header->compression() || d->header->dataLengthIndicator()) { - frameDataLength = SynchData::toUInt(frameData.mid(headerSize, 4)); - frameDataOffset += 4; - } - - if(zlib::isAvailable() && d->header->compression() && !d->header->encryption()) { - if(frameData.size() <= frameDataOffset) { - debug("Compressed frame doesn't have enough data to decode"); - return ByteVector(); - } - - const ByteVector outData = zlib::decompress(frameData.mid(frameDataOffset)); - if(!outData.isEmpty() && frameDataLength != outData.size()) { - debug("frameDataLength does not match the data length returned by zlib"); - } - - return outData; - } - - return frameData.mid(frameDataOffset, frameDataLength); -} - -String Frame::readStringField(const ByteVector &data, String::Type encoding, int *position) -{ - int start = 0; - - if(!position) - position = &start; - - ByteVector delimiter = textDelimiter(encoding); - - int end = data.find(delimiter, *position, delimiter.size()); - - if(end < *position) - return String(); - - String str; - if(encoding == String::Latin1) - str = Tag::latin1StringHandler()->parse(data.mid(*position, end - *position)); - else - str = String(data.mid(*position, end - *position), encoding); - - *position = end + delimiter.size(); - - return str; -} - -String::Type Frame::checkEncoding(const StringList &fields, String::Type encoding) // static -{ - return checkEncoding(fields, encoding, 4); -} - -String::Type Frame::checkEncoding(const StringList &fields, String::Type encoding, unsigned int version) // static -{ - if((encoding == String::UTF8 || encoding == String::UTF16BE) && version != 4) - return String::UTF16; - - if(encoding != String::Latin1) - return encoding; - - for(StringList::ConstIterator it = fields.begin(); it != fields.end(); ++it) { - if(!(*it).isLatin1()) { - if(version == 4) { - debug("Frame::checkEncoding() -- Rendering using UTF8."); - return String::UTF8; - } - else { - debug("Frame::checkEncoding() -- Rendering using UTF16."); - return String::UTF16; - } - } - } - - return String::Latin1; -} - -String::Type Frame::checkTextEncoding(const StringList &fields, String::Type encoding) const -{ - return checkEncoding(fields, encoding, header()->version()); -} - -namespace -{ - const char *frameTranslation[][2] = { - // Text information frames - { "TALB", "ALBUM"}, - { "TBPM", "BPM" }, - { "TCOM", "COMPOSER" }, - { "TCON", "GENRE" }, - { "TCOP", "COPYRIGHT" }, - { "TDEN", "ENCODINGTIME" }, - { "TDLY", "PLAYLISTDELAY" }, - { "TDOR", "ORIGINALDATE" }, - { "TDRC", "DATE" }, - // { "TRDA", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - // { "TDAT", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - // { "TYER", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - // { "TIME", "DATE" }, // id3 v2.3, replaced by TDRC in v2.4 - { "TDRL", "RELEASEDATE" }, - { "TDTG", "TAGGINGDATE" }, - { "TENC", "ENCODEDBY" }, - { "TEXT", "LYRICIST" }, - { "TFLT", "FILETYPE" }, - //{ "TIPL", "INVOLVEDPEOPLE" }, handled separately - { "TIT1", "CONTENTGROUP" }, // 'Work' in iTunes - { "TIT2", "TITLE"}, - { "TIT3", "SUBTITLE" }, - { "TKEY", "INITIALKEY" }, - { "TLAN", "LANGUAGE" }, - { "TLEN", "LENGTH" }, - //{ "TMCL", "MUSICIANCREDITS" }, handled separately - { "TMED", "MEDIA" }, - { "TMOO", "MOOD" }, - { "TOAL", "ORIGINALALBUM" }, - { "TOFN", "ORIGINALFILENAME" }, - { "TOLY", "ORIGINALLYRICIST" }, - { "TOPE", "ORIGINALARTIST" }, - { "TOWN", "OWNER" }, - { "TPE1", "ARTIST"}, - { "TPE2", "ALBUMARTIST" }, // id3's spec says 'PERFORMER', but most programs use 'ALBUMARTIST' - { "TPE3", "CONDUCTOR" }, - { "TPE4", "REMIXER" }, // could also be ARRANGER - { "TPOS", "DISCNUMBER" }, - { "TPRO", "PRODUCEDNOTICE" }, - { "TPUB", "LABEL" }, - { "TRCK", "TRACKNUMBER" }, - { "TRSN", "RADIOSTATION" }, - { "TRSO", "RADIOSTATIONOWNER" }, - { "TSOA", "ALBUMSORT" }, - { "TSOC", "COMPOSERSORT" }, - { "TSOP", "ARTISTSORT" }, - { "TSOT", "TITLESORT" }, - { "TSO2", "ALBUMARTISTSORT" }, // non-standard, used by iTunes - { "TSRC", "ISRC" }, - { "TSSE", "ENCODING" }, - // URL frames - { "WCOP", "COPYRIGHTURL" }, - { "WOAF", "FILEWEBPAGE" }, - { "WOAR", "ARTISTWEBPAGE" }, - { "WOAS", "AUDIOSOURCEWEBPAGE" }, - { "WORS", "RADIOSTATIONWEBPAGE" }, - { "WPAY", "PAYMENTWEBPAGE" }, - { "WPUB", "PUBLISHERWEBPAGE" }, - //{ "WXXX", "URL"}, handled specially - // Other frames - { "COMM", "COMMENT" }, - //{ "USLT", "LYRICS" }, handled specially - // Apple iTunes proprietary frames - { "PCST", "PODCAST" }, - { "TCAT", "PODCASTCATEGORY" }, - { "TDES", "PODCASTDESC" }, - { "TGID", "PODCASTID" }, - { "WFED", "PODCASTURL" }, - { "MVNM", "MOVEMENTNAME" }, - { "MVIN", "MOVEMENTNUMBER" }, - { "GRP1", "GROUPING" }, - }; - const size_t frameTranslationSize = sizeof(frameTranslation) / sizeof(frameTranslation[0]); - - const char *txxxFrameTranslation[][2] = { - { "MUSICBRAINZ ALBUM ID", "MUSICBRAINZ_ALBUMID" }, - { "MUSICBRAINZ ARTIST ID", "MUSICBRAINZ_ARTISTID" }, - { "MUSICBRAINZ ALBUM ARTIST ID", "MUSICBRAINZ_ALBUMARTISTID" }, - { "MUSICBRAINZ ALBUM RELEASE COUNTRY", "RELEASECOUNTRY" }, - { "MUSICBRAINZ ALBUM STATUS", "RELEASESTATUS" }, - { "MUSICBRAINZ ALBUM TYPE", "RELEASETYPE" }, - { "MUSICBRAINZ RELEASE GROUP ID", "MUSICBRAINZ_RELEASEGROUPID" }, - { "MUSICBRAINZ RELEASE TRACK ID", "MUSICBRAINZ_RELEASETRACKID" }, - { "MUSICBRAINZ WORK ID", "MUSICBRAINZ_WORKID" }, - { "ACOUSTID ID", "ACOUSTID_ID" }, - { "ACOUSTID FINGERPRINT", "ACOUSTID_FINGERPRINT" }, - { "MUSICIP PUID", "MUSICIP_PUID" }, - }; - const size_t txxxFrameTranslationSize = sizeof(txxxFrameTranslation) / sizeof(txxxFrameTranslation[0]); - - // list of deprecated frames and their successors - const char *deprecatedFrames[][2] = { - {"TRDA", "TDRC"}, // 2.3 -> 2.4 (http://en.wikipedia.org/wiki/ID3) - {"TDAT", "TDRC"}, // 2.3 -> 2.4 - {"TYER", "TDRC"}, // 2.3 -> 2.4 - {"TIME", "TDRC"}, // 2.3 -> 2.4 - }; - const size_t deprecatedFramesSize = sizeof(deprecatedFrames) / sizeof(deprecatedFrames[0]); -} - -String Frame::frameIDToKey(const ByteVector &id) -{ - ByteVector id24 = id; - for(size_t i = 0; i < deprecatedFramesSize; ++i) { - if(id24 == deprecatedFrames[i][0]) { - id24 = deprecatedFrames[i][1]; - break; - } - } - for(size_t i = 0; i < frameTranslationSize; ++i) { - if(id24 == frameTranslation[i][0]) - return frameTranslation[i][1]; - } - return String(); -} - -ByteVector Frame::keyToFrameID(const String &s) -{ - const String key = s.upper(); - for(size_t i = 0; i < frameTranslationSize; ++i) { - if(key == frameTranslation[i][1]) - return frameTranslation[i][0]; - } - return ByteVector(); -} - -String Frame::txxxToKey(const String &description) -{ - const String d = description.upper(); - for(size_t i = 0; i < txxxFrameTranslationSize; ++i) { - if(d == txxxFrameTranslation[i][0]) - return txxxFrameTranslation[i][1]; - } - return d; -} - -String Frame::keyToTXXX(const String &s) -{ - const String key = s.upper(); - for(size_t i = 0; i < txxxFrameTranslationSize; ++i) { - if(key == txxxFrameTranslation[i][1]) - return txxxFrameTranslation[i][0]; - } - return s; -} - -PropertyMap Frame::asProperties() const -{ - if(dynamic_cast< const UnknownFrame *>(this)) { - PropertyMap m; - m.unsupportedData().append("UNKNOWN/" + frameID()); - return m; - } - const ByteVector &id = frameID(); - // workaround until this function is virtual - if(id == "TXXX") - return dynamic_cast< const UserTextIdentificationFrame* >(this)->asProperties(); - // Apple proprietary WFED (Podcast URL), MVNM (Movement Name), MVIN (Movement Number), GRP1 (Grouping) are in fact text frames. - else if(id[0] == 'T' || id == "WFED" || id == "MVNM" || id == "MVIN" || id == "GRP1") - return dynamic_cast< const TextIdentificationFrame* >(this)->asProperties(); - else if(id == "WXXX") - return dynamic_cast< const UserUrlLinkFrame* >(this)->asProperties(); - else if(id[0] == 'W') - return dynamic_cast< const UrlLinkFrame* >(this)->asProperties(); - else if(id == "COMM") - return dynamic_cast< const CommentsFrame* >(this)->asProperties(); - else if(id == "USLT") - return dynamic_cast< const UnsynchronizedLyricsFrame* >(this)->asProperties(); - else if(id == "UFID") - return dynamic_cast< const UniqueFileIdentifierFrame* >(this)->asProperties(); - else if(id == "PCST") - return dynamic_cast< const PodcastFrame* >(this)->asProperties(); - PropertyMap m; - m.unsupportedData().append(id); - return m; -} - -void Frame::splitProperties(const PropertyMap &original, PropertyMap &singleFrameProperties, - PropertyMap &tiplProperties, PropertyMap &tmclProperties) -{ - singleFrameProperties.clear(); - tiplProperties.clear(); - tmclProperties.clear(); - for(PropertyMap::ConstIterator it = original.begin(); it != original.end(); ++it) { - if(TextIdentificationFrame::involvedPeopleMap().contains(it->first)) - tiplProperties.insert(it->first, it->second); - else if(it->first.startsWith(TextIdentificationFrame::instrumentPrefix)) - tmclProperties.insert(it->first, it->second); - else - singleFrameProperties.insert(it->first, it->second); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// Frame::Header class -//////////////////////////////////////////////////////////////////////////////// - -class Frame::Header::HeaderPrivate -{ -public: - HeaderPrivate() : - frameSize(0), - version(4), - tagAlterPreservation(false), - fileAlterPreservation(false), - readOnly(false), - groupingIdentity(false), - compression(false), - encryption(false), - unsynchronisation(false), - dataLengthIndicator(false) - {} - - ByteVector frameID; - unsigned int frameSize; - unsigned int version; - - // flags - - bool tagAlterPreservation; - bool fileAlterPreservation; - bool readOnly; - bool groupingIdentity; - bool compression; - bool encryption; - bool unsynchronisation; - bool dataLengthIndicator; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members (Frame::Header) -//////////////////////////////////////////////////////////////////////////////// - -unsigned int Frame::Header::size() -{ - return size(4); -} - -unsigned int Frame::Header::size(unsigned int version) -{ - switch(version) { - case 0: - case 1: - case 2: - return 6; - case 3: - case 4: - default: - return 10; - } -} - -//////////////////////////////////////////////////////////////////////////////// -// public members (Frame::Header) -//////////////////////////////////////////////////////////////////////////////// - -Frame::Header::Header(const ByteVector &data, bool synchSafeInts) : - d(new HeaderPrivate()) -{ - setData(data, synchSafeInts); -} - -Frame::Header::Header(const ByteVector &data, unsigned int version) : - d(new HeaderPrivate()) -{ - setData(data, version); -} - -Frame::Header::~Header() -{ - delete d; -} - -void Frame::Header::setData(const ByteVector &data, bool synchSafeInts) -{ - setData(data, static_cast<unsigned int>(synchSafeInts ? 4 : 3)); -} - -void Frame::Header::setData(const ByteVector &data, unsigned int version) -{ - d->version = version; - - switch(version) { - case 0: - case 1: - case 2: - { - // ID3v2.2 - - if(data.size() < 3) { - debug("You must at least specify a frame ID."); - return; - } - - // Set the frame ID -- the first three bytes - - d->frameID = data.mid(0, 3); - - // If the full header information was not passed in, do not continue to the - // steps to parse the frame size and flags. - - if(data.size() < 6) { - d->frameSize = 0; - return; - } - - d->frameSize = data.toUInt(3, 3, true); - - break; - } - case 3: - { - // ID3v2.3 - - if(data.size() < 4) { - debug("You must at least specify a frame ID."); - return; - } - - // Set the frame ID -- the first four bytes - - d->frameID = data.mid(0, 4); - - // If the full header information was not passed in, do not continue to the - // steps to parse the frame size and flags. - - if(data.size() < 10) { - d->frameSize = 0; - return; - } - - // Set the size -- the frame size is the four bytes starting at byte four in - // the frame header (structure 4) - - d->frameSize = data.toUInt(4U); - - { // read the first byte of flags - std::bitset<8> flags(data[8]); - d->tagAlterPreservation = flags[7]; // (structure 3.3.1.a) - d->fileAlterPreservation = flags[6]; // (structure 3.3.1.b) - d->readOnly = flags[5]; // (structure 3.3.1.c) - } - - { // read the second byte of flags - std::bitset<8> flags(data[9]); - d->compression = flags[7]; // (structure 3.3.1.i) - d->encryption = flags[6]; // (structure 3.3.1.j) - d->groupingIdentity = flags[5]; // (structure 3.3.1.k) - } - break; - } - case 4: - default: - { - // ID3v2.4 - - if(data.size() < 4) { - debug("You must at least specify a frame ID."); - return; - } - - // Set the frame ID -- the first four bytes - - d->frameID = data.mid(0, 4); - - // If the full header information was not passed in, do not continue to the - // steps to parse the frame size and flags. - - if(data.size() < 10) { - d->frameSize = 0; - return; - } - - // Set the size -- the frame size is the four bytes starting at byte four in - // the frame header (structure 4) - - d->frameSize = SynchData::toUInt(data.mid(4, 4)); -#ifndef NO_ITUNES_HACKS - // iTunes writes v2.4 tags with v2.3-like frame sizes - if(d->frameSize > 127) { - if(!isValidFrameID(data.mid(d->frameSize + 10, 4))) { - unsigned int uintSize = data.toUInt(4U); - if(isValidFrameID(data.mid(uintSize + 10, 4))) { - d->frameSize = uintSize; - } - } - } -#endif - - { // read the first byte of flags - std::bitset<8> flags(data[8]); - d->tagAlterPreservation = flags[6]; // (structure 4.1.1.a) - d->fileAlterPreservation = flags[5]; // (structure 4.1.1.b) - d->readOnly = flags[4]; // (structure 4.1.1.c) - } - - { // read the second byte of flags - std::bitset<8> flags(data[9]); - d->groupingIdentity = flags[6]; // (structure 4.1.2.h) - d->compression = flags[3]; // (structure 4.1.2.k) - d->encryption = flags[2]; // (structure 4.1.2.m) - d->unsynchronisation = flags[1]; // (structure 4.1.2.n) - d->dataLengthIndicator = flags[0]; // (structure 4.1.2.p) - } - break; - } - } -} - -ByteVector Frame::Header::frameID() const -{ - return d->frameID; -} - -void Frame::Header::setFrameID(const ByteVector &id) -{ - d->frameID = id.mid(0, 4); -} - -unsigned int Frame::Header::frameSize() const -{ - return d->frameSize; -} - -void Frame::Header::setFrameSize(unsigned int size) -{ - d->frameSize = size; -} - -unsigned int Frame::Header::version() const -{ - return d->version; -} - -void Frame::Header::setVersion(unsigned int version) -{ - d->version = version; -} - -bool Frame::Header::tagAlterPreservation() const -{ - return d->tagAlterPreservation; -} - -void Frame::Header::setTagAlterPreservation(bool preserve) -{ - d->tagAlterPreservation = preserve; -} - -bool Frame::Header::fileAlterPreservation() const -{ - return d->fileAlterPreservation; -} - -bool Frame::Header::readOnly() const -{ - return d->readOnly; -} - -bool Frame::Header::groupingIdentity() const -{ - return d->groupingIdentity; -} - -bool Frame::Header::compression() const -{ - return d->compression; -} - -bool Frame::Header::encryption() const -{ - return d->encryption; -} - -bool Frame::Header::unsycronisation() const -{ - return unsynchronisation(); -} - -bool Frame::Header::unsynchronisation() const -{ - return d->unsynchronisation; -} - -bool Frame::Header::dataLengthIndicator() const -{ - return d->dataLengthIndicator; -} - -ByteVector Frame::Header::render() const -{ - ByteVector flags(2, char(0)); // just blank for the moment - - ByteVector v = d->frameID + - (d->version == 3 - ? ByteVector::fromUInt(d->frameSize) - : SynchData::fromUInt(d->frameSize)) + - flags; - - return v; -} - -bool Frame::Header::frameAlterPreservation() const -{ - return fileAlterPreservation(); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp deleted file mode 100644 index 6166757d5..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2framefactory.cpp +++ /dev/null @@ -1,552 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tzlib.h> - -#include <taglib/mpeg/id3v2/id3v2framefactory.h> -#include <taglib/mpeg/id3v2/id3v2synchdata.h> -#include <taglib/mpeg/id3v1/id3v1genres.h> - -#include <taglib/mpeg/id3v2/frames/attachedpictureframe.h> -#include <taglib/mpeg/id3v2/frames/commentsframe.h> -#include <taglib/mpeg/id3v2/frames/relativevolumeframe.h> -#include <taglib/mpeg/id3v2/frames/textidentificationframe.h> -#include <taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h> -#include <taglib/mpeg/id3v2/frames/unknownframe.h> -#include <taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h> -#include <taglib/mpeg/id3v2/frames/urllinkframe.h> -#include <taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h> -#include <taglib/mpeg/id3v2/frames/popularimeterframe.h> -#include <taglib/mpeg/id3v2/frames/privateframe.h> -#include <taglib/mpeg/id3v2/frames/ownershipframe.h> -#include <taglib/mpeg/id3v2/frames/synchronizedlyricsframe.h> -#include <taglib/mpeg/id3v2/frames/eventtimingcodesframe.h> -#include <taglib/mpeg/id3v2/frames/chapterframe.h> -#include <taglib/mpeg/id3v2/frames/tableofcontentsframe.h> -#include <taglib/mpeg/id3v2/frames/podcastframe.h> - -using namespace TagLib; -using namespace ID3v2; - -namespace -{ - void updateGenre(TextIdentificationFrame *frame) - { - StringList fields = frame->fieldList(); - StringList newfields; - - for(StringList::ConstIterator it = fields.begin(); it != fields.end(); ++it) { - String s = *it; - int offset = 0; - int end = 0; - - while(s.length() > offset && s[offset] == '(' && - (end = s.find(")", offset + 1)) > offset) { - // "(12)Genre" - const String genreCode = s.substr(offset + 1, end - 1); - s = s.substr(end + 1); - bool ok; - int number = genreCode.toInt(&ok); - if((ok && number >= 0 && number <= 255 && - !(ID3v1::genre(number) == s)) || - genreCode == "RX" || genreCode == "CR") - newfields.append(genreCode); - } - if(!s.isEmpty()) - // "Genre" or "12" - newfields.append(s); - } - - if(newfields.isEmpty()) - fields.append(String()); - - frame->setText(newfields); - } -} - -class FrameFactory::FrameFactoryPrivate -{ -public: - FrameFactoryPrivate() : - defaultEncoding(String::Latin1), - useDefaultEncoding(false) {} - - String::Type defaultEncoding; - bool useDefaultEncoding; - - template <class T> void setTextEncoding(T *frame) - { - if(useDefaultEncoding) - frame->setTextEncoding(defaultEncoding); - } -}; - -FrameFactory FrameFactory::factory; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FrameFactory *FrameFactory::instance() -{ - return &factory; -} - -Frame *FrameFactory::createFrame(const ByteVector &data, bool synchSafeInts) const -{ - return createFrame(data, static_cast<unsigned int>(synchSafeInts ? 4 : 3)); -} - -Frame *FrameFactory::createFrame(const ByteVector &data, unsigned int version) const -{ - Header tagHeader; - tagHeader.setMajorVersion(version); - return createFrame(data, &tagHeader); -} - -Frame *FrameFactory::createFrame(const ByteVector &origData, Header *tagHeader) const -{ - return createFrame(origData, const_cast<const Header *>(tagHeader)); -} - -Frame *FrameFactory::createFrame(const ByteVector &origData, const Header *tagHeader) const -{ - ByteVector data = origData; - unsigned int version = tagHeader->majorVersion(); - Frame::Header *header = new Frame::Header(data, version); - ByteVector frameID = header->frameID(); - - // A quick sanity check -- make sure that the frameID is 4 uppercase Latin1 - // characters. Also make sure that there is data in the frame. - - if(frameID.size() != (version < 3 ? 3 : 4) || - header->frameSize() <= static_cast<unsigned int>(header->dataLengthIndicator() ? 4 : 0) || - header->frameSize() > data.size()) - { - delete header; - return 0; - } - -#ifndef NO_ITUNES_HACKS - if(version == 3 && frameID.size() == 4 && frameID[3] == '\0') { - // iTunes v2.3 tags store v2.2 frames - convert now - frameID = frameID.mid(0, 3); - header->setFrameID(frameID); - header->setVersion(2); - updateFrame(header); - header->setVersion(3); - } -#endif - - for(ByteVector::ConstIterator it = frameID.begin(); it != frameID.end(); it++) { - if( (*it < 'A' || *it > 'Z') && (*it < '0' || *it > '9') ) { - delete header; - return 0; - } - } - - if(version > 3 && (tagHeader->unsynchronisation() || header->unsynchronisation())) { - // Data lengths are not part of the encoded data, but since they are synch-safe - // integers they will be never actually encoded. - ByteVector frameData = data.mid(Frame::Header::size(version), header->frameSize()); - frameData = SynchData::decode(frameData); - data = data.mid(0, Frame::Header::size(version)) + frameData; - } - - // TagLib doesn't mess with encrypted frames, so just treat them - // as unknown frames. - - if(!zlib::isAvailable() && header->compression()) { - debug("Compressed frames are currently not supported."); - return new UnknownFrame(data, header); - } - - if(header->encryption()) { - debug("Encrypted frames are currently not supported."); - return new UnknownFrame(data, header); - } - - if(!updateFrame(header)) { - header->setTagAlterPreservation(true); - return new UnknownFrame(data, header); - } - - // updateFrame() might have updated the frame ID. - - frameID = header->frameID(); - - // This is where things get necissarily nasty. Here we determine which - // Frame subclass (or if none is found simply an Frame) based - // on the frame ID. Since there are a lot of possibilities, that means - // a lot of if blocks. - - // Text Identification (frames 4.2) - - // Apple proprietary WFED (Podcast URL), MVNM (Movement Name), MVIN (Movement Number), GRP1 (Grouping) are in fact text frames. - if(frameID.startsWith("T") || frameID == "WFED" || frameID == "MVNM" || frameID == "MVIN" || frameID == "GRP1") { - - TextIdentificationFrame *f = frameID != "TXXX" - ? new TextIdentificationFrame(data, header) - : new UserTextIdentificationFrame(data, header); - - d->setTextEncoding(f); - - if(frameID == "TCON") - updateGenre(f); - - return f; - } - - // Comments (frames 4.10) - - if(frameID == "COMM") { - CommentsFrame *f = new CommentsFrame(data, header); - d->setTextEncoding(f); - return f; - } - - // Attached Picture (frames 4.14) - - if(frameID == "APIC") { - AttachedPictureFrame *f = new AttachedPictureFrame(data, header); - d->setTextEncoding(f); - return f; - } - - // ID3v2.2 Attached Picture - - if(frameID == "PIC") { - AttachedPictureFrame *f = new AttachedPictureFrameV22(data, header); - d->setTextEncoding(f); - return f; - } - - // Relative Volume Adjustment (frames 4.11) - - if(frameID == "RVA2") - return new RelativeVolumeFrame(data, header); - - // Unique File Identifier (frames 4.1) - - if(frameID == "UFID") - return new UniqueFileIdentifierFrame(data, header); - - // General Encapsulated Object (frames 4.15) - - if(frameID == "GEOB") { - GeneralEncapsulatedObjectFrame *f = new GeneralEncapsulatedObjectFrame(data, header); - d->setTextEncoding(f); - return f; - } - - // URL link (frames 4.3) - - if(frameID.startsWith("W")) { - if(frameID != "WXXX") { - return new UrlLinkFrame(data, header); - } - else { - UserUrlLinkFrame *f = new UserUrlLinkFrame(data, header); - d->setTextEncoding(f); - return f; - } - } - - // Unsynchronized lyric/text transcription (frames 4.8) - - if(frameID == "USLT") { - UnsynchronizedLyricsFrame *f = new UnsynchronizedLyricsFrame(data, header); - if(d->useDefaultEncoding) - f->setTextEncoding(d->defaultEncoding); - return f; - } - - // Synchronized lyrics/text (frames 4.9) - - if(frameID == "SYLT") { - SynchronizedLyricsFrame *f = new SynchronizedLyricsFrame(data, header); - if(d->useDefaultEncoding) - f->setTextEncoding(d->defaultEncoding); - return f; - } - - // Event timing codes (frames 4.5) - - if(frameID == "ETCO") - return new EventTimingCodesFrame(data, header); - - // Popularimeter (frames 4.17) - - if(frameID == "POPM") - return new PopularimeterFrame(data, header); - - // Private (frames 4.27) - - if(frameID == "PRIV") - return new PrivateFrame(data, header); - - // Ownership (frames 4.22) - - if(frameID == "OWNE") { - OwnershipFrame *f = new OwnershipFrame(data, header); - d->setTextEncoding(f); - return f; - } - - // Chapter (ID3v2 chapters 1.0) - - if(frameID == "CHAP") - return new ChapterFrame(tagHeader, data, header); - - // Table of contents (ID3v2 chapters 1.0) - - if(frameID == "CTOC") - return new TableOfContentsFrame(tagHeader, data, header); - - // Apple proprietary PCST (Podcast) - - if(frameID == "PCST") - return new PodcastFrame(data, header); - - return new UnknownFrame(data, header); -} - -void FrameFactory::rebuildAggregateFrames(ID3v2::Tag *tag) const -{ - if(tag->header()->majorVersion() < 4 && - tag->frameList("TDRC").size() == 1 && - tag->frameList("TDAT").size() == 1) - { - TextIdentificationFrame *tdrc = - dynamic_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front()); - UnknownFrame *tdat = static_cast<UnknownFrame *>(tag->frameList("TDAT").front()); - - if(tdrc && - tdrc->fieldList().size() == 1 && - tdrc->fieldList().front().size() == 4 && - tdat->data().size() >= 5) - { - String date(tdat->data().mid(1), String::Type(tdat->data()[0])); - if(date.length() == 4) { - tdrc->setText(tdrc->toString() + '-' + date.substr(2, 2) + '-' + date.substr(0, 2)); - if(tag->frameList("TIME").size() == 1) { - UnknownFrame *timeframe = static_cast<UnknownFrame *>(tag->frameList("TIME").front()); - if(timeframe->data().size() >= 5) { - String time(timeframe->data().mid(1), String::Type(timeframe->data()[0])); - if(time.length() == 4) { - tdrc->setText(tdrc->toString() + 'T' + time.substr(0, 2) + ':' + time.substr(2, 2)); - } - } - } - } - } - } -} - -String::Type FrameFactory::defaultTextEncoding() const -{ - return d->defaultEncoding; -} - -void FrameFactory::setDefaultTextEncoding(String::Type encoding) -{ - d->useDefaultEncoding = true; - d->defaultEncoding = encoding; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -FrameFactory::FrameFactory() : - d(new FrameFactoryPrivate()) -{ -} - -FrameFactory::~FrameFactory() -{ - delete d; -} - -namespace -{ - // Frame conversion table ID3v2.2 -> 2.4 - const char *frameConversion2[][2] = { - { "BUF", "RBUF" }, - { "CNT", "PCNT" }, - { "COM", "COMM" }, - { "CRA", "AENC" }, - { "ETC", "ETCO" }, - { "GEO", "GEOB" }, - { "IPL", "TIPL" }, - { "MCI", "MCDI" }, - { "MLL", "MLLT" }, - { "POP", "POPM" }, - { "REV", "RVRB" }, - { "SLT", "SYLT" }, - { "STC", "SYTC" }, - { "TAL", "TALB" }, - { "TBP", "TBPM" }, - { "TCM", "TCOM" }, - { "TCO", "TCON" }, - { "TCP", "TCMP" }, - { "TCR", "TCOP" }, - { "TDY", "TDLY" }, - { "TEN", "TENC" }, - { "TFT", "TFLT" }, - { "TKE", "TKEY" }, - { "TLA", "TLAN" }, - { "TLE", "TLEN" }, - { "TMT", "TMED" }, - { "TOA", "TOAL" }, - { "TOF", "TOFN" }, - { "TOL", "TOLY" }, - { "TOR", "TDOR" }, - { "TOT", "TOAL" }, - { "TP1", "TPE1" }, - { "TP2", "TPE2" }, - { "TP3", "TPE3" }, - { "TP4", "TPE4" }, - { "TPA", "TPOS" }, - { "TPB", "TPUB" }, - { "TRC", "TSRC" }, - { "TRD", "TDRC" }, - { "TRK", "TRCK" }, - { "TS2", "TSO2" }, - { "TSA", "TSOA" }, - { "TSC", "TSOC" }, - { "TSP", "TSOP" }, - { "TSS", "TSSE" }, - { "TST", "TSOT" }, - { "TT1", "TIT1" }, - { "TT2", "TIT2" }, - { "TT3", "TIT3" }, - { "TXT", "TOLY" }, - { "TXX", "TXXX" }, - { "TYE", "TDRC" }, - { "UFI", "UFID" }, - { "ULT", "USLT" }, - { "WAF", "WOAF" }, - { "WAR", "WOAR" }, - { "WAS", "WOAS" }, - { "WCM", "WCOM" }, - { "WCP", "WCOP" }, - { "WPB", "WPUB" }, - { "WXX", "WXXX" }, - - // Apple iTunes nonstandard frames - { "PCS", "PCST" }, - { "TCT", "TCAT" }, - { "TDR", "TDRL" }, - { "TDS", "TDES" }, - { "TID", "TGID" }, - { "WFD", "WFED" }, - { "MVN", "MVNM" }, - { "MVI", "MVIN" }, - { "GP1", "GRP1" }, - }; - const size_t frameConversion2Size = sizeof(frameConversion2) / sizeof(frameConversion2[0]); - - // Frame conversion table ID3v2.3 -> 2.4 - const char *frameConversion3[][2] = { - { "TORY", "TDOR" }, - { "TYER", "TDRC" }, - { "IPLS", "TIPL" }, - }; - const size_t frameConversion3Size = sizeof(frameConversion3) / sizeof(frameConversion3[0]); -} - -bool FrameFactory::updateFrame(Frame::Header *header) const -{ - const ByteVector frameID = header->frameID(); - - switch(header->version()) { - - case 2: // ID3v2.2 - { - if(frameID == "CRM" || - frameID == "EQU" || - frameID == "LNK" || - frameID == "RVA" || - frameID == "TIM" || - frameID == "TSI" || - frameID == "TDA") - { - debug("ID3v2.4 no longer supports the frame type " + String(frameID) + - ". It will be discarded from the tag."); - return false; - } - - // ID3v2.2 only used 3 bytes for the frame ID, so we need to convert all of - // the frames to their 4 byte ID3v2.4 equivalent. - - for(size_t i = 0; i < frameConversion2Size; ++i) { - if(frameID == frameConversion2[i][0]) { - header->setFrameID(frameConversion2[i][1]); - break; - } - } - - break; - } - - case 3: // ID3v2.3 - { - if(frameID == "EQUA" || - frameID == "RVAD" || - frameID == "TIME" || - frameID == "TRDA" || - frameID == "TSIZ" || - frameID == "TDAT") - { - debug("ID3v2.4 no longer supports the frame type " + String(frameID) + - ". It will be discarded from the tag."); - return false; - } - - for(size_t i = 0; i < frameConversion3Size; ++i) { - if(frameID == frameConversion3[i][0]) { - header->setFrameID(frameConversion3[i][1]); - break; - } - } - - break; - } - - default: - - // This should catch a typo that existed in TagLib up to and including - // version 1.1 where TRDC was used for the year rather than TDRC. - - if(frameID == "TRDC") - header->setFrameID("TDRC"); - - break; - } - - return true; -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2header.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2header.cpp deleted file mode 100644 index 14ed05e01..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2header.cpp +++ /dev/null @@ -1,239 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <iostream> -#include <bitset> - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/mpeg/id3v2/id3v2footer.h> -#include <taglib/mpeg/id3v2/id3v2synchdata.h> - -using namespace TagLib; -using namespace ID3v2; - -class Header::HeaderPrivate -{ -public: - HeaderPrivate() : - majorVersion(4), - revisionNumber(0), - unsynchronisation(false), - extendedHeader(false), - experimentalIndicator(false), - footerPresent(false), - tagSize(0) {} - - unsigned int majorVersion; - unsigned int revisionNumber; - - bool unsynchronisation; - bool extendedHeader; - bool experimentalIndicator; - bool footerPresent; - - unsigned int tagSize; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -unsigned int Header::size() -{ - return 10; -} - -ByteVector Header::fileIdentifier() -{ - return ByteVector::fromCString("ID3"); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Header::Header() : - d(new HeaderPrivate()) -{ -} - -Header::Header(const ByteVector &data) : - d(new HeaderPrivate()) -{ - parse(data); -} - -Header::~Header() -{ - delete d; -} - -unsigned int Header::majorVersion() const -{ - return d->majorVersion; -} - -void Header::setMajorVersion(unsigned int version) -{ - d->majorVersion = version; -} - -unsigned int Header::revisionNumber() const -{ - return d->revisionNumber; -} - -bool Header::unsynchronisation() const -{ - return d->unsynchronisation; -} - -bool Header::extendedHeader() const -{ - return d->extendedHeader; -} - -bool Header::experimentalIndicator() const -{ - return d->experimentalIndicator; -} - -bool Header::footerPresent() const -{ - return d->footerPresent; -} - -unsigned int Header::tagSize() const -{ - return d->tagSize; -} - -unsigned int Header::completeTagSize() const -{ - if(d->footerPresent) - return d->tagSize + size() + Footer::size(); - else - return d->tagSize + size(); -} - -void Header::setTagSize(unsigned int s) -{ - d->tagSize = s; -} - -void Header::setData(const ByteVector &data) -{ - parse(data); -} - -ByteVector Header::render() const -{ - ByteVector v; - - // add the file identifier -- "ID3" - v.append(fileIdentifier()); - - // add the version number -- we always render a 2.4.0 tag regardless of what - // the tag originally was. - - v.append(char(majorVersion())); - v.append(char(0)); - - // Currently we don't actually support writing extended headers, footers or - // unsynchronized tags, make sure that the flags are set accordingly. - - d->extendedHeader = false; - d->footerPresent = false; - d->unsynchronisation = false; - - // render and add the flags - std::bitset<8> flags; - - flags[7] = d->unsynchronisation; - flags[6] = d->extendedHeader; - flags[5] = d->experimentalIndicator; - flags[4] = d->footerPresent; - - v.append(char(flags.to_ulong())); - - // add the size - v.append(SynchData::fromUInt(d->tagSize)); - - return v; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void Header::parse(const ByteVector &data) -{ - if(data.size() < size()) - return; - - // do some sanity checking -- even in ID3v2.3.0 and less the tag size is a - // synch-safe integer, so all bytes must be less than 128. If this is not - // true then this is an invalid tag. - - // note that we're doing things a little out of order here -- the size is - // later in the bytestream than the version - - ByteVector sizeData = data.mid(6, 4); - - if(sizeData.size() != 4) { - d->tagSize = 0; - debug("TagLib::ID3v2::Header::parse() - The tag size as read was 0 bytes!"); - return; - } - - for(ByteVector::ConstIterator it = sizeData.begin(); it != sizeData.end(); it++) { - if(static_cast<unsigned char>(*it) >= 128) { - d->tagSize = 0; - debug("TagLib::ID3v2::Header::parse() - One of the size bytes in the id3v2 header was greater than the allowed 128."); - return; - } - } - - // The first three bytes, data[0..2], are the File Identifier, "ID3". (structure 3.1 "file identifier") - - // Read the version number from the fourth and fifth bytes. - d->majorVersion = data[3]; // (structure 3.1 "major version") - d->revisionNumber = data[4]; // (structure 3.1 "revision number") - - // Read the flags, the first four bits of the sixth byte. - std::bitset<8> flags(data[5]); - - d->unsynchronisation = flags[7]; // (structure 3.1.a) - d->extendedHeader = flags[6]; // (structure 3.1.b) - d->experimentalIndicator = flags[5]; // (structure 3.1.c) - d->footerPresent = flags[4]; // (structure 3.1.d) - - // Get the size from the remaining four bytes (read above) - - d->tagSize = SynchData::toUInt(sizeData); // (structure 3.1 "size") -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp deleted file mode 100644 index 981880b25..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2synchdata.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <iostream> - -#include <taglib/mpeg/id3v2/id3v2synchdata.h> - -using namespace TagLib; -using namespace ID3v2; - -unsigned int SynchData::toUInt(const ByteVector &data) -{ - unsigned int sum = 0; - bool notSynchSafe = false; - int last = data.size() > 4 ? 3 : data.size() - 1; - - for(int i = 0; i <= last; i++) { - if(data[i] & 0x80) { - notSynchSafe = true; - break; - } - - sum |= (data[i] & 0x7f) << ((last - i) * 7); - } - - if(notSynchSafe) { - // Invalid data; assume this was created by some buggy software that just - // put normal integers here rather than syncsafe ones, and try it that - // way. - if(data.size() >= 4) { - sum = data.toUInt(0, true); - } - else { - ByteVector tmp(data); - tmp.resize(4); - sum = tmp.toUInt(0, true); - } - } - - return sum; -} - -ByteVector SynchData::fromUInt(unsigned int value) -{ - ByteVector v(4, 0); - - for(int i = 0; i < 4; i++) - v[i] = static_cast<unsigned char>(value >> ((3 - i) * 7) & 0x7f); - - return v; -} - -ByteVector SynchData::decode(const ByteVector &data) -{ - // We have this optimized method instead of using ByteVector::replace(), - // since it makes a great difference when decoding huge unsynchronized frames. - - ByteVector result(data.size()); - - ByteVector::ConstIterator src = data.begin(); - ByteVector::Iterator dst = result.begin(); - - while(src < data.end() - 1) { - *dst++ = *src++; - - if(*(src - 1) == '\xff' && *src == '\x00') - src++; - } - - if(src < data.end()) - *dst++ = *src++; - - result.resize(static_cast<unsigned int>(dst - result.begin())); - - return result; -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2tag.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2tag.cpp deleted file mode 100644 index c7b4d428a..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2tag.cpp +++ /dev/null @@ -1,1072 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <algorithm> - -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/mpeg/id3v2/id3v2extendedheader.h> -#include <taglib/mpeg/id3v2/id3v2footer.h> -#include <taglib/mpeg/id3v2/id3v2synchdata.h> -#include <taglib/mpeg/id3v1/id3v1genres.h> - -#include <taglib/mpeg/id3v2/frames/textidentificationframe.h> -#include <taglib/mpeg/id3v2/frames/commentsframe.h> -#include <taglib/mpeg/id3v2/frames/urllinkframe.h> -#include <taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h> -#include <taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h> -#include <taglib/mpeg/id3v2/frames/unknownframe.h> - -using namespace TagLib; -using namespace ID3v2; - -namespace -{ - const ID3v2::Latin1StringHandler defaultStringHandler; - const ID3v2::Latin1StringHandler *stringHandler = &defaultStringHandler; - - const long MinPaddingSize = 1024; - const long MaxPaddingSize = 1024 * 1024; - - bool contains(const char **a, const ByteVector &v) - { - for(int i = 0; a[i]; i++) - { - if(v == a[i]) - return true; - } - return false; - } -} - -class ID3v2::Tag::TagPrivate -{ -public: - TagPrivate() : - factory(0), - file(0), - tagOffset(0), - extendedHeader(0), - footer(0) - { - frameList.setAutoDelete(true); - } - - ~TagPrivate() - { - delete extendedHeader; - delete footer; - } - - const FrameFactory *factory; - - File *file; - long tagOffset; - - Header header; - ExtendedHeader *extendedHeader; - Footer *footer; - - FrameListMap frameListMap; - FrameList frameList; -}; - -//////////////////////////////////////////////////////////////////////////////// -// StringHandler implementation -//////////////////////////////////////////////////////////////////////////////// - -Latin1StringHandler::Latin1StringHandler() -{ -} - -Latin1StringHandler::~Latin1StringHandler() -{ -} - -String Latin1StringHandler::parse(const ByteVector &data) const -{ - return String(data, String::Latin1); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ID3v2::Tag::Tag() : - TagLib::Tag(), - d(new TagPrivate()) -{ - d->factory = FrameFactory::instance(); -} - -ID3v2::Tag::Tag(File *file, long tagOffset, const FrameFactory *factory) : - TagLib::Tag(), - d(new TagPrivate()) -{ - d->factory = factory; - d->file = file; - d->tagOffset = tagOffset; - - read(); -} - -ID3v2::Tag::~Tag() -{ - delete d; -} - -String ID3v2::Tag::title() const -{ - if(!d->frameListMap["TIT2"].isEmpty()) - return d->frameListMap["TIT2"].front()->toString(); - return String(); -} - -String ID3v2::Tag::artist() const -{ - if(!d->frameListMap["TPE1"].isEmpty()) - return d->frameListMap["TPE1"].front()->toString(); - return String(); -} - -String ID3v2::Tag::albumartist() const -{ - if(!d->frameListMap["TPE2"].isEmpty()) - return d->frameListMap["TPE2"].front()->toString(); - return String(); -} - -String ID3v2::Tag::composer() const -{ - if(!d->frameListMap["TCOM"].isEmpty()) - return d->frameListMap["TCOM"].front()->toString(); - return String(); -} - -String ID3v2::Tag::album() const -{ - if(!d->frameListMap["TALB"].isEmpty()) - return d->frameListMap["TALB"].front()->toString(); - return String(); -} - -String ID3v2::Tag::unsyncedlyrics() const -{ - if(!d->frameListMap["USLT"].isEmpty()) - return d->frameListMap["USLT"].front()->toString(); - return String(); -} - -String ID3v2::Tag::comment() const -{ - const FrameList &comments = d->frameListMap["COMM"]; - - if(comments.isEmpty()) - return String(); - - for(FrameList::ConstIterator it = comments.begin(); it != comments.end(); ++it) - { - CommentsFrame *frame = dynamic_cast<CommentsFrame *>(*it); - - if(frame && frame->description().isEmpty()) - return (*it)->toString(); - } - - return comments.front()->toString(); -} - -String ID3v2::Tag::genre() const -{ - // TODO: In the next major version (TagLib 2.0) a list of multiple genres - // should be separated by " / " instead of " ". For the moment to keep - // the behavior the same as released versions it is being left with " ". - - if(d->frameListMap["TCON"].isEmpty() || - !dynamic_cast<TextIdentificationFrame *>(d->frameListMap["TCON"].front())) - { - return String(); - } - - // ID3v2.4 lists genres as the fields in its frames field list. If the field - // is simply a number it can be assumed that it is an ID3v1 genre number. - // Here was assume that if an ID3v1 string is present that it should be - // appended to the genre string. Multiple fields will be appended as the - // string is built. - - TextIdentificationFrame *f = static_cast<TextIdentificationFrame *>( - d->frameListMap["TCON"].front()); - - StringList fields = f->fieldList(); - - StringList genres; - - for(StringList::Iterator it = fields.begin(); it != fields.end(); ++it) { - - if((*it).isEmpty()) - continue; - - bool ok; - int number = (*it).toInt(&ok); - if(ok && number >= 0 && number <= 255) { - *it = ID3v1::genre(number); - } - - if(std::find(genres.begin(), genres.end(), *it) == genres.end()) - genres.append(*it); - } - - return genres.toString(); -} - -unsigned int ID3v2::Tag::year() const -{ - if(!d->frameListMap["TDRC"].isEmpty()) - return d->frameListMap["TDRC"].front()->toString().substr(0, 4).toInt(); - return 0; -} - -unsigned int ID3v2::Tag::track() const -{ - if(!d->frameListMap["TRCK"].isEmpty()) - return d->frameListMap["TRCK"].front()->toString().toInt(); - return 0; -} - -unsigned int ID3v2::Tag::disc() const -{ - if(!d->frameListMap["TPOS"].isEmpty()) - return d->frameListMap["TPOS"].front()->toString().toInt(); - return 0; -} - -String ID3v2::Tag::cuesheet() const -{ - const FrameList &list = d->frameListMap["TXXX"]; - if (!list.isEmpty()) { - for (FrameList::ConstIterator it = list.begin(); it != list.end(); ++it) { - UserTextIdentificationFrame const* frame = static_cast<UserTextIdentificationFrame *>(*it); - if (!frame->description().isNull() && frame->description() == "cuesheet") { - // Remove description - StringList l = frame->fieldList(); - for(StringList::Iterator it = l.begin(); it != l.end(); ++it) { - l.erase(it); - break; - } - return l.toString(); - } - } - } - return String(); -} - -float ID3v2::Tag::rg(const String &type) const -{ - const FrameList &list = d->frameListMap["TXXX"]; - if (!list.isEmpty()) { - for (FrameList::ConstIterator it = list.begin(); it != list.end(); ++it) { - UserTextIdentificationFrame const* frame = static_cast<UserTextIdentificationFrame *>(*it); - if (!frame->description().isNull() && frame->description() == type) { - // Remove description - StringList l = frame->fieldList(); - for(StringList::Iterator it = l.begin(); it != l.end(); ++it) { - l.erase(it); - break; - } - return l.toString().toFloat(); - } - } - } - return 0; -} - -float ID3v2::Tag::rgAlbumGain() const -{ - return rg("replaygain_album_gain"); -} - -float ID3v2::Tag::rgAlbumPeak() const -{ - return rg("replaygain_album_peak"); -} - -float ID3v2::Tag::rgTrackGain() const -{ - return rg("replaygain_track_gain"); -} - -float ID3v2::Tag::rgTrackPeak() const -{ - return rg("replaygain_track_peak"); -} - -String ID3v2::Tag::soundcheck() const -{ - const FrameList &comments = d->frameListMap["COMM"]; - - if(comments.isEmpty()) - return String(); - - for(FrameList::ConstIterator it = comments.begin(); it != comments.end(); ++it) - { - CommentsFrame *frame = dynamic_cast<CommentsFrame *>(*it); - - if(frame && frame->description() == "iTunNORM") - return (*it)->toString(); - } - - return String(); -} - -void ID3v2::Tag::setTitle(const String &s) -{ - setTextFrame("TIT2", s); -} - -void ID3v2::Tag::setArtist(const String &s) -{ - setTextFrame("TPE1", s); -} - -void ID3v2::Tag::setAlbumArtist(const String &s) -{ - setTextFrame("TPE2", s); -} - -void ID3v2::Tag::setComposer(const String &s) -{ - setTextFrame("TCOM", s); -} - -void ID3v2::Tag::setAlbum(const String &s) -{ - setTextFrame("TALB", s); -} - -void ID3v2::Tag::setUnsyncedlyrics(const String &s) -{ - if(s.isEmpty()) { - removeFrames("USLT"); - return; - } - - const FrameList &unsyncedlyrics = d->frameListMap["USLT"]; - - if(!unsyncedlyrics.isEmpty()) { - for(FrameList::ConstIterator it = unsyncedlyrics.begin(); it != unsyncedlyrics.end(); ++it) { - UnsynchronizedLyricsFrame *frame = dynamic_cast<UnsynchronizedLyricsFrame *>(*it); - if(frame && (frame->description().isEmpty() || frame->description() == "LYRICS")) { - (*it)->setText(s); - return; - } - } - } - - UnsynchronizedLyricsFrame *f = new UnsynchronizedLyricsFrame(d->factory->defaultTextEncoding()); - addFrame(f); - f->setDescription("LYRICS"); - f->setText(s); -} - -void ID3v2::Tag::setComment(const String &s) -{ - if(s.isEmpty()) { - removeFrames("COMM"); - return; - } - - const FrameList &comments = d->frameListMap["COMM"]; - - if(!comments.isEmpty()) { - for(FrameList::ConstIterator it = comments.begin(); it != comments.end(); ++it) { - CommentsFrame *frame = dynamic_cast<CommentsFrame *>(*it); - if(frame && frame->description().isEmpty()) { - (*it)->setText(s); - return; - } - } - - comments.front()->setText(s); - return; - } - - CommentsFrame *f = new CommentsFrame(d->factory->defaultTextEncoding()); - addFrame(f); - f->setText(s); -} - -void ID3v2::Tag::setGenre(const String &s) -{ - if(s.isEmpty()) { - removeFrames("TCON"); - return; - } - - // iTunes can't handle correctly encoded ID3v2.4 numerical genres. Just use - // strings until iTunes sucks less. - -#ifdef NO_ITUNES_HACKS - - int index = ID3v1::genreIndex(s); - - if(index != 255) - setTextFrame("TCON", String::number(index)); - else - setTextFrame("TCON", s); - -#else - - setTextFrame("TCON", s); - -#endif -} - -void ID3v2::Tag::setYear(unsigned int i) -{ - if(i == 0) { - removeFrames("TDRC"); - return; - } - setTextFrame("TDRC", String::number(i)); -} - -void ID3v2::Tag::setTrack(unsigned int i) -{ - if(i == 0) { - removeFrames("TRCK"); - return; - } - setTextFrame("TRCK", String::number(i)); -} - -void ID3v2::Tag::setDisc(unsigned int i) -{ - if (i == 0) { - removeFrames("TPOS"); - return; - } - setTextFrame("TPOS", String::number(i)); -} - -void ID3v2::Tag::setCuesheet(const String &s) -{ - bool createdFrame = false; - UserTextIdentificationFrame * frame = NULL; - FrameList &list = d->frameListMap["TXXX"]; - for (FrameList::Iterator it = list.begin(); it != list.end(); ++it) { - if (static_cast<UserTextIdentificationFrame *>(*it)->description() == "cuesheet") { - frame = static_cast<UserTextIdentificationFrame*>(*it); - break; - } - } - if (s.isEmpty()) { - if (frame) - removeFrame(frame); - return; - } - if (frame == NULL) { - frame = new UserTextIdentificationFrame; - frame->setDescription("cuesheet"); - createdFrame = true; - } - frame->setText(s); - if (createdFrame) - addFrame(frame); -} - -void ID3v2::Tag::setRG(const String &type, float f, bool peak) -{ - bool createdFrame = false; - UserTextIdentificationFrame * frame = NULL; - FrameList &list = d->frameListMap["TXXX"]; - for (FrameList::Iterator it = list.begin(); it != list.end(); ++it) { - if (static_cast<UserTextIdentificationFrame *>(*it)->description() == type) { - frame = static_cast<UserTextIdentificationFrame*>(*it); - break; - } - } - if (f == 0) { - if (frame) - removeFrame(frame); - return; - } - if (frame == NULL) { - frame = new UserTextIdentificationFrame; - frame->setDescription(type); - createdFrame = true; - } - frame->setText(String::number(f) + (peak ? "" : " dB")); - if (createdFrame) - addFrame(frame); -} - -void ID3v2::Tag::setRGAlbumGain(float f) -{ - setRG("replaygain_album_gain", f, false); -} - -void ID3v2::Tag::setRGAlbumPeak(float f) -{ - setRG("replaygain_album_peak", f, true); -} - -void ID3v2::Tag::setRGTrackGain(float f) -{ - setRG("replaygain_track_gain", f, false); -} - -void ID3v2::Tag::setRGTrackPeak(float f) -{ - setRG("replaygain_track_peak", f, true); -} - -bool ID3v2::Tag::isEmpty() const -{ - return d->frameList.isEmpty(); -} - -Header *ID3v2::Tag::header() const -{ - return &(d->header); -} - -ExtendedHeader *ID3v2::Tag::extendedHeader() const -{ - return d->extendedHeader; -} - -Footer *ID3v2::Tag::footer() const -{ - return d->footer; -} - -const FrameListMap &ID3v2::Tag::frameListMap() const -{ - return d->frameListMap; -} - -const FrameList &ID3v2::Tag::frameList() const -{ - return d->frameList; -} - -const FrameList &ID3v2::Tag::frameList(const ByteVector &frameID) const -{ - return d->frameListMap[frameID]; -} - -void ID3v2::Tag::addFrame(Frame *frame) -{ - d->frameList.append(frame); - d->frameListMap[frame->frameID()].append(frame); -} - -void ID3v2::Tag::removeFrame(Frame *frame, bool del) -{ - // remove the frame from the frame list - FrameList::Iterator it = d->frameList.find(frame); - d->frameList.erase(it); - - // ...and from the frame list map - it = d->frameListMap[frame->frameID()].find(frame); - d->frameListMap[frame->frameID()].erase(it); - - // ...and delete as desired - if(del) - delete frame; -} - -void ID3v2::Tag::removeFrames(const ByteVector &id) -{ - FrameList l = d->frameListMap[id]; - for(FrameList::ConstIterator it = l.begin(); it != l.end(); ++it) - removeFrame(*it, true); -} - -PropertyMap ID3v2::Tag::properties() const -{ - PropertyMap properties; - for(FrameList::ConstIterator it = frameList().begin(); it != frameList().end(); ++it) { - PropertyMap props = (*it)->asProperties(); - properties.merge(props); - } - return properties; -} - -void ID3v2::Tag::removeUnsupportedProperties(const StringList &properties) -{ - for(StringList::ConstIterator it = properties.begin(); it != properties.end(); ++it){ - if(it->startsWith("UNKNOWN/")) { - String frameID = it->substr(String("UNKNOWN/").size()); - if(frameID.size() != 4) - continue; // invalid specification - ByteVector id = frameID.data(String::Latin1); - // delete all unknown frames of given type - FrameList l = frameList(id); - for(FrameList::ConstIterator fit = l.begin(); fit != l.end(); fit++) - if (dynamic_cast<const UnknownFrame *>(*fit) != 0) - removeFrame(*fit); - } - else if(it->size() == 4){ - ByteVector id = it->data(String::Latin1); - removeFrames(id); - } - else { - ByteVector id = it->substr(0,4).data(String::Latin1); - if(it->size() <= 5) - continue; // invalid specification - String description = it->substr(5); - Frame *frame = 0; - if(id == "TXXX") - frame = UserTextIdentificationFrame::find(this, description); - else if(id == "WXXX") - frame = UserUrlLinkFrame::find(this, description); - else if(id == "COMM") - frame = CommentsFrame::findByDescription(this, description); - else if(id == "USLT") - frame = UnsynchronizedLyricsFrame::findByDescription(this, description); - else if(id == "UFID") - frame = UniqueFileIdentifierFrame::findByOwner(this, description); - if(frame) - removeFrame(frame); - } - } -} - -PropertyMap ID3v2::Tag::setProperties(const PropertyMap &origProps) -{ - FrameList framesToDelete; - // we split up the PropertyMap into the "normal" keys and the "complicated" ones, - // which are those according to TIPL or TMCL frames. - PropertyMap properties; - PropertyMap tiplProperties; - PropertyMap tmclProperties; - Frame::splitProperties(origProps, properties, tiplProperties, tmclProperties); - for(FrameListMap::ConstIterator it = frameListMap().begin(); it != frameListMap().end(); ++it){ - for(FrameList::ConstIterator lit = it->second.begin(); lit != it->second.end(); ++lit){ - PropertyMap frameProperties = (*lit)->asProperties(); - if(it->first == "TIPL") { - if (tiplProperties != frameProperties) - framesToDelete.append(*lit); - else - tiplProperties.erase(frameProperties); - } else if(it->first == "TMCL") { - if (tmclProperties != frameProperties) - framesToDelete.append(*lit); - else - tmclProperties.erase(frameProperties); - } else if(!properties.contains(frameProperties)) - framesToDelete.append(*lit); - else - properties.erase(frameProperties); - } - } - for(FrameList::ConstIterator it = framesToDelete.begin(); it != framesToDelete.end(); ++it) - removeFrame(*it); - - // now create remaining frames: - // start with the involved people list (TIPL) - if(!tiplProperties.isEmpty()) - addFrame(TextIdentificationFrame::createTIPLFrame(tiplProperties)); - // proceed with the musician credit list (TMCL) - if(!tmclProperties.isEmpty()) - addFrame(TextIdentificationFrame::createTMCLFrame(tmclProperties)); - // now create the "one key per frame" frames - for(PropertyMap::ConstIterator it = properties.begin(); it != properties.end(); ++it) - addFrame(Frame::createTextualFrame(it->first, it->second)); - return PropertyMap(); // ID3 implements the complete PropertyMap interface, so an empty map is returned -} - -ByteVector ID3v2::Tag::render() const -{ - return render(ID3v2::v4); -} - -void ID3v2::Tag::downgradeFrames(FrameList *frames, FrameList *newFrames) const -{ -#ifdef NO_ITUNES_HACKS - static const char *unsupportedFrames[] = { - "ASPI", "EQU2", "RVA2", "SEEK", "SIGN", "TDRL", "TDTG", - "TMOO", "TPRO", "TSOA", "TSOT", "TSST", "TSOP", 0 - }; -#else - // iTunes writes and reads TSOA, TSOT, TSOP to ID3v2.3. - static const char *unsupportedFrames[] = { - "ASPI", "EQU2", "RVA2", "SEEK", "SIGN", "TDRL", "TDTG", - "TMOO", "TPRO", "TSST", 0 - }; -#endif - ID3v2::TextIdentificationFrame *frameTDOR = 0; - ID3v2::TextIdentificationFrame *frameTDRC = 0; - ID3v2::TextIdentificationFrame *frameTIPL = 0; - ID3v2::TextIdentificationFrame *frameTMCL = 0; - ID3v2::TextIdentificationFrame *frameTCON = 0; - - for(FrameList::ConstIterator it = d->frameList.begin(); it != d->frameList.end(); it++) { - ID3v2::Frame *frame = *it; - ByteVector frameID = frame->header()->frameID(); - - if(contains(unsupportedFrames, frameID)) - { - debug("A frame that is not supported in ID3v2.3 \'" + String(frameID) + - "\' has been discarded"); - continue; - } - - if(frameID == "TDOR") - frameTDOR = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - else if(frameID == "TDRC") - frameTDRC = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - else if(frameID == "TIPL") - frameTIPL = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - else if(frameID == "TMCL") - frameTMCL = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - else if(frame && frameID == "TCON") - frameTCON = dynamic_cast<ID3v2::TextIdentificationFrame *>(frame); - else - frames->append(frame); - } - - if(frameTDOR) { - String content = frameTDOR->toString(); - - if(content.size() >= 4) { - ID3v2::TextIdentificationFrame *frameTORY = - new ID3v2::TextIdentificationFrame("TORY", String::Latin1); - frameTORY->setText(content.substr(0, 4)); - frames->append(frameTORY); - newFrames->append(frameTORY); - } - } - - if(frameTDRC) { - String content = frameTDRC->toString(); - if(content.size() >= 4) { - ID3v2::TextIdentificationFrame *frameTYER = - new ID3v2::TextIdentificationFrame("TYER", String::Latin1); - frameTYER->setText(content.substr(0, 4)); - frames->append(frameTYER); - newFrames->append(frameTYER); - if(content.size() >= 10 && content[4] == '-' && content[7] == '-') { - ID3v2::TextIdentificationFrame *frameTDAT = - new ID3v2::TextIdentificationFrame("TDAT", String::Latin1); - frameTDAT->setText(content.substr(8, 2) + content.substr(5, 2)); - frames->append(frameTDAT); - newFrames->append(frameTDAT); - if(content.size() >= 16 && content[10] == 'T' && content[13] == ':') { - ID3v2::TextIdentificationFrame *frameTIME = - new ID3v2::TextIdentificationFrame("TIME", String::Latin1); - frameTIME->setText(content.substr(11, 2) + content.substr(14, 2)); - frames->append(frameTIME); - newFrames->append(frameTIME); - } - } - } - } - - if(frameTIPL || frameTMCL) { - ID3v2::TextIdentificationFrame *frameIPLS = - new ID3v2::TextIdentificationFrame("IPLS", String::Latin1); - - StringList people; - - if(frameTMCL) { - StringList v24People = frameTMCL->fieldList(); - for(unsigned int i = 0; i + 1 < v24People.size(); i += 2) { - people.append(v24People[i]); - people.append(v24People[i+1]); - } - } - if(frameTIPL) { - StringList v24People = frameTIPL->fieldList(); - for(unsigned int i = 0; i + 1 < v24People.size(); i += 2) { - people.append(v24People[i]); - people.append(v24People[i+1]); - } - } - - frameIPLS->setText(people); - frames->append(frameIPLS); - newFrames->append(frameIPLS); - } - - if(frameTCON) { - StringList genres = frameTCON->fieldList(); - String combined; - String genreText; - const bool hasMultipleGenres = genres.size() > 1; - - // If there are multiple genres, add them as multiple references to ID3v1 - // genres if such a reference exists. The first genre for which no ID3v1 - // genre number exists can be finally added as a refinement. - for(StringList::ConstIterator it = genres.begin(); it != genres.end(); ++it) { - bool ok = false; - int number = it->toInt(&ok); - if((ok && number >= 0 && number <= 255) || *it == "RX" || *it == "CR") - combined += '(' + *it + ')'; - else if(hasMultipleGenres && (number = ID3v1::genreIndex(*it)) != 255) - combined += '(' + String::number(number) + ')'; - else if(genreText.isEmpty()) - genreText = *it; - } - if(!genreText.isEmpty()) - combined += genreText; - - frameTCON = new ID3v2::TextIdentificationFrame("TCON", String::Latin1); - frameTCON->setText(combined); - frames->append(frameTCON); - newFrames->append(frameTCON); - } -} - -ByteVector ID3v2::Tag::render(int version) const -{ - return render(version == 3 ? v3 : v4); -} - -ByteVector ID3v2::Tag::render(Version version) const -{ - // We need to render the "tag data" first so that we have to correct size to - // render in the tag's header. The "tag data" -- everything that is included - // in ID3v2::Header::tagSize() -- includes the extended header, frames and - // padding, but does not include the tag's header or footer. - - // TODO: Render the extended header. - - // Downgrade the frames that ID3v2.3 doesn't support. - - FrameList newFrames; - newFrames.setAutoDelete(true); - - FrameList frameList; - if(version == v4) { - frameList = d->frameList; - } - else { - downgradeFrames(&frameList, &newFrames); - } - - // Reserve a 10-byte blank space for an ID3v2 tag header. - - ByteVector tagData(Header::size(), '\0'); - - // Loop through the frames rendering them and adding them to the tagData. - - for(FrameList::ConstIterator it = frameList.begin(); it != frameList.end(); it++) { - (*it)->header()->setVersion(version == v3 ? 3 : 4); - if((*it)->header()->frameID().size() != 4) { - debug("An ID3v2 frame of unsupported or unknown type \'" - + String((*it)->header()->frameID()) + "\' has been discarded"); - continue; - } - if(!(*it)->header()->tagAlterPreservation()) { - const ByteVector frameData = (*it)->render(); - if(frameData.size() == Frame::headerSize((*it)->header()->version())) { - debug("An empty ID3v2 frame \'" - + String((*it)->header()->frameID()) + "\' has been discarded"); - continue; - } - tagData.append(frameData); - } - } - - // Compute the amount of padding, and append that to tagData. - - long originalSize = d->header.tagSize(); - long paddingSize = originalSize - (tagData.size() - Header::size()); - - if(paddingSize <= 0) { - paddingSize = MinPaddingSize; - } - else { - // Padding won't increase beyond 1% of the file size or 1MB. - - long threshold = d->file ? d->file->length() / 100 : 0; - threshold = std::max(threshold, MinPaddingSize); - threshold = std::min(threshold, MaxPaddingSize); - - if(paddingSize > threshold) - paddingSize = MinPaddingSize; - } - - tagData.resize(static_cast<unsigned int>(tagData.size() + paddingSize), '\0'); - - // Set the version and data size. - d->header.setMajorVersion(version); - d->header.setTagSize(tagData.size() - Header::size()); - - // TODO: This should eventually include d->footer->render(). - const ByteVector headerData = d->header.render(); - std::copy(headerData.begin(), headerData.end(), tagData.begin()); - - return tagData; -} - -Latin1StringHandler const *ID3v2::Tag::latin1StringHandler() -{ - return stringHandler; -} - -void ID3v2::Tag::setLatin1StringHandler(const Latin1StringHandler *handler) -{ - if(handler) - stringHandler = handler; - else - stringHandler = &defaultStringHandler; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void ID3v2::Tag::read() -{ - if(!d->file) - return; - - if(!d->file->isOpen()) - return; - - d->file->seek(d->tagOffset); - d->header.setData(d->file->readBlock(Header::size())); - - // If the tag size is 0, then this is an invalid tag (tags must contain at - // least one frame) - - if(d->header.tagSize() != 0) - parse(d->file->readBlock(d->header.tagSize())); - - // Look for duplicate ID3v2 tags and treat them as an extra blank of this one. - // It leads to overwriting them with zero when saving the tag. - - // This is a workaround for some faulty files that have duplicate ID3v2 tags. - // Unfortunately, TagLib itself may write such duplicate tags until v1.10. - - unsigned int extraSize = 0; - - while(true) { - - d->file->seek(d->tagOffset + d->header.completeTagSize() + extraSize); - - const ByteVector data = d->file->readBlock(Header::size()); - if(data.size() < Header::size() || !data.startsWith(Header::fileIdentifier())) - break; - - extraSize += Header(data).completeTagSize(); - } - - if(extraSize != 0) { - debug("ID3v2::Tag::read() - Duplicate ID3v2 tags found."); - d->header.setTagSize(d->header.tagSize() + extraSize); - } -} - -void ID3v2::Tag::parse(const ByteVector &origData) -{ - ByteVector data = origData; - - if(d->header.unsynchronisation() && d->header.majorVersion() <= 3) - data = SynchData::decode(data); - - unsigned int frameDataPosition = 0; - unsigned int frameDataLength = data.size(); - - // check for extended header - - if(d->header.extendedHeader()) { - if(!d->extendedHeader) - d->extendedHeader = new ExtendedHeader(); - d->extendedHeader->setData(data); - if(d->extendedHeader->size() <= data.size()) { - frameDataPosition += d->extendedHeader->size(); - frameDataLength -= d->extendedHeader->size(); - } - } - - // check for footer -- we don't actually need to parse it, as it *must* - // contain the same data as the header, but we do need to account for its - // size. - - if(d->header.footerPresent() && Footer::size() <= frameDataLength) - frameDataLength -= Footer::size(); - - // parse frames - - // Make sure that there is at least enough room in the remaining frame data for - // a frame header. - - while(frameDataPosition < frameDataLength - Frame::headerSize(d->header.majorVersion())) { - - // If the next data is position is 0, assume that we've hit the padding - // portion of the frame data. - - if(data.at(frameDataPosition) == 0) { - if(d->header.footerPresent()) { - debug("Padding *and* a footer found. This is not allowed by the spec."); - } - - break; - } - - Frame *frame = d->factory->createFrame(data.mid(frameDataPosition), - &d->header); - - if(!frame) - return; - - // Checks to make sure that frame parsed correctly. - - if(frame->size() <= 0) { - delete frame; - return; - } - - frameDataPosition += frame->size() + Frame::headerSize(d->header.majorVersion()); - addFrame(frame); - } - - d->factory->rebuildAggregateFrames(this); -} - -void ID3v2::Tag::setTextFrame(const ByteVector &id, const String &value) -{ - if(value.isEmpty()) { - removeFrames(id); - return; - } - - if(!d->frameListMap[id].isEmpty()) - d->frameListMap[id].front()->setText(value); - else { - const String::Type encoding = d->factory->defaultTextEncoding(); - TextIdentificationFrame *f = new TextIdentificationFrame(id, encoding); - addFrame(f); - f->setText(value); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp deleted file mode 100644 index f344d771f..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.cpp +++ /dev/null @@ -1,585 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/tagunion.h> -#include <taglib/tagutils.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/ape/apefooter.h> -#include <taglib/ape/apetag.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/mpegfile.h> -#include <taglib/mpeg/mpegheader.h> -#include <taglib/mpeg/mpegutils.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; - -namespace -{ - enum { ID3v2Index = 0, APEIndex = 1, ID3v1Index = 2 }; -} - -class MPEG::File::FilePrivate -{ -public: - FilePrivate(const ID3v2::FrameFactory *frameFactory = ID3v2::FrameFactory::instance()) : - ID3v2FrameFactory(frameFactory), - ID3v2Location(-1), - ID3v2OriginalSize(0), - APELocation(-1), - APEOriginalSize(0), - ID3v1Location(-1), - properties(0) {} - - ~FilePrivate() - { - delete properties; - } - - const ID3v2::FrameFactory *ID3v2FrameFactory; - - long ID3v2Location; - long ID3v2OriginalSize; - - long APELocation; - long APEOriginalSize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -namespace -{ - // Dummy file class to make a stream work with MPEG::Header. - - class AdapterFile : public TagLib::File - { - public: - AdapterFile(IOStream *stream) : File(stream) {} - - Tag *tag() const { return 0; } - AudioProperties *audioProperties() const { return 0; } - bool save() { return false; } - }; -} - -bool MPEG::File::isSupported(IOStream *stream) -{ - if(!stream || !stream->isOpen()) - return false; - - // An MPEG file has MPEG frame headers. An ID3v2 tag may precede. - - // MPEG frame headers are really confusing with irrelevant binary data. - // So we check if a frame header is really valid. - - long headerOffset; - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), true, &headerOffset); - - if(buffer.isEmpty()) - return false; - - const long originalPosition = stream->tell(); - AdapterFile file(stream); - - for(unsigned int i = 0; i < buffer.size() - 1; ++i) { - if(isFrameSync(buffer, i)) { - const Header header(&file, headerOffset + i, true); - if(header.isValid()) { - stream->seek(originalPosition); - return true; - } - } - } - - stream->seek(originalPosition); - return false; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPEG::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -MPEG::File::File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate(frameFactory)) -{ - if(isOpen()) - read(readProperties); -} - -MPEG::File::File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate(frameFactory)) -{ - if(isOpen()) - read(readProperties); -} - -MPEG::File::~File() -{ - delete d; -} - -TagLib::Tag *MPEG::File::tag() const -{ - return &d->tag; -} - -PropertyMap MPEG::File::properties() const -{ - return d->tag.properties(); -} - -void MPEG::File::removeUnsupportedProperties(const StringList &properties) -{ - d->tag.removeUnsupportedProperties(properties); -} - -PropertyMap MPEG::File::setProperties(const PropertyMap &properties) -{ - // update ID3v1 tag if it exists, but ignore the return value - - if(ID3v1Tag()) - ID3v1Tag()->setProperties(properties); - - return ID3v2Tag(true)->setProperties(properties); -} - -MPEG::Properties *MPEG::File::audioProperties() const -{ - return d->properties; -} - -bool MPEG::File::save() -{ - return save(AllTags); -} - -bool MPEG::File::save(int tags) -{ - return save(tags, StripOthers); -} - -bool MPEG::File::save(int tags, bool stripOthers) -{ - return save(tags, stripOthers ? StripOthers : StripNone, ID3v2::v4); -} - -bool MPEG::File::save(int tags, bool stripOthers, int id3v2Version) -{ - return save(tags, - stripOthers ? StripOthers : StripNone, - id3v2Version == 3 ? ID3v2::v3 : ID3v2::v4); -} - -bool MPEG::File::save(int tags, bool stripOthers, int id3v2Version, bool duplicateTags) -{ - return save(tags, - stripOthers ? StripOthers : StripNone, - id3v2Version == 3 ? ID3v2::v3 : ID3v2::v4, - duplicateTags ? Duplicate : DoNotDuplicate); -} - -bool MPEG::File::save(int tags, StripTags strip, ID3v2::Version version, DuplicateTags duplicate) -{ - if(readOnly()) { - debug("MPEG::File::save() -- File is read only."); - return false; - } - - // Create the tags if we've been asked to. - - if(duplicate == Duplicate) { - - // Copy the values from the tag that does exist into the new tag, - // except if the existing tag is to be stripped. - - if((tags & ID3v2) && ID3v1Tag() && !(strip == StripOthers && !(tags & ID3v1))) - Tag::duplicate(ID3v1Tag(), ID3v2Tag(true), false); - - if((tags & ID3v1) && d->tag[ID3v2Index] && !(strip == StripOthers && !(tags & ID3v2))) - Tag::duplicate(ID3v2Tag(), ID3v1Tag(true), false); - } - - // Remove all the tags not going to be saved. - - if(strip == StripOthers) - File::strip(~tags, false); - - if(ID3v2 & tags) { - - if(ID3v2Tag() && !ID3v2Tag()->isEmpty()) { - - // ID3v2 tag is not empty. Update the old one or create a new one. - - if(d->ID3v2Location < 0) - d->ID3v2Location = 0; - - const ByteVector data = ID3v2Tag()->render(version); - insert(data, d->ID3v2Location, d->ID3v2OriginalSize); - - if(d->APELocation >= 0) - d->APELocation += (static_cast<long>(data.size()) - d->ID3v2OriginalSize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->ID3v2OriginalSize); - - d->ID3v2OriginalSize = data.size(); - } - else { - - // ID3v2 tag is empty. Remove the old one. - - File::strip(ID3v2, false); - } - } - - if(ID3v1 & tags) { - - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - - // ID3v1 tag is not empty. Update the old one or create a new one. - - if(d->ID3v1Location >= 0) { - seek(d->ID3v1Location); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - } - - writeBlock(ID3v1Tag()->render()); - } - else { - - // ID3v1 tag is empty. Remove the old one. - - File::strip(ID3v1, false); - } - } - - if(APE & tags) { - - if(APETag() && !APETag()->isEmpty()) { - - // APE tag is not empty. Update the old one or create a new one. - - if(d->APELocation < 0) { - if(d->ID3v1Location >= 0) - d->APELocation = d->ID3v1Location; - else - d->APELocation = length(); - } - - const ByteVector data = APETag()->render(); - insert(data, d->APELocation, d->APEOriginalSize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->APEOriginalSize); - - d->APEOriginalSize = data.size(); - } - else { - - // APE tag is empty. Remove the old one. - - File::strip(APE, false); - } - } - - return true; -} - -ID3v2::Tag *MPEG::File::ID3v2Tag(bool create) -{ - return d->tag.access<ID3v2::Tag>(ID3v2Index, create); -} - -ID3v1::Tag *MPEG::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(ID3v1Index, create); -} - -APE::Tag *MPEG::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(APEIndex, create); -} - -bool MPEG::File::strip(int tags) -{ - return strip(tags, true); -} - -bool MPEG::File::strip(int tags, bool freeMemory) -{ - if(readOnly()) { - debug("MPEG::File::strip() - Cannot strip tags from a read only file."); - return false; - } - - if((tags & ID3v2) && d->ID3v2Location >= 0) { - removeBlock(d->ID3v2Location, d->ID3v2OriginalSize); - - if(d->APELocation >= 0) - d->APELocation -= d->ID3v2OriginalSize; - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->ID3v2OriginalSize; - - d->ID3v2Location = -1; - d->ID3v2OriginalSize = 0; - - if(freeMemory) - d->tag.set(ID3v2Index, 0); - } - - if((tags & ID3v1) && d->ID3v1Location >= 0) { - truncate(d->ID3v1Location); - - d->ID3v1Location = -1; - - if(freeMemory) - d->tag.set(ID3v1Index, 0); - } - - if((tags & APE) && d->APELocation >= 0) { - removeBlock(d->APELocation, d->APEOriginalSize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->APEOriginalSize; - - d->APELocation = -1; - d->APEOriginalSize = 0; - - if(freeMemory) - d->tag.set(APEIndex, 0); - } - - return true; -} - -void MPEG::File::setID3v2FrameFactory(const ID3v2::FrameFactory *factory) -{ - d->ID3v2FrameFactory = factory; -} - -long MPEG::File::nextFrameOffset(long position) -{ - ByteVector frameSyncBytes(2, '\0'); - - while(true) { - seek(position); - const ByteVector buffer = readBlock(bufferSize()); - if(buffer.isEmpty()) - return -1; - - for(unsigned int i = 0; i < buffer.size(); ++i) { - frameSyncBytes[0] = frameSyncBytes[1]; - frameSyncBytes[1] = buffer[i]; - if(isFrameSync(frameSyncBytes)) { - const Header header(this, position + i - 1, true); - if(header.isValid()) - return position + i - 1; - } - } - - position += bufferSize(); - } -} - -long MPEG::File::previousFrameOffset(long position) -{ - ByteVector frameSyncBytes(2, '\0'); - - while(position > 0) { - const long bufferLength = std::min<long>(position, bufferSize()); - position -= bufferLength; - - seek(position); - const ByteVector buffer = readBlock(bufferLength); - - for(int i = buffer.size() - 1; i >= 0; --i) { - frameSyncBytes[1] = frameSyncBytes[0]; - frameSyncBytes[0] = buffer[i]; - if(isFrameSync(frameSyncBytes)) { - const Header header(this, position + i, true); - if(header.isValid()) - return position + i + header.frameLength(); - } - } - } - - return -1; -} - -long MPEG::File::firstFrameOffset() -{ - long position = 0; - - if(hasID3v2Tag()) - position = d->ID3v2Location + ID3v2Tag()->header()->completeTagSize(); - - return nextFrameOffset(position); -} - -long MPEG::File::lastFrameOffset() -{ - long position; - - if(hasAPETag()) - position = d->APELocation - 1; - else if(hasID3v1Tag()) - position = d->ID3v1Location - 1; - else - position = length(); - - return previousFrameOffset(position); -} - -bool MPEG::File::hasID3v1Tag() const -{ - return (d->ID3v1Location >= 0); -} - -bool MPEG::File::hasID3v2Tag() const -{ - return (d->ID3v2Location >= 0); -} - -bool MPEG::File::hasAPETag() const -{ - return (d->APELocation >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPEG::File::read(bool readProperties) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = findID3v2(); - - if(d->ID3v2Location >= 0) { - d->tag.set(ID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory)); - d->ID3v2OriginalSize = ID3v2Tag()->header()->completeTagSize(); - } - - // Look for an ID3v1 tag - - d->ID3v1Location = Utils::findID3v1(this); - - if(d->ID3v1Location >= 0) - d->tag.set(ID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - - // Look for an APE tag - - d->APELocation = Utils::findAPE(this, d->ID3v1Location); - - if(d->APELocation >= 0) { - d->tag.set(APEIndex, new APE::Tag(this, d->APELocation)); - d->APEOriginalSize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APE::Footer::size() - d->APEOriginalSize; - } - - if(readProperties) - d->properties = new Properties(this); - - // Make sure that we have our default tag types available. - - ID3v2Tag(true); - ID3v1Tag(true); -} - -long MPEG::File::findID3v2() -{ - if(!isValid()) - return -1; - - // An ID3v2 tag or MPEG frame is most likely be at the beginning of the file. - - const ByteVector headerID = ID3v2::Header::fileIdentifier(); - - seek(0); - if(readBlock(headerID.size()) == headerID) - return 0; - - const Header firstHeader(this, 0, true); - if(firstHeader.isValid()) - return -1; - - // Look for an ID3v2 tag until reaching the first valid MPEG frame. - - ByteVector frameSyncBytes(2, '\0'); - ByteVector tagHeaderBytes(3, '\0'); - long position = 0; - - while(true) { - seek(position); - const ByteVector buffer = readBlock(bufferSize()); - if(buffer.isEmpty()) - return -1; - - for(unsigned int i = 0; i < buffer.size(); ++i) { - frameSyncBytes[0] = frameSyncBytes[1]; - frameSyncBytes[1] = buffer[i]; - if(isFrameSync(frameSyncBytes)) { - const Header header(this, position + i - 1, true); - if(header.isValid()) - return -1; - } - - tagHeaderBytes[0] = tagHeaderBytes[1]; - tagHeaderBytes[1] = tagHeaderBytes[2]; - tagHeaderBytes[2] = buffer[i]; - if(tagHeaderBytes == headerID) - return position + i - 2; - } - - position += bufferSize(); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegheader.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/mpegheader.cpp deleted file mode 100644 index e88fe9c71..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegheader.cpp +++ /dev/null @@ -1,322 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/trefcounter.h> - -#include <taglib/mpeg/mpegheader.h> -#include <taglib/mpeg/mpegutils.h> - -using namespace TagLib; - -class MPEG::Header::HeaderPrivate : public RefCounter -{ -public: - HeaderPrivate() : - isValid(false), - version(Version1), - layer(0), - protectionEnabled(false), - bitrate(0), - sampleRate(0), - isPadded(false), - channelMode(Stereo), - isCopyrighted(false), - isOriginal(false), - frameLength(0), - samplesPerFrame(0) {} - - bool isValid; - Version version; - int layer; - bool protectionEnabled; - int bitrate; - int sampleRate; - bool isPadded; - ChannelMode channelMode; - bool isCopyrighted; - bool isOriginal; - int frameLength; - int samplesPerFrame; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPEG::Header::Header(const ByteVector &data) : - d(new HeaderPrivate()) -{ - debug("MPEG::Header::Header() - This constructor is no longer used."); -} - -MPEG::Header::Header(File *file, long offset, bool checkLength) : - d(new HeaderPrivate()) -{ - parse(file, offset, checkLength); -} - -MPEG::Header::Header(const Header &h) : - d(h.d) -{ - d->ref(); -} - -MPEG::Header::~Header() -{ - if(d->deref()) - delete d; -} - -bool MPEG::Header::isValid() const -{ - return d->isValid; -} - -MPEG::Header::Version MPEG::Header::version() const -{ - return d->version; -} - -int MPEG::Header::layer() const -{ - return d->layer; -} - -bool MPEG::Header::protectionEnabled() const -{ - return d->protectionEnabled; -} - -int MPEG::Header::bitrate() const -{ - return d->bitrate; -} - -int MPEG::Header::sampleRate() const -{ - return d->sampleRate; -} - -bool MPEG::Header::isPadded() const -{ - return d->isPadded; -} - -MPEG::Header::ChannelMode MPEG::Header::channelMode() const -{ - return d->channelMode; -} - -bool MPEG::Header::isCopyrighted() const -{ - return d->isCopyrighted; -} - -bool MPEG::Header::isOriginal() const -{ - return d->isOriginal; -} - -int MPEG::Header::frameLength() const -{ - return d->frameLength; -} - -int MPEG::Header::samplesPerFrame() const -{ - return d->samplesPerFrame; -} - -MPEG::Header &MPEG::Header::operator=(const Header &h) -{ - if(&h == this) - return *this; - - if(d->deref()) - delete d; - - d = h.d; - d->ref(); - return *this; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPEG::Header::parse(File *file, long offset, bool checkLength) -{ - file->seek(offset); - const ByteVector data = file->readBlock(4); - - if(data.size() < 4) { - debug("MPEG::Header::parse() -- data is too short for an MPEG frame header."); - return; - } - - // Check for the MPEG synch bytes. - - if(!isFrameSync(data)) { - debug("MPEG::Header::parse() -- MPEG header did not match MPEG synch."); - return; - } - - // Set the MPEG version - - const int versionBits = (static_cast<unsigned char>(data[1]) >> 3) & 0x03; - - if(versionBits == 0) - d->version = Version2_5; - else if(versionBits == 2) - d->version = Version2; - else if(versionBits == 3) - d->version = Version1; - else - return; - - // Set the MPEG layer - - const int layerBits = (static_cast<unsigned char>(data[1]) >> 1) & 0x03; - - if(layerBits == 1) - d->layer = 3; - else if(layerBits == 2) - d->layer = 2; - else if(layerBits == 3) - d->layer = 1; - else - return; - - d->protectionEnabled = (static_cast<unsigned char>(data[1] & 0x01) == 0); - - // Set the bitrate - - static const int bitrates[2][3][16] = { - { // Version 1 - { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 0 }, // layer 1 - { 0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 0 }, // layer 2 - { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 0 } // layer 3 - }, - { // Version 2 or 2.5 - { 0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 0 }, // layer 1 - { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0 }, // layer 2 - { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 0 } // layer 3 - } - }; - - const int versionIndex = (d->version == Version1) ? 0 : 1; - const int layerIndex = (d->layer > 0) ? d->layer - 1 : 0; - - // The bitrate index is encoded as the first 4 bits of the 3rd byte, - // i.e. 1111xxxx - - const int bitrateIndex = (static_cast<unsigned char>(data[2]) >> 4) & 0x0F; - - d->bitrate = bitrates[versionIndex][layerIndex][bitrateIndex]; - - if(d->bitrate == 0) - return; - - // Set the sample rate - - static const int sampleRates[3][4] = { - { 44100, 48000, 32000, 0 }, // Version 1 - { 22050, 24000, 16000, 0 }, // Version 2 - { 11025, 12000, 8000, 0 } // Version 2.5 - }; - - // The sample rate index is encoded as two bits in the 3nd byte, i.e. xxxx11xx - - const int samplerateIndex = (static_cast<unsigned char>(data[2]) >> 2) & 0x03; - - d->sampleRate = sampleRates[d->version][samplerateIndex]; - - if(d->sampleRate == 0) { - return; - } - - // The channel mode is encoded as a 2 bit value at the end of the 3nd byte, - // i.e. xxxxxx11 - - d->channelMode = static_cast<ChannelMode>((static_cast<unsigned char>(data[3]) >> 6) & 0x03); - - // TODO: Add mode extension for completeness - - d->isOriginal = ((static_cast<unsigned char>(data[3]) & 0x04) != 0); - d->isCopyrighted = ((static_cast<unsigned char>(data[3]) & 0x08) != 0); - d->isPadded = ((static_cast<unsigned char>(data[2]) & 0x02) != 0); - - // Samples per frame - - static const int samplesPerFrame[3][2] = { - // MPEG1, 2/2.5 - { 384, 384 }, // Layer I - { 1152, 1152 }, // Layer II - { 1152, 576 } // Layer III - }; - - d->samplesPerFrame = samplesPerFrame[layerIndex][versionIndex]; - - // Calculate the frame length - - static const int paddingSize[3] = { 4, 1, 1 }; - - d->frameLength = d->samplesPerFrame * d->bitrate * 125 / d->sampleRate; - - if(d->isPadded) - d->frameLength += paddingSize[layerIndex]; - - if(checkLength) { - - // Check if the frame length has been calculated correctly, or the next frame - // header is right next to the end of this frame. - - // The MPEG versions, layers and sample rates of the two frames should be - // consistent. Otherwise, we assume that either or both of the frames are - // broken. - - file->seek(offset + d->frameLength); - const ByteVector nextData = file->readBlock(4); - - if(nextData.size() < 4) - return; - - const unsigned int HeaderMask = 0xfffe0c00; - - const unsigned int header = data.toUInt(0, true) & HeaderMask; - const unsigned int nextHeader = nextData.toUInt(0, true) & HeaderMask; - - if(header != nextHeader) - return; - } - - // Now that we're done parsing, set this to be a valid frame. - - d->isValid = true; -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegproperties.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/mpegproperties.cpp deleted file mode 100644 index 0c5f6a8a9..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegproperties.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> - -#include <taglib/mpeg/mpegproperties.h> -#include <taglib/mpeg/mpegfile.h> -#include <taglib/mpeg/xingheader.h> -#include <taglib/ape/apetag.h> -#include <taglib/ape/apefooter.h> - -using namespace TagLib; - -class MPEG::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - xingHeader(0), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - layer(0), - version(Header::Version1), - channelMode(Header::Stereo), - protectionEnabled(false), - isCopyrighted(false), - isOriginal(false) {} - - ~PropertiesPrivate() - { - delete xingHeader; - } - - XingHeader *xingHeader; - int length; - int bitrate; - int sampleRate; - int channels; - int layer; - Header::Version version; - Header::ChannelMode channelMode; - bool protectionEnabled; - bool isCopyrighted; - bool isOriginal; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPEG::Properties::Properties(File *file, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file); -} - -MPEG::Properties::~Properties() -{ - delete d; -} - -int MPEG::Properties::length() const -{ - return lengthInSeconds(); -} - -int MPEG::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int MPEG::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int MPEG::Properties::bitrate() const -{ - return d->bitrate; -} - -int MPEG::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int MPEG::Properties::channels() const -{ - return d->channels; -} - -const MPEG::XingHeader *MPEG::Properties::xingHeader() const -{ - return d->xingHeader; -} - -MPEG::Header::Version MPEG::Properties::version() const -{ - return d->version; -} - -int MPEG::Properties::layer() const -{ - return d->layer; -} - -bool MPEG::Properties::protectionEnabled() const -{ - return d->protectionEnabled; -} - -MPEG::Header::ChannelMode MPEG::Properties::channelMode() const -{ - return d->channelMode; -} - -bool MPEG::Properties::isCopyrighted() const -{ - return d->isCopyrighted; -} - -bool MPEG::Properties::isOriginal() const -{ - return d->isOriginal; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPEG::Properties::read(File *file) -{ - // Only the first valid frame is required if we have a VBR header. - - const long firstFrameOffset = file->firstFrameOffset(); - if(firstFrameOffset < 0) { - debug("MPEG::Properties::read() -- Could not find an MPEG frame in the stream."); - return; - } - - const Header firstHeader(file, firstFrameOffset, false); - - // Check for a VBR header that will help us in gathering information about a - // VBR stream. - - file->seek(firstFrameOffset); - d->xingHeader = new XingHeader(file->readBlock(firstHeader.frameLength())); - if(!d->xingHeader->isValid()) { - delete d->xingHeader; - d->xingHeader = 0; - } - - if(d->xingHeader && firstHeader.samplesPerFrame() > 0 && firstHeader.sampleRate() > 0) { - - // Read the length and the bitrate from the VBR header. - - const double timePerFrame = firstHeader.samplesPerFrame() * 1000.0 / firstHeader.sampleRate(); - const double length = timePerFrame * d->xingHeader->totalFrames(); - - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(d->xingHeader->totalSize() * 8.0 / length + 0.5); - } - else if(firstHeader.bitrate() > 0) { - - // Since there was no valid VBR header found, we hope that we're in a constant - // bitrate file. - - // TODO: Make this more robust with audio property detection for VBR without a - // Xing header. - - d->bitrate = firstHeader.bitrate(); - - // Look for the last MPEG audio frame to calculate the stream length. - - const long lastFrameOffset = file->lastFrameOffset(); - if(lastFrameOffset < 0) { - debug("MPEG::Properties::read() -- Could not find an MPEG frame in the stream."); - } - else - { - const Header lastHeader(file, lastFrameOffset, false); - const long streamLength = lastFrameOffset - firstFrameOffset + lastHeader.frameLength(); - if (streamLength > 0) - d->length = static_cast<int>(streamLength * 8.0 / d->bitrate + 0.5); - } - } - - d->sampleRate = firstHeader.sampleRate(); - d->channels = firstHeader.channelMode() == Header::SingleChannel ? 1 : 2; - d->version = firstHeader.version(); - d->layer = firstHeader.layer(); - d->protectionEnabled = firstHeader.protectionEnabled(); - d->channelMode = firstHeader.channelMode(); - d->isCopyrighted = firstHeader.isCopyrighted(); - d->isOriginal = firstHeader.isOriginal(); -} diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegutils.h b/Frameworks/TagLib/taglib/taglib/mpeg/mpegutils.h deleted file mode 100644 index 31b45a43b..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegutils.h +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_MPEGUTILS_H -#define TAGLIB_MPEGUTILS_H - -// THIS FILE IS NOT A PART OF THE TAGLIB API - -#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header - -namespace TagLib -{ - namespace MPEG - { - namespace - { - - /*! - * MPEG frames can be recognized by the bit pattern 11111111 111, so the - * first byte is easy to check for, however checking to see if the second byte - * starts with \e 111 is a bit more tricky, hence these functions. - * - * \note This does not check the length of the vector, since this is an - * internal utility function. - */ - inline bool isFrameSync(const ByteVector &bytes, unsigned int offset = 0) - { - // 0xFF in the second byte is possible in theory, but it's very unlikely. - - const unsigned char b1 = bytes[offset + 0]; - const unsigned char b2 = bytes[offset + 1]; - return (b1 == 0xFF && b2 != 0xFF && (b2 & 0xE0) == 0xE0); - } - - } - } -} - -#endif - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/xingheader.cpp b/Frameworks/TagLib/taglib/taglib/mpeg/xingheader.cpp deleted file mode 100644 index 56d4ad063..000000000 --- a/Frameworks/TagLib/taglib/taglib/mpeg/xingheader.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/*************************************************************************** - copyright : (C) 2003 by Ismael Orenstein - email : orenstein@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/mpeg/xingheader.h> -#include <taglib/mpeg/mpegfile.h> - -using namespace TagLib; - -class MPEG::XingHeader::XingHeaderPrivate -{ -public: - XingHeaderPrivate() : - frames(0), - size(0), - type(MPEG::XingHeader::Invalid) {} - - unsigned int frames; - unsigned int size; - - MPEG::XingHeader::HeaderType type; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -MPEG::XingHeader::XingHeader(const ByteVector &data) : - d(new XingHeaderPrivate()) -{ - parse(data); -} - -MPEG::XingHeader::~XingHeader() -{ - delete d; -} - -bool MPEG::XingHeader::isValid() const -{ - return (d->type != Invalid && d->frames > 0 && d->size > 0); -} - -unsigned int MPEG::XingHeader::totalFrames() const -{ - return d->frames; -} - -unsigned int MPEG::XingHeader::totalSize() const -{ - return d->size; -} - -MPEG::XingHeader::HeaderType MPEG::XingHeader::type() const -{ - return d->type; -} - -int MPEG::XingHeader::xingHeaderOffset(TagLib::MPEG::Header::Version /*v*/, - TagLib::MPEG::Header::ChannelMode /*c*/) -{ - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void MPEG::XingHeader::parse(const ByteVector &data) -{ - // Look for a Xing header. - - long offset = data.find("Xing"); - if(offset < 0) - offset = data.find("Info"); - - if(offset >= 0) { - - // Xing header found. - - if(data.size() < static_cast<unsigned long>(offset + 16)) { - debug("MPEG::XingHeader::parse() -- Xing header found but too short."); - return; - } - - if((data[offset + 7] & 0x03) != 0x03) { - debug("MPEG::XingHeader::parse() -- Xing header doesn't contain the required information."); - return; - } - - d->frames = data.toUInt(offset + 8, true); - d->size = data.toUInt(offset + 12, true); - d->type = Xing; - } - else { - - // Xing header not found. Then look for a VBRI header. - - offset = data.find("VBRI"); - - if(offset >= 0) { - - // VBRI header found. - - if(data.size() < static_cast<unsigned long>(offset + 32)) { - debug("MPEG::XingHeader::parse() -- VBRI header found but too short."); - return; - } - - d->frames = data.toUInt(offset + 14, true); - d->size = data.toUInt(offset + 10, true); - d->type = VBRI; - } - } -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/flac/oggflacfile.cpp b/Frameworks/TagLib/taglib/taglib/ogg/flac/oggflacfile.cpp deleted file mode 100644 index 5c56d96cc..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/flac/oggflacfile.cpp +++ /dev/null @@ -1,321 +0,0 @@ -/*************************************************************************** - copyright : (C) 2004-2005 by Allan Sandfeld Jensen - email : kde@carewolf.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/ogg/xiphcomment.h> -#include <taglib/ogg/flac/oggflacfile.h> - -using namespace TagLib; -using TagLib::FLAC::Properties; - -class Ogg::FLAC::File::FilePrivate -{ -public: - FilePrivate() : - comment(0), - properties(0), - streamStart(0), - streamLength(0), - scanned(false), - hasXiphComment(false), - commentPacket(0) {} - - ~FilePrivate() - { - delete comment; - delete properties; - } - - Ogg::XiphComment *comment; - - Properties *properties; - ByteVector streamInfoData; - ByteVector xiphCommentData; - long streamStart; - long streamLength; - bool scanned; - - bool hasXiphComment; - int commentPacket; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool Ogg::FLAC::File::isSupported(IOStream *stream) -{ - // An Ogg FLAC file has IDs "OggS" and "fLaC" somewhere. - - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), false); - return (buffer.find("OggS") >= 0 && buffer.find("fLaC") >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::FLAC::File::File(FileName file, bool readProperties, - Properties::ReadStyle propertiesStyle) : - Ogg::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties, propertiesStyle); -} - -Ogg::FLAC::File::File(IOStream *stream, bool readProperties, - Properties::ReadStyle propertiesStyle) : - Ogg::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties, propertiesStyle); -} - -Ogg::FLAC::File::~File() -{ - delete d; -} - -Ogg::XiphComment *Ogg::FLAC::File::tag() const -{ - return d->comment; -} - -PropertyMap Ogg::FLAC::File::properties() const -{ - return d->comment->properties(); -} - -PropertyMap Ogg::FLAC::File::setProperties(const PropertyMap &properties) -{ - return d->comment->setProperties(properties); -} - -Properties *Ogg::FLAC::File::audioProperties() const -{ - return d->properties; -} - - -bool Ogg::FLAC::File::save() -{ - d->xiphCommentData = d->comment->render(false); - - // Create FLAC metadata-block: - - // Put the size in the first 32 bit (I assume no more than 24 bit are used) - - ByteVector v = ByteVector::fromUInt(d->xiphCommentData.size()); - - // Set the type of the metadata-block to be a Xiph / Vorbis comment - - v[0] = 4; - - // Append the comment-data after the 32 bit header - - v.append(d->xiphCommentData); - - // Save the packet at the old spot - // FIXME: Use padding if size is increasing - - setPacket(d->commentPacket, v); - - return Ogg::File::save(); -} - -bool Ogg::FLAC::File::hasXiphComment() const -{ - return d->hasXiphComment; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Ogg::FLAC::File::read(bool readProperties, Properties::ReadStyle propertiesStyle) -{ - // Sanity: Check if we really have an Ogg/FLAC file - -/* - ByteVector oggHeader = packet(0); - - if (oggHeader.mid(28,4) != "fLaC") { - debug("Ogg::FLAC::File::read() -- Not an Ogg/FLAC file"); - setValid(false); - return; - }*/ - - // Look for FLAC metadata, including vorbis comments - - scan(); - - if (!d->scanned) { - setValid(false); - return; - } - - - if(d->hasXiphComment) - d->comment = new Ogg::XiphComment(xiphCommentData()); - else - d->comment = new Ogg::XiphComment(); - - - if(readProperties) - d->properties = new Properties(streamInfoData(), streamLength(), propertiesStyle); -} - -ByteVector Ogg::FLAC::File::streamInfoData() -{ - scan(); - return d->streamInfoData; -} - -ByteVector Ogg::FLAC::File::xiphCommentData() -{ - scan(); - return d->xiphCommentData; -} - -long Ogg::FLAC::File::streamLength() -{ - scan(); - return d->streamLength; -} - -void Ogg::FLAC::File::scan() -{ - // Scan the metadata pages - - if(d->scanned) - return; - - if(!isValid()) - return; - - int ipacket = 0; - long overhead = 0; - - ByteVector metadataHeader = packet(ipacket); - if(metadataHeader.isEmpty()) - return; - - if(!metadataHeader.startsWith("fLaC")) { - // FLAC 1.1.2+ - // See https://xiph.org/flac/ogg_mapping.html for the header specification. - if(metadataHeader.size() < 13) - return; - - if(metadataHeader[0] != 0x7f) - return; - - if(metadataHeader.mid(1, 4) != "FLAC") - return; - - if(metadataHeader[5] != 1 && metadataHeader[6] != 0) - return; // not version 1.0 - - if(metadataHeader.mid(9, 4) != "fLaC") - return; - - metadataHeader = metadataHeader.mid(13); - } - else { - // FLAC 1.1.0 & 1.1.1 - metadataHeader = packet(++ipacket); - } - - ByteVector header = metadataHeader.mid(0, 4); - if(header.size() != 4) { - debug("Ogg::FLAC::File::scan() -- Invalid Ogg/FLAC metadata header"); - return; - } - - // Header format (from spec): - // <1> Last-metadata-block flag - // <7> BLOCK_TYPE - // 0 : STREAMINFO - // 1 : PADDING - // .. - // 4 : VORBIS_COMMENT - // .. - // <24> Length of metadata to follow - - char blockType = header[0] & 0x7f; - bool lastBlock = (header[0] & 0x80) != 0; - unsigned int length = header.toUInt(1, 3, true); - overhead += length; - - // Sanity: First block should be the stream_info metadata - - if(blockType != 0) { - debug("Ogg::FLAC::File::scan() -- Invalid Ogg/FLAC stream"); - return; - } - - d->streamInfoData = metadataHeader.mid(4, length); - - // Search through the remaining metadata - - while(!lastBlock) { - metadataHeader = packet(++ipacket); - header = metadataHeader.mid(0, 4); - if(header.size() != 4) { - debug("Ogg::FLAC::File::scan() -- Invalid Ogg/FLAC metadata header"); - return; - } - - blockType = header[0] & 0x7f; - lastBlock = (header[0] & 0x80) != 0; - length = header.toUInt(1, 3, true); - overhead += length; - - if(blockType == 1) { - // debug("Ogg::FLAC::File::scan() -- Padding found"); - } - else if(blockType == 4) { - // debug("Ogg::FLAC::File::scan() -- Vorbis-comments found"); - d->xiphCommentData = metadataHeader.mid(4, length); - d->hasXiphComment = true; - d->commentPacket = ipacket; - } - else if(blockType > 5) { - debug("Ogg::FLAC::File::scan() -- Unknown metadata block"); - } - } - - // End of metadata, now comes the datastream - d->streamStart = overhead; - d->streamLength = File::length() - d->streamStart; - - d->scanned = true; -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/oggfile.cpp b/Frameworks/TagLib/taglib/taglib/ogg/oggfile.cpp deleted file mode 100644 index 0d2f929ba..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/oggfile.cpp +++ /dev/null @@ -1,313 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/ogg/oggfile.h> -#include <taglib/ogg/oggpage.h> -#include <taglib/ogg/oggpageheader.h> - -using namespace TagLib; - -namespace -{ - // Returns the first packet index of the right next page to the given one. - unsigned int nextPacketIndex(const Ogg::Page *page) - { - if(page->header()->lastPacketCompleted()) - return page->firstPacketIndex() + page->packetCount(); - else - return page->firstPacketIndex() + page->packetCount() - 1; - } -} - -class Ogg::File::FilePrivate -{ -public: - FilePrivate() : - firstPageHeader(0), - lastPageHeader(0) - { - pages.setAutoDelete(true); - } - - ~FilePrivate() - { - delete firstPageHeader; - delete lastPageHeader; - } - - unsigned int streamSerialNumber; - List<Page *> pages; - PageHeader *firstPageHeader; - PageHeader *lastPageHeader; - Map<unsigned int, ByteVector> dirtyPackets; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::File::~File() -{ - delete d; -} - -ByteVector Ogg::File::packet(unsigned int i) -{ - // Check to see if we're called setPacket() for this packet since the last - // save: - - if(d->dirtyPackets.contains(i)) - return d->dirtyPackets[i]; - - // If we haven't indexed the page where the packet we're interested in starts, - // begin reading pages until we have. - - if(!readPages(i)) { - debug("Ogg::File::packet() -- Could not find the requested packet."); - return ByteVector(); - } - - // Look for the first page in which the requested packet starts. - - List<Page *>::ConstIterator it = d->pages.begin(); - while((*it)->containsPacket(i) == Page::DoesNotContainPacket) - ++it; - - // If the packet is completely contained in the first page that it's in. - - // If the packet is *not* completely contained in the first page that it's a - // part of then that packet trails off the end of the page. Continue appending - // the pages' packet data until we hit a page that either does not end with the - // packet that we're fetching or where the last packet is complete. - - ByteVector packet = (*it)->packets()[i - (*it)->firstPacketIndex()]; - - while(nextPacketIndex(*it) <= i) { - ++it; - packet.append((*it)->packets().front()); - } - - return packet; -} - -void Ogg::File::setPacket(unsigned int i, const ByteVector &p) -{ - if(!readPages(i)) { - debug("Ogg::File::setPacket() -- Could not set the requested packet."); - return; - } - - d->dirtyPackets[i] = p; -} - -const Ogg::PageHeader *Ogg::File::firstPageHeader() -{ - if(!d->firstPageHeader) { - const long firstPageHeaderOffset = find("OggS"); - if(firstPageHeaderOffset < 0) - return 0; - - d->firstPageHeader = new PageHeader(this, firstPageHeaderOffset); - } - - return d->firstPageHeader->isValid() ? d->firstPageHeader : 0; -} - -const Ogg::PageHeader *Ogg::File::lastPageHeader() -{ - if(!d->lastPageHeader) { - const long lastPageHeaderOffset = rfind("OggS"); - if(lastPageHeaderOffset < 0) - return 0; - - d->lastPageHeader = new PageHeader(this, lastPageHeaderOffset); - } - - return d->lastPageHeader->isValid() ? d->lastPageHeader : 0; -} - -bool Ogg::File::save() -{ - if(readOnly()) { - debug("Ogg::File::save() - Cannot save to a read only file."); - return false; - } - - Map<unsigned int, ByteVector>::ConstIterator it; - for(it = d->dirtyPackets.begin(); it != d->dirtyPackets.end(); ++it) - writePacket(it->first, it->second); - - d->dirtyPackets.clear(); - - return true; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::File::File(FileName file) : - TagLib::File(file), - d(new FilePrivate()) -{ -} - -Ogg::File::File(IOStream *stream) : - TagLib::File(stream), - d(new FilePrivate()) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -bool Ogg::File::readPages(unsigned int i) -{ - while(true) { - unsigned int packetIndex; - long offset; - - if(d->pages.isEmpty()) { - packetIndex = 0; - offset = find("OggS"); - if(offset < 0) - return false; - } - else { - const Page *page = d->pages.back(); - packetIndex = nextPacketIndex(page); - offset = page->fileOffset() + page->size(); - } - - // Enough pages have been fetched. - - if(packetIndex > i) - return true; - - // Read the next page and add it to the page list. - - Page *nextPage = new Page(this, offset); - if(!nextPage->header()->isValid()) { - delete nextPage; - return false; - } - - nextPage->setFirstPacketIndex(packetIndex); - d->pages.append(nextPage); - - if(nextPage->header()->lastPageOfStream()) - return false; - } -} - -void Ogg::File::writePacket(unsigned int i, const ByteVector &packet) -{ - if(!readPages(i)) { - debug("Ogg::File::writePacket() -- Could not find the requested packet."); - return; - } - - // Look for the pages where the requested packet should belong to. - - List<Page *>::ConstIterator it = d->pages.begin(); - while((*it)->containsPacket(i) == Page::DoesNotContainPacket) - ++it; - - const Page *firstPage = *it; - - while(nextPacketIndex(*it) <= i) - ++it; - - const Page *lastPage = *it; - - // Replace the requested packet and create new pages to replace the located pages. - - ByteVectorList packets = firstPage->packets(); - packets[i - firstPage->firstPacketIndex()] = packet; - - if(firstPage != lastPage && lastPage->packetCount() > 1) { - ByteVectorList lastPagePackets = lastPage->packets(); - lastPagePackets.erase(lastPagePackets.begin()); - packets.append(lastPagePackets); - } - - // TODO: This pagination method isn't accurate for what's being done here. - // This should account for real possibilities like non-aligned packets and such. - - List<Page *> pages = Page::paginate(packets, - Page::SinglePagePerGroup, - firstPage->header()->streamSerialNumber(), - firstPage->pageSequenceNumber(), - firstPage->header()->firstPacketContinued(), - lastPage->header()->lastPacketCompleted()); - pages.setAutoDelete(true); - - // Write the pages. - - ByteVector data; - for(it = pages.begin(); it != pages.end(); ++it) - data.append((*it)->render()); - - const unsigned long originalOffset = firstPage->fileOffset(); - const unsigned long originalLength = lastPage->fileOffset() + lastPage->size() - originalOffset; - - insert(data, originalOffset, originalLength); - - // Renumber the following pages if the pages have been split or merged. - - const int numberOfNewPages - = pages.back()->pageSequenceNumber() - lastPage->pageSequenceNumber(); - - if(numberOfNewPages != 0) { - long pageOffset = originalOffset + data.size(); - - while(true) { - Page page(this, pageOffset); - if(!page.header()->isValid()) - break; - - page.setPageSequenceNumber(page.pageSequenceNumber() + numberOfNewPages); - const ByteVector data = page.render(); - - seek(pageOffset + 18); - writeBlock(data.mid(18, 8)); - - if(page.header()->lastPageOfStream()) - break; - - pageOffset += page.size(); - } - } - - // Discard all the pages to keep them up-to-date by fetching them again. - - d->pages.clear(); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/oggpage.cpp b/Frameworks/TagLib/taglib/taglib/ogg/oggpage.cpp deleted file mode 100644 index 02a93ca68..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/oggpage.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <algorithm> - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/ogg/oggpage.h> -#include <taglib/ogg/oggpageheader.h> -#include <taglib/ogg/oggfile.h> - -using namespace TagLib; - -class Ogg::Page::PagePrivate -{ -public: - PagePrivate(File *f = 0, long pageOffset = -1) : - file(f), - fileOffset(pageOffset), - header(f, pageOffset), - firstPacketIndex(-1) {} - - File *file; - long fileOffset; - PageHeader header; - int firstPacketIndex; - ByteVectorList packets; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::Page::Page(Ogg::File *file, long pageOffset) : - d(new PagePrivate(file, pageOffset)) -{ -} - -Ogg::Page::~Page() -{ - delete d; -} - -long Ogg::Page::fileOffset() const -{ - return d->fileOffset; -} - -const Ogg::PageHeader *Ogg::Page::header() const -{ - return &d->header; -} - -int Ogg::Page::pageSequenceNumber() const -{ - return d->header.pageSequenceNumber(); -} - -void Ogg::Page::setPageSequenceNumber(int sequenceNumber) -{ - d->header.setPageSequenceNumber(sequenceNumber); -} - -int Ogg::Page::firstPacketIndex() const -{ - return d->firstPacketIndex; -} - -void Ogg::Page::setFirstPacketIndex(int index) -{ - d->firstPacketIndex = index; -} - -Ogg::Page::ContainsPacketFlags Ogg::Page::containsPacket(int index) const -{ - const int lastPacketIndex = d->firstPacketIndex + packetCount() - 1; - if(index < d->firstPacketIndex || index > lastPacketIndex) - return DoesNotContainPacket; - - ContainsPacketFlags flags = DoesNotContainPacket; - - if(index == d->firstPacketIndex) - flags = ContainsPacketFlags(flags | BeginsWithPacket); - - if(index == lastPacketIndex) - flags = ContainsPacketFlags(flags | EndsWithPacket); - - // If there's only one page and it's complete: - - if(packetCount() == 1 && - !d->header.firstPacketContinued() && - d->header.lastPacketCompleted()) - { - flags = ContainsPacketFlags(flags | CompletePacket); - } - - // Or if there is more than one page and the page is - // (a) the first page and it's complete or - // (b) the last page and it's complete or - // (c) a page in the middle. - else if(packetCount() > 1 && - ((flags & BeginsWithPacket && !d->header.firstPacketContinued()) || - (flags & EndsWithPacket && d->header.lastPacketCompleted()) || - (!(flags & BeginsWithPacket) && !(flags & EndsWithPacket)))) - { - flags = ContainsPacketFlags(flags | CompletePacket); - } - - return flags; -} - -unsigned int Ogg::Page::packetCount() const -{ - return d->header.packetSizes().size(); -} - -ByteVectorList Ogg::Page::packets() const -{ - if(!d->packets.isEmpty()) - return d->packets; - - ByteVectorList l; - - if(d->file && d->header.isValid()) { - - d->file->seek(d->fileOffset + d->header.size()); - - List<int> packetSizes = d->header.packetSizes(); - - List<int>::ConstIterator it = packetSizes.begin(); - for(; it != packetSizes.end(); ++it) - l.append(d->file->readBlock(*it)); - } - else - debug("Ogg::Page::packets() -- attempting to read packets from an invalid page."); - - return l; -} - -int Ogg::Page::size() const -{ - return d->header.size() + d->header.dataSize(); -} - -ByteVector Ogg::Page::render() const -{ - ByteVector data; - - data.append(d->header.render()); - - if(d->packets.isEmpty()) { - if(d->file) { - d->file->seek(d->fileOffset + d->header.size()); - data.append(d->file->readBlock(d->header.dataSize())); - } - else - debug("Ogg::Page::render() -- this page is empty!"); - } - else { - ByteVectorList::ConstIterator it = d->packets.begin(); - for(; it != d->packets.end(); ++it) - data.append(*it); - } - - // Compute and set the checksum for the Ogg page. The checksum is taken over - // the entire page with the 4 bytes reserved for the checksum zeroed and then - // inserted in bytes 22-25 of the page header. - - const ByteVector checksum = ByteVector::fromUInt(data.checksum(), false); - std::copy(checksum.begin(), checksum.end(), data.begin() + 22); - - return data; -} - -List<Ogg::Page *> Ogg::Page::paginate(const ByteVectorList &packets, - PaginationStrategy strategy, - unsigned int streamSerialNumber, - int firstPage, - bool firstPacketContinued, - bool lastPacketCompleted, - bool containsLastPacket) -{ - // SplitSize must be a multiple of 255 in order to get the lacing values right - // create pages of about 8KB each - - static const unsigned int SplitSize = 32 * 255; - - // Force repagination if the segment table will exceed the size limit. - - if(strategy != Repaginate) { - - size_t tableSize = 0; - for(ByteVectorList::ConstIterator it = packets.begin(); it != packets.end(); ++it) - tableSize += it->size() / 255 + 1; - - if(tableSize > 255) - strategy = Repaginate; - } - - List<Page *> l; - - // Handle creation of multiple pages with appropriate pagination. - - if(strategy == Repaginate) { - - int pageIndex = firstPage; - - for(ByteVectorList::ConstIterator it = packets.begin(); it != packets.end(); ++it) { - - const bool lastPacketInList = (it == --packets.end()); - - // mark very first packet? - - bool continued = (firstPacketContinued && it == packets.begin()); - unsigned int pos = 0; - - while(pos < it->size()) { - - const bool lastSplit = (pos + SplitSize >= it->size()); - - ByteVectorList packetList; - packetList.append(it->mid(pos, SplitSize)); - - l.append(new Page(packetList, - streamSerialNumber, - pageIndex, - continued, - lastSplit && (lastPacketInList ? lastPacketCompleted : true), - lastSplit && (containsLastPacket && lastPacketInList))); - pageIndex++; - continued = true; - - pos += SplitSize; - } - } - } - else { - l.append(new Page(packets, - streamSerialNumber, - firstPage, - firstPacketContinued, - lastPacketCompleted, - containsLastPacket)); - } - - return l; -} - -Ogg::Page* Ogg::Page::getCopyWithNewPageSequenceNumber(int /*sequenceNumber*/) -{ - debug("Ogg::Page::getCopyWithNewPageSequenceNumber() -- This function is obsolete. Returning null."); - return 0; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::Page::Page(const ByteVectorList &packets, - unsigned int streamSerialNumber, - int pageNumber, - bool firstPacketContinued, - bool lastPacketCompleted, - bool containsLastPacket) : - d(new PagePrivate()) -{ - d->header.setFirstPageOfStream(pageNumber == 0 && !firstPacketContinued); - d->header.setLastPageOfStream(containsLastPacket); - d->header.setFirstPacketContinued(firstPacketContinued); - d->header.setLastPacketCompleted(lastPacketCompleted); - d->header.setStreamSerialNumber(streamSerialNumber); - d->header.setPageSequenceNumber(pageNumber); - - // Build a page from the list of packets. - - ByteVector data; - List<int> packetSizes; - - for(ByteVectorList::ConstIterator it = packets.begin(); it != packets.end(); ++it) { - packetSizes.append((*it).size()); - data.append(*it); - } - d->packets = packets; - d->header.setPacketSizes(packetSizes); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/oggpageheader.cpp b/Frameworks/TagLib/taglib/taglib/ogg/oggpageheader.cpp deleted file mode 100644 index bb4903c6e..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/oggpageheader.cpp +++ /dev/null @@ -1,312 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <bitset> - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/taglib.h> - -#include <taglib/ogg/oggpageheader.h> -#include <taglib/ogg/oggfile.h> - -using namespace TagLib; - -class Ogg::PageHeader::PageHeaderPrivate -{ -public: - PageHeaderPrivate() : - isValid(false), - firstPacketContinued(false), - lastPacketCompleted(false), - firstPageOfStream(false), - lastPageOfStream(false), - absoluteGranularPosition(0), - streamSerialNumber(0), - pageSequenceNumber(-1), - size(0), - dataSize(0) {} - - bool isValid; - List<int> packetSizes; - bool firstPacketContinued; - bool lastPacketCompleted; - bool firstPageOfStream; - bool lastPageOfStream; - long long absoluteGranularPosition; - unsigned int streamSerialNumber; - int pageSequenceNumber; - int size; - int dataSize; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::PageHeader::PageHeader(Ogg::File *file, long pageOffset) : - d(new PageHeaderPrivate()) -{ - if(file && pageOffset >= 0) - read(file, pageOffset); -} - -Ogg::PageHeader::~PageHeader() -{ - delete d; -} - -bool Ogg::PageHeader::isValid() const -{ - return d->isValid; -} - -List<int> Ogg::PageHeader::packetSizes() const -{ - return d->packetSizes; -} - -void Ogg::PageHeader::setPacketSizes(const List<int> &sizes) -{ - d->packetSizes = sizes; -} - -bool Ogg::PageHeader::firstPacketContinued() const -{ - return d->firstPacketContinued; -} - -void Ogg::PageHeader::setFirstPacketContinued(bool continued) -{ - d->firstPacketContinued = continued; -} - -bool Ogg::PageHeader::lastPacketCompleted() const -{ - return d->lastPacketCompleted; -} - -void Ogg::PageHeader::setLastPacketCompleted(bool completed) -{ - d->lastPacketCompleted = completed; -} - -bool Ogg::PageHeader::firstPageOfStream() const -{ - return d->firstPageOfStream; -} - -void Ogg::PageHeader::setFirstPageOfStream(bool first) -{ - d->firstPageOfStream = first; -} - -bool Ogg::PageHeader::lastPageOfStream() const -{ - return d->lastPageOfStream; -} - -void Ogg::PageHeader::setLastPageOfStream(bool last) -{ - d->lastPageOfStream = last; -} - -long long Ogg::PageHeader::absoluteGranularPosition() const -{ - return d->absoluteGranularPosition; -} - -void Ogg::PageHeader::setAbsoluteGranularPosition(long long agp) -{ - d->absoluteGranularPosition = agp; -} - -int Ogg::PageHeader::pageSequenceNumber() const -{ - return d->pageSequenceNumber; -} - -void Ogg::PageHeader::setPageSequenceNumber(int sequenceNumber) -{ - d->pageSequenceNumber = sequenceNumber; -} - -unsigned int Ogg::PageHeader::streamSerialNumber() const -{ - return d->streamSerialNumber; -} - -void Ogg::PageHeader::setStreamSerialNumber(unsigned int n) -{ - d->streamSerialNumber = n; -} - -int Ogg::PageHeader::size() const -{ - return d->size; -} - -int Ogg::PageHeader::dataSize() const -{ - return d->dataSize; -} - -ByteVector Ogg::PageHeader::render() const -{ - ByteVector data; - - // capture pattern - - data.append("OggS"); - - // stream structure version - - data.append(char(0)); - - // header type flag - - std::bitset<8> flags; - flags[0] = d->firstPacketContinued; - flags[1] = d->pageSequenceNumber == 0; - flags[2] = d->lastPageOfStream; - - data.append(char(flags.to_ulong())); - - // absolute granular position - - data.append(ByteVector::fromLongLong(d->absoluteGranularPosition, false)); - - // stream serial number - - data.append(ByteVector::fromUInt(d->streamSerialNumber, false)); - - // page sequence number - - data.append(ByteVector::fromUInt(d->pageSequenceNumber, false)); - - // checksum -- this is left empty and should be filled in by the Ogg::Page - // class - - data.append(ByteVector(4, 0)); - - // page segment count and page segment table - - ByteVector pageSegments = lacingValues(); - - data.append(static_cast<unsigned char>(pageSegments.size())); - data.append(pageSegments); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Ogg::PageHeader::read(Ogg::File *file, long pageOffset) -{ - file->seek(pageOffset); - - // An Ogg page header is at least 27 bytes, so we'll go ahead and read that - // much and then get the rest when we're ready for it. - - const ByteVector data = file->readBlock(27); - - // Sanity check -- make sure that we were in fact able to read as much data as - // we asked for and that the page begins with "OggS". - - if(data.size() != 27 || !data.startsWith("OggS")) { - debug("Ogg::PageHeader::read() -- error reading page header"); - return; - } - - const std::bitset<8> flags(data[5]); - - d->firstPacketContinued = flags.test(0); - d->firstPageOfStream = flags.test(1); - d->lastPageOfStream = flags.test(2); - - d->absoluteGranularPosition = data.toLongLong(6, false); - d->streamSerialNumber = data.toUInt(14, false); - d->pageSequenceNumber = data.toUInt(18, false); - - // Byte number 27 is the number of page segments, which is the only variable - // length portion of the page header. After reading the number of page - // segments we'll then read in the corresponding data for this count. - - int pageSegmentCount = static_cast<unsigned char>(data[26]); - - const ByteVector pageSegments = file->readBlock(pageSegmentCount); - - // Another sanity check. - - if(pageSegmentCount < 1 || int(pageSegments.size()) != pageSegmentCount) - return; - - // The base size of an Ogg page 27 bytes plus the number of lacing values. - - d->size = 27 + pageSegmentCount; - - int packetSize = 0; - - for(int i = 0; i < pageSegmentCount; i++) { - d->dataSize += static_cast<unsigned char>(pageSegments[i]); - packetSize += static_cast<unsigned char>(pageSegments[i]); - - if(static_cast<unsigned char>(pageSegments[i]) < 255) { - d->packetSizes.append(packetSize); - packetSize = 0; - } - } - - if(packetSize > 0) { - d->packetSizes.append(packetSize); - d->lastPacketCompleted = false; - } - else - d->lastPacketCompleted = true; - - d->isValid = true; -} - -ByteVector Ogg::PageHeader::lacingValues() const -{ - ByteVector data; - - for(List<int>::ConstIterator it = d->packetSizes.begin(); it != d->packetSizes.end(); ++it) { - - // The size of a packet in an Ogg page is indicated by a series of "lacing - // values" where the sum of the values is the packet size in bytes. Each of - // these values is a byte. A value of less than 255 (0xff) indicates the end - // of the packet. - - data.resize(data.size() + (*it / 255), '\xff'); - - if(it != --d->packetSizes.end() || d->lastPacketCompleted) - data.append(static_cast<unsigned char>(*it % 255)); - } - - return data; -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusfile.cpp b/Frameworks/TagLib/taglib/taglib/ogg/opus/opusfile.cpp deleted file mode 100644 index 585dfd215..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusfile.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/ogg/opus/opusfile.h> - -using namespace TagLib; -using namespace TagLib::Ogg; - -class Opus::File::FilePrivate -{ -public: - FilePrivate() : - comment(0), - properties(0) {} - - ~FilePrivate() - { - delete comment; - delete properties; - } - - Ogg::XiphComment *comment; - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool Ogg::Opus::File::isSupported(IOStream *stream) -{ - // An Opus file has IDs "OggS" and "OpusHead" somewhere. - - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), false); - return (buffer.find("OggS") >= 0 && buffer.find("OpusHead") >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Opus::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - Ogg::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -Opus::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - Ogg::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -Opus::File::~File() -{ - delete d; -} - -Ogg::XiphComment *Opus::File::tag() const -{ - return d->comment; -} - -PropertyMap Opus::File::properties() const -{ - return d->comment->properties(); -} - -PropertyMap Opus::File::setProperties(const PropertyMap &properties) -{ - return d->comment->setProperties(properties); -} - -Opus::Properties *Opus::File::audioProperties() const -{ - return d->properties; -} - -bool Opus::File::save() -{ - if(!d->comment) - d->comment = new Ogg::XiphComment(); - - setPacket(1, ByteVector("OpusTags", 8) + d->comment->render(false)); - - return Ogg::File::save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Opus::File::read(bool readProperties) -{ - ByteVector opusHeaderData = packet(0); - - if(!opusHeaderData.startsWith("OpusHead")) { - setValid(false); - debug("Opus::File::read() -- invalid Opus identification header"); - return; - } - - ByteVector commentHeaderData = packet(1); - - if(!commentHeaderData.startsWith("OpusTags")) { - setValid(false); - debug("Opus::File::read() -- invalid Opus tags header"); - return; - } - - d->comment = new Ogg::XiphComment(commentHeaderData.mid(8)); - - if(readProperties) - d->properties = new Properties(this); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusproperties.cpp b/Frameworks/TagLib/taglib/taglib/ogg/opus/opusproperties.cpp deleted file mode 100644 index 9a4419b29..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusproperties.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/ogg/oggpageheader.h> - -#include <taglib/ogg/opus/opusproperties.h> -#include <taglib/ogg/opus/opusfile.h> - -using namespace TagLib; -using namespace TagLib::Ogg; - -class Opus::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - inputSampleRate(0), - channels(0), - opusVersion(0) {} - - int length; - int bitrate; - int inputSampleRate; - int channels; - int opusVersion; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Opus::Properties::Properties(File *file, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file); -} - -Opus::Properties::~Properties() -{ - delete d; -} - -int Opus::Properties::length() const -{ - return lengthInSeconds(); -} - -int Ogg::Opus::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int Ogg::Opus::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int Opus::Properties::bitrate() const -{ - return d->bitrate; -} - -int Opus::Properties::sampleRate() const -{ - // Opus can decode any stream at a sample rate of 8, 12, 16, 24, or 48 kHz, - // so there is no single sample rate. Let's assume it's the highest - // possible. - return 48000; -} - -int Opus::Properties::channels() const -{ - return d->channels; -} - -int Opus::Properties::inputSampleRate() const -{ - return d->inputSampleRate; -} - -int Opus::Properties::opusVersion() const -{ - return d->opusVersion; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Opus::Properties::read(File *file) -{ - // Get the identification header from the Ogg implementation. - - // http://tools.ietf.org/html/draft-terriberry-oggopus-01#section-5.1 - - const ByteVector data = file->packet(0); - - // *Magic Signature* - unsigned int pos = 8; - - // *Version* (8 bits, unsigned) - d->opusVersion = static_cast<unsigned char>(data.at(pos)); - pos += 1; - - // *Output Channel Count* 'C' (8 bits, unsigned) - d->channels = static_cast<unsigned char>(data.at(pos)); - pos += 1; - - // *Pre-skip* (16 bits, unsigned, little endian) - const unsigned short preSkip = data.toUShort(pos, false); - pos += 2; - - // *Input Sample Rate* (32 bits, unsigned, little endian) - d->inputSampleRate = data.toUInt(pos, false); - pos += 4; - - // *Output Gain* (16 bits, signed, little endian) - pos += 2; - - // *Channel Mapping Family* (8 bits, unsigned) - pos += 1; - - const Ogg::PageHeader *first = file->firstPageHeader(); - const Ogg::PageHeader *last = file->lastPageHeader(); - - if(first && last) { - const long long start = first->absoluteGranularPosition(); - const long long end = last->absoluteGranularPosition(); - - if(start >= 0 && end >= 0) { - const long long frameCount = (end - start - preSkip); - - if(frameCount > 0) { - const double length = frameCount * 1000.0 / 48000.0; - long fileLengthWithoutOverhead = file->length(); - // Ignore the two mandatory header packets, see "3. Packet Organization" - // in https://tools.ietf.org/html/rfc7845.html - for (unsigned int i = 0; i < 2; ++i) { - fileLengthWithoutOverhead -= file->packet(i).size(); - } - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(fileLengthWithoutOverhead * 8.0 / length + 0.5); - } - } - else { - debug("Opus::Properties::read() -- The PCM values for the start or " - "end of this file was incorrect."); - } - } - else - debug("Opus::Properties::read() -- Could not find valid first and last Ogg pages."); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexfile.cpp b/Frameworks/TagLib/taglib/taglib/ogg/speex/speexfile.cpp deleted file mode 100644 index 18a05a23f..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexfile.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/ogg/speex/speexfile.h> - -using namespace TagLib; -using namespace TagLib::Ogg; - -class Speex::File::FilePrivate -{ -public: - FilePrivate() : - comment(0), - properties(0) {} - - ~FilePrivate() - { - delete comment; - delete properties; - } - - Ogg::XiphComment *comment; - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool Ogg::Speex::File::isSupported(IOStream *stream) -{ - // A Speex file has IDs "OggS" and "Speex " somewhere. - - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), false); - return (buffer.find("OggS") >= 0 && buffer.find("Speex ") >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Speex::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - Ogg::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -Speex::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - Ogg::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -Speex::File::~File() -{ - delete d; -} - -Ogg::XiphComment *Speex::File::tag() const -{ - return d->comment; -} - -PropertyMap Speex::File::properties() const -{ - return d->comment->properties(); -} - -PropertyMap Speex::File::setProperties(const PropertyMap &properties) -{ - return d->comment->setProperties(properties); -} - -Speex::Properties *Speex::File::audioProperties() const -{ - return d->properties; -} - -bool Speex::File::save() -{ - if(!d->comment) - d->comment = new Ogg::XiphComment(); - - setPacket(1, d->comment->render()); - - return Ogg::File::save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Speex::File::read(bool readProperties) -{ - ByteVector speexHeaderData = packet(0); - - if(!speexHeaderData.startsWith("Speex ")) { - debug("Speex::File::read() -- invalid Speex identification header"); - setValid(false); - return; - } - - ByteVector commentHeaderData = packet(1); - - d->comment = new Ogg::XiphComment(commentHeaderData); - - if(readProperties) - d->properties = new Properties(this); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexproperties.cpp b/Frameworks/TagLib/taglib/taglib/ogg/speex/speexproperties.cpp deleted file mode 100644 index 079093116..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexproperties.cpp +++ /dev/null @@ -1,207 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - (original Vorbis implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/ogg/oggpageheader.h> - -#include <taglib/ogg/speex/speexproperties.h> -#include <taglib/ogg/speex/speexfile.h> - -using namespace TagLib; -using namespace TagLib::Ogg; - -class Speex::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - bitrateNominal(0), - sampleRate(0), - channels(0), - speexVersion(0), - vbr(false), - mode(0) {} - - int length; - int bitrate; - int bitrateNominal; - int sampleRate; - int channels; - int speexVersion; - bool vbr; - int mode; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Speex::Properties::Properties(File *file, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file); -} - -Speex::Properties::~Properties() -{ - delete d; -} - -int Speex::Properties::length() const -{ - return lengthInSeconds(); -} - -int Speex::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int Speex::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int Speex::Properties::bitrate() const -{ - return d->bitrate; -} - -int Speex::Properties::bitrateNominal() const -{ - return d->bitrateNominal; -} - -int Speex::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int Speex::Properties::channels() const -{ - return d->channels; -} - -int Speex::Properties::speexVersion() const -{ - return d->speexVersion; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Speex::Properties::read(File *file) -{ - // Get the identification header from the Ogg implementation. - - const ByteVector data = file->packet(0); - if(data.size() < 64) { - debug("Speex::Properties::read() -- data is too short."); - return; - } - - unsigned int pos = 28; - - // speex_version_id; /**< Version for Speex (for checking compatibility) */ - d->speexVersion = data.toUInt(pos, false); - pos += 4; - - // header_size; /**< Total size of the header ( sizeof(SpeexHeader) ) */ - pos += 4; - - // rate; /**< Sampling rate used */ - d->sampleRate = data.toUInt(pos, false); - pos += 4; - - // mode; /**< Mode used (0 for narrowband, 1 for wideband) */ - d->mode = data.toUInt(pos, false); - pos += 4; - - // mode_bitstream_version; /**< Version ID of the bit-stream */ - pos += 4; - - // nb_channels; /**< Number of channels encoded */ - d->channels = data.toUInt(pos, false); - pos += 4; - - // bitrate; /**< Bit-rate used */ - d->bitrateNominal = data.toUInt(pos, false); - pos += 4; - - // frame_size; /**< Size of frames */ - // unsigned int frameSize = data.mid(pos, 4).toUInt(false); - pos += 4; - - // vbr; /**< 1 for a VBR encoding, 0 otherwise */ - d->vbr = data.toUInt(pos, false) == 1; - pos += 4; - - // frames_per_packet; /**< Number of frames stored per Ogg packet */ - // unsigned int framesPerPacket = data.mid(pos, 4).toUInt(false); - - const Ogg::PageHeader *first = file->firstPageHeader(); - const Ogg::PageHeader *last = file->lastPageHeader(); - - if(first && last) { - const long long start = first->absoluteGranularPosition(); - const long long end = last->absoluteGranularPosition(); - - if(start >= 0 && end >= 0 && d->sampleRate > 0) { - const long long frameCount = end - start; - - if(frameCount > 0) { - const double length = frameCount * 1000.0 / d->sampleRate; - long fileLengthWithoutOverhead = file->length(); - // Ignore the two header packets, see "Ogg file format" in - // https://www.speex.org/docs/manual/speex-manual/node8.html - for (unsigned int i = 0; i < 2; ++i) { - fileLengthWithoutOverhead -= file->packet(i).size(); - } - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(fileLengthWithoutOverhead * 8.0 / length + 0.5); - } - } - else { - debug("Speex::Properties::read() -- Either the PCM values for the start or " - "end of this file was incorrect or the sample rate is zero."); - } - } - else - debug("Speex::Properties::read() -- Could not find valid first and last Ogg pages."); - - // Alternative to the actual average bitrate. - - if(d->bitrate == 0 && d->bitrateNominal > 0) - d->bitrate = static_cast<int>(d->bitrateNominal / 1000.0 + 0.5); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisfile.cpp b/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisfile.cpp deleted file mode 100644 index f70e064ed..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisfile.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <bitset> - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/ogg/vorbis/vorbisfile.h> - -using namespace TagLib; - -class Vorbis::File::FilePrivate -{ -public: - FilePrivate() : - comment(0), - properties(0) {} - - ~FilePrivate() - { - delete comment; - delete properties; - } - - Ogg::XiphComment *comment; - Properties *properties; -}; - -namespace TagLib { - /*! - * Vorbis headers can be found with one type ID byte and the string "vorbis" in - * an Ogg stream. 0x03 indicates the comment header. - */ - static const char vorbisCommentHeaderID[] = { 0x03, 'v', 'o', 'r', 'b', 'i', 's', 0 }; -} - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool Vorbis::File::isSupported(IOStream *stream) -{ - // An Ogg Vorbis file has IDs "OggS" and "\x01vorbis" somewhere. - - const ByteVector buffer = Utils::readHeader(stream, bufferSize(), false); - return (buffer.find("OggS") >= 0 && buffer.find("\x01vorbis") >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Vorbis::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - Ogg::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -Vorbis::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - Ogg::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -Vorbis::File::~File() -{ - delete d; -} - -Ogg::XiphComment *Vorbis::File::tag() const -{ - return d->comment; -} - -PropertyMap Vorbis::File::properties() const -{ - return d->comment->properties(); -} - -PropertyMap Vorbis::File::setProperties(const PropertyMap &properties) -{ - return d->comment->setProperties(properties); -} - -Vorbis::Properties *Vorbis::File::audioProperties() const -{ - return d->properties; -} - -bool Vorbis::File::save() -{ - ByteVector v(vorbisCommentHeaderID); - - if(!d->comment) - d->comment = new Ogg::XiphComment(); - v.append(d->comment->render()); - - setPacket(1, v); - - return Ogg::File::save(); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Vorbis::File::read(bool readProperties) -{ - ByteVector commentHeaderData = packet(1); - - if(commentHeaderData.mid(0, 7) != vorbisCommentHeaderID) { - debug("Vorbis::File::read() - Could not find the Vorbis comment header."); - setValid(false); - return; - } - - d->comment = new Ogg::XiphComment(commentHeaderData.mid(7)); - - if(readProperties) - d->properties = new Properties(this); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisproperties.cpp b/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisproperties.cpp deleted file mode 100644 index 483f28ded..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisproperties.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/ogg/oggpageheader.h> - -#include <taglib/ogg/vorbis/vorbisproperties.h> -#include <taglib/ogg/vorbis/vorbisfile.h> - -using namespace TagLib; - -class Vorbis::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - vorbisVersion(0), - bitrateMaximum(0), - bitrateNominal(0), - bitrateMinimum(0) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int vorbisVersion; - int bitrateMaximum; - int bitrateNominal; - int bitrateMinimum; -}; - -namespace TagLib { - /*! - * Vorbis headers can be found with one type ID byte and the string "vorbis" in - * an Ogg stream. 0x01 indicates the setup header. - */ - static const char vorbisSetupHeaderID[] = { 0x01, 'v', 'o', 'r', 'b', 'i', 's', 0 }; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Vorbis::Properties::Properties(File *file, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file); -} - -Vorbis::Properties::~Properties() -{ - delete d; -} - -int Vorbis::Properties::length() const -{ - return lengthInSeconds(); -} - -int Vorbis::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int Vorbis::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int Vorbis::Properties::bitrate() const -{ - return d->bitrate; -} - -int Vorbis::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int Vorbis::Properties::channels() const -{ - return d->channels; -} - -int Vorbis::Properties::vorbisVersion() const -{ - return d->vorbisVersion; -} - -int Vorbis::Properties::bitrateMaximum() const -{ - return d->bitrateMaximum; -} - -int Vorbis::Properties::bitrateNominal() const -{ - return d->bitrateNominal; -} - -int Vorbis::Properties::bitrateMinimum() const -{ - return d->bitrateMinimum; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void Vorbis::Properties::read(File *file) -{ - // Get the identification header from the Ogg implementation. - - const ByteVector data = file->packet(0); - if(data.size() < 28) { - debug("Vorbis::Properties::read() -- data is too short."); - return; - } - - unsigned int pos = 0; - - if(data.mid(pos, 7) != vorbisSetupHeaderID) { - debug("Vorbis::Properties::read() -- invalid Vorbis identification header"); - return; - } - - pos += 7; - - d->vorbisVersion = data.toUInt(pos, false); - pos += 4; - - d->channels = static_cast<unsigned char>(data[pos]); - pos += 1; - - d->sampleRate = data.toUInt(pos, false); - pos += 4; - - d->bitrateMaximum = data.toUInt(pos, false); - pos += 4; - - d->bitrateNominal = data.toUInt(pos, false); - pos += 4; - - d->bitrateMinimum = data.toUInt(pos, false); - pos += 4; - - // Find the length of the file. See http://wiki.xiph.org/VorbisStreamLength/ - // for my notes on the topic. - - const Ogg::PageHeader *first = file->firstPageHeader(); - const Ogg::PageHeader *last = file->lastPageHeader(); - - if(first && last) { - const long long start = first->absoluteGranularPosition(); - const long long end = last->absoluteGranularPosition(); - - if(start >= 0 && end >= 0 && d->sampleRate > 0) { - const long long frameCount = end - start; - - if(frameCount > 0) { - const double length = frameCount * 1000.0 / d->sampleRate; - long fileLengthWithoutOverhead = file->length(); - // Ignore the three initial header packets, see "1.3.1. Decode Setup" in - // https://xiph.org/vorbis/doc/Vorbis_I_spec.html - for (unsigned int i = 0; i < 3; ++i) { - fileLengthWithoutOverhead -= file->packet(i).size(); - } - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(fileLengthWithoutOverhead * 8.0 / length + 0.5); - } - } - else { - debug("Vorbis::Properties::read() -- Either the PCM values for the start or " - "end of this file was incorrect or the sample rate is zero."); - } - } - else - debug("Vorbis::Properties::read() -- Could not find valid first and last Ogg pages."); - - // Alternative to the actual average bitrate. - - if(d->bitrate == 0 && d->bitrateNominal > 0) - d->bitrate = static_cast<int>(d->bitrateNominal / 1000.0 + 0.5); -} diff --git a/Frameworks/TagLib/taglib/taglib/ogg/xiphcomment.cpp b/Frameworks/TagLib/taglib/taglib/ogg/xiphcomment.cpp deleted file mode 100644 index c237cc1c1..000000000 --- a/Frameworks/TagLib/taglib/taglib/ogg/xiphcomment.cpp +++ /dev/null @@ -1,633 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/flac/flacpicture.h> -#include <taglib/ogg/xiphcomment.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; - -namespace -{ - typedef Ogg::FieldListMap::Iterator FieldIterator; - typedef Ogg::FieldListMap::ConstIterator FieldConstIterator; - - typedef List<FLAC::Picture *> PictureList; - typedef PictureList::Iterator PictureIterator; - typedef PictureList::Iterator PictureConstIterator; -} - -class Ogg::XiphComment::XiphCommentPrivate -{ -public: - XiphCommentPrivate() - { - pictureList.setAutoDelete(true); - } - - FieldListMap fieldListMap; - String vendorID; - String commentField; - PictureList pictureList; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -Ogg::XiphComment::XiphComment() : - TagLib::Tag(), - d(new XiphCommentPrivate()) -{ -} - -Ogg::XiphComment::XiphComment(const ByteVector &data) : - TagLib::Tag(), - d(new XiphCommentPrivate()) -{ - parse(data); -} - -Ogg::XiphComment::~XiphComment() -{ - delete d; -} - -String Ogg::XiphComment::title() const -{ - if(d->fieldListMap["TITLE"].isEmpty()) - return String(); - return d->fieldListMap["TITLE"].toString(); -} - -String Ogg::XiphComment::albumartist() const -{ - if(!d->fieldListMap["ALBUMARTIST"].isEmpty()) - return d->fieldListMap["ALBUMARTIST"].toString(); - if(!d->fieldListMap["ALBUM ARTIST"].isEmpty()) - return d->fieldListMap["ALBUM ARTIST"].toString(); - return String(); -} - -String Ogg::XiphComment::artist() const -{ - if(d->fieldListMap["ARTIST"].isEmpty()) - return String(); - return d->fieldListMap["ARTIST"].toString(); -} - -String Ogg::XiphComment::album() const -{ - if(d->fieldListMap["ALBUM"].isEmpty()) - return String(); - return d->fieldListMap["ALBUM"].toString(); -} - -String Ogg::XiphComment::comment() const -{ - if(!d->fieldListMap["DESCRIPTION"].isEmpty()) { - d->commentField = "DESCRIPTION"; - return d->fieldListMap["DESCRIPTION"].toString(); - } - - if(!d->fieldListMap["COMMENT"].isEmpty()) { - d->commentField = "COMMENT"; - return d->fieldListMap["COMMENT"].toString(); - } - - return String(); -} - -String Ogg::XiphComment::genre() const -{ - if(d->fieldListMap["GENRE"].isEmpty()) - return String(); - return d->fieldListMap["GENRE"].toString(); -} - -unsigned int Ogg::XiphComment::year() const -{ - if(!d->fieldListMap["DATE"].isEmpty()) - return d->fieldListMap["DATE"].front().toInt(); - if(!d->fieldListMap["YEAR"].isEmpty()) - return d->fieldListMap["YEAR"].front().toInt(); - return 0; -} - -unsigned int Ogg::XiphComment::track() const -{ - if(!d->fieldListMap["TRACKNUMBER"].isEmpty()) - return d->fieldListMap["TRACKNUMBER"].front().toInt(); - if(!d->fieldListMap["TRACKNUM"].isEmpty()) - return d->fieldListMap["TRACKNUM"].front().toInt(); - if(!d->fieldListMap["TRACK"].isEmpty()) - return d->fieldListMap["TRACK"].front().toInt(); - return 0; -} - -unsigned int Ogg::XiphComment::disc() const -{ - if(!d->fieldListMap["DISCNUMBER"].isEmpty()) - return d->fieldListMap["DISCNUMBER"].front().toInt(); - if(!d->fieldListMap["DISCNUM"].isEmpty()) - return d->fieldListMap["DISCNUM"].front().toInt(); - if(!d->fieldListMap["DISC"].isEmpty()) - return d->fieldListMap["DISC"].front().toInt(); - return 0; -} - -String Ogg::XiphComment::cuesheet() const -{ - if(d->fieldListMap["CUESHEET"].isEmpty()) - return String(); - return d->fieldListMap["CUESHEET"].front(); -} - -float Ogg::XiphComment::rgAlbumGain() const -{ - if(d->fieldListMap["REPLAYGAIN_ALBUM_GAIN"].isEmpty()) - return 0; - return d->fieldListMap["REPLAYGAIN_ALBUM_GAIN"].front().toFloat(); -} - -float Ogg::XiphComment::rgAlbumPeak() const -{ - if(d->fieldListMap["REPLAYGAIN_ALBUM_PEAK"].isEmpty()) - return 0; - return d->fieldListMap["REPLAYGAIN_ALBUM_PEAK"].front().toFloat(); -} - -float Ogg::XiphComment::rgTrackGain() const -{ - if(d->fieldListMap["REPLAYGAIN_TRACK_GAIN"].isEmpty()) - return 0; - return d->fieldListMap["REPLAYGAIN_TRACK_GAIN"].front().toFloat(); -} - -float Ogg::XiphComment::rgTrackPeak() const -{ - if(d->fieldListMap["REPLAYGAIN_TRACK_PEAK"].isEmpty()) - return 0; - return d->fieldListMap["REPLAYGAIN_TRACK_PEAK"].front().toFloat(); -} - -String Ogg::XiphComment::soundcheck() const -{ - return String(); -} - -void Ogg::XiphComment::setTitle(const String &s) -{ - addField("TITLE", s); -} - -void Ogg::XiphComment::setAlbumArtist(const String &s) -{ - addField("ALBUMARTIST", s); -} - -void Ogg::XiphComment::setArtist(const String &s) -{ - addField("ARTIST", s); -} - -void Ogg::XiphComment::setAlbum(const String &s) -{ - addField("ALBUM", s); -} - -void Ogg::XiphComment::setComment(const String &s) -{ - if(d->commentField.isEmpty()) { - if(!d->fieldListMap["DESCRIPTION"].isEmpty()) - d->commentField = "DESCRIPTION"; - else - d->commentField = "COMMENT"; - } - - addField(d->commentField, s); -} - -void Ogg::XiphComment::setGenre(const String &s) -{ - addField("GENRE", s); -} - -void Ogg::XiphComment::setYear(unsigned int i) -{ - removeFields("YEAR"); - if(i == 0) - removeFields("DATE"); - else - addField("DATE", String::number(i)); -} - -void Ogg::XiphComment::setTrack(unsigned int i) -{ - removeFields("TRACK"); - removeFields("TRACKNUM"); - if(i == 0) - removeFields("TRACKNUMBER"); - else - addField("TRACKNUMBER", String::number(i)); -} - -void Ogg::XiphComment::setDisc(unsigned int i) -{ - removeFields("DISC"); - removeFields("DISCNUM"); - if(i == 0) - removeFields("DISCNUMBER"); - else - addField("DISCNUMBER", String::number(i)); -} - -void Ogg::XiphComment::setCuesheet(const String &s) -{ - if (s.isEmpty()) - removeField("CUESHEET"); - else - addField("CUESHEET", s); -} - -void Ogg::XiphComment::setRGAlbumGain(float f) -{ - if (f == 0) - removeField("REPLAYGAIN_ALBUM_GAIN"); - else - addField("REPLAYGAIN_ALBUM_GAIN", String::number(f) + " dB"); -} - -void Ogg::XiphComment::setRGAlbumPeak(float f) -{ - if (f == 0) - removeField("REPLAYGAIN_ALBUM_PEAK"); - else - addField("REPLAYGAIN_ALBUM_PEAK", String::number(f)); -} - -void Ogg::XiphComment::setRGTrackGain(float f) -{ - if (f == 0) - removeField("REPLAYGAIN_TRACK_GAIN"); - else - addField("REPLAYGAIN_TRACK_GAIN", String::number(f) + " dB"); -} - -void Ogg::XiphComment::setRGTrackPeak(float f) -{ - if (f == 0) - removeField("REPLAYGAIN_TRACK_PEAK"); - else - addField("REPLAYGAIN_TRACK_PEAK", String::number(f)); -} - -bool Ogg::XiphComment::isEmpty() const -{ - for(FieldConstIterator it = d->fieldListMap.begin(); it != d->fieldListMap.end(); ++it) { - if(!(*it).second.isEmpty()) - return false; - } - - return true; -} - -unsigned int Ogg::XiphComment::fieldCount() const -{ - unsigned int count = 0; - - for(FieldConstIterator it = d->fieldListMap.begin(); it != d->fieldListMap.end(); ++it) - count += (*it).second.size(); - - count += d->pictureList.size(); - - return count; -} - -const Ogg::FieldListMap &Ogg::XiphComment::fieldListMap() const -{ - return d->fieldListMap; -} - -PropertyMap Ogg::XiphComment::properties() const -{ - return d->fieldListMap; -} - -PropertyMap Ogg::XiphComment::setProperties(const PropertyMap &properties) -{ - // check which keys are to be deleted - StringList toRemove; - for(FieldConstIterator it = d->fieldListMap.begin(); it != d->fieldListMap.end(); ++it) - if (!properties.contains(it->first)) - toRemove.append(it->first); - - for(StringList::ConstIterator it = toRemove.begin(); it != toRemove.end(); ++it) - removeFields(*it); - - // now go through keys in \a properties and check that the values match those in the xiph comment - PropertyMap invalid; - PropertyMap::ConstIterator it = properties.begin(); - for(; it != properties.end(); ++it) - { - if(!checkKey(it->first)) - invalid.insert(it->first, it->second); - else if(!d->fieldListMap.contains(it->first) || !(it->second == d->fieldListMap[it->first])) { - const StringList &sl = it->second; - if(sl.isEmpty()) - // zero size string list -> remove the tag with all values - removeFields(it->first); - else { - // replace all strings in the list for the tag - StringList::ConstIterator valueIterator = sl.begin(); - addField(it->first, *valueIterator, true); - ++valueIterator; - for(; valueIterator != sl.end(); ++valueIterator) - addField(it->first, *valueIterator, false); - } - } - } - return invalid; -} - -bool Ogg::XiphComment::checkKey(const String &key) -{ - if(key.size() < 1) - return false; - - // A key may consist of ASCII 0x20 through 0x7D, 0x3D ('=') excluded. - - for(String::ConstIterator it = key.begin(); it != key.end(); it++) { - if(*it < 0x20 || *it > 0x7D || *it == 0x3D) - return false; - } - - return true; -} - -String Ogg::XiphComment::vendorID() const -{ - return d->vendorID; -} - -void Ogg::XiphComment::addField(const String &key, const String &value, bool replace) -{ - if(!checkKey(key)) { - debug("Ogg::XiphComment::addField() - Invalid key. Field not added."); - return; - } - - const String upperKey = key.upper(); - - if(replace) - removeFields(upperKey); - - if(!key.isEmpty() && !value.isEmpty()) - d->fieldListMap[upperKey].append(value); -} - -void Ogg::XiphComment::removeField(const String &key, const String &value) -{ - if(!value.isNull()) - removeFields(key, value); - else - removeFields(key); -} - -void Ogg::XiphComment::removeFields(const String &key) -{ - d->fieldListMap.erase(key.upper()); -} - -void Ogg::XiphComment::removeFields(const String &key, const String &value) -{ - StringList &fields = d->fieldListMap[key.upper()]; - for(StringList::Iterator it = fields.begin(); it != fields.end(); ) { - if(*it == value) - it = fields.erase(it); - else - ++it; - } -} - -void Ogg::XiphComment::removeAllFields() -{ - d->fieldListMap.clear(); -} - -bool Ogg::XiphComment::contains(const String &key) const -{ - return !d->fieldListMap[key.upper()].isEmpty(); -} - -void Ogg::XiphComment::removePicture(FLAC::Picture *picture, bool del) -{ - PictureIterator it = d->pictureList.find(picture); - if(it != d->pictureList.end()) - d->pictureList.erase(it); - - if(del) - delete picture; -} - -void Ogg::XiphComment::removeAllPictures() -{ - d->pictureList.clear(); -} - -void Ogg::XiphComment::addPicture(FLAC::Picture * picture) -{ - d->pictureList.append(picture); -} - -List<FLAC::Picture *> Ogg::XiphComment::pictureList() -{ - return d->pictureList; -} - -ByteVector Ogg::XiphComment::render() const -{ - return render(true); -} - -ByteVector Ogg::XiphComment::render(bool addFramingBit) const -{ - ByteVector data; - - // Add the vendor ID length and the vendor ID. It's important to use the - // length of the data(String::UTF8) rather than the length of the the string - // since this is UTF8 text and there may be more characters in the data than - // in the UTF16 string. - - ByteVector vendorData = d->vendorID.data(String::UTF8); - - data.append(ByteVector::fromUInt(vendorData.size(), false)); - data.append(vendorData); - - // Add the number of fields. - - data.append(ByteVector::fromUInt(fieldCount(), false)); - - // Iterate over the the field lists. Our iterator returns a - // std::pair<String, StringList> where the first String is the field name and - // the StringList is the values associated with that field. - - FieldListMap::ConstIterator it = d->fieldListMap.begin(); - for(; it != d->fieldListMap.end(); ++it) { - - // And now iterate over the values of the current list. - - String fieldName = (*it).first; - StringList values = (*it).second; - - StringList::ConstIterator valuesIt = values.begin(); - for(; valuesIt != values.end(); ++valuesIt) { - ByteVector fieldData = fieldName.data(String::UTF8); - fieldData.append('='); - fieldData.append((*valuesIt).data(String::UTF8)); - - data.append(ByteVector::fromUInt(fieldData.size(), false)); - data.append(fieldData); - } - } - - for(PictureConstIterator it = d->pictureList.begin(); it != d->pictureList.end(); ++it) { - ByteVector picture = (*it)->render().toBase64(); - data.append(ByteVector::fromUInt(picture.size() + 23, false)); - data.append("METADATA_BLOCK_PICTURE="); - data.append(picture); - } - - // Append the "framing bit". - - if(addFramingBit) - data.append(char(1)); - - return data; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void Ogg::XiphComment::parse(const ByteVector &data) -{ - // The first thing in the comment data is the vendor ID length, followed by a - // UTF8 string with the vendor ID. - - unsigned int pos = 0; - - const unsigned int vendorLength = data.toUInt(0, false); - pos += 4; - - d->vendorID = String(data.mid(pos, vendorLength), String::UTF8); - pos += vendorLength; - - // Next the number of fields in the comment vector. - - const unsigned int commentFields = data.toUInt(pos, false); - pos += 4; - - if(commentFields > (data.size() - 8) / 4) { - return; - } - - for(unsigned int i = 0; i < commentFields; i++) { - - // Each comment field is in the format "KEY=value" in a UTF8 string and has - // 4 bytes before the text starts that gives the length. - - const unsigned int commentLength = data.toUInt(pos, false); - pos += 4; - - const ByteVector entry = data.mid(pos, commentLength); - pos += commentLength; - - // Don't go past data end - - if(pos > data.size()) - break; - - // Check for field separator - - const int sep = entry.find('='); - if(sep < 1) { - debug("Ogg::XiphComment::parse() - Discarding a field. Separator not found."); - continue; - } - - // Parse the key - - const String key = String(entry.mid(0, sep), String::UTF8).upper(); - if(!checkKey(key)) { - debug("Ogg::XiphComment::parse() - Discarding a field. Invalid key."); - continue; - } - - if(key == "METADATA_BLOCK_PICTURE" || key == "COVERART") { - - // Handle Pictures separately - - const ByteVector picturedata = ByteVector::fromBase64(entry.mid(sep + 1)); - if(picturedata.isEmpty()) { - debug("Ogg::XiphComment::parse() - Discarding a field. Invalid base64 data"); - continue; - } - - if(key[0] == L'M') { - - // Decode FLAC Picture - - FLAC::Picture * picture = new FLAC::Picture(); - if(picture->parse(picturedata)) { - d->pictureList.append(picture); - } - else { - delete picture; - debug("Ogg::XiphComment::parse() - Failed to decode FLAC Picture block"); - } - } - else { - - // Assume it's some type of image file - - FLAC::Picture * picture = new FLAC::Picture(); - picture->setData(picturedata); - picture->setMimeType("image/"); - picture->setType(FLAC::Picture::Other); - d->pictureList.append(picture); - } - } - else { - - // Parse the text - - addField(key, String(entry.mid(sep + 1), String::UTF8), false); - } - } -} diff --git a/Frameworks/TagLib/taglib/taglib/riff/aiff/aifffile.cpp b/Frameworks/TagLib/taglib/taglib/riff/aiff/aifffile.cpp deleted file mode 100644 index 7ede53809..000000000 --- a/Frameworks/TagLib/taglib/taglib/riff/aiff/aifffile.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/riff/aiff/aifffile.h> - -using namespace TagLib; - -class RIFF::AIFF::File::FilePrivate -{ -public: - FilePrivate() : - properties(0), - tag(0), - hasID3v2(false) {} - - ~FilePrivate() - { - delete properties; - delete tag; - } - - Properties *properties; - ID3v2::Tag *tag; - - bool hasID3v2; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool RIFF::AIFF::File::isSupported(IOStream *stream) -{ - // An AIFF file has to start with "FORM????AIFF" or "FORM????AIFC". - - const ByteVector id = Utils::readHeader(stream, 12, false); - return (id.startsWith("FORM") && (id.containsAt("AIFF", 8) || id.containsAt("AIFC", 8))); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::AIFF::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - RIFF::File(file, BigEndian), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -RIFF::AIFF::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - RIFF::File(stream, BigEndian), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -RIFF::AIFF::File::~File() -{ - delete d; -} - -ID3v2::Tag *RIFF::AIFF::File::tag() const -{ - return d->tag; -} - -PropertyMap RIFF::AIFF::File::properties() const -{ - return d->tag->properties(); -} - -void RIFF::AIFF::File::removeUnsupportedProperties(const StringList &unsupported) -{ - d->tag->removeUnsupportedProperties(unsupported); -} - -PropertyMap RIFF::AIFF::File::setProperties(const PropertyMap &properties) -{ - return d->tag->setProperties(properties); -} - -RIFF::AIFF::Properties *RIFF::AIFF::File::audioProperties() const -{ - return d->properties; -} - -bool RIFF::AIFF::File::save() -{ - return save(ID3v2::v4); -} - -bool RIFF::AIFF::File::save(ID3v2::Version version) -{ - if(readOnly()) { - debug("RIFF::AIFF::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("RIFF::AIFF::File::save() -- Trying to save invalid file."); - return false; - } - - if(d->hasID3v2) { - removeChunk("ID3 "); - removeChunk("id3 "); - d->hasID3v2 = false; - } - - if(tag() && !tag()->isEmpty()) { - setChunkData("ID3 ", d->tag->render(version)); - d->hasID3v2 = true; - } - - return true; -} - -bool RIFF::AIFF::File::hasID3v2Tag() const -{ - return d->hasID3v2; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::AIFF::File::read(bool readProperties) -{ - for(unsigned int i = 0; i < chunkCount(); ++i) { - const ByteVector name = chunkName(i); - if(name == "ID3 " || name == "id3 ") { - if(!d->tag) { - d->tag = new ID3v2::Tag(this, chunkOffset(i)); - d->hasID3v2 = true; - } - else { - debug("RIFF::AIFF::File::read() - Duplicate ID3v2 tag found."); - } - } - } - - if(!d->tag) - d->tag = new ID3v2::Tag(); - - if(readProperties) - d->properties = new Properties(this, Properties::Average); -} diff --git a/Frameworks/TagLib/taglib/taglib/riff/aiff/aiffproperties.cpp b/Frameworks/TagLib/taglib/taglib/riff/aiff/aiffproperties.cpp deleted file mode 100644 index fb8293d7a..000000000 --- a/Frameworks/TagLib/taglib/taglib/riff/aiff/aiffproperties.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/riff/aiff/aifffile.h> -#include <taglib/riff/aiff/aiffproperties.h> - -using namespace TagLib; - -class RIFF::AIFF::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - bitsPerSample(0), - sampleFrames(0) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int bitsPerSample; - - ByteVector compressionType; - String compressionName; - - unsigned int sampleFrames; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::AIFF::Properties::Properties(const ByteVector &, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - debug("RIFF::AIFF::Properties::Properties() - This constructor is no longer used."); -} - -RIFF::AIFF::Properties::Properties(File *file, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file); -} - -RIFF::AIFF::Properties::~Properties() -{ - delete d; -} - -int RIFF::AIFF::Properties::length() const -{ - return lengthInSeconds(); -} - -int RIFF::AIFF::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int RIFF::AIFF::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int RIFF::AIFF::Properties::bitrate() const -{ - return d->bitrate; -} - -int RIFF::AIFF::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int RIFF::AIFF::Properties::channels() const -{ - return d->channels; -} - -int RIFF::AIFF::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -int RIFF::AIFF::Properties::sampleWidth() const -{ - return bitsPerSample(); -} - -unsigned int RIFF::AIFF::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -bool RIFF::AIFF::Properties::isAiffC() const -{ - return (!d->compressionType.isEmpty()); -} - -ByteVector RIFF::AIFF::Properties::compressionType() const -{ - return d->compressionType; -} - -String RIFF::AIFF::Properties::compressionName() const -{ - return d->compressionName; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::AIFF::Properties::read(File *file) -{ - ByteVector data; - unsigned int streamLength = 0; - for(unsigned int i = 0; i < file->chunkCount(); i++) { - const ByteVector name = file->chunkName(i); - if(name == "COMM") { - if(data.isEmpty()) - data = file->chunkData(i); - else - debug("RIFF::AIFF::Properties::read() - Duplicate 'COMM' chunk found."); - } - else if(name == "SSND") { - if(streamLength == 0) - streamLength = file->chunkDataSize(i) + file->chunkPadding(i); - else - debug("RIFF::AIFF::Properties::read() - Duplicate 'SSND' chunk found."); - } - } - - if(data.size() < 18) { - debug("RIFF::AIFF::Properties::read() - 'COMM' chunk not found or too short."); - return; - } - - if(streamLength == 0) { - debug("RIFF::AIFF::Properties::read() - 'SSND' chunk not found."); - return; - } - - d->channels = data.toShort(0U); - d->sampleFrames = data.toUInt(2U); - d->bitsPerSample = data.toShort(6U); - - const long double sampleRate = data.toFloat80BE(8); - if(sampleRate >= 1.0) - d->sampleRate = static_cast<int>(sampleRate + 0.5); - - if(d->sampleFrames > 0 && d->sampleRate > 0) { - const double length = d->sampleFrames * 1000.0 / sampleRate; - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } - - if(data.size() >= 23) { - d->compressionType = data.mid(18, 4); - d->compressionName - = String(data.mid(23, static_cast<unsigned char>(data[22])), String::Latin1); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/riff/rifffile.cpp b/Frameworks/TagLib/taglib/taglib/riff/rifffile.cpp deleted file mode 100644 index b5f4bfb9f..000000000 --- a/Frameworks/TagLib/taglib/taglib/riff/rifffile.cpp +++ /dev/null @@ -1,370 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <algorithm> -#include <vector> - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> - -#include <taglib/riff/rifffile.h> -#include <taglib/riff/riffutils.h> - -using namespace TagLib; - -struct Chunk -{ - ByteVector name; - unsigned int offset; - unsigned int size; - unsigned int padding; -}; - -class RIFF::File::FilePrivate -{ -public: - FilePrivate(Endianness endianness) : - endianness(endianness), - size(0), - sizeOffset(0) {} - - const Endianness endianness; - - unsigned int size; - long sizeOffset; - - std::vector<Chunk> chunks; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::File::~File() -{ - delete d; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::File::File(FileName file, Endianness endianness) : - TagLib::File(file), - d(new FilePrivate(endianness)) -{ - if(isOpen()) - read(); -} - -RIFF::File::File(IOStream *stream, Endianness endianness) : - TagLib::File(stream), - d(new FilePrivate(endianness)) -{ - if(isOpen()) - read(); -} - -unsigned int RIFF::File::riffSize() const -{ - return d->size; -} - -unsigned int RIFF::File::chunkCount() const -{ - return static_cast<unsigned int>(d->chunks.size()); -} - -unsigned int RIFF::File::chunkDataSize(unsigned int i) const -{ - if(i >= d->chunks.size()) { - debug("RIFF::File::chunkDataSize() - Index out of range. Returning 0."); - return 0; - } - - return d->chunks[i].size; -} - -unsigned int RIFF::File::chunkOffset(unsigned int i) const -{ - if(i >= d->chunks.size()) { - debug("RIFF::File::chunkOffset() - Index out of range. Returning 0."); - return 0; - } - - return d->chunks[i].offset; -} - -unsigned int RIFF::File::chunkPadding(unsigned int i) const -{ - if(i >= d->chunks.size()) { - debug("RIFF::File::chunkPadding() - Index out of range. Returning 0."); - return 0; - } - - return d->chunks[i].padding; -} - -ByteVector RIFF::File::chunkName(unsigned int i) const -{ - if(i >= d->chunks.size()) { - debug("RIFF::File::chunkName() - Index out of range. Returning an empty vector."); - return ByteVector(); - } - - return d->chunks[i].name; -} - -ByteVector RIFF::File::chunkData(unsigned int i) -{ - if(i >= d->chunks.size()) { - debug("RIFF::File::chunkData() - Index out of range. Returning an empty vector."); - return ByteVector(); - } - - seek(d->chunks[i].offset); - return readBlock(d->chunks[i].size); -} - -void RIFF::File::setChunkData(unsigned int i, const ByteVector &data) -{ - if(i >= d->chunks.size()) { - debug("RIFF::File::setChunkData() - Index out of range."); - return; - } - - // Now update the specific chunk - - std::vector<Chunk>::iterator it = d->chunks.begin(); - std::advance(it, i); - - const long long originalSize = static_cast<long long>(it->size) + it->padding; - - writeChunk(it->name, data, it->offset - 8, it->size + it->padding + 8); - - it->size = data.size(); - it->padding = data.size() % 2; - - const long long diff = static_cast<long long>(it->size) + it->padding - originalSize; - - // Now update the internal offsets - - for(++it; it != d->chunks.end(); ++it) - it->offset += static_cast<int>(diff); - - // Update the global size. - - updateGlobalSize(); -} - -void RIFF::File::setChunkData(const ByteVector &name, const ByteVector &data) -{ - setChunkData(name, data, false); -} - -void RIFF::File::setChunkData(const ByteVector &name, const ByteVector &data, bool alwaysCreate) -{ - if(d->chunks.empty()) { - debug("RIFF::File::setChunkData - No valid chunks found."); - return; - } - - if(alwaysCreate && name != "LIST") { - debug("RIFF::File::setChunkData - alwaysCreate should be used for only \"LIST\" chunks."); - return; - } - - if(!alwaysCreate) { - for(unsigned int i = 0; i < d->chunks.size(); i++) { - if(d->chunks[i].name == name) { - setChunkData(i, data); - return; - } - } - } - - // Couldn't find an existing chunk, so let's create a new one. - - // Adjust the padding of the last chunk to place the new chunk at even position. - - Chunk &last = d->chunks.back(); - - long offset = last.offset + last.size + last.padding; - if(offset & 1) { - if(last.padding == 1) { - last.padding = 0; // This should not happen unless the file is corrupted. - offset--; - removeBlock(offset, 1); - } - else { - insert(ByteVector("\0", 1), offset, 0); - last.padding = 1; - offset++; - } - } - - // Now add the chunk to the file. - - writeChunk(name, data, offset, 0); - - // And update our internal structure - - Chunk chunk; - chunk.name = name; - chunk.size = data.size(); - chunk.offset = offset + 8; - chunk.padding = data.size() % 2; - - d->chunks.push_back(chunk); - - // Update the global size. - - updateGlobalSize(); -} - -void RIFF::File::removeChunk(unsigned int i) -{ - if(i >= d->chunks.size()) { - debug("RIFF::File::removeChunk() - Index out of range."); - return; - } - - std::vector<Chunk>::iterator it = d->chunks.begin(); - std::advance(it, i); - - const unsigned int removeSize = it->size + it->padding + 8; - removeBlock(it->offset - 8, removeSize); - it = d->chunks.erase(it); - - for(; it != d->chunks.end(); ++it) - it->offset -= removeSize; - - // Update the global size. - - updateGlobalSize(); -} - -void RIFF::File::removeChunk(const ByteVector &name) -{ - for(int i = static_cast<int>(d->chunks.size()) - 1; i >= 0; --i) { - if(d->chunks[i].name == name) - removeChunk(i); - } -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::File::read() -{ - const bool bigEndian = (d->endianness == BigEndian); - - long offset = tell(); - - offset += 4; - d->sizeOffset = offset; - - seek(offset); - d->size = readBlock(4).toUInt(bigEndian); - - offset += 8; - - // + 8: chunk header at least, fix for additional junk bytes - while(offset + 8 <= length()) { - - seek(offset); - const ByteVector chunkName = readBlock(4); - const unsigned int chunkSize = readBlock(4).toUInt(bigEndian); - - if(!isValidChunkName(chunkName)) { - debug("RIFF::File::read() -- Chunk '" + chunkName + "' has invalid ID"); - break; - } - - if(static_cast<long long>(offset) + 8 + chunkSize > length()) { - debug("RIFF::File::read() -- Chunk '" + chunkName + "' has invalid size (larger than the file size)"); - break; - } - - Chunk chunk; - chunk.name = chunkName; - chunk.size = chunkSize; - chunk.offset = offset + 8; - chunk.padding = 0; - - offset = chunk.offset + chunk.size; - - // Check padding - - if(offset & 1) { - seek(offset); - const ByteVector iByte = readBlock(1); - if(iByte.size() == 1) { - bool skipPadding = iByte[0] == '\0'; - if(!skipPadding) { - // Padding byte is not zero, check if it is good to ignore it - const ByteVector fourCcAfterPadding = readBlock(4); - if(isValidChunkName(fourCcAfterPadding)) { - // Use the padding, it is followed by a valid chunk name. - skipPadding = true; - } - } - if(skipPadding) { - chunk.padding = 1; - offset++; - } - } - } - - d->chunks.push_back(chunk); - } -} - -void RIFF::File::writeChunk(const ByteVector &name, const ByteVector &data, - unsigned long offset, unsigned long replace) -{ - ByteVector combined; - - combined.append(name); - combined.append(ByteVector::fromUInt(data.size(), d->endianness == BigEndian)); - combined.append(data); - - if(data.size() & 1) - combined.resize(combined.size() + 1, '\0'); - - insert(combined, offset, replace); -} - -void RIFF::File::updateGlobalSize() -{ - const Chunk first = d->chunks.front(); - const Chunk last = d->chunks.back(); - d->size = last.offset + last.size + last.padding - first.offset + 12; - - const ByteVector data = ByteVector::fromUInt(d->size, d->endianness == BigEndian); - insert(data, d->sizeOffset, 4); -} diff --git a/Frameworks/TagLib/taglib/taglib/riff/riffutils.h b/Frameworks/TagLib/taglib/taglib/riff/riffutils.h deleted file mode 100644 index ecb985a4b..000000000 --- a/Frameworks/TagLib/taglib/taglib/riff/riffutils.h +++ /dev/null @@ -1,60 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_RIFFUTILS_H -#define TAGLIB_RIFFUTILS_H - -// THIS FILE IS NOT A PART OF THE TAGLIB API - -#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header - -namespace TagLib -{ - namespace RIFF - { - namespace - { - - inline bool isValidChunkName(const ByteVector &name) - { - if(name.size() != 4) - return false; - - for(ByteVector::ConstIterator it = name.begin(); it != name.end(); ++it) { - const int c = static_cast<unsigned char>(*it); - if(c < 32 || 127 < c) - return false; - } - - return true; - } - - } - } -} - -#endif - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/riff/wav/infotag.cpp b/Frameworks/TagLib/taglib/taglib/riff/wav/infotag.cpp deleted file mode 100644 index 616be0cb1..000000000 --- a/Frameworks/TagLib/taglib/taglib/riff/wav/infotag.cpp +++ /dev/null @@ -1,343 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tfile.h> - -#include <taglib/riff/wav/infotag.h> -#include <taglib/riff/riffutils.h> - -using namespace TagLib; -using namespace RIFF::Info; - -namespace -{ - const RIFF::Info::StringHandler defaultStringHandler; - const RIFF::Info::StringHandler *stringHandler = &defaultStringHandler; -} - -class RIFF::Info::Tag::TagPrivate -{ -public: - FieldListMap fieldListMap; -}; - -//////////////////////////////////////////////////////////////////////////////// -// StringHandler implementation -//////////////////////////////////////////////////////////////////////////////// - -StringHandler::StringHandler() -{ -} - -StringHandler::~StringHandler() -{ -} - -String RIFF::Info::StringHandler::parse(const ByteVector &data) const -{ - return String(data, String::UTF8); -} - -ByteVector RIFF::Info::StringHandler::render(const String &s) const -{ - return s.data(String::UTF8); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::Info::Tag::Tag(const ByteVector &data) : - TagLib::Tag(), - d(new TagPrivate()) -{ - parse(data); -} - -RIFF::Info::Tag::Tag() : - TagLib::Tag(), - d(new TagPrivate()) -{ -} - -RIFF::Info::Tag::~Tag() -{ - delete d; -} - -String RIFF::Info::Tag::title() const -{ - return fieldText("INAM"); -} - -String RIFF::Info::Tag::albumartist() const -{ - return String(); -} - -String RIFF::Info::Tag::artist() const -{ - return fieldText("IART"); -} - -String RIFF::Info::Tag::composer() const -{ - return fieldText("IMUS"); -} - -String RIFF::Info::Tag::album() const -{ - return fieldText("IPRD"); -} - -String RIFF::Info::Tag::unsyncedlyrics() const -{ - return String(); -} - -String RIFF::Info::Tag::comment() const -{ - return fieldText("ICMT"); -} - -String RIFF::Info::Tag::genre() const -{ - return fieldText("IGNR"); -} - -unsigned int RIFF::Info::Tag::year() const -{ - return fieldText("ICRD").substr(0, 4).toInt(); -} - -unsigned int RIFF::Info::Tag::track() const -{ - return fieldText("IPRT").toInt(); -} - -unsigned int RIFF::Info::Tag::disc() const -{ - return 0; -} - -String RIFF::Info::Tag::cuesheet() const -{ - return String(); -} - -float RIFF::Info::Tag::rgAlbumGain() const -{ - return 0; -} - -float RIFF::Info::Tag::rgAlbumPeak() const -{ - return 0; -} - -float RIFF::Info::Tag::rgTrackGain() const -{ - return 0; -} - -float RIFF::Info::Tag::rgTrackPeak() const -{ - return 0; -} - -String RIFF::Info::Tag::soundcheck() const -{ - return String(); -} - -void RIFF::Info::Tag::setTitle(const String &s) -{ - setFieldText("INAM", s); -} - -void RIFF::Info::Tag::setAlbumArtist(const String &) -{ -} - -void RIFF::Info::Tag::setArtist(const String &s) -{ - setFieldText("IART", s); -} - -void RIFF::Info::Tag::setComposer(const String &s) -{ - setFieldText("IMUS", s); -} - -void RIFF::Info::Tag::setAlbum(const String &s) -{ - setFieldText("IPRD", s); -} - -void RIFF::Info::Tag::setUnsyncedlyrics(const String &) -{ -} - -void RIFF::Info::Tag::setComment(const String &s) -{ - setFieldText("ICMT", s); -} - -void RIFF::Info::Tag::setGenre(const String &s) -{ - setFieldText("IGNR", s); -} - -void RIFF::Info::Tag::setYear(unsigned int i) -{ - if(i != 0) - setFieldText("ICRD", String::number(i)); - else - d->fieldListMap.erase("ICRD"); -} - -void RIFF::Info::Tag::setTrack(unsigned int i) -{ - if(i != 0) - setFieldText("IPRT", String::number(i)); - else - d->fieldListMap.erase("IPRT"); -} - -void RIFF::Info::Tag::setDisc(unsigned int) -{ -} - -void RIFF::Info::Tag::setCuesheet(const String &) -{ -} - -void RIFF::Info::Tag::setRGAlbumGain(float) -{ -} - -void RIFF::Info::Tag::setRGAlbumPeak(float) -{ -} - -void RIFF::Info::Tag::setRGTrackGain(float) -{ -} - -void RIFF::Info::Tag::setRGTrackPeak(float) -{ -} - -bool RIFF::Info::Tag::isEmpty() const -{ - return d->fieldListMap.isEmpty(); -} - -FieldListMap RIFF::Info::Tag::fieldListMap() const -{ - return d->fieldListMap; -} - -String RIFF::Info::Tag::fieldText(const ByteVector &id) const -{ - if(d->fieldListMap.contains(id)) - return String(d->fieldListMap[id]); - else - return String(); -} - -void RIFF::Info::Tag::setFieldText(const ByteVector &id, const String &s) -{ - // id must be four-byte long pure ascii string. - if(!isValidChunkName(id)) - return; - - if(!s.isEmpty()) - d->fieldListMap[id] = s; - else - removeField(id); -} - -void RIFF::Info::Tag::removeField(const ByteVector &id) -{ - if(d->fieldListMap.contains(id)) - d->fieldListMap.erase(id); -} - -ByteVector RIFF::Info::Tag::render() const -{ - ByteVector data("INFO"); - - FieldListMap::ConstIterator it = d->fieldListMap.begin(); - for(; it != d->fieldListMap.end(); ++it) { - ByteVector text = stringHandler->render(it->second); - if(text.isEmpty()) - continue; - - data.append(it->first); - data.append(ByteVector::fromUInt(text.size() + 1, false)); - data.append(text); - - do { - data.append('\0'); - } while(data.size() & 1); - } - - if(data.size() == 4) - return ByteVector(); - else - return data; -} - -void RIFF::Info::Tag::setStringHandler(const StringHandler *handler) -{ - if(handler) - stringHandler = handler; - else - stringHandler = &defaultStringHandler; -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::Info::Tag::parse(const ByteVector &data) -{ - unsigned int p = 4; - while(p < data.size()) { - const unsigned int size = data.toUInt(p + 4, false); - if(size > data.size() - p - 8) - break; - - const ByteVector id = data.mid(p, 4); - if(isValidChunkName(id)) { - const String text = stringHandler->parse(data.mid(p + 8, size)); - d->fieldListMap[id] = text; - } - - p += ((size + 1) & ~1) + 8; - } -} diff --git a/Frameworks/TagLib/taglib/taglib/riff/wav/wavfile.cpp b/Frameworks/TagLib/taglib/taglib/riff/wav/wavfile.cpp deleted file mode 100644 index 4abc34b57..000000000 --- a/Frameworks/TagLib/taglib/taglib/riff/wav/wavfile.cpp +++ /dev/null @@ -1,264 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/riff/wav/wavfile.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/riff/wav/infotag.h> -#include <taglib/tagunion.h> - -using namespace TagLib; - -namespace -{ - enum { ID3v2Index = 0, InfoIndex = 1 }; -} - -class RIFF::WAV::File::FilePrivate -{ -public: - FilePrivate() : - properties(0), - hasID3v2(false), - hasInfo(false) {} - - ~FilePrivate() - { - delete properties; - } - - Properties *properties; - TagUnion tag; - - bool hasID3v2; - bool hasInfo; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool RIFF::WAV::File::isSupported(IOStream *stream) -{ - // A WAV file has to start with "RIFF????WAVE". - - const ByteVector id = Utils::readHeader(stream, 12, false); - return (id.startsWith("RIFF") && id.containsAt("WAVE", 8)); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::WAV::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - RIFF::File(file, LittleEndian), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -RIFF::WAV::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - RIFF::File(stream, LittleEndian), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -RIFF::WAV::File::~File() -{ - delete d; -} - -ID3v2::Tag *RIFF::WAV::File::tag() const -{ - return ID3v2Tag(); -} - -ID3v2::Tag *RIFF::WAV::File::ID3v2Tag() const -{ - return d->tag.access<ID3v2::Tag>(ID3v2Index, false); -} - -RIFF::Info::Tag *RIFF::WAV::File::InfoTag() const -{ - return d->tag.access<RIFF::Info::Tag>(InfoIndex, false); -} - -void RIFF::WAV::File::strip(TagTypes tags) -{ - removeTagChunks(tags); - - if(tags & ID3v2) - d->tag.set(ID3v2Index, new ID3v2::Tag()); - - if(tags & Info) - d->tag.set(InfoIndex, new RIFF::Info::Tag()); -} - -PropertyMap RIFF::WAV::File::properties() const -{ - return d->tag.properties(); -} - -void RIFF::WAV::File::removeUnsupportedProperties(const StringList &unsupported) -{ - d->tag.removeUnsupportedProperties(unsupported); -} - -PropertyMap RIFF::WAV::File::setProperties(const PropertyMap &properties) -{ - InfoTag()->setProperties(properties); - return ID3v2Tag()->setProperties(properties); -} - -RIFF::WAV::Properties *RIFF::WAV::File::audioProperties() const -{ - return d->properties; -} - -bool RIFF::WAV::File::save() -{ - return RIFF::WAV::File::save(AllTags); -} - -bool RIFF::WAV::File::save(TagTypes tags, bool stripOthers, int id3v2Version) -{ - return save(tags, - stripOthers ? StripOthers : StripNone, - id3v2Version == 3 ? ID3v2::v3 : ID3v2::v4); -} - -bool RIFF::WAV::File::save(TagTypes tags, StripTags strip, ID3v2::Version version) -{ - if(readOnly()) { - debug("RIFF::WAV::File::save() -- File is read only."); - return false; - } - - if(!isValid()) { - debug("RIFF::WAV::File::save() -- Trying to save invalid file."); - return false; - } - - if(strip == StripOthers) - File::strip(static_cast<TagTypes>(AllTags & ~tags)); - - if(tags & ID3v2) { - removeTagChunks(ID3v2); - - if(ID3v2Tag() && !ID3v2Tag()->isEmpty()) { - setChunkData("ID3 ", ID3v2Tag()->render(version)); - d->hasID3v2 = true; - } - } - - if(tags & Info) { - removeTagChunks(Info); - - if(InfoTag() && !InfoTag()->isEmpty()) { - setChunkData("LIST", InfoTag()->render(), true); - d->hasInfo = true; - } - } - - return true; -} - -bool RIFF::WAV::File::hasID3v2Tag() const -{ - return d->hasID3v2; -} - -bool RIFF::WAV::File::hasInfoTag() const -{ - return d->hasInfo; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::WAV::File::read(bool readProperties) -{ - for(unsigned int i = 0; i < chunkCount(); ++i) { - const ByteVector name = chunkName(i); - if(name == "ID3 " || name == "id3 ") { - if(!d->tag[ID3v2Index]) { - d->tag.set(ID3v2Index, new ID3v2::Tag(this, chunkOffset(i))); - d->hasID3v2 = true; - } - else { - debug("RIFF::WAV::File::read() - Duplicate ID3v2 tag found."); - } - } - else if(name == "LIST") { - const ByteVector data = chunkData(i); - if(data.startsWith("INFO")) { - if(!d->tag[InfoIndex]) { - d->tag.set(InfoIndex, new RIFF::Info::Tag(data)); - d->hasInfo = true; - } - else { - debug("RIFF::WAV::File::read() - Duplicate INFO tag found."); - } - } - } - } - - if(!d->tag[ID3v2Index]) - d->tag.set(ID3v2Index, new ID3v2::Tag()); - - if(!d->tag[InfoIndex]) - d->tag.set(InfoIndex, new RIFF::Info::Tag()); - - if(readProperties) - d->properties = new Properties(this, Properties::Average); -} - -void RIFF::WAV::File::removeTagChunks(TagTypes tags) -{ - if((tags & ID3v2) && d->hasID3v2) { - removeChunk("ID3 "); - removeChunk("id3 "); - - d->hasID3v2 = false; - } - - if((tags & Info) && d->hasInfo) { - for(int i = static_cast<int>(chunkCount()) - 1; i >= 0; --i) { - if(chunkName(i) == "LIST" && chunkData(i).startsWith("INFO")) - removeChunk(i); - } - - d->hasInfo = false; - } -} diff --git a/Frameworks/TagLib/taglib/taglib/riff/wav/wavproperties.cpp b/Frameworks/TagLib/taglib/taglib/riff/wav/wavproperties.cpp deleted file mode 100644 index 6e8170563..000000000 --- a/Frameworks/TagLib/taglib/taglib/riff/wav/wavproperties.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebug.h> -#include <taglib/riff/wav/wavfile.h> -#include <taglib/riff/wav/wavproperties.h> - -using namespace TagLib; - -namespace -{ - // Quoted from RFC 2361. - enum WaveFormat - { - FORMAT_UNKNOWN = 0x0000, - FORMAT_PCM = 0x0001, - FORMAT_IEEE_FLOAT = 0x0003 - }; -} - -class RIFF::WAV::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - format(0), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - bitsPerSample(0), - sampleFrames(0) {} - - int format; - int length; - int bitrate; - int sampleRate; - int channels; - int bitsPerSample; - unsigned int sampleFrames; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -RIFF::WAV::Properties::Properties(const ByteVector &, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - debug("RIFF::WAV::Properties::Properties() -- This constructor is no longer used."); -} - -RIFF::WAV::Properties::Properties(const ByteVector &, unsigned int, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - debug("RIFF::WAV::Properties::Properties() -- This constructor is no longer used."); -} - -TagLib::RIFF::WAV::Properties::Properties(File *file, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file); -} - -RIFF::WAV::Properties::~Properties() -{ - delete d; -} - -int RIFF::WAV::Properties::length() const -{ - return lengthInSeconds(); -} - -int RIFF::WAV::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int RIFF::WAV::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int RIFF::WAV::Properties::bitrate() const -{ - return d->bitrate; -} - -int RIFF::WAV::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int RIFF::WAV::Properties::channels() const -{ - return d->channels; -} - -int RIFF::WAV::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -int RIFF::WAV::Properties::sampleWidth() const -{ - return bitsPerSample(); -} - -unsigned int RIFF::WAV::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -int RIFF::WAV::Properties::format() const -{ - return d->format; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void RIFF::WAV::Properties::read(File *file) -{ - ByteVector data; - unsigned int streamLength = 0; - unsigned int totalSamples = 0; - - for(unsigned int i = 0; i < file->chunkCount(); ++i) { - const ByteVector name = file->chunkName(i); - if(name == "fmt ") { - if(data.isEmpty()) - data = file->chunkData(i); - else - debug("RIFF::WAV::Properties::read() - Duplicate 'fmt ' chunk found."); - } - else if(name == "data") { - if(streamLength == 0) - streamLength = file->chunkDataSize(i) + file->chunkPadding(i); - else - debug("RIFF::WAV::Properties::read() - Duplicate 'data' chunk found."); - } - else if(name == "fact") { - if(totalSamples == 0) - totalSamples = file->chunkData(i).toUInt(0, false); - else - debug("RIFF::WAV::Properties::read() - Duplicate 'fact' chunk found."); - } - } - - if(data.size() < 16) { - debug("RIFF::WAV::Properties::read() - 'fmt ' chunk not found or too short."); - return; - } - - if(streamLength == 0) { - debug("RIFF::WAV::Properties::read() - 'data' chunk not found."); - return; - } - - d->format = data.toShort(0, false); - if((d->format & 0xffff) == 0xfffe) { - // if extensible then read the format from the subformat - if(data.size() != 40) { - debug("RIFF::WAV::Properties::read() - extensible size incorrect"); - return; - } - d->format = data.toShort(24, false); - } - if(d->format != FORMAT_PCM && d->format != FORMAT_IEEE_FLOAT && totalSamples == 0) { - debug("RIFF::WAV::Properties::read() - Non-PCM format, but 'fact' chunk not found."); - return; - } - - d->channels = data.toShort(2, false); - d->sampleRate = data.toUInt(4, false); - d->bitsPerSample = data.toShort(14, false); - - if(d->format != FORMAT_PCM && !(d->format == FORMAT_IEEE_FLOAT && totalSamples == 0)) - d->sampleFrames = totalSamples; - else if(d->channels > 0 && d->bitsPerSample > 0) - d->sampleFrames = streamLength / (d->channels * ((d->bitsPerSample + 7) / 8)); - - if(d->sampleFrames > 0 && d->sampleRate > 0) { - const double length = d->sampleFrames * 1000.0 / d->sampleRate; - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } - else { - const unsigned int byteRate = data.toUInt(8, false); - if(byteRate > 0) { - d->length = static_cast<int>(streamLength * 1000.0 / byteRate + 0.5); - d->bitrate = static_cast<int>(byteRate * 8.0 / 1000.0 + 0.5); - } - } -} diff --git a/Frameworks/TagLib/taglib/taglib/s3m/s3mfile.cpp b/Frameworks/TagLib/taglib/taglib/s3m/s3mfile.cpp deleted file mode 100644 index 9448bcfc3..000000000 --- a/Frameworks/TagLib/taglib/taglib/s3m/s3mfile.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/s3m/s3mfile.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/mod/modfileprivate.h> -#include <taglib/toolkit/tpropertymap.h> - -#include <iostream> - -using namespace TagLib; -using namespace S3M; - -class S3M::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : properties(propertiesStyle) - { - } - - Mod::Tag tag; - S3M::Properties properties; -}; - -S3M::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -S3M::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -S3M::File::~File() -{ - delete d; -} - -Mod::Tag *S3M::File::tag() const -{ - return &d->tag; -} - -PropertyMap S3M::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap S3M::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -S3M::Properties *S3M::File::audioProperties() const -{ - return &d->properties; -} - -bool S3M::File::save() -{ - if(readOnly()) { - debug("S3M::File::save() - Cannot save to a read only file."); - return false; - } - // note: if title starts with "Extended Module: " - // the file would look like an .xm file - seek(0); - writeString(d->tag.title(), 27); - // string terminating NUL is not optional: - writeByte(0); - - seek(32); - - unsigned short length = 0; - unsigned short sampleCount = 0; - - if(!readU16L(length) || !readU16L(sampleCount)) - return false; - - seek(28, Current); - - int channels = 0; - for(int i = 0; i < 32; ++ i) { - unsigned char setting = 0; - if(!readByte(setting)) - return false; - // or if(setting >= 128)? - // or channels = i + 1;? - // need a better spec! - if(setting != 0xff) ++ channels; - } - - seek(channels, Current); - - StringList lines = d->tag.comment().split("\n"); - // write comment as sample names: - for(unsigned short i = 0; i < sampleCount; ++ i) { - seek(96L + length + ((long)i << 1)); - - unsigned short instrumentOffset = 0; - if(!readU16L(instrumentOffset)) - return false; - seek(((long)instrumentOffset << 4) + 48); - - if(i < lines.size()) - writeString(lines[i], 27); - else - writeString(String(), 27); - // string terminating NUL is not optional: - writeByte(0); - } - return true; -} - -void S3M::File::read(bool) -{ - if(!isOpen()) - return; - - READ_STRING(d->tag.setTitle, 28); - READ_BYTE_AS(mark); - READ_BYTE_AS(type); - - READ_ASSERT(mark == 0x1A && type == 0x10); - - seek(32); - - READ_U16L_AS(length); - READ_U16L_AS(sampleCount); - - d->properties.setSampleCount(sampleCount); - - READ_U16L(d->properties.setPatternCount); - READ_U16L(d->properties.setFlags); - READ_U16L(d->properties.setTrackerVersion); - READ_U16L(d->properties.setFileFormatVersion); - - READ_ASSERT(readBlock(4) == "SCRM"); - - READ_BYTE(d->properties.setGlobalVolume); - READ_BYTE(d->properties.setBpmSpeed); - READ_BYTE(d->properties.setTempo); - - READ_BYTE_AS(masterVolume); - d->properties.setMasterVolume(masterVolume & 0x7f); - d->properties.setStereo((masterVolume & 0x80) != 0); - - // I've seen players who call the next two bytes - // "ultra click" and "use panning values" (if == 0xFC). - // I don't see them in any spec, though. - // Hm, but there is "UltraClick-removal" and some other - // variables in ScreamTracker III's GUI. - - seek(12, Current); - - int channels = 0; - for(int i = 0; i < 32; ++ i) { - READ_BYTE_AS(setting); - // or if(setting >= 128)? - // or channels = i + 1;? - // need a better spec! - if(setting != 0xff) ++ channels; - } - d->properties.setChannels(channels); - - seek(96); - unsigned short realLength = 0; - for(unsigned short i = 0; i < length; ++ i) { - READ_BYTE_AS(order); - if(order == 255) break; - if(order != 254) ++ realLength; - } - d->properties.setLengthInPatterns(realLength); - - seek(channels, Current); - - // Note: The S3M spec mentions samples and instruments, but in - // the header there are only pointers to instruments. - // However, there I never found instruments (SCRI) but - // instead samples (SCRS). - StringList comment; - for(unsigned short i = 0; i < sampleCount; ++ i) { - seek(96L + length + ((long)i << 1)); - - READ_U16L_AS(sampleHeaderOffset); - seek((long)sampleHeaderOffset << 4); - - READ_BYTE_AS(sampleType); - READ_STRING_AS(dosFileName, 13); - READ_U16L_AS(sampleDataOffset); - READ_U32L_AS(sampleLength); - READ_U32L_AS(repeatStart); - READ_U32L_AS(repeatStop); - READ_BYTE_AS(sampleVolume); - - seek(1, Current); - - READ_BYTE_AS(packing); - READ_BYTE_AS(sampleFlags); - READ_U32L_AS(baseFrequency); - - seek(12, Current); - - READ_STRING_AS(sampleName, 28); - // The next 4 bytes should be "SCRS", but I've found - // files that are otherwise ok with 4 nils instead. - // READ_ASSERT(readBlock(4) == "SCRS"); - - comment.append(sampleName); - } - - d->tag.setComment(comment.toString("\n")); - d->tag.setTrackerName("ScreamTracker III"); -} diff --git a/Frameworks/TagLib/taglib/taglib/s3m/s3mproperties.cpp b/Frameworks/TagLib/taglib/taglib/s3m/s3mproperties.cpp deleted file mode 100644 index 3404965a2..000000000 --- a/Frameworks/TagLib/taglib/taglib/s3m/s3mproperties.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/s3m/s3mproperties.h> - -using namespace TagLib; -using namespace S3M; - -class S3M::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - lengthInPatterns(0), - channels(0), - stereo(false), - sampleCount(0), - patternCount(0), - flags(0), - trackerVersion(0), - fileFormatVersion(0), - globalVolume(0), - masterVolume(0), - tempo(0), - bpmSpeed(0) - { - } - - unsigned short lengthInPatterns; - int channels; - bool stereo; - unsigned short sampleCount; - unsigned short patternCount; - unsigned short flags; - unsigned short trackerVersion; - unsigned short fileFormatVersion; - unsigned char globalVolume; - unsigned char masterVolume; - unsigned char tempo; - unsigned char bpmSpeed; -}; - -S3M::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate()) -{ -} - -S3M::Properties::~Properties() -{ - delete d; -} - -int S3M::Properties::length() const -{ - return 0; -} - -int S3M::Properties::lengthInSeconds() const -{ - return 0; -} - -int S3M::Properties::lengthInMilliseconds() const -{ - return 0; -} - -int S3M::Properties::bitrate() const -{ - return 0; -} - -int S3M::Properties::sampleRate() const -{ - return 0; -} - -int S3M::Properties::channels() const -{ - return d->channels; -} - -unsigned short S3M::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -bool S3M::Properties::stereo() const -{ - return d->stereo; -} - -unsigned short S3M::Properties::sampleCount() const -{ - return d->sampleCount; -} - -unsigned short S3M::Properties::patternCount() const -{ - return d->patternCount; -} - -unsigned short S3M::Properties::flags() const -{ - return d->flags; -} - -unsigned short S3M::Properties::trackerVersion() const -{ - return d->trackerVersion; -} - -unsigned short S3M::Properties::fileFormatVersion() const -{ - return d->fileFormatVersion; -} - -unsigned char S3M::Properties::globalVolume() const -{ - return d->globalVolume; -} - -unsigned char S3M::Properties::masterVolume() const -{ - return d->masterVolume; -} - -unsigned char S3M::Properties::tempo() const -{ - return d->tempo; -} - -unsigned char S3M::Properties::bpmSpeed() const -{ - return d->bpmSpeed; -} - -void S3M::Properties::setLengthInPatterns(unsigned short lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} - -void S3M::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void S3M::Properties::setStereo(bool stereo) -{ - d->stereo = stereo; -} - -void S3M::Properties::setSampleCount(unsigned short sampleCount) -{ - d->sampleCount = sampleCount; -} - -void S3M::Properties::setPatternCount(unsigned short patternCount) -{ - d->patternCount = patternCount; -} - -void S3M::Properties::setFlags(unsigned short flags) -{ - d->flags = flags; -} - -void S3M::Properties::setTrackerVersion(unsigned short trackerVersion) -{ - d->trackerVersion = trackerVersion; -} - -void S3M::Properties::setFileFormatVersion(unsigned short fileFormatVersion) -{ - d->fileFormatVersion = fileFormatVersion; -} - -void S3M::Properties::setGlobalVolume(unsigned char globalVolume) -{ - d->globalVolume = globalVolume; -} - -void S3M::Properties::setMasterVolume(unsigned char masterVolume) -{ - d->masterVolume = masterVolume; -} - -void S3M::Properties::setTempo(unsigned char tempo) -{ - d->tempo = tempo; -} - -void S3M::Properties::setBpmSpeed(unsigned char bpmSpeed) -{ - d->bpmSpeed = bpmSpeed; -} diff --git a/Frameworks/TagLib/taglib/taglib/tag.cpp b/Frameworks/TagLib/taglib/taglib/tag.cpp deleted file mode 100644 index 19262b8e6..000000000 --- a/Frameworks/TagLib/taglib/taglib/tag.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/tag.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tpropertymap.h> - -using namespace TagLib; - -class Tag::TagPrivate -{ - -}; - -Tag::Tag() -{ - -} - -Tag::~Tag() -{ - -} - -bool Tag::isEmpty() const -{ - return (title().isEmpty() && - albumartist().isEmpty() && - artist().isEmpty() && - composer().isEmpty() && - album().isEmpty() && - unsyncedlyrics().isEmpty() && - comment().isEmpty() && - genre().isEmpty() && - year() == 0 && - track() == 0 && - disc() == 0); -} - -PropertyMap Tag::properties() const -{ - PropertyMap map; - if(!(title().isEmpty())) - map["TITLE"].append(title()); - if(!(albumartist().isEmpty())) - map["ALBUMARTIST"].append(albumartist()); - if(!(artist().isEmpty())) - map["ARTIST"].append(artist()); - if(!(composer().isEmpty())) - map["COMPOSER"].append(composer()); - if(!(album().isEmpty())) - map["ALBUM"].append(album()); - if(!(unsyncedlyrics().isEmpty())) - map["UNSYNCEDLYRICS"].append(unsyncedlyrics()); - if(!(comment().isEmpty())) - map["COMMENT"].append(comment()); - if(!(genre().isEmpty())) - map["GENRE"].append(genre()); - if(!(year() == 0)) - map["DATE"].append(String::number(year())); - if(!(track() == 0)) - map["TRACKNUMBER"].append(String::number(track())); - if (!(disc() == 0)) - map["DISCNUMBER"].append(String::number(disc())); - return map; -} - -void Tag::removeUnsupportedProperties(const StringList&) -{ -} - -PropertyMap Tag::setProperties(const PropertyMap &origProps) -{ - PropertyMap properties(origProps); - properties.removeEmpty(); - StringList oneValueSet; - // can this be simplified by using some preprocessor defines / function pointers? - if(properties.contains("TITLE")) { - setTitle(properties["TITLE"].front()); - oneValueSet.append("TITLE"); - } else - setTitle(String()); - - if(properties.contains("ALBUMARTIST") || - properties.contains("ALBUM ARTIST")) { - if (properties.contains("ALBUMARTIST")) - setAlbumArtist(properties["ALBUMARTIST"].front()); - else - setAlbumArtist(properties["ALBUM ARTIST"].front()); - oneValueSet.append("ALBUMARTIST"); - } else - setAlbumArtist(String()); - - if(properties.contains("ARTIST")) { - setArtist(properties["ARTIST"].front()); - oneValueSet.append("ARTIST"); - } else - setArtist(String()); - - if(properties.contains("COMPOSER")) { - setComposer(properties["COMPOSER"].front()); - oneValueSet.append("COMPOSER"); - } else - setComposer(String()); - - if(properties.contains("ALBUM")) { - setAlbum(properties["ALBUM"].front()); - oneValueSet.append("ALBUM"); - } else - setAlbum(String()); - - if(properties.contains("UNSYNCEDLYRICS") || - properties.contains("UNSYNCED LYRICS") || - properties.contains("LYRICS")) { - if(properties.contains("UNSYNCEDLYRICS")) - setUnsyncedlyrics(properties["UNSYNCEDLYRICS"].front()); - else if(properties.contains("UNSYNCED LYRICS")) - setUnsyncedlyrics(properties["UNSYNCED LYRICS"].front()); - else - setUnsyncedlyrics(properties["LYRICS"].front()); - oneValueSet.append("UNSYNCEDLYRICS"); - } - - if(properties.contains("COMMENT")) { - setComment(properties["COMMENT"].front()); - oneValueSet.append("COMMENT"); - } else - setComment(String()); - - if(properties.contains("GENRE")) { - setGenre(properties["GENRE"].front()); - oneValueSet.append("GENRE"); - } else - setGenre(String()); - - if(properties.contains("DATE")) { - bool ok; - int date = properties["DATE"].front().toInt(&ok); - if(ok) { - setYear(date); - oneValueSet.append("DATE"); - } else - setYear(0); - } - else - setYear(0); - - if(properties.contains("TRACKNUMBER")) { - bool ok; - int track = properties["TRACKNUMBER"].front().toInt(&ok); - if(ok) { - setTrack(track); - oneValueSet.append("TRACKNUMBER"); - } else - setTrack(0); - } - else - setTrack(0); - - if(properties.contains("DISCNUMBER")) { - bool ok; - int disc = properties["DISCNUMBER"].front().toInt(&ok); - if(ok) { - setDisc(disc); - oneValueSet.append("DISCNUMBER"); - } else - setDisc(0); - } - else - setDisc(0); - - // for each tag that has been set above, remove the first entry in the corresponding - // value list. The others will be returned as unsupported by this format. - for(StringList::ConstIterator it = oneValueSet.begin(); it != oneValueSet.end(); ++it) { - if(properties[*it].size() == 1) - properties.erase(*it); - else - properties[*it].erase( properties[*it].begin() ); - } - return properties; -} - -void Tag::duplicate(const Tag *source, Tag *target, bool overwrite) // static -{ - if(overwrite) { - target->setTitle(source->title()); - target->setAlbumArtist(source->albumartist()); - target->setArtist(source->artist()); - target->setComposer(source->composer()); - target->setAlbum(source->album()); - target->setUnsyncedlyrics(source->unsyncedlyrics()); - target->setComment(source->comment()); - target->setGenre(source->genre()); - target->setYear(source->year()); - target->setTrack(source->track()); - target->setDisc(source->disc()); - } - else { - if(target->title().isEmpty()) - target->setTitle(source->title()); - if(target->albumartist().isEmpty()) - target->setAlbumArtist(source->albumartist()); - if(target->artist().isEmpty()) - target->setArtist(source->artist()); - if(target->composer().isEmpty()) - target->setComposer(source->composer()); - if(target->album().isEmpty()) - target->setAlbum(source->album()); - if(target->unsyncedlyrics().isEmpty()) - target->setUnsyncedlyrics(source->unsyncedlyrics()); - if(target->comment().isEmpty()) - target->setComment(source->comment()); - if(target->genre().isEmpty()) - target->setGenre(source->genre()); - if(target->year() <= 0) - target->setYear(source->year()); - if(target->track() <= 0) - target->setTrack(source->track()); - if(target->disc() <= 0) - target->setDisc(source->disc()); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/taglib_config.h.cmake b/Frameworks/TagLib/taglib/taglib/taglib_config.h.cmake deleted file mode 100644 index 915f130aa..000000000 --- a/Frameworks/TagLib/taglib/taglib/taglib_config.h.cmake +++ /dev/null @@ -1,11 +0,0 @@ -/* taglib_config.h. Generated by cmake from taglib_config.h.cmake */ - -#ifndef TAGLIB_TAGLIB_CONFIG_H -#define TAGLIB_TAGLIB_CONFIG_H - -/* These values are no longer used. This file is present only for compatibility reasons. */ - -#define TAGLIB_WITH_ASF 1 -#define TAGLIB_WITH_MP4 1 - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/tagunion.cpp b/Frameworks/TagLib/taglib/taglib/tagunion.cpp deleted file mode 100644 index 3faa15f81..000000000 --- a/Frameworks/TagLib/taglib/taglib/tagunion.cpp +++ /dev/null @@ -1,345 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/tagunion.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tpropertymap.h> - -#include <taglib/ape/apetag.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/riff/wav/infotag.h> - -using namespace TagLib; - -#define stringUnion(method) \ - if(tag(0) && !tag(0)->method().isEmpty()) \ - return tag(0)->method(); \ - if(tag(1) && !tag(1)->method().isEmpty()) \ - return tag(1)->method(); \ - if(tag(2) && !tag(2)->method().isEmpty()) \ - return tag(2)->method(); \ - return String(); \ - -#define numberUnion(method) \ - if(tag(0) && tag(0)->method() > 0) \ - return tag(0)->method(); \ - if(tag(1) && tag(1)->method() > 0) \ - return tag(1)->method(); \ - if(tag(2) && tag(2)->method() > 0) \ - return tag(2)->method(); \ - return 0 - -#define floatUnion(method) \ - if(tag(0) && tag(0)->method() != 0) \ - return tag(0)->method(); \ - if(tag(1) && tag(1)->method() != 0) \ - return tag(1)->method(); \ - if(tag(2) && tag(2)->method() != 0) \ - return tag(2)->method(); \ - return 0 - -#define setUnion(method, value) \ - if(tag(0)) \ - tag(0)->set##method(value); \ - if(tag(1)) \ - tag(1)->set##method(value); \ - if(tag(2)) \ - tag(2)->set##method(value); \ - -class TagUnion::TagUnionPrivate -{ -public: - TagUnionPrivate() : tags(3, static_cast<Tag *>(0)) - { - - } - - ~TagUnionPrivate() - { - delete tags[0]; - delete tags[1]; - delete tags[2]; - } - - std::vector<Tag *> tags; -}; - -TagUnion::TagUnion(Tag *first, Tag *second, Tag *third) : - d(new TagUnionPrivate()) -{ - d->tags[0] = first; - d->tags[1] = second; - d->tags[2] = third; -} - -TagUnion::~TagUnion() -{ - delete d; -} - -Tag *TagUnion::operator[](int index) const -{ - return tag(index); -} - -Tag *TagUnion::tag(int index) const -{ - return d->tags[index]; -} - -void TagUnion::set(int index, Tag *tag) -{ - delete d->tags[index]; - d->tags[index] = tag; -} - -PropertyMap TagUnion::properties() const -{ - // This is an ugly workaround but we can't add a virtual function. - // Should be virtual in taglib2. - - for(size_t i = 0; i < 3; ++i) { - - if(d->tags[i] && !d->tags[i]->isEmpty()) { - - if(dynamic_cast<const ID3v1::Tag *>(d->tags[i])) - return dynamic_cast<const ID3v1::Tag *>(d->tags[i])->properties(); - - else if(dynamic_cast<const ID3v2::Tag *>(d->tags[i])) - return dynamic_cast<const ID3v2::Tag *>(d->tags[i])->properties(); - - else if(dynamic_cast<const APE::Tag *>(d->tags[i])) - return dynamic_cast<const APE::Tag *>(d->tags[i])->properties(); - - else if(dynamic_cast<const RIFF::Info::Tag *>(d->tags[i])) - return dynamic_cast<const RIFF::Info::Tag *>(d->tags[i])->properties(); - } - } - - return PropertyMap(); -} - -void TagUnion::removeUnsupportedProperties(const StringList &unsupported) -{ - // This is an ugly workaround but we can't add a virtual function. - // Should be virtual in taglib2. - - for(size_t i = 0; i < 3; ++i) { - - if(d->tags[i]) { - - if(dynamic_cast<ID3v1::Tag *>(d->tags[i])) - dynamic_cast<ID3v1::Tag *>(d->tags[i])->removeUnsupportedProperties(unsupported); - - else if(dynamic_cast<ID3v2::Tag *>(d->tags[i])) - dynamic_cast<ID3v2::Tag *>(d->tags[i])->removeUnsupportedProperties(unsupported); - - else if(dynamic_cast<APE::Tag *>(d->tags[i])) - dynamic_cast<APE::Tag *>(d->tags[i])->removeUnsupportedProperties(unsupported); - - else if(dynamic_cast<RIFF::Info::Tag *>(d->tags[i])) - dynamic_cast<RIFF::Info::Tag *>(d->tags[i])->removeUnsupportedProperties(unsupported); - } - } -} - -String TagUnion::title() const -{ - stringUnion(title); -} - -String TagUnion::albumartist() const -{ - stringUnion(albumartist); -} - -String TagUnion::artist() const -{ - stringUnion(artist); -} - -String TagUnion::composer() const -{ - stringUnion(composer); -} - -String TagUnion::album() const -{ - stringUnion(album); -} - -String TagUnion::unsyncedlyrics() const -{ - stringUnion(unsyncedlyrics); -} - -String TagUnion::comment() const -{ - stringUnion(comment); -} - -String TagUnion::genre() const -{ - stringUnion(genre); -} - -unsigned int TagUnion::year() const -{ - numberUnion(year); -} - -unsigned int TagUnion::track() const -{ - numberUnion(track); -} - -unsigned int TagUnion::disc() const -{ - numberUnion(disc); -} - -String TagUnion::cuesheet() const -{ - stringUnion(cuesheet); -} - -float TagUnion::rgAlbumGain() const -{ - floatUnion(rgAlbumGain); -} - -float TagUnion::rgAlbumPeak() const -{ - floatUnion(rgAlbumPeak); -} - -float TagUnion::rgTrackGain() const -{ - floatUnion(rgTrackGain); -} - -float TagUnion::rgTrackPeak() const -{ - floatUnion(rgTrackPeak); -} - -String TagUnion::soundcheck() const -{ - stringUnion(soundcheck); -} - -void TagUnion::setTitle(const String &s) -{ - setUnion(Title, s); -} - -void TagUnion::setAlbumArtist(const String &s) -{ - setUnion(AlbumArtist, s); -} - -void TagUnion::setArtist(const String &s) -{ - setUnion(Artist, s); -} - -void TagUnion::setComposer(const String &s) -{ - setUnion(Composer, s); -} - -void TagUnion::setAlbum(const String &s) -{ - setUnion(Album, s); -} - -void TagUnion::setUnsyncedlyrics(const String &s) -{ - setUnion(Unsyncedlyrics, s); -} - -void TagUnion::setComment(const String &s) -{ - setUnion(Comment, s); -} - -void TagUnion::setGenre(const String &s) -{ - setUnion(Genre, s); -} - -void TagUnion::setYear(unsigned int i) -{ - setUnion(Year, i); -} - -void TagUnion::setTrack(unsigned int i) -{ - setUnion(Track, i); -} - -void TagUnion::setDisc(unsigned int i) -{ - setUnion(Disc, i); -} - -void TagUnion::setCuesheet(const String &s) -{ - setUnion(Cuesheet, s); -} - -void TagUnion::setRGAlbumGain(float f) -{ - setUnion(RGAlbumGain, f); -} - -void TagUnion::setRGAlbumPeak(float f) -{ - setUnion(RGAlbumPeak, f); -} - -void TagUnion::setRGTrackGain(float f) -{ - setUnion(RGTrackGain, f); -} - -void TagUnion::setRGTrackPeak(float f) -{ - setUnion(RGTrackPeak, f); -} - -bool TagUnion::isEmpty() const -{ - if(d->tags[0] && !d->tags[0]->isEmpty()) - return false; - if(d->tags[1] && !d->tags[1]->isEmpty()) - return false; - if(d->tags[2] && !d->tags[2]->isEmpty()) - return false; - - return true; -} - diff --git a/Frameworks/TagLib/taglib/taglib/tagunion.h b/Frameworks/TagLib/taglib/taglib/tagunion.h deleted file mode 100644 index 207d81812..000000000 --- a/Frameworks/TagLib/taglib/taglib/tagunion.h +++ /dev/null @@ -1,117 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TAGUNION_H -#define TAGLIB_TAGUNION_H - -#include <taglib/tag.h> - -#ifndef DO_NOT_DOCUMENT - -namespace TagLib { - - /*! - * \internal - */ - - class TagUnion : public Tag - { - public: - - enum AccessType { Read, Write }; - - /*! - * Creates a TagLib::Tag that is the union of \a first, \a second, and - * \a third. The TagUnion takes ownership of these tags and will handle - * their deletion. - */ - TagUnion(Tag *first = 0, Tag *second = 0, Tag *third = 0); - - virtual ~TagUnion(); - - Tag *operator[](int index) const; - Tag *tag(int index) const; - - void set(int index, Tag *tag); - - PropertyMap properties() const; - void removeUnsupportedProperties(const StringList &unsupported); - - virtual String title() const; - virtual String albumartist() const; - virtual String artist() const; - virtual String composer() const; - virtual String album() const; - virtual String unsyncedlyrics() const; - virtual String comment() const; - virtual String genre() const; - virtual unsigned int year() const; - virtual unsigned int track() const; - virtual unsigned int disc() const; - virtual String cuesheet() const; - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; - - virtual void setTitle(const String &s); - virtual void setAlbumArtist(const String &s); - virtual void setArtist(const String &s); - virtual void setComposer(const String &s); - virtual void setAlbum(const String &s); - virtual void setUnsyncedlyrics(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(unsigned int i); - virtual void setTrack(unsigned int i); - virtual void setDisc(unsigned int i); - virtual void setCuesheet(const String &s); - virtual void setRGAlbumGain(float f); - virtual void setRGAlbumPeak(float f); - virtual void setRGTrackGain(float f); - virtual void setRGTrackPeak(float f); - virtual bool isEmpty() const; - - template <class T> T *access(int index, bool create) - { - if(!create || tag(index)) - return static_cast<T *>(tag(index)); - - set(index, new T); - return static_cast<T *>(tag(index)); - } - - private: - TagUnion(const Tag &); - TagUnion &operator=(const Tag &); - - class TagUnionPrivate; - TagUnionPrivate *d; - }; -} - -#endif -#endif diff --git a/Frameworks/TagLib/taglib/taglib/tagutils.cpp b/Frameworks/TagLib/taglib/taglib/tagutils.cpp deleted file mode 100644 index 11b5e9053..000000000 --- a/Frameworks/TagLib/taglib/taglib/tagutils.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tfile.h> - -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/ape/apetag.h> - -#include <taglib/tagutils.h> - -using namespace TagLib; - -long Utils::findID3v1(File *file) -{ - if(!file->isValid()) - return -1; - - file->seek(-128, File::End); - const long p = file->tell(); - - if(file->readBlock(3) == ID3v1::Tag::fileIdentifier()) - return p; - - return -1; -} - -long Utils::findID3v2(File *file) -{ - if(!file->isValid()) - return -1; - - file->seek(0); - - if(file->readBlock(3) == ID3v2::Header::fileIdentifier()) - return 0; - - return -1; -} - -long Utils::findAPE(File *file, long id3v1Location) -{ - if(!file->isValid()) - return -1; - - if(id3v1Location >= 0) - file->seek(id3v1Location - 32, File::Beginning); - else - file->seek(-32, File::End); - - const long p = file->tell(); - - if(file->readBlock(8) == APE::Tag::fileIdentifier()) - return p; - - return -1; -} - -ByteVector TagLib::Utils::readHeader(IOStream *stream, unsigned int length, - bool skipID3v2, long *headerOffset) -{ - if(!stream || !stream->isOpen()) - return ByteVector(); - - const long originalPosition = stream->tell(); - long bufferOffset = 0; - - if(skipID3v2) { - stream->seek(0); - const ByteVector data = stream->readBlock(ID3v2::Header::size()); - if(data.startsWith(ID3v2::Header::fileIdentifier())) - bufferOffset = ID3v2::Header(data).completeTagSize(); - } - - stream->seek(bufferOffset); - const ByteVector header = stream->readBlock(length); - stream->seek(originalPosition); - - if(headerOffset) - *headerOffset = bufferOffset; - - return header; -} diff --git a/Frameworks/TagLib/taglib/taglib/tagutils.h b/Frameworks/TagLib/taglib/taglib/tagutils.h deleted file mode 100644 index aae8c0460..000000000 --- a/Frameworks/TagLib/taglib/taglib/tagutils.h +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TAGUTILS_H -#define TAGLIB_TAGUTILS_H - -// THIS FILE IS NOT A PART OF THE TAGLIB API - -#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header - -#include <taglib/toolkit/tbytevector.h> - -namespace TagLib { - - class File; - class IOStream; - - namespace Utils { - - long findID3v1(File *file); - - long findID3v2(File *file); - - long findAPE(File *file, long id3v1Location); - - ByteVector readHeader(IOStream *stream, unsigned int length, bool skipID3v2, - long *headerOffset = 0); - } -} - -#endif - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevector.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tbytevector.cpp deleted file mode 100644 index 505084a45..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevector.cpp +++ /dev/null @@ -1,1044 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <algorithm> -#include <iostream> -#include <limits> -#include <cmath> -#include <cstdio> -#include <cstring> - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/trefcounter.h> -#include <taglib/toolkit/tutils.h> - -#include <taglib/toolkit/tbytevector.h> - -// This is a bit ugly to keep writing over and over again. - -// A rather obscure feature of the C++ spec that I hadn't thought of that makes -// working with C libs much more efficient. There's more here: -// -// http://www.informit.com/isapi/product_id~{9C84DAB4-FE6E-49C5-BB0A-FB50331233EA}/content/index.asp - -namespace TagLib { - -template <class TIterator> -int findChar( - const TIterator dataBegin, const TIterator dataEnd, - char c, unsigned int offset, int byteAlign) -{ - const size_t dataSize = dataEnd - dataBegin; - if(offset + 1 > dataSize) - return -1; - - // n % 0 is invalid - - if(byteAlign == 0) - return -1; - - for(TIterator it = dataBegin + offset; it < dataEnd; it += byteAlign) { - if(*it == c) - return static_cast<int>(it - dataBegin); - } - - return -1; -} - -template <class TIterator> -int findVector( - const TIterator dataBegin, const TIterator dataEnd, - const TIterator patternBegin, const TIterator patternEnd, - unsigned int offset, int byteAlign) -{ - const size_t dataSize = dataEnd - dataBegin; - const size_t patternSize = patternEnd - patternBegin; - if(patternSize == 0 || offset + patternSize > dataSize) - return -1; - - // Special case that pattern contains just single char. - - if(patternSize == 1) - return findChar(dataBegin, dataEnd, *patternBegin, offset, byteAlign); - - // n % 0 is invalid - - if(byteAlign == 0) - return -1; - - // We don't use sophisticated algorithms like Knuth-Morris-Pratt here. - - // In the current implementation of TagLib, data and patterns are too small - // for such algorithms to work effectively. - - for(TIterator it = dataBegin + offset; it < dataEnd - patternSize + 1; it += byteAlign) { - - TIterator itData = it; - TIterator itPattern = patternBegin; - - while(*itData == *itPattern) { - ++itData; - ++itPattern; - - if(itPattern == patternEnd) - return static_cast<int>(it - dataBegin); - } - } - - return -1; -} - -template <class T> -T toNumber(const ByteVector &v, size_t offset, size_t length, bool mostSignificantByteFirst) -{ - if(offset >= v.size()) { - debug("toNumber<T>() -- No data to convert. Returning 0."); - return 0; - } - - length = std::min(length, v.size() - offset); - - T sum = 0; - for(size_t i = 0; i < length; i++) { - const size_t shift = (mostSignificantByteFirst ? length - 1 - i : i) * 8; - sum |= static_cast<T>(static_cast<unsigned char>(v[static_cast<int>(offset + i)])) << shift; - } - - return sum; -} - -template <class T> -T toNumber(const ByteVector &v, size_t offset, bool mostSignificantByteFirst) -{ - const bool isBigEndian = (Utils::systemByteOrder() == Utils::BigEndian); - const bool swap = (mostSignificantByteFirst != isBigEndian); - - if(offset + sizeof(T) > v.size()) - return toNumber<T>(v, offset, v.size() - offset, mostSignificantByteFirst); - - // Uses memcpy instead of reinterpret_cast to avoid an alignment exception. - T tmp; - ::memcpy(&tmp, v.data() + offset, sizeof(T)); - - if(swap) - return Utils::byteSwap(tmp); - else - return tmp; -} - -template <class T> -ByteVector fromNumber(T value, bool mostSignificantByteFirst) -{ - const bool isBigEndian = (Utils::systemByteOrder() == Utils::BigEndian); - const bool swap = (mostSignificantByteFirst != isBigEndian); - - if(swap) - value = Utils::byteSwap(value); - - return ByteVector(reinterpret_cast<const char *>(&value), sizeof(T)); -} - -template <typename TFloat, typename TInt, Utils::ByteOrder ENDIAN> -TFloat toFloat(const ByteVector &v, size_t offset) -{ - if(offset > v.size() - sizeof(TInt)) { - debug("toFloat() - offset is out of range. Returning 0."); - return 0.0; - } - - union { - TInt i; - TFloat f; - } tmp; - ::memcpy(&tmp, v.data() + offset, sizeof(TInt)); - - if(ENDIAN != Utils::systemByteOrder()) - tmp.i = Utils::byteSwap(tmp.i); - - return tmp.f; -} - -template <typename TFloat, typename TInt, Utils::ByteOrder ENDIAN> -ByteVector fromFloat(TFloat value) -{ - union { - TInt i; - TFloat f; - } tmp; - tmp.f = value; - - if(ENDIAN != Utils::systemByteOrder()) - tmp.i = Utils::byteSwap(tmp.i); - - return ByteVector(reinterpret_cast<char *>(&tmp), sizeof(TInt)); -} - -template <Utils::ByteOrder ENDIAN> -long double toFloat80(const ByteVector &v, size_t offset) -{ - using std::swap; - - if(offset > v.size() - 10) { - debug("toFloat80() - offset is out of range. Returning 0."); - return 0.0; - } - - unsigned char bytes[10]; - ::memcpy(bytes, v.data() + offset, 10); - - if(ENDIAN == Utils::LittleEndian) { - swap(bytes[0], bytes[9]); - swap(bytes[1], bytes[8]); - swap(bytes[2], bytes[7]); - swap(bytes[3], bytes[6]); - swap(bytes[4], bytes[5]); - } - - // 1-bit sign - const bool negative = ((bytes[0] & 0x80) != 0); - - // 15-bit exponent - const int exponent = ((bytes[0] & 0x7F) << 8) | bytes[1]; - - // 64-bit fraction. Leading 1 is explicit. - const unsigned long long fraction - = (static_cast<unsigned long long>(bytes[2]) << 56) - | (static_cast<unsigned long long>(bytes[3]) << 48) - | (static_cast<unsigned long long>(bytes[4]) << 40) - | (static_cast<unsigned long long>(bytes[5]) << 32) - | (static_cast<unsigned long long>(bytes[6]) << 24) - | (static_cast<unsigned long long>(bytes[7]) << 16) - | (static_cast<unsigned long long>(bytes[8]) << 8) - | (static_cast<unsigned long long>(bytes[9])); - - long double val; - if(exponent == 0 && fraction == 0) - val = 0; - else { - if(exponent == 0x7FFF) { - debug("toFloat80() - can't handle the infinity or NaN. Returning 0."); - return 0.0; - } - else - val = ::ldexp(static_cast<long double>(fraction), exponent - 16383 - 63); - } - - if(negative) - return -val; - else - return val; -} - -class ByteVector::ByteVectorPrivate -{ -public: - ByteVectorPrivate(unsigned int l, char c) : - counter(new RefCounter()), - data(new std::vector<char>(l, c)), - offset(0), - length(l) {} - - ByteVectorPrivate(const char *s, unsigned int l) : - counter(new RefCounter()), - data(new std::vector<char>(s, s + l)), - offset(0), - length(l) {} - - ByteVectorPrivate(const ByteVectorPrivate &d, unsigned int o, unsigned int l) : - counter(d.counter), - data(d.data), - offset(d.offset + o), - length(l) - { - counter->ref(); - } - - ~ByteVectorPrivate() - { - if(counter->deref()) { - delete counter; - delete data; - } - } - - RefCounter *counter; - std::vector<char> *data; - unsigned int offset; - unsigned int length; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -ByteVector ByteVector::null; - -ByteVector ByteVector::fromCString(const char *s, unsigned int length) -{ - if(length == 0xffffffff) - return ByteVector(s, static_cast<unsigned int>(::strlen(s))); - else - return ByteVector(s, length); -} - -ByteVector ByteVector::fromUInt(unsigned int value, bool mostSignificantByteFirst) -{ - return fromNumber<unsigned int>(value, mostSignificantByteFirst); -} - -ByteVector ByteVector::fromShort(short value, bool mostSignificantByteFirst) -{ - return fromNumber<unsigned short>(value, mostSignificantByteFirst); -} - -ByteVector ByteVector::fromLongLong(long long value, bool mostSignificantByteFirst) -{ - return fromNumber<unsigned long long>(value, mostSignificantByteFirst); -} - -ByteVector ByteVector::fromFloat32LE(float value) -{ - return fromFloat<float, unsigned int, Utils::LittleEndian>(value); -} - -ByteVector ByteVector::fromFloat32BE(float value) -{ - return fromFloat<float, unsigned int, Utils::BigEndian>(value); -} - -ByteVector ByteVector::fromFloat64LE(double value) -{ - return fromFloat<double, unsigned long long, Utils::LittleEndian>(value); -} - -ByteVector ByteVector::fromFloat64BE(double value) -{ - return fromFloat<double, unsigned long long, Utils::BigEndian>(value); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ByteVector::ByteVector() : - d(new ByteVectorPrivate(0, '\0')) -{ -} - -ByteVector::ByteVector(unsigned int size, char value) : - d(new ByteVectorPrivate(size, value)) -{ -} - -ByteVector::ByteVector(const ByteVector &v) : - d(new ByteVectorPrivate(*v.d, 0, v.d->length)) -{ -} - -ByteVector::ByteVector(const ByteVector &v, unsigned int offset, unsigned int length) : - d(new ByteVectorPrivate(*v.d, offset, length)) -{ -} - -ByteVector::ByteVector(char c) : - d(new ByteVectorPrivate(1, c)) -{ -} - -ByteVector::ByteVector(const char *data, unsigned int length) : - d(new ByteVectorPrivate(data, length)) -{ -} - -ByteVector::ByteVector(const char *data) : - d(new ByteVectorPrivate(data, static_cast<unsigned int>(::strlen(data)))) -{ -} - -ByteVector::~ByteVector() -{ - delete d; -} - -ByteVector &ByteVector::setData(const char *s, unsigned int length) -{ - ByteVector(s, length).swap(*this); - return *this; -} - -ByteVector &ByteVector::setData(const char *data) -{ - ByteVector(data).swap(*this); - return *this; -} - -char *ByteVector::data() -{ - detach(); - return (size() > 0) ? (&(*d->data)[d->offset]) : 0; -} - -const char *ByteVector::data() const -{ - return (size() > 0) ? (&(*d->data)[d->offset]) : 0; -} - -ByteVector ByteVector::mid(unsigned int index, unsigned int length) const -{ - index = std::min(index, size()); - length = std::min(length, size() - index); - - return ByteVector(*this, index, length); -} - -char ByteVector::at(unsigned int index) const -{ - return (index < size()) ? (*d->data)[d->offset + index] : 0; -} - -int ByteVector::find(const ByteVector &pattern, unsigned int offset, int byteAlign) const -{ - return findVector<ConstIterator>( - begin(), end(), pattern.begin(), pattern.end(), offset, byteAlign); -} - -int ByteVector::find(char c, unsigned int offset, int byteAlign) const -{ - return findChar<ConstIterator>(begin(), end(), c, offset, byteAlign); -} - -int ByteVector::rfind(const ByteVector &pattern, unsigned int offset, int byteAlign) const -{ - if(offset > 0) { - offset = size() - offset - pattern.size(); - if(offset >= size()) - offset = 0; - } - - const int pos = findVector<ConstReverseIterator>( - rbegin(), rend(), pattern.rbegin(), pattern.rend(), offset, byteAlign); - - if(pos == -1) - return -1; - else - return size() - pos - pattern.size(); -} - -bool ByteVector::containsAt(const ByteVector &pattern, unsigned int offset, unsigned int patternOffset, unsigned int patternLength) const -{ - if(pattern.size() < patternLength) - patternLength = pattern.size(); - - // do some sanity checking -- all of these things are needed for the search to be valid - const unsigned int compareLength = patternLength - patternOffset; - if(offset + compareLength > size() || patternOffset >= pattern.size() || patternLength == 0) - return false; - - return (::memcmp(data() + offset, pattern.data() + patternOffset, compareLength) == 0); -} - -bool ByteVector::startsWith(const ByteVector &pattern) const -{ - return containsAt(pattern, 0); -} - -bool ByteVector::endsWith(const ByteVector &pattern) const -{ - return containsAt(pattern, size() - pattern.size()); -} - -ByteVector &ByteVector::replace(char oldByte, char newByte) -{ - detach(); - - for(ByteVector::Iterator it = begin(); it != end(); ++it) { - if(*it == oldByte) - *it = newByte; - } - - return *this; -} - -ByteVector &ByteVector::replace(const ByteVector &pattern, const ByteVector &with) -{ - if(pattern.size() == 1 && with.size() == 1) - return replace(pattern[0], with[0]); - - // Check if there is at least one occurrence of the pattern. - - int offset = find(pattern, 0); - if(offset == -1) - return *this; - - if(pattern.size() == with.size()) { - - // We think this case might be common enough to optimize it. - - detach(); - do - { - ::memcpy(data() + offset, with.data(), with.size()); - offset = find(pattern, offset + pattern.size()); - } while(offset != -1); - } - else { - - // Loop once to calculate the result size. - - unsigned int dstSize = size(); - do - { - dstSize += with.size() - pattern.size(); - offset = find(pattern, offset + pattern.size()); - } while(offset != -1); - - // Loop again to copy modified data to the new vector. - - ByteVector dst(dstSize); - int dstOffset = 0; - - offset = 0; - while(true) { - const int next = find(pattern, offset); - if(next == -1) { - ::memcpy(dst.data() + dstOffset, data() + offset, size() - offset); - break; - } - - ::memcpy(dst.data() + dstOffset, data() + offset, next - offset); - dstOffset += next - offset; - - ::memcpy(dst.data() + dstOffset, with.data(), with.size()); - dstOffset += with.size(); - - offset = next + pattern.size(); - } - - swap(dst); - } - - return *this; -} - -int ByteVector::endsWithPartialMatch(const ByteVector &pattern) const -{ - if(pattern.size() > size()) - return -1; - - const int startIndex = size() - pattern.size(); - - // try to match the last n-1 bytes from the vector (where n is the pattern - // size) -- continue trying to match n-2, n-3...1 bytes - - for(unsigned int i = 1; i < pattern.size(); i++) { - if(containsAt(pattern, startIndex + i, 0, pattern.size() - i)) - return startIndex + i; - } - - return -1; -} - -ByteVector &ByteVector::append(const ByteVector &v) -{ - if(v.isEmpty()) - return *this; - - detach(); - - const unsigned int originalSize = size(); - const unsigned int appendSize = v.size(); - - resize(originalSize + appendSize); - ::memcpy(data() + originalSize, v.data(), appendSize); - - return *this; -} - -ByteVector &ByteVector::append(char c) -{ - resize(size() + 1, c); - return *this; -} - -ByteVector &ByteVector::clear() -{ - ByteVector().swap(*this); - return *this; -} - -unsigned int ByteVector::size() const -{ - return d->length; -} - -ByteVector &ByteVector::resize(unsigned int size, char padding) -{ - if(size != d->length) { - detach(); - - // Remove the excessive length of the internal buffer first to pad correctly. - // This doesn't reallocate the buffer, since std::vector::resize() doesn't - // reallocate the buffer when shrinking. - - d->data->resize(d->offset + d->length); - d->data->resize(d->offset + size, padding); - - d->length = size; - } - - return *this; -} - -ByteVector::Iterator ByteVector::begin() -{ - detach(); - return d->data->begin() + d->offset; -} - -ByteVector::ConstIterator ByteVector::begin() const -{ - return d->data->begin() + d->offset; -} - -ByteVector::Iterator ByteVector::end() -{ - detach(); - return d->data->begin() + d->offset + d->length; -} - -ByteVector::ConstIterator ByteVector::end() const -{ - return d->data->begin() + d->offset + d->length; -} - -ByteVector::ReverseIterator ByteVector::rbegin() -{ - detach(); - return d->data->rbegin() + (d->data->size() - (d->offset + d->length)); -} - -ByteVector::ConstReverseIterator ByteVector::rbegin() const -{ - // Workaround for the Solaris Studio 12.4 compiler. - // We need a const reference to the data vector so we can ensure the const version of rbegin() is called. - const std::vector<char> &v = *d->data; - return v.rbegin() + (v.size() - (d->offset + d->length)); -} - -ByteVector::ReverseIterator ByteVector::rend() -{ - detach(); - return d->data->rbegin() + (d->data->size() - d->offset); -} - -ByteVector::ConstReverseIterator ByteVector::rend() const -{ - // Workaround for the Solaris Studio 12.4 compiler. - // We need a const reference to the data vector so we can ensure the const version of rbegin() is called. - const std::vector<char> &v = *d->data; - return v.rbegin() + (v.size() - d->offset); -} - -bool ByteVector::isNull() const -{ - return (d == null.d); -} - -bool ByteVector::isEmpty() const -{ - return (d->length == 0); -} - -unsigned int ByteVector::checksum() const -{ - static const unsigned int crcTable[256] = { - 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, - 0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, - 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7, - 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75, - 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, - 0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, - 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef, - 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d, - 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, - 0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, - 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0, - 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072, - 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, - 0x0808d07d, 0x0cc9cdca, 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, - 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, - 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba, - 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, - 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, - 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050, - 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, - 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, - 0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, - 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1, - 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53, - 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, - 0x3f9b762c, 0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, - 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9, - 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b, - 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, - 0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, - 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71, - 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3, - 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, - 0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, - 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, - 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec, - 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, - 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, - 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676, - 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, - 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, - 0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, - 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4 - }; - - unsigned int sum = 0; - for(ByteVector::ConstIterator it = begin(); it != end(); ++it) - sum = (sum << 8) ^ crcTable[((sum >> 24) & 0xff) ^ static_cast<unsigned char>(*it)]; - return sum; -} - -unsigned int ByteVector::toUInt(bool mostSignificantByteFirst) const -{ - return toNumber<unsigned int>(*this, 0, mostSignificantByteFirst); -} - -unsigned int ByteVector::toUInt(unsigned int offset, bool mostSignificantByteFirst) const -{ - return toNumber<unsigned int>(*this, offset, mostSignificantByteFirst); -} - -unsigned int ByteVector::toUInt(unsigned int offset, unsigned int length, bool mostSignificantByteFirst) const -{ - return toNumber<unsigned int>(*this, offset, length, mostSignificantByteFirst); -} - -short ByteVector::toShort(bool mostSignificantByteFirst) const -{ - return toNumber<unsigned short>(*this, 0, mostSignificantByteFirst); -} - -short ByteVector::toShort(unsigned int offset, bool mostSignificantByteFirst) const -{ - return toNumber<unsigned short>(*this, offset, mostSignificantByteFirst); -} - -unsigned short ByteVector::toUShort(bool mostSignificantByteFirst) const -{ - return toNumber<unsigned short>(*this, 0, mostSignificantByteFirst); -} - -unsigned short ByteVector::toUShort(unsigned int offset, bool mostSignificantByteFirst) const -{ - return toNumber<unsigned short>(*this, offset, mostSignificantByteFirst); -} - -long long ByteVector::toLongLong(bool mostSignificantByteFirst) const -{ - return toNumber<unsigned long long>(*this, 0, mostSignificantByteFirst); -} - -long long ByteVector::toLongLong(unsigned int offset, bool mostSignificantByteFirst) const -{ - return toNumber<unsigned long long>(*this, offset, mostSignificantByteFirst); -} - -float ByteVector::toFloat32LE(size_t offset) const -{ - return toFloat<float, unsigned int, Utils::LittleEndian>(*this, offset); -} - -float ByteVector::toFloat32BE(size_t offset) const -{ - return toFloat<float, unsigned int, Utils::BigEndian>(*this, offset); -} - -double ByteVector::toFloat64LE(size_t offset) const -{ - return toFloat<double, unsigned long long, Utils::LittleEndian>(*this, offset); -} - -double ByteVector::toFloat64BE(size_t offset) const -{ - return toFloat<double, unsigned long long, Utils::BigEndian>(*this, offset); -} - -long double ByteVector::toFloat80LE(size_t offset) const -{ - return toFloat80<Utils::LittleEndian>(*this, offset); -} - -long double ByteVector::toFloat80BE(size_t offset) const -{ - return toFloat80<Utils::BigEndian>(*this, offset); -} - -const char &ByteVector::operator[](int index) const -{ - return (*d->data)[d->offset + index]; -} - -char &ByteVector::operator[](int index) -{ - detach(); - return (*d->data)[d->offset + index]; -} - -bool ByteVector::operator==(const ByteVector &v) const -{ - if(size() != v.size()) - return false; - - return (::memcmp(data(), v.data(), size()) == 0); -} - -bool ByteVector::operator!=(const ByteVector &v) const -{ - return !(*this == v); -} - -bool ByteVector::operator==(const char *s) const -{ - if(size() != ::strlen(s)) - return false; - - return (::memcmp(data(), s, size()) == 0); -} - -bool ByteVector::operator!=(const char *s) const -{ - return !(*this == s); -} - -bool ByteVector::operator<(const ByteVector &v) const -{ - const int result = ::memcmp(data(), v.data(), std::min(size(), v.size())); - if(result != 0) - return result < 0; - else - return size() < v.size(); -} - -bool ByteVector::operator>(const ByteVector &v) const -{ - return (v < *this); -} - -ByteVector ByteVector::operator+(const ByteVector &v) const -{ - ByteVector sum(*this); - sum.append(v); - return sum; -} - -ByteVector &ByteVector::operator=(const ByteVector &v) -{ - ByteVector(v).swap(*this); - return *this; -} - -ByteVector &ByteVector::operator=(char c) -{ - ByteVector(c).swap(*this); - return *this; -} - -ByteVector &ByteVector::operator=(const char *data) -{ - ByteVector(data).swap(*this); - return *this; -} - -void ByteVector::swap(ByteVector &v) -{ - using std::swap; - - swap(d, v.d); -} - -ByteVector ByteVector::toHex() const -{ - static const char hexTable[17] = "0123456789abcdef"; - - ByteVector encoded(size() * 2); - char *p = encoded.data(); - - for(unsigned int i = 0; i < size(); i++) { - unsigned char c = data()[i]; - *p++ = hexTable[(c >> 4) & 0x0F]; - *p++ = hexTable[(c ) & 0x0F]; - } - - return encoded; -} - -ByteVector ByteVector::fromBase64(const ByteVector & input) -{ - static const unsigned char base64[256] = { - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x3e,0x80,0x80,0x80,0x3f, - 0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e, - 0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x80,0x80,0x80,0x80,0x80, - 0x80,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, - 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80 - }; - - unsigned int len = input.size(); - - ByteVector output(len); - - const unsigned char * src = (const unsigned char*) input.data(); - unsigned char * dst = (unsigned char*) output.data(); - - while(4 <= len) { - - // Check invalid character - if(base64[src[0]] == 0x80) - break; - - // Check invalid character - if(base64[src[1]] == 0x80) - break; - - // Decode first byte - *dst++ = ((base64[src[0]] << 2) & 0xfc) | ((base64[src[1]] >> 4) & 0x03); - - if(src[2] != '=') { - - // Check invalid character - if(base64[src[2]] == 0x80) - break; - - // Decode second byte - *dst++ = ((base64[src[1]] & 0x0f) << 4) | ((base64[src[2]] >> 2) & 0x0f); - - if(src[3] != '=') { - - // Check invalid character - if(base64[src[3]] == 0x80) - break; - - // Decode third byte - *dst++ = ((base64[src[2]] & 0x03) << 6) | (base64[src[3]] & 0x3f); - } - else { - // assume end of data - len -= 4; - break; - } - } - else { - // assume end of data - len -= 4; - break; - } - src += 4; - len -= 4; - } - - // Only return output if we processed all bytes - if(len == 0) { - output.resize(static_cast<unsigned int>(dst - (unsigned char*) output.data())); - return output; - } - return ByteVector(); -} - -ByteVector ByteVector::toBase64() const -{ - static const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - if(!isEmpty()) { - unsigned int len = size(); - ByteVector output(4 * ((len - 1) / 3 + 1)); // note roundup - - const char * src = data(); - char * dst = output.data(); - while(3 <= len) { - *dst++ = alphabet[(src[0] >> 2) & 0x3f]; - *dst++ = alphabet[((src[0] & 0x03) << 4) | ((src[1] >> 4) & 0x0f)]; - *dst++ = alphabet[((src[1] & 0x0f) << 2) | ((src[2] >> 6) & 0x03)]; - *dst++ = alphabet[src[2] & 0x3f]; - src += 3; - len -= 3; - } - if(len) { - *dst++ = alphabet[(src[0] >> 2) & 0x3f]; - if(len>1) { - *dst++ = alphabet[((src[0] & 0x03) << 4) | ((src[1] >> 4) & 0x0f)]; - *dst++ = alphabet[((src[1] & 0x0f) << 2)]; - } - else { - *dst++ = alphabet[(src[0] & 0x03) << 4]; - *dst++ = '='; - } - *dst++ = '='; - } - return output; - } - return ByteVector(); -} - - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void ByteVector::detach() -{ - if(d->counter->count() > 1) { - if(!isEmpty()) - ByteVector(&d->data->front() + d->offset, d->length).swap(*this); - else - ByteVector().swap(*this); - } -} -} - -//////////////////////////////////////////////////////////////////////////////// -// related functions -//////////////////////////////////////////////////////////////////////////////// - -std::ostream &operator<<(std::ostream &s, const TagLib::ByteVector &v) -{ - for(unsigned int i = 0; i < v.size(); i++) - s << v[i]; - return s; -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorlist.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorlist.cpp deleted file mode 100644 index eb88e2965..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorlist.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorlist.h> - -using namespace TagLib; - -class ByteVectorListPrivate -{ - -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &pattern, - int byteAlign) -{ - return split(v, pattern, byteAlign, 0); -} - -ByteVectorList ByteVectorList::split(const ByteVector &v, const ByteVector &pattern, - int byteAlign, int max) -{ - ByteVectorList l; - - unsigned int previousOffset = 0; - for(int offset = v.find(pattern, 0, byteAlign); - offset != -1 && (max == 0 || max > int(l.size()) + 1); - offset = v.find(pattern, offset + pattern.size(), byteAlign)) - { - if(offset - previousOffset >= 1) - l.append(v.mid(previousOffset, offset - previousOffset)); - else - l.append(ByteVector()); - - previousOffset = offset + pattern.size(); - } - - if(previousOffset < v.size()) - l.append(v.mid(previousOffset, v.size() - previousOffset)); - - return l; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ByteVectorList::ByteVectorList() : List<ByteVector>() -{ - -} - -ByteVectorList::ByteVectorList(const ByteVectorList &l) : List<ByteVector>(l) -{ - -} - -ByteVectorList::~ByteVectorList() -{ - -} - -ByteVector ByteVectorList::toByteVector(const ByteVector &separator) const -{ - ByteVector v; - - ConstIterator it = begin(); - - while(it != end()) { - v.append(*it); - it++; - if(it != end()) - v.append(separator); - } - - return v; -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorstream.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorstream.cpp deleted file mode 100644 index 5427a7c7a..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorstream.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevectorstream.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <stdio.h> -#include <string.h> - -#include <stdlib.h> - -using namespace TagLib; - -class ByteVectorStream::ByteVectorStreamPrivate -{ -public: - ByteVectorStreamPrivate(const ByteVector &data); - - ByteVector data; - long position; -}; - -ByteVectorStream::ByteVectorStreamPrivate::ByteVectorStreamPrivate(const ByteVector &data) : - data(data), - position(0) -{ -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -ByteVectorStream::ByteVectorStream(const ByteVector &data) : - d(new ByteVectorStreamPrivate(data)) -{ -} - -ByteVectorStream::~ByteVectorStream() -{ - delete d; -} - -FileName ByteVectorStream::name() const -{ - return FileName(""); // XXX do we need a name? -} - -ByteVector ByteVectorStream::readBlock(unsigned long length) -{ - if(length == 0) - return ByteVector(); - - ByteVector v = d->data.mid(d->position, length); - d->position += v.size(); - return v; -} - -void ByteVectorStream::writeBlock(const ByteVector &data) -{ - unsigned int size = data.size(); - if(long(d->position + size) > length()) { - truncate(d->position + size); - } - memcpy(d->data.data() + d->position, data.data(), size); - d->position += size; -} - -void ByteVectorStream::insert(const ByteVector &data, unsigned long start, unsigned long replace) -{ - long sizeDiff = data.size() - replace; - if(sizeDiff < 0) { - removeBlock(start + data.size(), -sizeDiff); - } - else if(sizeDiff > 0) { - truncate(length() + sizeDiff); - unsigned long readPosition = start + replace; - unsigned long writePosition = start + data.size(); - memmove(d->data.data() + writePosition, d->data.data() + readPosition, length() - sizeDiff - readPosition); - } - seek(start); - writeBlock(data); -} - -void ByteVectorStream::removeBlock(unsigned long start, unsigned long length) -{ - unsigned long readPosition = start + length; - unsigned long writePosition = start; - if(readPosition < static_cast<unsigned long>(ByteVectorStream::length())) { - unsigned long bytesToMove = ByteVectorStream::length() - readPosition; - memmove(d->data.data() + writePosition, d->data.data() + readPosition, bytesToMove); - writePosition += bytesToMove; - } - d->position = writePosition; - truncate(writePosition); -} - -bool ByteVectorStream::readOnly() const -{ - return false; -} - -bool ByteVectorStream::isOpen() const -{ - return true; -} - -void ByteVectorStream::seek(long offset, Position p) -{ - switch(p) { - case Beginning: - d->position = offset; - break; - case Current: - d->position += offset; - break; - case End: - d->position = length() + offset; // offset is expected to be negative - break; - } -} - -void ByteVectorStream::clear() -{ -} - -long ByteVectorStream::tell() const -{ - return d->position; -} - -long ByteVectorStream::length() -{ - return d->data.size(); -} - -void ByteVectorStream::truncate(long length) -{ - d->data.resize(length); -} - -ByteVector *ByteVectorStream::data() -{ - return &d->data; -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tdebug.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tdebug.cpp deleted file mode 100644 index ef6bab9b2..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tdebug.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#if !defined(NDEBUG) || defined(TRACE_IN_RELEASE) - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebuglistener.h> -#include <taglib/toolkit/tutils.h> - -#include <bitset> -#include <cstdio> -#include <cstdarg> - -namespace TagLib -{ - // The instance is defined in tdebuglistener.cpp. - extern DebugListener *debugListener; - - void debug(const String &s) - { - debugListener->printMessage("TagLib: " + s + "\n"); - } - - void debugData(const ByteVector &v) - { - for(unsigned int i = 0; i < v.size(); ++i) { - const std::string bits = std::bitset<8>(v[i]).to_string(); - const String msg = Utils::formatString( - "*** [%u] - char '%c' - int %d, 0x%02x, 0b%s\n", - i, v[i], v[i], v[i], bits.c_str()); - - debugListener->printMessage(msg); - } - } -} - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tdebug.h b/Frameworks/TagLib/taglib/taglib/toolkit/tdebug.h deleted file mode 100644 index 80d00d39e..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tdebug.h +++ /dev/null @@ -1,70 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_DEBUG_H -#define TAGLIB_DEBUG_H - -namespace TagLib { - - class String; - class ByteVector; - -#ifndef DO_NOT_DOCUMENT -#if !defined(NDEBUG) || defined(TRACE_IN_RELEASE) - - /*! - * A simple function that outputs the debug messages to the listener. - * The default listener redirects the messages to \a stderr when NDEBUG is - * not defined. - * - * \warning Do not use this outside of TagLib, it could lead to undefined - * symbols in your build if TagLib is built with NDEBUG defined and your - * application is not. - * - * \internal - */ - void debug(const String &s); - - /*! - * For debugging binary data. - * - * \warning Do not use this outside of TagLib, it could lead to undefined - * symbols in your build if TagLib is built with NDEBUG defined and your - * application is not. - * - * \internal - */ - void debugData(const ByteVector &v); - -#else - - #define debug(x) ((void)0) - #define debugData(x) ((void)0) - -#endif -} - -#endif -#endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tdebuglistener.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tdebuglistener.cpp deleted file mode 100644 index 2d5b43177..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tdebuglistener.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/*************************************************************************** - copyright : (C) 2013 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tdebuglistener.h> - -#include <iostream> -#include <bitset> - -#ifdef _WIN32 -# include <windows.h> -#endif - -using namespace TagLib; - -namespace -{ - class DefaultListener : public DebugListener - { - public: - virtual void printMessage(const String &msg) - { -#ifdef _WIN32 - - const wstring wstr = msg.toWString(); - const int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL); - if(len != 0) { - std::vector<char> buf(len); - WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, &buf[0], len, NULL, NULL); - - std::cerr << std::string(&buf[0]); - } - -#else - - std::cerr << msg; - -#endif - } - }; - - DefaultListener defaultListener; -} - -namespace TagLib -{ - DebugListener *debugListener = &defaultListener; - - DebugListener::DebugListener() - { - } - - DebugListener::~DebugListener() - { - } - - void setDebugListener(DebugListener *listener) - { - if(listener) - debugListener = listener; - else - debugListener = &defaultListener; - } -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp deleted file mode 100644 index 3c5318609..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tfile.cpp +++ /dev/null @@ -1,448 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tfilestream.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tpropertymap.h> - -#ifdef _WIN32 -# include <windows.h> -# include <io.h> -#else -# include <stdio.h> -# include <unistd.h> -#endif - -#ifndef R_OK -# define R_OK 4 -#endif -#ifndef W_OK -# define W_OK 2 -#endif - -#include <taglib/asf/asffile.h> -#include <taglib/it/itfile.h> -#include <taglib/mod/modfile.h> -#include <taglib/mpc/mpcfile.h> -#include <taglib/mpeg/mpegfile.h> -#include <taglib/riff/aiff/aifffile.h> -#include <taglib/riff/wav/wavfile.h> -#include <taglib/s3m/s3mfile.h> -#include <taglib/wavpack/wavpackfile.h> -#include <taglib/xm/xmfile.h> - -using namespace TagLib; - -class File::FilePrivate -{ -public: - FilePrivate(IOStream *stream, bool owner) : - stream(stream), - streamOwner(owner), - valid(true) {} - - ~FilePrivate() - { - if(streamOwner) - delete stream; - } - - IOStream *stream; - bool streamOwner; - bool valid; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -File::File(FileName fileName) : - d(new FilePrivate(new FileStream(fileName), true)) -{ -} - -File::File(IOStream *stream) : - d(new FilePrivate(stream, false)) -{ -} - -File::~File() -{ - delete d; -} - -FileName File::name() const -{ - return d->stream->name(); -} - -PropertyMap File::properties() const -{ - // ugly workaround until this method is virtual - if(dynamic_cast<const IT::File*>(this)) - return dynamic_cast<const IT::File*>(this)->properties(); - if(dynamic_cast<const Mod::File*>(this)) - return dynamic_cast<const Mod::File*>(this)->properties(); - if(dynamic_cast<const MPC::File*>(this)) - return dynamic_cast<const MPC::File*>(this)->properties(); - if(dynamic_cast<const MPEG::File*>(this)) - return dynamic_cast<const MPEG::File*>(this)->properties(); - if(dynamic_cast<const RIFF::AIFF::File*>(this)) - return dynamic_cast<const RIFF::AIFF::File*>(this)->properties(); - if(dynamic_cast<const RIFF::WAV::File*>(this)) - return dynamic_cast<const RIFF::WAV::File*>(this)->properties(); - if(dynamic_cast<const S3M::File*>(this)) - return dynamic_cast<const S3M::File*>(this)->properties(); - if(dynamic_cast<const WavPack::File*>(this)) - return dynamic_cast<const WavPack::File*>(this)->properties(); - if(dynamic_cast<const XM::File*>(this)) - return dynamic_cast<const XM::File*>(this)->properties(); - if(dynamic_cast<const ASF::File*>(this)) - return dynamic_cast<const ASF::File*>(this)->properties(); - return tag()->properties(); -} - -void File::removeUnsupportedProperties(const StringList &properties) -{ - // here we only consider those formats that could possibly contain - // unsupported properties - if(dynamic_cast<MPC::File*>(this)) - dynamic_cast<MPC::File*>(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<MPEG::File* >(this)) - dynamic_cast<MPEG::File*>(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<RIFF::AIFF::File* >(this)) - dynamic_cast<RIFF::AIFF::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<RIFF::WAV::File* >(this)) - dynamic_cast<RIFF::WAV::File*>(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<WavPack::File* >(this)) - dynamic_cast<WavPack::File* >(this)->removeUnsupportedProperties(properties); - else if(dynamic_cast<ASF::File* >(this)) - dynamic_cast<ASF::File*>(this)->removeUnsupportedProperties(properties); - else - tag()->removeUnsupportedProperties(properties); -} - -PropertyMap File::setProperties(const PropertyMap &properties) -{ - if(dynamic_cast<IT::File*>(this)) - return dynamic_cast<IT::File*>(this)->setProperties(properties); - else if(dynamic_cast<Mod::File*>(this)) - return dynamic_cast<Mod::File*>(this)->setProperties(properties); - else if(dynamic_cast<MPC::File*>(this)) - return dynamic_cast<MPC::File*>(this)->setProperties(properties); - else if(dynamic_cast<MPEG::File*>(this)) - return dynamic_cast<MPEG::File*>(this)->setProperties(properties); - else if(dynamic_cast<RIFF::AIFF::File*>(this)) - return dynamic_cast<RIFF::AIFF::File*>(this)->setProperties(properties); - else if(dynamic_cast<RIFF::WAV::File*>(this)) - return dynamic_cast<RIFF::WAV::File*>(this)->setProperties(properties); - else if(dynamic_cast<S3M::File*>(this)) - return dynamic_cast<S3M::File*>(this)->setProperties(properties); - else if(dynamic_cast<WavPack::File*>(this)) - return dynamic_cast<WavPack::File*>(this)->setProperties(properties); - else if(dynamic_cast<XM::File*>(this)) - return dynamic_cast<XM::File*>(this)->setProperties(properties); - else if(dynamic_cast<ASF::File*>(this)) - return dynamic_cast<ASF::File*>(this)->setProperties(properties); - else - return tag()->setProperties(properties); -} - -ByteVector File::readBlock(unsigned long length) -{ - return d->stream->readBlock(length); -} - -void File::writeBlock(const ByteVector &data) -{ - d->stream->writeBlock(data); -} - -long File::find(const ByteVector &pattern, long fromOffset, const ByteVector &before) -{ - if(!d->stream || pattern.size() > bufferSize()) - return -1; - - // The position in the file that the current buffer starts at. - - long bufferOffset = fromOffset; - ByteVector buffer; - - // These variables are used to keep track of a partial match that happens at - // the end of a buffer. - - int previousPartialMatch = -1; - int beforePreviousPartialMatch = -1; - - // Save the location of the current read pointer. We will restore the - // position using seek() before all returns. - - long originalPosition = tell(); - - // Start the search at the offset. - - seek(fromOffset); - - // This loop is the crux of the find method. There are three cases that we - // want to account for: - // - // (1) The previously searched buffer contained a partial match of the search - // pattern and we want to see if the next one starts with the remainder of - // that pattern. - // - // (2) The search pattern is wholly contained within the current buffer. - // - // (3) The current buffer ends with a partial match of the pattern. We will - // note this for use in the next iteration, where we will check for the rest - // of the pattern. - // - // All three of these are done in two steps. First we check for the pattern - // and do things appropriately if a match (or partial match) is found. We - // then check for "before". The order is important because it gives priority - // to "real" matches. - - for(buffer = readBlock(bufferSize()); buffer.size() > 0; buffer = readBlock(bufferSize())) { - - // (1) previous partial match - - if(previousPartialMatch >= 0 && int(bufferSize()) > previousPartialMatch) { - const int patternOffset = (bufferSize() - previousPartialMatch); - if(buffer.containsAt(pattern, 0, patternOffset)) { - seek(originalPosition); - return bufferOffset - bufferSize() + previousPartialMatch; - } - } - - if(!before.isEmpty() && beforePreviousPartialMatch >= 0 && int(bufferSize()) > beforePreviousPartialMatch) { - const int beforeOffset = (bufferSize() - beforePreviousPartialMatch); - if(buffer.containsAt(before, 0, beforeOffset)) { - seek(originalPosition); - return -1; - } - } - - // (2) pattern contained in current buffer - - long location = buffer.find(pattern); - if(location >= 0) { - seek(originalPosition); - return bufferOffset + location; - } - - if(!before.isEmpty() && buffer.find(before) >= 0) { - seek(originalPosition); - return -1; - } - - // (3) partial match - - previousPartialMatch = buffer.endsWithPartialMatch(pattern); - - if(!before.isEmpty()) - beforePreviousPartialMatch = buffer.endsWithPartialMatch(before); - - bufferOffset += bufferSize(); - } - - // Since we hit the end of the file, reset the status before continuing. - - clear(); - - seek(originalPosition); - - return -1; -} - - -long File::rfind(const ByteVector &pattern, long fromOffset, const ByteVector &before) -{ - if(!d->stream || pattern.size() > bufferSize()) - return -1; - - // The position in the file that the current buffer starts at. - - ByteVector buffer; - - // These variables are used to keep track of a partial match that happens at - // the end of a buffer. - - /* - int previousPartialMatch = -1; - int beforePreviousPartialMatch = -1; - */ - - // Save the location of the current read pointer. We will restore the - // position using seek() before all returns. - - long originalPosition = tell(); - - // Start the search at the offset. - - if(fromOffset == 0) - fromOffset = length(); - - long bufferLength = bufferSize(); - long bufferOffset = fromOffset + pattern.size(); - - // See the notes in find() for an explanation of this algorithm. - - while(true) { - - if(bufferOffset > bufferLength) { - bufferOffset -= bufferLength; - } - else { - bufferLength = bufferOffset; - bufferOffset = 0; - } - seek(bufferOffset); - - buffer = readBlock(bufferLength); - if(buffer.isEmpty()) - break; - - // TODO: (1) previous partial match - - // (2) pattern contained in current buffer - - const long location = buffer.rfind(pattern); - if(location >= 0) { - seek(originalPosition); - return bufferOffset + location; - } - - if(!before.isEmpty() && buffer.find(before) >= 0) { - seek(originalPosition); - return -1; - } - - // TODO: (3) partial match - } - - // Since we hit the end of the file, reset the status before continuing. - - clear(); - - seek(originalPosition); - - return -1; -} - -void File::insert(const ByteVector &data, unsigned long start, unsigned long replace) -{ - d->stream->insert(data, start, replace); -} - -void File::removeBlock(unsigned long start, unsigned long length) -{ - d->stream->removeBlock(start, length); -} - -bool File::readOnly() const -{ - return d->stream->readOnly(); -} - -bool File::isOpen() const -{ - return d->stream->isOpen(); -} - -bool File::isValid() const -{ - return isOpen() && d->valid; -} - -void File::seek(long offset, Position p) -{ - d->stream->seek(offset, IOStream::Position(p)); -} - -void File::truncate(long length) -{ - d->stream->truncate(length); -} - -void File::clear() -{ - d->stream->clear(); -} - -long File::tell() const -{ - return d->stream->tell(); -} - -long File::length() -{ - return d->stream->length(); -} - -bool File::isReadable(const char *file) -{ - -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later - - return _access_s(file, R_OK) == 0; - -#else - - return access(file, R_OK) == 0; - -#endif - -} - -bool File::isWritable(const char *file) -{ - -#if defined(_MSC_VER) && (_MSC_VER >= 1400) // VC++2005 or later - - return _access_s(file, W_OK) == 0; - -#else - - return access(file, W_OK) == 0; - -#endif - -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -unsigned int File::bufferSize() -{ - return 1024; -} - -void File::setValid(bool valid) -{ - d->valid = valid; -} - diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tfilestream.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tfilestream.cpp deleted file mode 100644 index b1bbc9383..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tfilestream.cpp +++ /dev/null @@ -1,507 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tfilestream.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#ifdef _WIN32 -# include <windows.h> -#else -# include <stdio.h> -# include <unistd.h> -#endif - -using namespace TagLib; - -namespace -{ -#ifdef _WIN32 - - // Uses Win32 native API instead of POSIX API to reduce the resource consumption. - - typedef FileName FileNameHandle; - typedef HANDLE FileHandle; - - const FileHandle InvalidFileHandle = INVALID_HANDLE_VALUE; - - FileHandle openFile(const FileName &path, bool readOnly) - { - const DWORD access = readOnly ? GENERIC_READ : (GENERIC_READ | GENERIC_WRITE); - -#if defined (PLATFORM_WINRT) - return CreateFile2(path.wstr().c_str(), access, FILE_SHARE_READ, OPEN_EXISTING, NULL); -#else - return CreateFileW(path.wstr().c_str(), access, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); -#endif - } - - FileHandle openFile(const int fileDescriptor, bool readOnly) - { - return InvalidFileHandle; - } - - void closeFile(FileHandle file) - { - CloseHandle(file); - } - - size_t readFile(FileHandle file, ByteVector &buffer) - { - DWORD length; - if(ReadFile(file, buffer.data(), static_cast<DWORD>(buffer.size()), &length, NULL)) - return static_cast<size_t>(length); - else - return 0; - } - - size_t writeFile(FileHandle file, const ByteVector &buffer) - { - DWORD length; - if(WriteFile(file, buffer.data(), static_cast<DWORD>(buffer.size()), &length, NULL)) - return static_cast<size_t>(length); - else - return 0; - } - -#else // _WIN32 - - struct FileNameHandle : public std::string - { - FileNameHandle(FileName name) : std::string(name) {} - operator FileName () const { return c_str(); } - }; - - typedef FILE* FileHandle; - - const FileHandle InvalidFileHandle = 0; - - FileHandle openFile(const FileName &path, bool readOnly) - { - return fopen(path, readOnly ? "rb" : "rb+"); - } - - FileHandle openFile(const int fileDescriptor, bool readOnly) - { - return fdopen(fileDescriptor, readOnly ? "rb" : "rb+"); - } - - void closeFile(FileHandle file) - { - fclose(file); - } - - size_t readFile(FileHandle file, ByteVector &buffer) - { - return fread(buffer.data(), sizeof(char), buffer.size(), file); - } - - size_t writeFile(FileHandle file, const ByteVector &buffer) - { - return fwrite(buffer.data(), sizeof(char), buffer.size(), file); - } - -#endif // _WIN32 -} - -class FileStream::FileStreamPrivate -{ -public: - FileStreamPrivate(const FileName &fileName) - : file(InvalidFileHandle) - , name(fileName) - , readOnly(true) - { - } - - FileHandle file; - FileNameHandle name; - bool readOnly; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -FileStream::FileStream(FileName fileName, bool openReadOnly) - : d(new FileStreamPrivate(fileName)) -{ - // First try with read / write mode, if that fails, fall back to read only. - - if(!openReadOnly) - d->file = openFile(fileName, false); - - if(d->file != InvalidFileHandle) - d->readOnly = false; - else - d->file = openFile(fileName, true); - - if(d->file == InvalidFileHandle) -# ifdef _WIN32 - debug("Could not open file " + fileName.toString()); -# else - debug("Could not open file " + String(static_cast<const char *>(d->name))); -# endif -} - -FileStream::FileStream(int fileDescriptor, bool openReadOnly) - : d(new FileStreamPrivate("")) -{ - // First try with read / write mode, if that fails, fall back to read only. - - if(!openReadOnly) - d->file = openFile(fileDescriptor, false); - - if(d->file != InvalidFileHandle) - d->readOnly = false; - else - d->file = openFile(fileDescriptor, true); - - if(d->file == InvalidFileHandle) - debug("Could not open file using file descriptor"); -} - -FileStream::~FileStream() -{ - if(isOpen()) - closeFile(d->file); - - delete d; -} - -FileName FileStream::name() const -{ - return d->name; -} - -ByteVector FileStream::readBlock(unsigned long length) -{ - if(!isOpen()) { - debug("FileStream::readBlock() -- invalid file."); - return ByteVector(); - } - - if(length == 0) - return ByteVector(); - - const unsigned long streamLength = static_cast<unsigned long>(FileStream::length()); - if(length > bufferSize() && length > streamLength) - length = streamLength; - - ByteVector buffer(static_cast<unsigned int>(length)); - - const size_t count = readFile(d->file, buffer); - buffer.resize(static_cast<unsigned int>(count)); - - return buffer; -} - -void FileStream::writeBlock(const ByteVector &data) -{ - if(!isOpen()) { - debug("FileStream::writeBlock() -- invalid file."); - return; - } - - if(readOnly()) { - debug("FileStream::writeBlock() -- read only file."); - return; - } - - writeFile(d->file, data); -} - -void FileStream::insert(const ByteVector &data, unsigned long start, unsigned long replace) -{ - if(!isOpen()) { - debug("FileStream::insert() -- invalid file."); - return; - } - - if(readOnly()) { - debug("FileStream::insert() -- read only file."); - return; - } - - if(data.size() == replace) { - seek(start); - writeBlock(data); - return; - } - else if(data.size() < replace) { - seek(start); - writeBlock(data); - removeBlock(start + data.size(), replace - data.size()); - return; - } - - // Woohoo! Faster (about 20%) than id3lib at last. I had to get hardcore - // and avoid TagLib's high level API for rendering just copying parts of - // the file that don't contain tag data. - // - // Now I'll explain the steps in this ugliness: - - // First, make sure that we're working with a buffer that is longer than - // the *difference* in the tag sizes. We want to avoid overwriting parts - // that aren't yet in memory, so this is necessary. - - unsigned long bufferLength = bufferSize(); - - while(data.size() - replace > bufferLength) - bufferLength += bufferSize(); - - // Set where to start the reading and writing. - - long readPosition = start + replace; - long writePosition = start; - - ByteVector buffer = data; - ByteVector aboutToOverwrite(static_cast<unsigned int>(bufferLength)); - - while(true) { - // Seek to the current read position and read the data that we're about - // to overwrite. Appropriately increment the readPosition. - - seek(readPosition); - const unsigned int bytesRead = static_cast<unsigned int>(readFile(d->file, aboutToOverwrite)); - aboutToOverwrite.resize(bytesRead); - readPosition += bufferLength; - - // Check to see if we just read the last block. We need to call clear() - // if we did so that the last write succeeds. - - if(bytesRead < bufferLength) - clear(); - - // Seek to the write position and write our buffer. Increment the - // writePosition. - - seek(writePosition); - writeBlock(buffer); - - // We hit the end of the file. - - if(bytesRead == 0) - break; - - writePosition += buffer.size(); - - // Make the current buffer the data that we read in the beginning. - - buffer = aboutToOverwrite; - } -} - -void FileStream::removeBlock(unsigned long start, unsigned long length) -{ - if(!isOpen()) { - debug("FileStream::removeBlock() -- invalid file."); - return; - } - - unsigned long bufferLength = bufferSize(); - - long readPosition = start + length; - long writePosition = start; - - ByteVector buffer(static_cast<unsigned int>(bufferLength)); - - for(unsigned int bytesRead = -1; bytesRead != 0;) { - seek(readPosition); - bytesRead = static_cast<unsigned int>(readFile(d->file, buffer)); - readPosition += bytesRead; - - // Check to see if we just read the last block. We need to call clear() - // if we did so that the last write succeeds. - - if(bytesRead < buffer.size()) { - clear(); - buffer.resize(bytesRead); - } - - seek(writePosition); - writeFile(d->file, buffer); - - writePosition += bytesRead; - } - - truncate(writePosition); -} - -bool FileStream::readOnly() const -{ - return d->readOnly; -} - -bool FileStream::isOpen() const -{ - return (d->file != InvalidFileHandle); -} - -void FileStream::seek(long offset, Position p) -{ - if(!isOpen()) { - debug("FileStream::seek() -- invalid file."); - return; - } - -#ifdef _WIN32 - - if(p != Beginning && p != Current && p != End) { - debug("FileStream::seek() -- Invalid Position value."); - return; - } - - LARGE_INTEGER liOffset; - liOffset.QuadPart = offset; - - if(!SetFilePointerEx(d->file, liOffset, NULL, static_cast<DWORD>(p))) { - debug("FileStream::seek() -- Failed to set the file pointer."); - } - -#else - - int whence; - switch(p) { - case Beginning: - whence = SEEK_SET; - break; - case Current: - whence = SEEK_CUR; - break; - case End: - whence = SEEK_END; - break; - default: - debug("FileStream::seek() -- Invalid Position value."); - return; - } - - fseek(d->file, offset, whence); - -#endif -} - -void FileStream::clear() -{ -#ifdef _WIN32 - - // NOP - -#else - - clearerr(d->file); - -#endif -} - -long FileStream::tell() const -{ -#ifdef _WIN32 - - const LARGE_INTEGER zero = {}; - LARGE_INTEGER position; - - if(SetFilePointerEx(d->file, zero, &position, FILE_CURRENT) && - position.QuadPart <= LONG_MAX) { - return static_cast<long>(position.QuadPart); - } - else { - debug("FileStream::tell() -- Failed to get the file pointer."); - return 0; - } - -#else - - return ftell(d->file); - -#endif -} - -long FileStream::length() -{ - if(!isOpen()) { - debug("FileStream::length() -- invalid file."); - return 0; - } - -#ifdef _WIN32 - - LARGE_INTEGER fileSize; - - if(GetFileSizeEx(d->file, &fileSize) && fileSize.QuadPart <= LONG_MAX) { - return static_cast<long>(fileSize.QuadPart); - } - else { - debug("FileStream::length() -- Failed to get the file size."); - return 0; - } - -#else - - const long curpos = tell(); - - seek(0, End); - const long endpos = tell(); - - seek(curpos, Beginning); - - return endpos; - -#endif -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void FileStream::truncate(long length) -{ -#ifdef _WIN32 - - const long currentPos = tell(); - - seek(length); - - if(!SetEndOfFile(d->file)) { - debug("FileStream::truncate() -- Failed to truncate the file."); - } - - seek(currentPos); - -#else - - fflush(d->file); - const int error = ftruncate(fileno(d->file), length); - if(error != 0) - debug("FileStream::truncate() -- Couldn't truncate the file."); - -#endif -} - -unsigned int FileStream::bufferSize() -{ - return 1024; -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tiostream.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tiostream.cpp deleted file mode 100644 index 35f160b28..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tiostream.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Lukas Lalinsky - email : lalinsky@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef _WIN32 -# include <windows.h> -# include <tstring.h> -#endif - -#include <taglib/toolkit/tiostream.h> - -using namespace TagLib; - -#ifdef _WIN32 - -namespace -{ - std::wstring ansiToUnicode(const char *str) - { - const int len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); - if(len == 0) - return std::wstring(); - - std::wstring wstr(len - 1, L'\0'); - MultiByteToWideChar(CP_ACP, 0, str, -1, &wstr[0], len); - - return wstr; - } -} - -// m_name is no longer used, but kept for backward compatibility. - -FileName::FileName(const wchar_t *name) : - m_name(), - m_wname(name) -{ -} - -FileName::FileName(const char *name) : - m_name(), - m_wname(ansiToUnicode(name)) -{ -} - -FileName::FileName(const FileName &name) : - m_name(), - m_wname(name.m_wname) -{ -} - -FileName::operator const wchar_t *() const -{ - return m_wname.c_str(); -} - -FileName::operator const char *() const -{ - return m_name.c_str(); -} - -const std::wstring &FileName::wstr() const -{ - return m_wname; -} - -const std::string &FileName::str() const -{ - return m_name; -} - -String FileName::toString() const -{ - return String(m_wname.c_str()); -} - -#endif // _WIN32 - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -IOStream::IOStream() -{ -} - -IOStream::~IOStream() -{ -} - -void IOStream::clear() -{ -} - diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tpropertymap.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tpropertymap.cpp deleted file mode 100644 index c1e333372..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tpropertymap.cpp +++ /dev/null @@ -1,179 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Michael Helmling - email : helmling@mathematik.uni-kl.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/toolkit/tpropertymap.h> -using namespace TagLib; - - -PropertyMap::PropertyMap() : SimplePropertyMap() -{ -} - -PropertyMap::PropertyMap(const PropertyMap &m) : SimplePropertyMap(m), unsupported(m.unsupported) -{ -} - -PropertyMap::PropertyMap(const SimplePropertyMap &m) -{ - for(SimplePropertyMap::ConstIterator it = m.begin(); it != m.end(); ++it){ - String key = it->first.upper(); - if(!key.isEmpty()) - insert(it->first, it->second); - else - unsupported.append(it->first); - } -} - -PropertyMap::~PropertyMap() -{ -} - -bool PropertyMap::insert(const String &key, const StringList &values) -{ - String realKey = key.upper(); - Iterator result = SimplePropertyMap::find(realKey); - if(result == end()) - SimplePropertyMap::insert(realKey, values); - else - SimplePropertyMap::operator[](realKey).append(values); - return true; -} - -bool PropertyMap::replace(const String &key, const StringList &values) -{ - String realKey = key.upper(); - SimplePropertyMap::erase(realKey); - SimplePropertyMap::insert(realKey, values); - return true; -} - -PropertyMap::Iterator PropertyMap::find(const String &key) -{ - return SimplePropertyMap::find(key.upper()); -} - -PropertyMap::ConstIterator PropertyMap::find(const String &key) const -{ - return SimplePropertyMap::find(key.upper()); -} - -bool PropertyMap::contains(const String &key) const -{ - return SimplePropertyMap::contains(key.upper()); -} - -bool PropertyMap::contains(const PropertyMap &other) const -{ - for(ConstIterator it = other.begin(); it != other.end(); ++it) { - if(!SimplePropertyMap::contains(it->first)) - return false; - if ((*this)[it->first] != it->second) - return false; - } - return true; -} - -PropertyMap &PropertyMap::erase(const String &key) -{ - SimplePropertyMap::erase(key.upper()); - return *this; -} - -PropertyMap &PropertyMap::erase(const PropertyMap &other) -{ - for(ConstIterator it = other.begin(); it != other.end(); ++it) - erase(it->first); - return *this; -} - -PropertyMap &PropertyMap::merge(const PropertyMap &other) -{ - for(PropertyMap::ConstIterator it = other.begin(); it != other.end(); ++it) - insert(it->first, it->second); - unsupported.append(other.unsupported); - return *this; -} - -const StringList &PropertyMap::operator[](const String &key) const -{ - return SimplePropertyMap::operator[](key.upper()); -} - -StringList &PropertyMap::operator[](const String &key) -{ - return SimplePropertyMap::operator[](key.upper()); -} - -bool PropertyMap::operator==(const PropertyMap &other) const -{ - for(ConstIterator it = other.begin(); it != other.end(); ++it) { - ConstIterator thisFind = find(it->first); - if( thisFind == end() || (thisFind->second != it->second) ) - return false; - } - for(ConstIterator it = begin(); it != end(); ++it) { - ConstIterator otherFind = other.find(it->first); - if( otherFind == other.end() || (otherFind->second != it->second) ) - return false; - } - return unsupported == other.unsupported; -} - -bool PropertyMap::operator!=(const PropertyMap &other) const -{ - return !(*this == other); -} - -String PropertyMap::toString() const -{ - String ret; - - for(ConstIterator it = begin(); it != end(); ++it) - ret += it->first+"="+it->second.toString(", ") + "\n"; - if(!unsupported.isEmpty()) - ret += "Unsupported Data: " + unsupported.toString(", ") + "\n"; - return ret; -} - -void PropertyMap::removeEmpty() -{ - PropertyMap m; - for(ConstIterator it = begin(); it != end(); ++it) { - if(!it->second.isEmpty()) - m.insert(it->first, it->second); - } - *this = m; -} - -StringList &PropertyMap::unsupportedData() -{ - return unsupported; -} - -const StringList &PropertyMap::unsupportedData() const -{ - return unsupported; -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.cpp deleted file mode 100644 index 31e84200e..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/*************************************************************************** - copyright : (C) 2013 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <taglib/toolkit/trefcounter.h> - -#if defined(HAVE_GCC_ATOMIC) -# define ATOMIC_INT int -# define ATOMIC_INC(x) __sync_add_and_fetch(&x, 1) -# define ATOMIC_DEC(x) __sync_sub_and_fetch(&x, 1) -#elif defined(HAVE_WIN_ATOMIC) -# if !defined(NOMINMAX) -# define NOMINMAX -# endif -# include <windows.h> -# define ATOMIC_INT long -# define ATOMIC_INC(x) InterlockedIncrement(&x) -# define ATOMIC_DEC(x) InterlockedDecrement(&x) -#elif defined(HAVE_MAC_ATOMIC) -# include <libkern/OSAtomic.h> -# define ATOMIC_INT int32_t -# define ATOMIC_INC(x) OSAtomicIncrement32Barrier(&x) -# define ATOMIC_DEC(x) OSAtomicDecrement32Barrier(&x) -#elif defined(HAVE_IA64_ATOMIC) -# include <ia64intrin.h> -# define ATOMIC_INT int -# define ATOMIC_INC(x) __sync_add_and_fetch(&x, 1) -# define ATOMIC_DEC(x) __sync_sub_and_fetch(&x, 1) -#else -# define ATOMIC_INT volatile int -# define ATOMIC_INC(x) (++x) -# define ATOMIC_DEC(x) (--x) -#endif - -namespace TagLib -{ - - class RefCounter::RefCounterPrivate - { - public: - RefCounterPrivate() : - refCount(1) {} - - volatile ATOMIC_INT refCount; - }; - - RefCounter::RefCounter() : - d(new RefCounterPrivate()) - { - } - - RefCounter::~RefCounter() - { - delete d; - } - - void RefCounter::ref() - { - ATOMIC_INC(d->refCount); - } - - bool RefCounter::deref() - { - return (ATOMIC_DEC(d->refCount) == 0); - } - - int RefCounter::count() const - { - return static_cast<int>(d->refCount); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.h b/Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.h deleted file mode 100644 index bc4061bec..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/trefcounter.h +++ /dev/null @@ -1,113 +0,0 @@ -/*************************************************************************** - copyright : (C) 2013 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_REFCOUNTER_H -#define TAGLIB_REFCOUNTER_H - -#include <taglib/taglib_export.h> -#include <taglib/toolkit/taglib.h> - -#ifdef __APPLE__ -# include <atomic> -# define TAGLIB_ATOMIC_MAC -#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) -# ifndef NOMINMAX -# define NOMINMAX -# endif -# include <windows.h> -# define TAGLIB_ATOMIC_WIN -#elif defined (__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 401) \ - && (defined(__i386__) || defined(__i486__) || defined(__i586__) || \ - defined(__i686__) || defined(__x86_64) || defined(__ia64)) \ - && !defined(__INTEL_COMPILER) -# define TAGLIB_ATOMIC_GCC -#elif defined(__ia64) && defined(__INTEL_COMPILER) -# include <ia64intrin.h> -# define TAGLIB_ATOMIC_GCC -#endif - -#ifndef DO_NOT_DOCUMENT // Tell Doxygen to skip this class. -/*! - * \internal - * This is just used as a base class for shared classes in TagLib. - * - * \warning This <b>is not</b> part of the TagLib public API! - */ -namespace TagLib -{ - - class TAGLIB_EXPORT RefCounter - { - public: - RefCounter(); - virtual ~RefCounter(); - - void ref(); - bool deref(); - int count() const; - - private: - class RefCounterPrivate; - RefCounterPrivate *d; - }; - - // BIC this old class is needed by tlist.tcc and tmap.tcc - class RefCounterOld - { - public: - RefCounterOld() : refCount(1) {} - -#ifdef TAGLIB_ATOMIC_MAC - void ref() { atomic_fetch_add(&refCount, 1); } - bool deref() { return atomic_fetch_sub(&refCount, 1) == 1; } - int32_t count() { return atomic_load(&refCount); } - private: - std::atomic<int32_t> refCount; -#elif defined(TAGLIB_ATOMIC_WIN) - void ref() { InterlockedIncrement(&refCount); } - bool deref() { return ! InterlockedDecrement(&refCount); } - long count() { return refCount; } - private: - volatile long refCount; -#elif defined(TAGLIB_ATOMIC_GCC) - void ref() { __sync_add_and_fetch(&refCount, 1); } - bool deref() { return ! __sync_sub_and_fetch(&refCount, 1); } - int count() { return refCount; } - private: - volatile int refCount; -#else - void ref() { refCount++; } - bool deref() { return ! --refCount; } - int count() { return refCount; } - private: - unsigned int refCount; -#endif - }; - -} - -#endif // DO_NOT_DOCUMENT -#endif - diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tstring.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tstring.cpp deleted file mode 100644 index c5e17ed4a..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tstring.cpp +++ /dev/null @@ -1,774 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <cerrno> -#include <cfloat> -#include <climits> - -#include <utf8-cpp/checked.h> - -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/trefcounter.h> -#include <taglib/toolkit/tutils.h> - -#include <taglib/toolkit/tstring.h> - -namespace -{ - using namespace TagLib; - - // Returns the native format of std::wstring. - String::Type wcharByteOrder() - { - if(Utils::systemByteOrder() == Utils::LittleEndian) - return String::UTF16LE; - else - return String::UTF16BE; - } - - // Converts a Latin-1 string into UTF-16(without BOM/CPU byte order) - // and copies it to the internal buffer. - void copyFromLatin1(std::wstring &data, const char *s, size_t length) - { - data.resize(length); - - for(size_t i = 0; i < length; ++i) - data[i] = static_cast<unsigned char>(s[i]); - } - - // Converts a UTF-8 string into UTF-16(without BOM/CPU byte order) - // and copies it to the internal buffer. - void copyFromUTF8(std::wstring &data, const char *s, size_t length) - { - data.resize(length); - - try { - const std::wstring::iterator dstEnd = utf8::utf8to16(s, s + length, data.begin()); - data.resize(dstEnd - data.begin()); - } - catch(const utf8::exception &e) { - const String message(e.what()); - debug("String::copyFromUTF8() - UTF8-CPP error: " + message); - data.clear(); - } - } - - // Helper functions to read a UTF-16 character from an array. - template <typename T> - unsigned short nextUTF16(const T **p); - - template <> - unsigned short nextUTF16<wchar_t>(const wchar_t **p) - { - return static_cast<unsigned short>(*(*p)++); - } - - template <> - unsigned short nextUTF16<char>(const char **p) - { - union { - unsigned short w; - char c[2]; - } u; - u.c[0] = *(*p)++; - u.c[1] = *(*p)++; - return u.w; - } - - // Converts a UTF-16 (with BOM), UTF-16LE or UTF16-BE string into - // UTF-16(without BOM/CPU byte order) and copies it to the internal buffer. - template <typename T> - void copyFromUTF16(std::wstring &data, const T *s, size_t length, String::Type t) - { - bool swap; - if(t == String::UTF16) { - if(length < 1) { - debug("String::copyFromUTF16() - Invalid UTF16 string. Too short to have a BOM."); - return; - } - - const unsigned short bom = nextUTF16(&s); - if(bom == 0xfeff) - swap = false; // Same as CPU endian. No need to swap bytes. - else if(bom == 0xfffe) - swap = true; // Not same as CPU endian. Need to swap bytes. - else { - debug("String::copyFromUTF16() - Invalid UTF16 string. BOM is broken."); - return; - } - - length--; - } - else { - swap = (t != wcharByteOrder()); - } - - data.resize(length); - for(size_t i = 0; i < length; ++i) { - const unsigned short c = nextUTF16(&s); - if(swap) - data[i] = Utils::byteSwap(c); - else - data[i] = c; - } - } -} - -namespace TagLib { - -class String::StringPrivate : public RefCounter -{ -public: - StringPrivate() : - RefCounter() {} - - /*! - * Stores string in UTF-16. The byte order depends on the CPU endian. - */ - TagLib::wstring data; - - /*! - * This is only used to hold the the most recent value of toCString(). - */ - std::string cstring; -}; - -String String::null; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -String::String() : - d(new StringPrivate()) -{ -} - -String::String(const String &s) : - d(s.d) -{ - d->ref(); -} - -String::String(const std::string &s, Type t) : - d(new StringPrivate()) -{ - if(t == Latin1) - copyFromLatin1(d->data, s.c_str(), s.length()); - else if(t == String::UTF8) - copyFromUTF8(d->data, s.c_str(), s.length()); - else { - debug("String::String() -- std::string should not contain UTF16."); - } -} - -String::String(const wstring &s, Type t) : - d(new StringPrivate()) -{ - if(t == UTF16 || t == UTF16BE || t == UTF16LE) { - // This looks ugly but needed for the compatibility with TagLib1.8. - // Should be removed in TabLib2.0. - if (t == UTF16BE) - t = wcharByteOrder(); - else if (t == UTF16LE) - t = (wcharByteOrder() == UTF16LE ? UTF16BE : UTF16LE); - - copyFromUTF16(d->data, s.c_str(), s.length(), t); - } - else { - debug("String::String() -- TagLib::wstring should not contain Latin1 or UTF-8."); - } -} - -String::String(const wchar_t *s, Type t) : - d(new StringPrivate()) -{ - if(t == UTF16 || t == UTF16BE || t == UTF16LE) { - // This looks ugly but needed for the compatibility with TagLib1.8. - // Should be removed in TabLib2.0. - if (t == UTF16BE) - t = wcharByteOrder(); - else if (t == UTF16LE) - t = (wcharByteOrder() == UTF16LE ? UTF16BE : UTF16LE); - - copyFromUTF16(d->data, s, ::wcslen(s), t); - } - else { - debug("String::String() -- const wchar_t * should not contain Latin1 or UTF-8."); - } -} - -String::String(const char *s, Type t) : - d(new StringPrivate()) -{ - if(t == Latin1) - copyFromLatin1(d->data, s, ::strlen(s)); - else if(t == String::UTF8) - copyFromUTF8(d->data, s, ::strlen(s)); - else { - debug("String::String() -- const char * should not contain UTF16."); - } -} - -String::String(wchar_t c, Type t) : - d(new StringPrivate()) -{ - if(t == UTF16 || t == UTF16BE || t == UTF16LE) - copyFromUTF16(d->data, &c, 1, t); - else { - debug("String::String() -- wchar_t should not contain Latin1 or UTF-8."); - } -} - -String::String(char c, Type t) : - d(new StringPrivate()) -{ - if(t == Latin1) - copyFromLatin1(d->data, &c, 1); - else if(t == String::UTF8) - copyFromUTF8(d->data, &c, 1); - else { - debug("String::String() -- char should not contain UTF16."); - } -} - -String::String(const ByteVector &v, Type t) : - d(new StringPrivate()) -{ - if(v.isEmpty()) - return; - - if(t == Latin1) - copyFromLatin1(d->data, v.data(), v.size()); - else if(t == UTF8) - copyFromUTF8(d->data, v.data(), v.size()); - else - copyFromUTF16(d->data, v.data(), v.size() / 2, t); - - // If we hit a null in the ByteVector, shrink the string again. - d->data.resize(::wcslen(d->data.c_str())); -} - -//////////////////////////////////////////////////////////////////////////////// - -String::~String() -{ - if(d->deref()) - delete d; -} - -std::string String::to8Bit(bool unicode) const -{ - const ByteVector v = data(unicode ? UTF8 : Latin1); - return std::string(v.data(), v.size()); -} - -TagLib::wstring String::toWString() const -{ - return d->data; -} - -const char *String::toCString(bool unicode) const -{ - d->cstring = to8Bit(unicode); - return d->cstring.c_str(); -} - -const wchar_t *String::toCWString() const -{ - return d->data.c_str(); -} - -String::Iterator String::begin() -{ - detach(); - return d->data.begin(); -} - -String::ConstIterator String::begin() const -{ - return d->data.begin(); -} - -String::Iterator String::end() -{ - detach(); - return d->data.end(); -} - -String::ConstIterator String::end() const -{ - return d->data.end(); -} - -int String::find(const String &s, int offset) const -{ - return static_cast<int>(d->data.find(s.d->data, offset)); -} - -int String::rfind(const String &s, int offset) const -{ - return static_cast<int>(d->data.rfind(s.d->data, offset)); -} - -StringList String::split(const String &separator) const -{ - StringList list; - for(int index = 0;;) { - int sep = find(separator, index); - if(sep < 0) { - list.append(substr(index, size() - index)); - break; - } - else { - list.append(substr(index, sep - index)); - index = sep + separator.size(); - } - } - return list; -} - -bool String::startsWith(const String &s) const -{ - if(s.length() > length()) - return false; - - return substr(0, s.length()) == s; -} - -String String::substr(unsigned int position, unsigned int n) const -{ - if(position == 0 && n >= size()) - return *this; - else - return String(d->data.substr(position, n)); -} - -String &String::append(const String &s) -{ - detach(); - d->data += s.d->data; - return *this; -} - -String & String::clear() -{ - *this = String(); - return *this; -} - -String String::upper() const -{ - String s; - s.d->data.reserve(size()); - - for(ConstIterator it = begin(); it != end(); ++it) { - if(*it >= 'a' && *it <= 'z') - s.d->data.push_back(*it + 'A' - 'a'); - else - s.d->data.push_back(*it); - } - - return s; -} - -unsigned int String::size() const -{ - return static_cast<unsigned int>(d->data.size()); -} - -unsigned int String::length() const -{ - return size(); -} - -bool String::isEmpty() const -{ - return d->data.empty(); -} - -bool String::isNull() const -{ - return d == null.d; -} - -ByteVector String::data(Type t) const -{ - switch(t) - { - case Latin1: - { - ByteVector v(size(), 0); - char *p = v.data(); - - for(ConstIterator it = begin(); it != end(); ++it) - *p++ = static_cast<char>(*it); - - return v; - } - case UTF8: - { - ByteVector v(size() * 4, 0); - - try { - const ByteVector::Iterator dstEnd = utf8::utf16to8(begin(), end(), v.begin()); - v.resize(static_cast<unsigned int>(dstEnd - v.begin())); - } - catch(const utf8::exception &e) { - const String message(e.what()); - debug("String::data() - UTF8-CPP error: " + message); - v.clear(); - } - - return v; - } - case UTF16: - { - ByteVector v(2 + size() * 2, 0); - char *p = v.data(); - - // We use little-endian encoding here and need a BOM. - - *p++ = '\xff'; - *p++ = '\xfe'; - - for(ConstIterator it = begin(); it != end(); ++it) { - *p++ = static_cast<char>(*it & 0xff); - *p++ = static_cast<char>(*it >> 8); - } - - return v; - } - case UTF16BE: - { - ByteVector v(size() * 2, 0); - char *p = v.data(); - - for(ConstIterator it = begin(); it != end(); ++it) { - *p++ = static_cast<char>(*it >> 8); - *p++ = static_cast<char>(*it & 0xff); - } - - return v; - } - case UTF16LE: - { - ByteVector v(size() * 2, 0); - char *p = v.data(); - - for(ConstIterator it = begin(); it != end(); ++it) { - *p++ = static_cast<char>(*it & 0xff); - *p++ = static_cast<char>(*it >> 8); - } - - return v; - } - default: - { - debug("String::data() - Invalid Type value."); - return ByteVector(); - } - } -} - -int String::toInt(unsigned int base) const -{ - return toInt(0, base); -} - -int String::toInt(bool *ok, unsigned int base) const -{ - const wchar_t *begin = d->data.c_str(); - wchar_t *end; - errno = 0; - const long value = ::wcstol(begin, &end, base); - - // Has wcstol() consumed the entire string and not overflowed? - if(ok) { - *ok = (errno == 0 && end > begin && *end == L'\0'); - *ok = (*ok && value > INT_MIN && value < INT_MAX); - } - - return static_cast<int>(value); -} - -float String::toFloat() const -{ - return toFloat(0); -} - -float String::toFloat(bool *ok) const -{ - const wchar_t *begin = d->data.c_str(); - wchar_t *end; - errno = 0; - const float value = ::wcstof(begin, &end); - - // Has wcstof() consumed the entire string and not overflowed? - if(ok) { - *ok = (errno == 0 && end > begin && *end == L'\0'); - *ok = (*ok && value > FLT_MIN && value < FLT_MAX); - } - - return value; -} - -String String::stripWhiteSpace() const -{ - static const wchar_t *WhiteSpaceChars = L"\t\n\f\r "; - - const size_t pos1 = d->data.find_first_not_of(WhiteSpaceChars); - if(pos1 == std::wstring::npos) - return String(); - - const size_t pos2 = d->data.find_last_not_of(WhiteSpaceChars); - return substr(static_cast<unsigned int>(pos1), static_cast<unsigned int>(pos2 - pos1 + 1)); -} - -bool String::isLatin1() const -{ - for(ConstIterator it = begin(); it != end(); ++it) { - if(*it >= 256) - return false; - } - return true; -} - -bool String::isAscii() const -{ - for(ConstIterator it = begin(); it != end(); ++it) { - if(*it >= 128) - return false; - } - return true; -} - -String String::number(int n) // static -{ - return Utils::formatString("%d", n); -} - -String String::numberFloat(float n) // static -{ - return Utils::formatString("%f", n); -} - -wchar_t &String::operator[](int i) -{ - detach(); - return d->data[i]; -} - -const wchar_t &String::operator[](int i) const -{ - return d->data[i]; -} - -bool String::operator==(const String &s) const -{ - return (d == s.d || d->data == s.d->data); -} - -bool String::operator!=(const String &s) const -{ - return !(*this == s); -} - -bool String::operator==(const char *s) const -{ - const wchar_t *p = toCWString(); - - while(*p != L'\0' || *s != '\0') { - if(*p++ != static_cast<unsigned char>(*s++)) - return false; - } - return true; -} - -bool String::operator!=(const char *s) const -{ - return !(*this == s); -} - -bool String::operator==(const wchar_t *s) const -{ - return (d->data == s); -} - -bool String::operator!=(const wchar_t *s) const -{ - return !(*this == s); -} - -String &String::operator+=(const String &s) -{ - detach(); - - d->data += s.d->data; - return *this; -} - -String &String::operator+=(const wchar_t *s) -{ - detach(); - - d->data += s; - return *this; -} - -String &String::operator+=(const char *s) -{ - detach(); - - for(int i = 0; s[i] != 0; i++) - d->data += static_cast<unsigned char>(s[i]); - return *this; -} - -String &String::operator+=(wchar_t c) -{ - detach(); - - d->data += c; - return *this; -} - -String &String::operator+=(char c) -{ - detach(); - - d->data += static_cast<unsigned char>(c); - return *this; -} - -String &String::operator=(const String &s) -{ - String(s).swap(*this); - return *this; -} - -String &String::operator=(const std::string &s) -{ - String(s).swap(*this); - return *this; -} - -String &String::operator=(const wstring &s) -{ - String(s).swap(*this); - return *this; -} - -String &String::operator=(const wchar_t *s) -{ - String(s).swap(*this); - return *this; -} - -String &String::operator=(char c) -{ - String(c).swap(*this); - return *this; -} - -String &String::operator=(wchar_t c) -{ - String(c, wcharByteOrder()).swap(*this); - return *this; -} - -String &String::operator=(const char *s) -{ - String(s).swap(*this); - return *this; -} - -String &String::operator=(const ByteVector &v) -{ - String(v).swap(*this); - return *this; -} - -void String::swap(String &s) -{ - using std::swap; - - swap(d, s.d); -} - -bool String::operator<(const String &s) const -{ - return (d->data < s.d->data); -} - -//////////////////////////////////////////////////////////////////////////////// -// protected members -//////////////////////////////////////////////////////////////////////////////// - -void String::detach() -{ - if(d->count() > 1) - String(d->data.c_str()).swap(*this); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -const String::Type String::WCharByteOrder = wcharByteOrder(); -} - -//////////////////////////////////////////////////////////////////////////////// -// related non-member functions -//////////////////////////////////////////////////////////////////////////////// - -const TagLib::String operator+(const TagLib::String &s1, const TagLib::String &s2) -{ - TagLib::String s(s1); - s.append(s2); - return s; -} - -const TagLib::String operator+(const char *s1, const TagLib::String &s2) -{ - TagLib::String s(s1); - s.append(s2); - return s; -} - -const TagLib::String operator+(const TagLib::String &s1, const char *s2) -{ - TagLib::String s(s1); - s.append(s2); - return s; -} - -std::ostream &operator<<(std::ostream &s, const TagLib::String &str) -{ - s << str.to8Bit(); - return s; -} - diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tstringlist.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tstringlist.cpp deleted file mode 100644 index a2ac880fb..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tstringlist.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************************************** - copyright : (C) 2002 - 2008 by Scott Wheeler - email : wheeler@kde.org - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstringlist.h> - -using namespace TagLib; - -class StringListPrivate -{ - -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -StringList StringList::split(const String &s, const String &pattern) -{ - StringList l; - - int previousOffset = 0; - for(int offset = s.find(pattern); offset != -1; offset = s.find(pattern, offset + 1)) { - l.append(s.substr(previousOffset, offset - previousOffset)); - previousOffset = offset + 1; - } - - l.append(s.substr(previousOffset, s.size() - previousOffset)); - - return l; -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -StringList::StringList() : List<String>() -{ - -} - -StringList::StringList(const StringList &l) : List<String>(l) -{ - -} - -StringList::StringList(const String &s) : List<String>() -{ - append(s); -} - -StringList::StringList(const ByteVectorList &bl, String::Type t) : List<String>() -{ - ByteVectorList::ConstIterator i = bl.begin(); - for(;i != bl.end(); i++) { - append(String(*i, t)); - } -} - -StringList::~StringList() -{ - -} - -String StringList::toString(const String &separator) const -{ - String s; - - ConstIterator it = begin(); - ConstIterator itEnd = end(); - - while(it != itEnd) { - s += *it; - it++; - if(it != itEnd) - s += separator; - } - - return s; -} - -StringList &StringList::append(const String &s) -{ - List<String>::append(s); - return *this; -} - -StringList &StringList::append(const StringList &l) -{ - List<String>::append(l); - return *this; -} - -//////////////////////////////////////////////////////////////////////////////// -// related functions -//////////////////////////////////////////////////////////////////////////////// - -std::ostream &operator<<(std::ostream &s, const StringList &l) -{ - s << l.toString(); - return s; -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tutils.h b/Frameworks/TagLib/taglib/taglib/toolkit/tutils.h deleted file mode 100644 index 0ebd08c39..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tutils.h +++ /dev/null @@ -1,243 +0,0 @@ -/*************************************************************************** - copyright : (C) 2013 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TUTILS_H -#define TAGLIB_TUTILS_H - -// THIS FILE IS NOT A PART OF THE TAGLIB API - -#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#if defined(HAVE_MSC_BYTESWAP) -# include <stdlib.h> -#elif defined(HAVE_GLIBC_BYTESWAP) -# include <byteswap.h> -#elif defined(HAVE_MAC_BYTESWAP) -# include <libkern/OSByteOrder.h> -#elif defined(HAVE_OPENBSD_BYTESWAP) -# include <sys/endian.h> -#endif - -#include <taglib/toolkit/tstring.h> -#include <cstdio> -#include <cstdarg> -#include <cstring> - -namespace TagLib -{ - namespace Utils - { - namespace - { - - /*! - * Reverses the order of bytes in an 16-bit integer. - */ - inline unsigned short byteSwap(unsigned short x) - { -#if defined(HAVE_GCC_BYTESWAP) - - return __builtin_bswap16(x); - -#elif defined(HAVE_MSC_BYTESWAP) - - return _byteswap_ushort(x); - -#elif defined(HAVE_GLIBC_BYTESWAP) - - return __bswap_16(x); - -#elif defined(HAVE_MAC_BYTESWAP) - - return OSSwapInt16(x); - -#elif defined(HAVE_OPENBSD_BYTESWAP) - - return swap16(x); - -#else - - return ((x >> 8) & 0xff) | ((x & 0xff) << 8); - -#endif - } - - /*! - * Reverses the order of bytes in an 32-bit integer. - */ - inline unsigned int byteSwap(unsigned int x) - { -#if defined(HAVE_GCC_BYTESWAP) - - return __builtin_bswap32(x); - -#elif defined(HAVE_MSC_BYTESWAP) - - return _byteswap_ulong(x); - -#elif defined(HAVE_GLIBC_BYTESWAP) - - return __bswap_32(x); - -#elif defined(HAVE_MAC_BYTESWAP) - - return OSSwapInt32(x); - -#elif defined(HAVE_OPENBSD_BYTESWAP) - - return swap32(x); - -#else - - return ((x & 0xff000000u) >> 24) - | ((x & 0x00ff0000u) >> 8) - | ((x & 0x0000ff00u) << 8) - | ((x & 0x000000ffu) << 24); - -#endif - } - - /*! - * Reverses the order of bytes in an 64-bit integer. - */ - inline unsigned long long byteSwap(unsigned long long x) - { -#if defined(HAVE_GCC_BYTESWAP) - - return __builtin_bswap64(x); - -#elif defined(HAVE_MSC_BYTESWAP) - - return _byteswap_uint64(x); - -#elif defined(HAVE_GLIBC_BYTESWAP) - - return __bswap_64(x); - -#elif defined(HAVE_MAC_BYTESWAP) - - return OSSwapInt64(x); - -#elif defined(HAVE_OPENBSD_BYTESWAP) - - return swap64(x); - -#else - - return ((x & 0xff00000000000000ull) >> 56) - | ((x & 0x00ff000000000000ull) >> 40) - | ((x & 0x0000ff0000000000ull) >> 24) - | ((x & 0x000000ff00000000ull) >> 8) - | ((x & 0x00000000ff000000ull) << 8) - | ((x & 0x0000000000ff0000ull) << 24) - | ((x & 0x000000000000ff00ull) << 40) - | ((x & 0x00000000000000ffull) << 56); - -#endif - } - - /*! - * Returns a formatted string just like standard sprintf(), but makes use of - * safer functions such as snprintf() if available. - */ - inline String formatString(const char *format, ...) - { - // Sufficient buffer size for the current internal uses. - // Consider changing this value when you use this function. - - static const size_t BufferSize = 128; - - va_list args; - va_start(args, format); - - char buf[BufferSize]; - int length; - -#if defined(HAVE_VSNPRINTF) - - length = vsnprintf(buf, BufferSize, format, args); - -#elif defined(HAVE_VSPRINTF_S) - - length = vsprintf_s(buf, format, args); - -#else - - // The last resort. May cause a buffer overflow. - - length = vsprintf(buf, format, args); - if(length >= BufferSize) { - debug("Utils::formatString() - Buffer overflow! Returning an empty string."); - length = -1; - } - -#endif - - va_end(args); - - if(length > 0) - return String(buf); - else - return String(); - } - - /*! - * The types of byte order of the running system. - */ - enum ByteOrder - { - //! Little endian systems. - LittleEndian, - //! Big endian systems. - BigEndian - }; - - /*! - * Returns the byte order of the system. - */ - inline ByteOrder systemByteOrder() - { - union { - int i; - char c; - } u; - - u.i = 1; - if(u.c == 1) - return LittleEndian; - else - return BigEndian; - } - } - } -} - -#endif - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tzlib.cpp b/Frameworks/TagLib/taglib/taglib/toolkit/tzlib.cpp deleted file mode 100644 index 5b0b9e49b..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tzlib.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/*************************************************************************** - copyright : (C) 2016 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#ifdef HAVE_ZLIB -# include <zlib.h> -# include <tstring.h> -# include <tdebug.h> -#endif - -#include <taglib/toolkit/tzlib.h> - -using namespace TagLib; - -bool zlib::isAvailable() -{ -#ifdef HAVE_ZLIB - - return true; - -#else - - return false; - -#endif -} - -ByteVector zlib::decompress(const ByteVector &data) -{ -#ifdef HAVE_ZLIB - - z_stream stream = {}; - - if(inflateInit(&stream) != Z_OK) { - debug("zlib::decompress() - Failed to initialize zlib."); - return ByteVector(); - } - - ByteVector inData = data; - - stream.avail_in = static_cast<uInt>(inData.size()); - stream.next_in = reinterpret_cast<Bytef *>(inData.data()); - - const unsigned int chunkSize = 1024; - - ByteVector outData; - - do { - const size_t offset = outData.size(); - outData.resize(outData.size() + chunkSize); - - stream.avail_out = static_cast<uInt>(chunkSize); - stream.next_out = reinterpret_cast<Bytef *>(outData.data() + offset); - - const int result = inflate(&stream, Z_NO_FLUSH); - - if(result == Z_STREAM_ERROR || - result == Z_NEED_DICT || - result == Z_DATA_ERROR || - result == Z_MEM_ERROR) - { - if(result != Z_STREAM_ERROR) - inflateEnd(&stream); - - debug("zlib::decompress() - Error reading compressed stream."); - return ByteVector(); - } - - outData.resize(outData.size() - stream.avail_out); - } while(stream.avail_out == 0); - - inflateEnd(&stream); - - return outData; - -#else - - return ByteVector(); - -#endif -} diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tzlib.h b/Frameworks/TagLib/taglib/taglib/toolkit/tzlib.h deleted file mode 100644 index 7a849028b..000000000 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tzlib.h +++ /dev/null @@ -1,54 +0,0 @@ -/*************************************************************************** - copyright : (C) 2016 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_TZLIB_H -#define TAGLIB_TZLIB_H - -#include <taglib/toolkit/tbytevector.h> - -// THIS FILE IS NOT A PART OF THE TAGLIB API - -#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header - -namespace TagLib { - - namespace zlib { - - /*! - * Returns whether or not zlib is installed and ready to use. - */ - bool isAvailable(); - - /*! - * Decompress \a data by zlib. - */ - ByteVector decompress(const ByteVector &data); - - } -} - -#endif - -#endif diff --git a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudiofile.cpp b/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudiofile.cpp deleted file mode 100644 index 708825aa2..000000000 --- a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudiofile.cpp +++ /dev/null @@ -1,378 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/tagunion.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/trueaudio/trueaudiofile.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/ape/apefooter.h> -#include <taglib/ape/apetag.h> - -using namespace TagLib; - -namespace -{ - enum { TrueAudioID3v2Index = 0, TrueAudioAPEIndex = 1, TrueAudioID3v1Index = 2 }; -} - -class TrueAudio::File::FilePrivate -{ -public: - FilePrivate(const ID3v2::FrameFactory *frameFactory = ID3v2::FrameFactory::instance()) : - ID3v2FrameFactory(frameFactory), - ID3v2Location(-1), - ID3v2OriginalSize(0), - ID3v1Location(-1), - APELocation(-1), - APEOriginalSize(0), - properties(0) {} - - ~FilePrivate() - { - delete properties; - } - - const ID3v2::FrameFactory *ID3v2FrameFactory; - long ID3v2Location; - long ID3v2OriginalSize; - - long APELocation; - long APEOriginalSize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool TrueAudio::File::isSupported(IOStream *stream) -{ - // A TrueAudio file has to start with "TTA". An ID3v2 tag may precede. - - const ByteVector id = Utils::readHeader(stream, 3, true); - return (id == "TTA"); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -TrueAudio::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -TrueAudio::File::File(FileName file, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate(frameFactory)) -{ - if(isOpen()) - read(readProperties); -} - -TrueAudio::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -TrueAudio::File::File(IOStream *stream, ID3v2::FrameFactory *frameFactory, - bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate(frameFactory)) -{ - if(isOpen()) - read(readProperties); -} - -TrueAudio::File::~File() -{ - delete d; -} - -TagLib::Tag *TrueAudio::File::tag() const -{ - return &d->tag; -} - -PropertyMap TrueAudio::File::properties() const -{ - return d->tag.properties(); -} - -void TrueAudio::File::removeUnsupportedProperties(const StringList &unsupported) -{ - d->tag.removeUnsupportedProperties(unsupported); -} - -PropertyMap TrueAudio::File::setProperties(const PropertyMap &properties) -{ - if(ID3v1Tag()) - ID3v1Tag()->setProperties(properties); - - if(ID3v2Tag()) - ID3v2Tag()->setProperties(properties); - - return APETag(true)->setProperties(properties); -} - -TrueAudio::Properties *TrueAudio::File::audioProperties() const -{ - return d->properties; -} - -void TrueAudio::File::setID3v2FrameFactory(const ID3v2::FrameFactory *factory) -{ - d->ID3v2FrameFactory = factory; -} - -bool TrueAudio::File::save() -{ - if(readOnly()) { - debug("TrueAudio::File::save() -- File is read only."); - return false; - } - - // Update ID3v2 tag - - if(ID3v2Tag() && !ID3v2Tag()->isEmpty()) { - - // ID3v2 tag is not empty. Update the old one or create a new one. - - if(d->ID3v2Location < 0) - d->ID3v2Location = 0; - - const ByteVector data = ID3v2Tag()->render(); - insert(data, d->ID3v2Location, d->ID3v2OriginalSize); - - if(d->APELocation >= 0) - d->APELocation += (static_cast<long>(data.size()) - d->ID3v2OriginalSize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->ID3v2OriginalSize); - - d->ID3v2OriginalSize = data.size(); - } - else { - - // ID3v2 tag is empty. Remove the old one. - - if(d->ID3v2Location >= 0) { - removeBlock(d->ID3v2Location, d->ID3v2OriginalSize); - - if(d->APELocation >= 0) - d->APELocation -= d->ID3v2OriginalSize; - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->ID3v2OriginalSize; - - d->ID3v2Location = -1; - d->ID3v2OriginalSize = 0; - } - } - - // Update ID3v1 tag - - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - - // ID3v1 tag is not empty. Update the old one or create a new one. - - if(d->ID3v1Location >= 0) { - seek(d->ID3v1Location); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - } - - writeBlock(ID3v1Tag()->render()); - } - else { - - // ID3v1 tag is empty. Remove the old one. - - if(d->ID3v1Location >= 0) { - truncate(d->ID3v1Location); - d->ID3v1Location = -1; - } - } - - if(APETag() && !APETag()->isEmpty()) { - // APE tag is not empty. Update the old one or create a new one. - if(d->APELocation < 0) { - if(d->ID3v1Location >= 0) - d->APELocation = d->ID3v1Location; - else - d->APELocation = length(); - } - - const ByteVector data = APETag()->render(); - insert(data, d->APELocation, d->APEOriginalSize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->APEOriginalSize); - - d->APEOriginalSize = data.size(); - } - else { - // APE tag is empty. Remove the old one. - - if(d->APELocation >= 0) { - removeBlock(d->APELocation, d->APEOriginalSize); - - if (d->ID3v1Location >= 0) { - d->ID3v1Location -= d->APEOriginalSize; - } - } - } - - return true; -} - -ID3v1::Tag *TrueAudio::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(TrueAudioID3v1Index, create); -} - -ID3v2::Tag *TrueAudio::File::ID3v2Tag(bool create) -{ - return d->tag.access<ID3v2::Tag>(TrueAudioID3v2Index, create); -} - -APE::Tag *TrueAudio::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(TrueAudioAPEIndex, create); -} - -void TrueAudio::File::strip(int tags) -{ - if(tags & ID3v1) - d->tag.set(TrueAudioID3v1Index, 0); - - if(tags & ID3v2) - d->tag.set(TrueAudioID3v2Index, 0); - - if(tags & APE) - d->tag.set(TrueAudioAPEIndex, 0); - - if(!ID3v1Tag()) - APETag(true); -} - -bool TrueAudio::File::hasID3v1Tag() const -{ - return (d->ID3v1Location >= 0); -} - -bool TrueAudio::File::hasID3v2Tag() const -{ - return (d->ID3v2Location >= 0); -} - -bool TrueAudio::File::hasAPETag() const -{ - return (d->APELocation >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void TrueAudio::File::read(bool readProperties) -{ - // Look for an ID3v2 tag - - d->ID3v2Location = Utils::findID3v2(this); - - if(d->ID3v2Location >= 0) { - d->tag.set(TrueAudioID3v2Index, new ID3v2::Tag(this, d->ID3v2Location, d->ID3v2FrameFactory)); - d->ID3v2OriginalSize = ID3v2Tag()->header()->completeTagSize(); - } - - // Look for an ID3v1 tag - - d->ID3v1Location = Utils::findID3v1(this); - - if(d->ID3v1Location >= 0) - d->tag.set(TrueAudioID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - - if(d->ID3v1Location < 0) - APETag(true); - - // Look for an APE tag - - d->APELocation = Utils::findAPE(this, d->ID3v1Location); - - if(d->APELocation >= 0) { - d->tag.set(TrueAudioAPEIndex, new APE::Tag(this, d->APELocation)); - d->APEOriginalSize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APE::Footer::size() - d->APEOriginalSize; - } - - // Look for TrueAudio metadata - - if(readProperties) { - - long streamLength; - - if(d->ID3v1Location >= 0) - streamLength = d->ID3v1Location; - else - streamLength = length(); - - if(d->ID3v2Location >= 0) { - seek(d->ID3v2Location + d->ID3v2OriginalSize); - streamLength -= (d->ID3v2Location + d->ID3v2OriginalSize); - } - else { - seek(0); - } - - d->properties = new Properties(readBlock(TrueAudio::HeaderSize), streamLength); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudioproperties.cpp b/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudioproperties.cpp deleted file mode 100644 index 30dd43b6b..000000000 --- a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudioproperties.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <bitset> - -#include <taglib/trueaudio/trueaudioproperties.h> -#include <taglib/trueaudio/trueaudiofile.h> - -using namespace TagLib; - -class TrueAudio::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - version(0), - length(0), - bitrate(0), - sampleRate(0), - channels(0), - bitsPerSample(0), - sampleFrames(0) {} - - int version; - int length; - int bitrate; - int sampleRate; - int channels; - int bitsPerSample; - unsigned int sampleFrames; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -TrueAudio::Properties::Properties(const ByteVector &data, long streamLength, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(data, streamLength); -} - -TrueAudio::Properties::~Properties() -{ - delete d; -} - -int TrueAudio::Properties::length() const -{ - return lengthInSeconds(); -} - -int TrueAudio::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int TrueAudio::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int TrueAudio::Properties::bitrate() const -{ - return d->bitrate; -} - -int TrueAudio::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int TrueAudio::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -int TrueAudio::Properties::channels() const -{ - return d->channels; -} - -unsigned int TrueAudio::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -int TrueAudio::Properties::ttaVersion() const -{ - return d->version; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void TrueAudio::Properties::read(const ByteVector &data, long streamLength) -{ - if(data.size() < 4) { - debug("TrueAudio::Properties::read() -- data is too short."); - return; - } - - if(!data.startsWith("TTA")) { - debug("TrueAudio::Properties::read() -- invalid header signature."); - return; - } - - unsigned int pos = 3; - - d->version = data[pos] - '0'; - pos += 1; - - // According to http://en.true-audio.com/TTA_Lossless_Audio_Codec_-_Format_Description - // TTA2 headers are in development, and have a different format - if(1 == d->version) { - if(data.size() < 18) { - debug("TrueAudio::Properties::read() -- data is too short."); - return; - } - - // Skip the audio format - pos += 2; - - d->channels = data.toShort(pos, false); - pos += 2; - - d->bitsPerSample = data.toShort(pos, false); - pos += 2; - - d->sampleRate = data.toUInt(pos, false); - pos += 4; - - d->sampleFrames = data.toUInt(pos, false); - pos += 4; - - if(d->sampleFrames > 0 && d->sampleRate > 0) { - const double length = d->sampleFrames * 1000.0 / d->sampleRate; - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } - } -} diff --git a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackfile.cpp b/Frameworks/TagLib/taglib/taglib/wavpack/wavpackfile.cpp deleted file mode 100644 index 902aa9ff6..000000000 --- a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackfile.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/tagunion.h> -#include <taglib/toolkit/tpropertymap.h> -#include <taglib/tagutils.h> - -#include <taglib/wavpack/wavpackfile.h> -#include <taglib/mpeg/id3v1/id3v1tag.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/ape/apetag.h> -#include <taglib/ape/apefooter.h> - -using namespace TagLib; - -namespace -{ - enum { WavAPEIndex, WavID3v1Index }; -} - -class WavPack::File::FilePrivate -{ -public: - FilePrivate() : - APELocation(-1), - APESize(0), - ID3v1Location(-1), - properties(0) {} - - ~FilePrivate() - { - delete properties; - } - - long APELocation; - long APESize; - - long ID3v1Location; - - TagUnion tag; - - Properties *properties; -}; - -//////////////////////////////////////////////////////////////////////////////// -// static members -//////////////////////////////////////////////////////////////////////////////// - -bool WavPack::File::isSupported(IOStream *stream) -{ - // A WavPack file has to start with "wvpk". - - const ByteVector id = Utils::readHeader(stream, 4, false); - return (id == "wvpk"); -} - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -WavPack::File::File(FileName file, bool readProperties, Properties::ReadStyle) : - TagLib::File(file), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -WavPack::File::File(IOStream *stream, bool readProperties, Properties::ReadStyle) : - TagLib::File(stream), - d(new FilePrivate()) -{ - if(isOpen()) - read(readProperties); -} - -WavPack::File::~File() -{ - delete d; -} - -TagLib::Tag *WavPack::File::tag() const -{ - return &d->tag; -} - -PropertyMap WavPack::File::properties() const -{ - return d->tag.properties(); -} - -void WavPack::File::removeUnsupportedProperties(const StringList &unsupported) -{ - d->tag.removeUnsupportedProperties(unsupported); -} - -PropertyMap WavPack::File::setProperties(const PropertyMap &properties) -{ - if(ID3v1Tag()) - ID3v1Tag()->setProperties(properties); - - return APETag(true)->setProperties(properties); -} - -WavPack::Properties *WavPack::File::audioProperties() const -{ - return d->properties; -} - -bool WavPack::File::save() -{ - if(readOnly()) { - debug("WavPack::File::save() -- File is read only."); - return false; - } - - // Update ID3v1 tag - - if(ID3v1Tag() && !ID3v1Tag()->isEmpty()) { - - // ID3v1 tag is not empty. Update the old one or create a new one. - - if(d->ID3v1Location >= 0) { - seek(d->ID3v1Location); - } - else { - seek(0, End); - d->ID3v1Location = tell(); - } - - writeBlock(ID3v1Tag()->render()); - } - else { - - // ID3v1 tag is empty. Remove the old one. - - if(d->ID3v1Location >= 0) { - truncate(d->ID3v1Location); - d->ID3v1Location = -1; - } - } - - // Update APE tag - - if(APETag() && !APETag()->isEmpty()) { - - // APE tag is not empty. Update the old one or create a new one. - - if(d->APELocation < 0) { - if(d->ID3v1Location >= 0) - d->APELocation = d->ID3v1Location; - else - d->APELocation = length(); - } - - const ByteVector data = APETag()->render(); - insert(data, d->APELocation, d->APESize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location += (static_cast<long>(data.size()) - d->APESize); - - d->APESize = data.size(); - } - else { - - // APE tag is empty. Remove the old one. - - if(d->APELocation >= 0) { - removeBlock(d->APELocation, d->APESize); - - if(d->ID3v1Location >= 0) - d->ID3v1Location -= d->APESize; - - d->APELocation = -1; - d->APESize = 0; - } - } - - return true; -} - -ID3v1::Tag *WavPack::File::ID3v1Tag(bool create) -{ - return d->tag.access<ID3v1::Tag>(WavID3v1Index, create); -} - -APE::Tag *WavPack::File::APETag(bool create) -{ - return d->tag.access<APE::Tag>(WavAPEIndex, create); -} - -void WavPack::File::strip(int tags) -{ - if(tags & ID3v1) - d->tag.set(WavID3v1Index, 0); - - if(tags & APE) - d->tag.set(WavAPEIndex, 0); - - if(!ID3v1Tag()) - APETag(true); -} - -bool WavPack::File::hasID3v1Tag() const -{ - return (d->ID3v1Location >= 0); -} - -bool WavPack::File::hasAPETag() const -{ - return (d->APELocation >= 0); -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -void WavPack::File::read(bool readProperties) -{ - // Look for an ID3v1 tag - - d->ID3v1Location = Utils::findID3v1(this); - - if(d->ID3v1Location >= 0) - d->tag.set(WavID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); - - // Look for an APE tag - - d->APELocation = Utils::findAPE(this, d->ID3v1Location); - - if(d->APELocation >= 0) { - d->tag.set(WavAPEIndex, new APE::Tag(this, d->APELocation)); - d->APESize = APETag()->footer()->completeTagSize(); - d->APELocation = d->APELocation + APE::Footer::size() - d->APESize; - } - - if(d->ID3v1Location < 0) - APETag(true); - - // Look for WavPack audio properties - - if(readProperties) { - - long streamLength; - - if(d->APELocation >= 0) - streamLength = d->APELocation; - else if(d->ID3v1Location >= 0) - streamLength = d->ID3v1Location; - else - streamLength = length(); - - d->properties = new Properties(this, streamLength); - } -} diff --git a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackproperties.cpp b/Frameworks/TagLib/taglib/taglib/wavpack/wavpackproperties.cpp deleted file mode 100644 index 37c8b47c9..000000000 --- a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackproperties.cpp +++ /dev/null @@ -1,374 +0,0 @@ -/*************************************************************************** - copyright : (C) 2006 by Lukáš Lalinský - email : lalinsky@gmail.com - - copyright : (C) 2004 by Allan Sandfeld Jensen - email : kde@carewolf.org - (original MPC implementation) - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <stdint.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tdebug.h> - -#include <taglib/wavpack/wavpackproperties.h> -#include <taglib/wavpack/wavpackfile.h> - -// Implementation of this class is based on the information at: -// http://www.wavpack.com/file_format.txt - -using namespace TagLib; - -class WavPack::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - length(0), - bitrate(0), - sampleRate(0), - channels(0), - version(0), - bitsPerSample(0), - lossless(false), - sampleFrames(0) {} - - int length; - int bitrate; - int sampleRate; - int channels; - int version; - int bitsPerSample; - bool lossless; - unsigned int sampleFrames; -}; - -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// - -WavPack::Properties::Properties(const ByteVector &, long, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - debug("WavPack::Properties::Properties() -- This constructor is no longer used."); -} - -WavPack::Properties::Properties(File *file, long streamLength, ReadStyle style) : - AudioProperties(style), - d(new PropertiesPrivate()) -{ - read(file, streamLength); -} - -WavPack::Properties::~Properties() -{ - delete d; -} - -int WavPack::Properties::length() const -{ - return lengthInSeconds(); -} - -int WavPack::Properties::lengthInSeconds() const -{ - return d->length / 1000; -} - -int WavPack::Properties::lengthInMilliseconds() const -{ - return d->length; -} - -int WavPack::Properties::bitrate() const -{ - return d->bitrate; -} - -int WavPack::Properties::sampleRate() const -{ - return d->sampleRate; -} - -int WavPack::Properties::channels() const -{ - return d->channels; -} - -int WavPack::Properties::version() const -{ - return d->version; -} - -int WavPack::Properties::bitsPerSample() const -{ - return d->bitsPerSample; -} - -bool WavPack::Properties::isLossless() const -{ - return d->lossless; -} - -unsigned int WavPack::Properties::sampleFrames() const -{ - return d->sampleFrames; -} - -//////////////////////////////////////////////////////////////////////////////// -// private members -//////////////////////////////////////////////////////////////////////////////// - -#define BYTES_STORED 3 -#define MONO_FLAG 4 -#define HYBRID_FLAG 8 -#define DSD_FLAG 0x80000000 // block is encoded DSD (1-bit PCM) - -#define SHIFT_LSB 13 -#define SHIFT_MASK (0x1fL << SHIFT_LSB) - -#define SRATE_LSB 23 -#define SRATE_MASK (0xfL << SRATE_LSB) - -#define MIN_STREAM_VERS 0x402 -#define MAX_STREAM_VERS 0x410 - -#define INITIAL_BLOCK 0x800 -#define FINAL_BLOCK 0x1000 - -#define ID_DSD_BLOCK 0x0e -#define ID_OPTIONAL_DATA 0x20 -#define ID_UNIQUE 0x3f -#define ID_ODD_SIZE 0x40 -#define ID_LARGE 0x80 -#define ID_SAMPLE_RATE (ID_OPTIONAL_DATA | 0x7) - -namespace -{ - const unsigned int sampleRates[] = { - 6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, - 32000, 44100, 48000, 64000, 88200, 96000, 192000, 0 }; - - /*! - * Given a WavPack \a block (complete, but not including the 32-byte header), - * parse the metadata blocks until an \a id block is found and return the - * contained data, or zero if no such block is found. - * Supported values for \a id are ID_SAMPLE_RATE and ID_DSD_BLOCK. - */ - int getMetaDataChunk(const ByteVector &block, unsigned char id) - { - if(id != ID_SAMPLE_RATE && id != ID_DSD_BLOCK) - return 0; - - const int blockSize = static_cast<int>(block.size()); - int index = 0; - - while(index + 1 < blockSize) { - const unsigned char metaId = static_cast<unsigned char>(block[index]); - int metaBc = static_cast<unsigned char>(block[index + 1]) << 1; - index += 2; - - if(metaId & ID_LARGE) { - if(index + 2 > blockSize) - return 0; - - metaBc += (static_cast<uint32_t>(static_cast<unsigned char>(block[index])) << 9) - + (static_cast<uint32_t>(static_cast<unsigned char>(block[index + 1])) << 17); - index += 2; - } - - if(index + metaBc > blockSize) - return 0; - - // if we got a sample rate, return it - - if(id == ID_SAMPLE_RATE && (metaId & ID_UNIQUE) == ID_SAMPLE_RATE && metaBc == 4) { - int sampleRate = static_cast<int32_t>(static_cast<unsigned char>(block[index])); - sampleRate |= static_cast<int32_t>(static_cast<unsigned char>(block[index + 1])) << 8; - sampleRate |= static_cast<int32_t>(static_cast<unsigned char>(block[index + 2])) << 16; - - // only use 4th byte if it's really there - - if(!(metaId & ID_ODD_SIZE)) - sampleRate |= static_cast<int32_t>(static_cast<unsigned char>(block[index + 3]) & 0x7f) << 24; - - return sampleRate; - } - - // if we got DSD block, return the specified rate shift amount - - if(id == ID_DSD_BLOCK && (metaId & ID_UNIQUE) == ID_DSD_BLOCK && metaBc > 0) { - const unsigned char rateShift = static_cast<unsigned char>(block[index]); - if(rateShift <= 31) - return rateShift; - } - - index += metaBc; - } - - return 0; - } - - /*! - * Given a WavPack block (complete, but not including the 32-byte header), - * parse the metadata blocks until an ID_SAMPLE_RATE block is found and - * return the non-standard sample rate contained there, or zero if no such - * block is found. - */ - int getNonStandardRate(const ByteVector &block) - { - return getMetaDataChunk(block, ID_SAMPLE_RATE); - } - - /*! - * Given a WavPack block (complete, but not including the 32-byte header), - * parse the metadata blocks until a DSD audio data block is found and return - * the sample-rate shift value contained there, or zero if no such block is - * found. The nominal sample rate of DSD audio files (found in the header) - * must be left-shifted by this amount to get the actual "byte" sample rate. - * Note that 8-bit bytes are the "atoms" of the DSD audio coding (for - * decoding, seeking, etc), so the shifted rate must be further multiplied by - * 8 to get the actual DSD bit sample rate. - */ - int getDsdRateShifter(const ByteVector &block) - { - return getMetaDataChunk(block, ID_DSD_BLOCK); - } - -} - -void WavPack::Properties::read(File *file, long streamLength) -{ - long offset = 0; - - while(true) { - file->seek(offset); - const ByteVector data = file->readBlock(32); - - if(data.size() < 32) { - debug("WavPack::Properties::read() -- data is too short."); - break; - } - - if(!data.startsWith("wvpk")) { - debug("WavPack::Properties::read() -- Block header not found."); - break; - } - - const unsigned int blockSize = data.toUInt(4, false); - const unsigned int sampleFrames = data.toUInt(12, false); - const unsigned int blockSamples = data.toUInt(20, false); - const unsigned int flags = data.toUInt(24, false); - unsigned int sampleRate = sampleRates[(flags & SRATE_MASK) >> SRATE_LSB]; - - if(!blockSamples) { // ignore blocks with no samples - offset += blockSize + 8; - continue; - } - - if(blockSize < 24 || blockSize > 1048576) { - debug("WavPack::Properties::read() -- Invalid block header found."); - break; - } - - // For non-standard sample rates or DSD audio files, we must read and parse the block - // to actually determine the sample rate. - - if(!sampleRate || (flags & DSD_FLAG)) { - const unsigned int adjustedBlockSize = blockSize - 24; - const ByteVector block = file->readBlock(adjustedBlockSize); - - if(block.size() < adjustedBlockSize) { - debug("WavPack::Properties::read() -- block is too short."); - break; - } - - if(!sampleRate) - sampleRate = static_cast<unsigned int>(getNonStandardRate(block)); - - if(sampleRate && (flags & DSD_FLAG)) - sampleRate <<= getDsdRateShifter(block); - } - - if(flags & INITIAL_BLOCK) { - d->version = data.toShort(8, false); - if(d->version < MIN_STREAM_VERS || d->version > MAX_STREAM_VERS) - break; - - d->bitsPerSample = ((flags & BYTES_STORED) + 1) * 8 - ((flags & SHIFT_MASK) >> SHIFT_LSB); - d->sampleRate = static_cast<int>(sampleRate); - d->lossless = !(flags & HYBRID_FLAG); - d->sampleFrames = sampleFrames; - } - - d->channels += (flags & MONO_FLAG) ? 1 : 2; - - if(flags & FINAL_BLOCK) - break; - - offset += blockSize + 8; - } - - if(d->sampleFrames == ~0u) - d->sampleFrames = seekFinalIndex(file, streamLength); - - if(d->sampleFrames > 0 && d->sampleRate > 0) { - const double length = d->sampleFrames * 1000.0 / d->sampleRate; - d->length = static_cast<int>(length + 0.5); - d->bitrate = static_cast<int>(streamLength * 8.0 / length + 0.5); - } -} - -unsigned int WavPack::Properties::seekFinalIndex(File *file, long streamLength) -{ - long offset = streamLength; - - while (offset >= 32) { - offset = file->rfind("wvpk", offset - 4); - - if(offset == -1) - return 0; - - file->seek(offset); - const ByteVector data = file->readBlock(32); - if(data.size() < 32) - return 0; - - const unsigned int blockSize = data.toUInt(4, false); - const unsigned int blockIndex = data.toUInt(16, false); - const unsigned int blockSamples = data.toUInt(20, false); - const unsigned int flags = data.toUInt(24, false); - const int version = data.toShort(8, false); - - // try not to trigger on a spurious "wvpk" in WavPack binary block data - - if(version < MIN_STREAM_VERS || version > MAX_STREAM_VERS || (blockSize & 1) || - blockSize < 24 || blockSize >= 1048576 || blockSamples > 131072) - continue; - - if (blockSamples && (flags & FINAL_BLOCK)) - return blockIndex + blockSamples; - } - - return 0; -} diff --git a/Frameworks/TagLib/taglib/taglib/xm/xmfile.cpp b/Frameworks/TagLib/taglib/taglib/xm/xmfile.cpp deleted file mode 100644 index 17cea265b..000000000 --- a/Frameworks/TagLib/taglib/taglib/xm/xmfile.cpp +++ /dev/null @@ -1,644 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/xm/xmfile.h> -#include <taglib/mod/modfileprivate.h> -#include <taglib/toolkit/tpropertymap.h> - -#include <string.h> -#include <algorithm> - -using namespace TagLib; -using namespace XM; - -/*! - * The Reader classes are helpers to make handling of the stripped XM - * format more easy. In the stripped XM format certain header sizes might - * be smaller than one would expect. The fields that are not included - * are then just some predefined valued (e.g. 0). - * - * Using these classes this code: - * - * if(headerSize >= 4) { - * if(!readU16L(value1)) ERROR(); - * if(headerSize >= 8) { - * if(!readU16L(value2)) ERROR(); - * if(headerSize >= 12) { - * if(!readString(value3, 22)) ERROR(); - * ... - * } - * } - * } - * - * Becomes: - * - * StructReader header; - * header.u16L(value1).u16L(value2).string(value3, 22). ...; - * if(header.read(*this, headerSize) < std::min(header.size(), headerSize)) - * ERROR(); - * - * Maybe if this is useful to other formats these classes can be moved to - * their own public files. - */ -class Reader -{ -public: - virtual ~Reader() - { - } - - /*! - * Reads associated values from \a file, but never reads more - * then \a limit bytes. - */ - virtual unsigned int read(TagLib::File &file, unsigned int limit) = 0; - - /*! - * Returns the number of bytes this reader would like to read. - */ - virtual unsigned int size() const = 0; -}; - -class SkipReader : public Reader -{ -public: - SkipReader(unsigned int size) : m_size(size) - { - } - - unsigned int read(TagLib::File &file, unsigned int limit) - { - unsigned int count = std::min(m_size, limit); - file.seek(count, TagLib::File::Current); - return count; - } - - unsigned int size() const - { - return m_size; - } - -private: - unsigned int m_size; -}; - -template<typename T> -class ValueReader : public Reader -{ -public: - ValueReader(T &value) : value(value) - { - } - -protected: - T &value; -}; - -class StringReader : public ValueReader<String> -{ -public: - StringReader(String &string, unsigned int size) : - ValueReader<String>(string), m_size(size) - { - } - - unsigned int read(TagLib::File &file, unsigned int limit) - { - ByteVector data = file.readBlock(std::min(m_size, limit)); - unsigned int count = data.size(); - int index = data.find((char) 0); - if(index > -1) { - data.resize(index); - } - data.replace('\xff', ' '); - value = data; - return count; - } - - unsigned int size() const - { - return m_size; - } - -private: - unsigned int m_size; -}; - -class ByteReader : public ValueReader<unsigned char> -{ -public: - ByteReader(unsigned char &byte) : ValueReader<unsigned char>(byte) {} - - unsigned int read(TagLib::File &file, unsigned int limit) - { - ByteVector data = file.readBlock(std::min(1U,limit)); - if(data.size() > 0) { - value = data[0]; - } - return data.size(); - } - - unsigned int size() const - { - return 1; - } -}; - -template<typename T> -class NumberReader : public ValueReader<T> -{ -public: - NumberReader(T &value, bool bigEndian) : - ValueReader<T>(value), bigEndian(bigEndian) - { - } - -protected: - bool bigEndian; -}; - -class U16Reader : public NumberReader<unsigned short> -{ -public: - U16Reader(unsigned short &value, bool bigEndian) - : NumberReader<unsigned short>(value, bigEndian) {} - - unsigned int read(TagLib::File &file, unsigned int limit) - { - ByteVector data = file.readBlock(std::min(2U,limit)); - value = data.toUShort(bigEndian); - return data.size(); - } - - unsigned int size() const - { - return 2; - } -}; - -class U32Reader : public NumberReader<unsigned long> -{ -public: - U32Reader(unsigned long &value, bool bigEndian = true) : - NumberReader<unsigned long>(value, bigEndian) - { - } - - unsigned int read(TagLib::File &file, unsigned int limit) - { - ByteVector data = file.readBlock(std::min(4U,limit)); - value = data.toUInt(bigEndian); - return data.size(); - } - - unsigned int size() const - { - return 4; - } -}; - -class StructReader : public Reader -{ -public: - StructReader() - { - m_readers.setAutoDelete(true); - } - - /*! - * Add a nested reader. This reader takes ownership. - */ - StructReader &reader(Reader *reader) - { - m_readers.append(reader); - return *this; - } - - /*! - * Don't read anything but skip \a size bytes. - */ - StructReader &skip(unsigned int size) - { - m_readers.append(new SkipReader(size)); - return *this; - } - - /*! - * Read a string of \a size characters (bytes) into \a string. - */ - StructReader &string(String &string, unsigned int size) - { - m_readers.append(new StringReader(string, size)); - return *this; - } - - /*! - * Read a byte into \a byte. - */ - StructReader &byte(unsigned char &byte) - { - m_readers.append(new ByteReader(byte)); - return *this; - } - - /*! - * Read a unsigned 16 Bit integer into \a number. The byte order - * is controlled by \a bigEndian. - */ - StructReader &u16(unsigned short &number, bool bigEndian) - { - m_readers.append(new U16Reader(number, bigEndian)); - return *this; - } - - /*! - * Read a unsigned 16 Bit little endian integer into \a number. - */ - StructReader &u16L(unsigned short &number) - { - return u16(number, false); - } - - /*! - * Read a unsigned 16 Bit big endian integer into \a number. - */ - StructReader &u16B(unsigned short &number) - { - return u16(number, true); - } - - /*! - * Read a unsigned 32 Bit integer into \a number. The byte order - * is controlled by \a bigEndian. - */ - StructReader &u32(unsigned long &number, bool bigEndian) - { - m_readers.append(new U32Reader(number, bigEndian)); - return *this; - } - - /*! - * Read a unsigned 32 Bit little endian integer into \a number. - */ - StructReader &u32L(unsigned long &number) - { - return u32(number, false); - } - - /*! - * Read a unsigned 32 Bit big endian integer into \a number. - */ - StructReader &u32B(unsigned long &number) - { - return u32(number, true); - } - - unsigned int size() const - { - unsigned int size = 0; - for(List<Reader*>::ConstIterator i = m_readers.begin(); - i != m_readers.end(); ++ i) { - size += (*i)->size(); - } - return size; - } - - unsigned int read(TagLib::File &file, unsigned int limit) - { - unsigned int sumcount = 0; - for(List<Reader*>::ConstIterator i = m_readers.begin(); - limit > 0 && i != m_readers.end(); ++ i) { - unsigned int count = (*i)->read(file, limit); - limit -= count; - sumcount += count; - } - return sumcount; - } - -private: - List<Reader*> m_readers; -}; - -class XM::File::FilePrivate -{ -public: - FilePrivate(AudioProperties::ReadStyle propertiesStyle) - : tag(), properties(propertiesStyle) - { - } - - Mod::Tag tag; - XM::Properties properties; -}; - -XM::File::File(FileName file, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(file), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -XM::File::File(IOStream *stream, bool readProperties, - AudioProperties::ReadStyle propertiesStyle) : - Mod::FileBase(stream), - d(new FilePrivate(propertiesStyle)) -{ - if(isOpen()) - read(readProperties); -} - -XM::File::~File() -{ - delete d; -} - -Mod::Tag *XM::File::tag() const -{ - return &d->tag; -} - -PropertyMap XM::File::properties() const -{ - return d->tag.properties(); -} - -PropertyMap XM::File::setProperties(const PropertyMap &properties) -{ - return d->tag.setProperties(properties); -} - -XM::Properties *XM::File::audioProperties() const -{ - return &d->properties; -} - -bool XM::File::save() -{ - if(readOnly()) { - debug("XM::File::save() - Cannot save to a read only file."); - return false; - } - - seek(17); - writeString(d->tag.title(), 20); - - seek(38); - writeString(d->tag.trackerName(), 20); - - seek(60); - unsigned long headerSize = 0; - if(!readU32L(headerSize)) - return false; - - seek(70); - unsigned short patternCount = 0; - unsigned short instrumentCount = 0; - if(!readU16L(patternCount) || !readU16L(instrumentCount)) - return false; - - long pos = 60 + headerSize; // should be long long in taglib2. - - // need to read patterns again in order to seek to the instruments: - for(unsigned short i = 0; i < patternCount; ++ i) { - seek(pos); - unsigned long patternHeaderLength = 0; - if(!readU32L(patternHeaderLength) || patternHeaderLength < 4) - return false; - - seek(pos + 7); - unsigned short dataSize = 0; - if (!readU16L(dataSize)) - return false; - - pos += patternHeaderLength + dataSize; - } - - const StringList lines = d->tag.comment().split("\n"); - unsigned int sampleNameIndex = instrumentCount; - for(unsigned short i = 0; i < instrumentCount; ++ i) { - seek(pos); - unsigned long instrumentHeaderSize = 0; - if(!readU32L(instrumentHeaderSize) || instrumentHeaderSize < 4) - return false; - - seek(pos + 4); - const unsigned int len = std::min(22UL, instrumentHeaderSize - 4U); - if(i >= lines.size()) - writeString(String(), len); - else - writeString(lines[i], len); - - unsigned short sampleCount = 0; - if(instrumentHeaderSize >= 29U) { - seek(pos + 27); - if(!readU16L(sampleCount)) - return false; - } - - unsigned long sampleHeaderSize = 0; - if(sampleCount > 0) { - seek(pos + 29); - if(instrumentHeaderSize < 33U || !readU32L(sampleHeaderSize)) - return false; - } - - pos += instrumentHeaderSize; - - for(unsigned short j = 0; j < sampleCount; ++ j) { - if(sampleHeaderSize > 4U) { - seek(pos); - unsigned long sampleLength = 0; - if(!readU32L(sampleLength)) - return false; - - if(sampleHeaderSize > 18U) { - seek(pos + 18); - const unsigned int len = std::min(sampleHeaderSize - 18U, 22UL); - if(sampleNameIndex >= lines.size()) - writeString(String(), len); - else - writeString(lines[sampleNameIndex ++], len); - } - } - pos += sampleHeaderSize; - } - } - - return true; -} - -void XM::File::read(bool) -{ - if(!isOpen()) - return; - - seek(0); - ByteVector magic = readBlock(17); - // it's all 0x00 for stripped XM files: - READ_ASSERT(magic == "Extended Module: " || magic == ByteVector(17, 0)); - - READ_STRING(d->tag.setTitle, 20); - READ_BYTE_AS(escape); - // in stripped XM files this is 0x00: - READ_ASSERT(escape == 0x1A || escape == 0x00); - - READ_STRING(d->tag.setTrackerName, 20); - READ_U16L(d->properties.setVersion); - - READ_U32L_AS(headerSize); - READ_ASSERT(headerSize >= 4); - - unsigned short length = 0; - unsigned short restartPosition = 0; - unsigned short channels = 0; - unsigned short patternCount = 0; - unsigned short instrumentCount = 0; - unsigned short flags = 0; - unsigned short tempo = 0; - unsigned short bpmSpeed = 0; - - StructReader header; - header.u16L(length) - .u16L(restartPosition) - .u16L(channels) - .u16L(patternCount) - .u16L(instrumentCount) - .u16L(flags) - .u16L(tempo) - .u16L(bpmSpeed); - - unsigned int count = header.read(*this, headerSize - 4U); - unsigned int size = std::min(headerSize - 4U, (unsigned long)header.size()); - - READ_ASSERT(count == size); - - d->properties.setLengthInPatterns(length); - d->properties.setRestartPosition(restartPosition); - d->properties.setChannels(channels); - d->properties.setPatternCount(patternCount); - d->properties.setInstrumentCount(instrumentCount); - d->properties.setFlags(flags); - d->properties.setTempo(tempo); - d->properties.setBpmSpeed(bpmSpeed); - - seek(60 + headerSize); - - // read patterns: - for(unsigned short i = 0; i < patternCount; ++ i) { - READ_U32L_AS(patternHeaderLength); - READ_ASSERT(patternHeaderLength >= 4); - - unsigned char packingType = 0; - unsigned short rowCount = 0; - unsigned short dataSize = 0; - StructReader pattern; - pattern.byte(packingType).u16L(rowCount).u16L(dataSize); - - unsigned int count = pattern.read(*this, patternHeaderLength - 4U); - READ_ASSERT(count == std::min(patternHeaderLength - 4U, (unsigned long)pattern.size())); - - seek(patternHeaderLength - (4 + count) + dataSize, Current); - } - - StringList instrumentNames; - StringList sampleNames; - unsigned int sumSampleCount = 0; - - // read instruments: - for(unsigned short i = 0; i < instrumentCount; ++ i) { - READ_U32L_AS(instrumentHeaderSize); - READ_ASSERT(instrumentHeaderSize >= 4); - - String instrumentName; - unsigned char instrumentType = 0; - unsigned short sampleCount = 0; - - StructReader instrument; - instrument.string(instrumentName, 22).byte(instrumentType).u16L(sampleCount); - - // 4 for instrumentHeaderSize - unsigned int count = 4 + instrument.read(*this, instrumentHeaderSize - 4U); - READ_ASSERT(count == std::min(instrumentHeaderSize, (unsigned long)instrument.size() + 4)); - - long offset = 0; - if(sampleCount > 0) { - unsigned long sampleHeaderSize = 0; - sumSampleCount += sampleCount; - // wouldn't know which header size to assume otherwise: - READ_ASSERT(instrumentHeaderSize >= count + 4 && readU32L(sampleHeaderSize)); - // skip unhandled header proportion: - seek(instrumentHeaderSize - count - 4, Current); - - for(unsigned short j = 0; j < sampleCount; ++ j) { - unsigned long sampleLength = 0; - unsigned long loopStart = 0; - unsigned long loopLength = 0; - unsigned char volume = 0; - unsigned char finetune = 0; - unsigned char sampleType = 0; - unsigned char panning = 0; - unsigned char noteNumber = 0; - unsigned char compression = 0; - String sampleName; - StructReader sample; - sample.u32L(sampleLength) - .u32L(loopStart) - .u32L(loopLength) - .byte(volume) - .byte(finetune) - .byte(sampleType) - .byte(panning) - .byte(noteNumber) - .byte(compression) - .string(sampleName, 22); - - unsigned int count = sample.read(*this, sampleHeaderSize); - READ_ASSERT(count == std::min(sampleHeaderSize, (unsigned long)sample.size())); - // skip unhandled header proportion: - seek(sampleHeaderSize - count, Current); - - offset += sampleLength; - sampleNames.append(sampleName); - } - } - else { - offset = instrumentHeaderSize - count; - } - instrumentNames.append(instrumentName); - seek(offset, Current); - } - - d->properties.setSampleCount(sumSampleCount); - String comment(instrumentNames.toString("\n")); - if(!sampleNames.isEmpty()) { - comment += "\n"; - comment += sampleNames.toString("\n"); - } - d->tag.setComment(comment); -} diff --git a/Frameworks/TagLib/taglib/taglib/xm/xmproperties.cpp b/Frameworks/TagLib/taglib/taglib/xm/xmproperties.cpp deleted file mode 100644 index 6fbce1b85..000000000 --- a/Frameworks/TagLib/taglib/taglib/xm/xmproperties.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <taglib/xm/xmproperties.h> - -using namespace TagLib; -using namespace XM; - -class XM::Properties::PropertiesPrivate -{ -public: - PropertiesPrivate() : - lengthInPatterns(0), - channels(0), - version(0), - restartPosition(0), - patternCount(0), - instrumentCount(0), - sampleCount(0), - flags(0), - tempo(0), - bpmSpeed(0) - { - } - - unsigned short lengthInPatterns; - int channels; - unsigned short version; - unsigned short restartPosition; - unsigned short patternCount; - unsigned short instrumentCount; - unsigned int sampleCount; - unsigned short flags; - unsigned short tempo; - unsigned short bpmSpeed; -}; - -XM::Properties::Properties(AudioProperties::ReadStyle propertiesStyle) : - AudioProperties(propertiesStyle), - d(new PropertiesPrivate()) -{ -} - -XM::Properties::~Properties() -{ - delete d; -} - -int XM::Properties::length() const -{ - return 0; -} - -int XM::Properties::lengthInSeconds() const -{ - return 0; -} - -int XM::Properties::lengthInMilliseconds() const -{ - return 0; -} - -int XM::Properties::bitrate() const -{ - return 0; -} - -int XM::Properties::sampleRate() const -{ - return 0; -} - -int XM::Properties::channels() const -{ - return d->channels; -} - -unsigned short XM::Properties::lengthInPatterns() const -{ - return d->lengthInPatterns; -} - -unsigned short XM::Properties::version() const -{ - return d->version; -} - -unsigned short XM::Properties::restartPosition() const -{ - return d->restartPosition; -} - -unsigned short XM::Properties::patternCount() const -{ - return d->patternCount; -} - -unsigned short XM::Properties::instrumentCount() const -{ - return d->instrumentCount; -} - -unsigned int XM::Properties::sampleCount() const -{ - return d->sampleCount; -} - -unsigned short XM::Properties::flags() const -{ - return d->flags; -} - -unsigned short XM::Properties::tempo() const -{ - return d->tempo; -} - -unsigned short XM::Properties::bpmSpeed() const -{ - return d->bpmSpeed; -} - -void XM::Properties::setLengthInPatterns(unsigned short lengthInPatterns) -{ - d->lengthInPatterns = lengthInPatterns; -} - -void XM::Properties::setChannels(int channels) -{ - d->channels = channels; -} - -void XM::Properties::setVersion(unsigned short version) -{ - d->version = version; -} - -void XM::Properties::setRestartPosition(unsigned short restartPosition) -{ - d->restartPosition = restartPosition; -} - -void XM::Properties::setPatternCount(unsigned short patternCount) -{ - d->patternCount = patternCount; -} - -void XM::Properties::setInstrumentCount(unsigned short instrumentCount) -{ - d->instrumentCount = instrumentCount; -} - -void XM::Properties::setSampleCount(unsigned int sampleCount) -{ - d->sampleCount = sampleCount; -} - -void XM::Properties::setFlags(unsigned short flags) -{ - d->flags = flags; -} - -void XM::Properties::setTempo(unsigned short tempo) -{ - d->tempo = tempo; -} - -void XM::Properties::setBpmSpeed(unsigned short bpmSpeed) -{ - d->bpmSpeed = bpmSpeed; -} diff --git a/Frameworks/TagLib/taglib/taglib_config.h b/Frameworks/TagLib/taglib/taglib_config.h deleted file mode 100644 index 915f130aa..000000000 --- a/Frameworks/TagLib/taglib/taglib_config.h +++ /dev/null @@ -1,11 +0,0 @@ -/* taglib_config.h. Generated by cmake from taglib_config.h.cmake */ - -#ifndef TAGLIB_TAGLIB_CONFIG_H -#define TAGLIB_TAGLIB_CONFIG_H - -/* These values are no longer used. This file is present only for compatibility reasons. */ - -#define TAGLIB_WITH_ASF 1 -#define TAGLIB_WITH_MP4 1 - -#endif diff --git a/Frameworks/TagLib/taglib/tests/CMakeLists.txt b/Frameworks/TagLib/taglib/tests/CMakeLists.txt deleted file mode 100644 index b3dbb8ee2..000000000 --- a/Frameworks/TagLib/taglib/tests/CMakeLists.txt +++ /dev/null @@ -1,80 +0,0 @@ -set(CMAKE_CXX_STANDARD 11) - -INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ape - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/asf - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v1 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/aiff - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/wav - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/trueaudio - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/opus - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mod - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/s3m - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/it - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/xm -) - -SET(test_runner_SRCS - main.cpp - test_list.cpp - test_map.cpp - test_mpeg.cpp - test_synchdata.cpp - test_trueaudio.cpp - test_bytevector.cpp - test_bytevectorlist.cpp - test_bytevectorstream.cpp - test_string.cpp - test_propertymap.cpp - test_file.cpp - test_fileref.cpp - test_id3v1.cpp - test_id3v2.cpp - test_xiphcomment.cpp - test_aiff.cpp - test_riff.cpp - test_ogg.cpp - test_oggflac.cpp - test_flac.cpp - test_flacpicture.cpp - test_flacunknownmetadatablock.cpp - test_ape.cpp - test_apetag.cpp - test_wav.cpp - test_info.cpp - test_wavpack.cpp - test_mp4.cpp - test_mp4item.cpp - test_mp4coverart.cpp - test_asf.cpp - test_mod.cpp - test_s3m.cpp - test_it.cpp - test_xm.cpp - test_mpc.cpp - test_opus.cpp - test_speex.cpp -) - -INCLUDE_DIRECTORIES(${CPPUNIT_INCLUDE_DIR}) - -ADD_EXECUTABLE(test_runner ${test_runner_SRCS}) -TARGET_LINK_LIBRARIES(test_runner tag ${CPPUNIT_LIBRARIES}) - -ADD_TEST(test_runner test_runner) -ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} -V - DEPENDS test_runner) diff --git a/Frameworks/TagLib/taglib/tests/data/005411.id3 b/Frameworks/TagLib/taglib/tests/data/005411.id3 deleted file mode 100644 index ab2e0997a0bcbf27aa169a09fd3f730d8319de9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38402 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 AdjJ3c diff --git a/Frameworks/TagLib/taglib/tests/data/64bit.mp4 b/Frameworks/TagLib/taglib/tests/data/64bit.mp4 deleted file mode 100644 index 0bd7f9f33dfa28317996eab962cce5cb2d2afc0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmZQzU|`J6&o5(u0AC=*SejCj2<6*?__?WYzAjW;F*B#Q1jv?5F38LQ(t;_8U^Sv3 Gc}4)(BMUG9 diff --git a/Frameworks/TagLib/taglib/tests/data/alaw.aifc b/Frameworks/TagLib/taglib/tests/data/alaw.aifc deleted file mode 100644 index 33b4ea2a5734c10af92aa556de6c50aa102efac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1890 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 CPx9XY diff --git a/Frameworks/TagLib/taglib/tests/data/alaw.wav b/Frameworks/TagLib/taglib/tests/data/alaw.wav deleted file mode 100644 index cf548effcb450bf6a22521c2e22645597bec2d21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56858 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 diff --git a/Frameworks/TagLib/taglib/tests/data/ape-id3v1.mp3 b/Frameworks/TagLib/taglib/tests/data/ape-id3v1.mp3 deleted file mode 100644 index a761d6ca6f027cce2856921f84ec65681565b4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8419 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 HdGCJ!#`IB_ diff --git a/Frameworks/TagLib/taglib/tests/data/ape-id3v2.mp3 b/Frameworks/TagLib/taglib/tests/data/ape-id3v2.mp3 deleted file mode 100644 index 72c1291d1f8a4ce81a080448a370e283481a6101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9341 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 diff --git a/Frameworks/TagLib/taglib/tests/data/ape.mp3 b/Frameworks/TagLib/taglib/tests/data/ape.mp3 deleted file mode 100644 index a17e26993c2f74e714df0e46dc70de148e527dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8291 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 diff --git a/Frameworks/TagLib/taglib/tests/data/bladeenc.mp3 b/Frameworks/TagLib/taglib/tests/data/bladeenc.mp3 deleted file mode 100644 index e3d1a4b51f46b13dbb62105a896466f71b2d71e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28422 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 TQ{Lgz37b4<6&cL`>)-zY=z)&) diff --git a/Frameworks/TagLib/taglib/tests/data/blank_video.m4v b/Frameworks/TagLib/taglib/tests/data/blank_video.m4v deleted file mode 100644 index 4bb15ded33f50b99b8887adbc62b2236fa18b860..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15018 zcmeI2?`s@I7{{O8q^4rAXSvjfQ8y5%7O%{OgcPZ8sX<$)=o_VqN-nqCyQ8<+b9e7F zvFg02(3iebTZMoH75odtA1C-iMEXJm!B<hy7kya@`a(FLXZAL;-JL=TQc8J-+net^ zGdn*%`^@az?g7Bmsd&BXcjxB-LpuumMDPCD4}w0LI)1<9Qr@M%Coj?gV4uX}I9Na* z9j-~BIhU^Kk|s5V#>sZzMwD5afM<roM<$2Z&>#-$r_uIOd|Gv6FBM2Sk~U#4lkJ+2 zYdkHPmZ_nzCHAqUEVG^)Q^V6<CyJFtb>DtWX;qhf*mv7?Ogp}t0HM63AD34Ee*fXQ z@5lm`mfH!H!mobY^-@jo^Oz2f)z{pPM`f%({Px-@6y?6JD$RC#)=l!J-O!^l6exdB zFYGvpwmy#H)eh=UqBv4lDY3(Q^?sv@nnJctWw0d<`xr_(C=^O0=FIoh5HAH(u+}H6 zqk{*Bzrp?{#=qL~n?KJ2?7awMpUER9zmOJ;w=Nx#Sh&0zhse_YF{x&zgz;1qE6!x1 zMjrr}_zB}Oc3)lik)84$Mq2}83N{{OqiatwrSBf;b69QzbsDfv)#hDjxS0oztr3hm zf&JTk6=3!R_T__||5|z?sd3;bIGHkm2B=1vvE|dXY#!JPdEeA+e2#PDQyBT?iL7r% zL2oTv&G9IB+Cv|Ao@{qK=h-lDdkxQZR@a@Uf}q*)9(5Kf)oNu<RLQffZ%3|MiW1jN ztJ;a%zB6*$cFt{Iz{RINsz_l_+6M9+ppjr$@S<dq7(0Ne@rP=YVBM>7to}c{O8Zn< zl~!MOSmZ2u$2*8;Qnty-_M<&@vhqlOnR7Bc-@<a#@OHctou2c5m(A9fYlFs~b<904 zqGSGrPIsl}#t7TK?0XceFq3r<bgHo4?b7;^2K%davO?b1jMPebk6TwKtE(lj*mN_B zU5v}wjH;L;pE-;tQJ%==9i3lVTwY!j^O$j+@P0Gu_Au|=?0MHIdo#_{FaOr-mo?Rl zT6kl#N?Bgve5F!})++S{e{rL?=pAaRSxtAS;7}u=aopyi`n8Wh(Br@N&Yit;IQ;kV zGK`BeAMPl8)cfUS{xE@CiNGs3VJDW(I|l~Sw97(S({e>ispY1Y11-0<<pt2v(XyuH zik4E#O)Uo`XJ8j>-aj1N=1a;A4Ntr=Q(`K4WJ12iSn^PCkF>#53{+%~v6!%Q8H)i6 zQz=3LA!BxyA{QZFXDkLRZ!#4F71?JjCM+RiF<^<9ih&C6<%&>n<Im1wz#`;ZJco*0 zgyf%zMJgcpk%EZ|JBxt|{vP5vWZ=Sc$N&YMg?}X)xCq%t>%`K9t?l;!=Rr$H%bJ!e zT1qW9wH#=<wJmS_4Fzu;idRhVbJQXfoZXDYgoXFsCMvvdFi^oc^foWJMKJvGx5xw^ zcJP90#_}r9p&}T;_n{&boJ0JI#)yR<q?)ks%3`7-*;$NO&hUMx$c6u#Rb)bYIes)| Y;KG|00~B-?z7H9=2)+*)sDN1i4_CKh+5i9m diff --git a/Frameworks/TagLib/taglib/tests/data/broken-tenc.id3 b/Frameworks/TagLib/taglib/tests/data/broken-tenc.id3 deleted file mode 100644 index 809040506f29b83c48e055251e164c807d3b2997..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmcJL!Ab)$5QhKNDhg73gj{+po36XAH`8gLrDn4%1ManlMT@WqrFWmnC-A*I)X6sX z4f=<ld^3LtldKlm2%?KI+lmAdmEg5)+t5P-F!?&PWwEbqMDorFzKgs5ZOi+<@{NN^ zgR+7m*y0Ft(*KYJ&}Cus2xN!o!H^jsH|1=Iw0=xaAal4d$E8?<S3DEA6Z7VyQ@&TO z1J_nd=UQykasxIm^H}SrG6y%bmO5UsXu@;D;bTa?6220b=?;hA?`PoV9_ugJfZNaT Q2S}!pD`4^ij1FheA4Fn><NyEw diff --git a/Frameworks/TagLib/taglib/tests/data/changed.mod b/Frameworks/TagLib/taglib/tests/data/changed.mod deleted file mode 100644 index 13dcea8bc98054152611f31515822de7c1254add..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3132 zcmYe!NX$!5O;ISxEXhe_fPj#U%wmO{%)C^E^30qZg``x4lA_W)pqv8`Ga_Vxs`9h- zAbMc3a2`6t0Vu$TE(qt3%EE&J$QTWc(a=B+0c18fZ7|j&3k?L@!r8-bAnYBrb2J1- TLtr!nMnhmU1V%$(U_$@^D@Pm& diff --git a/Frameworks/TagLib/taglib/tests/data/changed.s3m b/Frameworks/TagLib/taglib/tests/data/changed.s3m deleted file mode 100644 index 37bd49cdd47c365f265f3f56bf53f0cac67be090..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmYe!NX$!5O;ISxEXhe_Km}3)3=B*RtPG4mVFh6(hG6F)UkA2Y1A#wC>NprVnYfs_ zS$J4^+4$J`|6>4720jL11_=gPBu%)O4Gp+tK;jNSyjlTBAc2sK%wh!~O3YKp%quP_ zD$PyJD^bWx%uQ89QiYxA02D?y&o@7%G$&OdEfYlK7v(0F6l2$nMHHKPiAkl!spw84 o(nzf46)WVH=9FaSWagzRB<JUXyj!e?#W7ffu$iZe8-Ps!07j!oy8r+H diff --git a/Frameworks/TagLib/taglib/tests/data/changed.xm b/Frameworks/TagLib/taglib/tests/data/changed.xm deleted file mode 100644 index bb5db3ddd45e3a5bda8b016e0ae867179f26b4fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5471 zcmeH}%WA_g5JktP^s&z>5YV!#en6q%O&5V?)%?IDR#Jf_6-$P0O7rLKjODm-Uu07V zcm`V!&sd<ty|V9LqIRV&)xwuerEk^x3Eh_F(Zotais=%!4`$WPy6!BSWB_!*CAB-c z&*61gGQ!yv@3{cTcM_u}a6!(PyAbQfY8RD5t3&699Im_3|8@l^mg3Q&s9qgio#(Cl zX`3AHZ>j&QEr5;*ctrbL=>d>0FQq!HwF=(qXg<jSFjmgsstI&T;hrfik&PNFR>6O# z!noGnvIK)N?hy32Rk(+8bBJUxE?Tt?9`%zMjcohDR2xHL-uT*L3~4b=-u)Pq;N-6% oNkStK1VVC%C_$7UN=O7m38Dm1LQg>KAa>}*ApZ$shZD8K2XpUN-T(jq diff --git a/Frameworks/TagLib/taglib/tests/data/click.mpc b/Frameworks/TagLib/taglib/tests/data/click.mpc deleted file mode 100644 index a41f14e9ea2175684ff2ab74d3682ddbd0785765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 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 diff --git a/Frameworks/TagLib/taglib/tests/data/click.wv b/Frameworks/TagLib/taglib/tests/data/click.wv deleted file mode 100644 index f8bd1a8513ca97bae632a2a144fa90c9582bcd48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3176 zcmXArc|g(!AI5*c4+Mt<cm#?Dh)ow2qIqI*cs9&4uVsQ)*484A)U6eWDBfo(W?os^ za+{`=E}P(;X_`7a-VRinI$e3KSz5mBeLw$vpFcj|=kF)+jOc3t8UPR=0El&f|MBm& zBy@md#_t;`2EHDyt~46}2;>B~M4yZ&V?Q|%017xa0syud3V;9>h!n;Pflm$>78vLj z;10mxZ{y#(17`oMZyp3cHUA$t;?v{5K<FSD6$Sk_X0E`218>eX)<8aKzlqM@IM)cl zRtQx@XKN$`8_logi~!iN?qEzwjZA4_4TS+F&$mgkDL|W+2tB285?mfq->Y;{CVPW1 z9`Ik&ocJE0#ja2)07&A8csY-X5N4o8521q$07!CiGn5ULnCL*hIgcj+V%&+QO6x*h znjHe?SwSX>*QH2QnW9Eg4vYT)A+zogBnaRrED1Y|jDIZoQm-2Uu**Il28WxhpnCc2 z15Nl5Qvw|{1o~wA*A#4!K{}7j<wJKifoe&g#zZLzHgV7)sP0+A`Hw$}QqnUk$Q0n{ zwjVj0_d7pqZA5Hty{Ru=-Fj2DRkhi&b$-X>R%hPxtpl&OY(IwmFgaPJvG0t~z>+g( z^*f{cz1C$*rJ9W!gPDmR%2+cAufcbOH<qT-QePU0NylaM-8Bg%t2zh<-PdHym`Lib z{3KLSS=-;bdxJkv?;dV?Mt2~EeCwaL<Mv<eFW0idBLAt=^8BZc^B!?Qr<hfJs}*_1 z5=sQ^yeaJUf)ybUOAeZ%Sj*6T`sQ`!``ABMa~?8ePa%0p<mz<XLVn>FGm!~gZn*3Z zh)`B95?(6Gy5Q`ii+EsTTZ&gY6RP*~GnY=g4=3`ycYob{B6!~F)C<pZqu+!e-ZRLg zU*7H9<2^3lH&M37(lVe%IxCr<^V-LNO0fc!se<FSGvioxyzP$vSj_eH=AwIde2lR) z8SJ|_n3)Res=YqM!^O>VuO&s()A8H?wB3B+@|~xwq{JSZ6S?8m+i?QDbz4)thjV4p zWjSJ;F3PhI#SYA&*9As&7GXR{4>RB}87ByFoPMYvLgvjhGNJ%o(WXb!A!%XC>#-xE zRa?Px|22>5@Iv8V>ZFq1l6UCr<XeGq&7T;MNqEE}dFsj#_bIMS&(T|;%O7)xZjSK> z5<e6U=ae-PgaFF%g<Z8bZD%9-V3Yv|%Z0PAa7Mv>$k?IQpuxc6riP*(wNb`&fRgGp zLBkHd=>8Cz`-t=^(Kv5$KErCtV>F;LD50UzcC#xg{)hO-(+j?k?g5v=c{1s2l7U@D z#LJSjv`3w!;fR%0o6odOAWFIK(p+65?|=e@so-0~roDU{*&WH<?Mtlh)~8auBO}UJ z(+*#?ynLx&p4PzPdvygh!}s^I_LmMgPv9_=a3uBu((To;9_)jz?q;Q9<n>V<vk2w& z?)!Dkw!Ycd(Cc6kiF?8%LbYZy`+a-hPt^snOQ&PHA2PB-F(gM3G&6U2$i%;5_8F}A z+`^VJ{*IF;BW|>UG@YvK)Qjf1l%y^Xrr$I;IPd<d4@(XYZoy$5?F;AF&<gm)yIeTa z>Edn|k!q5?X#lgyL^p<3n7*05IFyo5s_=9ws=;~^HEF83`l!05=;uPbUeaU9(mGV& zUd~($ONzTh6mej$6bkD~@I3XXv-c#_JUG8hTEu&8*+k+OsvLptrs@6<xK>I;Oh8ao zr@A>)9S0_@AxRd;`CS|N3L(InFq?w<t$c3awBW^@c%aqmH{RQQ2<4hLXsMH%Zhv6; zw5SuGLx{YC)mIytoTe9~8fxFZpYKL7Zr_@|<{UBolUmocTN_#rk275%)n7s&A{Hr) zX|BvWB|YLqI}r%$(C1iB$e9I}ueO(69-|TgNL$rNw%GX0Uiq!2ynNSR+6@xzbK?qp zm!FQpoM<LbgKP}fG+y3c*xT{h`I&Xd@wl(V8{H0ptxXlENQP9xhYtVX9sTF>J~UKM zRqm*3m1Jii#fgF!FDHYhh*N{f(w{F39WqO2D`})BEKWvM6~<`qNge(`36pW1b#=z< z$@al`4FMm+z|%lKvi8Yy{YHOjeb!QYI;9QGE%Eu5kt_=y%^*1y&T-5+4iZ)Mw1)EF zhV9>pZHG8oyv=!`c_sH5;4(I0H~Emvxe8)t+X~8q5_xh>MTE$aS%mnN$6B>~=0iAj zdvBr@8%*p0%uH&H&>8u{U8mvE5AVPo6j60Kv#<#D@>{~z>+h}UZh_OGg!iIFjgRMy zyR?Vca<?gA{9)~tWX{lAk1-3WvS;)AkMCg2$<OS1+9|x&pKssGKW%}s8gToL3nn?o z^YyLZd#=EL|LH)>`gM1L`Qa3$<uH5{h=X2+`{iE>uWqXRq3Vy`F2B~@6AK{5VFDuD z^GbwSZ4C@lzx+AEOs+}xc6>>1tku@*;7@tXgO72Ccld#;c^v^yU8wp<H3sr|S(Ak> zXFX$HR0|tHN{%HTw<|8SDRSPao1S#H*9hKbA$MQQFy@UE*wZRq!2CJn31V0N)gpJq zXui7HMVKGlLxWxe@(wdL-M6uVjA3KQ0P)0$;uNV)j?MBTo1hOzd?RHEu0D{mCDWi) zYlRAYKl?IC5UU8NLjH-1HpaPL51}To%^6mNq5V_<l@s+Jk2p{;h$In~c1#Z4TFRnT z>QgfN1kC=E>R7Bw5Pmu6IQm7Wbgs}B`rB3u)lnUYadXdI5De^l!mTCRh0nFsG_w7< z30b3Rcw^P06|dOStCfrPX3>{16O#RPXyNpwZu~5+lx-Px**+4_NkLXk!DkGQZsWZ? z$hiOsI8w3yPPXpvk-r{a^D#kP5+8v%g+0VkcZC9lk`U+Edw!`wDIHmOrA17IQxHQt zOanR}1pV})9~8O`T3)LQzzy(|N_bQ6EymZ6JQFr;&=r1k(?YgJ;e?x-fj^%59fA<o zKVs7{ZtAiS*P62q&UKX1F6PEN$)JIo_d=hf&?A@Tt0MHz;{x|&r`%M(GyWqC)~P#V z0hO0_WZqosOSazTRJ&UnJ2?7{k|S$c@C%+(KKIGcs4DW-Yh3*WY4Sk);uOn~=wLk% zqt%d|EgVeC!Z*}F?!!@&NCuqS-mqxl#lhIl##tL&YCm))qdrwDi-KNaE=T$GWLP~W zX?>k@am>3qjAPoPr%&}yo4K*Vp$l4|^V&MOc}!N?d_}jw_dVH46EZAX;xstMLcj?G z%Ajn#o4hYO=A!vk{;bxjn}hU}dh>$)_Oo}PIF!lTjyBYp%nT_m6to{GzY7iZ69-qj zkB9_)t=1L|p_DV=^`!#F#&1zFB-$1F#O}%}s$T}gI2S5Jx;Ng?-?~C5GS#lXN^+bI z8yl^DCc7z1rbw$I<BwRuJe(v)AU#w=ZN-Qi7k^Y!BX>L(FeW)ZVra+jqFGt!aRy+h z6dPJYrkEl2ZbVTflAZMG3x8)Jqw10J8ila(<%Vb9cbROx!IZ+7wyTisYadrsgSV~X z%?R6e&Qe`D+_Yo)em*^Cu*JR05Y!1>Eg$`Cs@(n9mTFr=JFyQg9MYY08`b4vsB}au z-Q-y7>?ZeOIRm)wZ(x4#d+bcQ>9_NQv9Dg|7@iSGmHkk?89a@}XqUv@NNYEB_Bf(L zQ0LLp(>10SQBn8o$$4aq<K%8r^JhPjZ2Wof43y~Xy%qs6bBa7EHS#i=O~yw6ApjGv zIdxyZxecT5jI<JKQ&VS+x5t;WN@j|%=^&B0Kd56G+{V}olxI_D8m?Em;Hl#S1qXAZ z?w(UaPpZ&xL0*V9i1<1~o~|4y#lDU0NwTK6^6&;cie()-5z`aEDhLBg1Qg0C@w?Am zPh1lo!x>&7r$$)FX_e+*eG6?+?Imk7s+93%D^lw`1Fw#RL+}vRNye?6@-I)~!+8|O zmkc|VP9>V-ebz3`Q$OD;zf-Sr_8p{)-jpYrc%s^E&ODZlE%qAos=+GH_Dw+{sj*Vy z16n$Wv>0gGI0g{0o64x^$Qtpuu9%zxT*QGQ0<lGx#B<{%C~KZFW?Z0C5-#Bj43T(~ zsI#jZfr!D@(pyDZksi*b#elafqL2fCX#nK0bbcy6)e!$_*^40n!-_0+9@?(^t9I5; zUOT2Z5HXS^F8p`9Bdr8wP%AOvlf%D%>jh4mi?$P^(WYYSg;sy$e6y8<f&AbaE{qVf Gx%FRQMM#za diff --git a/Frameworks/TagLib/taglib/tests/data/compressed_id3_frame.mp3 b/Frameworks/TagLib/taglib/tests/data/compressed_id3_frame.mp3 deleted file mode 100644 index 824d036fa4459e57ad671a8c3bb910e384b94ff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5000 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 D#nQzE diff --git a/Frameworks/TagLib/taglib/tests/data/correctness_gain_silent_output.opus b/Frameworks/TagLib/taglib/tests/data/correctness_gain_silent_output.opus deleted file mode 100644 index 00972c42f64f285610c17ab548ac0bfa6960bdff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35506 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 diff --git a/Frameworks/TagLib/taglib/tests/data/covr-junk.m4a b/Frameworks/TagLib/taglib/tests/data/covr-junk.m4a deleted file mode 100644 index ac80cb29d2585e9d728a86b5027973690f51d174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5108 zcmeHK-)qxw5Wgf{e{Jnj?c7gBwr+EX>$Gmjbg*@+oe|w+6ciC=)}*ekX-1O`6_MhT zBErBui7@d&7>dvOAXFF#J}Wo};-i0nuM+Rl)U8DXVW1EBw8`D~^8Mc3_ru*cEdaD+ zj2lbp(ohT#B(u7v0@S@$Wy$#B0?1|OGm?}Rjz(ic02A;~aK&J%3&d5n6(U7PaY%3~ z!RZ303;u^L00>4@O<TdUJg2TK$aJWezMtB9dsY;InOlXr=Ka6`eRohbKy%G_d}rqG zG!~65SxwgIAzv&OJuqXMjiw3UGK_+>h~~@2qLmBtE0;<X%4Zj>&^7V@oR5oF<*bA* z1XZrtFT6+qd%I-2?^=*^g-R%0Th3Q>TXOHzY(9enURTSG><2w^+1?=+6naje6dRTc zIiaj`_jO}Fhx%3B&@Ix-cDR6VR7#Gpvn>{QGGKayV~SoTk3;gh(cnTE9&Z9@!yw-P z>gVgw!tUeUC>Y{f&<(@l8+975<02Fkf-T{-hH2a+gN-LB(HZ!h%i-W3)j&ViWEx`= zsAj1h4%?E7x5L)4w$mEw1hNY_^$h?g;_xGl)77<)eyrNZ9w7K4%d#P%Y*!VM7OHw5 z&x?Yzv_$P%0lSvX=?0FT4j@o=sETAA5NS<~(qtu?O)cjYYPxV<QWaWBmg$+<bEsa! zAIlUBlfev+*w}Lg13XJ>D|C#_*%5;j@!t9Aser%Dk7__XotQ;Q6tiBs|M>8T(mo(2 z;;HM8)3?^&mk^tDD*=Rj%*E$-w=KrSQ`3o;6IbqFm_gfp09S(f$@~iZnWUHmhG9U) z518992|l;S>v8+MUa#Nps}D9e1_Oa$N4P1}+}#<8bae_s@1fy=-h;7zL5PkG#*UAS zj*j*WOeEtclEWuQN5~1|_xpnl!S=?+_K`lJZ{)9GmLTNC{jwa>4Qz<vLX5cyO_(a> zz6%~ShxuA7&}7<H6<ltb9ICP6wm(Ay$6y#P1Y_`^_^Q?1!i9XLCTu5>jreQ|_4eI$ yky3O+h!>2kRcc)uhDNNn?w*p2$0zN7TJB4kf}&tz4jcv?1{?+)1{?<VfPtT=7Y1Aa diff --git a/Frameworks/TagLib/taglib/tests/data/dsd_stereo.wv b/Frameworks/TagLib/taglib/tests/data/dsd_stereo.wv deleted file mode 100644 index 80619270fd5d5851887eef497f535ece8427fe56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52595 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%0D}~_LAV2(o?6A%P~bc#88C^ z3SJTO^5Cpf-=?GdG~nWKmA`y9-$7%#U9!E_oj69U#;>)tnsl|y`Rq;=n7Vja{j^Fy zBfzc}2LQ(qE$+sh&y=_AI(W10L|}Vrr5d{zU$eYp_0H5j^?;}~9Df3lJpWE(lSL0l z!m>s4cH7L9Ic|WtlCS}v{UK9g(R%WifQR(_KXe9b+pZ%jVCsx8`vGqlF>^lA*Br1V zG^r$y8Bs8Fc(l?qQ+R;~cz?UYuoLz!qwec#9)o@+t?q&q#%tvL&q?8HBSbec3n(a5 z<*%We2zM#Nklg+4dM#9i)N)4{18aE7+x&Zrwz-m4Int@()gtw`bMObHGnbRyj<a`y zL(*$6DHkS9zp&8N-R~(?y7*!u%c%LXnrrOy`ddmWfrC<mVk7NG&=AzDm|uhG)q4-% ziAbOD-dE<@$y`&u1PO4Ovbs2>=2&-S52K0uu+~J`Yea5p4A?NR+V->B1svVX-o}|n zIkvpHa}8-~AGtkoevyzuD%Ey<AX3}nnM(3M=t}LY)XrqM@@HLOpBfDs?BBTql%Xqv z;eSV4n;@}@Fs6X1OtzdAAns0Q$n4C+4^qkFVn!LFXyu(OrNT{SbAcbPF)TN0G%J+> zEvtIj?qx!*rS^9RH{4)4+b;A6%L4+HRv<a#BZf#9dFhg$oraaCMQ-+EpSTYMT%AoR z_R-Wlt3I3lZ$z!37D*XTRb`HufZf#e1uta566rZ7v4MVq_s9vdh?xK%=*3whfDkN# z5Qv%cO+0`ssEua)`UnF`Js($m{-ICZ{u_?&vBU=|L0{F63Gv@~u48*vUaeQXV$*TO zbQ#@ti4)mulj5O}1NGDzQlG^J2{6i2FVgKIk4jc=Qz5j)yy*@)i-$u?<>`9j{n!3R zk2<&t*K}_L7)L{qWfcE_rzr`fvOW#$X<0`5u{Ah-!8^~2HF9-ATSjmRadUm(iGvla z>Y>)b_&p8po3oT+J*<To19|F)FhhE9F|&Qs@?s4wHX3O+L1lL-KIK+yr$>J~LmuDz zI%`oR6GZQqRr}Sg>)Cqk>=@KyH9vQ?cN>K)`}K+4(vX7Sw_6(fp{<-xJ-8NKmi!Gw zbkzRXCMAZGRt92PAYzQ>qY5Go(KWGO8a#`R^362a^J5~Mqav0Up*nL(385}6XE#Ab z^rFuuwk%9Rj0Wn^VsDBx;Alljv$d0;{^+h220q@c@pLIr<h5d&&YgbOktJpsFX<bB zkrA^=!_AZW&foJHZ47reEbdMmZ-xhB>FZ{Chp4In%@xqw${|LuPm&f)tC>UI$b=`X z+q8SgQd!b+&Y))m->CV-t1^X9K?vLT1e*5V5lgwrkgo`f5HumFE@ejeo9gl8^S#5% zO$E_!#Lf)gaqlZIzP({OVcaE$)y8j#pB;XDv@$bL_8qz#qkH2Rf#p0o_@c?>z>|Gt zc3jk1^W|!UzG1Lkz#?VX`VD#`>S|W#rHkd-8=2*J;9kc&<C^<bVX*Gu#Gi&aD|v?; zzu$}M#B+E8M>VSw=vmlYijO9f|ISB{6}@Ih@dQ4!^R@bju3oYEX$d+ugSE4%KXRYq z5NN7KQls)iVU0a?7nJh@JB%E)3bWAczZ77=^H*Z*Gyp&$C)GLnZ?OLhNitlcOdfF6 zAeKK7B@|abx;M*F@BE%MgqZ8WAqINZALs#qobx%_f3Fq(I{^Sp{{RR&2pJdzFhQaH zoP-U7{epP^X~2;|K5plAKM!F;C$y`u1<J`)Si&vT#SQHrBzf^a>psrGz5s}ik1*0t p*v!vOSl0>jAChpilZ!V1bWZ&L!^X`C4FIXCs{RjZQUA;V{ttRSp{f7? diff --git a/Frameworks/TagLib/taglib/tests/data/duplicate_id3v2.aiff b/Frameworks/TagLib/taglib/tests/data/duplicate_id3v2.aiff deleted file mode 100644 index 6703583f2126062657b1f854e1165d7c84968893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8124 zcmeI0&2D5x5{0kZ<;E})LM+%auh0!^M9)A=E%7s&_7fmjv;-Symb}p{c{ZT2O>w^X zB5sypBpv{lRIYpTW<;JiaUwFWpML(|Pq*#eAD=vX`t;wQf12y<?d@#a{_(^1)`xHY z@1xx3^ZfZ|xq9c7clGzd@p`*B-fj=J?RY%?mg`@)*N(5Yhc$k^9Wu6U=NWx?yotvL z%sn34!&#o5XZ$?BJh>>#n|M3R9iwNNTi^I+4wl^KlfSvIznPcO>+Lf37x_J}r}*Fw zOcz<@&|kdh*VPY=Ni@A?`@fCVZF%Qvd@uqI#}a>|2;y83(adFSxCjsX6Bqz7AJ@Fz z*}>A8u1d^ua~}JA@)zu|HT-P3yQxSAt5#W|XM$#;?zQ9f5L^#~?+_Aib4Au}8xwr8 z(p{XOTlw3cX6E^cuZ3<<-i>#%2>WtzcLbHxx_L_8YF1(~TQkBaalwL`7+%Jk_{SIQ zmHOgoqJ<T_;^9G<xGbeaKg6CfXa2Iie*8JAR==&*#)HjusXzHBi<O^ZJoD73<4lni zGPa}NbwDi<8T`wSnNTUJZn8_(O9SyZSEI>c#^@cro4Lgjm_{pPSiC9<jB6&C=8oJ@ zSHESfYObC&w$j~cB~cSrHFK+5RE#&Rz}8u5ZYqe%ok~)vRx`1JQH74$j825=rZZpj zi1D=AD#w-Ov4BY|$PZWM;iT%~XT{w5s4QV&HY?+q)m2g~Ox~AAy-$WpXXS?(L|D~Y zt8wKW=y_f%aMK@EV)n&-$~xLv3}av3D(-U7EUt*HJ1|=puIV*=`&qrgdBN57Fts>b zgBYLM%C+8GM^$5>DyBtN>(Eh3eT8MRG6=w-H&&dEtFA_C><7Ql)8da_C%4T{#)z%z zhgJI?54WlHpHuVLia~9_9y%OPT922C2TzU5-SAa>p|xde71*h(n`eIKC0At2`dEF* z49dmCT@_oFDgw(=9sPz$c}9ec8u9<l$d1?g2m3@dHDEVjG=7<%Z*{2nWxtl==|2;Z zwImnhV|s;|us)WmtSq?}cg0W|96YD}QYCw)P)AD*YM}Tjq$`6RW4xlt<TTH@LO)em z9T{0Zv@Wf<;xi-enVxA%*X6-ERmatr)Y_bO%6EBlhrQ|bdd<pI5S^?iK1M*fd(T?o zCV!Wf;pA2CPN)n^W^mqm<M>l)?=16S%H3U*`kgM?dB}RJ4p`Uc_8l^2os|xPq*2D^ zR9SeypSsJV(u-r(fb5awlbN|&b%bZL?W$mAu4*zGca!Tx$oU11nyX^1YNC8v6;<Us zpVI?H2dX*Y8L=D=9^=QuVuICX#i@7k8RP7lt%-_lPJ*0G8*6hgIU^=_a<feDV22I5 znrU`qjhYq%YA`3Bve`d|52BZWLQ)x?+F8u$*ACnHig)X7xUY!Ie%5y;<7Q`Zta6Lx ziWP*TeXCO)qcL+qBwdU7ReS1wp@K7b=}1W4{uy=PZ_e5D+45T+?N4~#?K7@-GB`bU zPF|B$tH~ILf9;rQf1Rtfzkn4Shw6{Na#s-=_a18@EZ&GKbBvsfv3sa=Pvk2{RK|>1 zk&AEGG!ML&akl4tCbO*S8mhvx6nhPdz=x*~wL~u%mGe8S$*IwtR%M=-#nQhx9G$(8 z_cLS5)6Bo9eRe8%ItfViJqS>cs-74skC|si$seo~(x4?a)xs&_GOP5;?N_vPsa;d? zRaMrCmB*k!V|g|miKy%ht;Kpqt;iucEU#sC_Y8xkh>TCIRlH74@LXQvX)2hN+&Mjk zFDpG%<{G)EM!$NRo++lm*4Zqc*cDnc_}R0F{fhOJT{%}1qXuwI)~xA?p!g%;%)sYf zSFOcS=~Vl~HHwq5S|>hyZ<|cZ4*RSpD5_L@{w7bcI92MXY2{S4`VKrbj&1FI?ad6x zk|>Q<TXr+K7^Pb`6X&dN{8S$25tTZ4rZV-5#ol{6w>-(WIJA1JN*OiMw$PG!TqXXB z#p)U5iIZr3XIBB_Yk2f()u6gC5|GHQ3d>!iLZ_aZ==JG4nO7+Ol!LOY+>9cKZkSqE zagdMqDtT1{mSXl)hC=NTMA7j#);;p}HC`rScV_=jW3{P;g$N5yy6NQcVMlo*U1d~Z zR#_h$?Bi&)YM?d9U1Hb~nfuX}yL{;=GnnNUtJ5Ae=g-zh&l|nSH&tsLlV9FsF5`m{ z>YtdzQNLM740~5@TbReMk&Wg?1Nq(a$Ns_p{MKHhPJL5qG`I^|73ceqD)7C<JzK@F z7V%Autn7_)_YNDUt(N$n{xey#W0Mo&g*lkCf{9F>m=XNQIY8&Gqh$cziYxYHV&yH3 zlU!%HYEwo*dAIAKiFJ+xJrVlWvCa@!%eXkF!h@y|O+A&Wh^a>pc~5;k{ypz_A|TdQ zPG%LNVrZ1%xrf#05%MbMTIqchQ$3~`R!23`jPE(XQ!#zY^5|#QaYtP55)&0RXhqdg zZLmzWbw%YF%u!ugy)vQ=c0`Nn%%&=X@v6j%udp=}?z8OtUZG{IRnYz)?eaGjYEHJR zkDp)R>e)x{{d3z6ALKVZZ`&^4zj}7{I2W(wd-dYw*Izxldh*G?df>^|Uwr?~qpSaX z{D`UfKKb_Li|<}?cmKI(;GTiMDFZLQ{HreV_>W!W@t?W~UFZID&%iwce^Um22R5}3 AyZ`_I diff --git a/Frameworks/TagLib/taglib/tests/data/duplicate_id3v2.mp3 b/Frameworks/TagLib/taglib/tests/data/duplicate_id3v2.mp3 deleted file mode 100644 index 34f4f158ce454d71677f450d1db8c40abbb85d30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10138 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 diff --git a/Frameworks/TagLib/taglib/tests/data/duplicate_tags.wav b/Frameworks/TagLib/taglib/tests/data/duplicate_tags.wav deleted file mode 100644 index b9865bbd57d28df1f68a9d91cc84fb5dca6eab50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17052 zcmeI(L2ANK5XSM(D%hPK!7C)X>89|C2|Q3M>7%YKS_mW?ecr?acs!5cq+L`kr3c7= z;3b*lO(4I;Fq;%U&yO$C%DrcwbsP;Pb@ZTfS2_)(o`%}2<GOmX2Lu8LAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q4g60Y4p&o_ms=?I=A?f)A-(^lgPQR@)@Fnf<u=b;DI3hdK$%ENQmda=TdW zW0MgGAkb2Qa`RsoN$<Nz`m2jHU57vbftCu){9BmVxBEr@>Rl182MoV(^PiE#_AHBO VlYdVn(%-eIz3-~ly39?j<rm4_JZ=C0 diff --git a/Frameworks/TagLib/taglib/tests/data/empty-seektable.flac b/Frameworks/TagLib/taglib/tests/data/empty-seektable.flac deleted file mode 100644 index 20dd90d91665a122693ab1150771f7e11b2a136a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmYfENpxmlU{DfZ5CBpF3^snE9nA%ds%Am`S618!`pG=WiAO1a?vo!EnSt^w3=A3y zK)NV3Ewv~$FF92qCo{>-$I)5AP|r}$Si#7^z}&#n&>X0Qp%H8%h&2jELtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz5lo2>kzXP=?_+%!jv&KzzmnF#ZZR5TEHJ zjBhIi;xnIv@%{8be3siV{`BP_KI<JA|H)(!pY5s#OaMwhUoW6hQs84hv$~M^KYq}T zU;6)#dfW;c8XcH;n2s=TFeo@QGbuPSD62B5Xf#AJG$=@BDz@{yEptuLoDsORB`ipJ zv8&2`>5ukl7IUW>Rd}qpmU8NH$P&vXZ=4rS)$B?)zqqGKj5Ef2j`C%_OwDPNw3RL# zp0QBu*{U-;cb9a2)(WyRo*B5_yf;%^_;baz+}%aiS*JTbBu0C5DIU?7c;uJb+C)*M zh#t)uE0Q-wc`q^KQr(?5u}?*#Yu2HvGa7UEomj-By3<PaS?n<@m05ztTI${$D}|1A JDW1Lk3;<mc=k@>q diff --git a/Frameworks/TagLib/taglib/tests/data/empty.aiff b/Frameworks/TagLib/taglib/tests/data/empty.aiff deleted file mode 100644 index 849b762da5a8d2b1a366ea8f9d3daa87be7a194c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5936 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 diff --git a/Frameworks/TagLib/taglib/tests/data/empty.ogg b/Frameworks/TagLib/taglib/tests/data/empty.ogg deleted file mode 100644 index aa533104d6fde177772775137cb7660a3be11418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4328 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 diff --git a/Frameworks/TagLib/taglib/tests/data/empty.spx b/Frameworks/TagLib/taglib/tests/data/empty.spx deleted file mode 100644 index 70572b4587f26b1dfa1b93035b65a90f47ffe511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24301 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 diff --git a/Frameworks/TagLib/taglib/tests/data/empty.tta b/Frameworks/TagLib/taglib/tests/data/empty.tta deleted file mode 100644 index 9cc00ba8156b8ef1b16401b0efe65b6d64a1b1de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79538 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 diff --git a/Frameworks/TagLib/taglib/tests/data/empty.wav b/Frameworks/TagLib/taglib/tests/data/empty.wav deleted file mode 100644 index 74b5a6de7b02e17ed293c677b873f446f77d84d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14744 zcmeIup$&sj07cOU#g`Gf2C@Q@S_J5yG^o}w2qQ2aW56DqtFJoaXBf6Fncq{t{MT2T zq)MIRk?hZ;Nt<t3%kO$bfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ gfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5V*6z34A#SivR!s diff --git a/Frameworks/TagLib/taglib/tests/data/empty_alac.m4a b/Frameworks/TagLib/taglib/tests/data/empty_alac.m4a deleted file mode 100644 index 8c678321847428247a7776afb210b362301c32c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5380 zcmeHL&1(}u6o1)T`#~t_he&F`p%l!;kk;J1L{RWj6;bdY>STA5Zo9L)-I)aHLE_1O zL%c}AqemeMLPh)|?4RJxLt%YyKiqAsB2-XeUNU)a-g`5@dB1&|F92X&wHs`-t}s9$ zErQm%BYi=0fO1v%{s0YE3^pzDd^}s)$MFH+)m1Q_w4ns_%;m@g-DC51o_U;Q02o^; z<l7j$ueM{%sT?!ijc^MRLyY148rL{2EQjM3OjyU)b@zP?u(D~nVFo4rzL(jVF1-<s z*Tq>yie#rWvT7y%nibj<C!sTz`=QGcyEK%l<Dz{}DjBnz_~ANtxrsJOUY7wCav<*{ zt9cH(EA`nq10wPR%zjF<m{dx}*+?tu3z$e#+;gstx`wz#9KxDR;_w<{kI~Mgjt2XO z2i6TusZ1X=$#ha{<vGB78^>pWg(1Kq!|@hi=@G!p<-Vmj>Px~V9m|m`j$IP+AfRiM z$QLB<rQ=G4)0I7s(|xjR@pv_{2et^*?!)xjRL#JlwexAl8Ok8320b32{voieL_ifR zjIV(Dp7JTeifGQAzGq9e)@-cfW37ep-bEDDHDU9(TTNdys0O={WMk|c9^6I^*F4k5 zKJBqvJmi8}rJin2Q5e`E`AXdEPzz5CI^hoaQC|E8%u)tJz&CE*-oSNR#pAPPDu3Jn zn0n9+?YPMJy!u5mpc&8%Xa+O`nt>BDFfr1ft|ul@Z=f0YI}A*g1%3}_0H<JadgkfZ vchL}k7Jav(XVK^&I@EE^PoXPxe`I%xzCZqx_Xqs9t2X@Ed))ca!T#YliGbjW diff --git a/Frameworks/TagLib/taglib/tests/data/empty_flac.oga b/Frameworks/TagLib/taglib/tests/data/empty_flac.oga deleted file mode 100644 index 444587fd0cf950ce092cc5540b81f973b52136d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9113 zcmeI&Pe_w-9LMqB<7R)X=Hpsx*{roTTWGc!ViMF+=unb}K}D3HHir-v=4Ay7v44~u zIut>N3=gqOk|2nUC`n|P{Q)8B5O$FcQ6nW*B<uO?vxd;6YxMnHp5N=?_j{i4zCAzI z6p4gXfy#|@6U`?uEsfefX*<sEYuwwQDP?MJY-up=x^<-+7mHGQ(X;xLDu@MV5A;p% z9~+2|mW6&sAI4rc;c@wa#~J&Tcl=CTt28U+a~bLiw}-pJoo!*)$&OaM!WF2ht_rxS z{r*~iU7!}*|9lR9W2(NtTeF*#vSQ8Rq33pFaszKR)~UhM!%s?n-^^colxy*3nM(mF zAO)m=6p#W^Knh3!DIf);fE17dQs7@NkUdPnIZSroXv8>*QSMf=N6#OLaN^0Wk&6_N z0#ZN<NC7Dz1*Cu!kOERb3P^$fuR!+u*&K}VZxZ-^E;J%^nrjApmcJW%CY^MsF{T^& z3~A%k_B&9)bIPtkrb()&8#2GA!ZlFgTk2~NTJnmTd<QLkLmeB0mi?f5k3-8BD4P!| zny0o6K`Z8{(FthfEY*AoTJ?cS&Ow%sRH_3i{z65ZkUm7cyaJUBQ%4pcYl3QtK&u~7 z->i`B0c8zAYvR<!a>(9KB@)ou`&2~|a$Ke6cR}l}Q*8&K(hJnlX=r^fHFXbi-lDe7 zKxH?m$2Xx3x2em;(8jxzeim}MsY7mPlb3pW7;;xq=_zP)1$Al!^6aLreTTetl(P>i T_fuYbCLMKbvFzDNznJ+2futKO diff --git a/Frameworks/TagLib/taglib/tests/data/empty_vorbis.oga b/Frameworks/TagLib/taglib/tests/data/empty_vorbis.oga deleted file mode 100644 index aa533104d6fde177772775137cb7660a3be11418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4328 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 diff --git a/Frameworks/TagLib/taglib/tests/data/excessive_alloc.aif b/Frameworks/TagLib/taglib/tests/data/excessive_alloc.aif deleted file mode 100644 index 9cb3a6e10defc7bff06bfa670aae859f687b0193..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2170 zcmcIlT}V@57=EV``LmcKNCe}f=nrExr9=>Moi$x`oX!*NCMb8-oS8>9BPwfyBB8tP zg!C@D>ME$a0;3BtyeR4-qPmIjCdxq#wfuU&?|eIdZe<sJFt)wtd;gyIeV!AFL}h3$ zJPU+#p_JN60HA)!3$X$~w#WT6NSDz9;UIs4cU{t4Paqr$9f`;?KJelvmxoX!+SwS7 zEzkK<Qbbl1{;b7=aXc>Yw7DPb#A}pNZ&U0Ggi=wtF;1DYC2pL>B_VWYar5*4`(#~N z_<=>ZpaSz%LRFxz?*#s;%ZzLB?zWc00MlJ(PbxiV+uWDdGTP|H%-;Aug8v(&+7<j_ zhuy4|q_CopZXf=Z1JUCg$102r?`h3oB1tp?Rd`p0#HdR0gg+1W4k&2b+JQi0DeU~Q zlz^s<0k0Km5?54`AtPEqK8kMDQ#nl?9MR(EVPK#)h`r46a5PIP%lqv~LuK>#`<vj@ zy>mCyzlL8=zw%sby6T?4)GR&fpIJHN>kPkJSX<bGA(gSq=~QxPocP<@{rgF=?_Qos zt)9|snZS~%v-aZ+kqIoB9+%5xw)3#qj>d++h_!Rj(%2wt8LRHnt1cf4dlqg|<burI z7~qK1s9KjMzQE8pPRcs0+iX~3*>ZT(92Nui%@`jT1_<KBm?ejm7)gjZ^LjCJ3~>y7 zM3`MklA&1^MobLD01Lw!GQ$*GG-@TnVlKyr>l<1Q>z)=@v!ldn+RMb%6x{;fK%-lG znYVc1Z!J5#u1x0+w-T|80KQpMS^#qWXC#Fmo#;ClWUk%d=_*o6Fzle%MC;HDh5_8Q zpv~HFqRkph+S^D=I{qcl&L9=H*{Nubz}Z_#sSql%%2kB(glU@rg2_moC)*h#D-53K z<kPTa)keN0COSI#kmgqM`EioYpa)pca(Ktq;jN1f2)u`NyzQ#MSYz&bQQyQ8xea|Q ziT=OuIs>`^VD&FTXx(+ECf8$aX3eKfO-8e>YfO<7I2&qb=N5iA9UNODSZhe;^ZuE| z%5suPsa-N1Q<EtD?3@}G=M72bY?)I^upNp0hN}>IJ{|VvgPJ?yZNlZ3Ti83xrcEv= cyi`A-?dL@P#oEN=*U17yN%yzO_lEu9H<F5vLjV8( diff --git a/Frameworks/TagLib/taglib/tests/data/excessive_alloc.mp3 b/Frameworks/TagLib/taglib/tests/data/excessive_alloc.mp3 deleted file mode 100644 index cd8aa2aba10fa3391f1820ab1d9d4ece730fe888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmd^7O-sW-5FPx6g6K^IA$SrYb<?!i*i)M*1Wg-~E%fLn-86xAw<H^i{Vo0j|D==9 zf`#4$FAglb@6GUb_RYGEc?1}Zck0p>9*zMH2W62`|JguzhA_xdCIqAXw*fMj$arOu z#h)_KRLZrm6g043F?E6|gFF}}wMRq5r?>(>n=x*WJP*MYE-q%UTCJK&<~bLNt!2@S z<$^kajoAiDv<T_w#L`KJh9e)zpH0|a#T;N6p_9o3&*$5QTwn9Yt^*ss_x1aLr>*!P zXPH=Q{drU_G<OO~yA@A6gzE{9OucPhTY8tbx!#SU$8Izw#4;>wL|}tAl?Lv+QCYYn zN<WqySf#&t!0q0<L&a2CfJ~As&e*)Jt!%j8Tiwr9Rwyl$xe{!_VKd9|3;G1m14xxx e-u>Zp>XG3;sQ(ba1yrsMrO<0<f$W;}ztJ~!!@45? diff --git a/Frameworks/TagLib/taglib/tests/data/float64.wav b/Frameworks/TagLib/taglib/tests/data/float64.wav deleted file mode 100644 index d34f692bf0a6dbe06cb223f6271d9030f0628ae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68584 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 ZA7j2`m1E4KTyo<fo0Ku;Vb=2D{|5hl!8-r| diff --git a/Frameworks/TagLib/taglib/tests/data/four_channels.wv b/Frameworks/TagLib/taglib/tests/data/four_channels.wv deleted file mode 100644 index de682f242fdb7eb8792bc3d33b10361a3b6c731c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53520 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Ҵ<D3uTmTuYsz) z_d&;1&48nB?P{wro(Tq96m6~-C1|`v$9%)hKk-Ca?bBF63HQ^4Bv}<#@k4{E$vWXM z*vdRvD50u+VWMr3qC;dR^Py<0J<S68)|Kj{v7&+K6=NQ|x!sg^70cZ6Gphs^rQ>8( zn}|J)l0lWtvqN%Nl7u>vBr9(NcTb4iEJ#6{exOCa^^3v?T?V^{nu4q5$2NxF3r&u* zrDRVMPPoZ5O9Zz(vyBIM<}k+f^)8sg31jEaZfNOoq#}q3EcSif(I|;%OUyp5xwa;l zqMq!9?xB7Lf2-ac5@t6~QT5I-;0|dm!y$gW&q<oXn7(l$B{hi42w~!?;m6ZX)N{>` z<7ahPq&BbpWWDRxU=b|v%mhsLl}%P=-ZE3(D<vK^Qwh|$Dly!x;plS&goKk}QtU4z zc^N;j7_?V&Qr1;4TBouHwNJgfN?F;xOnKkJDfW!!anK>)eBqNWSW_uHtQ37cdIflr zggON^VxL6-B=aP%jUAepp}EcK_nY0s^8wlE;-lOHZ+;X91tTp&>(or-)rxivY~y+B z1M|K2A?*wK1YTkH<It-pwBTcDGuj5l?l3do^&vau5?*fU5GXI*(`&|OHNinuZ(uck zV_({6#_Ipk$7Cx<<U>RDO6#%-W;|1Yk45EP+JzRL$E8X>@<L_E%z-u?EHK2XXU|IT z`A=);_oJ{cKnd)s_0bB}%IXT#uR3alGnOkA>!5Bbr44=qej2CDCEXp-sP`movVh8@ zBCl$gMn1u%=;?Ik!XQgd6V;bigYVDgA6YjwK!1xwUSFep;5;T~FQC-iDK4Lj=$;Pj z86>}l2iHPY!fDV|y%Un@o}|tTu?8l9cWZFw2OMNsqp*K3W(;#Qyng)t?DKNyJ>{}} z{1G&9tqR-+Z@aO?&{nyqm3G9uleHdzcGx;atm*7=H-eF2Gz70CC<E$uOA{Gm&z1T< zsMzE#hAw5yQim!AyDv-1FV2!LChVJCE3v$%zK<Bb+Q1J%G-53Wz8TlM5Lt1nm&$)l zgR=Jt08_;@*){e&K5=QfpG?5x@;B)Hi8bqBy?s%T!bbXt-~EkRhXRd+DeI9g_{Xb# z!2|^9ic;;;X{_`}afntTYod|+C6|>^?679(LUJ*LU@itjQ#JbCqObr}NdbP{T8Z4U zEcS$>vE?QsSqXu5Ehd?1r;IvpSSDd2-69)e�>pUG+-CyH%x(PN!u9KA5nzmBeVI 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 Z3_louwluOe$j@hI_-7#bBkRHP{{U-F$SnW> diff --git a/Frameworks/TagLib/taglib/tests/data/garbage.mp3 b/Frameworks/TagLib/taglib/tests/data/garbage.mp3 deleted file mode 100644 index 730b74e7c2babe736acc8b5922e0a0fbc1f6f33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8190 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 YdjCZ_?Wr7v#yEfT4BEkpaZzjfUmgnumH+?% diff --git a/Frameworks/TagLib/taglib/tests/data/gnre.m4a b/Frameworks/TagLib/taglib/tests/data/gnre.m4a deleted file mode 100644 index f925ea9eb5d1cfc12a1effb51e3208737a97aeb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5026 zcmeHL%Wl(95Iu1mS_G(8d9|erCuP9`Arblk4Np}<;-N}(frOmcX|39E@V%)73zR*Z zO0b7*C4PVfQg;0U7HnAa0qnyWKS&y(Zb9OXV$IC)&CK{{=H@y8mb&^?KklzLK@lCQ zBnE1qW8c%?Z6FHUUC-;dH*Yl8f!lcJ+D$yDWAngT#@f&rh6K|IW(v#{{0mdSJ$zm^ zZs6Q@oFx17qj-PUm(6|j^WL|kg}Dfo7YC?aK936IGm&Es;TeBpvhq)sMQ|xhd?h!X z;cz&IN8|CrcnsKDr`{gn=Xx)zrSiL$GK<tRC0Xj3{3q9AJFy>n4B^K9%=6;YU082M zMfm!zAEjj~l?-~NUFhmj9QL|&92Mt*iW^t`9AEX*K<<l3iDw6C<mPtut<vp?_Kwmj zBR$9QjK8c>oXF&{EI0zNJds<0%E_yeyaoZA`ohLVV1-G30B71YBG#gFimD=fyGrYf zZ`$I2;FqW*g*D>!o@KlippcK$42IL@G93J+9=OJy>@c^8^sJ1-^+HSYt`;_XyOYos z5!~g{FF<vZ?pN_U$9tb~vfk$mh|F&feC<&`jsww|G^S^t`$g*Y`!cS%JmG3|(;z4T zqYVRw0mFb{z%XDK_%9e}gpuOg6IOP5shk5A`7%|W9)L?kUdjpK#B&4}JuJf14|O7k knB^i24=KR?R_jjjcN*3XTTi!$U72366)5etQXMM&3nGA@LjV8( diff --git a/Frameworks/TagLib/taglib/tests/data/has-tags.m4a b/Frameworks/TagLib/taglib/tests/data/has-tags.m4a deleted file mode 100644 index f48a28b520399cdd2184f965f4b690c68f6702d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5108 zcmeHJ%WD&15TD(od9`_IYG0vjnzk0Psm2zG2HLbSHKMJQfF6Xp&2DVkY_?>#MMWft z2StQ};z5Lpx1xB~gAk!0cvi3$#G`+JS6OE^8=C|Xgn}OSm&eTf_S>2HW@o+x06KH( zwH0Y)Gztikc}120T3$;6uYR!t6!Hr>p3ibeBhgWSNqE3nqc9zU^g7!G;j*ciMKC+T zoC0$S{)Z_5@Ps8<Uc<AzAgwJ5bf{OppW1$VHk}4$ejQpm_5%a--bI6fbdx=?yYhD$ zi)3eB78JVZE0@c5nAJ3|rU6)0wZtzYeMw!`b76kvQj0?Q)Iks36#vipSbdU^=g|cx z2~GQj7fE1mRt)!{MWIltg;M0zVof)s<(-r-=FspdQq_@hp<k%-L7^nlbpoZ>wpuE1 zRo!w=Q5OoRUr|&=FM5@S3;2sl$q{z9#e$CrOpkC(RI0_ZVDb8pu%Zl1v;%ZwkZ%C3 z3oXd7`+PPO4Aq-cR8_Ax>SS-=O(-Y?TfxsmOyfEc2A-lsXW%qHW)1#P4-8>XW-&H_ zdX~oFupy~=gNBa1ot0515YOS#HvpD2njgu|HugUH(R&|ffZz<T3M!AXM-oZuXqbIG zFG~E%3XN+G?CpF(QPB!*sxk%d!au)sGdc%IB@$D{-(LuCCgw88_0%uOh>FT3N@`yB z@oX4@OM;Tf>xWEMmLe2TjN~(`MUe(KP~;^MB@i<+J9iG%rFxg#5d(X!;HDmB<uy7A z=Z%OS%H;0(nQ6DH+l8t-eL6XZk{%Q5pzj|a9#h%}(#b^T>XYn^jrSGA7JXF!{7&ZL z^E*5GQ%j$kNxq!Cd<(;j81CJ8CupCvui!hAN~eHf7!dFU+73*C(`I+rZBB>7;c_`! zJsn<;+wBPk+Wj4Uz2R`Em*WNwjSUYRj1F;JWPBugJQk0~`-dk}i4&=@lkpfiVO%bk zr_Iyj_4dRDxxv_9L#u$_f%|1GOdqg*#^PtREojG7Dfc?qkq-EpS)j$Vtp-?awAkOo v;<i6Sn}xwJ7C(%`{qn0WZ5zP0lq-pPPc%3&4YLAf1<VSV6)-EXCl&Y!Uf%vX diff --git a/Frameworks/TagLib/taglib/tests/data/id3v22-tda.mp3 b/Frameworks/TagLib/taglib/tests/data/id3v22-tda.mp3 deleted file mode 100644 index b0545ea6f087d8784816eb4dcbd530f7df8a6465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/Frameworks/TagLib/taglib/tests/data/ilst-is-last.m4a b/Frameworks/TagLib/taglib/tests/data/ilst-is-last.m4a deleted file mode 100644 index c56c80498027ecb7113d0ec56042277233361ccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 diff --git a/Frameworks/TagLib/taglib/tests/data/infloop.m4a b/Frameworks/TagLib/taglib/tests/data/infloop.m4a deleted file mode 100644 index bbf76db8f6826e5f1837917a99f67d56361dab42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53192 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 D+voGE diff --git a/Frameworks/TagLib/taglib/tests/data/infloop.mpc b/Frameworks/TagLib/taglib/tests/data/infloop.mpc deleted file mode 100644 index 46861ab378cc3060fb759333490bb4d2852ccd36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmeYbaP|&9fgfCgN*5#-zhGv70Qc0qqErT_#GIVO6fuxcNKs;OHUooWQFdl=395O- z=_{dukwB*~WR(_|D5T{VDU_rZm#|@Rz9v*GB(o$Zl_3|+wT3KE>B!W?A_gM^0|UnZ j*APc{*N6)Z<QZT8A1M&=8UO$Pf1uq^CpUnc0n!KnPTh^O diff --git a/Frameworks/TagLib/taglib/tests/data/infloop.wav b/Frameworks/TagLib/taglib/tests/data/infloop.wav deleted file mode 100644 index c220baa8f52a0e69f02d91a20e360ff4d1d9fb41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14272 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 diff --git a/Frameworks/TagLib/taglib/tests/data/infloop.wv b/Frameworks/TagLib/taglib/tests/data/infloop.wv deleted file mode 100644 index d8c720cfe06ede7b8275d051730591dc34bf3f26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2462 zcmXRfE68TZU|?WnVPN<V1in&IdtiJAUS<XchH{V!28Le@48A}q1<R+izQGg#)f*aG z8d<pLFfgzI4FIZQ1d%`xQk0mS&0t{y;W0SoB$eheBvzK{=4R?vD0q5$DmW(Rmll^~ zCM)<CC1<1-mlP!`g#Eu?oSVC)s3b8*H!&|WH&rh$wFGP~(3r^7#3BYG0|P^tfO~3Q zeky}TKz;!y)RvIUlAKhA)Uwnfg*2cLV}NUjqq}Rw1$G98zd$~a0(z1mmLEhjFt9Kb zm1Gu|Fg)8j=jo}w$Bj*oo7x^X?pJ}xGC1ew=BDPAFev92&(DN7N5MfMvnW|Fvm!Si z>_!atrxq1w=I1FyJBB&C=t6>q2Qz3O{`Yh-RzUT?WZ3`zK>tI`M)g0?=@|YuO3f?6 z?f;_GR7bG?Ne<ki0R-T%r)I=%p;^RYN%MFTHVq;cEn)u#C2Ux#!A$Zn8O;2Iw*;8; zbf7|z&LseCy*U$<un~ph&`c;u1uwARaRnB<IBN@RB{IB3LQ1%pMj}aq!i@H*`Vy53 qeEj7CZBumvD9DiOHQJ_XaO@46R2>7VPHB{?iOmn7`1=ncAOHX(ah;a{ diff --git a/Frameworks/TagLib/taglib/tests/data/invalid-frames1.mp3 b/Frameworks/TagLib/taglib/tests/data/invalid-frames1.mp3 deleted file mode 100644 index c076712c029bb734f1627817660a4b2a4fdf8925..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8164 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 KB$cp(mq{A(q@Lmc diff --git a/Frameworks/TagLib/taglib/tests/data/invalid-frames2.mp3 b/Frameworks/TagLib/taglib/tests/data/invalid-frames2.mp3 deleted file mode 100644 index 01976fc54f8da0d764c156a20156998f0b829991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7898 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 diff --git a/Frameworks/TagLib/taglib/tests/data/invalid-frames3.mp3 b/Frameworks/TagLib/taglib/tests/data/invalid-frames3.mp3 deleted file mode 100644 index 6bbd2d39720f4894cbea4358e5b85d6507ce0a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 diff --git a/Frameworks/TagLib/taglib/tests/data/lame_cbr.mp3 b/Frameworks/TagLib/taglib/tests/data/lame_cbr.mp3 deleted file mode 100644 index b7badeb051c23a9f8cfe85ee0e4d6632622b7b93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/Frameworks/TagLib/taglib/tests/data/lame_vbr.mp3 b/Frameworks/TagLib/taglib/tests/data/lame_vbr.mp3 deleted file mode 100644 index 643056ef837c7f35db265db857814aa2c5ecda8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 diff --git a/Frameworks/TagLib/taglib/tests/data/longloop.ape b/Frameworks/TagLib/taglib/tests/data/longloop.ape deleted file mode 100644 index 3800387acbae60e24fd724f466422521ee53fdf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeZubXJ(g&%j{9z`!5@#8ZHH4G`Z5Nd}S(0t<{7wrmE2Lz_3R0WuisAzTER^niuo z7$ZBw;+0$sle>5s?t2O_Y?Bve_&clAfSrL03>;tnxaN1m@@;UZhv@5~EW>mK-~7Dn z)JoT41;^5q%zS6Pw1QNiSZ+a4YH@L9ex751Ylx$}Ys3Y11_mXdLtcFO|NlP&g98Ht HkOndU{4PaD diff --git a/Frameworks/TagLib/taglib/tests/data/lossless.wma b/Frameworks/TagLib/taglib/tests/data/lossless.wma deleted file mode 100644 index e29befcc837ba603af32e9cb54ff523092138d37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99013 zcmeFZdstKFwk|#cLM%ukf(8&0)CwZXMM4`f+!R3(l1darE^<+>UJ^(&QlP<z5xH7L z)0CScq*+{*qJU@#37}Mw7%rBDt_0KuP#bJ?r)=HpH>O?toU`}y+t2y`JPi^;m@{+E zZ+_nx?|9#L=;m;PQ<C(^y#5#DZ%D$>;S(0fr-v~-V+^iLHWUR(9+{UsM|zgnGY+Nv z`A6hGM#8e$XP1SD2Y)D9YRU2KJB9i4FN=q2xEF>o*ne&JRmiV~=*u1g!vOu+VTwK@ z2>MGb`Ooja{bqo)8~${_1wGF6pU2s_^wVaD`D0~67yACoKi@Y-{)tDBn8JC7)7xJK zRUg0|A}tELZ}aEIhyiByXMJBw)QKIZlmAu}un;ns@vqbRbT!BlI4*kRok%7Uj%-E3 z;5E7d27yyS&}{;cL&$L?6-k7j+mK_(Q6veTGms-lJiJEV-2>l85GHaM-eJRQ1fe1B z@Qi+n3u1^Yf>#kpDB}9**&jYJ3_j^A*fJhThu4ST6A!^B9{ShkAqao}pL?(SzwW&U zJ|hE3hJD$v%YW`i{vY@AhigHP75{0U|G#4&{@1bp=QIDWpYdPM0NtBCVr=z~!Oyl| z>k>8meCcnRKg`gp`Rno52>dkye~rLjBk<P<{51l9jlf?c@Ye|ZH3EN)z+WTq|I7&d zT=&v4qkq#j{&$kpFypBG`~HV3Gp8CNpMN3&5M<p&17tN?XT!r6YHqX`M+@*AcM|&6 zr^i2>rp6{b73O7Rq~^Zi&bzDs^}Yr^0|Q@%h~Ks0$Jpt|=9jgwMeGk>?f6%bzX-AY zRCEU-3@E#IL5YtRznM_ZqlG;Bu!mB86O`$0@Vy!N0)C>e+>tMV0B}b<VGEo8@(DEf zghR-|Pv7YND?V+H?(^q2y1yH|zvRDA3I;#|pr^DB@rN@BL_%PHwD>;>lmiDygmn0w z4U|AUoEdt4=yhelb59I{G({nZ8wWwU0ukh13xYgYk051J2ogku4SF$1?_vbuN&Xy8 zw+JJ66RzsYpL9#vnm^eUzpcQLz@sO6`KO=uruLtH`t1t&^pkf<_~-9oiZgcZ!{)Wu z(2?Hp9uD*A;s4*>N3X>ISp_4L3gdVXM)L%mwLOp==-8yfb=bp|az4F22Cp~6_-ulo zA+Tj8d>w}E(4Pp5@Sn7cJ+d3NkB7gc!bqHiZQVbO<OX;}hA(><qa8>Vg8q(vQX-N9 zTOWn5L$D9J^%wA*@M&-Kw~au^#D6-5{r@6%43I?3dF<q^TmJ`rl=bHYB7Rk=`p~FH z=0AKycn6{boWFV~`>8bkk$K?_Ai;i|vj5j+$mj3^1|04W%10$)43L0E82?QMFngCG z%i!IAP3%uQT*1JWzGPoA{2b!wzb+0`m=~Wy;x6C6dc*$H7JtrQl<@lEztL{;qp%Y^ z{yVYupF|o4a|%u+24$C!jRu%c8!twe5Xz{*DSp7j9Yb))X1}G2#t<YlA?u>oHIC={ z<&5>Ud$;~Dy5WblWT)lZcFu;Li&+*|ayoR?x{oE<!#`iUdapHed&jokp5+M9;%dTX zr~I6bC!}*H-9-z|lG{c%w{-Rpmulw<CihR{tvc@XxvbK*<o&z4GiqD&{`@Q7NiOW` z<c}YJIQlnN&(AOJKIQh~I;{I9x1dPNbw)ovu=SWYmBK7sr~Ov4U+8r8`}+?norWr$ znuYh1E~I=Y)Eqx0Zd6&XmWN<9_m^Ecy@HqGw5<QehPE$;*?sYcqJ@UI>Bjad_T3x5 ze19QFdjday%x3;K()>T|<}X_?#mLd(?;FTTDfg_BUbUufuA-bu_^NRePVP<#w+d8i z3mnef&?+{U%GVVxTOUjN+bY`n(X8uZqKT-6oFh$pFSRUBxI~{hzxwJy<70%+dBdbr zHP>9tww+%TwC>VFM|SX$q=%VO_vqR!BkxNL`!^?VoqhWKZLXt$`%|(0-%4hh)?R7r zPa53!J6;tfl1m)_IO=(N^%XZ^01?0Vv_T$Ib9SGny~VC1<-+F|9S5&I{^`1L-~*BA zuC#}o)-N1-$3(S3$s4{q*HXCt+e=qoPH{U{EEn|FFp+}}W=45Z`_><_V|^o7XC9>8 z`fz#Iq`uno$2XIv`SU)m{oF^()gK7lzk3$1bnSN?3l8}k36H_7?ort<bFp8#$Z*q! z4IA9N0>aZy1v!@QO0q6Zns8`pJrWiEOIx}q=}6gu2IUW#=B=wzgu8d_<LTGcJVChe z>&~v)r{OZyftQ2F9Fm%UBYdxzdw)CU?mwcg+<&H!*BSFnYVHLQJ`br;`VSihEY+M^ zlYh}by0zjfp5<5m$WjAbjl5<he|^|Gm(x=&eik-Or-WC&BOCVy*7o>c53pYvj|*7* z1{3~Bnth?s^XBaXH$Gs6`*!bI#e0j0{T~;d-6nJPtNy$Sd%vxo>OB0>bhJyB?eVy~ z`U>X^Hz<y0zI3MkQk#XUwCw#E3Z1XV-#Br3WqSJ`LDC!xE^VOAyT;#Xr%<ro^3`YA zYos{_wljCX(^enSk@%T6JA?dRDehy}@5G!vf_aSR=|bZxUF*2?Ha))e!-einWwdkc zbL#oSvV5zID;tppr{~@H9@E>L%T&sXs(r70c0bQSZl&Enywredz6M#Zc<bXAb@T1G zS;nKo`iP4QzS}fNG{cG(6cDvkaoL~($FFhR^t3}++41-6TR&49>U7nMU){#_?B33^ zXnkVhR!mr{$`<rw7mjrAdPt4B%@J5<*8kWjPOcfQG7O*~8b;b<E`9ymQm6OdVBdbT zO-EX#BW->8UHdOjQpoGt+U_4dN&NYK7U`7U_38rY$^xlofmBBFBl;mmZaXgSU)Nep z+?6t8Tie_1Jb1@>Fvt0Ej-&K_DOQoO#r6!}zjgTVW@6CQ*LJW$L;LZ8OH}v2+qqsk znH)T*y}jq^?j6@6Rd2Jrs~6AMIrdVW2eZYGyKCWD`aXtWczxJ7f77|`RrsJEGfH+( zWQzyy)T(_HuZarHhw5*&F#-g0J#;m#^t1afZ0JsEJMoXltDUsfJKt9Cc$>Rh)#Vbz zGefS@&Xulv{6&?;;MWJr^%41hM3i%bPV0k`Re!hyCAQvs^2_5xVe&SEsmfg)1R;X? zTHKk%BM32^jRSGE$U#G+Z>8~8ff3~|DsJ7>{d$x=?Lz+5Wz(-Tx6!u4VKwKsA36`0 zh+r~Z;$od%#;%=;O?~;SY3ix6ar4clb9*W(E0^0<(Sxorv)5ca-mFl^j=%7(?WL}% zeQkT$sCD=tbI(^hc?gbwT^qYgnice8R>U=Z(CPP8%Ez5F#f4hl@*&)A1fw_}L)fAH z$z&$RUFq#1qk7h7jP3t<&qH^sbxT&8E-oKfJ4gw?T>t)8mmBkf0<Kt+Rm#)GRAW!? zPZ%;$tk~0;_O;LX$F~zNag)!ypLW?a=aTx+OT1gf-Ei@$lN*^W$Cd7Q{A2%q*~t@^ z3%R#MC-Y90=DqbXP5idD!qVvKakeB0d*ij8xbE#h=-Ypo&Gc8O`zV*)3>61!3@&Wq zTx2Yp)Mc+pR~NV6vdI*j<lZXaAS9zF+Tzva*x>K?;4F4ss%_QATD<TU|4g*fJ_=<% zGCR`PcKBzvmClsjHS5X)75Pz?FQ2WQ^}#;BYyR5jf;z^veCA}rcb6QEkbT~Igm)va z?PB1-c7E?ha@SrDg9q5Pt<ql}OV1b@?W(_qaI>-x5E}Y9LtmE6u^wb}V$@Ph11nzM z5an%0EUCs9%u(U*qa$MpQ@!_`BwTlQR=RU~*=@{8U#x1uhnHK574QRXLn!6zM;jaa zr$ujWb`}qKKHFT}KkX?hXDZK}v){%bST__lO>>`pSv)phk-Sn;SRj#{5;^6scG<Z9 z!I7jb1KgLln^_N!daP`0C@eT5S``vao|^L%JxIFMoKAUqY~>hB^e`qQIE50%u6M-a zv3$9{sx+upt;b4rA4u4m6(gsWVk{ofz!_E7YDoESF$=y3$v*?{=Nxu6l)_}rd$He9 z>4d2d2MXuC>2x}ymLJHMo^5Bjvsf%nWip|0_FdLp5BbcjzQUVogE*WsKJ_FjDyk&H z{bgr!BCG3Zk_Vi&jE9I#M$U>Vd`Nh{QumQWSA8V$Zks<iy3vcBg4Da%Qn*<|)fQ9w zY#)+fD%%H-(Qy$+#Dr`qSIAV_kG_7c>DTQBgfBNYjj_0*$n6+h$wirbM!Vom3Q`%p zKHeF%yz7|<gC87cZ|}tCHM@xMbg@eBi=8<c-M@EKA$!c`7}waCBrtV4t`D9M7YjQ@ zH}>_%Nw29Kk!@mr4N^Ti`11Aur|W65b>9?+LP6BQj;Gc2^$u-C)082PqOo_~$t%a+ zal1sqlyhv%uvb)6q`?-r*2&|YCG(RfqKe^$r!i_4S-GWXNQg^M?0Edi*u?h93}<1x z=%UJIu|lfa-Zwgy_KrK$QaCd2eE=U+FpOyJYpMWC$M(;0vYxf|XH|*C>V;g4#z-h6 z+dnqG(u3`Zi0T_-W!*Wzkn8lhBt*Ad!q3Al?lEV1dR5Xb)VgfnT5T>8bMEEF7@FOp zlx;PZGWoo>FSaMPCpIFz>&+K!5d{)yO@$NRpF(DGy%9qBn=LKwPcx&((kb1sW{A1p zh?g5iqwDlFZNJyz`Eql~G^?wlt3$}vAVpX|Ex|dx{AKq*`hyd8&56Rvq#Mm^Ln$dz zfw4oS7q{{Np>d9y+&G^#)Iw-bifQLkc>pHyyoIV#fnsK%8ZTC=X0*B#Wv#KD4Rc1> zH#N`gPL7(+8uB1SM8eE2C_HnHtm;8jB&|NTl&}5h+In|<@I9%98-?{lt~rN>goMV# zx<*ZV-Sudg&Vki6qK1c}E>%o3v+>HI2L;J=AAPY(T@DG`<3qyi3s`-Q%w%(^c38!X z-kZeG=(2rIYq?omV_UatR4W#x>)|om0r!qKo1>ej%R0^PMNufsJ@uBAHWZ2%mzx7u zQ{~amLeDT<SQsu04Gm__Qz~d;hWuTXSfYMM^}$t@VCr&_Rb_SVjKHdryy0p%em03d z>{FWmiWJ1dn+%zehw=opW(N<uac9xL5fcaB6Uq>*pmsZ@+|d{#SBfKHQe{RBcs|UG z9*2|JbaOe+F2te+J{m`Ci5%l}AB%!Do*C00;hb(S4KOsK2;0kB363hLG7(=tJ+@XV z6$jdq1Ab}ioPEE!X`J(HOLL;=WoOekWirXd#ldQOv}fAX)U>;BXmjIqMP@VWPO|Ns zC$~e$j8{l|!t0`Al5Ry$dsZafDxU97YAfhd%N2Z_$@+LnVNqXyI_F_#@wDjWt*GXN zX;}5^>Mg<=oeRU;Rz{Yvo^2k07#P`5G&PkrBMmeZFhVI6F|i&IMRVMtTg7uQc#(}G z^7_>QJ9{Wuu*NHri{Q?~F8y=v!odfJ4(&YC7+l^uGM4WC5GGddE7xSr0=6d0D~rAR zGm&wz7ss6f@o!r60HPeklLto*9Xg22oD;UEJI5J4iQW3v;QgHzNA=gGj>Fy?8laXN zY`vzvdGltc`ID0A_KBBUqD)yGgXPR#oT0Ra&Go@(b4Y#*zIfF~-=JY1d=QTb^AvL^ z__}rR*~v_Z<{d9@m9Rt)qC+Um-KY38yO5Arm$oK!`8RVak6Aa(QHERz2D=ewEEXGt zr!yKxXZ4R(_OmLYV-5wkuOH!AikDS{(i|-c<n!4yal<SZCd<r>7NVRDyU{3Zmc`+C z-8n#zzsn_I1yYqA(cq#=QRnXNNuJNjs&W*|X7tq-D&0bkVedp+{;ETfwU{Zk_MKOi zYvCM(;=WmyR|R@nA;IP4$);u8*aHHUZ%~g9UabA#>!-zIg93|@)X3T(ES4dk&pBYx z2j|fe(KOE$c3o7OFa#Ei0*QQfo=R&eoZ?nFHmFszY^KJ`IByse9TJng5+=zp+c^kC zMRQrA?pTKkD{`FEQf0xYa#Rb+z(TIi@hQd2;YfbSYKGXjq@)yEtI&S*;cH1^SZcm> zo{m^-h$w29Ot!wtQ8JZv*R^4alM^epC>R-4(mr=Kwxh7zIl>2-(J+6g1Dwf|5JU%G zMD~zv$-Niq+Mi$+eDE^;H+Y5i1F_U!$JS~nOx4xO(9opjwi52I*3D>UxfR(6Gje^x z9^N$@<2<QCIh6&2H2VR)<g7cf^$zt`h<MpG1V^&yo0<2jJYYTbt}?0KrMW4%-QJMb zw7;FzF?rO(cAWC-%Etb*IrJXPru1H92zVHc%ee6M$rk7Hw&&j5E}3)Y2s?ys*8+yg zNQ8CKSi<}rNCYge%2;uPOwl`du^F+{EPfb6^>Gy|wAmzHuEE>ekzw^_i@p*BeWlTC zY&!SyOWUz@?yr%3v$|PME@H1GUKAr!CdPS>CthU6G*1iPbe1Gm9QBCmPfJKu);TWK zPz`GpIzsvD<GH8acMqJmYmP{V(+~<Vo)oe{JA~j{#nYaZ$x&19vJY5@;WU0UGwc!5 zgZ#92_?iz$F248uowILmmxPB;?U4zL3<G&yIX=}``GUpFLT+`COrzssgODC(ZyUcr zOt&7J?|OL)V$i1m-`?I<6L*zqXC>@tPfu@uaT3x9y(Wi5@5!Q2+?3&r@J5XWP5QBI z{hW&A$fjwyn}?3<3pcX~H)t;}7ry*5W}Nc!*2?~QG-amEs3G#7Gj^!2uWxQ{f#ouE zs|kYt=CMT2^7RY`uF}>PVPiD<T)r-s1V{v1J4{7%n3@z@D@3JI!(@f9JD;5#(Kidv zgn|Nw8HK5q@?nvA-EE=M3qH-{S=~DdJ4MQCw6ojLzc;^Q0$tJEmz@K!dL#RkVk76J z!<f)eDiLonqlXYc;_L35{T-4(xs#HQH9j@i+8CZFdehl7K=}>smS;y-R|k7WcIq5+ zDs@CY4RNa&@D+y(P+;2K)6;D#fp%)Jy}cFBSD!S!XF7SZbk*@S*Q4{(_SBmPY~wR% zVuECh+f66*XFY;BS?NuyG(@D*y0qSQ2r)?>QR9?nozvOJB1cE2Qk69+Qa-NPHdxs8 zvMp-dvtu$dsyUt2(GH(xaDk7j^kQ*4o^>{j%~hO;9%l`{*<6yyx^9iBUDmuddLJMz z=Z@d)n#YB|6B8d~+6_3n#|N*oHFA=Vs3H0+<PfU`8of`cSVOE`z1Aw!tAJJlOd2Hg z_Q?~`{c{z^;HI!BYy&3FLI87!n5Q#%yJq4oLHHumwm&>!YIp5!w#p_lsu<uZK+<OP zuFK)0H7fLh<zp=hWQ}uPT`)#t^Fy7@>Fym54kc}{ajM72Wb)axc@d=BaY%D^{e2lX z4DQ!1vq@jOeAQv(8{R)JsP)x^k#~^V`$k9l`s!1tR_vLPsrian2>lR@ra9f2aOA!| ziSaqssz}8ZO4eORz}M4WpFmkh$6$M$P1;^Q-GV`gDjwiWyg1q7{^F$ReZ99~jaF4( zw*#@Y^KlfQfXiYOj?=;@fK!@f6qrZ_INRWk!AXcjqBq?GtbawKeaJ9VVZLf#bpCxk z@{v@l%f;w003h-dJ-8*5b!XG|G!*xb4tPGuj2Y)V$Xwaj)Sn;^F0<qzrV8JP^ww^k z!M_p5%i$anHW{?rJ7N83r*)3+zq#t$F!^;%{>0nc<`WZxgRLSrrlm|wXUNprEFY3s zvtXgk#q+h<M&+w*k#l5ry-Q0(<2?01Az<JG;@J;~zdjeEK9U4?(C{pT*PERXLE$9& z=kB04kVD~ext<ot<8~)W!{|IE=Rm=1R<5HAqG+Br%Y2>U2PU)L&fAAridDjadVKvp zxQz8qCVAkNEYcX(xs#bXy@e7@ksnCA+GbAJHZ~N9cb>(NQ`HdFu&R%)tQRLs-6tlG z-Xeq*Vfkmt7?mU5LM)c4bsy+3!Jx3nA)cD}vDX+Q8;)#<fc0N-EVBPycWjIGoY!4f zyhUx0agn8MFoy+r!@7CCz3XYF9RQ!nqnny`)=Y(xM=EUX=+@I-&pe99<^aY-52VMb ztkUH2t~jiKCSKVz?m6+h9j}{5;%T)r664Rw53Np)zRSqL!t^E;%;@hrMl|$|HXv5z zNo)5}DBOx<YY6bRV}N0{lq7aMM=-K8OFZ~1ZeUbeeU&%@g`y9Wts_=OMq!OV6R%(( z>XE5A&ch?eZ<{`eeI!=vbnjU1arrJAmEkw>SO_)xM}$T+7)19q<(Dm4?(n&1GTvgv zjZT<v-(W}dxsGCSVP9YW-c#55%5El%J+hFDj!ttSxDE*6%<=R<QS!2c7txIZ*axrF zz*)FPG>!Hr#vh(hV)!c<+_Z7$wpy`d+N&FoTE$T~?J_QT>&-@qasAqZE(iE(JuGLe zKt9Xic0quSmse0a+FRLdjyK(+4+^q7$08!4`uFzl<(s)drY%oTFQ0hZ{SyzP{|3?H zYh`Mcr447@+4BT~HLPaV(3a-(Zitkk$)ruq8{I_l<e{t6Ea8*l0SXF^(TG^w*br9d zCK8q{ZwSA&62i}eOxx+Mm$xBOqQz2=a1{kIlStSF>%VAh{!V7mw5PB;IwXW5OzEMR zK)mCKo_*N}x3#TdjFVO2O~Vn*oX%7_GjLF-(SyWly$|vY^1<ju=1LO=A7hCK=vb^^ z*e6dPJKp}>)qU{gm)3=ndfsC1Me*tx9Tadby}uL3(>q=tNopf7ENGQB7>%uqzxt#P ziT9D@=gU`TS0h9oHi#d{BR48)`FzO~_ijtU=zMl8prJX6u&dlD-$@2oXhc1$)mI*{ zkk3=;kj_UmnqhX6dnlwNf^+)=DBvbf5EDCI-Y#nDpPGu7)oxvD!==PjBMY(U3Xd5O zzJWiDCCtW4rM>HVs6>OwjLw(=v|JizO`@|q-JP{gTFa}Tur+E8l&n6bg4t|hb%8bu z%kRMiuaoj{Jmj;Fjtf7{!ZiWz05sI`a&55Cm{(AXr3<7p3qGYXC}vfLGbdx3$9kX| zA%7)wOHq!@sAjXONQ_aK$ptEi#=~UAnQI7}$p+*lE}YW;ge-j&39u)bP&75#Cvjs? z+@|(6<v;O3d<@Z2MLeRvORRFJbHkY1D+?l4M(4jciF^P6<EYdvR9i@7^_KaoB5QdN z7^++)Qwxvqgt3K3)?*w`Zdb=e1<k>PJu@@Qp+aH$E}I^S;!T-UDU*p!dNBJhjzEa+ zx|3WqU*%df4=6=8Txn-x@)a}1C~exaoOS1z_1HUr5Ph@yZf|cYVvvHcn*f8x5?v$u zAXYPE^WHv&Dm#n?vKYIYoT4IO6?)%YlW<EOo>*Cu&f=`=VKXais2G9;qfkBzYadP{ z#|HqnR-cVDS;nh18%F#3Sx{<@ajHBdBeM&49VH6oFgCCV8@Sf1<LS|xx9rCHPQ(n9 z55CU0xnj)E&E`U=rz1wIV?v&Ag#rwim&S&o#s=fMgC3{q4jL-evjE_e2~E?UU4u^# zZ)_A8c^F%TV-x_7=e-_TL#fbwt9UHYy}Uhs2RU`0Nl#={%z!6QHFHAXMAD&PvX)2+ zt`?aGIylrjpm3;fuJTw^|GSFJ#?euEeMP7Zo5{os$MDq)cm-6$yli5rpEiq&^pMT0 zj7x})bUX}CHk|;VI%~)-)Jt@cVd5_~Hj9b%h#GKj?||Yx5hi6+bYm4_yd+pS*d`qY zVg)amhp{P~U8r(pG{_1<0`iZF5;h)6`r>x;c!Kvp`5S5;tf=;TSU+i4qtx8qWqcI? zMZWT#4=G460=GF;SrBG;MpSkKqoE7b`dq_zz7{jOg>1NYR&LwfX$}r9%`Pqg0Omwb zkKT$NOPJ;k!YolkS?^TT2LuN9S#wL_7#9UYSy`3T4Hd}h-R1yMlzqS+prsU-TS;pv z7*Q*vwML%q<?DMVo-dS)1FC|IY1(=_x~Y+eASy+zfYxFW2{G8C7={j@TE$T)2I^CG zEOIuk3?791k1Svzq~L?-0-D3x{cXm!lyYZyq^AqtY=#y4`h?v$r@iA|L5M#;xQ9Vt z6iOse$lakwjA->)UO<)cL~bcY?ksmoH_Z|1q-;841jwmsWaiMm?KWAM9fd`sBcoIL zyD+h-kiQiwEf<TZR0>IbeVcV*^Z;w{#mSQK^oKB4%LvYK8~A>;p~3CxobrwrM_{_K zo}K_8lxb};Dha!0w0;U6bMD-S$E^EVm9cFSaiL6BGqXR%#srd)zS2i5p33&6D*znV zJ$DJ;E5@B-r;<~(I*b-ybEhR8kl#3~ygRA6(#G74X(6tyF?f*ych&vb7GM^VZZ(dK zOffZ!zM?R2M8^V1A0)a|?+XE}_iblnB*Ow3@j|xo`89YyQ!U2mIjQbRY+}dnw*7OS zT}<_3Arn_F69B%0u|aVpTHyr2@`kuozmYrxK}e(hK&Q**eX98?JvP7n{4x<4F_A|{ zhsJt9xUcdU1qj2C&FI){wg^LAq*5Vkgm1o#0z&OhY+Hj87(QmB|Fr}=J4ZU!kF=HA z3}nf#b|`(&H>1(mt>NX>F=rIRxulv!UoU^1;oSAIvp<m{s<5FI2Mklf(7JLS(ym&U z1J~uli|L<IUp@6BLkz11b26qn|BZKx^WfX==JE8jM_boYm~|mm6vXJh-n1M-b&KbN zqqicg8^pLG8)F`YoT7zT*8&v<M3aUome){oy@SKr<!-wrVq6uDNF+r<pn+J(t#ZWE z7O9oI6vJ9S4KWX@7ZP8g%kd2YyalT*kk3<6DkxnY9Zyf#!jwB1EB_k)VHGMHn51nM z%ghX68n5h6_xjCtTJ$>8t~tE-xs8)tLRQHltQ#Afnj=^fzY`-McX#@%7~+xbyjI(E zKt1M;;(ON9jN2vCqBom5BMZYVB^Zyow6X9Abnyf4T5%M3Qph@xcD7T5%&D~5bl_u} z&;e}(X2zqTK_U@{Qj&vdC3z}sRxSw-08U>;qT?9?2E)uFup+n>qkvRZ1<W0g2(c}M zg1(W4Gl<*Pwm`d(q)j((m!bp8Beddo{i0CFPF+)mEwN$=Co^uBI;uaA1R5ydg9_B@ zskA*p_xRBUFD_(^XJ1B@%n4r~za7KFsHh<!kp<*Em9}2ou3v5Y$DJX~JNEuTwWEec z?>w{hXV0{!p6=I)5v|$2j43WGiipVK{I;+gvhWeUAgp;y$#_{db~XpaW8E=HP5X>D z?36c^I|kwE+ki!Hp8zUpIJc_A)oh2`;I}vYj2%2ynznu<k_u)Q9ubPBg%6G#o~hr{ z*j^^z|HSmxh`y@YLO#o_h;_B@Pj`>oa8Y{dyB?tXTs(^VBRDVbv^ckEfxDh!swGIx zNJFG)d`5N<oN|12i~T|@y;i07whi3c3izmbV>GZRu#S&Kjn2+{dWpyyMbBrlTHcDS zQ1e+gqFhqrJW!^6TCJXqFpP1l_sGPxQk6E_7c13b^r%E|`tbY;5tOo!2TU)ZFbJ#p zV5rR{l-)KhyV0n!q!k&9&aaFz9eib|%`t?j2N+x_JF~p;;t>A|MZ~E%W?eiE<%!*N z2L!xke}z)8WYI$}k*GU5>DI~;2tP3ZPBNU!%T|OU@#1C89@bG&(Pv*$o2Ma|3^;eZ zxw*W-oVlCNTNL6|5!=G(dk6U#nEC1gm=@Uxoc1CL5>QJ}836nr(S7g*){_@2KfZ<~ z6f&9iDkp)swkL)M#04?J8F>5Vy^UiDaZ*0eLMg!1Z~?E(!ZHI$ao5p8ERib(W*&Z0 z0f-*OK+3+(w1vfb9qL)<_6xieO6pl)h3)|>gu)=aLiYjGiv=$(<x?@1DsN~U+uJ|? z@MtG0hoEb@FvRII31(lUDTLvS+cEGl9j`MwiyDd~q2##Ui)w{jGcyB79i?l7hOsI= z=AhG3l~XOR-i}Jg^M`Zu^uDGOe?Y18rn6{N=C_z#XNB3{Arw`{R$I(|AR0m`UH7D@ zPkBva&%*Icre^0U*>u6kf;Zd_qwCfMwI=ai{5{NOG2L$=cDfvxF1YP23}E+ktK+u) zKnXH{G7N8euhhBg_vrq4sAK0VyuH00iXHtHGgGx(ZxUZ)^r_YYkloieD&sMQJZAIS z5TK^B(6SDW2632(U~78{YU~wIhT-{AEgrZNUiaD8C!pT(6bW$`^WE9AY%LoWashge zdVH!;X1WG%5)eZEip)e{!r^Oj34_3*#-B7TZ@t;HBVgN71s@O4Pc{N~2$(wvbOM1G z1gnY=j~W~i_n*XcB(QMLwlp?}kNICci&!QkOgpD{Ja=97bu7L2ZH}P|s!ZcbE2hF^ zZ$o6{pAcxeeDZ|dfIC2-LQt$K+|7W;42_A2{jv~J0j!s~tS+b;C`@1#oK1Qk9Nk<p zmoA*ljF}cq9&L-1FhZ@EyBTI)qApQ)GGNEb<drB1;Lr@bl1WPa@_gaFXqdaNf;v9o z=;JpR9o~?i$~zlj9kzP3u|Hk(G^rEjNfPKeo*aru#8z3x%SZa;Q*&8QliDIdTY4A` z<phDS#KE9-#okJnaeENN5JLO&pmvDDQBj3qmRBukwzgCnkU8SQ`Kq>QZ{TtP5pu~X zb;&_k|3ilkyM&LkCf-oTITHZ-_BP33&M6BD1Q9?7H2@uSfB-fJLc_FICCwp^7pHpM zQP%7N;!?UN)bL|KCXaEr6`@{iGplv72Enpsm(7jilsB+w(}9IwS%em1mK8SSRAoaS zD3Bf?4?G0|0ID%i59J4qD}vk8#<otp$RNZYza5+S0P1z%iXy`;ujcgvwWyu}Ay1%Q zs1AZs-4Mw3AMO=wccPU`1cDljE|*aL;&>+@)dxu~_07dLp@@0Sa=CnJ-U~D-g=QhQ zw8!Uidb&G%n6_L|2Stq(xQYpg=*@GSq0N0$Os&Rlv5-Y^V*%X{yU1n%cSZo>thRvg zq~!bcguC{D(Pv}795RJ7%m!fJ9-fFQj0mf+G+TWR9~8vP^5OX+Mz2rC<ligV+VP_T zsLN8<Jnc^d(s?NGf#k+RSzzZwEGf1j$0>MmBeTqRSrDRtC;`^jqdzSzA-?`B*4U2b z;^Ogt&_OYLZB}#@uGq?LL}Jnt4e{lk=@TgNd*2e;C!Sz=24!`gZfcoCKE=sCU_G0i zTsX_UD`v>1*eQm=d(H||r&wHIvJ2;PT_G6Kp)6CVVVcs+wu$r0g%4p8k8z<!n&kpL z?nhiPdX*QnxQ7ADQl&T85;MSgwizWu2@;h`<528SF2*B7LV7!pM<p!4v9nM-WKj?l z1sTD*jEXAipNBeL0?d#;)-N)Q=Vxzzzq32n^gl@X6BED1OuGYACgJ@y$gVL<mNKyZ zF|m$NM{7vC?tgGe<cNkGvBB!85(%KKVS_EjP2*_kJq=J*3GC`M)ng&Dn9MYIaX1Jd zF}lDw-AVPX7Bn2PxMsOb@Mq15uR&tR&)c4TaVTk1oh8Q4;=ujc_g}(<gZ0}4n)I<q z!1R<mG&?Wgq?suiE$Az{9IQ4MqeonwTUU&p{c*Q|!Kc%)bP1>$aNm6J0;nr<i6vEe z`Dt54Odye=ejwq8tLZ9GJb?rQNd{9FceO6~UR3c}KtI4en-0DulmP^is*tAr$-x0Y zE1(H>z8hthfB+vE9Z@U!$Z$x27|KA&G&NQX0z5qe>UkexF_iI^SBq>YSU(MkuFyj& zMM!=mp26VYkG<<tWYhDi4_R3`bb7<QkE2Apa2FttaWPb2DNtnyB%||HDANe#iFG4z zzw6bfd)G;7aaE4MIYZ@L%@_fthHk*kwzZ)k4t2q9Owa`#B><{&e6cd^M;|<$&qFXv z>+6ebvMT8oV!8fqHS7tvN~YGRhPmt9mthoAsd{$d4$YO&IQ6az<xMx;xF$2cX4BDj zg-UB{n&UnNdZvBw_3<2ptyAY8*_XDr!qyArZ08|HM!{TmZvRDN=an}4U>|#S+IiJ+ zLK#L!lIei_lWS&~GcrUPsuWm9nwH(hs(kqx5Jd5{Vwp@L3osNc3aCWbSy08%BZ1qp zMn&0(6-^+`nUtlkI;@mWa{!DFIG1&|II4)%^a5Fdu@%d~rp!<_I+gAP(|TI;;)GrP zlN=w1&#vyd5O!lKTsotDmo?M|5Cll^^wx!n(4F;*&31;}WX^j6N<^tOMDJ~97fKmy zTV{>yIGOom@D(g7kdd>VLK+`WZ=GeO4Sui17&JAwjq-3PI735YI;ZR97oE{OX78nn z5ni0cytNy&eENt!ht3ce^o@=-^22WQ2rq9B?s^_n{tKjchFS|NrMbRoU!?s~<$9T< zxF7W4f|+?LaFQUG4*oLC?1^u%_v*MuwWB#k6isuWfG%~u00?1ZG|xUiV+GAFxE&Ik z^K&GJgqQ2)DP6)=!-94E(BR38EGn@@g3<~=a3otq_9wchNhM)RC>?|MOxsjClD{6W z1o|DE69sZ*D0zwjN_H^NWFYjQ{6{|r6t;R>$~r}j0hmER4?#IU>M<Z5Dr2EcSJVbx zlx#Odh<L;|NU`ASpPm28rT5L2VqTM*C<PQTnyW?O7|8BG@?=#4PLqfOD=DeqQDNgj zmDA`T^kNHUVFap(4x+TJaRFdw@BolCO?h^!2&Gv8c+ec`D-8W0a0^+U+zJ>2&?^{n z2t1XxR9jmwOt6zoD(&$G;H8BE^gUtX{T=?y@hsD{UZ!Gcyh1D%gPQ3mnBoF30mg=i zE5X@OaC!L`_)yuA0G512W3~^8F`{LsDENzv4p|9>9S<P(lywiZKmX_ok@y!4k%&3- zUG1_)jmn$Wf*LM>Nt~-Va&&WZxIa`FjfUGP9S@FnmdriOSOc}k06^h3^${IARl41M z#fq&HPfS}u3f8zf&OpR?Wi)s%(!`IFg=pEh(<nKOB78<4P(+0?P`Kp{<QWNLMQ2F_ ztd(SqYx<K|KZICPvc!fd4^G>9owWUgU5j)3i{st!Jn{O-VP{P6k3$#FcC@>5x}JSm zl3sZf<TtNp4s8*%3M=DN3APjtr2^zxU;`qQz_XAbg!Yi@ygYFw1|1z;&s>Y=QMCJ~ zx5FE03{dcd5JzxOHu~i0?o@;Dh3|d!0a*cRqTGu)qZA8dBl9_sX9{LN&@CkDS$3*Q zDp=x70aYBTp~yy5u<IP~Y=4;18Ho%#$-<Xlp?Cx4ciih&TM+uAikcIhozr^U681Fm zfKfvEECy=P@F?t0_hfO>MjOZhZq1vJD9i^EaDM!m4<wkYS=n|r#!D=1y}HuUDP7M% zr}Mm%Sqv_b2Qe|x!1AW#uL2%p^(Ls`w-f{Rn-)Gj+D5Rjz&QvZ{KA6}32HdZY*s~P z(dgJap-6O5E#*Oluf5r63gO&$7og2%piVP7qs)_$-usdQ^K@s=_Q8oa-7W4fZ@0Kl zW~?b6yl2v5yu?Q6HkCF9+%f20iJ$^S75DFzgkMAKtXS^u>8$dHfFA%s+W~zC;#VRI z%ox|LO&(xrl~hp4T~Rg#m^BdFK8f>FjO|v&c|BA^)PsdUJ%wOSM(3@hf;2zr66<q7 zFt33H10rbwkhDZR1_Csg1A;;N6+Mh~jU1hQmknH|7X*Ji-54=&fkmSMDq00Za65pA z=Zk;0ZE9@HXSu25DydwpK@$XC0;I_S$!u0O?1ZP88DgNBz~DK^%fM(2LV`=bpu4p) zyvcJtqX6Zi0c2D;0=-A2Ta0S894`vl4vvB}JGitJk3r%s;oO0=$LS7@g>1dV#?A6< zs(f~4Ru9&J0<=5}5~x9$=ON}GY4U4prC@vUrPqAGg64~-%T(UjTE8B0iVc~q|F6ot zWMo81Tl;4TMp)U@4>ijX7~IvH0Z^C68T!jY0xCB)`$6rMOOgU9DNyOM@Q@+>WoOQ< zwqdQG^AvVG+uQ{64(LA)OVo97Hw{6Y7=(yI@KOOVtF{382<E#~F^nN=h7s3*cR8l7 zGCE7rK>~^@ENqYnaK#Qzidr6USDoO=d3drU@qEm*5XAXWS>O_=^=vqlPa=L*o22jE zT~MAYLm_z9Ss7vdhOvHz3f+I;Yw$ccJ)cru7GhMMV2iAdm#Xy(xrREtRF8qU@McR< zgE?EJkW<J_Ks39EVa4X4L^CW{xt431#_;ztNkN@mB~VJXL6{tBlcQ8n5O%ABfr#NZ z6CH~VG`$weUDH9p+zk?*j%mM`%w?e56$)HU9{_|-WC<TYvBs`*C(xiaV~hfw4g{<> zBv9pyKHD%qPNfV8;IVPyf+-d?xd3#Vies>-)7{JCtnA$&hxX)n+j_&a1B1}fTTxAC z2Y*pnt=j+HndVJ5)|B6ijc9*Gs>wm{VwIg8k^(t-ae?Wuq5hxWs{vrSibr9dx`I$% zP!M)4KvGc9P|!5>4ybt0&w+9SZLoq$^>T|l3sE2vD*u6Uv`_%ba{58W3V@r-CE?(Y zNSpKQ&MX>Z0S7)!>5g@@;M0-e#WgCVE;`l&oIEHTo<hMr5TpnqFfcQ6!<)K;(i;h5 z23{5=03e>}`ncgB16--4j*a&}zNUTf4a$O7fQm1MqOxYy+4z`{XqwBdrl~m!;N!-r zw0TcTMW|(5Z@W8tWD1pQB{Kldz_5@_#AxiGqPv<`bIqwR0<EdRuQbI$5uaM4(Wsp2 z%Nqm?L2b<fwg*A(w5-Z-z8)1purMxOgU6a|Z3iU)+z9Wo9)T4kJ4TP3sj8}4j<V2} zN-;wK!va>B!Vz%WfE*-|)e4Ml(h^r4g6UYj>t1R6*QM!$kbPfgt_-*2eK(94m35k4 znDTD!1v&S{*D)>bs1kgY*(fy`qv0Gu_CtjiYfwKy!uIT%cn~Q)B@8#S5{bGVBz+k@ zHtr52Fi6ga7yqKDnUMq_2-U@33qknPY?PoO07|cT2~uCT{~nm4@KPwis>MnTWHLOI z;|_~Won1s}d;8~Ls%|cc;Gkj?Yj9%l9u`-(LlnPLp@KT81q%2_go6IGd5{VdHq<W; z8|4cM`}z~h?*R=5nsyb=k+7_B`N8Eb8xO<VWjTfbSgITgr@0*+FAic0&cs(N#YiPh z<IcjjcLdrTG?!;n!Q{09W4b9}a;M@{+e*`0sDv+{2Q=Q;oLI(A^DngD!D6))0NNUN zo_L>I3gj%XrWV#kjpZAo$fF_=I00H5dvZ}EmL1#N+!h&SY;&Wrf!TXs3PG?k8B!RK z^sE=h@qD>P7H(KzGTM!mDB%_zh?)j~1j=$Ufe;y9w-0duud1*j)&*210EuvGL0h0z z*%@xPTEC|u{Kk!2wgV`Wn%?meSVQ-&!H$kNCoHh_8jx}TG`XUX_sgPD;Qi9}N<KRa zN+x?A(gz4=P`Ltr5?rBrgAv7PI|b4x8^}#?CiVWiFRImppJIh{_%qpd8zxhW#|x$a z_A50Du*kJpURX%Gsr$l~=R+)r2Ic`)6D)C{9=La69dTwhVf9PAC={s4{+C0MgwY{U zVRcrNQ+YLu0Qx|23^-$qbqA!K2AP=8KP|VyXo&c&TR@dO{s{(ww)=bo$d6NTHYTak z+S(p(K&hw!iI5J|UsRF&s=XB+YE2x^2U0xHvSJk^goRuZmhM*<_qe0nX#@y|ZW<cq z;I7Ydp<>4eA&*-@rjw6O%_g8{4TVP6!=pEvo08TBm#4*IYIIBzo-P1O4%7_XJE4HD zD}%v-Ve|>uWkNjR06z@`_T-TxhmPzEtG6*e)eeqfRER^#4-ihE*wRyx<+8xM$Eh-j z61*8cB!N<+gAx$YWdZ11Z3csbAV2y4Q}7t*sW_uoh8mZx_aB#8)~^nX?w+I(iQr%Z z4zUpYL9r!OxDqqOAXUcqQ)!6R;^A+wYLvTy$DiFr8x1~n7r`?$6`|clFW`T3v08+Z zf6-N!M(ZsExKB0OCxd4;9SF}HfL$Xh<*D)tuts=#lHXAtMMxlt-6b)kN;Q-R8XLFS zJ^cy5CHRAyf)MU4`roZe2ERK89!~tqdh-5pJC}*>b>Hr}GOyTBtJ<EYy}W*%_rY8G zFH0iN*X~!`-11s>^vk!UBC1~VD5Og;O8gsVm&9)K49WkGhd)2tInU4kUVT&aqV5;P zMXQFqFWz^A?YzEbwWTo@)A*HHhW+jbpWXD{;Ztx=f3ZMVIcRfjFiUc-wPCQkA?@l9 zX>qlm>A#m`e7j>vkYahf*ooyBu=r5HR~;q@d-a*?UwF_*9v(@3wvTRe=<siK@9Kx2 zMq_&?8T}vl_iewwUvYlm!y!3!<()5vx|EwAIV42Ad?5bSdYR=JgQYcYxB!33ej99p z<>mFJvK_zrmi4;t+*#ngZggwon8DEgITq8!sH;6Ztb1?TUhn!vr_R!qac!&5ES<z* zS3Nni`rPUt?xt?J8a6w&GUxXt18rs&(UTn!_Aj40H@|=L?`op+bgu7nuWx9n8}XID zyMzr`oj@k{e)RSZzJA)mX2}@?Y1|LdZZ`PEeTn8Xwv7k9>@^b!wG9myj1og66+b3j z8~fh$;Nhm?X3sCmh9W)853De<Uca^Y;FTTro)%|%?aPqEF3T6^Z=G`Ap}Um)P4Vz6 z{n2Ahzr8anJoXQ+uldx6V<oJ+?sCc(zqhB`IK&hl*sv!uVAJQunEq1;)AI0Y8{8s8 ziW`{{@Kqf5Z14|brZ3l)Cr_NY^W)K#m(=ZtZH{wF<Cfo-JDt6UY}iq>B<}Fy?mbr5 z0<0PXme^;9P`QuAV?6_k3H95PA9KgQ{^{A9<5|?o*BgSrl3-RXVaI1I3c*wD0DYRB zTkW^ge&bS;z$Htato%;ZxTP#Q8E|cjU(aXr8xJw*pL=}4pN!%e1fS`+{@Dh%$(jc> zR<ldCUR2cDB$n&H{Ps<(fr{uiwPI6v>Q`e9{G|Qn_t*H}*j^j-%X^=o=ea#bFJqm4 zb<zGBdZ@A?<rn5k`{AnX<SZBH0%{%l?(eo9e<u=N#GcoDEG@$ye7asy_N3f+`xiyk zM)&miZLi=zxjOXn*^y~n(^&LOqkH)wuZ<>$nL&qIHJ8(Rf4sZ*akpcyckM492=~6m zm+1+XeGNusD#7Q4W`cwL`vyA>?0f-D8pQM3+@GK4Vm00u&LxfVdkzN~6mAqG+>YJb z{<isoI`)F*&Shyf{@&MwjLEk2`_C8MShOD#h)=wSZ*^q<hSScu{5Vac96Nj@+wo#X zw!mPYdC#S77rZa8c^>`q_nDWyGH?EI>{3@^{T6zPHrBM~dQg0gM-TS%+cb;1jH=xe z*`y2aV;?=gi+!HE?YWOpXUrOG+3KFp6o)(Um{-xt?^v`Ozu_|GXve2Rk5snon)o7X z$+>l8$L&{CMt@5;JJjTHvm^ad)`4_wvr<hoZPnVHd-W>AplAi3XOILPF04y8pNak+ zeM?Dgd;ACevlq6PF+I$+Jn8C3Yg?aFu{9X3Sj4@2j(e+!`r=u%y8nBbb+~zA;`yGq zjQw_(9`Rq;*0vw78lNdOnei6G377wvYQ4qTE5Jmx$!jBNu{zrIQdaVrlgExQr!VP` zg}!J=dUDe#;|EKHLiKjP-Q^%PahLRK-wS{Eo`QdR*E}83?`s@yk?P#Jfo<2He@!w} z<q)JF2=_l+?)gwH{n|BIm5txtlj3G=XS{3sw}TYgsLT#pfIMW;?Kf}!1FqMzo_RZF z{RPJz*RLxMAEyf9RoSIi{(vL6e*1@O;;TD^JS`Q&^s?n0+!VE;r1UhiYWd(F2R5+B zLv)XpWIS4OBr9=!?~yOQqab#~!p|PJHn!c=J*$`*ik=yZelcX1I%XT+=MfsFB8Lm_ zPsDw(B~bYH%||Dr`fi`fy4*o3)4Oh0{o%dlv${ZY!yxMo4w09a`WQ-~$Lf!We0}20 z&537@_gno;e&}v(vTk^HaP7CMn_ovPdEL~Ztmyi=fqUy5S1d%d-nb#f`f~vX>o&=m z(QC?&WVg$*j?u`!x!jmPDtWqv_m+w)U3{@el`=!_Oo+O?)MaKiw(gD5JObS@Z+%z6 zjoWrzv3oFmduqFK*+|FbuUy^VyJo)kP1GIOrv1i9b=$>s`>D3JAH$r;4Kdd*wLXiU z>F!V#p^bCOlgBo^sQB9`zqak_w-+azprdo}ZNEs}yz)i!esy!?i>gR<RQQE!DcTi# z$a~n|hZ91gtYD%IJw4X5Xv6zr;?LX9-%nvuY>jyPJ_}Az*U}jUBS7jOz{}qONJgD6 zhI~FBb2fheJxm7P^cUSn-+z_%3;$W#i=ebeQ!zj&c;W)zSI{7^urOPC%_x2!=I{bA zu4_R30<#~G@E{#D6i^p;2tmp203$65ysZ1@Ii8i#G%$y|8MHf%g1<ly+_!S(osTOR z*rCgaUzcD*p%jS0CC|&kDs*@Ku$rLu7f{)^13xbf#5v?C)mqe;>L_2hTa97~Doso) zvNCdZ!{IQ)R9}V)3>*?&Hl2?WXg<UhsJaR@asf)v(^?upoC2UCsL`=;2+h`pj6;xr z3KYORml?b_0I}b%sLEiS)#45<>G{9=CU$`31FVuqfiZz1gHTXwjNu0sQ>oNgM*@%{ z-LY+rv-1^6%`WwyI~WYM1scj{q5BE^<Ul946v81v$_HRrZm;pOD3GF_de=xOfc^o# z9Zp3|bj%LKGQJ@aAtB&GL=lz@hy*)3qN8zz=X$9aoOV%B;QM@!m_9dp4tzl}54XaP z{gu;*QUXLtEc8lLq9Cg~vk=_nQzMcyl@w#1H<94@_&vS{tNt2sO`zuAGqp$RLV|@L ze^o$XI8CX9CY9_177epHtq$!lu(cvHN%UF`SjC{gF1wQto~9eiC1=jL#VMrVY}4ui zWbu_VI(?20uGr3Noh)oQPfHY|exjUXMf0c|qYrvHruOtn!p>P3<8T0JuRv)Gcfi{R zTE}X*<VHl4Digq*1EfeN$f2eOrb?x;wY4=w3~TE41ATqy*h*9*h(gVuQGGxx@KP{1 zJ1>e?HWBZyM~!Enp$x(d^my4KbxTD|=xG4&F9`Gah_UPg5q+SAaJg)Q^A^x8L?uFH z{t31&R0DDCW2iw^?5&w0+hJCMr)V0SZ4IOEK(rMA)u9KAYoE>1IF(WRbz7jNC!vwS zvm(}^1#iql{C7$O#-(_$Xk?RiJu#hly9Uht6YVUr#_$I=E>Go>C<M`NHJE^(LOWMt zx$t@fIAa{dFd0qDz|bdr6~q~QnrU5FB$o+j%fS){9a{HwA5mON+Vz}d`UH@xH^Q9q zV<+tCk8q!OwSaQ%T9AY2VyQwVUiRJ9<vbQy4KxmPS9QEbxy5@R_v4LiuDd;35_0IE z3oz3HHTbP8M&_x>bV3AU1*ZNQmbP~P;B%L)Z^3QR14W=d+uMt*mV|-V;Kq#`w@cC= zf|&0P4Mbye+=nrtp<e5xAjYO8q=8>}>nvzaw$qiFB`6)&pT2&N*uoff+aoc2&B6hD zbg^J`gjEM;c9<~C*SN$U1+oI24FG`ATN^~j1{w1(WVN)0$p!*RLr2LUDbOi18CjV9 z@f0D49H$%s0W=!~mv__y5hKuPK`XJfY;;<x;4#?<6;jFvQVss``!ygG-dvHeHB||s zP!I@fSwC3-7gBAZn9=FDUR-0oc##ugL*Z72pw!*Fq1)qN-f!w3n_fSJu=|1s2cLL( z;cLJs4U(FVqZG(2zL;;k#A=;5(4mD8Q8YRS^=Ch{K1L@2Uv_Pq!CLcWs}rUv5C62< zZywYCYK_W+fQk`lIyCbFJrA@4T^2MEDs@>{m_Y`q(%>E-3<w3NKufn6%c^P-%V8}O zORg#cmp2ITc!)Vl)B&Y}+xx*c|GsWT!tOvb8(;%&K;zLZ)M*TMV^F6c%J7Ygt(Yh^ z%oTNYL(~L15;U{4*+jRI`U=Yw1(0D>;OwB?4+J5Fc7Y1yImXWlZ=6@xsz-TBFg)hw z>G1ggwGfqBd8R4q3Z=s4PI5$H|2xsp=5fy<=>F{A+sEHd?jg@Wxdwezzk;_7WfmM& z8!I=8+*j2%hDPrne1aW@Fr4E{m#W|8&>V5~bsl~ynV8lLydo&ex0}&&vBkah=8AAX zV-eWwhrPXtj$+j3<cjh|cRd&p7R#<Vud81XE>-EE&&NW6+HW8X9EcD@Pf;jY4K6X9 zZ72;0W=_^4RGNR*f~&Vf#SI)1i8*roc677+MC>@MvjJz}<Wbb&S{xt?!ZSb?%kgDE zqabKz*@j>u^K-BWwZie0N>I|OArnBjP-wHfi6wc8y11UOx?tdBMcv6DlT>-2vMV%G zQf=*Q5er%|VsI}qDtg@W*_I~I`ax2MR7F<VgfMD@phjDD0w`C|onz-fFduLicAPiH z{BSW&1@0RXs&AD3@b9LtzXo^HbEEe1)S6Uqih-kT@FjIT9XwjGuyj$YZ(3UFV|1s* zlZW;{JOKm9g?1^FB5R2d@co00ODrWo<|;?P6I-Z-xe8YWL|7WbZ!t0x8fpv9k6)l& z6WZ50OWoVkJ(((7hjokkfL<UmrgDgUXkz3+H)no%*TWDmni<i637)hZVkw%(dAXO* zgBr&Y3D<4oajhucM&;1BQ^JBqK_IAe4p@w6X0+EBwZW;f8pP++tDuC<%famfy``cq zA$#U=yCdRM)WATK4VrPFjRP7>hr||v6^8seH}%Lrc#GpyJ|qxoXTVMeD~(FR2KgEK zIfV%Y##N9jfFgjdF)-Sr8YUR4c{rqiVFA?tC-P-h532^~>jMmNE&MIcJTw|6-^9e^ zN!0#Mj6m<b{YH>PAt2IhL%^{Lts-5h0u7xeD~tPh*N_yOgtfu#?d8y!0>0}{w!M3x zaIQM&L^HE7aH)52BovHgJ&G6wyd##Xb!?2vp~x^OXg3F%%HT#c^mCy}6pcevZz|Q+ zDqK@v6cQ7f<N~8K)H&ew^jP#X2Yjhh49q^$^+T7_%b*nki~!^3!Tvh<;>gjBJN|d~ zGcbWg@2ag)Z!sv0{J?YJV6I*f9v+Z!^LEKN3)aoJ=hKWPn9Hg46(J#BT^tHz(LNwJ zJo>qJ4p@)OvdBvevBu@{d=~UPv_$~mx`U?L<OmQ1#eRxYMP41O_0vG~Y#xAqG-v~b z)}KTB%biY3d%)o>ADQ;_L`95rE_7X37d0%0o*!vJc%xAn;2r5dd%n>^99qcb0ihF^ z$HzcJ3%GEbK`odD?iPA+fWYlf18RQ<B^-z8!3sdIhK@uKB_P7jQ$uMEHgSeVp6kcL zdt!jd1Qo+jiwDHUW5*d9FjaDtjrHW-fm!knrb+{}R)AkdE|)~CVBW;<{skN(V1iq9 z()^XtJyS4-#5owG?SXz?aJixSA_a_1Q}6D&;>5TmhW-?`R>$UgLvPVX2%j*Ob6nHg z9^W%hsli>~F>kC9y#!Wt9y*AiRm1~&6xnPhBETZs0>uozT*u8JL3>Fy$xk1<^~I6> z7d2`_|CksWQA`Kf9^d;1R%P@&DBanety&ZxVuLsp6v)sNRt@4XwkP-0#GsIAfL$8r zB#|hALd7Z;V)B6xoMUyzdhq=gV=;#L;FRQ0p!pm&&(k4b(k*9^%@&jE>+^=Ao0=25 zPk<<ZHitu3a2Gp8HH_H-7PH96sFHLc7~I~0|EwR{L&4R3&W$0)fr2LL8fyF01q%(N z&u$e;8YJ7v^59m3!6(uAli=is`Qwe+ggT4*BuiB`VIne<>-|Y)E&bsS)0g1Me)+|s zL(uILwmQYuIU*tgq~5#Gv8n%wq1JoD1+$py5TwYKcpAbGsBP0;z^#qUvf<`pd6hPN ze=7>+=oiky2gj@%=duAQDdifCw-XH`w=^@XyJy-3J@6%<^qh!_YMO@sqyV7MS#}(F zB~Zzh_aAuZDF-VD@zgIGt)=wzh<X^41nFih-RoD7o2k&ePWRU?iZ%>}%49v0nT0tV z!FqTidcYHPf6s9$lImNGiJ$}*Q7D|O?wHtHFnwSk+CWhdb(F7KdQAavXl6<eg9L9w zuNN1z|Hl4+eI~N2PLjgHur^!xEMS4bj<^K^<={jsVj`{4D8y(DP?;P7Zh;|mmOV^r z3Kpit!(XHd#Z;CL`1(FVv;+q@30iCo`KKy8YT{%K4UMq2UUtH`Cv1tGh9>I3A`5<4 zBZb8hPJrL2ns?V9<UH`b>Qa@V`_>7KZKF}ED@ZNR4K*J~kfs4<t7VuS<T$Dqd!9r2 zhb^pSNHC&~r-!1GHtwvk5e~N1*68$EC>omoBr|ZkV?uU>H!7F*4&L)Zz#|=0tC$7D z36@UB|9_0V2~?A3-ZuV(Ey$9HVU28RWf5i3pfLhQtDqD@1q&jJAXQl^CK_y{=o^iQ z$ReGBrD;Ig2q|S1L=dsVu0>QZppLap0xp2ni57jSV`skWrk(${obP|m*E6TnGfrDf zp69-QziVaXR>^lR=KjgF;+=uQK_s~nCvas2mhpt^Q@3WPEnIoT#)EiC+JD6pIdK2M zu5F<qoA8R|)zswG63WC5+z|j}yRpf!lr9<N5vhoUEC6ySD6oKF<3;b%>cq7Zw0S3U zEoKj)=sFnwVxMIl$RC@+IFwwGY%m-|50iC4Qiz!q>Rmd_(fA|`7x;42IRY@AENHmH zSRi{Ea{4fCvwCmei_|NXi*-WWOkrUpumHNrvvk$05Z(p1K1Vk_J^O1U(BW*(SSHVp zZB$&Pfa%oH8mR<DL|o)hzy8JQg6stxwZP1Fb=F@UL9R*48_2(cS*@Ma>4auf%I?L! zID=psQdLi7?ZCfl8ixpz(%9RxeS8;e))@Xx2ZEDavlEc~xH1_E%T7bz-TAyy`OoQV z8ax_18q)3s9DjS*-k+P2ouIC+uFk8e>raEPK9<PO=38Bhjy82yz>wr;Pwtfe2+g`) z!+tU`VNVGYJRl&No@UZ}q4Lg!+#PBMUb$nr16Qn7=fHRvfk)eKk4*s{i0HoY%o`zb zaly$wN<P$H({Ev*02Q`2NQITh58|f+c5=3hIS(84&*`hcTbE!mwn^}eN^>=|T2N)x z!S?00wUeo}aF(-3g1Jk`PUUlj5xG&(wKc?l^(mn<Ru@PwHVG4@CPijE;Pb0v8=R>l zrxEax72ui^VSTR3IM2vs@h6@=6HY9A39c}Vl&{FE$?sEGcB!lx=Dha7^pzMvz*#>3 zEdG|BL?TbzWMq;$Qk&iO{LpFVpz}@(4wKLBsK${|K%Ij}RSTDqZdyW~Eb&a4Km~=` zw<k9Yxm8CO)MY<D_%9mSJuzs$3y@8TrxVocs!u>Z?+Fqk4fY0maw^oXh?=KZqoWz9 z=Z;pJF1d5(P88W*V5EeVW9Qh^*p@)sWBIYcB{-2plBZZBucTwT^2u=f_GE}VJ+Q#u z9~u?Rm^Yhi?}*w#tt<;}DXQ%q?XB&H1fEO{Ef6wCrQN{k2KVzvz11d()q*PQwxiFo z;=Q7v!n^{QA3u2kn@*;osQFj9*fb!5!$|au`_QG{flH?cC-(GobslzP26gG)>1*G@ zJ*#n~qA98}c&9y&$UQ(c`GEk*gvD<xgC|abTBk%>w`<pK5aDptK^}`kjr*`(#blJ( zay|r!;Om=#5oHBf{Qqww8>y<oZj5XseVFJW^L7fl{ae6knMP;h${*q|%qXEyI8*K# z0WI1e2I%q?(YSz5C}4^20%=o*Q41n{f7qU2fad+5252}BVSxTQy*Vnv+_Lt4zM(Hi zC-DmdMj@M~;`ygRTH578!@}j7F6llW4LbhGCFsKsK;Z|bN{FZ1;C%r*!&lyt0nV;o z^zahaOjt&v=E--;BN@jAcQ1>DMT(elAmWuMcCf<2jHJe0eC=j!`pVY%F%2;N&W9+# z!&l_P8S)m2SfOl5COJ$p{c#$0o@I7v9378#Ur+}!pl7bQgaOyFo7iXX0Wo>9%9=H2 z_8D^VvWXstkf5Oep92xHToF{A>25rk1LKMWIg9!_qG1Lvw*PWLZSP4Th5!!Z7$P9x zIl!2flyM^+V-X-L{o})36;?Gh$kxGlf+qsc^2`seIkK+KP+LxwL#Ura7#;qmS%(}D z9m8wUxpTK5Jq5NPax6|bVX4Q?4-Ff|p!HOTJDR}#z8(Lf4Ts_y(tgA@IOM0_)dkai zZ~|=Y|8k^Z%cbMkdYcu{P_0qp7c94Iv>Z!Cgid^G{xc%Y#8uYT5gHm|X%e2Yy%hSe zC`>^Q0ZKu0k^_Jb(?+m3fvSz%`AmXeg^TJ6DC((cj7YHV1Reu8*Ri_+?z6HzHISn@ z*+6TBUzEGqyGO91Fb!v6Rm)mSM?wR$OLvL3U8uo~1j|-^gALqQJEC#4dtuqj5*+R1 zM$9|K(Iw-ylaQw$Klr<~^d9i*+U>#=o}4a)61wo^&*`hlQh}dkRILm%%BNu0hq@RC zH(0qV;L%6NUUH_iRp+2CvlWZr#6>UzA=QW*C<=1mE;wiYNMV34BIYWFivFE1CG8oU zNwqR~ivZ68q%~_P<2Q>QAN(&pKkTLrod(NmHz+CNQg0!(1HOWP*h2xi&jGiYT_1d$ z$b<1t&;b2uDQSag^{OvGsM<TJ&^);^^e$|XRw9@qA_roeBY%jQWs}p^<3dfR;8>e5 zc{-B{Dj|<cQt4B>d>r9CTyC?X`{2?HUoLSm5v2&hD!4I`Rg^3!o1+ucbVM?}2#$r= zeq^kaiglBlq9FNTkuAu72V7(2fPW@&9#UBpv}zX4hDBnhFxkkAAJI}0Wge6VW(#Q> zLqa}YRuAwF+9W8#4kO0qFeGtG!Lkpksyvr%D_jo;5lLa7b~rmY=;s)jq||J`c<{6N zF$j-%vKnvMr+CZ8MX3mT2(*IYqq=8Q_x7(WI8FbUgp@<kkyUJtBV{sLli#1@djq&o zCQP|Rb05lsyK+NM4x`+O8PSJZJK$^tBufEIrc_6(U|G2JD8rbznaM>Cvq!*L7>0CW zb9ccp;pFaRAyByFzJxRZu@guX5Vf_5lbx$(6(5&re=0u4aqu@sMC3s6u~1N4lb4rQ zi%krodve}lVS$4G6o6lY*kJihFS|Q4Hyfg6PwCtqwYsaTOG)byEDniHpOu}(#Gd+N z7J9sETR6icnk690vnaB2tiUw*)Gn`Je96?<)~b9<b84E&pP}B-b<j_0s4LmmVk{E9 zWw}!mWjB!}fx|PZ58B1inImAGB{Ux+GeaL?3Jfa1Hvl_8?!>Hs!u`SaVz@)rAv*#e ziJFLsc6bcDxdhm){idgWWugU30BhK3W;MQOAS}8}lHdZhN+;!xfB_N*lY@7w4EDm8 z{?G@iHA9>#wy=qcgzzDsL}+;-PzaO9@WjMYl@T>ZX@pP}?B4XDwLuezx3cjNAqS!> zP-O(_eTL`fc$!G~0hYYQU(#hcIf6>xlJw(R4I$Q9<ZRqi_lyUiJBk%vX{oUl>%=oS zZJF4Gju4i8B7ngtU>g;{hwD>PI+(tKEQ%N;k@zC%@Z&K}wgmHYl{t9W^`T2dj#bHn zLj}+@LE5Hq4YWL2>cfNB6H5qDK)elrJR5HWgE5z5Iikjs0htPRyCOgsC!g<vlfc|y zLL0&bY(P%c(@LG*n?(bU0>{SGIn=^q$-_esyOY77Ap$TCFAKZNOmrxlYh00_Ka)xQ zTZ1zlD&m$Wt7H2kla?TI=9n9gzHa};OYv!g2Z7h#C)S5FAEa~;otXEe8i5lt*uo)W zwW$T3k%pDL%B4!4x~@wZSQZx=OYmuoOC)s#cST*T!gk5dk7Q755CF4pDkEzT)S9>& zVBRaLoO=pO3M|b%V>6k5wZrs-%S%vb4n)Mln}}a~@XehK!b<rc(Z?)2Z4P+47lU92 z4nhDXXX!G)d;fu_DVv3BVsKta{(*~=EAJ4P*;5vqt5rt$E+J8u#z(=7Tc3oqBaAj~ z!+bU~uuvb|3NTMVk#K|dj7(0w=8C)#Q3R_F!Ync}e^>=mZMj!OPHvA<P^BL-IRV*+ z4S=|ZSV3{oAyT9xeOdZad*9v5qI0XGEd~fa4W8m%SWq<*hNgCYBqjL^W%|QIKM-LB zrmJUM7-nkwyPFL*R?FcpT>tpsVFG-v1!_Hv*?4$}D@@=DH*m&wKJ$U%6sCZm_c=iS z*FLzt#2eqP#v`(+*&cv5%!ge3196)Ppt5Dqq>ko1F(NqrfTtB?R{F>Me1x_*^EhMh z3z;rB*inCLDE{tw$L=?JkCv7hCa{eZ`Vii;B4#hl*@2?~SOoGyXi9VVakB^DZ0aPk z4@^%(S&ohcY;R3ZM3gy_zIHd;)s4#^u8JK;?8G0DR9k49qU@rh3+kV>L2pQ`lq*~9 zqU`cc<l9D;3CtXT+9OO%U-tvw0!TfvRbLoh7h;Qyq)`7oMEigI?OCXy4DZFB91IpR zz8K1d_9hyUcB|{tW`937TWi%dc;Jp!AbQG?;i$sm#KYYD3^MnA@oTQ!$6KAdVM8{w zud_)t<L&T)0?M<?i-P~CG?djFi*4JY4cdF379@b(^+;PXQWN6Bppa_8EfYZO1oSTU z8O}Qxv3}lt@#}A#duwx$L~-#l);DtK9|2A`^*SSC!8W5Zws34GL5CqILgEpL`tdE1 z!vOuh;0&L(+j9kCjo>o?A1Hzt$k9bsp$7x>lChm499tMBu;d}HAb`o&HPx;QESKh5 z0Z&9cR5Q#>teUZD*rqeN_=B@E<#_L|Z5Gh*4q&I)@EL8t-Xlt!JmjVhzl^+zTEO{o z5~)=B0>DH|X^Z=}`5sX=xEa76!rVhw0?dM3^8*hbZw9N=xNFF?bT&-rAG2U(%m@Z; z9(T@A5RF=xFapPklTv2`q!7QIj50i1dfd6rTHEL-;2_xIq=$oAo~$Xj%6sVG@2F?2 zbzKKXb<eOC2Wxy%$<5U@#9t$cm@{I}57Ki{1<5qV;DC5YO?V0$7S5~TiPx+^i{KA= zQ49y*;imzL3={n6fL&A+WbPKyvQYhsOVB$hAePOzL8j)^m*NR^7Z`?QHWyc@6YkBK zazs$!9hFPkQ>soSbG;|vlzNSuVC*fFMws0Rl!Bw3q1R}Y4O=JnzK&00@4yYv2JvwQ zCo$Mv-AOIGio8A;I`2Pq1iKbHHqLFA3k^7qxa?IqsxHl1`mjzP-0k!Ii+sF?G7y?j z%5kE+ULQR2Who@mz9j5#N{gHT{ot<dM(fD&oogVoExB>1KFVisSGwnW@1KxzLx^7o z2C?aP1P;$yyAGKy8V9P<Rw6K?B=|1YH25Me#~#vr;>be`pZc7pXSlKifj`*qaLw<5 zjgR+(7pr=>vUrP9*`16FoZJaO;y@!}_?)41=Qi|6b(G1Sjes=kMWq<SA;I&Cs8)AX zq-_5}7JR2O0E;9A2PCLy_&38U8y9xF`FVhT;ZJ8#AkK*1dmN!0H3bNEqFjwidSpRC zvQFj@h&>w-%$^1PJ4cY!VXrU6(GNd2RP?hCa1OYm)9ZG7y5zIz!Ry=F<n8UCYU%)w z5%&w6<Z5MLp#gk}JUOxmX64?wWABIpANhqEHqB>V0k$==x!_3+aLSoYJj>~%ZWm9u z=TN%l`8WjI+polX<-*#k3d-s9GZ?OPAJI7Kou7|eO7heWa=txzqoB;V9ELPp$Y3Br zjTwb-H6D)de)y#EGqn}b)^Dw?RnWU;S+cP#OrB$aK>R`xiML>zcVZ8S;*AF!5HoVE zA>;mwHKs)uX`Ku?1G~28GN?=Y$xw)8?*71&i}jw%f|ENXv`vxqtMEY&0?eIx*bvp9 z!7Jk#Sst&mH228M8yORWiqpO&2dF97)3FHUI!=OCyDNPaIfOtif;f*E9n(z=EBT9< z6!yp|F|H)gR=<ZSC*RU5A7cRh)|pFbCbz>s2#3NS`;{LqQ{E4*Og!JnItnaj;F7~a z?T9R@8KOpXgtr}WUW@{JN6L?+_#nv+91y@>omc_^AQfI2yS)t?ClGD<%~f?%VCzE# zj%>=fU1+|nt`6Bt&&YwR0Pq6kC=Z7tm!m(7Y%mQTM4V8#V*ifABLk^^vD-K%KF%8L z7zTReB9LT7L^Yg`tt+>_VOum(Tip9G#boy2bXP&6*b(1~T(~=t{1k<iPwJh!X+P?m zklX?REZC27jO_w;Y4I3tzn7&7XbLoX#PqNS>U_y9J5>aBYKFb9kFQ81e*oEmPy0V& zkwMgIKQ4kZ-yIVkroR<2<U=AWU<ahxA|6awY?Cc~O2HOSPZOkx#G&bs$7DG0WLXGL z&tAV$sKqj<Lx|hEwfwh~=Xl$|V2GtTJHlEn91~?K90&~y9}awVyetQMkMMj-Si7;8 zWL02w&LhO`hz{X`6>twY7>xAP^z_1%(g2F{h!YVl_)!u)d&&*|?J(eh6Hff!ohqLM zAa4b)wp^ZU@L_nqM`Tr*Ux2GpJ#+R0LX{2fO|MrOeO__2m&?;zF~0zuJoeBZR)Cfd zK)!%+TLx=$g|NN>=FZ-?ba-uu!`!#MO*p~cXpBHAN5|7a*>KWhQy9dl_Yzi0Pbtk- z;8LLf9SO(7M~C>yI%HPfY+wMPb8+sZ^L2|#pZHxZeH2xK|4PHN9+Q7+FeC(&KnR-$ zoq_bQ)4F#Q^EM8Hfd}c!ET~Qiyg+)7-Ub|db4B{Y`Zvt)-st_ZteoNs)m$I<zPhW# z;NShv9nNo$fcw%+sKM8tu#)@wEJ>2TSc8e|7Yb@=C)Ti98R}j4L6<5gCr|~y8V@TJ zVSDXIvHzuZQavH=rp}bp3_|#jL<E-!@j=s#@_ETz1Tl<Z6uSgPKMC)X++0-)<xFo6 z4Yq1rCXgE2jbQHV&$xmI?+$KzsROqp%@q<FB=6pl{D7bwf_m3f_wU@fzR{dBS{-Q} z3Cil#<@oiW))ImerYX)jWAEhKgUB{4ZAZAA-#$!oW&UA^g<Q8Ou)x8=g8;|Knu%Z0 z_l$Q1#~N(8aCc>=pK|N%8xxhvZ?@LMXj6CRHAcpoT)|>*D_IU<>*0j-${T(8!-~AV zafJW0_~17yj5tx{xysIhWClj<yn;BUUp&{}i>CZ6o3<QNApHX%9V8%kKvlQa_V%YH zR+XAWek8p}A!>Kl2n3WTt?kvtOVQ!=Y_WD%v^I9PXY;HisTl_nr2noFvUS^q2{ap{ z0tZJ|B?xyskkZShjh71Uq$YNq3ok<a4`edEBs1yfL-lDe9{>-};541$R5>z`lXzn` zive%fOqrjfBVaWHu5q_G*$_DU4usATZWiyCmrrArXPJA&+}s?gL0nuMUX?M)5!Yej zs1NK;9t!+Is$f%lMlokK*Wr_hz!`zn%hbos)kG&^&@_RONucSX$Ft&r@E}^ze<{!b z;mIzUO4<F(+kh_{^<Eu;&nifZU5?OX23AY9_V&$C$4M$qD?TT9y7KPKT;VCW-sZ?D zPEAdPV=F6+MGU5(+7T2=@wgF&`oJZ757^g1rE;hq95&3_KJ7?(=86+GoJ4ZKbS5Ah zY>tTjrDlK@K%J%j209*kc1Z~iQOKVp1oZMHxfJHqDZrl*QTS}G;MkbK4c#-LV}4L% z1<^}|UJBd?5axL0zYc({Ig{|cy*dW1yTnZy5m?|4VGcb<t;OF(sA6z+bzDvvkA4(m z{Ie^_E);d7H;^1<F<2Qg4XJxnIf&naEwrEb70H~5Th^PF6JEK!<yu_Bf<w?#fPAdL zoj@`2^{I-<p6g#<uc;j+fr1E(mETBT3{Q$0T6+dXpRsv;2=L|3fT%sXMFYRu0|~En zHQUe=!EhyUFy##qqf>+=e(C4u0IQ3z&U;}*4ilrQaE2I4FnvYfEe~KwL!5!FZEq=s z&j?Ho9#r@Th@W4G5)ej7Ur%0552Q)B5MKJ@?bkTcZnu?Ed~TkKP6NNx^>zo~^Z29| zct4_RHqwLUbkd~?*bmO)6nTkdSA(mJZ~S2ULRy7beD0$fBpL#Enf=a1<tu7NwPV5* zh|KeS@j@km1zuJ7^5$xwmF*99FWX+?mW|P-uACW^{mWV=VLx#zzQx(w)5%Hc?U8s- zjg8b^C6ISi=_@^i;o9tzDRT_xR&MU(;SZcBHYD#5E+^#9`ik78Dc@Sj02kCw&A{15 zl>KCoBcZzN1U<0{lAW}#{V|s!Tak<4<Cy$9naoTby(E+k&&mPEBseUQx&q<eYi{aT z$Xxx%$(k6tObH(VQVpPETT##l2b^qOb+|n?G7?;+oLw=2iGZ5%^Ap&6Q>jVLemsJL zuR?+_?iJ7<1NTf5)zzlU ~PqUOgZU5mdv@Efvve~0@~tzx`qD@q*gE2D$jBMEM> zG1-6)kPm(w$QL;WH=BQ~U#-r?sdV%5RmCApg}->-3JNq^aqM^>e!8Hbuxc0tz*xOR zV2=$(gw%*o&IXKkVCn^6>LC^&3X=TEDe;7@5d*W3$!I?u8)Q7VvJZsLo~VdimEfq- z&^AK|W!zm~Vn>9!47RoWJ`%@J%H^b}RZ)2bB=_nP)&TsbFn+C?Z|aO?wh!BETFC%( z4}dUmW&MiCgO<|9N=pVSg2iMKST^8nweB6stv*|kSy0Z(2{iYhuoQumCA8=>E}0j> z)gvO!0{otiW(tK8ELOmJa&Xy)5uAo;x}?`KWx}|4q!%)fEP)E26Tw=+Me;Zd23$vp zn<th+^962(2^~pTgyyB6KTlGu4nI}01dk;`v<^gLcEwm<n4t*4iQ;W;NEi!lW?8^l z2(_>gu!fGDrdKfaOsFl=dI$e77I<Q(932%OC3*s=AKv5RTnjhaJa}iEA_(KfcgnsO zV=^|DGBkJMedRY%5jnkpG0yU5b~wMIkbyZc7{{gAMxcRX1ZPbarb(oY;m3Pxnzkgd z)7XBUw5m!)l1`|#A2bqWUizxMeql0=(l`s7Sqy-=a2U@%Wz^-uaStDkxj{<k>_#>V zP~+6VK4OFD;x46(Z|H28_%W8K!SppCy+H&cC&))sTCC>NSVo1&JDNE{;Ry07d1QF+ zv<H*~Zc3!);unTz0dS=8B7>74xsHWq`c$WP0-}q!lFTdqI|^Q6AFo%z3XG%=Q)fun zAYv1^f+YW81&At<<fdnpZSID30>!NH5=LaqTqFjdTqXO4m&u`3I=g@+bG4g|Q)tM? zCg3W|#WF<AISC-%!E+sGAxJv)b$S48hD;N;7bo5>b$>jAVL1n>KqS7!hoBgdJNrGW z%3O^KrAXcHLw<!<HQ?GX2-e;K$gfxkKIyc{#@JA@qxq5SUdUTORP(rH`X*Z|bQH|H z(2!yAWntUE3D$*72LyfDhAV6(<&MWOk>UvokRmv?uI^;9R^2I~me!tpuopW*VVdMc zYfNq5xQ}?U3*`ou<O&0VhKc=|Zy6$2#-^rH$F_vHn{-mNcZUCFz9Tw9g#F_8VEUtm z5++xj)AaV@m5qso=Ni}n9Gh=(Wt$VPZ|W$bRgr{s*>n(~0=B~Eu;mv^D}ClIsLri{ zNCwG!m~csmV<uOE&8m_&XZX8zxrCQRhZRWk&hswev}#AXD)hK>w3Bh6yfU)8OunVw z(hgpZ?H}8j&>I}?W~}gYw7$FWG9HbL_M5G_y;|+$#AL9yc!74p!83`-8}9ntTmvhY zVz(Cy%gLYaqU|KqM31IV{+C&I(Y(1R$ufyy1s0myB3R5@i2QAGKH@4HCsJRWUu{L_ z>@6>DK%7<+7=EN0Mj^IlJrQjABg&jj@x&sIjzGD22%yNCb^XTeu4k7PE$ofm23!qh z=p+S#g{~Z^M{v7my^D*9Hx+7uDG!s98u5Hk%~c?W2Olus#X_Kf8&%{-?CJPwG5KWS zRtF{>x=g-DW2!HqgtP%l>e@C??R%$E@t|cUkvVVM{cBG?YPR}1|HadPtmioo2jpJx zuXym!J$qJOIyG=-)63yg`97NTU+eyL-6OT)yL$2CSDTc}9THBM$xfbkJpSOy{GPWt zCtsX#zo`r^s`v1``0QNAvlpG#`ra1*6?Ns)FRfC~EZ8>k`2C0!_u(${Ta%sM8_kZH zZDCk+CV1tZZ`wF8S?Qnr^ZL4#!9V?c{olvAhx2S77yaf_{I?xvzS?_cb;K86*%aQp zbkf%UNPSs#LrcKvo0Fd|TzKJqWBqTo3Ewjr|M1Nw%UxaN;tES{;k@tnZ~6Y4gk`(# z{B@hpiEX*3Y^zUgD>zZQ`iSQ)MeT@u|K{&Xf9DJ&{_+9P=Xi(Qo!4%!{mbIj$37|l zu6;kL7;4tj4yJwa>&ndAJlVEqzkhMz;1752|1)S;+KuQcF(c(iNwZ<>9rG2dH|gG4 z(`lO0rFM*5Lw$=M%@o@?<#UVodTp^9y>Vi>b^7i5&pz2#&(OZ`98X_9&RF;@Yb+)B zM?;o#bK9VY@zJ8S=K2e~Px{R>H#)vP@pIeWBU@HfMAW=_$6^nP3qH%x#(w&xm{E4; zvTNG&-+NjQ)_09&uH`(kcNL8uP^7<(QS>ix_BPAnSj{n@Nj1qEma;8O10RKd^Od-t z<1Rl{v-Fu#FY%M;g5^g1tM}CN5>4-q)VfvgU;3H%=NqYt{DlVdPp;F<6)MD>_bd&} z-U~V2w>bM>LF*bd+=mCMfBEOFIb*ZvxKr1g-}m`nO@F=GV_?(0Av<Z&W`077vv<ne z4_7-^d^mTGk55F<ZPw`B(!q<e=*GY8t(uo>xq9*|w~BQ`ZpSLDlXKU9Y<`MoXKP6t zm}9$P!G|BS-4-s%eSF4EPilNs$~G)+yD6I+!`#66z-nnnDL>|mdBe8VZr^NP?-p6~ zm2ySTyf}9C%DH0>xzz{WfA2+E<k!ZHg|bUej_>td(z|_+@fp|Sd$*@~F1yjezjFP_ z5y;Jy-IoL<X;n#X#iK65ysi7~t<~Mr{c^QLloR>l;o`CK1S;#a>xBf((s4s~MM+iZ zna3kEm}9aq;{_E<qEa8nHZ19`-hb&FKjHC*yk)K-DYb1qUw<05{8xkjrcJLkoai{a z=iDw%Y4cHKfi)}SgOk(opFeu1>dx}&aX5e7ueoaZO}mQ;+Z1IB>8`<2&A}{>?B@k5 zRO}4Zp^Ws$4=#Us@;9eN!=KbX-m>Xva|xer_@l1e>bl>GR{Kjo<#T)T4tTncP~w<1 ztGV`NitnQ+PiOy}9}hFH{f?he`3S(|ZvlB<Xr}WW%u31}7LFpDHh$YrS-!-!^Xkt1 zpVsUN*;{b_++*u)OQ~e8Rq$lqo~2qvYwP@dU)uX#ytMC(B<ak`I#u$}qvd+1mO2K# z-}xqhK16&$IYYnGhYmCEF|W}(55bcb%Al{$Tgtfl%`3o*mcNG0-N*TLpY5mV!l#U7 ziu&PQNr^|VeS9(6;Y-)y=|c7W&!SHFc@6wCDto#<qWfZg`Ih1>!OjP_FI8?HXuA26 zI`e>Pb;g&H138iZ@T|LW=}hINoy+x)HT~t>z@&JvMX>CSLqu(d_F<g%=S!_C$L?39 zh`$dhR(v}gv?pbtEmGaG|LW3%S3i*?wY;exy?-bOVhx^IVVI%o=91van)C+|UuUGF zAt@368EsS9rpqhuS6ZIhxUf*5KK_^&dGB$oSJj%NmTA--9kIHf8RXi{U1qetyKs1O zWrXDo-}JpV9kdS}y<hySedzF$V)gaB)O#(rQ|6uGt~hsJsHpkir};@|E+tj9r&YD@ zsp9Ra)YY?;KYqNQXMUpdBabug3SU%UeQ7IFu|+CBt~xU<B&EQ0&W{PgZS&cF4odfd z=__8J=uo(IcbV|-W;zrVWyXJ0{MdTy{{8z)_2PV%Uf(*Vh^g(^^)T-79mV5*cF&<b zW{HxGB~}Gi=GGSH9<w9w_V}H@Zr}Wq!wR*1L*=U<tS&rf2Zp)6?|zP7UwWqUdyzo* zqAa5Q(|y*@7|(BTFHXWEc46~9%|~wC9G+v|wM?ha-%>W!hrW~_YR$_?Z+ytUxWCrn z1oe4RkyWs;%;WfT2ef6Wv`%hs*M9RGELfCY>X(~3HHF!n{L{31&3lOn?$Vw!pCxs_ ztGV!7*f|MPUlU!q<zr*<rfa`^v}E97y~TY$rweeIW#wF>XltsT*Lsnl(M3m1`EyH7 z7}xGc)N%$ygJ#{+NHY%WoVM!fl$|sl3H8WFy4Sn4rjNWtsQw`vhDz35s%LSE8)Tx@ zPBTxwLViT%(`XFv1c>zTZjz!F$B+Yz*~_Ek22ep%G|-im1A|;ak?i}NZ13qz)ApzH z`z3$30f-l1Q+ofV3&jsN-qJ1614#==m-boV9monBawjG>b_RaK3!2k4MC6fNlvn^% zqu$2V*7S6JNApmAsBts^TmdP@56$o~9HwiiW@|ZpGdDBJh{2TICaD0BX%Tuge?+bN zz?rXS#-_#Yv5A026M!!G8Io0P3Sw7Dw6S8bgsz-`zXgPASmhH;0kwVKN}>Oz^nNdl zM35si`rxn%MX+o8A+R;b=o@83H2`7&5i+dK6YvNjt8064@*m1r*I8M;6BA0?pxdvG z=v|AHV`eoNsm?{1E1@IGy-2n^JUkGy-Y(w2=F)b7aY71SJ1BT$S7zd0!{gFT5-Ws^ zGj|v4U)1)Z<E|Y0i)b)?dHo6&L%}xwh68x30_3{(Gt+DF<H)GG2nH*}CEr$<qJ>xt zd^c1dM_d6QfCK@H`mMrSn2c@7#txGdX%uP$e3f(!L57CjTPSsIB+{KgGQ#F^#H$y( ztCvmGJYj;A{e=waHrCA$3_kij2m^09O$~9hG*MpSQWg?|jE1#*U~O;DhQWmr>K7Wa zy;)!)TC(-zz_r2+2QML<;T|x&`}YbXN2RqMNPz*<I&|3atPDIR3>d>|jiyU!?tP92 zkd7#)v7{jzws0KrXOEUig~@YE!^I3BAR{w>WrhJ8B48M(+nb)1+Y^0#kzow*wJaWd zK^C$o)anrp3|G>GlWirX0|P`;LWpW)On(}Ob+@FgM6_gmX=+3@7}oYHNNXnvWARX= z^=gL$3-qOy{j)eh`v03Gjiw<Oxevp^4>|*g&f!{-ls6;Hv`kROM&MF*f(KN}g-MbZ zK!4i*kfb$7K{Jrgc0(8i;waiX_Su0W111SFG5^li>d+9Lm}F4Xm9rVt0jDdlWJx8o z34Q($*P8}y6DCLOm|%$;@HzNl$I6|p<WSOCxuog^nIQNc!lFjWRy{1EZR7Ex^J`2+ zEub@j@DjKlTKEWtN#ueGJ-J-s=jf`|;i9E}_gd(O6>axoo)Ai&r8OpfyI0pEnjQgY zz<*k8knjWM&4G~4T2+Ky4I)#X!QJ%wW^2ssOkLuBDrFnb)TgvXgiRK|p_^VHEks#Z zp4rqQL;Y-5(hIV`H9ie$b3E&jsbf1+DiSnfE^-J~ag6i=K?^v26egoiKY#t~l&XAt zKZ?nxYoT%X5|LQKd-x7TiAcjw-HAV5`VtgpYUc0Y+W(MWr+ngJ{OwVQ+K&C=1??&6 z<Z!r(-$6`X?nY?#)Uq&a{e<?z!;Nr`AG~sVu`w}hX&=KAp+aCXATmOiuOb4q<;~XT zh(5n-2zXnV3Xqa3$+bgB_EZWoylEVD6s(2FRXS+X@{1QTJnzFQ1ikf=_j@9uqazK7 ztl0+0Hdq?{E{$eLsHr}7&LgtbE(S*mh*%scgdl20fD;>l-^d85C;P({0&N<WNUi#q zl*1^lDud$L&mVNAYId2-=^COagJAIxhmKZ(e;@mI57IEY-%#<rh!F)ymqVv<B@!Me zQ<(O4xI!5O095aqMQO2S2q&7sKcU=0x)jv$9eZZEr_4<1eW?%%c(H^+R1bafpv|92 z_z!}G6ZQrP^hy#Dg`%~m4&#Unimn~)9ZP|dPhlHv>fr;a{i=QhyV#)W2O^y?zRn<o zI|uDVM^WXI2&)}AYY@jjziyO-uiN6OROa^dzybjeCBBF#_`MXNp`3^i&9F+~(j1Kq zu=E9vr{)=pduvI{)-ieWJX)7(mS2xON`$c`zvuwkBRv0{TFGLe$gBW{wbh8-hTL!* z{Ry?%C5ge_6Zqz!=-8+IEWXq98uF;K2lqGCx}+`+CeII&PHadh4?YB#9?Se}xts*0 z*#`WbB)}WhJ4pF}7GwiDQ(D|qd~Iwn!b!NOC#yk-AVFnF3{z(WwNBZMW!K+P8X(=_ zF$m%7e*%aQl%ry)WYtq|kH8%~bC!-a0Wch$^z1!G3X6GYu|slH?=wF@-q1)u<C(s^ zN&lF>spsNP^oNIG?VEx50})z3Bb89^$75ErLXZvnFQMK|39$Asu4^8T&M>1hj8C+# zS`(d5NUoUrXFvlGBeips2vzCG&K-brA{Mn$4R(mO1M-ewZ;gi1hsT8k>f@O28+$Fe z=@rGwM+Ho8l~6d@TaA`6xQ0;w@cfX)BQIyq&R9~QvrdVyF)ze4lfx|bF0`$y3i=`U z>VZ9o)6`@=o+gKh2YpNb=rr&E(29b&93yi>!ogCp(n}VIhetOULcd`k9qsK^^D7cM zB@#b>h!RIgx(Bq0P!Nrg{x9V$^#RxsKDhr-u>PT-Dyov%-jjVb^<bW$<bfQm{%+!a z>rSqr5wNuA7*nEMePjsCujn$G$ksR3LP?)G0^Wwa*R|j!|2`iHM0>z^S0rxYkAy;9 zZu}UECLDGDK<CFkR0IHWte~i+*=cE_^T-IrqdS`bYnPXs!!Ysw5XxLtRBr9dEAg}W zHLZly*<+J;)J+P6H^`_Qw&tmqf2N=9ZmQc}lFCQ<7sEvbw;ddfGv&nAc$S5nfFW84 zNBc2V7l%|$^4-`?W%vV?%sg!GsF%`7L&z%9?cuw5=aohZfu5rlrnay5q}zz5lY<_T zpd93#uSEypy8uwTImqTOLp2%1XcIWwTwyZG1i%Vy1}<_|xZJ(dds0J`r2zYSXOJ9~ zSzZqMo5Vs7MS`e?5)|=t&<cT+xCvvjOvcxSSe`SMbAghg<L`)5CuR7=uP(a<$_O`G zu6ON(@uOwg*GSSWsp7!5aR)qHglb)|cv>fhwG#m^@wYU{7=#$@V-E{AoER``w*Bcf z!a;k>j&R>Ne_SaoCwXE*M??3~m8+$1a9}(Ehwj^6tR3PScQQXnLr);AgXmKv5ms{W z^g>~>s}X{|;W%xW4?=AZ4)iQAr|@;sSPZyHRkDgK9DS7OzhHY@gV8c0bu1Yzh&+x^ z#LJx3(Z4N+Fdy9{kZx6-N&)q&?L~}aOAADAFcJT5{0g35oiL%QwpS{|5e*Go%eC0E z-~ASUxAC1rfaC1>^KI4QxY%@*Zu#6ec=>b&5;kMATZ)>@=!PM|5R_Qle}wKH@DwCZ z6$jA4i?xP{+qjW>1DJ?luOV}4354LdHwQVxNEzbJl25tt(je1b_q!uAN27ySA>ZD0 z-Grk-dTZQW*wHRwRO|rJ-#dohtx2voEa+(70}%&FNgC*%=BOxvxgReaT|jhMg@j3b z74U&TsSe4DpwQLGrE(iX5nS2=D<<9&BKJab66No}c2l2NxW1&Qb-u+DLcL;>#q0)s zL5xXfc)i{2;t}|W+R@t6|1$F-tbQX?=%$bvu~V{_d<22fvo=zWHFy9LAFwj{*@+x2 zvc!CVWdGolH``JGiC6`*lNK8b!8by(MHu<yn1P`CA!AV8)axIhUs1tnfJ{v2Z-_D@ z2O(s5Ehdp#6rkT}Bn{c11ZT^H2a;$$A)Gh@;lQ7w*ixavc03%g=Yu+f!p;eH&r8t} zM#s2wb&}kk&cjaBJ1-wXZD*hhv8GQuTp>2_G3V?|6>;0aNAza`xE+Og6bCoob~a?F zyIH%RC^6Un;<eDfzH9m-%;%}=TNaQOGU!R7Nt`qpx^PE3zy~Wf<jN%qKR>WsU@8v> zoQ+azUi$kv*t0pwluoFRJBb-28+*5w{QMAy0<ccDOz9LSfDFcwj}j%I#~AS-$y6~E zoK89`P{G5oR7WTdDBRi~?EN_K4&TV6v<N5lYz{1(oPbzKc062Vv1P$7?8dQ=YC&Bo ziJrpA2KI%0QQ&PvP@@%4$@U09Cvj7R)qY(T@1n91crLbp4#a_nBy>Og8ZiRF12j1? zmfWQ@I$9y5{ppq-1LdJc0jIyez}&Xfd1-BXa&I-}KyYUG*`O@D4AXcdA4AZFkupyK zla-T;5fu)`c93cpo0_O-_hXhV&KjsdGTQJyCk?y;TaUob>gsS~^G%|(M1)TIkWkzD z?l&E0X*e4)d{asnzDEfe=6-^z1`=_J$E9E#!+j&g8L8nUjKH7Ljy%A^DAD~Ft4$L; z*J<>P<RWK%(o2|uEvp)qRg~<34$s3ROm&&?IVpr?TNQ(fj!$FjpS4^oj6^o&x~@6W z+NBsi!5fBw?+ya(fFVk)vDfDhODAwKO<`t;28fLKyN4^HVFIg(m?sw|@Ng0j`O`7y zX`q7yivp@rbGtFYouXXN{nM!i+XpO%`0<E%%`RM?%;uq$0Qzb$%%pMhFf{(yZ}mIp zYG{FlmS|;xg3h&T0(;fkiVl(q9?PL*!3noZd^kE?=3%<_aQ3f`SWBBQ$jdej@yG1# z9hO0igSf(iI~fQP=3Nm$+f;arQH)pREHx7#BW+GNg&-%!3AC|SDL@ILhH9N}1=%Fr z+MopcMLrTaPSqifewPf<CLoMwQz=j_*Rdy>G{tTVu}r~sHFTI*t08AmL#U3^1bPes zO&P{8cksu`NrIb+DLhjl@KkW+#e619fN~m)3%(?Qo_rP!2#SaPgEN9!t7Q0jGCI;% zorc{I{&2J^^bA+&HJN+Y^288WV&ero&!?Q|z0(<-F}^7E$$R$5oNLE{fzUnJH2u!< z^{2AvIXR)5e4Klrf=u#hyo5sr8zv~aOhstyuIR3Cwo3uG1yR;|zmcF-{Oll3<2|eD zwl|$>aWUg5;=Pb?oJri1{m;^TT8gas9Bpq6osRrStOb%Q;18Z<wEet$m9<q3tqbk4 z><m1@L<Er5h9htMyn}3r>P)GswPgmDJ9@G5A=g0b$HNs-q{9gHPpOE4oz~%$x!H^W z0R>uf>iR*Om6W93urT+rZfXYk+HwuSFP{~5p7ua2dQ5n-%Gx|`Q)Cu(7>}avh!Z#y zNRu+<oUyG^ZMO4-gMeJ^Ff<<^&T5eV<4ZbeY6}l%)bnB|?uaLn{F|%$caAIe#_rli zb%kgsqJ|~C9Xo95K(E^MLzh~zWTZ5jEAdVlLz??7I}+>f6%mbN{>JXbA;Cpvwk*ct zkhlY&j2~dMBcAJvO^ZYc`uvKKYM7xLSNx6<3|DqTTH_HtSPD;Gi_~ir!>xtsALWdv z6LFc6>K_lEooon8k>4NS6b4&9GQo-DK#5*N*KBW%>H`-kZPzDWKKGv!8yWOSSea2` zBpl8$GUK8%;0i4ML{|=ZDW0t=^czIv<(k|AnxL7jzwyUafJ1+_jpHQ7t<n<<r;;Ri zPl>ziKs`)wyX)&+D!JY%n+VMeC<l@C*a0Colkl)`N>9=3jTQcwRLMbxLJN$GM2X5$ z%9MyH`9dnL4SZI5<3P++E` MuO0CxKob}%8OeT=f8tVEGq9H{~exw8z-#`7N_XX z`WBq%(A&)pLIaOKjqR(cQBjLb5}<r2Av|~k$ux!2XNI;neKC(yWyYiP4H102|1v35 zfVv7L6lfpM=O#n@f#L!*TcSgDcJqCm2?)WxO0T4dfpnEFWI_-_cDWO)ck(4yJeE>T z*{0M)THnPgEIq6bN%d@UtSo0^@Lx`bQ#RwT-Vsr>AGDTaUbTs`%QIR31%hNs5Zn8| z_<~SgBL1VDHHc2(#trIv8=!pT)$+ox!K29f&Q3L&O7z$5ip3<RLMGuYbZuy{%2UlY z49iYIp;dosiWa%dSVti;u_?JfP~x3zEL7OLquZiO12Y%KL*!>dBww#$Nhul5M!xZV z;0{T^+~8Qgf&~c+V^?RO164|zfH1b^;^)9-&6G+^_k3f+qSnbeEr22*%K{@Ci6Hgz zXlZ*8ywDOg94Sa+K~0cNBMHY(L=zCkRSyr*l9ZlfN0oesfU{w;G3eH08uH}@Az7i* z+upktnIEcryuqu{dkC!}GB{tXyeKi!&pjbDr{@H*a4djLoGrjYOKnL>!VuaG;9Z3D zzZwEBjL{Hzq@$54zs7_g4h0M=A}p%<8Fn2tCT}#iKpp@&s}ao-Ik1o^JUD2RhIsFW zw3ZiZX!~I<6ALF1*Af8|8<QR+;$;U2?I=pz-e^vrw{U&qr5Mvj*kO>1^%*tYQBLtV z2qo64JU{iXg{N|5D|vsOT*7PDb}cWQiexz0a!~yp7r&xzocHqqNID_TU$!l>R#Smw z^tiaa1nueg)B&--4(OuYwJn#@mjzZKE|f@@ZjjbNXnPAcz*%T#(k0cX%>VyQL9i56 z5%K4rrXcwJ{xAj61CQOKXlrW*5B`@0VnLJO4$SW#Q|EqLXzmed)z>!$r6I0r$t^gL zkotfkLKD;r7`LJ6?j_Fi9^h0nG_-hPUdCeidGOYrt|8hdOM#?3MY|8UZWWVG8(T)# zb8$pla2^tsW^Q3Ho85QdkDgw*MYfK36DgccCHMg#fkRMdbU|+)T3%S$MV5VPG^=9R zB(mB7o5sV&_rig+b_y5_DK^W&PwgQ-d5TC`#U55fj%<!HZ1b>GoCz8mN8s#5@C+ZS zOBI``XYQ~6-QaGQ6$N8cugkq=4=(Ju*o%@Embuf=&xO-NjW<6RS`B9B*`V%68&#B+ zjVNPjvt0pBU%-2ii<Y0JbeX0;90UFDI8}vAVj#45fEgc~ejNfLB$-5zzgZi~V`g6~ zIEk;Dd$Sdu05Rx$OQlJI1|K3(u&$}U1F{-c51eV*5iJ3N(4Pg1EmTc2&}G^*c4T8X ziH?|ew9-4-rHq%E>5rjg2F@)nkNb$-E$CG-ihHuXhcRfQJjddN|J9cJ=qVdVfm(vP zLZPqx4!&uDSIi%qn0TffaFwz`Sc##x66P&(=BpraW)4AIWaCp*Y3nWL&glXcf;6bM zU$H&iTupk3U71XyFOHA!c!Khyy328Q@sMKT0szoEljV4<IN|;5oi2s6i6BzKg_MY! zYtXK-s=B5ZzokG1!%`IygcT4Ym{Nl>3}ywoD?aMOkDV~#YUJn?F|2{edU%>P0~N#G zZP1Y+l|qYDFGVPnSG_ZTWh%$AoRA_*U999#N6{6{_%;=0OiBDL8KgFMk<?sJi%4u~ ziVxq#9lcU-&$19ht|aH0-Y<xPO-;NlOxCe*uE9?>6L1zV4T3!&gWX+aGFRhZ@}I~U zBF%(W=<xrHj7k2#M#gkEGN|yTy4czNULqKikU8z8uW+)H%Zoq^D?@*RSVM9&q`3+T zJ_?>e%j%H#a~No58waqBKfxxQ;fH{?0&E~DQ1Oi~8JA-!c-?^>AEJFE-7zrx>mAL7 zJHMu;2FWxB3N!Hk5Zy#)7F1S1q?3{I4d>ego(J^Pl5z)X`VudaR)Gj-ie7pD)nPbu zk$Llm_R?|P1eLNWkTPid^~jE^NEe!e`8G&{R_yG?riF=0YPjb%W_Q?=VX=R>8rLiu zctlXH1aIJ++o07>=&NS}z9g56&waR6(lSKeDP1zzx?Rz?pRBx$q-<>2KA5EKPd?a{ zzRbrQi;EB?$39%>&F{?oJqF`T11k@$R)%^dwQxJu<N_lG<Kmh-^)}NFXA1l^kmPg2 zB{6V&MEL+3z}b%T(k`<8-1`CrUB;&*acA*??r_$hUIax_Y(0O@akao9l<ju}w|wqv zf3&cZq-drLX}s``5UglAtm4*doC8<e06lrMKUo!B`>n+sU|cz{NakULoSn+CY()sF z6hPS7Cf$fW$ghP?3ZDW=1B$^iod6%ZJ)PkYhmpAf%K3Ku63KUO8z^zFI>iwp35-7t zg*6JvP#Hwi!4!0{cF3(vKhP|=4fgA}?B`kdRTxr~${cf+jPJ*R@u&qh@K~7jV6Z89 zvO2D=PTI63JlPk}JFN7(o5>o4g;<1EzCHY&5Pc(rp561)$A|{K{c8XRX#F91K0LQx zwZO$eK!Rni08xZVI)By@jT&)#fT#KunSP#OmA?>^Hg$vwuxUmj1vRWRQg9U^kR-!z zGMIju+@`?ON(XSoQ2GKhZfS{!PwA6Y@LK&0DKXGCyJ(ZnNGpUJMMLo>wJADsJWEQZ zOGtGRH$lae_|@*Ghkk(|r@;nB!JDMl)|WE@C1A*Q;JP9S+2gBm@<U$b=Kx3}vJ$A% zl2nw&BiRBgIbf+HOzGtqlU|Odt24aH1^HUhq-Z9Wq(<3{A}VK^q32DSu+V)CZlfJX zzGN`oi&zWFcr-4m<4ds<Au;5SJbbiEyv@wQ^1nlB>}mv=t`7&YG=In05+)fy2x`W3 z$%YVjX{w7kz0<Vi$G4}k3t^PTCW{AzKa`89hmM1uK4d|f#{dlB0#5f_%=6a3!ln$$ zQ9&Z?in2HIXZ+R_n8-A}U4eL#Boc+dwE*$o`D9(ISIs-+cD&PYj=-fJei%e-%mS_l zFU8D)QdU4z#za1lOWTnlmH=!|L9il)rNn2+`W9!y1gCWeZFa7<fLao|$<?4SDuWl= z<_g&IjyNny=#+#L0G@WWy1Gjya6yRZMH;b;5aS>EMl>@l1fRnpP0N8~6ADHJ0XCsQ zhuK(^k&z*CL#b^7Mg8mlDnk3J)4jLv4wPQ|FBkU0c6$H$XL036@kY4V2bUzEy20?@ z>wlwVNf8m0MKM44q9U1Xluvi^`g*(<IL02hYH*s>j*Rw>^nOc>iP6!1j;D#PnxHTd zBd;?vJ3_dr5xEgI=6LKI5L@>WXGT8wzXqGU9+jcKiJ%z4P&ula*(mOa;g|l7Q18o> z70H(D(zYTSAGAi?ErJUi&JaZRIqN9S7Ha>KC$~1g`FAJtUBH*u{)<VTEqYE@m(1XO zt0kzGM)j#2*aSqW7_UU7PvKshryyQNdjTLUCBp9zZlU`Z6>u7PpB4+*TwfMR#{&uj zI_wB@-McW%rKo0N&FKm(bhM80Nc&=HO-vlfV4$rT5XIM5nXyCA7T9DRnTCiNTr5EI zfAC_4(R44ZA;otoaL^~?a3f}v@%9&&iPReQ9U6nUU?BM?MNS38zY5i(c7h$bpi6eL z#Cu982ERe3>FM9`_y#bg;-*SYLMInTUE?JjCIgQ#vSTAo_w=lib5i0sDF{E4ASMbq zn;^q10I4@MS@rhFm_`g&=6W%T@JN+v7(G`zjdX-$F2~F;K{KI0gg#^}>rU{t2FQ>E z$k$M~Y(Ud7!ys7&9yZGl$&qMO>0{vHu3`nT;NX(nLY3POUT|34g0Q@&N6E-XO#Fmn z`BBZxStd|%CmhiJb2NB|hmS6q?Wd2xEz^;{BKDaa^3$ssC<#h)VeekNS;dO3yXt%Y zg}?L)IXQI_Kfh4lC4<3V7`ZIlwHJL!*VfXq&hh~=hN*fdx^j<MW~T}WCx1i_7|eZ) zPFQK4e?qZ1G^tR79KO81Uii=+uEr4F8dC!^T<<1t+6j3}nukXTxM)I$p@Rj^={z0H zOxkn~bOxfsnn^QI29oox`VJnjzw6Ud0tO4QCbA03v<L+Dz0;!mzXZvje+t3m$Vs8O zJ6f`_vuNMaZ~tcTY7u#1kyy2R#k_p?xf6dTR!Oc9OA;ZUrlA%ka}cHCPcQNjDG)z| zBLmWAUM9f(*~F^#a6<n92Vv_4NHIDIYqBFyBJKa0SOwCh4pL=#sa!m{xtGVJCZ-p) zATA3<J|2UIP=~c(_p0dJTq(w5zF`}f9vm;g%s@qy0V$$P;J(MyRbdVPAqdb}-SZ4^ zWK}L?!h!lq2E(NRX_Dia2-+wBzXXUI;0bM;8z->_@vP)<ATe$Dg!+4TFJH(HuUjEy zfM}d1Yy<2hVKVKsI8!3wdM8#JnTUMSJkY8fzaCIx_9JYC{>XT&NbK3*9$vq^83|W} zEd)@FtLH}g3LEPx+c{<KrXCCS5-gP@bb)UE9DQ&#;R<YOCR-sjK(Z8}+5L9p;ZFfh zG>v}n7Jhe86_W94!283iKs4pd9?i7gc_RZj$|?b+<BLTP3x+*hrj+BEoe7;AZKF>V z_zTWr=|q4W{q`HYobdR&Rl3>AsExf)F+kJ;<*~E_ReWg~LeR$og}tAC1ynFcPNO#R z8r)pYZ%vD=*SEMG2j$CTsR*WZ#H)7Zui*cA=wV=U!kh8<G+nguK=a2MLemuXg6OI{ z*|H=85SlPGg&2L%P=TF2nkbeLv&ZlB7N%@(?rtd&5t%j~#`I>mGcbb`PxhRU6B#~C zA(C5YS(Sh*pL&_$t?fCM?=w%YrRbvdEOJGV$yZ2ih1$C*w{q9qCJ+&XBgVYf4yY_@ z;cC)~DpjLpC_gk59h9&M!JLWdR{o@^IU1GqE_y%030jD77zqd({0U7OGvzKwN+eNC zT!|Q2B{zW#q#<AjYT>ql2fL!brQ~0nke{D#dJR_*HhEGbP$uxKTDml6-nmfkb2`1} zIGIT&5HhZSd4LnMu{N9gzfD08K8<Ve_(GS-G*WnPExzdx`>{TvQUSHx$>`XJnWg=a zVe|S#`NH?Q1dF#7!d$eLIeYU>Ws=XEo4Qq6t8vg*5AlHgk6=nfJ=rwkid_^aAIpI` zhD23i%wW~NCRQ_i@(A;VDVWWnkZ=X55LPh~@LGW+uxW~CRFdtEEf?>NBl3mbg^?$# z>K*kyp$%r}ls5Qt+!Ts9!3q-Ji-j2{INsQ4T{2p_gLjUcgy)Eyc4XDhQ0%d*=^Mc; z%JxpIs)A7!=RWC;yo)ISB^Qd=kPwbqZ`r0u+#=mj-^3vjija+P@>b_i=qCe+0^SfY zw73rRFwghkjiZ|6M&EQ*rj7ux9@Wj9jY8!ZYzdydu=whEFBqDm?(}z}p^Mv>giJ~v zuE<rP7wH?5VVSg&i*Hs1iOVb-6d#qgq%V$Zk{B%3D}{prK_5iY@LSx;7x3f2@`e)n zxd{}h4RVB?I1?wD?l4NUX}f~GDQ=D-8$TLSQ~rqW1ON|N&Rai2Z$06(u%1L#g8v9( z5lavx^!|oz7dE(uY}M!wMaKXXd`be70hDGTqpzn|W1E{pO>*I51+^cb_fLT4zj$Ij zc(B`r&7Ffx(pXq~2zCQ|(ZpLK#;?Waqxle0F$c(W5J*D|No2Om5Vg09HE5KL<#Ks` zjufIL?iP{a&B63l)>RJdITb<x{Up4*q5360*e={zbfo<K;f_YrA}MEW&AWp~1xeF; z5Hx|yAV_a<NC;OB*q7{dkauAojKD_jNO3AH?LADk_Km}K+kl4;z`~^N9pvX88*OR9 z#o&BU(v;;@0&#y5f;PcJ*su&qr9GG(as#NwGLIkuH7h`s(>tL)CX;^X?N|s>ITtgK z6FMYc`+@ItEO#}ub>sSSy>XoHm{tA5Xu&IscO^C*1t%0dNly*w1b(LY^fY%iDF$-@ zLNjwSJe<c;Q^!3@AMfwT#t(6;;`adk9yKc1DF-fElesqmz$XE%#-WczH_fMbv|4ZJ z#@>@{Z3sTEg>RFj=Ix7yYjb2|2$Za1JL-3mNG=vqZ%7Jj8-g#8>kzU5<#Khqo96@l z`gtE7yQk1r;Gb@zmk<m$gO9II2DWefZ@}hpqr4RPc#mNzMd|Hm-ydPJkRX!AG2v^R zG{}k(*P({l0h1uXtSO{2qI+tkrOHUpjRq)^iMN%+U!{Qt$4z3FS6wAF_BTk>!WSfi z{v{1#*Hw=+UnIcF#S=qJz81mo*AbdG@s<XJ=|>Deehv<7_)vDEFVlf2_Og&$LVCOQ zMdjvIhnI$fL{T8eCW=f$*kU1xaAc^0jARwb4wMxJW`H`_ACcWj{LHz)ys$0@>V0nh zCnk-YaFjWME!E(8plNiJ9t2+C+DYGwlWGWw55KQPLYB@^He8VaY>Yt~ABlhriBZUU zC#er|c}j0~LXQghrp<O(-CkU3n9X`C8AJgd*GQIYvK0+wo&QHenJQ;pSB~MFV~P+Q zwyfwoL=r)A?^#h1;iuf7B}m-fhHD-$;muaSeg88^IE+qt<V6E^g^Uc;p<+)I&dDBS z5X#Fm9*EQ;nea%98Nq<+j{qFlWQ0|;ZaJ6!4T2yBAy@Oc@+mTS9>TxG44N|x^hZM> z9r~^Wj|pCQ<ZLKHi8Ya(D^1*n%IaJYGKeFxL69-R%#np5nbY+h!qPDN;}EcET!g_Z zt@O$ARvUAkcQP1WM&XyPvfICbks;~P%CStG|6<Lz=Y|74moBSMYI*!w{En_^Kq9cx zt2#NCkct>#wQ$*Xy!zm?KvkZ`1Or4_)OOz5QYzG?OlpaoFZxc#m3=n(AWI*vvav(Z zENX}&Sk`svYwDwBN0k=LJ+-wpk+tp=0=_4Q`#=N022GAH<cG{h$9A|?ZM8TN$q>~L zx**&Wq$jDYi$fC7V$PO82R6<kf2UbX8FCcKUc?MUSW9xJ7$(skGFRJ?bqIJx<}GBP zN3hHcy(n~p!+FfRu@5OTaCPkh3D#7%iBW*fJ<UTzxXo<*j(ZPLZ%rF*oIR)^WX(<f zCXvIC4}gi7fEDRgo-Qtn=Tf)`!%+%VKYreEd;pZuf<y6PQVBiqR7z<^Y8ZWe2A0g` z{+DI&@^K%ai9C`o9t&L&vJ^OYG<sO!PHa5F%mJzG8WCO@9WqkG3b#5->98x!z;6kd zr@e#p4Hl_6iFjgRn>xIfHH<pVEW{<&0No0&iy@5wkO?(nus6L=21CLiPB+z3$rRpC zIuldWVG4g7gPkbOAjfFdT?CKOpYEcy^C0q@`-y_g7pM#D&){~1*p?>FJ(+8AC-PZZ zNejvUmjA;sNq&ED*Y*qD$R>{EihQ{biB_m1ezw)Xl>v3=mSYP*pDoL7L|O|VEzq2Z z1OX0Wx8e4W8#LOHky`Y3p-uC7)>*jn&eBm<$59)x8+We%5#lf~#F+?%Ac){<#4rf* z>1OO`;n+u`{g|S#Zr*?n?O7YxxU!{EGh3lLyl(gMR(oWB6JZ^I?D;VT_%OV!db1ZI zf2J0JNWeJ2N*0XvjZF!m=};ND$TLdYOJ^Av@XCc5uy@yvV!6h|;to~WP0t1!na=QN z2gRixQ+)Ghh5onpt<D;FRddbB^1`aJUvBIQa+Wl9U->=u@z;?BoFTIt5$+{+&SnYL zA3N8{$N!Z(xl%C@S$93Mqt<rk`}TJ44ZPX8BJ}J0pLh4H_$q7Q;6|TsPKH>=?`n>! z<bP<{74(Q3u=_%jg|>E4_a-B{=**_;fBPwD$zEy8-B0xzuUnu0x7+^zUb&)m?FFw5 z(=i*xtN6cOUv+@FWchsC#%Bim94<6w1QrSo?Q&Y^XL+3Jbv`BA^fuV)g!>PNzd8O% zNyPVm`RMurk=H?!#Qr5ofqqGE0+RZd@7!&Z;5%}`>My55b1fL<fj-N9b1EcjSsTxv zJG^LM-Y;t2P;uo4F@O8i@VV@Kz}o9}m)EE4ji_JgdGr21_oVMFQ#EBg`Tq8A|6cwm zYs*nj_KUyBAGvLxXShz7>|ne;aa*UDzqn*D$iUEIb42#)-8;4^J@z~gZCVwiC%kJV zYIP8ea?TY89}0Ef;<S*%5P!AU$H<G$FAa2Jp6J#VUHc@^)%Nt}Dpvc(?Y9o~>|gpc z?B0Ku+gv^Lso$hSQ0?o7f4!S|Ys<ug@nVtxfA6}z|3Scb*q84wOwjPn44urfyN@~- zeYkY~T$2-fu8oYf9R2uy;Lklvt}oI2;2k)xr&MO17&1o^W7W5KRnU-3wDl8v+IqdA zHUno5(__bNicXz8e*8pk;hFO4ww_%Vz7EjOf0F6h+Wcb8!(Tg||I<^c7;n8lc*p2s zq}dX#!OEp3Ti>$|v7NWcS?@z{XER&pW7p<y5JV?7vkO}1T-*QP?&`s<ZeO??SbXDL zI)@w4J;;17MD%&kx&?Z|)rrcJ$2=`TJQ(P0es6Bzh9X0E?~(T&^@}%s)Aj-VhM%R< zxarK3-sxbQ_rlLTw(WP<9_ow;<T{?>&u6~>sND3U<Ix}Fu3YIJy{T@A+~D}u4Gw)P zPA*+xcz<S}XXO<0Z!<ei{B}UK^;i9Y3%#x3{Y#w3ylc*+-}~~T+igk9v_E%r{%)hx z)o=T0+X2Cz<1sADy4bGk+Y1(cb@WyF-HQjG3Z6fSAJ<%2)FSMc_nchjvTXHt8#>ii zY0}5`D_U(2czGMbi}d*L`JNb&!1+)h%kpw*OYAP63)?mHZoh^qNm}~;sq)2B`oo99 zKDa&k-H&}$Qza+aTa#ba?2ZfiG0Ub{vg4Eew-_tO8M_|PH)$g;<q2F&mRAo{wok6v zBUtv}N>EqUqTBC$uE&USyd9Lm(xX+rd1rpzI=INAb@{IWr&|u*T9$IN?59E2gWo(q zs=Ut1-mv|pPjTP(^wb{Cl&R*O>bif+^#WdN_^*z67oHy+)J80QY8A4RzLdW|%cs>Y zBkV(`jk?ppx~n0RwU<;D1DsNJlCA9fxa&5RG2XOC?_676-8FxH$04S-BkKI~HIX)k zDe{l_+bj0x?TqEmcx`@FKl+n{@AcT#>U?hN@+bPo2HbsiQHIC2SLUYs<rKYf%(?f^ zwa2rZE*uIfK6rT1@lSN(t>UeDYeH2f-50L-T;!&qV+kf76iJ;q6hGR1A^(i2Va2^q z4EMM1{HkZ$K2Pz(*pw^Wp9<&yw0+Mfdp{Fw`L<KjxN@arO<+XHWM<M{;azjMe4hWn z*4DFczv};}BylAyJ}0f#`GkD1e3YxQe&#v-Oz`TdVE_2CT~~avA4dn84D_Emk>_?> zT;P$WE#LOIFnY3F{<si-VbguFOy$<4nW*HHTA_fbMc@u|()Tbr{oLMjS(Lu)^6q=x z&n+XlmbbkN7&+g*a?E*jMD`06pAf%mEKXf5+WQlyMqqKQv9a^fN<Ze}A0=VMhr-VN zw$@E|+W6I3<LCa$FEnosd2IZaYi=Fp-mU9vN%x*Ai|F&aKG<>nf$2!ct<E<Nrw#wo ztW+M|YBGLaL^(Or-Wa}dN}Sez<Fx2ie9yHRNB(l!(H|3*3iFljw`bx@)oaqwP?clf zdcC0aVpIRNmiu+{#F5*~q^RM2WH^$Qhlj)TXaDOX9i1Kg_AfaP&g+%ZHq6__`TC<8 zvy}Yi>#^veYE~a!q4xJW!;4yiW-NZR>3sH*HK8?TFtVM|je9md^+Z*d_^CjAC+0dg zY0ekL!S0+>p)Ox$Kh8`F*;~$jTyFQc{;S7@rIUqUTzHjVn6v2f=JV&m_ipX*Iq_=T zbNTGwzkggH#$VrwuJZnV<3hm}x8m@WZSheWJ=-!P+0jQNs<&cdTM55vOVGwe{0;EV zXnTP2BL!Q7F*XPZe#ekZnVS=MtgWcDMio^%CGrDz2wWr&;&kZq*v1I{2Wh<DCJn09 zY@qGvoA}-M+W%GqJUf9)06l0mQ-CUYMn{JL*aD}h9akV|3!5x>4|zvCI+!>K?sL^} zxg$dg`xw}+waBmif2aYrM^p|HMvy-Sbsi52RJaOozvqSwBeilnNu_guq?UNgKZ}!I zijxYrgtHfH?u76K19Rrn*ztBOnO8j$KXI@(D&?35?_7Q<hW6R%1SdYEYY4{x4azWa z|F$$7U9zG!<d311;}S+{4BQZMolyAtxWm0&lLrFj&o**I6}BU02nzUW6wsnQ5-1o@ zfc@aIR)Yf(EkuNPHfNF)ryO3Jqdj~!2l<rB$%7DpY&rfvSbNjBD9^k7`x+2NK|llr zaR8SFL{uO`oDfzw62g*51W`c1s4P(#1BMbbqXYq2G>x=`B9b6b%A%2=Xw;isW7U9w z8f(&FF#$E{U@@iEw9ogPH1~b~pEv*K#giBI^JyE!nd>^w-*Oz^qbGgcF)v%#KY%As zs_vkr{+cy-xt;0!9z6&Cu6!(Nv<e~z`0?kP!WXdU`a{a70f45KQY1%DKspiAyU#JJ zO*0ml66fKn=>tJdW76uQ_Lbj!^pqxQo^y_*SXGg#cMp};a2Wy>LS10;bd5b=4XzBC z?rkG2ZD@>eM!sA0u$V1VL3cdqDC*dcmF^Q-S_TWaNIKK~rIQg|&_Cj#yeC~(D7+Nj z5Pcu+Wrsrfna}>9vo@%Ajk4tGr^sNvP9|Sv$}7ox_EGBexQ`xEd8E0aIb_7^aYHDg zuD^q4A$}lxv7baFu&teaKu$kn=)5rsRbo3VLX6@fMf3E06Z9qWOiF}11?v?gIRCcb zSF0Pg!oJEG6>7tPn!d47><Fc)eM$%xYJ@$=wT^`%H%X@vCc$Pss-F3g)Z~$M1vsUI zr0zab<po|@ZEZDBB(wY&dcz09r!efbc@6?mCFx<s^Q56Ii$mr9&;s}3qGH~k&z|5H zLVl~KGToEnU+4~2L|%3)Zn;yKeM;dP?_ZbiX#s%<uoME+Z|Ps+cAxV!JQOQ82|OkF znh6bH`C+ph;Yy0(uNr0&wW*^vFTbEZ_x^6i9fFVGIQZ^i$KD?K+5&6W)qy2fn`xA7 zZ!gg8UB7>8?Xc?TK*v-il(JqCGy?@cpl?!$dott*2<pk~e!gl$L3jAWw36?10{wb1 z&$0@G&z)MDf@*E@m>t<olT3gsdG&z&_ivnUlRD1&K1K49r1vzwli*q48VKf|@P(L~ z=Y+D?0h0k0h}}IDjgpb6SMt_KQ}q2pZaikG$dU^zvwhg$#4~&O%B4zI35x@B90s-m z%%zs1#R9Rv?f}3_eZ6OyJo^D1P*Yfe?VYC0@IqzlnKICIVOj@WTIPQe%jW)^SSC<t zs(AuiQdbX0;2pHcyv)bdXHre9oz$`#g52j668hWn!%M7eu8ssaR-H;sP%f}G8X)4g z`RZeqq2d>}?|19n=h3lb>}bH!?o$QP7Khz<`jeZB8E9L~JmzVH<shpPF@mqW{T~o* zC94m$v;7J>A-Sd`NLF{gW&FqNfI)6KxgYT5C#0NTwD?-R$7VMlxrpB|!VNLiFJ7Q4 zQMo_7bW-_OaHEKW8XYZQvQE*k&L-~UA;33Qshh0;7EOA4>$jS_Y8=XJJUwN5_>@s= z>a_SUcADMXU(ccsQYz6(Zw^CujbT9`w|QfK*5Z$KLY8g0_qH9V+0T9V+xbs2zMrml zNHxz^N=e1CS#Ec-o9$;!L|A=)XLVKJhapBK#i|mHPJy<fr2<8Nd;X3$m(-av0?<so zd-dwQcQ*Z>Y-$smyf8y%9xU`nedUADip?tY$cjsPBiFSo*hc>95i8wnzD3v(ROi20 z9!AcQgTSCI)eTUgIkUtSR4*4ZE0Gec>1gAKLNyQ*@!`aUlPuj|!tSL?EL|7BWpM`= zif(nq=zM5gz-)$-ZVeEGQ5W9dS)WUsneR$+qOgaM`(RrA+y>J*FnA2EGP;K9BHCVF z+Kd|x4S`4MgO*n$K=a{!MGTEjmS@N=ylqs9?FjcXEiFz?ZsJ91(`M4=>&_26J*=8+ z1^ZQXLFWhJ038>}DID%e{c8L`al%S@<0J?<ohG9Mz<<=nBMlp`q>lB~vMV?i;}QY2 zefykxgj$OS$+60kI*3*gJa^{E+%8|gJ^OUy(hcjT;I{K-<_LDuLM!ASz;8zNTRkNy zm+h-HpH>8v9O1rrdZ~u1FEu6B%X<1Mqv3f5&0h)m2eR-9Go%FaigZt;?x&Ix*`yKL z;?>yx$Ynd8wr5g$rb2GAoMTAVHz;z@%FlLB{$)=0cqtayddU_|t*IR|cLAqH*NZPo zRr2kbS=q6@YnEpPSP)83a9ep7+5GJiJQxwq#Z8s68a$3OXRp6tizv`6rxRRN-T1!c zUE@N(5Htff;Ebvbn?xe{W=Ek9hshIw1SFy3Ky_&`n8IXdMoeh&@kZSe&9qJeQX4U| z5pT_0Y%3SuW|vcXErwYL8fLkCnqY-@5u9zsEP?6$WVxN0Ma8I1n2Be&UUQoAe3=*p zvi=}|oz-ejBp^_|lrg-$+H?`cCca-ZAR;KzJfy}@R&@#mK}-ZFeqI1rq^f3B(&`|k zn{v^RN~sh^3eGgge2`JXiIkILxL;i_K_g{?irNwp9f}jgP|+gEAS*<O_^O*C3P9|k zKO9a|rL~lN)@d#{XcF$-9>#r~pS=@%ePt77#0e&}RTp@sFi~ZuE_R>H+L)OMP?Kx} zV(Nh|cKfUx3NNSQeZ=8+j#bYo$*@d7W=LT=&%Ea{n*zmcRm)W&A+AUBUxclRWNJ1y z7%&INJ@M|0eo_@#vxfW(^om<ZX1R@5F}g9l{f?voC}>U;90s|6u~K%4<(QW3$uOS3 zK`Nax_L6t`clZ8zBboK@FI$fw5!e?(nge_sWJ9<<g)*WWvqI_lqhUd-`N1QNi?0;j zPA>jWY+2(Lx1`ldvQ!Ec%<MZRGVLqJ_GbT`VV1z4HT}GNbs{Z@(OeCP`F$=}Htm@i zFJ7$-lZ;Z$<W=XtJ<}8=d}g<VW`SI*{S{UE0bu7;o~0S(C!x99n~6HoqD`YstqNQu zr8baCaK7{gdmf&Y&L^4Pwsxjcm}L8UXS6bvQ1r29a`Ge?>oXl3_@qGpeT{y5X=+M( zCQERJylO#n-7`f;VpIb4mX5D|uMRJO>|OKk-^C|yo88pjlrwX-e_q(^b43x`aZ7Hd zkUp%=@U}Z{W?HIp%AOy1WmDmyA4mcc^#)!Oo@TdVw?!4&Mg=4$vq~MU4<Ec_)qHC9 zKwXIJV*}}#W7EJtF=i@}U=IiznxmNoCI-!OiM_3n5u3WxE(uO$s2HpJ`Yq|KnO1Qq z#|&j;h+}B&C|l09N#mBkZHlbRS^K`1Q7QmaQgOifv28xd80)1%hWDx3M5P{K3OQ^$ z_?t?S0mp54lSNp_hx=tVQ{S^{PQSQ043=gVT0)*l7pok#xq5$lB-#t&F3j;hbdO(P z^MfZ+o4O#O-(8A8ftl6$lsUhz-_*xe3tlXWA9}q;QYfZgdwHER_H?#s7fJU@R$hxC ztOUi6XG-skzID~hmPgKFIo-|Mg!&5{Q&(3<*v!;fbvVGyvCqC#g!<xK)a~^98}9`s zep1TffyYjzgA5I^<>A{!QJz<!!H3%Tt2JF1Kd(m<s`vy`(i6c0NT)nl)KQl+vvE1P z%QBF!!oISp5Q$!ct7RGDzP`FHHkI4XZn~WQ?dJ_*7Csj>zKL~l(m*{)dXJX1Lvd<G zNg$*>;g+B5ZzoMpr+3X6<O5glmEbXoI>;%cxHc!$kLV={t%8b_tZtI`MtdvD;G@d3 zORkCowHp!G9Nl8yTfZXZ1iP9KtmY7JpyHTAJHH8I=y+P1n>#9Ii=b8JB_%kAxg#J4 z-%h)ZN}!;tvo_1{sJd~P3tWayqBCl0$Gt-X{3lF*yD~-76NZKW;S=f|UwJQzvb`>< zug11+bC9*CORFJ+!I0QKNd5z#Y%-@oQy2=zDGBW#%q&A&i#p_F9l$gDyiu|Au&fD~ zYGbZM-G5kYS%1g)8MOkRP!u>SnYB#mo~nliU7SC<qr1r}uYV{7Hp3}dtMR-EnJ9&N z4j-{9{(g_%{oVCW)3WCWx&8iycRtFmA0o>@h`l`_-B%xzuT_WXc(Ck@g!tmWd9bL^ ztN|M$xe?dyg<YEnRM{Q@28vyy<Y*>08h}~Po+=_=bVK<=si~7*tQyS8SW!3NFBELY zG9Es1_JkgPthZ`WO{k>bBk&65k0P4CdbTWL0V2kN&PrWK2iOSb63nsKZGSD=v90_~ zgO%Y0UJCH|b&-wZ2x}3raTAlEGcl3i<kyRC%_F^(4=xY2K2b}*^kXHQL5<7EwyQy! zeaWRBe$~mG%F4D@&#AS9$JH<4w?THq#^EBdv_$usQgUVy1EcBjlviX(2zww(KjYyF zs5l2-J}`cnBF2FQqRuJwU@|k*imQ*nQ$K}GLT+)~26+$G`F&P*|AA5u(FR5?G=!F6 zIaV{PVQ}aaAmSI`v`ursFIZsss%*!l8zq`Q6mMHf?tZ;vYY;h%!R8_ZV%bS{J}k%T zhVguyv;xAh*4COER#gmX?A)y<7h}X4g_A-ToG6(|ZIwB-c=0Z5wi2j`i%}uV!>p`k ze$+;iY}LkVJHRm_$!Q)5IC4?_Ia>Yc`UZvtLCTT~R7L{j4jBwl=Zd*?g3REaaPums zXCtctZdv3o8DDc~L~j$3!RVDiJAi2qNG|@CeuzsD9ZH0SMX(-$f`b|@&kwGWp-KKj z7h2Y~*2uKT&cv2T5CO*IixS}=DHBh4`44_nk<d{yyYXD(mXhyx>~_As2RZ1KO_Ija zx;8&t$Ut;E4_buzdlu3w#BDHInKV#KR)YBcA`v+dWFQV9R3Pm~_Wz+Y#Z+xBcEzZ$ zzY$7-Wjx<r`hJoWX>{w>aQq6za0?9~?Jqww>7$mh6@w&8p0v<q1vQ~7!*ob1#p?BS z$ysh#gn^I6D$%3_$9a^TzuGK%S*H*Me#s0>L5?*dMw{I__71RwaW%&C43Zu&pCAoE zr_J<nB;+F{eOiq)rB@)w+sFd?&+4@qV}Fy?%tD*|8p%%Y9xEzJnG0_haI2%Z&FiHy zM+<8Www;AkM5Hdkm01qV`1qlrR;j|KIB6I{1}!V{EWQZU7f+4nEm6xV4UYvAqq%Lx zoS$`B91w4X6DJ2|Wl>vOE5d){CLs8%zamukch7FW+U(S(hS;u*I&KVE74zEL(Lgt% zXjhp@l^}5#1W}tIJ=33<BBD-(9|#h08;D!k#?lMh$^S(=LNDtZAc7OG<b@PE2LmfV zEU(ny^w@7d&&B!b_vmNi!*V3eLdkY%V>rnL=Prx&P5L*>nO*!ZGDFL??Fz0pva&Lm zAYg3iQLZZ$WCk_XB9=hto_I_NW$5edRZDA4^-@MTchdKn<p34eND?SUx00i=JxZg2 z+6WRT>$=m#J%xK3EfQlBnW?@yb@oc}yki=<wI$=PB4RT-2Aq%IDt}^=&U3sJphbx2 zK)*sE$MSiZgJr9pLb0@-GbpVLOBY*LA2a@X6Kp0{9vurpk!ELg<U-@{wcU()cx&-V z-aM+A>Ym!@fYJ7_h&}N|ogIBV``+$`s9>9**Jh9f!oy&nHE~fG0xz?yeW59wP#cS^ z0QCaGp2T*yllJMP&XG&B&a4UsHBPfs9<)1vW8e=!=CkNTnK&V912<Z%O6KNYy=UPE zc34ywHs2L;Mp;FFX=1Hx_c@|?2I<H`5fdK^#ljxfSv{-6Q}7rGN+JD>%vxBecM2NA z;|HquSCHOXblfa}{5rwcl%d#rWN@l}RhGXcEaVb;O0dSu#g8Y1C7E`5&91Qyi#nLI zL7g<K8u`iKdk&0unX6rilx;lP>6tPH&$pIbDS?3z$2E~8sfn7lgC*f0?QOj|;&|{e zE^!KdCoCG*^~yYA+p@q7-x>!Qju%hVaoJyt+S)j&`x~-Mmz|x<U-om@AEZ}c@Ez?7 zT2s2+&?c!hDvK<n<8WM`WTXS>h>CjU;Pefu;@<_6nH>PG^Rb!wnGZj~z(B3rypmXa z@<UYEFU7R~!(yCRv>{bmY4f&2SAG}nu*3@|=G(T}kDe0a!+{nN(looiZ(Uq{jwuvI zN7@OhJNsHJFDG+qJA3o;WRW$f)LIZQ(Rqtf28G<U9XsB1a(|=5>4H4Ji+yYHsn5+H zOJ==;qnf_Fbz!C_l&W6e&;VB3Tq>j(?XnU&r<OaL+~)Pyg>!VmX5dI#K{M8J2a@v@ zFKZK53M5pzqH8*Wu1+YrYBZzT1Z&en1W2>G1=6#9&d&kT0|Witan-<_dYJ%_Zv+yQ zXOZ$!1h-~4Z_8Re+L~A!z4=oSE7<&)#z_5))D?yM>cHZXrtB+T%f74}dpD;2@xJ}f zekM}Ku2Gjvt)+Z)pvTJi#$}Fx(70?Gns`7umb*m`5{7`R4h@kIj9c3#g;dac$^O}g zP$_|<)`d903>Vm}f-$5T1a$PCF!5KLsgdmonuDk-kA;R+R#r$MIupD(^yiq9byy{9 z`X-*~-+a6<sgI(?6xNk!zVP7)=OZt2S~?}W;en$jD2Q$C)W#H$0ckjiaG<jZ?#o(x zv_pu3gJPCpNd(`)<2yK!>9fCQTCOWnd>A>M4^q;+h2|cGQD{ZF?9J8Hg%bJ9d9?gg z{sb-)cQLsa{H`ntDSlf!uboHf*D=e{EN~~+bqFd`P1Y;9DPtPZ^D-MG7fMUUXvV(d zblxd?M^`5Df6_UuZl!0GHxU<M)z>*jX4|yf5)}N}bQ&q)#L0SqT7yJo{Z`|}z5ao& zDe2zuXg{S~r|Tsm&!a46c~}m>Rr~-zTXLvGeZ%nfsELZc`>E;lDWlFr*vl&nX`N8U zHEt=}NgYS|tQmBZ1RAE4T!V5ER2GWB`6*+}Ud`&(8423za#J;piHqYHpobC>s-85~ zntH++Gz=eu$Osj)Vu6O)>uaVqGrCb|joV#@3T0yQQjG;xPl2gH5S0`(V``+zd3$J1 zj*v2Q=!^8qkx5C@7u5Gj%5>|rwDTNOpR+8nTlsjegy6^9OX1#skQ95H=3=-NYA6Q# z)W_v?(qkQY2diEVhX()3)Axp0fc*G5lX<J;^Y?cUD(HHM?!*HRLs>{uE&l!b@p8w4 zapkdKPgk%%+<ORPIv!*q3=_9C3bg*wzE7ZmmAWlnpZ$TYP=iFABHdnl;h28q+CykY zb6e0eH#ZA#x-j;-6<>pQHnW6av8^xXhYL{=N0pFlG2^bQMNe3rHKT7WC1;ZrcH8fW zsQa2AX0`=HM~BU<UOscyp=+Wp5o({3dpplGMa&@x+hj&*N<Xmsfm_KQH_qM85CN8@ z=dT9`rmSIYi^q|0R-EaXp=LD$6X|B^30V(}6)%Oe*V2Yu&@^8T36<=g&x;6iV<sI^ zwxrH8yvYiMAc++P;CZoFggBZOnMl+1^D5VtJI?8U=q&=_ae{I^3S_^OiYfZE-iY`> z?`(D^zjN%@^2)yUD@1;hSBgAqIQ=@hjd3QY%T5cct<xu%P{Hy1+y0q!{HgxG)zkik zt#;vdwPi<`-u?UcC*QM!THG(TBUl;Iz2Lm4C8Mwqg(t5k=RY)=NzAo5y_$(s)BUZk z4yDNKRG-=kgwY-JtXB@ZU1dtFk3T*=X^V3*6+{!=6!g1C69|`-sn5Che^Nyv6SHU) z_XWZB^lt0BhFynZI}S4VijIno-sXa0jvpM1g36<m0Q8Q73;e<xwjt-GUee8+hg<$O zm)B`Af>F@+LazovVuGg{X`_Aiqe;nm-7y=#9{Ovx1%Qxb6R76EvWWtyPi>y<njkfZ zf}w_D;TJ<REHd|M1%_zp+<zZGY`%6jZK@5i#jtHCp{(4eHvV^nm}lT}F)uDoS(*4r z!G&)^TyR}IMO4L>1LwF!T}_CsGR|Y3Bqqnm9Lb3JFPfE1Di98&gVN%7KWTLE0fXEo zk<q*JTw{3nty>`lhNaDMeRu@;bjYj4r+5Wk#Mk^$vR-ws#3VX}JfVzZ+Z!G{P~j0m zMZTa_`oywSez^t>mKUGcL#2oxxd-Zf>zm5?%VizGQ9JR`?tzTwe1)0#$g<n9qrKI+ z;U}as=c0}W-274R9~6jeCBF1q=EuUxV0`#bk5w!QiBAPZuswpZ+QUudwy5?%AzKNh zXNIQ_z&>wr@=PA{!JQ1h$gWVoBHfE9tr~$EVJDdm?K*KN*8PUv^biM!6-6XRJEsY; zQt{PCMvp%)YBlq#82n_xdUB6{u6$w`qT}=sh=Tr4EX<v%@mpC~aWtdn=aRY@?Cr_W z;Xy(!j=}*Q3g7mm$KAg%ANux%bCLPsmbEh1s=$`>6ro~aqZs!5j$4%I0VQO-s>Sh8 zs#QWoDki{Uv|Y>cAvFafq7$yY$W0_W6<__k-4=dFHj2h%u6yc62^@ywHv}t@c6jbD zhG=~(8|(QQuHp_X!sO=F*jm)ONxFGtUR&j>AgsINA7*?fqTgw(pP>Eomdd6w@3ET& zagE|If;siR<2Wsn`YUG)x|g~)E-Npu>Cl?BJvA22=d$h0_OloD+s@0n*~0UK74$AZ zMmL6X3{ta?_ROe0pbQHjAAJkg2@*`<e+{i{zj}1kNMF9P=y0H*+~BtW44*ehTwV58 zW80pynR>G%6@Mxp=B1iY425ts_u3oBFE_N40y{yqoo*`N=R<!!?7cZ3)`otsX3A?b z5^W;00;FZ3oo~-!&T^JyH!lvf-mxI-sa1=y)JSJ$M|j+Lk;@<JEXG)k*P03vCR_EE zg3K%&LQD*M(uYBazcxL>R8LOOml1?;w$P4bW^xOWviSN3rc&0*S?`Z&q$&U2Qi2Q{ zl_}72j!rTbY=Vi&NMx1aMOmUXYxR}sViH{kd)%953ax5bj<CLo)Te#+Vr?VISF#1p zkQ*l_wcq`kg%^ofa|%KIpD!tKea%25RCF+h@}xo+5vnevYSmVTOb<LFBX7Ka;1+3I z;=02wUU+C^NqzPah52-YBd4vBuOOm5juKmxY(5ZAOf3D3mz5@aH1i{Kp<T=#A$W3R z(#w`+d$0r72b>MYK6k%;Nw;&u26UAaT{v6q#fxF@ZMLezadeUsl^zuGoQ4iZq;ZIF zBZe|Mbm$WXzm<I&TPJnO43SM1QX?m;%r|G$-XE@js<@=Y^gwF01K-tTRO1?k5$w+? zFw)XnN>jB7t&)x5em3a5m^8C|JZ5>C(J^ZG0!zhzqFQk_0lA=O6LhR3CWZ0OZBP=X zK%G#2+>Bqp%zpsqvBo0UvL741h1Hyf+i6#SxB#h6m(}{k*ju(XhKCl|2w$ac8HQ`f z?qQ2SbKJf9VPznA1Enh`T~v&Yb0|ijJDE6k*38Vx;U*%fNA|AqsSCL%-&J?--rEtF z(AFMbW&?306B{=WLJ{y|FA;*|y);|pD#Hf!pKX|qUr78pJWi-EVg{5r+9TWX7Wvu~ zkGizT`i8DrcJi8!l^&ktcq8Y3TJBOuOazXa^fIrI>7J_j8=C^;W^%$b(=V;)rUL|l zP|6B>ar>#)!z|{6FO0|RgwTHF;|tj%%R;kHrIWn=(ajGq@GKMIJ|Y(AiSW}7AcV~_ z@(Z?3Pxs^~1hPY|sqyujlnk0$r?pkSHi|IVs&{T9xgXuc1FZlkdm*H#$W+1!c#IE1 z+N(eIu4p!W!K_vS`(S^4YOJ%10CS4KT-<;k*!lUW<rP}}1BX=eUv_MI@|Me}4x7bj zAZE>;bCKbCi9PG8Y~-?kOYdo?a-Ln|@pmgee=R!N(^c=(LXrr(s4T?dvrDAhvNp}2 z;h*lD8uoMj!!CtOSt%AYV2+v>V=^%)-u`MaUPM|`E39_3TTHy}ZHx<?&qH35kE?)( zClWnF-M}~tQagpUQzW7n2GNn6=ltX%dVLc>m*zAT^NLxWZJio|tr$9B#FIUftWKRX zj{g;u+fRnVYI3p!K%o+9j?a`y3<YGhx|T7@)SiYo=4*ZzlQ#23G#Q&1g~qm>=(1Ky z2A|I5%40~}NM!_M@d?Mf@uFO#{@%)p3}c+7BI*|=s*)QaEln)fiv$<OPOMb+5^Dh< zj79dT1~KeSSW`p8j@wzJ{eF&edglr&iwHv#slX=0*2`A^|Cj>d9nQ~NTezlAZ6@3K zd=t*AG66j09OM-S^b6jouPxLnB4oLUH2ZFD!)?!RiP;2#ql%Sc<)9>gE`x+I>^wV$ zL*G6>3kSRa#%vL96SH+n${WiYhQ@}p+EFj3HBNdCMW7CP<UQolJ{DsO0Eku=hNgO{ zaWCg((Mk+3)#^l&Q#mG5fzC7px~J@~sID%zM{7<4HkL`ud-NfZ)><YVlHnHFR77Gn zI-?ATjqu%svsfyanp!3;NJ3>K>`haDyucQQM2;@T<gfH(yC(*g@bMkaetZ%C`Afjz z5WMIun(AI|H#`2JvMh8C6J1{1Og1!Urtqm&zWhm{kTV<>xT?yrpX~h@v_>}^lTH}S zTTLo@ba3=`UIyJcgk*+gVU~0=UZG4)97>&-^a3L{xfjJlO=~8Ox>lptNeuH;dU|?u ztbtO|pLpiWUXnzfjx~%fY}~P}2UL!6W^ig`X)`gDN(RLV6;h5o`<dC~UYF!g?IMU_ zC}N<vd}j4@Yf~8|G0@aee!n)znJoV_G<82?f?dT>;Tte>X<W^h(|`=`J}oKTrv^EB z${8|oe~`T+=%W9@1ULMQ3Fi9;susawpoSc_3E`6(<b93`y!PhO+{d4b=KoW>+n?I` zMQ1m)%1wVI4-PColF0%(L)R#S*1=shhR`4(_lT4_#x{HxGe+Go8oowh!!dmW3-wrS ze!ltD5f=*o!>uAqIuz(rN?djQCk-1o!o!el@8yyiLbzlVA$U7}>qI|Xm)EVz+*L4M z?!o{tlh98cqSM+yp9fOxRFX@%G;hP{{=A`qq}KTxi(@q!g{@pfVbNOCtoqoSg;j<W zSRcLa9v?3%A;Da}|E}Z`YxlbkD^e2sLTrlXM{NLjpt?H}Q6j3et9Ld<)n_O91@(5c zW~7rf0|*slL{om(L*@0TXmn%S4!JEJx)r`fNab?>Zr6HvUI1XCx0cqqztNQyA(Z!s z%@~2OI(p_qG;Zf$+iC~PY^uTBE5LhxSTQ%UfYzF`E;z_KwM!{@$1N?ic+6x3f+Bu6 z9l+Dk!8WxvrCxjHoH0Xi-&dPqi%@!=ITvXjZ|&cj?hdVmqrS17hr9I0&jo>|At*2f zHqP2(Uf$b7*=LJ!xTv8*4GV1+b(qi7Xar#nyHK}^T^%-M;I&&+r_RK`QD=J0lWi&# zr~h#yUY@t4%z9DwVwf6UK03c)6ORu)0|Y*+nI#AH<_87ofDDKWxK>ytFh)*^Ys>QM z!8C*}Az8_alQi#dPGSOuuF@*4?o%hCpyMcjlFBiI0hDIimZ7PQOw$J8H0jAPhT*qV z$98dHks?MuqGTCY%K_cE@{z$Km*hLfcOcy~99vQ*CG^&WS^(#$9~ee#Lgh<4x@?8j z>=K61H3*r=%oB?)EhAPk!NjQXXHSP~A||HH5De5hl$%Qd4y?H9Tv=q69;J60eAY;! z-xb4{sEV-Gy2a{~nz*<fg5}|PF0qi3jPD>Mh$XhX9mi-0PP#CBm|sR9D?_bEg=+zw z+_H9!O{sgLR-2wF4unBo{r?H9PvsO|KDX!z*-U)pWvmMyj4{wzD;b)2dMJ<KR1?!U zW?t+%qk^LXlb%T{SHhFz`VU|X&cO*cS7i32Q?gqds!6zHZp+*Og^aha#V`l!IF*oT zsZ*`2EyMxB1QU#RVj|}2QtO>RY#*_;akZK6I!k@#ob25gznCvu-$RSy12x68Tp>5K z4RY@nc%|hO(u_-yY!JL>p61k{P8j6*FTKim98R(TS+f{%Gz(MflF4uk>5|DV@vvm< zbF73ISfz56)D~;Y4+ju$dwn-n3(yL4x^AV6XL>6X{uO4@YMp!d2Dp{U^5r6o986Yk z)dwb)c9OSrW?>6+Yt`4{YW{|DacJ0`NbS{OdC2_ua4rBUF94@Rln*Oa*Y^3Zv{j^x zqAb(7Yj`HQ$I*C3!ss-0m;)Nt*0T)T4Tlp(cLC#!l}=B$^pha0#}7Mu+@tlpTzn6X z(iKU+(yt@WXh5w$Y4z;A5%@f!1%Wd3OjOghmi-s3OW=94x)LX(hz4TQs8QIs#>aKm zF+N)67jt_%gx5PUtv&}H8C)@HbvLnAWM0~J_=}(WMAZezdH<6Y9U1A3C2DNKk+3Oy zo?A$lFb7*@wFR7$G|(t(F#zK39xl26))IBfgO%sjB_;82#y*oS`3s^>AD^5>ZFSiO z*P)KOJkRJXfwBdc=mOdQ36!|z#RFMWoZxx#FL4zTgS^>IFedHgAcfaDEbZ^A&q4Z< zKQP3*Oh0;k+j7ON_EV>0)nTcF-K{A6%tBdNFx6q^RthCxS&7H|HxU!*J(}EiJd3&9 zQwA?5Bl58sPIr~n<%L_#^OYu{jzJGQSxd!<-?(jEef0^0FGhXdpY--Qo{!3x^gEXL zQ5Gxx^TEaZ;x77Zs?J?xApRR&cF|jwlJv4=|H~2pzx1znf{eJzSukQJ+Mw*M9!dU{ zf+iyvJ=}o2QrF*xA(I_zv-ovMvTywthcLe5&0*+#n0Z84g;%|D04dl!DC(4MHRv6Y zNKOD;R@kKYMMkFft!rE%DnguA!`Jp)xQsh<wtrjA%;~|ew2ur@JI0*FJo(++g3I{4 z?%rXL7~7*-d@Fo7ZVzAxz7RI^e3zqM`fCvzFBlr)6lpGnbit(aY;^bfZi41#ye4NM z4e2h1tu}`=OA}rhOso8rkB(I&==TopMyn&9Ax`<+#|vSYhvmp+LA2?1$En#fDUq_Y zdtDr9sIp5w(?QHpRpb{AiFmdGGUGR!Wib;Iy2V5W_ZdEB*(3HJ+uf!|5W+=YX~W!B zeYNRpQ=~^v_M3RTP%<7feX9RZM9AXVzuLX$kAYvh<eNoKx%R@o&)Vu5_P_Pd9h-9R zRe!s}{LJ-_-+C!>X6BKJT?;-inYzel`R_gS^_`!O_t($ZIQ3Mgso(pvx+8sG_`~&x z(`Q%djT_rOuJM>K3v71T_@nXGA3sb!b2<6U@3-x-k4g&-PF>~s{NERTx@+2B3(uXJ zH8VSC?73N*M{^C)Cg-XG-2&XEK9}eJl2cV?i?u<{ow1`I9V_2x`>Wq<b-20pxta6r zKKRI@r`I6#<1gLsPyAu#{BL7_vvP8ytWA3_bneT)DZBjA>z4Pozj<%Px4IuFVehKO zGeyJS+?&>}Sl;n$RmZ*M?F#vYJwJ2|cseg133}<>$h7GX7j_)UU1mBZ?zJ}+xt}C_ zw!G-X{KX$SCLOr;U!U%Yy}3z0_4U9V>+7-)p8oBD-pGeean5T3PlVl!dpY-*o?^|| z60ppZ76xr8nLduQ3a@OPIW}PWarD{EpDK=f4ZLu}p!?VF_&>P#yK{g4w_N*I^Kln5 zZPCB)y*)elvhrQMs2|q^uL=sga&OTLeVO`KpSW4)1}>Ua5U_ed;+sA1to&f)i-7R( z<|o;oo(Z`Y`6u6mV1wgL)$w0!sGAZst4ij$vhe-Ebmeo?_WNb2Hl!{#)>HfGnNNGA z)adtKroO9AYyPqGcg@=JS8rszxB2{EU%K(PbKie%S9fCDIaAxz#@9xAuBd02%rcUd zni=Ysm`yW~OpQ#;W-A<?_g&*)S!eL)sh6Lx@AK+$pZ@UqE3OZlH>S;eYqjN^DNZIc zZ6yQiIfjnLrZ4;|?t^)UKU(1RQU9Zut}EAjZ{50myTA8O?aiK3w3dFovegFjEL-FC zXDHS3saBFnh3sYNwJEJK>zP@v^{juc@NLb(Y4PQYzE)VYy;PO@L-B9^xPE1B|KHs6 z=f4b_E|u_yBP<@Cnw>IhHSRaY_tE9~JIk-#78M#*_a;@fPIw)DS=-n*xX<d(woQGC zrjBTjGkb1Wy>++3J+-#kZ_x6ON%Gzd7x|da2X`}_n<u^u(%$&0Pr0o`-Fo-A^;stZ zhbu;3@^yNA(pY=x&REe$_Zv6<dE>4ne}2AYdbXuevSZ>IrxM5KA4on~k9=|-`Mf&1 z&sg&lZsv1K?Toq)6@8d^;;yzkvcr>Pon0X>e78gUU2tLp8B3oBR~l^n;L0DvUis|) z#!%z27_0j+#bb7_e{a|O=;HBDAKOVAj(*iM;_6hq@l;t&(qL3g^JHl8(})vKLz^ZJ zuhC?h`RRT1qC$FP@W$`M*Eee~Z5WGoZolAs^`i4tuZ3;tJ{=#7L_8Pkc%--7c>g1B z<3FZ_?6{#A>n{8L(#F9e>#?Ys-;5~rmgJ6v&TltAt?`nKKTq4aqq{8e(wzI{CErKe zZ@-he_;l;kI|+RUuI#qc?=fz1O#PwU^{=Md?@Zml+1NKH{KLwgN6$MIs#9#`{&#+D z@AwGw*TlXL$Lu~Fw5>dmQe^Sj$mr<EiP1l3%PObcJ=1XVx1QUpU))mt?)IvQ%YpY_ z3i<N6E$S<ylEG`QRwtGz|5VV@SLjhaaqFwWM(e>MtIxil>unmaDmK!q{Ph!K8)Hfa zk2Q6?yKBdehL%4^ZeP0N_c2z9M_=#JEO}lbO~^*PiN)&4l;7EV_|8u`S27QuGLvkL z&2bJrs+xH&e&g>fzm4|y`cvn{SFc$NTzs|j^8;@$d#=Q?wfgl%C*qV|m5T<wPM-Mj zWZ>iDiyj|;dE$70=AU+1M@C+d90Lxtj;5Qg;wuRlxwLA;C*aYgoY70GzREQF__6n4 zy-uSF1NYwt*Eo?MWc4Rom#WFl#gh^5|5)_FSC6B9Cu@Bqg?y?1@tqXg9JN{8V_*LX z`~A-Z@T=7)YefG_v#n&5I5U4P-R0Ka9}iEPIQ;U&;e<)wt&a%Gdg`+9$^@ePX<vM$ zdHk-A+0oRZ-upfujQ+In?%tZO{^9GWIlnCD2vJ22y=&f2oExxc<evfWX9RrqZfMhw z@5x6q4}Yxn(LbVj!A3Ewx=*j=k(cxjvxVCC<d6Pk@x9$)9+UQ82TZ;B{2RM-jTH;l zFYy!q^XNsZ%1M5UfX^~QkEUi;9vyw0?-^ujJhdupX21N%gin@cpYh10S2dT62kr7( zCj-`ek&yC2-s;gEv;Vk$c}QZvapzt+-@u)p%&rj1^=lV{uXb--GTXGM*YTC+bvw$M z4t_Swd$2Qgc;}wsohvkYmUEWQ4v@w9$Hl2nwZ6G~j*0230Zm^dFbMtN!>jHEvuuyC zbLq%|x9v_tPjP^#lg48x9pP=OdxLPl)YJ;{$VnZ3jgFd}oK~gG+{ALaEt6Xd)Can_ z&Kw=kwX#y3&`Uk&<sDM)7%2dZ$ZjrBY!4%>jen!mP~o9U;?gepo-4kTak|@GMv{<+ zTAlhk)>Xf7`poQM2r*#mTJFEK_Ez}%Y}5y>;nfacv0x4eHVm2!yZ5z|o^qLGLXT(o z>9bK-gMN0}lUYr5N?c>>w2D!wDmui)s#{F+2LaK5f#ti-&jUP^!|-=8v{Zr;2vlVU zM9h%))Dq>4D$g*}^5b%1$emmMrf5KCw7ecg(?pf0o{6n91#nFz>mr}S9mw{!-~8dl z@J5G1hecBt_4VO%I^6b@<fFeK_*bDqT328#XROz1&eHyZ$dOJ1V<2Sn$K^S#M!jpx z?T#L5DHWmb8Df~NOW=Is>6syEdevi{HCCi%+!{VV5|Jjn*tebIcD$)Ct99>NmueqM zJ3<A==A%0~O#};_N(x_<I#91p2Y`*uZ0HHH%g9Y+BOHnSL<S;i)V>2<8!&;%OULt> zZc?_HI*?hvI*5f@2!loxpU7ztBQfPH^YTm$J2)SusBtob>uBO?VQwl8-QW2_y;G1z z7_zo*JB#L4b)HU&Su#t_pkT|mwlzVd+#}2u9f0b>F3Q>S2qsF8hRx`&Ga3Tq!ZKt5 zxJ3GjhQ=-Asye+-jBc&DiqsZe=yKUEo)YDS;1GxEWA4@mOOxUsJWSGg!NqXwAq^3< zGSX7s=)x%8#3F>gS%u^L)<ae4`4%Lsz0<0zf}*xHY+JFZF%24L#@B$TZzT<d9a!{- zW|bQZIHh1#q?eNpHR&a9|6Y5h-l4!IUG_2wBlV0msllHJ`6RWb!+y1tr`DPtKwi3n z+zr}Nq_(7&vS#mbN0J_9s0fbUWmWi4Knp=$ERW1zR}~oRq;wr*?Th;U2l}qGZ}|%| zVWh4-by`2m!s2K7J-M^2@7NF_`(Qml2(XF4;`NM5Q|M%m>lD{eXUvSZzdzWU1tBT^ zfr^eDpBTkEh?UV%FEY&&+A1vT7}w|mfCY&|kd7xky$s?+0PqLszH4dkkVx``hjozM zkuIlW?aiyUFiwJvbcA^|<^^J0z3ohk3ap*lL;$x6D<41DH6~@E{ksO?D?FZkgdbW_ z{y9tBis*|_^uT`3$??DWS&zGA2bguna4d~<AeyH!D~TUV8FgIy;o9S7e!jA&unlmS zwfyk>*~q#YAw8Sc*V|(}UwC8q0?|Sf_RbVQ>8`g(;gpw?2WwWWY9|?5UCjP|_vzEs z4zfR_N;v^?KYfkC{dW(0e9x{>Akdqb(TACm#VvU87~GCCc9?huNLDL_!}UP^nkpQ5 z7JU!cB~|c0v_G1dy*d!88*>C4e~`U~GyXD%<!DSz9_uNMRGO{~Z(NGMlF8FWHiGGw z90NjGa|2=2rp&4Z(eWSY**L?{koUC{DW-ah2ySS=1IS|PyQqQgCx4kse_VaiBCn%j zzU~}~jscQGGh{J9gV;AZ3K7`CC{|_)A#PJ+vNN_v!Y0s#b&ZXN6dg!SGMVa{qIYk{ zHmHah-!$bj<gge(6+Tg=l+Sq0-Sl_!mWhZpUMRP(caXn9Qchom>HJ=Gf*k|dXZDO< z)fZ1Lcqyt8S(2L@@F8vD){Tg4=diOCN$xxmeVU1My`}nrNePTIcki`_?RC54F_f`! zgrWHbeR(yeMuxTuFB)7Tvk`wl8$()yF?6sp#K=&_sq86YTaN3zKs7mC+KJIV^;l23 zJESAV$sHs!AjU#doEaSKnOJ?oW)ZQzP;%IJk-Kvb(`)n9`)`dZq(r2edHMN_l5X%U zFsP4Wor;Xp3gCyMp8^x3x3`ar$ZkOU!SrKbXy}bvZUhGh+hESSu5nNCRzKqh9Td_t ztf8HVbQqAL0;*+XQ^USslBgr;W&)^TXQB83c1(sd(!Cz@k+rwt$9ksrgqpqXp;U6a zp^0K!M;0(BO4Oj9de#RD<T+U#0}Po6ew#oKkVTq9Uk_N1+Q{%!43<NgzGgKDi&${i zwDna&AG&Vs+TYdC{bg%R#HaSo_cKp!Z}qmb$8~5P^hRCy>C<QEEboaM@CUfUX;+(D z7-~)XWI-6yocf{hi`(F@On$>JD$Yaj95piH!Yp!_or!i|*q_i?;X17Hn1}cy#Fj(6 zd-6L3zvxUi6?U)BJtfPsn2G+*^Fq`vK28-;EW=l6L2-|K(ODf=x2P^0og?WP3^17T zZZCX*v1a+~StafXy;&Avd7UVzb)n5X$SdI1nmgqZ3z9H6YNxXyqGOs6f9Jlj!Li;0 zrAJ60@bJLvbh32{Mi}-{cF2Lgf6L(1>j(27`E=xAlRS^2tMOsW_bgMcjz|fuB}WH3 zk1bU%Y#MzU)9Nc!s0jWi7}T#d(Nnu}&W@vY6Ic<X{d2oI2hf0otvg{53oQs!>Rw@3 z=HY~Sl77LnWKpMjv^IZTlLDX!+c-#BERHS!tX9~#6C$&ELjz;zPq8s$#lu6mN$<r? z#0A6>Ai=hmkF$I^AD~FS1Cx$HYPRG`u7QL)iCw&-7->^O433G1U%-a|D3;viIgZ(K z{zq_#_tD|+ISq;3#C)b@?p+}gaQnggB!X-V3&mgbC=Cmgi{9^y+WEq{!ye+_LanX) zc$z=Vn(k!a5v$+9t?Yvy84x13NkLs<_K`OZm|!BTUaq)&<U-Eaq_;0`AU|b(WTa}| zjQZ+^w-`NIVAn>qFbsJIP|vlEO>3tbFLQWq0|i6#$mHhj58xgD<Wp0bM?_-vq2ffu z`-qVn$FHIJNX8jK`JhsHs9bHG%$?eDa*&*6hSrRU$rkqlgwbn(sYwb?UbULA|A^4Y z;+6uAoJKG@t)kRDH4Shwa!7IT-B=;c#q?BdN=iwV1m+W2uYmlK*;69&1F~5&ZY*(? zW;szTvEKu24K!E;be>wMO339v=>f$E4j+7#@twoTcMj`<IcAkvlV3zQPz%v^A8Ic} zG^6s&v^$LQELeH8{Zzx7OS`+?;RDy1fzaLmj~U3zOM%hP9#<Ip9?AIb9pfaSfIXzI zE&p=+_gfhQkDvdhu?btgGQG?u#B_>tPJsVb?(}Zv$_z!}jcR|A5D_>O%^$-Uv33i7 z7DlEzi9<!Yx7{p2?elw?_An?X3XL`5U%4||u5YUfc8?>U3_dSoWh*i97A2mrG!G@# z2o*jSXHRr66Y1>lnQ!8+8YGBrt>l_A3Jn^b8Ctui<u1(5#HgN7_!Fzk^f6&NS_$>e z&K0(o-AHVTNRE3;-z4x)L8D&Q>E}x@JhH9Ba)2OYWE3@Ry>&`|SNAXynqksB(nLf8 z%hXtfG+Ol=C(vbR?MrcNqPTy%psRblm<4QgfjmonhUoJbW47?RBo|+MdoIso#JWQ% z_0D<b9v;ja%WJwAhKr$T7KfS?<Y*`vJCPYU>{;&81>VS)0>;}84rYTpf0kt@6gDRH zJib25`=9JZRSz?8e9r2HAUKWZQ)r0#D*61k!biVL!6Y;~M4>M^;YDl3FFnW;l6-|{ zfdy#&t<_l2=6Ncm^6v(kTNv$aNf(u45_TX0-52$&(-HPqYf;jJcO|k4A#BM91`2Q4 z%*78q(mW6>{k+)X+!`Al)C_9cL_M_lHYuM3?0KJDa1p(mm2>QpEWgU&z?PQlTerP% zhW#t4t3|`{=L)iu`fJx=)__th@?1G@X>H&yq~nP)Ev{B8!%S;fn?I$9qfH>jb&MRu z;>3=M8SYg!<#ziufHVz6>!Z52b=Mq<q4$-DWGRN6i}3?TQ_#cPf+_~rNHVd(r*Qli z{uvwy_-FX?&g=MRl{)@eAqBwOqNL`$y|!a_y~f7WChnD+cOPNV?3jGdY>-tiPPI|3 zHlZ&E219@UEnLyx6{$**BeD#mBFN7Rn|Z=PRsogImQ#+3u}M^o`S_oy99j*O#q*?; z$#NHnZ)utAVbe-kSv4>2&vx_=Y+j6a;@Y;e5Zapxx-b!^xsUbtW-qEC5=%BVx$kh+ z#NL1_n^pf`!Z~{W{|x6?<0*3!3wdu_dkcOJ`$~<yq@Dfc{{LGz2bJ0XHJO9@(&v9A za||W+ArKZke9W8}Yp#K_^3s=ecEF<RsLT`SGvY0Uj`4C@F}+%Xb<!JU`dLi<g^8IS zj{ULlpRr1v=VZP(PVg%qWPBMR?1(~X$p$STKrXc|C~Z!jzk?>Koy7;+k3APJ$1V#| zONb`NI%;d_oY?#E{M<m*JM7kSs$l~xJoEV*q8hUANcL*kzxV%lGKZbw+}7W{RQ|U+ z2=Z?YGaY9ycpqDdIoW`1oxNG1R{34R8nay20B@?l1x_OAhLM50NCmycE|s(c_9A#a zUM#3H=kZAB?+c5hffBkX5CV-6ZdVHVo#$_GRag$z<`;Ia!OoVP`~fPyA221*)X&pY zec;X=pOow=N^s>3wqB*@zj?l~@i`Peem$E=t9tT_2v*o|OYUt{xxWtJ6RF^osHhl_ z^dw7tIS1UR6)_o_!NH9QZ6D7GQ82;~RD3%gJ^fL8+1qpTLrfMNt*y+e`g9KRUCiX; zRKV1R$3rW72ZHopu9Pr7@FED;74I0kTgte$!6@Za#X`B?k}m2^7MC@(R08%n8oSB` z3Yp>i&hSK~Y5x-I3j9^anEX%Tm&UqR>TU_PyH=ykgcm|pW1oG0_u08&rVjhFOOE3H z@ML@;6bmd9v`<;oNOS_G<a1;<Hy>HpLQT=QrSz|SA0i*9#?-`No{iE|<mF<0DtbuV z$F1>V7^EV$)bN-W0X!B36l%PEe1vE7^8|ZfUM_ivN{JRqSZ;qJ*+}P#PK6iJo3&P! z6;@Y^&ZUfASNu}{Fb(zQ;+3ZoI`SZ}+~Pplb1sG@I~>$&d#oT9v<3AYMAE=l<-wz( zxGh4nqSdL|!8*5jowd>+>VxzPJI@yIS?oR+oqhF@e6>^3wIKK~=XtV$!=MJcU3^FK zDYA2zLwaEY@~OLbWIqXR>(fjh$2?;D;$i#zQV4O2Q1_;T{y<*PpiU8m(2>M}u7>QZ zk4e$^$*!ihkMy(ttl(G7=Xcgg_Jin2%TFTog15Krxvd*yeXCoOLiUdjq4%LOxwqq; zn1|x;<ET!35M~stOj@6fRfDkU82_i6o$vlAk<ha=hn?+nfytkiiiQd=s~|#`A^=%1 z6qY9zuv`UE!U3E97c1H^<~e<RJOK`Bo{-wef_|3gM1#;o7T^odNSFIt!oAJ|=igXe zQ;44)dT?f_MP*x6b5iV7_w=w(X@Y1c;b!Fy`#L%}#zbMOSQWIsFR!x?yEch<NdIyK zD=6<ls*2IvVD$n&3FNYuy#>#f-SMzNZdz|*5c&=rN_`O5A;vevcJhsiU*>iWbR0Zn znuRz%8zY%jGU6;14P#X9-TOP2ZcMP5mYb52n(l@2TBv(39Dnud$g=R2pY{5;;tQ2e z`f83py?8P%6VLjui&`P?m#p2T_-2>A{fFelOqMsH9cAtQ#PgV^dqQ6&el|4_jERY- zmnaP=WQBUpJKFQ;>p3RYsblOy(cqoTANIV2qjYFIJ(Z~jssMR_+@IhIIeSc`*`YLL zJk~jeWuB$Pe?e8gNLTWt49qG+q3EE%_+L3G4a;qVy`oXyW6i+Szr|Tq%s&oB#lQW1 zZw@9Lw#;k~NpZRRn0v3U@8GNwl!8YDf6<4)8oETX7|ZeSc@W!q>V)U^wbj+jo<Cz1 ziwbDp@tQGY3wgbrgB=HD2R^DXZP<u}_u@$x4H*^z9phehjv)m>FOxa_N{=ud3<_Wp zAz+(s5hjpy>y47wTGQucokI_u)2?Dhx)e%)i+6}EaRKU8`LW984=cNPS7^|pF0-=a z%T<1Mcel}>+;92w@1zmA^r7|{CU=YceB;>aH%<+lN?PCO&vE1u$;tX+(e1c*<)Q0N zSf8GAa3CupLLp=>e5NEK;j6uq<`G*LSG+VbZ&TDIJF=pbJi$f7r(~l<EbN@C@4Uyl zFsCN3u70>wKo@zF?6U;%HYxng`h!wga1j6Rm5-%;hgW7?DnDsOhuXT;wJkr=EGG}} z$&Hr;Jcq?*O<i83>$R7YItLoE+WN<IW@AQx_udL{tT3?*4?Kk{)k<+WRt_Z6On_VG z^s~86o;Rb(;Y6RYOI~d^=~Q<gOY+`vFWZpD#wFHCSHi=Lx0{(+<<~Xh#Aarux>M9X zqSX%88kQjd!Mk)pEtb0y$n<??eq*T9KdQ8V5TFqXy$6}T5&e@WHwReQC)SEUj@)8r z44v53fdpZO&cCJlC6I&E)S+>A9Cj8$`)tvvO`Y^~ZwPdi5eq63*u*TsOVp=>6ZU>% zTYnDZApXP=ZT{ZPI!384C}z2Oers5Oo~^<T&y_J+QpTjSkZe4}u<WY0$Z4%4ZEwc! zNeAy}b&Gc*U!)OuO-Y2hFc=iVSIqdBn4=G(Z>!E<BaX;+is`)eX4g10CT0@;Exkv} z5T7l3PU${Hx$c;xYrlvq@D1&GPkLr>Z_n8|b(MY#r*^a&4H8+KCK?sa`B$69-ci&= zm=?{es0QRamFetd<uyS(WmXW8--pgDC8f+d!(Bqojxn%>NwqT+C0yDy7GYA`%9O-0 zG!Q~Zl75N74YJ;o`B11k`)iE`O5qQao9Y;L>nYhWth%l8kczFFb>L9R|A46;Tb<H- ztoQhw+|S1F*tAMhw0j}U3e&&d71_u{STR6hvbb-JWunGbl6+e)s;z#C3B`V9g(0Yc zc-B!Q=)i#OBylQZWc{^q^VhqZm;<e`af+;fS5YYhUUCLpSz7%G5xOCTSO32u)clMc zeZ4j6gekpv@NMm6^Z=wRO$Y>s`G}o5a$1dlkW#L;x^ow%Jj(rau)oL>V{GSYWk%A% zwMB=`J>2n?ereGGp`-?X2)hPE+qkqxL93Lu+!byg2sdcA8EJ^RO-dOR70}P*cxVXB zj!N$DeE!UW_U2fCw!Ix)q_c9PF<oY2o_-H#ZM~Cx${SsEn>I-k8GywOw;^BPTeP#< zrN)t<Mt77~6NbX(;x-s-$9R~=uSaid@JMORTfI8Bq=iNlXGr=t=Wb1YH>ax~>Ur;4 zNfs1kld2W#oBoLmZ(kbh3~&A3(JAe&qa+$+F`63pW<uIOxlh=e*?Z(wHHBaW8sjn2 zv372y<Ju+pYzRe7XZ0b&LVa*ex;p;BUV93b3=82!L^Q5GZ3@lGZ1N|2K3kE=LCi&l z($hV*`h<Q+wZpO%bE7VkFbWFH`IJ?xt^Owk?jh=MZV2rYu6Ir?!aT7b4fJ;b5Vk3E ze=sz(CH>nbns;RNmsy|iRMzE7`Vu@AkMtJSDJa84d0l#^p{u?td$B)`Cp(8<kT6K4 zE_)QKT0j_=1cil^Lr|(|<7z>M<}0!{?Cd$a))o>IJ>4dw%sZxro}7s<=?>%ghe{YD zU=XYeZ&EZylssN|g|wF+IgB%+%S{Wdi4=fa_bFz?>+jg!hE~BPdT;BS&a%KbkHuk# zukv|%z7Y=d?IP{O^MbWIGtFw7wDj|3v`a$!?1kYMjGAY<yNtM}+@H;ePyW|2G%=C5 zL1w*(fQ_~>LBh__2x}p2Mi$Tlsa4YSC_R;#p>VAJ(}SfWUL-2Bx>~1#WqHKLj;=Q} z6kvKtdHHmGXf}-uNUN)BB5LZ!%Y|0IvVU~cR^e!%pB)!iTJ|3=v`FMYzvd}d&wisq zWjG5z_VLix_oSZ;;1F$T`SxstiKpTF;uLCJcG5yLBtL~#YV=2CcHwB2-Su1xyjY8c zhN_?XNQl}nV7<_|th&%ieaycz7`g+5fxnRHAgb*)t=X&2^vSlbtvzg%sKLaEZ^a7+ z$Bh+0v{Mok&VCNRjq4m8B~NNL-PG4ONm<0$*%i&ItqGVhDp_{biU||dhi;~eA<}<i zg2q4FRqtxE2VU^;z2YF;i&TDX{9x~i(Ff%pX8BDeObcbT$FW_2RR)>aOH<;MQ`?U+ zP0xtJwar_s1SZT6FflR3#xkkMB1@efm5b(D#YzWK3@GkV?d&&t_Zy(Dt}eGLKOCmP zpVKz6Pw(%Fzo@4gV6sTDn-W-3!mG!_&2(ep85&`n^<MIddZ#sVNjeP*L(q{0E|Dic zC$Fuy?Sy7fs+J9I6Jkx}F(09G!!$nl)*5JNMzN!>c^M?TmF<ck|Jj=aK+U9VcSE3? zsl_XmudCeI<_YI6%f={zs+ZUGwR$<JXDC;unwg)6j4eDoO_*T!qL9~SL|7PFRu}45 z6}Jc-?6=EVi3uTGKEg9UTc<Xp_yvfg#u?zzL|g>)-Zk!yAlYfHeyh=HK$BL&`oPYh z9B0&|myhYJW72}x%}Gb<r{`!A-^j%fmoR1%T1{V;iHBS9;?A8fSUI16d@hQ)$=~2+ zuim-DN%l&soPR8S&iIVzo)k_Bp<a(%-E$<~zs72gg!oEa%MAIKH>#+^x4zl8F0r#t znJTn+;0?uO3+o1!!PeBcT7#E2i9-GgE^z|(p3=>A^!9f32D@4i0;l<xZ_cxQW&wSS zKaU4sRh&#$x@**@PmfiC?O^4iy0%-ytswIbzZD*0qC65GA2MYq1yK8P-65n4CzI_q zwX-?eRxuPmz%uss0(f7L?qD7~Gia*%(9b%BW?hh^hCL8GZh~EReQVUtWlP<r`1`fB z-MkWo_aAL@3(IWP*S{`o5CXK20)qt#g^!&Y)V+wQgV~|?l6iA+Qds3m1qFp{=Zjn` zw1Jn?02>h`&~pAfL(`DyHcB!hpHepH32Y8O_ZH{H@vr*_Su155uTkrCJpd`X*-XsV z%tEV<_E!3>?hQbOjnUt}mX|hbaFV51rhbKmQP`Skm3$RBZ9T`4KcbyKj-8~()4g6Q zP3(Yf4*`vNPafs1*o=##M{=kx;|E|IK5CC6%f2F$>8)0h`)Q_hDoaXOQiM2KU<})? z!+(fUfxG-jl{@zek4`Pi7C9&>?i_Dhq@0D0Cj6UA>flsv@wl*ELEUsA#s&J6TASoB zU11~7>LC)5eSl>A#iYa_I=Q(y*4fCvy%_?;RW|*}W$zS<kb%hV2M->Mwy8}mW(+dK zPxB77&@mP0-svnA=$qH2RJqM;2nvdd;*Uwki^F(vTaAUGk*PX3ILHPi0bT$e9wLoJ z@{``(PiJQx`0YT}O>pUmF&Rv-nM3`Urc6nR3rsORT8sIhvVYQB`j=S`qw8XZfEFf- zsZJYm!U81tAF<D1Vz4}7!R?_+)li3M3AMlt!5=fZkHi<o7hXO^hq0~^Bzz>H(qi`M zGotjiY94v!;z%InC<F9_j)S>uW3S?lxy`gi1ktgLRo>gSY?*^Kdv+DKVj7xh7qJ}K z6@lGzJY}$r^{8w^`02(Kb73war51xF7S_ZWwkktxq_M5SghC-EI8N|><Q4>=ysz=E zC|g1@U|;XpGhdd5ZufRBCkL*hCqz%KS3Zkb2Ez&;8T3GmPRzEWJ>3nI2ai@7&)?SA z6dJ)kGqeK`z~gg8NrQyqW-I1RoUZZ;F+GfX#=h0pf6wQzv9zO#DX(Yw86+=wo{AHI z6QQL$(GNdJ(T?`Dy*i)i4Jpy-$3i)yAEZN`Di~+=cC>G;k!y-06#TvinH0H1lYqI< zkSa4>UvBu@^~WSBiW1WJjxiV+4u)kB^QN>PZBHoJegAKnH)<ko2~mY^MdC#)vWb)` zagkr&Dn@mJnl)U8kDAspYML6r1MoWtnAnPU%@xC!Cae6s{2U7t7V{z*g8x>?;|b>T zJm%#cqEGmWwFk*5A!cR)pgV;D4MTh7=-Sr&km=U$dc4rXs*<mDXs&P0*70(B5Nd6S zzVgJH0Wk$Ccd5m0?`!rkN3_8aU?K)7ot6Y8XV6y@4r9MEV;|1Gww`>M<tP&%PjBkj zpV*``QzqALbOLj=)LT){ZWN8Mh!_&fxN&b=+mIrKW&9gumP7I3kau=7&c=8FyThI- zqT!)=HgT!XyypJtTU;yj2aQ|64MyjV;7C+0USHzsP<>MD5L*Z`LGZv-9&yRlQ?eXW zkTjidvs-I<%(_b$x!K$<g-92E0^I^AJr6N_NT&)S^^Uust#a*Ar1<F^A8eCocYKLj zRr9{YE~!SNZ}}ia*ejP)7H~L-!AK3Buf8@U9}Fxo7mDK4>Q*M*by^wL2Mep2(`UKG z+7P_0n+nmxA{vkPYV?z@HHytW1)A0j%|GjArVpG%1^r!Jb^K)wOQOvVU%os{Z&-eo zwS9fpt${jY2b;6Ajf!Jk`mpp+GtCjB1{zQFE^(hExVOr2nT0X1rT##*adl*A_8p|^ zD^C}2ifns9q*tMdX%TkB5y@(vzM*24+x$1z0!V!<n4;gmYuv=jsfw^Gze-ahp)g<s zb^*>wBNm~ZD-_*Z(n^{aRmw&Ow~7dkDC!@w4`Ck75$@j<g}%Ww0b>xM7vD715z6*3 z{lfOSpl6!GB7%bgk2GvhO13WZ2;1bnLj#WJ3NiUw6Pra!bmnO^E+Xkd(9pV7D%3bm zopnJP8#7D{RAGz~z*Erfq=Rz{!lReSqMX_vdlDpq?RgK81_5yCt)W&1NmX3Tz^~|M zKO#p7aXuk-wqDlmueo{fk2rvIUIm7#FLII>C%sXdL(7F`baZkblr5}^F<<hy%B#M( zdCEj0j!H<sy%A?Hkc6U^vG2Gj%L@pKt~6wv+W=JeI;A|`hqve8%v@JxouVa1c3CUD zu8V*ij2Q-;!zNU$T2y=Rko(w}KzeMB7|QrBvplh)1*>Gk-nM)FF}dhkjuS{nA_@#+ zEo?rJRF$SSB|NxKCFUF*Pu~+i0`&}xixQktKz+j_+;C5^#{1T*`&NVpTOQ08#0K(k zYITN05Gt4f8DNJAPV0h1k?HcE#Po^GX-sc8z1aelx?)H?2b(kZ{*HH|8Izxd?F8M7 zU35vMT=wQtcG2|1b1_@<c$<ls=;sf)R|R`ghJ(oxRk7;Y&KH`<uFDE3bTmECyf}&S zbdpc4a*RS72=)Dq*Oc<9?M`ftNarg>=mf&hg=CuEPK{zp4})k^_3_nD|BDh{P_cx~ zDJdyM8|$<(bxNRX0s}YrKcl{WNF~kMv1_)Jq(U=KJ#*&t6af@z`TlKNc3x-a)_0My z;WyP))8l2&7ZGzCGR+pm8_p%orAIY3Q+wMqYp8&do}`P2Xa-_@AU%?HUPZaIR*JzC zz*CF@4;l-Qg|XdD7KZQJ`1LELNh1-~iW`VPHRd52y93RxDf0%cK{C~__006i(lYds z?cvW!Q>L1KY^n}31Bvtu%j`1%lGJX=Ok2uqrnQ&216Gn(_Q+U>=!h_-*OB$L2{}xa zYhS0RWoUV+*mc8$nDEx{k{nZ6N5zEj2!%b!q@dx;^`R81%nCKNCUMq*NHRXO<YoZD z467~xSN4<}csw_Q7<OvjueSlFRI$d7_)z=Q%ht=?|6pRBX<5{c-B!hq_;Ygl`UW3p zhcLb!_~?KvYbN)5%<Z#1<%h8dxd2V@C~diVDmH7~iC!{bSd&2DHW>K{g6c$Ss`kM^ zcC2L>F!a0v^k|&WG{h?)3&4v#HA@}Wn*#}zTojNUI?KiR=9ZQZSl<;`69YS<&0yFm z;-PWDb0xF?m^dS?EAR|6pwgjJpY(n89z9yg_Z;QU9*Li1ozV34==6!YlqYYWlQ^9A z*~<|vCRj5$Uer01*e{^<7QzTm&Xd_%H53J>4My?oN@5%fnE38R_azb!?evc9uSl^t z2(Kn9hXv?9#||;g^q-L3JatI^x;w(l96|wE8i)33e<CJ+lWd!VgOnq)l%nCzYIz`! zSNsb!c5<>?TIyJktzYH)2@n?1M`muXV=zlFxm>fPv#;`mM*l<~Fh+h>Ou}@Pm0JBt zX=!%iCyN+G11ZP&HA$7qbva4lWrm**O;CY;fE?kZPAA8blL>n-RZi`Jl6BLSuJJ?) zieb=Y=N2JOI&}_~Mp#g1_xg*T;*=9<fu$_2E;}DNClP1le#0p4P1GO{l7(Xp?{GBF z$s=1Ew|TXZac_BeoQHml9hzW7Vz8g`d|Tu(h%R>E3fTzgOkhxwkp#s)6_Oys0`r-v zv%^>Q_Vx-tPq`z5;mi;wnl*XVr3q~_H2r;GdDF^WtVF_6*Uw<iO4CEBnqYSv`MSMN zH;2ozCY<T008;ycq}lCP5Ij@wU;2yi*#zLTd79~M;~r}{ooNpgb}wjn!(MN55zzbc zZ*R4Db&1?!wxrA`BZL;F1=p48Q$-^%kT$7$u)egU<=XBG{KS0Q#IJ=M3t2w%bbaT+ z=@up%yzJ~8PSP~dOdX#8u31fI*MRzs;%(2p*;fZI{TFx9pb-WwJ(;2SZ*=aWk7i5K z1{?V%=GwnD9ubPY$&8HBlz{_PZ@JcwJwW#m<ASadCN#A)|2XhDN$E+TUWF{xTny$H zc!N^)kvu(JV`~h!8h5^MmI)4rKoMuxi?go1=}cnq(IIG|!eZ!o0eu~7I+sv+SY?*~ z;Kuj@1wHopuc3ite5Y&m=ZNznHAOmDXuWPh82mc)W^7{0Pu5`i!?UlJW(<lUjYj&M zIW2Dd07fDD3=$X=N!Wz-vp|IM6$*U>wx>&u7B#hGD$nHRQFtV~H6!`Dc)5hADd)S7 z>?I#r+nSdX*rVf&<We5LaTXcPw<L7tf)93Yt4In%6>vqS^FxEJ0a-UTHrTetJ<Mo* zmsr(}pNF;Q`Q2R6yDz7H{p9B$1y;#h=$ENtDfCqrcUe(5STYq~+|Ow<tO9v@Iqmum ztdNM89hNEd16P)$j%kQsdupKx{aD=E`+gU<W7~7q>#`V=99J(f(a2imi}a+U(z}0@ zUO(_#OKt6}*Z$bBKCtSI)5rTeD+i`Js@xN|ygcM#Zj`nBYvn4ZB{z4@8$4;L9iQg< zf}ZlN{3Ll;eb;b%{jNVL#&2GH^Q*m`-~2E&<-c<8Z5XznGx=rLznoOY*$U%t8rr`q zOz7JoU3=?L=RK2izg>LdwO4ZH%?ATNs9t6C=^uQjy|~Wh+p^K)M-{6kq60oV8hG@4 z(EGi?Z`=yDyz=Ua>Q^k&*1YNA_qQ9nrtjbU-0;Mkc`4n->R&xKW9`f-waY`_*c%-4 zXR9KUuE>SUN4<TqC4KjosJR_puXL4d?pAE-EL-08(w}#|75vJ_Z=1f<{?3|rU%sX~ zVP=v2aYe?0yaO%m9*2MBv}oOLtNmNj=e_S!cr#;bsF7Rf;;!AF&JO%?qp{nTx`8+U zV7WW()!Zj$$G3g4ZO!z!Ry&hbN1m;kxn}0M_wW9Cb<O%m;s5;CoFm&jea@ZNURrhi z>E@X4fBJWOX2fN$tSc9?g2%kgj{R-fYu%G?OHs28Uh=xyo9UqZf7*NVs3z~c{r?UD zq96$vHZg!p6%l2rU}FRgR>2}m1qG2sz=h2vXs}4pMj}Q;79XIdJb+Y`G{Yi_C@MM$ z0aWS&22iQm1hECwKEa~HIClEIKIzPydFDL7KY#z}oYOgH9BI6B-=F)vT-WQeGd*me zjceJmc*azd&dr0q(Ou~))?T>vS;UFO%+6_>xyfdq)n7Ee{V0kZlag;=@p1S^*A@iK z56!X5omJ$X;>0}UJHwnmzSC=3f&b8M`RUikBQEUZ-u=S8JKapO{VCVRbda+qH;rkd z{AB;xjXl45@1i${ZSzQ4ZNjyni>iHRte(VaDauGn5=fP_wSO|3`|SodX-)j8)al#C z6fI81ny8D9Y7--^UN^gD&u1GQG0#3`cF^Xi*eW-hop&&Ym3JhkaDGk}C*P;i#_ikw zSAV(scgCJ`#qFCO_Nc`xCr=Vro0iPlkgOP{YN#1f<xsYC%93o#*T9hWsX?28Nzv+( zjp9~{zEQ3zNJ?2Yd&ugiib7Enbt_GjZEnIBvkfmY4tmt^{LlSHe{D6|tnQeS|6Q}m zeZSM~#?dqUlbF5Ew{{!cY5IEc^%Gi$V%=AB#+N7jVm|oj{)I1T3nxu7pcgNcY`Gh$ z=A0Y28d8$ET>Q?li1qEB9oh}S;uTBWXH3-`Z+!Vp*Tu@>=Z;3>l-s(o6Op?D$FHw_ zxc4)K`HqjK^95qf(z)mFB2cDyz{j!audJ%S(Z2}VTH*AmqLLC#$uMM!jPf=w5ZnmR zophd9F8(X4$R>Bsj`+;rJQ06{Uc5kLw>$sD)}ibEL$UJFr#qgxHvYVG@jX*5$667# z`S^6ob699!_-&f&oI97luWR`}zeRg}nznL%SBC#=1<hWxy>NEpaAeJ^KkYJmevPZW z!Q7Xoj&ACjh?qPyVSl)T>+;dS$5F0g1$E`bx?i3;KV#W`aU%R@gcaGUmISkmL<-Hv z8y6JZOKe*b67cGPP1k$3i{6U{-fgboMwkrj&RA7maq4JrX-b=}^P!rTxMTN^X0Lw? z68^a0b!T65GSAOXMN#vrt9xE?0F3gk?#c9TTeeoWiT-kb;kof;p8`P@+@+dX#pD~c zn@Vjy{^jYy!6)ig-lYwDc0?_{8Z>*}xl`xPox3%Bv69_&C1TC1f(HYC+uVi^u@vz> zOZ^JzTUVd%+A5%R?{)C+`Eq&o#PX6X$ELT1{zHFT)^lrz-BLTd`3q+C9NM}u7{ZtW zMEh)fURgF$X{*gYn|%Lu#!?rKG2K^z#$<^8ka06h^6>ABm#_ydlW2Sx-@c^7;<Lpx zzNkkKJ-cLgLGk@oH<iP*SNlDF;GE6TU90`9t={vSb;fH}C7#*3FMQ(<nW+m$?v_8l z8?&Q7`uWwg!}VneCul|I&zC5gDEg4M<lNh3-w*wrrTIGxH^bIPdkakcvo8c}#^0iJ z&Bu=~i)@at8mafJhx;W8IC$Rr6dIks+5PBI*TV4sj<x%KUn&VMx`6DWpW)*Pimz+R z(S{%Owx-8_8(8z;>yNLUYn#|yI)43uc7JW#mmwu@V{B&Lq$Yo^p(h+&>USJpVUq4Z zn67ZEZj+I2)9jaw?#tQR)T=~n#rC!0p53vg-C2_E)-`v$qguV=iDT`X`xnY9B`fl# z<ZAXB{3+b3S<q1WeA)U}j`Jqmj{nuMh;p)iYL$5Wk@ctBGR>&wpdU7*)x7=DbxCT? zmCZFvBa&afbN#+*XziT%<Gktig}xdeB+>rR+xmT<xBB)~nQ*i`N_b~}X=384gUYz` zU;3PMy1z7}WFjJG-=^k$A*C51Nw4f3?rr_{d{fDNIPU*Mrxhu;ygufz_E7wiaCXXt z`*S?MS!p`k4=wwDpwFJ+bxP1@&>y3qS0gyurtZzPpu~cVr-)!JZMnU5gK?P?rIgDe zKum+0!}~@8#uo%rXwOSJq*PWL+oRg)B(ifa;LtG*8EEQ`q_|+rWAndzKSfmZP8hWF zWBIi0&c*<lnK>*kMuac1%8ZU-JRgaWf@U~OP+~*)F4U*il6U|@nPe-ma)nuh4nLGI z1F9eSC`Ob}mSV7x+c6k-h|jDkyV6Wb%R-L<@Ox5k{z1V1gZQx_lHof(;S(Z};jf0? z4kWKp@OC_=T1hY|6};i0o7W3IIy(C5Iz(oHi$rm%+CO4S>>D=2A8;8aC9zVKeIyhd z*$`N@iChr~9|XIjp=h}oY2vFukT{ZmA<bAsQcogKd;W{~VTkM(>w0h_yc-bLUFbqo z-9^?43TQgDK7N(V(XWs=W$E)h)AKt-r>P{nBt&~Op}oLv2OSbzUWVWfna*5o9@le5 zdTx3>nPL*%B&HP4$kNr0GF+Qe>WsxaSz@(gGJw*Zrn7OG-yXyb1-lAx8l)0K?Xo|_ zzkS>Z+Z7>N><S(?ld%Ty9?+L?>GXL6Sj%l&=wW7I#ucE(#lrO(3<K9Mk(m^7mtkix za*2$v!8#cX3Oxm=7U@PlaKDHqSJO0FVgiETZGdQ&prGj-%OKMGIL-a$MBgn78VFOF z1f!=);g84%H!9dpFse~QACb<x-h{d3#PvmBjAD4Q$~NI6qtqEdDPZL+);TIz-9B{e zgLLPuMD@r8CRzhn`r&7Ql3%OCyw}Xx&$2tT0%BS~yTD|6;MKYdpI8q6ovqlw3gWf< zkZc2ul}KD9$QQswcF@&~I!Za`%D_`as|8dN_GUIkSEC4YD4Q*sS?$lj9&won{46N8 z3NVjsDe2~#Cyhkw2aRaZNU(wE{c`^J<*10M6?3yoMl>{JadyIUatU&(>kgRWu9<1; zX;Cd!<mKf7`9T&wegEk4dES%eIf*Q)kO%<~WiH%hP-pFT?eBvZW!`<`ZxswhWC7}H zqPWAY6^8ZWu+cn?uR=n88f4V_H?ibzfG^fKoG7|%k>+mTUQX3Gq07&5#42$!)MU_d zXH*0`i2Pt)o`FdR#wBp+V1&e{>p=AjVNs9|^Uafk=x3z2V|GPi+Zr(lDUnz+5gXoi zVWeC9nY!(E%(k;Q7~l~hk~s7kHZ!*^w51uwX#=rv5n)yju?6_4uqmROr=Ql^Sqdub z>G#3W0WYRv7c7E29?*`t{29iEJd=2|0uCpj;4cH$IU-M~>gGkzXeMzcTmv5<sogM% znmq2<jev#QiEK$#_9U$n+Fv0R1r0>`t~@nth}64?5XS0H+wElh^@9Ro=1Kpyw+6VA zF(7Ox=eYPCaxyS8a@S3qWVOAuNmvRETY2I!EqI#}hPj~3SY*-i81c8ji37qon(iGE z;_ts=u0ff>6v{dk-%w{}1=tH%Hx!CkM{d?)cPcm<J}Vg+W?3-2d_~)5fvsmh(P7oo zKhx^U5o-ftIJ%}6El+lWvA}Ef4i@oD)>;n6_u@gxs33vgc$o5#Yr`w&!R#bR-uO_T z!J%)o&>a8tNpxSIN<wKy=R$Kq$F>rByQ101n{HUSV|UZkGhE~Bd7yq#zZ?8sHTn05 zqN|0e&5)KKJ5sWC6^y1N?-#cfzPzlEFqp|ezn4jZ%aY6K#sG`j05N$DgF%c?o2AdU z7!{du)8+$<FOg#&-x_<Cq@;kuIXw^TkhoLeH3iGyQ}aT5gm2-OB?e0wRRWFNy|2_G ztq53{K}axzp%{AMjTMG9rYg0}hL0BHJi-)xSs_3#L>Pgw2XN2QrofdVA()z217U%i zetYND{3FlzUd-S+*I0?ef`YcehDiQ3kV;;TzA<Y_etlg|oI;>JtWV&8P6V;Jsbt>L z*&iOh4y&b=YB_$@;X#7#K9&3Pw7mRh^WkTzIfhL`qrs4Cgp{!9o|8ZEV*cPrRou!d zj1)1s2GNJGY0#j{BHBj~J{>&8$U~T<L7(5f+#jiC*ns%Eq|Wbc2Mb6;7oE3m8=CYQ zUjQJt4x6Q9me(H_XnYKEVXaz)mk?$?MDbc93k$9(5Ayt6n1ofI_cAC8$KP)Px{9E_ zg3W?C3_r64kpEB)EGR(U>s2KzoWihsDT7uU=LZD_=>vsGa1nU5HZxrLJoorhLgo|( z8fg3-pDwwPj%$SdXMex1Ql4k*y09nMZF*!B@&wVu6AR)&&9GJ(8YecSv#l>)h9?3M z%ILgdhq-$RQnaMn8Mck1&t~W{DwgT_JYY}d9~l~FLQtALE6{RqJ@VZEa0MdI(Z6?s ztx~CEQ(WeW{Wvi@w(h;W9KAY_D_BKT*e`{~N2oUGinGgT!ARqBY(x{3K}9$h<YPQ; zc@PYo#s~4PB%Y1y=*h`mV+?qrmfHcPGcc%@SvMfM_<_eyVDpnHPbq#zIOPeZ_Udq( znY#~Arq93JGy}nhSUTHtC=Fh|!P{TH1$-*{L7E=fdK)+Dv5p$cL%lgOTq3apeSy(a z!yA%)1tBja8%Kc+R^>_}!Xof>U&DAN9WQMVu)TymL0D#PY%XmXAm*cn7tk1yE*@zZ z=;Fit3ZU(g>oUJ$wf${5YxupR|NWN>>pGCYA!J%%`_b{j2iq{+`%Q8T<{&a_X%W;= zmctH)Sat3>2EF$^vV9ZcJ<AYP*ojw6;ZT>RTixFF$uWd6xY^XIA<gh{4yLuu(<hOo z!4+&zGMq00Lzj?{kbJ-Rh!6&c@!1H)!E)xT%OB6gqUm+*?TX2A6}GDbk9R@_54B7l zBJIbxT!u-vXN`=(sDg)^B){cj*%7;_KRqj$S&0*9Me_`-3@>r&Z=^TF+(I^*kVV(n zc_vLNi36l_nBb~O_7v7)*l$w~R!EV7E6GZpS5G!3c<<=bte7&Sc{mxHxk#9L{RYV3 zjv?JxNl~=zF6J7|jA54uo3LYq+6Cu|BMd_bNlHs|AEu<$n9lRZvoL4GD;E~;D#xnK zXwVp&Jz$O)O~I?*4Q^FTh)D1!G&cS~<ko!jsRS!6iJZ72!2<JHCKF9$+0z5oR+ZZ! zPlK$xCjJ}(`xAnaZsynK$@sHHmCREq0s)z5-v6uKeu!mjOKXs~J#EUTerCK(@8Ci< zEG@aDutdHP-0%DzNodW-bp%UCmi&-)?RRj50!Zdp!7aH%tUv$mKg6&Rk!PMsM-ysX z7Xto^qe5@R`)Mf>|BywuvDEpH+QJ#ZFVJ2;ZHlOSkwxBo<v<tn74EavTK0gUNjR!l zcV@B%F-{g`f;5#}bBqHa7@wh`InK;FTV(L|D&^YWzoMv2nv#$bk6q^kc}qb8HEj@I zE4EAbABJ0)4`bS?!DYoN2t~sI#3<19{$%P5w**?YK4Nfe#UFu4$_8IFuBn}{&d7t9 zp<wmQtR#Ujkep@Fzv~jj(F1Vz0klrM^&kwBk2o^U6om^;FQ_YXcK`r3m(<*m_y7Qv z0^<(3T)RBNT5uUg{|O?*AOPy2ahe83=zKe4$`d~g0>IYbMMPDNA{$9;X<iw(0|N;2 zsHUM|(KN*9A%+WFYgC1^i>!Tn+8UWt>>!bZX{(cvLiK-e3^#0aK&gkb%Fn@UvT`sJ z$14nW<5><TWeRVIAVUF^&LEBeG!7X)czX43Af3a(o+^V<XBF0IJ`iE#B0C6KByW5m zo}g8ou`o8HS7B}Zn<-N3Z!}{Qfn#XrCsWS^(nT|S#4>DCXyXSQl>mi0u0b1c(E!Qs zr;d_|sw}K-;vT!>4K76Ppm3s`=Q*MZg8#6(8ggd5_-y(nt~-%fziWYkf$mB2JW7q0 zA`OT-EQ4?Fy&7}mHAT}XDf2ox_5S*<6R^rZCSa&1`wEofnLMG|_@l`*b)ISI&~ktP zvwSv1fjT|C6RB?Ts=!m0Qbd(XA8&{D^tDa#xJ@G-it1J7^gw0k`OA!haQR|^n}v-m zv~)HAT~eNWcx*d5Zg@dTc-8b4e4-3^2f^r6hn6)b`mZU<#DlMKgv{qX9m=_Jfo?=G z%f!PI-)|o>tL{PoOZ;Kr1DwNiXG9P2`+5bAPE7K>aONWT@pkmKxg4I<*o5sT3$AoS z`UW9QLOW20e8Gl_7;ahV%#DpnbQoPpeiQ7!*ch|ry`usx`Uz*XTowXCE-2WYU{DiG zS2|ZJ)Kq~%#m5^5vd(IVx<pvSxW(^<+CIq$DKabY;@Jf~7}?R{)P>psdax?$u((=e z0CmgsKeQWqio&%REL?f+Nmam8r=&pTLDVvt*g2qZIM%-&Ne%W0p`-N-<5BX3o4IEk zqI3PiwHtbeIt@knxIQSxt3X7<)n*-e&En%lAx7jt)>n@Hvf&99w6rj(w(p&turQG8 zIa8_ZMFv%Q@LBl?L<ndfP%cxEC?4C2&v<x_BHM>p>w0hpgC@3rS;4{k7t~k_@ke%J zArEh@DcG4V(jh<OjwK%<N=HeEjXW1tvdX5;cR$*oXXdsBaRr|{Z|p)2Y|E8v(EZfH z$4l0RWKBy2*&=;vMYEJZ`iPmCY{sMDEb~n65sTN%zngs%UQ0Nc_rjmuzGr$Q8ahKK zGj6&dS=Igwa*s&Vs9EH!;i9NKb<ATbx>ZNXYfSH91t0SXmO;_1&aSCnWIWe(fl)C) zX^>l@T{z%Ka;BVeRjO<$O_du8g4q}fXbCxP!_->ss32u@t+`?)1^C6{i>NEHA&o^V zxMS<afl}vc>b_K3CWNQ~8q8`nws5$5f4C1z6HQih-6Cck$W76AVuw=)YZc7fp{G~X zQiuTpiZQkc(v!?P2*|-YrXJj~w770Knwd-|NiK?@N}!Q5pX@wezin|HmEaqCKFl;u zr!Qg&RrKy9;K%CfDtI&3)EL|(8ar?wP)Z<*6QNX#&!4B}NmCxLj`a5SiEY4g=LMK( zSYQsh-Ywv`+cow{5RiMr1+hUeEFHkR1rS3{O!NllTIX8hN+*KxcuHCWl1|+;Y;;R0 zGn@;35^+F3$1W@N_Ln571=W?#%yJ!MOF{=(2)a~!W|;Vi7j4#Jip#VsG7I#Y-;bq| ze$)|h+#w>h`KFH%4A2y)FfiaEXoKvXcV7j0jq<@mxz&7SWN!GyaUr<)kk_Imhm7;_ zj_vlgGpyok-3R;m;IX~On5FN{^(G{uY-^epo>UXJnqgcXxbbGg1L@n@LvC;j=jzb4 z1O*hGR-dXNAr5G#P?+Ncz!F*dFuzXDb%%x{e(R3y{-uv5Vjn=m4t!9dC=1d6Dn1h5 z0-;#qJ$}*#T#D;BILEl<F}6uEV|%XP4Hp7Y+`(C~fcvLmDQX|Y6PO@*nT{AjDE2kW z#Uvp}ftt3;F~qNe?&rYambJ!UT^ET$2okmzUTM<O`3XG~$J?$v2xdW?sVJGf${rJc zHj2F>!C+wEXR_dh8wXxrU2gg+OFS~3xgXXaX=$97>zUP2yew}{FzRBs5DAIi#iPio zj5&8YQklcpHki?r{jwBS1IG8%q6}}kvEBKyo1V#pV-6Av%rd|D<O~52-Xk*$XcGG& zVk&0WG=h2Ve^!RhW^>tdgavFYrpOtT@Q*V{4>E?sp%d+fJd9bvf#|~~?mt8yguiIe zBob2IbiC@Ze#Z9RAJHP@x<VAMI(*FTO6#^uxZS<3V8u!XLzk?vuZvfy6y8{{(T9N^ zbs^MGa3YYKo4YE|b1kr{VPZ(9{><*3KsAIMb&eg?BboZoLI|=3eIaxbkOoo+C6~Et z<;UvlPx|h|OI|YmcZjsG`3H$}l}8xC+14S&7@kdN9;CmbNbm3KXqPeJ$%8shtb&fE z5W$0vA_EX$kJZ#n;c!-}gDV}FGIaT<wyQNE5)D$GMZ$W|9<d~+6kNh+M2ap!8X_@( zqzuNZtBu7<i9fR<SOzr{UK07xn7YA~QJy$$Wp~P_d6Aw-@Wz*o8iTNQ2)v-{<+933 zyBVrTXR#zKBC>&0YG^9RG35mKqCAxIS?~h2JP$IG$9pLXIl)<s-tmdD@_?c+W0NAL zy?0CuS({=b8ygWvhYw0_veC`VUHFDq26Y7VAU{FFbll-VoKC3CiI=kjoilmJbR#n# zNF;&ufxvx1U5UzMW20aU^7|b-5K7xf8_%+zjN(adXndO6T%;R=PVN%?I#A_+(y}j; zD_F5@QZ6}w@<5@*3-$#}+kkuC8g_ulMp|Tb#XSW`4Jd4JmzM9r4OR}cOZ^6YA}c%x zFFdZ0gs4^$Yyn6vV3M^Im8_Jor=Hoih)_6xT5{Gy9~4$vRA&^wf#jPzu#h&Odxysh zK{DgxAXN0M3TO&Gnw~C&GZTW4RwCg*7aSsD7SIouB`jD_-@vCFt993MUP56?+s*Rb z;zCWX3NC*1^6mb6C=Lozul)fu_+zJPIiiv<8*0D_00Wz_fe_6K3ef0UG-Gwtc^iOq zZj=uBV<1Fkq%E&@Y>iZytSG7vXin*?t?z?B!v=QR-q8`Y*f`%3Ck>>V;0;3#{?jK! zTUFn`9_gI&m3((5O*0O4FU0rMza2qF@vFHAH(4|d!?d!W?VlmhGQU6l3VylA!MJ7X znL(;ays3L8zG9H3rf^N1(L7a~6hCj+A4blCRfLsu8}pMqxgTBjnNm`nlQM{qp<UBE zQ+d}&m5;(4rO{egUrg4*fG7jG6UJlEUDzO}P`bL6Dv^$|nBNP7%N>l@@8PV$<e-wt zWSY4^hA0@;VEPGs1=?j)%Q&e!`sBHRE0yNjUTqJVHEfE2G7miYH(5Tx4*6VnSlcPM z(lhouz{5q1wQP*a$H%yWFq1pnG!MA?5Veh=b4<?jeUzKWLy9h5<>gw|Tv~J)ErX*7 z#|e;KxMw92KTaS|D#d6AAB_WD={C5nQFg~{I}_-st+B)?|7K(q#;T-R$1SupGAhEx z`e=e(sk6)`0^SX;^o+ZUAj_#-goVFK%rt16rL7Ku21$r30BO)k2=m{O)Chk+t1HPz znoFgaH%BD++$jCU`ygia&5g{1*=HiNXYr#OK85Inp$EaR<Z3l8<kZuMrY|~AL#GN% zn&G>XxzM>dvLwI`PpSbkp%3zLeR&;)N22U@^sZ?UU|ezC9hjDt)&M!qT59naxNFdk zz}j9{d)QpyFoj;NM1i4$d<!|&_|BmSI|v~gJtvN$Oy{pZavLf3<zGzKA3@OG4#ump zk6GH0(i@5^qIkW>(H}uXk>+Z6iXC3R!4$@FgxWyB0evH?x3YoTs}Cc)R}Fz1X*rj( z;2C0}9AqiH7gid~qh@X~^5AAdRHQdt95^8*5xDDnd#c!zl-2$$F|j{@;DlEoUC&@> zPNWo9it6Bl8;2eXgC|r&AV7m3Jio6tJnm?``}w*_|5SDSJAwhqZM@f^%)!eF?i=(D z9;M)A1r%A4Towq4xkUPg!!)V`1_a$OFZ^hzVGsu@BXsK5p~u{Zx)fsvSDf93!)+xf z48iY_;Dcc%Wc1Si`1HtJ34_MtT5!vW8b_rkyq*OF{|JHL&z)kZ=|+`pht3W3chal^ z5D&|#hdXm-cbM_PZrobH(ZUxENfrWFBn%cc$l)^9%wGrFJb~82R0xfmlN<^QZGfja z&pb|p*C7KD0>{xldJu{PZWJ+pZkYgb`E*{TBY-^K(2ro{!DBG|DZ^ecs3{GkR&<Ey zkVKAo#{rbJ97-x-vze7{Y>a31V7zi4pJ1i~!kyetI|o55OS~&%2i!m<{&U!1=1E2f z1mB;je7m`(q!N>&*1W;H6YFM^+lNRqZ@XME!x;0MKaL<r5ry{AzYXmp&f0$-LHW=A zbp)mTaRkv1wd<=OXuF8i2`y{}5!2z9Nw8(jtaWmbo$_E(!EA@ynmA3~uFMu!v7w(N z96U5G`$MXS5hm%6WR4AazREQzin>}@1`#EL&M~Zg^!+Bbx<{>DEitxINf?X}8Hg^l z{rG}t0Bb;Io$$Hfb5Dc+YZ@)nPowQIjV8qQvorjWnEQBN{y%aM%RF_$3`P|^h|NQ; z&j{fTaZ&4(V$o4g%5?PK+prGYtWNMMQ+gN`f&j*$Ya=)KyZt^6PW}j`cA{;mfm*){ z)WF7nk76~W^VNPFt`x8Oy8cvDbtDAw=_k|kLJdlgAHYW{fdV4b>k*CkJ{`s2-v}vB zEAcbkCW-19@mV{Zl@Ah6QADo19lvs1k69)FikGSne@c5oEG$Tuv|d*>KRm!mBuE-e zNx^Fc?_>g2bZN}U6t*>4o22}Y!VoB^U^E1H=K#JJk=jUk+uI86nncc8xOF?m^|5?? zb|9KaZ`U6w0vDKs2_zd3LVYYfG^|+jA(9J0WCn9A$i0Q87qsKdYauK)=x<mHcxqJ0 zVO$Mw>B%+c9NPbwN5}8JoZpc%W3CViBL49B1RIl?_nRaDwj=mJ-m54HqKHsZ1Oqnz z9h66mo;T!GE~|z#$`a<lJgCu$fSS-@`k&2z0aoC=s<``&mU!AnK}<`Gfa?TjREU3= zNI(Un7Bo5z>mjHNG0$MM26YNHJYjsdyOS|Zgiq;>25|7*Jp#byVzI!inLBq*Ko`kE zbc0^ev3i&>Jh90MfOMS@<8b5BGEadZos2~gNaO~O@tf;zY@5)scsN@Sha-5CL8j;c z3OdzlHKRhoFb^jJZKD+REUE67Ab=Ep{5SBo1aaMyx^vCd@;-GRFq<$RqkS$U!dIq< zS}6-Qv-h!wNkldN4zYN6oujd#cf+b{TtHFO?>MU_OowoRaFu}JEy^%1&2g4Xj4ON) zZ$w5CNCN`V4fwxGn!@wU>fFN>nA?#o(Ma$y^yi5Kv(k)Q9*<-ho1NF8MpiZ^?9jG3 ziE+6DdXKmxXa++Q!s9rGw3fWViEANjrLspcNtu(fP9;~ViEmVmO5Pt9+=-}2i+R<2 zjWd$&BCyN@8m11qKu1<?ccnuCO<@keCB?u=wVaytcJ^~U0^j2%sGDj&DidTOQU+f= zM8@Cay|Yn#cj7gb65n<qP6Iz2a=kz!!}TWC0375prN+sxs;8I7<@qqc3Tu1m+P)W! zi3{Y}Jz{=0Dv6QZh+{;e2=viv6cxA~m=#<P_qDnByTWCDHkx>U01v;r$R_mYyh92a z%raqlb<favEWN?S@~ZQhOG^8ONR!*VGKl6;Vnt!P{>#<;8y?8^NKNTaSl=!;8RT1F z8a*Aq1xn8!-VT_vl6tCUtrfG_aGzmug6%b4Eoh`EMov<duqNLK49s#EsRt+ij7}7! zCyfJz^zC4#WlxoLILrWWAEWF>49GYJL>XbwM@#%^(J{dQKfp$axX8llVK=X?+d)Cz z)KPM3vG^2tR;?$iu<>aAWeIKj0(szw1$%0ZtD6nv2-uM#!?hd+?G9~wj~~a9A8M7; zd=5c~Kx?@WYG9<Pw5yRFEHYUuhPD8imkb@k7-QRhby)E*(!#yx-~nnzk`|vc2D3H( zdn{Yg0kOnA8hZ}Ma+)ID%Om9(>Ppjrx7SG4C|YoqF{+%Db@gJFO>O6!R<xmbVn5;B zm<20RB&7~gQMTzGEw?5xu!Qm+Tp|^;`)OYD;Zr%k3YmV<(K|sD-7F=C421XRtWP7< zFf7<!{~OW7rM~p67ulvgOFM2YFq!&Ij~IKaX+#~m1e4f=r3EX79L(%ed_&Em18xnE z3*X`Bgcc+*62rgrmVsNRXyLY=g9@HEhJ2CzW6~#}b+w_(s+pYKTWrnQcuU=jaA&l; z58&WnYk?AJX$qZWwmOB+@P}{$oGju7Ndt<tl8$1}h}*<m7`<cfHGNA4MXV2o0DZN! zp(b(4zy;!JxmrIFz@vW+Aw9?HI>TekQwATejzZ;!tlY{)7-#H4B<g05(jvj=`jV%% zp~zB{k$6jl8eX}L$cCJoJZ{Rmk_0}P=Rh3+#}dhfXh==C97)^KlWVp*Ev>Yv8f#PD zUGOY$e@}0C5x<2lTj?xRL{bh|$iwgPj{){rTG```jkFqrOF>>`16{9nA24`}{^vcF z<(3E+j7C*c9#EQA3WX{-S5XCH2zcp4k8j;%Gqub;3C}pQ!W+jd_73kuus?;X9BE`z z#h6ihcyO<j6AA`~BTy!UU^b{@mMFOX26o8NcEE}HUSEej-+dW|?p(27w!knNflV1c z4v4qC{}!>%&9}FrJTsyACUHI8?3eqo7sbYl1U2z0d=QRTCZHsKqS)NgcbD-t`k7#B zVw*ZfVJ2s0y9+E;)%dsKrJS`~GW?E>I~kciMy0bj)KO1ijq6zw0QP4arS{#Q!yr(g zX%Q)E8$>7clZ)8crlU#h9D~R28TU#C4BFgWQS!zTvi0Uxk`%+`gl>#HBA-bmNxfXa zy->A)FkP)XKzoP5M9V9f<s`-iLfU<48R}v53t1$NY|X9ls|Dff+tsJrDLk^UK#6q+ zP7w1{I@y4cK1|teN9i#6g;_u^md6~jP_*A6d*DJFP<Z!`N7&%@hU2XB4Z;(qy})tE zVpsjcf*1@cm=={2c2b3BhOll~->woR!F0YbFo;CL;J$}(nT(@_W1eKI8-};P1Je;G zF&}-B3CS$U$mCJoCRjXUF6e`4iCXuYLm?Sjff!&<o#A;gnUtxE$DLjF&nn0glDuni z(S^d9)%-C8J;FVK`u+e*M3R6_2aqD&@SgGwm}QT3KEmR$MkK^xEG|F-{bwR{l1g4H zuO<E-?DAV4@3F7T>AD#SVy+xHbTUa^`!mF(KHy>+1ey>sTH|azW(+3DY@+gS%vu^F zY88POh@4Qa`{zjqJuB`dHa#4G9Ur(UtV6M14&Uq{XiElf4qSjd_+il2p;rZdCZoa| zQl1gzWW)jGbUhlkAr1Sl4$p3yf`=Esg%Ttz@aFh<d*e+n$9JDeT+nqdJiOB8ud6vC zW3Zt#fCNj1jP3WE&<_#t4xLg0M)kkv(O+=t>T1KKL7v(^rG&*seY8I@4Al{wRp^7O zgO9qeTy4_N_olwe8=~uQ?Cyv52IY>b?Izq-DeIt|2LKYz{ILqMKU67|c$wP<LzgqG zBl?iEC(vzR2LK<wXk?>%`K0ig0@fN#O)#V-fk|Xbgh9ZO7Wne1Fg8Gar0raW1s4K5 zW9oB~<zfbl?_weSUzzl-@SCY*!FXYEllu@UjR+c4T<IX$KHy?mZDTXF#>BJEC<Tv5 zYb<~!8F({~W@fUggy-23<7{bJxi>l|3JoG23zlNp3F**+S_^kG=js)63mjw^&%oS5 za_O-yPfcrqompT}9f0ajgBco{8K7O>qZ3P5+{9)w4TOSOX?S8Vc9&@!*9<v|&?eR8 zB+HCx)gsF9Zzs=T3ss2KJ3)yKJVtK_9o8&6ffi^Nl1{95AtL>V93Wbi1i7ff^L2jx z0EB-Ln|cLyc|e1sW1<6jf+Rx(#8qR)r@MX+|0-mUiD-K>O=rzP0Ap1WL-)IcSW9qx z0pf=aWdfFEih>M+_TKUJ?+p0Mhl%+llU1!$_lV*w2}T2wnpV7g0rXyE6A_u4mz$dx zWSOiK(G<&{;UX}!?>5Dg)&;V>s*80_Q&uV^fHla%2w65)t0yr`WbgoV({2d0k_QE0 zEg*-fnk1FLPLRQ4!>_x-7&wHy+72KU@8T85gEnpu2Q7;gz+Xi%v8!o<q=eigI0rKC z%2;ffUuiYta{+`!_H^z0<v;`LH}eHBD9;0HQp|U-R9E8}MeV`>_VX+JO}lA37rGx5 z>BecpMu0%3{p3xg8dpu@af8>li^XP(#2C0<F2H_^Pk5nV0JlR_k{fPSI{yv_Q1M+* zNa(ktV6mc&92r*SMjC2t=Oa23n>?FFn__q*d&l90M($#|bIy!zVH{j8eJ?Ve{JTCe z+){MLGOkC7P5(Gv7$?bk^rXLN!W%)iaVj27tJTMG5>^)gUj;~wF&G-|2~_79p9#RD zjdBo4q<AQZnkOS=kZ(LGQi!cMfOxSAjF;a#!v3zC!1068Hv${aH%*T$7<-C!CeEj0 zonVrT##I|S*B&m90c`~fJGg*}eHzVNN<x^`JkjX|o#89D?#9gI`5q`PaX%tR+Qy9Q zUe7DH<LyV6h!Kr8>ny+l574JwvM!tFET#y6SkL4}_v@&{^7*obv_xa?^ex-pAB2KS z(VbvlY-=h=OXuFR31K1hJdR^H3Y%s|rJEdHV<eeofo09&uR4;X8Jvsn6}H213?>}K z<2K|(i>^D=Cg>68RtYD(?U$Wgk%>zO9Og1d1`VAZA>s-I;Lu%fLRR_yU7)`csl?z| zNsuvB8rR!fSKsiUh*eF7&Fyc%@W&MUuF1BtqWF%^@CP%$jJ;QdTN#)E-5cTH;EG0t z>0C}=P&Ao06Vd^3%^~f%_)L?ZN&M<?5UzEZxDvU<_$9-T?+t9K@dU&GR6A;;dVQ~U z0|d(`?67iD`a})~+lCx$PQb#|Gfp4Rax3m;i11K&CeZ`#*ddS*&Mji%0Z%^@tr3+C zJ5h`w%Z#EvrPCPXf6=>(ZrD;(lH<Zmz(?}rLGEX`pzxPrugQXVHw)d@n=EfwrR^E~ zZXUi6v;yhnaD-R<Ve>{u(~fB^Pz`ozyerT_V&{`_5`$*#L>3()Hbey}t7X+#9%92& z^&S(r0~ljMOJ2=acqVZ;_PFIR^ErzTia1|XZ_w_jb4~EHa{^;9$_8WaU(n9omm>j+ z%tc;cRE&s}OUorVDoBEpqkjlf{2$OxOwLm=Jzj(}dCqDR-+w_n0c^t1h!mltP+f>j z(&qCiAcbR3lIEP0yeSEzgT1w(6xXD$HUfS^tOl`0hTk>@F1!j5*UngKHB_c4Q4^#N z4EfK(XyHoN6EXpFw!kjg3I<<kD=A0HgGuME8yB3fu~ZmT(5BUb{XI@>y&AGg?q4St z`&!OKyT&s`t%@lmoQgP#uA%g%-!IW{d~wOapGs}U>z{o2Q8=y2usj|44AHF=214Mw z7u@THcKG#dJXl+IHnG{%T$!=R)I<6NcgzjcyHF_bPzL-<K4jhT1u`Ij=uh=((it6W z1?uoQ#W#K2_}iJlN1OjP>4Z^4@uS)1hXzXGFHGl8O8Lg}RNGVUWw)YVs_z_q5<Des z^M7$vKTB3!+0lEq;myhVn8eW^L$4(E1ZV7VDvnOl9(cE-;qu7d-9taki?hF2Z@F#T z%}F~9+va6j&#pRdrJlFP+-OSA@sC1ZaZ4;#_r6+Zm9w$$R`mM%4Sk=5^nSA<>|2ki zX`HoYhJ~~`*Y@|~e449`a<%E9&j+0R_8Emd*xUCPiO1W7?v2H9ub%v>e7~mieSR0` z-1k|{U5~%H$%#>U(=RV}J$3I<lug{y*zYP&-`s0qY+(MK7i;CWaa%bzLpS`%?M~P^ zgKx)om#9MzhW_bH%!2gqF4>q2MW^mhU2tZvyf-^zP0}kfht7lR_<6Jp<Eiaqfibq7 z$9un8C0k#&`1`x;V_TQ}@@>=qw1yS`diUgmt6ya5LQKb4Q}6Q@t@yd_!PmPNFKCOX zKezFIan?6%{zus!lSIqxS&a5sGgn_o@}6CC%y@`q@tL~AcT22o*tD(NpM2|CbE?m- zHY~Z`s{DM7yE43QJ<p%jF{Tqtri_#tbN8VHXSSq$*4owW2SVca<=!5>R4(y-G~wnn zy!gqFB1oB4+(d?E`o+Hb<Rvw};vZ6qlX|DHtc@vt&*uvMX9vx@MW4qBMB4b*#X??W z@WuE@zk_u<Ii`}d2H%_9zgTL1sA;a+d?Mx0ajor!?bHJPA<MY!hH+b_d@fu7!QPZ9 zALaJDH+f}n3Qi;{###&A*2~q2zuMk5tKb}>COym^nq1<L#G{f$lNQh0N1G!uoXRy% zwB;+li|5w~7Mcfq+Bk(eIkU-X$$E>pcg1l!hIy@L${GocIcQ8b{>XTi{i-ABCg(QR zt__e08`oGa`t;*%K}J$fO4_6_AG)!HYZWT2EL6U?={D`~-uldS_tP?MfmP3V40V=K zHB(Vhpje-?HQMRW-a@D0zZVYw4vQ=83)h9MZj+QrG<vajp+TA7+O|yp?D0)Tub0P9 z&@!{}+jlp@kF$_wO$De{l)KCu;Q1Gie?@<ZFr1EGDxII&M{P))e=BLPQykB8%Xx2x z?@$cCRehVdLBg)?32uDG{J4KZn_%Apra$fYqwR~Ax`v$DThKRhz)I_Lwyo8zd3OW* z0?Zkf<);=;TTmI66JOr6^WzuH9er0-cUr^lEIo1b3)eI4mpIlYbo#vfuh*7FEq=n2 zeY3By@g3{G{<{1S{3^nR^=INg{-#NEzBG7^iORZ<d*X99cgL;c%V+Bj+`Bct-zll9 zQA$%PG+W&{%zGue8)kz3^5nZQ&-<=i%F8&B`vv`$AY)13!0b7zMGmG(18+Oa)a92| zwO{P=eB<V!bC4)sZ(O?WPp4n_uNDop_)i|Vc(?3_{3XP2w0F$4Dn^mP%$wtH@SUQ2 zAlW@AEOfL&-Qx7kz7v--v%eI*L)4Lm$Mm0FbY3yw>{%Og?y&9|^ZW~@;03es1+)IH z{nn1Az=7u<?+#x=X(sP&b#qZq-?U)&jqQ8k$cbIAwLg*cGLvZ}3^&N6`K=LI@2G38 zS&~@e?eRRe_?5%=L)R&vyrY{ZD~6{CeTx<$`6;K)3z0oLbPpB^@k7p<y!@O0f4%&Y z7Gy2Dk+6aC((?RQzx>TnnMLg{e&Vg}xU8!9r1bgHW%MnPY=yx8zaH*&P?T%o<LQrn z)%n8@S<P(|5zZr=lQSD<D~xY8F2#5;O1Ai?$J)Nj-ygfI&i~}=i+4|)*=py*q|ZLC zh})gH(4n;LVuS7TERXLwUh3#Y-+Ozg;M_R$=$68mFWk4lAuMO4V$s*TpY7cJEcn8U z;N3qn-TOY-t~Q^4P@$=}{3ga@VVLlzil{3Yvj5(vx^q>Q_eJoIj^+jTN6ZbRW``AA zrhoA(``QZ=5h<?@OnZfduL7GI&(?;%fRbBX3tsB>`8ZB~Za@1%Mo4KU(zpD@uMb!} z9FH!fpYPrhX7J6*>PcM}8f?_|XV3g~bK92@H9ju)vz&07oS36XGW<@r&x}R8nZfdX ziQK4VBDisfaJzr1VRUCu!;7a`@s0U=r<)b}YaJ}^d)MA?t?g<(+xE9jsj!u;EpDn7 z(UfuZ*0l+bE^*U$CO^T4&%BhIA=~{E70tgyO>^OPYc0Q{4eeVN*0pc**O`e}(iaW2 zEM)c+pFbTMXWT_?UgZV4Xgew+4?wQt+!A|+LAH!-0Dak{tg(J8_G+Ml4E+X&zuQb; zbMdwp*d?-qwtZ~lgzR#{z{NHJ;=f8KW<!~@vBzRYH&-|Y6@TOd9&AjTvAF&Cyft6I zpBW{aW?K3KN?`biPzn-|>QmSAXEreBtdX&8tY??rjE!hSU5G+3OylFtu}y}8C!E&P z(~E&K7O<le@Z5lA+?mi;gk0PNh&j^AH%-UPiEMy3K^4f$<Z&^lKAO^3hazz0UYpc` zzc@T-9{3AKbP)_0GE_}RCc|COKF9zRDYh-QcP?-Vr&SF?{%qaf2E7L0p0qEiiCEuZ zD#_M+$sRpun!sd$rk8@){sQXdo8hOaIt~w!ut2X698o&iMMGt{ZQ+LSI!#qrP{5t& z9oz7KM(lONW=Qx8HqUP>qPW78WI6N+8AP1&|4mthCp!8?dh5<b)ARC7e3dH_5F4yO zhJ4PD5zyK9+TOOF<d0vhqmn3H5<@JJYsdBj?+m*(!KqdR!=~>!xYhy|usb_pD1U&i zy8yWBsAE`1WV2zq*S2GZK~!0J9gy!e!IzaxOh3rDpASx08@T)~SAMleekIs)URS!D zOy?|;1kWY+LaPXg2aqiG^o$@?i#?TA?N`o)4h|w~zy&aHF2G-Qv6Wb1(knHci|BU- z0Rp1wf!x*G$DR{p>mH}{v*$r-hEB5yG%FB}A+ZOVIB4}@gWHkHs__Y|W#OSf<&G*z zzvRG<V*^bii--urNQpp+Zg>$z7Z4*KH(8q*91Ccq7$ACKa-DeqF7pv+{ERC(o@*z= z8P*5lcM4z=pua$9mL~^AB(9oid)NRhE=b?eiGNA@F0|y07p>Pr3&f;CQ6aK&wS?)5 z4td-W8e7UGw1P7u$pxh%8qMFpa^2(t#3DwSk+m{vwn?0RX@Xs87+gdrvEhGj)O?)H z%y$+u4`M5309BX;B&Klne*!t@XqbernRQUaVu)A@gXJ&DstL%g`XgOkEi*lPR`D=! zce1I6f)hL<%nEDUM@N&})rZ-kSmJ{&1V&h;8^I+42aujAEtAF>)O<t<kOEP5w+SeF zXptZ@!6aJQBT@rTDI5fC7+(<~xh%1I0{BRHKi@OXlh2?y91c`<vS}~Co{n8)liyKm z5l5{x@zpI`?s%(jf;yxfow&B^7{)qf@b)bHOnDHJ9#Ciy`D}qW7I<Wc(kwGGLy)kR z(r`FF7;8f&RQX9A!f?pvklx<0+I?LOa|$G9;OyfOS_%jrY!*0ZICe~v3vI>t$^qf% zm>^#}IJM9j$?~9ZR{EJR%}{hha!qjZ_y@G_GUI%2u9?R)gun2IL!cYquh&p*!U>R( zF6?a=8?FRVe*ZEDjB~MzhTjZ6nzGv)j3*f`Xen)ysi3lia0Ch>@bjWiqL)lA69yj? zGa;)ZOxcGBm8XrrM_f*j*GxGLBZ2dmO^bDy5VE>ixRoa|g@f_(P%BZL(YTxJ{*XTa zc?|^CP=KW-6!+@G2nj+m1>Asl&qm>Bf|BsM>scEnIG2JXjRvYZVl%_w<^6KZ%`j&4 z)WxX+7hG{4glLi&DG)42RBg>gmm{fe3>L$!!})}m)ArX`<pjV#EWQJ+n^G`icX9S) zy@Kel^N+S3R~ur9zMQm~k=4d@nCdWui*>UhVQMikm>5O7Q=Zz6cG2Z%F|y<N?>5bV z;s!>FLY7!GQUiE;=y|L{2o}##4kjA*Dx*N8tIRtBqoH8{>IwEG67H}BR-Q3wS(!kC zhg=pG!U|KNHD?i25grzlABGza7XU2;6$RLhSOyl#bReTZzw0v7z1%WRtFd2(L;%$= zwDYh5Iw>_ep#$`ECgE{C)iQDWFuv!rAnl<~W<hn8A)R4VGy<(yZ5>Ec`s?$2d-yZp z<Rg{vh1LP^iflied_<9f{F#)rvNUN?eWc%+fKq8o*8oXXA*A4j2$-8Ht@#ucrxY_~ zY~Vw19yH)Jkcd4-s>l5GH3nTxVqd+$V?Q~6ypbs_fr|?w#Hpttb45&f`L1boNL1c= z6}{TdCFu7%#H+Y*c!YvUjxhA1SaIOV0Jy`b*zY4RmpLAQLgF6X6xIPi1`gY&7;Z&I z(rN^RoEvj?1~$egLogCq&hCM81(*A9`Rc>vco3to$OP6ivJ?ERrm!#sGTFgZLs*TQ z)9)@h_JD`x7fIv!INo||j@f~s*aGrYem{0sn448Dl0)K+I5I&J&z)pb;cuAn$6Ekx zW(yYV9XWFk9zK$bp1rb=HgSODA3Eaf(h1VB8CC^ZuJi<TWGoHtL9zo%#C#UCA}JQ8 z6dB$TT+5<k`W<JOT&+|?{T;;fq)gsZpZ356=cRAWTQPJ;v+cwdQ}+|{?YI<@&oEkP z|FYmg!qo;0G`G2a^r<LijxB@2(!pOtbLjXo=49LR-7cwcdP?0-uk7};Uf<D~LfA2p z5c`u|YPG^-Fg}nvW<TjpOi*wWBpdrN^~21#?WZMqGFqS$%OoBH8%8%o)*$if9Z6@& z2ud@_Q((}7krWw4;*5sw=RE|PrSqz2ZPIyaoa*mR0!xPh#=B)S9gDVoJi{c;P&=%R z4#XxJXx0#xY;eCLM4*|bNc#!3?A2&=1`i9K;Q$~@ktO)%cTLN!l`+e?%wt^03&4G= z8{=MsK^wvm#68s5u5`v|7Sv!^R4^#qL(pkIEuQT%a|5M5HH#lf{Vsvbwi@R{p#=YM z!WOPaX2f8c=xJr;F|h>meD^F&RT)>xt_aqyG{Us$qK(u2q2J(>gGYAnWvi}%mS#a4 zLO77Z(GETDUGV&|t;?ufgdvXSuu|sFU@$0b>WR(;LmxRj8IGWA1|Llc^X$nDty_3R zUjymo_G^&*<e4O6&RI=To1&r$UJwJA7hb!U>*_ia!X~%NkI5}kAjQGG$ALEE5;<)V zq~$qM)sCN*C&yVqh|z#RlMU5f5W!1&@rT-T5}G(9^OBekKbc-%*S{I%T>L3^uw9x* zSu@mcyP{uI?12Xg<DHsv?mR2&1_Tk*R61eG>;ntR|4KjPhGs-TwQ+>_4q@r4&uMwQ z)l1OEq${h08Tc~y<Fs22qrh^1kXHRg0ziFeTLaEb%Rd5zGHm2ec0qQBJ5HdfHUhj~ zDs3e>36Nw(zu-PygvY6z$jqp4s09n~28yV~L<(HWv9ye?(v<ab$~kxr8O=Gd0jR4W z_IT{55E0c)3-lb>U;--;Y*v|2UyQzA#$t%E!!>eNR>Sg>lC0Op$W+>ilWe^_s>-U| z*>wILTMWG=ShEt#50(`Gnhpv^;ZR#wSIdnSx4nK(IEt_w{U1sX0J_MSH5U$;e@qU` z1UM7DxTq-peR9bBkICT+QilN$85WVJlKGk0n&1FP7eeibQR5i4GT5?L(lo=AVE~w* z#QFr+flPzXp@-CELHLtInQ<suw+}J2V4R3ghu^{!P&l5XUg_+fj36iEs_lfHmhA9t z;#?zAos6tzRv)0P?S|FKLB_^&^7Qfp?k_MWAg_KQ>?CUAgYv_(J(?S@0#pP~Vu)s9 z8OwKAqpmrvJWL_cW324)PV{<E0vGMaJzXscn_?T^TkARIkxrEOrVlaGgE100BMl$9 zxUUQ-#ex|gUhOzu=nO3|?3#Bz4oq=1r4X!@h2fo$i94^a^9``%FUq%KIfMPjNVg~L zK2V9xLvAyEb0dPhhL9YjmX_E%`#CUA0t(rrgMyZ9hfoLLfk<~x>Lmzm>;Cq=7a_s$ z!fLy|uQO#t<~PNX##hQ-r}3_z-Sm6MzRD$=78OJ!s>UbM=if9s+_c^Dt{J!GmX0Oq zeZz&)dFytDWGW|Wioto#l1E^bWoBkx3yQ&u?IES2?)as!N48c}7QdKaJ$wB=<FD6a zBX=M4S`<tFI{NYby+Ws^;lIO__S9xxK<DRW9=Sg+dvoHy3!*Qlb$SaH<|keq_;urh zs}EkdZTi`??YC6*nuXnGBNtt}<N4>UzubNE>W97e5-<L+>ys}dYX`o+GqCad(kJOZ z?*H+}ufF>6$zT5G&sUfHeDCD4RIAU6FtGmc>%$fJa0NbGfe%;U!xi{&1wLGX4_DyB z75H!kK3sthSKz}H_;3Y2T!9Z);KLR8a0NbGfe%;U!xi{&1wLGX4_DyB75H!kK3sth zSK$BmE1-5B>>u#zu_*GSs&3IgyACd({?{-aA_)A4{F6>i`p5tJfBjdiCq>y+P*lGW wjq>EtsG>>KqI1vhS>%rEf8zJtfBd1p_l9N(k4z1eb$xft+%kRnfBvlh2P2jmSpWb4 diff --git a/Frameworks/TagLib/taglib/tests/data/lowercase-fields.ogg b/Frameworks/TagLib/taglib/tests/data/lowercase-fields.ogg deleted file mode 100644 index 0ddd49357a906c70d6f3e5f222f0fa5404e4e2cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4477 zcmeHLeNa<Z7Qcaj0TEvy*g#{O;EV9m-~<d^VsSTl5+KnOcu9~C*~&+R2)0OI7k2AR zB*CVEGHe>tHl+?=l0qu3&|<ASJL_7dDi-;u=+<p(OBe8CcHH%kI{VM=c`x|U{ii$Q z{?XalJNMn3d+xdC-1|HCop){uYHRf<3@w-A*Z%MvO|B@rwTtx>>lZIIRhca`BP{0# z{ezHojK%z(U=`3a9~62fJ@Qrimjm3>|NMSg5gyXC76eMnjddFenrej&=Bi>wzfdF0 zkjXM-8)fov5Qu}PvZ>i@Y2Iv5>kUE`WzgsiwZPqDYObuQY_5Evs^O*T`WG6_)y*wU zrp+oSB;BYQ8>_bGzF4ML?5)l#ev#&E*`C=@(?*8)MKs4qH+giUrW;i?-Dvd<WG>Z4 z)|Zx0br_gxHa9nzLiP<B!!|W5BD4cBxuuwelnCJ#z9iRgS!2hN$il>V0XbQJJCWSR zZ5L#0E1wWsdPKfH(ovqef2zlb=n1c=T6uP-iX*a%H<!3<DVu?ED1c|Cc^G-WQ7h_T zRK;0qpO<CD*#44rPheLoN-*Fp3GJ)N6JFa91qkDr`GvMf#gf2&TAJ!?KO;M_#?H=6 z?P~v4cJ4FVO48xAX)^C6*=tp;YeF_~Rep~xQgx1R&sD(+A{8fi_6gNsl3k+UJZ%@s zYZ6coLVW|N&VkfuENL_vokIvy7V$pWD>(lf!TAxvO3td%2!vRO19JIJUw-$u`7XTF zC1&cvt3m0+C{r_->G=p17R9Ld@>VeOY7pY|WjXyNPJf+q(b3JZA2<?*tO&8ejC_ke zJI|eS$zZ&4e9yH<YPrXh$V>+eu^IEOp-6`;JTa2-11!VJb;{0I?}KdRYhwqZh817+ z&i9qZdbJ~pwY~XcZLYVSA1M}lEtBULdebL?8t5&J@q*l9@0q^R=n$1M(l+Il(7e5q zH+J@N$AMZu+}7iLZ49W0VRN^4>j+T!AGJ|$Z>4z_S{2jWJbOdX8&7u!fB%u^?Wwas z6^!5bvKM<G!pJco!+w?6f!8YkOmJov>x8-7s-%n?s_&L$QAxI5^5*nXozK0ABR;s7 z(x!v}4?{|hsDnr4-*2iMq67S<3&gv9?OMsu;6PW#g!KK3Otb0sk@sVti%CC&ZFy$+ z45i<bIagBuSH+^&_Cax3{qPv2CH!tGn!!&9*prcoH9bYN<|+sAZf{exWH1D$kai71 z1%DSzbJsqse-m8dii_f)rp;z#&g#|17Sk0^OX-LE%CB}*e7EllsP|ebOFX91@72)O zA<_upu!lB6jPorQ6-&4qyT46vC~D;8G3QM)if^64Kb?^l+?5x^Z!Y4gXXVD}go>h{ z>?wNIG@DtWf40I{yl1;-Px<kdYj2pYeYfwcM{30iW{VI_Ho4Xju4KYBpVf_Ply&DM zNEu1Lk<M>YyXUi9xW*+myK37!gKv3nymd$tWJC}~i_paxXmt*?ItN?3mmIFTw>*PG z-e)cZZl64Q>xb$}=78f6P4K)XJdeWF6c7x$))*RH!N=*ix=A`QBM<FyI({<%y1h9R zG?pEJP|W#byoqUnE>3)zN;B%yE>r5udgBij-K<;}55PvD9v14s^l541-l$HzYG(I) zebq74ZU0EVq;~AX3+WyFv7aZs;x58|J%m>~RTtBIQ^fk=IRn|j^SxOuNuXjWa9#(( zysYbu0_CU_DuWC{J@Qpk*{hGqS1<Q*UAVL$Tz-j;<BwaEGjiqKY^ckMz|fs+?wuU& za$kBWTs|G1T?EnNvCF^PItI3KxKr7W*aAb@)BlZqJ@#V%ui$?j0mwkG>+tLp@sdW9 zks}^8=EvbtF7~J4`JM=!E$~M<%Vko{_L*h6hgje+pqdprkp>2)<c{QrLoOKTGh=G2 z4+iRz9=t;!aY-(6V(K^7pW3K%B<FAgQ4eQ5N<n1iH^K*8)*tg=O<7J83t8v0JdhJ~ z&zG!$<jx~@BDAyAn+k#c@yhoN#vw--YD@)#pNvSagGK!ODDp&1Wm^L**bNA$(yKeB z(pT-ZLf{WWMF>Tn9g*td)h?geo8rVZv)Khavv;xWkool8Y<k-RbzV$eB-gzeFb5?v zoiPFOmFqO@w!oQhP{)BIY($13fwQXAyU=zh#Tgj#hP0@s<vP7l;|jDLf@I0;4FpG} zy1Uu*C(2+nb}X}l!JA;HfCtjX%Pn8i8o*-k=1IortU+gNsSr8?W^XVUJi0QcfCoA& zuC(l5e09Ja48C`A1E!<ZwN#Ww(kl$!x{#qXf~Jb?9u__2*2&SBLgN(}_m~jflTHBY zu>#1}yZT=5l5`%Mwy#{R>=!)~W=%!t6hFYzUy!XA`LLvM+|DD{i~TcHQ0Sv5BEfFZ zO2miV)NaCvQN)ltnv{qSQV3n$9}Z7PVcj_`60Sy8SuXw2em>d9tDaP(a4Bc{V(;tP z^aV(RG(;kN%@=)cCgq{DG*3bJnY_nMX(3a3UQ3AWld2TIdj|5Oc!UfL+K10Au-B;= zxG5Hj>8_^X2BbVV<E>P0V7(^ffZ+N2cpd~d($EJbR}vsE&>4*tqf!RTn<r&7Yye9L zw38be%4yV0iN}Y*BY@eCD=nr!dG<?xcl7q>qX^w$uRwiaPZsB85lJhh@)|Myy;SmT zJ&=-{Ffv+XcT*gAD;_!iaVQ^-eAmbvolwmwYoP(kdXecqY$$s4VfR0x(jYlwGPFmU z2=otQ7P|MdtH(B-)=Zb|1dp<;aNJMv{d`LdN%##M@IbSntaF5Pq%Y#W&&nFkS|(Mg zqJwi)(nFS5k|53&R~Hd>iqfVXFX`0wA9hjN;majm=|jG`vd-c0sxA%j!DnTi>1)<C z=!V9w?tX8CUtKRr`+#5Fb(Zr&O+#AX^WCe)IqS-$X_w3DW#jxW$~*nXy`AYlz4tjK zO`qF=&@XM_D5w3kjYsfz61pRwNE(epfSVA5Ljq?8PKA%^QoyN*B{}^D;4zfQ-9?`s z=Ke!zfyYoi)XilI(-QB{Gw3T4;kPlPm^Rh#<1OEqhJ0?CqDa^+IEs-I`yj)md7OT5 zo|fo<X?{0snefMHqr~<&iXi+vEk^`{z%yv0`t5OWIBD!bftCR83bG(M=BrW?jcY0o zM?LXWD5}&z&NJYqh%|M3vY+qcZ_Q1x6qY#$n_{R>hp0*60`767+ug4lG8TAb40%(~ zvW<vLJIE);`M#@7Tl+1s5EWI(YVAQNoE@<dow|;`wqVU+?7SzDRhYBOk@GRx*jgBc zarG=^RXe!>8A^8eDt0K}U~O3X=4iNxE#j!8v3*vypttek_?KEwuX=upkhBOvFG8!( z9a!KF#N|$3tgNYPXl!nM*=l!m^+14xl89c0o2yuvlOwnA6O*14tbOWfp(uGB4q-g> sCxFn3*z8b7MMrQpo4Mt)PyH$s&*@t}P3`*azVd$7kG-Ji*dKTK7v71uJOBUy diff --git a/Frameworks/TagLib/taglib/tests/data/mac-390-hdr.ape b/Frameworks/TagLib/taglib/tests/data/mac-390-hdr.ape deleted file mode 100644 index c703e2e2fd595469973c4162cfbebcc0722ab829..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeZubXKt8U%)TMz{KFPhJitc0Rp&yR9*@L!%cMt1`s>Q)6MOUpcX^8W0-4NZi#{b zP>d0(M_?lp0}F!yLrP*v;trsi8lap{9TP*cE-ORIPIiXhwp<L~F7Yr#X7e*VV;5q0 QIah=s$V;5zOy1sd0HO&R=>Px# diff --git a/Frameworks/TagLib/taglib/tests/data/mac-396.ape b/Frameworks/TagLib/taglib/tests/data/mac-396.ape deleted file mode 100644 index fa7ae4149460cc0a94174a1e3ce72fa4f1106138..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmeZubXKU~zrZfWz{KFPhJitc0Rk9-)PX7{FbBjA@^o`kdCkcX?il8pmRq7A02E_{ h>Jiw;#K6KJz>tzylE?s569JSH7VO>34%f}V003n#561ui diff --git a/Frameworks/TagLib/taglib/tests/data/mac-399-id3v2.ape b/Frameworks/TagLib/taglib/tests/data/mac-399-id3v2.ape deleted file mode 100644 index 2ea97fc45334ff952b0ccf0dacf6d5d11516dc28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89155 zcmeGDQ<Nk@*Eo7tyQghV+qR}{Thqq0ZB1j^wr%&cZQHhO8)v@veZJ>^an`v!H)mDm z%Box|cI@2oyQz%KC`l0(Fu=bJUq?kyM(E!OIsgFj^(hFj0vH0E0oH(@|JhX(M4A3I zWB#Yv0pJ8M2RQ!w{BMAy3iE&atNd$p`j^A_zs(9tl4}2&DF6U<Sq61kVOuLJ<6lnZ zwl?Apw$65vA^>a4jXU+6Gl2>tOmd7v{oMa_2>YK7sy62K&c<TqR>qP>#x_poCg#Qt z06~B(KpbEI(EE2WBLFWz2|)O7X96$+xB%<`RshStZ|?s@+5I<4;eVq3H<IOF6z9L= z{~zV_-zb&;$;9+88}t8UWCU>htNuSVq5V%y3J$g|=0^Xm<G-!{J49JyBXa{`D+5PI z1qX9$0|)niLu~ibpCQ@Xl@7|4D4?bk!T(P>;{Th;|1$@{e`9T&{z3c;%x0$|g|K#) z%-cEN&w6~{_)k)*{|Wp*RVW+(vb8b#-#Y${1h@eOfC4}Ppa4(+C;$`y3IGLw0zd(v z!2c@(vVy{dNr-@dQ%wK>>)$bK|G$?RUj09pbCi{HX!ql4*5Dnts-{E|Y=$KS00=<< z5hMV>|8I_t1ONqyQ~&^I4gkQx^1rFL0LcI83_Jr000n>oKmnitPyi?Z6aWeU1%LuT z0iXa-04M+y015yFfC4}Ppa4(+C;$`y3IGLw0zd(v08juZ02BZU00n>oKmnitPyi?Z z6aWeU1%LuT0iXa-04M+y015yFfC4}Ppa4(+C;$`y3IGLw0zd(v08juZ02BZU00n>o zKmnitPyi?Z6aWeU1%LuT0iXa-04M+y015yFfC4}Ppa4(+C;$`y3IGLw0zd(v08juZ z02BZU00n>oKmnitPyi?Z6aWeU1%LuT0iXa-04VVPK>=?##(MC7<7yxU01lnYSece1 z881iX`LQ)37~Z@o>g#v@!uO(L+DcgY)ft%a?LT-CDa<)m{jzx5^(Icej?S8)`#!-- zGv?i?FTBO1Vbt&E?!lz^`{-S_rq{5p{IvZIZQUzs>~D%X9zG^yi42(UFE}mrmRXPH z`4U+sJW#a@mjX4Y822M9=b~FP=9hQVMiB+EoLIs?j};n`DQmnG!WCf-OC|>zI;w~# zl#OH9sDnIRhi21Ca5F!8zc!#0p3k@fq5panTOysfB)2{1c_%dAIAd+S(J@?%2Fh*h zw_rw>i+&GV=&CCaDe^y|F@Hu&MA?EE2r?0GjM%n&o3D~dkZlkADw-&1K_8gU4upqK z5A8pegRUi^8ib9b9Y@dMDm)WleKqz=wBBSf%~1No0&-Hkj{49{iRrD-OTQKx&pCR! zlBCRE8fs8ak2e+meCz8-UHc-NO!?#OPt7Eq+V`7cv`V>8te`T?BfC0h>TcongDA}2 z0Ww{G&5Q~zaX*c@cl};NjW#Y^q1YE~UE-7+_vJvADzcKh@$w?|&#j~*E+nmLUV(~N z(CS*0UT6GD8>wm%<GAm2)!Xl4G#mFmJWF2`-J)^jz1T}&7V6g~&<!zZVbH4T$mOu` z(u)&jml%Tna3bb8uss-FmuzK~P=cz|@sTW`yVslw+lF{;PsM~<Re_<(IYTGPcAFr# zjw}3!${>Mp8EV_*5piBCGcsxb#xPH}Dgt!;5$O}MO83$?K{~(`O`eD&QsQX2?!5H9 zxm@egC{*d^-=H$90i%Je1?E$Pcn27nQa40A+#WbTsXnS6N=0uL%Mf)~c}(~Xy<>hF zIJMpH<HX8fmcFTOSSzIVTA$}M^ce2SuKi}CB-GQpkD1w9mBSR2FM$h`p&A)4TA_ET z2R<zYCTe`E5Rkd~{nJ*Z$CJw;n8D_AKlsRo$ps#VIZJw<;fWDGq=w^F*u9zEQK~sg zVPJ6y%Z`e~%V(Te6vx^P?-3Ph6dkYO-69}jQNTHikl!gthdZ@hSEJ3M@>+Z)P;@;? z@w=(>b9s!1A8go$8<OD9izDnyDnk@R$m>Q@Vov{rB1zuu;khFl&vyl~PhsbJEu%)( zYyz4Ff;9shf>KbVqv2wvshBERM7ln9lf}lA2dKjXp?Q%3q9hMT6R9DKr;u^NL&5@N zedeuI{^zRL#Ayd(*QLb_#)4r|P|z#`o)d3JTyC-(5g*?d#)*cY*9a#rV4c=F<HnB( zt(CPz2-x6HH{Zp3Gx}`RNZcBdW!m|^`*jrQQ_~3ZFb_eihN$I9SCqutpEj4Av@P@Z zsJDYY{Hl?qaW%+4E4j<1<r#f~9)`(vABOV4(?)!hP=e5<j&XxwjOjuv)1hkgi;1q9 zP^7TRtKd~Yo!J#x7Eh!c<4~CH5>JDJ(q@08pFbP+#{NEdDs&wmH28TNM`a{3mnaoU z_&S<Qx?Wvm$h6G@A<t3QYk(*a4c@JGJJL_RKj6gs$u9wSj3$FapG_fn<pC<pagROZ zA@e=fsD)uU_16?{sM`G(j*{F_On3GxJp)?_JVOAFbys93Y3$uFM$hMMs8&69#h68K zu%#iXp{Uem+9<whpM&4b%477da%ND8FtROX_O}IoEc$41)L#=6;|`znq;<^TImc}0 z4-I2nsMpX=OFZO*c73R05r}t2B}C<;$|Swgjtm27<u%ei7@Y}wxp0pX1MCpDx<3u? zTlsfvX0m*PEN7!gIV57IS#F3Yj10X4P<$E#(&!M;DRs{^_#Q>ZYP2J_RwV}>C&(5y znXRnKYlV*>!NvXcK~p)C$O8=#MA45pnIfklAJVMDqbOE5+w>@L>8@J(cP#mtkRCq- z#6?h*p_z1NX-SHh8gb-=W$1)4g5j8dMUm57-cbmMW#~Z=lqXqfdr158y1BHcCe2)~ zrVKQ#<@rB7>1xb(Ba<s;f_S+Z_}Y@fmv$Pz9_J3U|2n|1btjRhknGh}!y{VEB)967 z3HuXD!_TQvJ_(74rN}1rZQqF1CJ&JWE`d1LvrXwok2B;Ni_ja$JSW2o;o`CJ_eO2z zKVdn{Mv8^7te@}@n#}!z&hfb;wq$$n;r(o;vDn2EGkatYmbOf#(GIXStU-8TF!6a* zB`fj-Rm_xrBLRRk<%MtJ)Co!ckIq*tW-9Ip7&}j6P##Y-5n+Mb&RSk5!PY%5060j* zoW%aIsFP&qi@)yfo)K$Oe_pD)8$dFZ??~9n>Bi~RU*>NDOAVQtQc*9AU}n7edY+Lm zylEbhL4Qf`j<B(Y^MYtkjVGJ!)M%k-L<A0nx{0wr5)^08_87Z6aAPm8c{ByBo96_q ztJO@tJ;{?Tl=Zjd;+GFfyjb4LB5<0<bBIQT6ffhu=>b5XD?7Tuxf;2+;(qKmohZUX zyT6#I_fCvE`s$_MXi1l?!KeL{#4T+VK}J!r&?bb5iz*TY!Hb&1j>%FF3ix43DKDe< zB%S`1<d*%|MIN+7e+Giv9emv*L4Ly1Iwo_H{)*%Va?H))8e9CBX=UTA2YZH4N|dZ? z6-Cs=0stRKU>e$AH9?d4blQ1YS10*`R9)P$Ergfz;55u_uP;%K?>B~;{UeBu#-xMj zkfhV8)zu7$Y~DvV$j76bdS{tj3JJ#>r(h$7Rl7^oL*-RI?(Zw!+)T5ug}_Wr;G50s z`;KZ~U9+^2v^mR8)K}Vq56gRE0KUKM?Q)WBncnV&o?^HhohjuF&kL){t?~G$-l!X` zzCLV96w|M!839S5Qt8h`Q87TH|1If&$w%I0%yt~F5#R6I0@_tsjr}z9qjX_v_iYa7 zMs1$jfCQ_?SKqw&a@>cF1WEoS5-9fLIV5tKjO>-L=v)*^LQ`-*Q6Idm@)ydH+AI|( zu}AjU*ZPI8EbGgRK{<`n#S~83lO8zpVO^P)1p7}^G$I!?X;^k*jzw*ANfshIR1-2E z8g(M6Rl`~Kg$@`p*n98E-)uw>OQz7S@nk=?atMi~4zN|pW^#mO1<d$I@nt-oIr-Ik zGdpfd_stxBw`2t>+ziQ-B563uCQS)0iKE~Nl02VQ+0hAE;!308X(wTW2P&~gw>*n` zQ)>}3B0Fqjep#eA8V(9%cCLPBb7rP7ve*7)UkpJh!h?1+TQtSio*|1%h&r^!uYdy0 zt^%FzRWd5x`*Xnm^I>73?L)-fBdwyuc$flI@Gq}={cbB+{!2T`$a4lnbT#GT+u<CZ zZP({m1hr3lK9kngk_hd>W82(vO>%D&IqCpZ&>35XAYsBYd3>(!;5Y3Oe8M1Um0uix zUsUE%V=r@YwpyTcErOJamium4IZJJRO+J=*gZr#lV&122y*Py|^u=`4jt-S$X3#0& zwY*{sXtj>lFYi6m2h(EVeOOK`#mVA;OmH{Zt`E%;>AtiTtTP$jfJKugKN1r_DN@sm z{~+M>MsILhB({RxFd^XYn^H;=G!_t!Bzs@-0~uObA7dioQc1O~87qJP+afZyOZjtf z0B7t2aWTMYYxQ+GAT_XAn>0*_h#2-GnU5ufb`#13v+2zPCJJ#kIJlr8CuLd32RkJ7 zLE$e;@&rV~%egD3MDgT}9elR;aRr_C&uOX|ofI9=ygV<IWr$J6a4cp@BhDn!1P%Ax z?*tI>6dLbLm)}}k^VVvZR3DB`p;iw@$UPwb%Gr7Kx6)vy#KF=!5pluu7f2_q-Ob}~ zfL6aS3gcwB8NZ(kZ-L}MzbSm5eFPaBaKHOT-buPi3A;RUuf2z!^@d5ZVIRzMKH+CM zCEUej$x>7Y9{R{9Mgx~5j6%07eOD;;N@VSLI3YI&&^8(xWAF%nEJ#1OJI{%0@e2~6 zDWv*9j*Fl_cbRW=xchE1o<0$w^ZrL5Z_OFrMrD0d6vxXc(<SP0JL9iGy}oR*`DIBN zi#BhBx>X{k0bE5PQk4zVtPK*`Buv4M+{?WMt>9r$E3SI85!S|Wf@FW^JsO9!+<qn2 z$|&`^w=_@Duy>YkGa1q^6LRngOxV@FaiL_w!W{{gdD7mLiHpw*|5tevapcW{ygVsQ zYcr%w(o$7t>wZFR_m;|LtZ{RZ9#XpoaqT&Eog|LI3u@}9+9bjl?6gHWi9tMh+2kMu zT75RAh2q{k1g}TqJwgy2_pgI-y2ZJUvZh6Us^rBZDkx^?*_k*ZBy*k6aK*h#6|qw8 z{cK`iT6rDY89prEnEHi!y7sW9{kJsBv*J6}gW<mROSX?VEsQd&bH$9Q$S7#P%ZJvm zEct@>^4_;SX12nfx{uLdrjGb;=}YnjwzurmJ$JRuQ=U;u+*0<O5te_h^H1$#h&?t5 zdZw|2H)n@8cHY*L@JM}rn#A3%52d8c|3smU;E+Pt=!@s)Eg|y7?k>`Rm&ccDX@a%< za5Z0DO^UzDmIAMp;|&jl4ZK7OpL};mt=Z}R9p+NO6%tm=OY@6TYzm;eGILG+H&RTd zQ-W{+(~`Cyrn9ICpDi&cG>62KRcm2P858em;X71JhpeD@o-v6`Sce6%e5;#egUfP7 z<`u#?x;oeCLBwccXDzG^dbTFbR7A$jEIIr0y3B>tvc-Lg-cDG|s9Cr(|7hmYb~R!R z(MpaVLYvFT0~51<l(?;pIU95x18o;i2In=ipo~4(L<d%uRMGQ&U!mlSSXI8TD`_Z= z7Miy}05XFEwY$|oYDL1OZz>y$|7>pnJ`omtL5dT)l%Q`8-{CKc;tWT<;ZpS?_90)! z{;>75pc9FJI3uLdB0w++B5pELf_xjF<<q<A_6^(K4bep`@*73K*7fUDX2Yx8eJqPX zD;-h-wsg%W>KUr$o%h^VZjkB^RaFAr`Sm}lTF!9_@Q}9S!y~0ut%x`f)zZ91GgVA< zojrqAic!<52M203^?B-?cATrj-iGi7Lk%4hg-Q=;?M8g|8n)r?OQ}zsgwrZ&V`)ED ziq5pA?eE7Ohr>bBbt=VqlFo@lJmKN;BhM3Y)9F?4N#cm|T0biw#un3ge(<EA)S!tE zsN3{WvD`~AXPnGBk}nBPNbsm9fl0q<>mXU$2MC{dEx^ontF+$*SDyMKh$)0}7~n?J zyG^gyIj0cW2y@!Lc*dR)MABOj&Tb`i^t?o>dIVdyzXOD`AlPwSj*9=b5F82m4L#qD ziQDeH`>ZU9oEc+(jXGUQeH-tBhctw2aUeKBE@gEQcc=WIPxvACYKDQnP`i4x<-wx8 zasydfK=F&kZ+KOAsQen_DweHzsaIUt{l~&jaW3%182@%<8g&2Renw81p8h~?u}2U{ zvbW=iP%7&=hcW74N5ZGihJFwj-g$2q;!0jt9gA#oPiH^1Mrr4J@Mk9;#HTG@Xn-jM zveM&q7KhEo*#c3TJAN0rb%^zqn*GGqyut|!_ox*2sC1-M#i_Am6*TW}Jwrl!3OcEY z9(<UmEexGrzt|o>X#9q(@JlgP+AQ3z{Oq70#-!gu4(dbx8fG}m#YjnO`1+QNg+5r7 zuX~|&f$LCUu8TFau>}`TQ!M>Cq~HwHqN5AWwK@JtT{fpkE6S5*qRJ-?R_!3$YK|CH z5T3PEg7&57iH)PdM7=x9)L6N!YzDrjTm1M*e%<aKR2q>VeT=KK6uHQfxaauf)|r9D z<dKO};flAR1bS*tem%>4oJkd!*tmXm^mKvLnuSN8pG#-Mokyhwf<IXC*e2%2uX|V8 z*_l^8+ZOBxoz!xdFg|idmVL+q=`U4W`qx5zTq9>+eVLTKF569VkY{*Oucic?jVQPl zWQxAE66P7{gAI#Y3hBOOmEpFN23i+NawwfK+TjyH{`ur8T_x2t$geZ+OLwB(Vs;=S z5gzvxMQiM1ifK9TD9hOFaTGdGU5M~(EL3&1*gflzKgZANNJ0oP%!U`R5X;ZEEgPw< zvKZ^WJ-oR-x4XQBm*dV<Xi$aneJuIL2k!N2V?WXx+TVP!`pNJUgeQGVjThl%x#L%d z!1DF5mjhM!YM61hBkRhY8J)2kW}4}{b85^z6^nrZP8~?%=EPfy8A|1|n4sY1;?4aN znn>tXDSH)$kE_l#<}8+;^eoHjdbjSdze&_L3k;`ks;-w*e5SdZ_1000<_$9CxyEoq zvvE$Ie?bjGB7_)l&3V2;yyzd-JRd{3f@*%mqYgI5ZGa={01_vBj2i+rMNI|xs!1!> z<b+HTb^_{M9Z(2`50ZNJIH8V(rO=2RAV6hYQ_D)=I>~>Mp1H7kWou%n(SO4#z#5A- zvik7rWu0?3|FzJ#|8P|r@2e6Ikm*GW(sjMC4PzCcWCXMS<qJ@<OzZ1;<X)9eOs`(l zwq7(wDSFZN65N(aI|ScW<OJbsPlgZi<I`h-ESPkbaogY;L^_>*ot6-lxepx?1C?bb z`n3_$?kOSN)<-(zMz-A!6&Z=SyrIjRVZr-ok-yAqh&>R7n=26`U!-{JMM>ZH((UC- zob4701&g&u0v@rVuo!BtzJV#cnO;rT)?q(oc=P!-^AgfU6-F~@K7^b`_t#HgwWFr& zujD2LntzZ<3WAmp+}o~yrdJNz8xP%*0LKq{kDmvt%@W`{p3)<~+m)RvC4-@>9LyDT zFLUv7cZrQISt3ek7rUR6q$z|UXU%@(P`!)~U2|j6Tu8QUWP3oCUXgiur<f7=%ZN$y zq;8t@^*4((B%2FOpZY7ANPO_UZOHXF15_bj?l-#fJg6I+g9%IICd`^<JLC$5vzb`6 z5!uV6vD_DTC&b#}*z@%z@-&>6>7L1tdy8++l;K5;VRx*E%gIG?e(=&)Fc<{iLq3jQ zYt(+ytygX$$uM#r-WKg$M)q`>;Md*Zp$6;KR5GXqQK@^7I}e<nssBWMe{o%krQ%-H z&~uk0V?QZ8itnycjMjyfbLDmEm!a1w6!Bp&%D7D((c=yhuYI``k>PI?c$Hl$R3K1x z_Lw%Ug3*9}Q8Q_&kcGKl<=*=KBejr#0COy1eFVZrtk1|}!e19{`fSyHinqt|t7yNY zFU|Po(R!x6#3@NLJY#wsH~0EGU`Y)|Ar_>!9$^0y{eI;vj`uLPd9283tMNw7=g69H zd>r>B*-_HLkswlug>C6OV&MFTez*7!(vS5`o)@ZHNaxcUHuAT!&vbK9SK&~Sh@YnL zl#pBM@ppTP?&(=S=2cmvvPJod>-Rf_cNby|<RUS`m!t&H;Y9TNUkJBpg=0juo~m)V zhD+O4rdZ8Oc<OMNZ?U@B7rvFizgBu&JxdL<KNuYUVdSgrpMuOLUR9MgSKqZ`jp#gX zk*V{)SBYp<)11>F*8i;}<R#+RfRXABpH$jX9nP?u4~94eEfN2$FM}MUO`t}0z(1|z z!db(hh%Ey{EYoFEurIjHI@}m>Q&=J^{oUh5;Fe!wPu$~idYLg1CDz)Hdx{YQjh(sS z!|UliK*8P9;$vf=dF?Wg2<tHZcX7%|9=F>-9LJ-GOy00Ow>VQ~t}KE8NLZYdU8xiw zI*yO20vsIZ3?dIYkFh|SNNCeU=h4jc-#84tVTXd<wOk_>ss*eM@2VbyEKpMLy>wNR z5A^;s^54eOw!$xQg=RGwgO9Nt^Rc26v~S*&ELit$r4*Gui-%+bP>d7nnC0NtJQT`= zRtP_Ni&QW`r%~zb`+5Rx!ZH_KI+cb7vsThH@GYgmZ$u<DIyukp^|rt6MEhHrs^^q8 zHQzY`IVw(a4&WP%Vt>%x^q4bkxCLiI8N;SN7ynVhip2>C#LRM3cTv($lykbeU&E*_ zP1=IY)tx{lAH-<{Y3gtrFF&w(`(>iIA^Uh_Wp|$b@3uF&?32=0SV9fG!%rMCB>#Tz z?fW2_p|?Pf)$bIE&>7A%T@G&iDz-UYB|QHWqNA_b;{$5Z@*J35owuZINl-pQOc={j zD;LoFRsOv(N%;lRdB<Z(2l(r$f3vvJ_VA*9gwq!PDj`mcMs(E?R|3K=H)etpo6aC; z_~%1#32-@@^?AM#PjqRSHW`&dCNBL9Nbw5`M+5GHA*ln}Eqbvc`XeD0!8hb^)0o>Y zKY<>XD!mI?+o)4XzlOd2;Z`<rqcnv@52flxa}|fopPdZ)HMjIWpmtwW7c#$u;3n(x z-!Ix}2#n>J`lAN-Ks8hK()P;1>D9My-PR(!*xKBQt{sF{6art1rR*@pDbUoC(MD$~ zhLdok)<`d<{6H712P3^no^hq-bW;$bf*k@rG%XT9ppUvT4R@H14_PA}d&FR6t-Y`i z_9nbn@w$?=iYvZ@b4;-g<?IT3g7O5;BF5>X9F7;dqGf|rc&NYS^$S%zj%{g7jk*g| zuq4f?9~RzE&0Y1iQtfUvE<$+)I^D?A?_#uB;nxV&)z9H_)fh@^3b!wIo(iO71oJ7` zlVC_uQ?xqi5eA>E5QP6l73hI^6HZtCd#o0JCfTU$);?rI1ldg`u+`#3;bAb}t>ka* z$KQ2!L^xp;r6|{NY^UUYKA~^{A%97r`|wsl$rjUUTawRsI(z=i@%M}wW2}wrFL<@< zWew=t)lsaKhSKNFqqCPr>H%-I^3AAUYgV=ZpIS%F-0<pWa8+sUxKQEP-(*qD4SV)W zR!2i)Rj9Z!?~um~So(2-zb@__ZN#D)wl=?_iQAM5(RLe_);^@&c$S@`pVV8Tam*>; zJFgOleCdnTZW!>9jcML5eT#)10vjEdu|rAuz=u<ok4zy@x0ngpcg}K)@C2<lifK^F zo6q~Mkh=oJjM9uW4(VS~tIn!(zLArou#XSg(}gjMR)E5y`dgDpd=dTeU+YRbG0<jk zRD8MPg>(EI7$CYDrR{WT`m?qbUB~Iwu_WA$@SQnri!3^~*GMv&5k)N{3q6B-CZ4y% zqtXxN1J{ho*IFRI7EWMu@3snx)iAy@q?LnMs&OOVbk7Eyw&05-8s!hMH5jNcWy~P4 z_n<zEQr*x5mUOi}-y@c8{hJuCbRyeAqmGFE-UG^o;~2&m<Rq5|UMgG2vLus#NQ93H zGGxYg-PcqCVjO1}ZtntV_Zg8tHa&*N?U;@X=H5=#^&A<oUadN~C&MmbtWs$<B^~=9 zNV?>En|!^mg)H)T{BuhD+X#WapnJL-e?g%oh7vAS$1fCbAC911b=AF#Kd{4fc%z5> z7{oNY(d|_@ZR@hK65Ei>Zfb+(XU{3Rz|&;9VyfW2G&gmyKK_PKAMRe*7#?r0%G#*Q zfc=_M6rT`>#-u!`GQrVKUPZ}8xdAt;)immahb-ISIbFc2Smu#SeGwCnc_pAi@ME4R zQ#sE=5<@7O<E#jB^E9Ho^|xcwy$>uhtA8jVjKjTGD0>6R?exavQ^)!D<B3MVj3={J zQ~RDYj{Lc<NvJ<0`7%$D==()X+oHIx8;#rkS)6cPyDW&{f+R1nl&!Zp*OZ^ss~@EQ zn;5!seswG!^o4@1A|H2*o$XJYEvc(iMLaZUgZnDj!Jg*{>+kfFBG1=WKriknRXfIb zF?#;(y*W3W1B3K6nYvoFhg3ykymE-l=kDSAOvJB?X>z4OH&70{5DQV{(@_sQ{p_1h z7Uri*X1Z;6!CT>PWOHFrl8VP0gYRM_LGZOP*|VK&m)@Is7_t^wfhj|&8}-?D@cy5m z3}YB=Y_ob`DbpgH7obX2{*yn$C=d<2G%PjFgY?O_W&^TC1bSq*jz0%m?j;CwxFr;Y zFtx$lT?7V_1XvA3WBzFFMpAODB~t*LN1@GD+w_iq<<jHe8Wd<;qD`YNdQeFie^yrn zH)j|)Qqy?~{0%(%BDg|O3<4wh*bMLrMc7N^Z8Eo=*>dP6y=>HXNFxy)=l=X%X7sMf z-p3vM1#dtvZ2TCi54Ye3^{3SPJZV}fdku<use6&V@a4&pZPHlVH-xhG<a~S+sm=56 z3?x_r{D((hliIhdPHldlr3U)ON<Ggb{em!BHT+~#*(q3!XrZBEsSBcOh9lZ;go|%> zHo~LPy{-|FU$xjiAXWq)Gi7>d@qZn%5D+`+<>rGU?2?Ho%FxUxqNdQ6>HCY3`Q9Z{ zj?m-R>5bsG-r_qn0ymkwVDz%{Kvh~B3<)7FzSs=&Efx!KB%E$45EF!X#C>?SyN?F! zA)vP7a+F<=Vu%hunOVpqkkR)>eZFDc&o_-g6=8lMHM@*3!lVD2SKH8ekwC-b{=q;l z=UMdbij0$rI%4`h)tmm3WOZnycURDby3KT#Be?6EGl^GQIjJiD`K;S(`LriqQ+F6o z7=_4_4B=y-vcrbYNKE0Y6rs8p|8zp0ITH)VEoFvSDB0W-eD9j585imB+>Fnh@4wiA z{^pgpaVwD3Fy>57@SsdnbEM32^|yQ9S_!fuAR{FZ9R+stB*o?NkUf-ZxHtiSytCGu z`+G+c#K)X(m7$xt5Xv70rxGg~vU95e<&F9D*WKkpqy!<<TJZbV4VM`M3MV~lug*ca ztrdjfdfl#LQI%OVdXj7=El|AOR<6>K$H_p3o^Wm%z%^^Sv0C<g2fy~+aSiJpno2-s z+b@HK`W@<9tJ}4T4~MQgtMPuBRcq2&_v1%|7NnWi>$#}wZy$)45DKYL*(xQ~c&~LM zNW=|v#phZH<jG;F7OO;u_m38yoR_T$;I;O_GB67|CQ`lA@V*y~P_H(Q+5Nh1g#jHD zzxK7%wQAQ-`ZGfV@CP@ziP>z{xc469Bf|+|Ro;bGK)u5j53^yF9@&GKhIfo4ohK`N z-sa{>V=VrhhpS((N*%;9<=ySnGsCZr9Qo|rjbb5D2%&`BZ+jKrOs&HGKKB#M$?9U} z9SkipyU!f`#9wRr+PolJzF?QRiv7%X`A)LH0d6MjAgXZHCmev52|E<Q7Bx?x*sfIm z2m;3-KZnV>Nx-z9Y$(@{J=4Gu2oAM0l%+|bC0*Q+e5*s(WAtXbf!I79!vwRHM)Ulj zrKe3brCYy37bQEs))<$zb$OuwF;x<m_PLA9hhf$&cqUrq(lMdVYSU<kV$JJ+c!bsk zMLIDkPNK;`MmV-*5r<!Hp~S1v6?XE$6B4vT?Q~9k#0w#5wYjbowy@QBt8|@_l{i=O zbfLD31S8W`Wl@n;Td6WAVQU;Hy1L#(4Ktg)W3rZxs@IYU21tzUaW#`zy!1{|4sdz+ zVhN+-dEuYz=PhW#+e$A&2j9O^$<8!!-^!+2b3=G&ko==aWZ$rwQdWmMINk|cV6u?E z(fkt|0af|Ab?t(BDgLzl*(cTMoN<!OgNKMaV8tWknS}SI5NG?=n#+TmoOqpd-uC0= ztkB7g*2eu21*cP)_I%`;HlG36oU~}l+dDT+B%V#Vb3_TYGt<#Ybz|!1vcCLp?~!$X z{`HII=@N#Mo@RuzF!+j1c)GA@jPs&S)OFT7CzJ}&L=|VRj|Xyu1l0uR*<!G+JTYH9 z=s0sO<->yNQWs7-rh8tGIn}98jvOxd!d@f6^-{GVdT)-DZp$IkeC~;psK+!lOP{dw zd@xZQgq~U5@%fMqpB$VO(BX?MtK4^9E#q544uLE@>jcY{gq23O<FfY6_~=kB#5R<g zZEnT^0J#gs7KOmrByH=c;O<0um`}MY4MA$ok;uwdUysnBf>ChMJ3>O<Z@Ktn2ft9| ze!sP(I>_HxyB`P7=9aWWqTXQn?I0>4n_aMx`&3WR5?zFd&4_+$5yjzL+JrtFM3Tlz zi&gHyoFmIQgWzU1tIGpR<7yH{#$mRz>~yr*egINH1#Dm<R?lyb-%p|DUG_U^s907? z`^DcDQa3p8SpQ_3I?0ELA5na8rc#&rGsB>0l9nd?#16n*&O=gsjO>8Em_k8I{aR&j zBH{_7%6xjTu^g|)IaYhIOPYhN=GwYGCJUy>SCpj6Q;*V!&od4locf4@^0Wd~U|*i! z7@ivHSUFc$Btl}s1-*&;OAF;u*gVFBK>4oWF3O$7%lyUhEBVY(4*eV_nZ@w;lu6ex zA&!B;<e=d#&Sw(By+xYr$ZY<y&4|QZLF(o1kQioojZ#e>v+14Hkp~N?<P=!W<kj!# zu^Edqv70K8bs<NCKAD`c-$;dgII#I(MS^SZGVORt{3w-3&JBC9F3@k}TEA)gQU2X~ zHlmugqJJ}P=xAO5d(sL{We^C$w6`9zPn{eg;dfw1<XcirDL2Q%a@p_r^}-EZoV6!( zS<a;w!L2m3r$~Gl?}zj;ULIQb+2$gSF`u?y;#>|(3^R+J*@D^S#w#tW%j8d?5ls#4 zK5F_NJ6PHGrCUI6vTP!0FNq9IPTPapu1j_}K!_5gc!#B>V>PyLdFkT9tdoH^XrF!s zk_WD#CLH`0=4$c#9rOwrTFY2X^AUi^Kir{`l!*z337*y64~9XohQa7fy*0?4JvU6b z`CYfXUU0<$ha>p9U3GYk{vzK8j?0;~@{IFW*HU*5E_I&^wePbzZ|?QFVO{M=fQl7) z)BK;cP5GG+5e+TnUww~BNzDlmA5Z3z+1y>~*QGtj`}v&8H2h-*Ng`PW6;DAY;#OFS z6WY`yC5G2i)wMB!dsEI&bhskq9Rr+e1EmA|%b0l!aTd`js?%or)1TVg=dX(|I4BF# z)Yr#WhU^k8FJ!8}Z}@6-Yo6&f0fm0<sUy&X74+O$cm52fX1JN5OkY=*iF%-+QjGBp z{0yz<*1WV)U};#t`UjJVXc`4RZu*=~*aCt)r6~dwz|gx;_u~a}s95<ccQr_I?9esd zsP`kxL)xzuP<|Fdn3n5m2a!}Ac;TZsLGZ=&$5@keGorkGl8Ar2)`XB|I&Py$2qwDa zFd`G(YJcks1}!zQ99M;e+Xu+>t$N4vGVLtmc@w_az}lpKr?oMxlRwlk@`pF_K4y8S zJ9Mp|@aTC#5h5pN(8gYGFlgR4a%oNfNHEBl=M-B|%9E0cgKJ%BcZ_X~`6D4!b_S2F z#gkF7<=PU7n(wO<GZT$!ypUb1KFwp;WaapB@20JtYDykd_8}W7lNVES?<jfjqiSFg zj@Cl^Ft`JX06YY?wf5?30A?pD>ZkGy81K|bu-i}F7!`qq@{{tY{U4D8C82i(td7)f zpV3TZtgyjWSW~klX5XgrJJoy|79(8})wZZJN?4ibspG`ZIt2A*5tLi9juiV4KUIF= zW4-zRdnZdZ8;zY#vc5&%b$ZIuF1kaYpr6AXK;Pu}6?nDhZJ?FZry@nR0%w0$5LatO zW<v!Xb2wkK;ZIZVOngK=8H?UPUiXz8et3m?EYOq$m($^J7^U~se{v>!&Ac_TNJU9w z+x_QWSPqA86h#OYsr-Uc2bnEntZho=U<9m_aR4ewM$L%M*^^$6$D3N%yFY>Fn@)5O zQSSAeAFnxx%yTD>34%MxZc0#B6d(2eBpW|5-Z|oFl6~j0VQ6@>Rbri&S5sg?4<f8( zG?CE2qh&e{+lrv{mhE_oj<14;(P9zYjM{rZkLWfJU)mo%x&q-#({p6F$G;7Ti%87| z1;gPUUi%*xVb=OLImJYOBmtN)_PV^J7!MNflj_bjnD<)v(%ixEa5itPUJFJi;Z%mf zZ-II{tggO0E%PTP>O#vWm_6qS`&*7M5V=OiTX3Uiq|1uotqY;M!UmZURyX;mnbMjb z;{YU|KH+iV;L5pTb{QR7Q}-fWQyRKnF0%x0tj8*GYOI7T*|T4IPO@RQtMS??nIzg- zQ+APUwUgCpJlmzu1o&XS{t=yWf=C45Ln*FDn>Pb<vC$YJ;(`8|Z=_08#;(Pej3-gM zofu<+mO)Rm>{dKB=Mv(zUnnhSW+&Op8OHck0+WWBs6P;VVSJSWKr3){@$bd(=eeSh zeoh<V>Qu1UNDYb`N<49oQFXAM>N(-)r|*K6q4J1(t*bkjysI?f&ubRWSZK4K)@%gE zN^OTs|6##x;<=xho+plHgu}s^LDXeF>FzIwN6MOcKI?RC3vxUUr+6DCFeeNRTL0Qi z<(txr;or-?3-#SJqNKo#_?VSkxiJ6D+fbQ3H~~H<p;kEVQP1wTnB0KQP=--<v+AF_ z@g%2*`EWi|(lbjN4{5iyA0^6Z!@^AM{}-tpvy1&`<hlJ*ESmC3F-6E>IQH=Me5__b zb^~i!I6<m#;LSeiW0q!^=W)&4m`e~K7N;ka+{;D+X`WKR_Z<edj5Ts?$fPsJRMUXf zF_f=y#WC%vm)C&0IR$BRdw@~~Cx7VldyjLo1WsJ36wlkTbW^qTSUVcRQ{i367y9W> z%EFw*_c*?n%37u-(LwWZ#$oxMnEI5>O2)3%thLF*7~vnzXFbxnI3FZl4<50plUS32 zzM$B(-V@qg#_zqT-3yixYqBJaZAv|Gqd(J8v2clCF|JGv$Nb{+KdG>Onp*Jgll)e! z4cU~o4qvll&%us1+W~b;f^NmP27F%@t4S*MV(NU8W&$}_8R#^S*S1*sU|UY9LT35- z2&T9nqlj@LG<WPHQdN}3<Iji~fHN)N;5-<LmmfrhYd$2eHDFWn$8Uizh=kq_3i;s} zW7aMhX~iDdr&OIlP}<8h@SDD`Cd6^50fOLf;b@Yxk%9A1jl$esGCQ_h?O)4RW>tpE ziD=F-(CPpm#65ONZW`uLcgy3euCMAZX?_X|dm?K>U-X=tJqgqJrW~>fB&A9O3hZMP ziCIyDgOt>m7X@aUg%Y>r6&e4)^a<zDVY@jRUYv39;PT(}dmk=B7|gWRU?*4Q-q~5d zpW}MeqXuY%5M-8DH8cgbVA(B<mtdEVtlpFKqD4p5zjWH_iG-l^^bq+l7|TU)h1tsx zyWOcz_{e+kn}XxOqrf;^&sqAMB{s#+C#Z^R0b|D9h5uH4&aFxj4VQ9x#@TU}rdOqV z36nQ$$~R;5=jOx&U(!#14kBCARd8j|Zr;E*Am_jT8Z+dQb&_ueZR+m~Y@2kIZ%2}| zPwG1S=EGB^t5qzS8VwPQ&7OJbT@$pOJ*ajHN9@iO8{31pTX3-RJO40GLJ&LSpjxd| z>s7?E1yjP!A)0dDh5W5{nHgtr!jGZI^%!Y;+qP!1QF@vo7mm;%;fLr{m9J3G_#W2J zwj7@=<`q-hBk4INib4^XvC~Szx!|{U%;WLs4ujulYnF<A%N_)AiCtsdgKTx6=KEUX zb+GkiM$XIa;mmzl#E;y^#A`n;Qz(hjR`+b4qT<O3bw&yvqmMvR#<N!j870__o<XEH z1Hv`X$ksqgG!ZsJh#@{&NITXpB>AyuUP#)B)@xp+E%qQ%j=TBYz_**)jOz-|aA0^Z zz6Q%rQSHV!VPaO&VyKFsf_;W((OqjX-Nx<mlzbsPY2=x}2_BwC`p|!2(<2024BU{9 z`%*2_Q?uS=Rn;=<a&kSwF7i%(G7lg`WEJ2pIo|AU>p#q%5wfrB6%WiT21nGBcMl?a zdwsq%IX&0~M1+#)-(iY6%KIu*Dn}B1%H$k#Zm3O3w#ycKxf6Vn+6K;FDWi3wqQSqw zEGK2UV6m=j3bA2e_!}Q~5Z-1~3}pJn;FVb|Re5ELRW>5P85+iMz(_FZaaqKL)M?Nu zI_VTqfuqn+v>atbMD<M~IGDN)rAd08*f~5BE0!{$xIl7CtSS`f2(;!TiJxU18J;dx z&WlAm?OfYI>@B(PEyKd5L-d6rZ;b!dc7nYZgjL_U)n~`DYS8rkPGe;<vNISb#KYMj zzMvU6#tRxAs&0M)?eCd-N+;G~{(2qHleFH?E!{!CulgNar)97IA#tS11x4qmR72~c zwnv0M%1!#T!IZlh+o^Q?30jrnW}-S|ugXYJ?tB_rBKfZlyIbCHN`k7l$ssS_Z}pO^ z(CYBKC~{+s;4>kWleOGgfd2lQbe@XzH0Tx;h-gw?WA;H?C{8Dlq8^XrztxFbEgVnq zgNc%|1M{lGbma<mu$L4I%DyR^{<nE>&#j3F1bX$NVc4TYxQuC<M5AN61MaK_9iR|< zzDqvfX7QvamaXarPqX{#1E5M=R+6nhn>2rFB0KrXouJ4bOmulnrBtso>(uxw359~( zw{noK1fSA$k(cqTn_t6Yd~*^hVl0L_{x}cG1w=2a_CYf(VB<$;bzKD<#J6K!YQRxm zbdR;xLpxr6ReOuakupSF7!s_Q@qYJoF-$ixQ?zra`)T#J-pc8$4E+o(Z(7SM_)JMZ za%awP%T@#Dvs^o2-_!@`Ou(EbyNq&6dB1?5E7t=IX8o5H75jDD#Yhl$S`}fVrX9PU za&06nI8+#F;IO^$_%>mnb{um$S>RX%e>JFq>nM#j{<|J-jM}@w-fhKJBxM<s5mq5c zlY#9)7-$#s17<!oV_@SQqIdTZc};?)spv~X2b2*`ieop4jq%ELv1%Wb=GX$R%1FTS zf#yD&M)>!13b=_+qrkb@_)C(JMcQvqZcKhS1)<dz@?e=l;#xYfHu&qIIz>ie^-omk z1FgvrWd>)b{9b(Yj>5k%N`FAgx<MWZ?D+l8sn%GOJ^z@Y7~dk)GIfSzyY;YshF3bW zM7i=+5FrMP`Joc2%)AbTYIg=yX#=ph><U1LsOJRTQP0wBq6e=NLv3Xv6<1Bhs^g?H zzg*DcWEY4B<9J^!zB&K`X@?Z|L<IC6?_V$5?{wWdQ#vX6uycwK=*!An6JZ}Ic&CQ@ zYCM{PTNc5sGvqRTe?M!(2|a5x21DbpQHZ(_UI}IW{Qd^okuxNG1W)FC`)T%7RP68o z-VclI>B}cEBu!-|sj2%W_h{L`Jl=cR$Uj2X!hiVH8W9s<ZEzu*iSfLF76dUX&y}<u zN<{rrw7;345K!zN3Z<Oz2%96)PrR>o-o%q$mymjHD>xEkQC?tu>ZxH(uz4qu`^MrU zdb%9E7(nR*R!-`vc-tC(=`qfInTGlITy55!Q1=^!f6@`+SO$Zpl5x4=7S$U{3O<)0 zvG=By1W%cuM+iR(HbOuuAW1O$R9hw55taV?lP~%3HG|qwgR0sitAU1%HrngMI=mk4 zbGFKO6|4|49<fp#NQ-iH@tYc%+1llcK({<oH_kxi8CnJJ;-8jQlNxE(Uns-Pc|wLY z6y~gbDPisvWGCc03RVI^jUVS3jjVH*TF$Y#59X!c5ceN(8yU!d#$Ug$uYw~#1Ju#n z&e#a^zm1LLkNkjFWOxpIXd3a9xVZ>L4G;JJWsC)eY%Z)Mhup}*#VP`O-0K+Zl;hYs zs;ThsTu82?5A{j;Kx~~R+k(u3#{uJJPz_<OSb<ess3JayJS@W2lpCEq&-o<qjQ#d+ z-LdP?jZt!!V;dCKaT^3aWEfyN?Ci<6_;-r)vNnn#`C$<PU7--$&omI5T!4o0jHV>p z=y9VnFI0Yri8_kNm3h4vCKU6%R!`b$Kpm8j-p|<|STYtC5Vuh-wvCGlf6OLllBYGz z9}&UeHHLc>Ub57u37s~h_N;JoXC)GUwE8sp@n4N!7C>^3#BJBCKIv=88AP-6eIQZv z+NWUqPNTa~nvsxyE8>I>qv0XI^rV;=KGXxz-p&th%X3SPcDCngT;I-WkC!D6sTMM% zJiAfpHs55lg*c+VOqgwu`slb*HA*sr3t)o!K%wN8acXsJvn-C7zxRqg)$dwe>+8C( zBD~7oSrF69aNc(!ti<QBo(ScdufP5)MnrQAcH}of8IL{-pJM=CW1?M#4`&Q}09yaL z^#LN=grn(B6~a5%Jbn5c2V3I3V|Gw3gx)I$5&iMkMsudbFiF4dWU#599p&4R445}M z754O1Ek9H8==DX>LRd{^+v^X+M9uGNrr-R*=d?R{i#mtv0Vdkl1`gSZM3kXO7p<kS zVDYXhky6F!g1oz#?Ff?3SiLy1dj2hS+f;uTIo)lDi@vY1X^w75b1tK7V$Nf35`2T` z*r0A9;`#|Fd>TisF=UQFuaLtcZk^wEjUqY90Cz4SLr+j8O<r9#sKgDfV6nE7@DS7C z2p8FT{soe^09Le?TCBN~oE$0G5l|mz*e%zzhquk<L)SnJ%Ud7gYtle`#~JZ$oFnRY zGL6|8<(t$@^0P~xU}1JLs0lx6D)EjqhcL>3<y;k4@&bq3;)j&{q(b?QG~U$DH4HQb zcdW)gXz0HzrD{<?wa{&Ku3W+ov`&wCoV#wxcjqcI3hq!4yvSeH*)CcPXl`IZxn+G) zD6d0Go5#2ks9r~7xD>)e;p>wy=Ldhx^IUh}B4ic9J~Qpv?;iO4q;BcGe>@W>rwh*0 z|5Qd%<I{CYbh-hhT726=^7%$`D!g(yMYQW#DX+0VtWPaY?&26(q=0W<MKpBE;ac5< zKg?_6fFT;TSGF>t?|W0_f#9AlL#bW6@VlOYt$1I~7xwp7c|6;nhwP)@gLD`zm1RV| z6Yz5n8v4C~?ZbO;#wQl*ED1hH!n}iNx_`zZN-*r`;M!g;{BoySe!8IPQWh%PrL5zE z*MCH}$Z+?9l68@SgB9h9gF;n&ujET4(Xa&lExJ=qF36unFN-3Q3Lyfbi8?izG@~m1 zC5YYKyWLM#5=?a{<GX5tPD(m6*W$?k+>_`b^lKKZJxPd(ICP*MPe4?D|AjMMdt={# zG%+IH!VO@!BKfW)D!TZSAA4NL2GsWkQ%Je$NO-#JroHM<?mLGu%tYiLl)F<kPZOL? z|B4NAy(_8`%aL<k5bt1;sP6R8F;HYj(=xQ-fLz))Qd%FL^a-au5*@8jxm$RJD<Sq- z#_lS(%9@*MJUz){b?@M#w6_o;(A=SYmqD@;5*c`99om%yH4bKfS+4X%%=Af$j-5NR zUf&%UThdspdbaytDM@3~j7_gzoo5fr!l&VVIY$~Gc5WMf%;$av--dc1>1<4C@;hOV zkfUm5aABz#o-B@4iwO4)Py9DJ+w0E%$dX3kqYg4NKQeHh(mN;8;Ac8y_|YQElZ~OM zm}E{Xc;&Pt?oxV}Cu-oRQBM#!f!flGJv3<%5?;?Zrr}~fvNIce!e!RV#<x&szGfkb z6QRqChlCvX1Re=`K8^#plrKiP-()QzTzw!>9$24E=yN)i{pX23zfW)Q2QR8jORa<q zTMHJiX!yANmTu;JZHV$ChcRZO^h~8e7S?N$pHPc5xr{WM6}n>E3Ldw9>TFKsxnqHX zY%A(_CAUQkbDVum5_zpjB6li#rfEw=NpUyMvq17KH++dqeFS&1rNUo((E~5-s=y(; zxn<3=RDHspky;@NMI4Ocnnv^4W=+YAA>&%J#II}7Q9UZh)H!XD6uKN5$6y`tZ)7D+ z{xhg(r14_wkG25b*}s-llFC^}@LP>!ho}BtIQ%C|^w8*rh)i4yj=bQMc20utU&Jl5 z_drk)kz3a+!)kMkK$}5+2|_sQTU(La!eoK*CXF<AB-H7@)na3acE$-)tvm)+(kt`d zi=v9s4`Vm%>az9miUinA6OR@=zT|_>RtiuL@Y@z7Zd&I@26neOa0F`p-Wr*mmwve= zE?I{9T>X2Y&(hc(GLOgL(c7?yoezcc@44*<4HNWc_AQ@^#Z~hd{R#g`l8Tsi3%MfN zldO0%4s*t{sDuDiRKmk6Es9k9Uj>|^xv^p^&QN|aF_|LsQ~m*I{hQ#i!O3@dqQYM} zt8Juc%Ag<K`>;-#xP%Yf_#ZR_8!vQj(tI3f2_u)>!g<$3SG#rRZA}Q~m8HkrGdL!= zI(@4atoiF8*&0?By^71|6yI-Sn*FV*9=07a)MLL>{!H<8{h`FcWcv38$}Cq!IgV?3 za;K$sloKb3>?n##FW6>XgZVjhdf3H7gq=b9JR<}O43um2eMxMe7eZp4e^xo(^nstM zS@kbOf_jN+uRgwEyn>S*QAQ;nt+J(Tv_r~Woo%@?S1wFx{1_r8tqE6Yj(cbmPV9(3 zY*eHV!!xO(?kZ|cP=zz8x9Bj=*jfU>KJ^Pp<{${Cz890&FPcs~L<-ji!-~_*lu3qg zxeKo84v!y(O4wLzABjyvoOp7fd+14MOQ)Eerv*>8UqVAbS1EWkKL2$-RRf<wXlIQp zk3nHcRou5g#Mj`R%FYlp&h2KBZ+9@k<6ly;J=zTJKhnqNk97`qmi&HI#WcCi7L;iC zlgp|uXiD@1$}wP>;<qZ`uPe8{@e%MkHBmH>nm&)1!)#qvp*i&{ZWsL9dYQ#kyi5FD zi7E?VQ_h$_(Q(qySe8!qBVg#rB<&{2(47wWe#gB5-lMG2VSHBc!K-COG`3UR&%Hde zlI8NMf65nSo;(YT<ENb1=~$SGw&Giiup%}3EzU~A2f@u5Cmr0&>UwpP(Fp2PWll~w z1PnZ$^FT`eE$e)Ws(rrMHc+jmD5*;^<s)u~8$Bn=_4KQZ<LUbM_aMa_{*gq_Ui!~V zNcYUNZMhn1B04(FCLM?C<#<wJZl4WM*_FEm1XG*~MT}3W&5F0nrtaRAt>G~h%|g<t z2bnSb6naYv)77ZG6RHw%5Q>uzG4qoYhWo#gLsLm;8pdz(d6&6^qjf8$?4{w4Ig1@5 zf7oF&m(nsy5-@s(a>(op*)cm$=lA^YC9x)AqwGzv69Wh66ve6tj}Sgmh1yfAk?~fd zRLdpOVg{stW4N9@#q4AWTT$vQQjN(n`hE29`|l*r6RhhyQR{%#GjO(qaW?0^jKcRH zB`hnt26?j0kDonlha#l8n}z%p64U@}O;N{Wxl7>M`6<@S^)-MjtqG(To@mCM5jOsy zM8LzddCXCG5HVGY34nA!N96@$f}<_@e62N_c$JdE;NM&F)d}OUWc1ZDv6+$D){5oq z9=SOt`C!WZN;pY0`DtZY4}Q8L-`y74DWswHLl%^-UV^~DO-z>~AZt%-Yru`IhaqCS zafzbh=^nqRD$+aWYGLgVz7Jw)&KW;2!(s5ke*jS&M|?L0a2MxTxKRB3jLP1LO(L<? zu)VEOnkpqt7i#$9l{`=3)l!HI>BDDonQuKPu`E$Wg6em{P#AOYVnc{1<VDx(dz?R{ z3UhpHM53zpYlM<N`JENYS#labF2~fMfC}2uAAazeDhg^v`rwaK@*fR#eP^BAqk^7P z2Okj^qRL53Vp4om4m_jIXL%&D5{k03Y;)&3r*A&Qkf3<tqxeEY4QpsFsUZKBbXF8L zMg@)<PF<d_1x;Fk{9gb#K*zrg2QWi|2K|X_ePXAlWls?3=qT0^ny#Xxyh^BBE`JQ^ z;3(OCGyJ3}M$bA`s^K@O-tnW{`XA)7mEO}65REB#0(>)dt_hRVHE!SUW-Fz`Nh60H z#SRjXQ+IVV8DDlkTyx4y3O@o;a~tSkhRjQl$D^Tqn5$8+x9SrfNW8EDQ5K%Epv+DY z^%uqD*cb=T_a${|qABXY1zWRld}Mj3EKaRv*s*)6B_MJckfbQ^-cYsTX<HP?vId!p zUnAO77K*b<>kNY_trKskvPkC+@&1VJ_JuxF4zc?>1XlMoH2LjxmpYVn!;#_vO3I=o z!$;oNLTwQD^<OtT!8}E3oO-je^K>cgwjs%{&-Q6>Pu_B)r-^k$qTf{CeB^!eeZj~w zFD>SL{EBVuLgW!U8Ygy>-eOV4f{A6dRZE0>5;NCrob@3d@uWo7%~JEk(6f%%KNq6O z?R}TG+=&LWJ%j%_nZQ<hP%CdS-9Yit(M<%q?@HNS=xFfaf5wXxK7&h!DOQve(htU` zN&oTe$a#92t%Ucgr;P+}Cfj#|VJjrYt~>lNFUY3WNSNP>^<0T=?lvS2s{6mM&kFL> zO#DotOsjGhgwke&=EFovWNrf<dlb(orE6oKsOB9*b={qlB{~`ib5Z}1|JIru-m*%A zWLn(hNn$l6%scVVAwy3muf76VqXT{I<%ybb{7r{0zh}|W%8J>Qh@LZq^_}QNOj55W z(ZDy_Mef4cMc&A}$kMiz)kT&FCsN?KZI&3``*j)kbvQnfYLygf8cnQqFz>L_7f!m# zQB+#yU?G|;$Jjhj^f`N8Uukmnlq&N~t-~(%i#k$mKeMbA8m%t?FOT2&3Tot6%?7lp zC^Ps}IO`htQuYa1HaLZCplYMR%bXzJ57F&uiwc)<x;renOWf!|N2l0Krbd*gMAA~5 zeE@<(K~*Qi@9Ohe_7=8lZq|7GE!^;riaxyHa`Ax|$jm>feiyMag0`o$S55-7Q>6%M zqJ_XMc{blR6?7qF{&HEKDa;gn#J;tDlfM+yzO#joco*!sS|MNAOYmexX3<BjMts#U zsGu+FvZaLFT$ljN!DSCzvrLD`{+tuRFRannl+y>x9)-m3C3~N)u<fH(*WuRK_CsU5 z75eKw0jPx`MT8N)XYO-f_k0~mnvT0wPHUkR$1_@BPK^FNNh|_n@6XVfOfnYXhAnz7 zJp1h*uj%wgh=PzpLT$)2m~YmWy;k!nS=GH(4p5JRSj!3e7&?zjQKVSd;-$^XJ*td{ z!y5sghvc3Srt+vLQo5z@g@n~mKW5Ed(5jaWH{6IU@3uY=VE@eENGev;1y<en2I0)0 zl<!<Q#<a59dfAJk3f;Qy0JFCqShxJKJ3D_A{8_N%{nT?+x`z3pJdfsm-Yx1lJgVc8 z4?^FEMJ_is?8A>ws3Si>5!4qwuue10e0VY=q5JX{$R*m+9dI1QP#Jypd3r}OwT7^> z%CN>Muzb<_RyBZECWj`~GC##C1i#RbG!%2FYL7&jy_#7^sbk4rGq~j_TaVH<Ka$)V z*z?j-T~q=hKLhnH2V%z-rXu_ec0p9`1BC>$TXASM;C*p@q3K~|d)$?g$LfW@&pOzK z4}%?ffx2E$O;F}hZzk--dP(Gdqg#l8QiIY~Z>!ONwY93uHQMWMg4jA4em`AC`UUaT zf5fnzKJ!9u%KH$|T_HYl>DX^sy(DhvxXWn+AWW2PA#q+LB$GY?Dd@#SF>#?e39`7A zf_wZC3E*C8K9K7XxF1!VtBd1c2RH8}ZGH?g3RAX5(RZ`z*m7M&UJZPh%nxhEZ*XmX zE0>Q-OiXxqs$+42>-N+BUDtOf6>#tD)Zv9G8~H0=)#zBvY=;JlUU_VH88oso#{jWT z-$E8bc1zOh{u<vXa<E_~&Ok;(KMW%wYxu_>-L28NmmXM(qQSl0m7k_3Yphne^*QzM zwnI(oB>OcgZ;j3-)2J-a4yo-|vAic0t@K$Itay{dDAVsE4XIfg8ByjQFJVVOn<&S{ zVf3z%eCgrzqN9i#n0YWgf;<Hk*e>3+%2j~A8y1XpRcsq`dUha5{8cPS!oXg)O#1-s z=u>?bNQr%0RGljH5SK^Scp{dOIROE#W-E4^UhTM!bQqrDAnCcjvc;U#&c0?qCWUpa z4(5q=o!>1KhLb6|ZPs$MDWI|)1<gDU?O`J!$xNt7gL5NnioMC3f=r*m617F)sxm)s z38j%Y2f~CauXj;C@1*mr{k)btcRcu2(*>qaCZ^DHD+BXaTNhAy>XiywM3VkrW)&eu zfd^@XYUan9*NZV=<nRO!aum}Q)lpq^pIda*gwAlF5&ORgL0_$gK(APw=R?iiBamC! zt<nS>6W%Y{fP~hQUCD%Zqwzp}7(vxln~D@`ZE)WU`OHKy<UpL=4dk{nJbe+#jox#T zh~q5i|LRJ!YYDwBv$nZ$OK*Odg**P{*zfe_d)8aNxK0c*glPL?t5<t1Qr_GTA%Roz zzG^2YS|r2GL=$3y8o}kt`@jax7JK$l&&xk-<Jtz1BEHp?FWZyAE?IXt)%LlvgA^1I z>WknIU3Meb*3$dn*-o33Q2+#ku6!{fLtxwrh5j%A%)^Jb0~){mc@--}73$a~Kr@Jf zf$HtfZI`(`jYDr*=<E?7V2xQ32<s*#pQnc2%K%i0UY2ISOi8Kxm3I3F8?hp+oFa=a zhsG1hCNz<b2$_sJDFgb(wh#5b4d5-&K)cJeOm>U@x%)ic>Il;V1d_|30ociY+BoMx zM%;$W2<+5&7SKHHcb$oQQ8$ZgEcW|D-xsC-ZJxk%Vzx;V<5ULZ)m30jgoU?r4xb58 zz6FT6{)*yp$2Y!|sNd+Mab6>MUjSctUka^?Ggmz-X?Q&kI-OUa6gye8j|=$jYK>SL zh)H}J9t^u<{J9l;p#P5$q)TzhVTjT9f;y|(*||=hBQ<(0u?+XYnk<DYx@N1%<Xz2m zmjI9RaYa}ZBar4=RmwQuRqI*?SsoRo$0Z|qjDM)_q^pZ4P}|2Z|7URI4#E|!W^1Pj z78m{cVfYN@jeOCxTPaLWx?9__FA~PRyXR<PjT#wgv#jUf8U;Siom->xiEGCTl)<S< zwJGvI3ketVcbF9EUZQlS-t$7RNLZ4n=LegcT%jMhYuhGIMdhQz%K(;G!Vo%5>PnN} zyU>FCZ`W(55z57*_S~Y8!u_}-hTEc!a{W-d!u2=ZpiKJIK-qy2SyD`^`n<L*S+B$- zi?*f#|3sm4wc^cZahy#(aCd=a1g>sAXG<Myy^Y6{jd>PBT9I7(2NSA9WmQ!WQ0i0i zobIe0+)W6Vqy(r(CfPG#9^@YMt#=HO;u8e`wVLoe&{%S=xT}KnG(e!hR$-a~68q-W z4M9K9<Y=k1n1v^%qyY_Nmu<rEDbY5BA3*8u0{NE(4V}92>Y+ZKAh;<GTuF${8pBav znh#A8X7MQu$Tdw`hzx&n?R}s%0bgNF(B)#VGehq`y2j^UAEI|#^k!>RW3<ZD9k0_2 zu^K;ScD=y_abC|{uZzzi3_5Vy?I}OvNu}&tEDpU89MUd%TSDp>{6qXJYDMpFFw#K1 zA)u`VEZfukafDd@WorYAPjzkCjTk1MqulaI7{&nNsy%i4Is%Wb@Ny@gQr>w}W@m5_ z%D-P#@k6N;pR&;x!;S^J|3*;Ke8Qb+O!OPO=u2URjW+1B$LJzPC00Yh*s;!2jXU!i zN3@ktz0p`uDX1rD$|MF9nS&XN-Gxal_P|L6>2AAfJ9ga;Fk6K@Z7obGAXsSvX6=v| zo;`d>GMps=k6_7`KFTDMLv1WORNfe^{_mR?Vk{c(O*^fX_t}XnIY2Cp5=?VV(E)wS zK@h_tV_g77K>*V!-QWRkr)z)9Y7b%T;E4*F;}bp!zD#gsMPEXu!UtF5;1uAiM}CbH zi$7<+vax3;-alTcph6mS=!F5^+RgLe61c$J<N)-*vx${%aQ$<AGTQ%p8aoI3T=#_r zXnU_oFKZi@2^`GbawIgjyRZw&EZN6%7H2E$33k~SD?gKQtG@v6ngPT#n6e!-tre3P zlq%}X(@VZdkBDuwe1V@wK+zW)(k#xzk@eI%J*F0EURMC>)&XMTka&0!=HI~qG2srQ z#Lg?0lkKo#*{?#Q__yAmS@fBH2xGY7JW@fRCabJ#gE=)CFzX%VeKvA@IQrGxdf*dm za=b<Tp?>r{X~Xpg&Pq=JvuVFqjwdNa4ULM*9fb?PGK3nMQ{3qHjA~MEW9N#tN>2*? z$Gn$Gc^P=l9@pz>rrQ<ySgiSFI0yiW7sYNjkXwMdS7ZaFrLs-Vv|<Y11{fL0GcI8* zxf}R<2N?3CAH-wh?Qjxaxe>R_8f4;!ID0%Ec5(<Q$WSFu`nO?OYV5Lygc}v;%U6o~ z+m0_h`|`V-9NgoH%QQmO^BHv=ibft2J}en*Od&%xOS(H-kMnzW$R+MeRGPI~p~Go* zY}z1FfVT)psNKgQbitu@mUb1rtz5`J42;dpKTnlY7EL&F`7(!Lrbc23Zgdz}!W^=O z47ypb##yPr9jG%6O+}o9fMUU(2V^T8F@+)bh<L<d1I|&8W3mna&$cAsmLLr!4>Er{ z|J92FO`iYt>2Rq#jyl+TS&ijFubuY>RLF@Ux98F;g#Lvkv6j6Cd##W!cqiB>q3a|9 z8ZU&N>mxt%9*#j)E?8JKW>?aS>jx7&Dr6;Rt4tEzL7j{zbuT5aLmBn?cq50GX-5Aj zc^4zLK6{ueFSDBlt*HU_$n<0cC!nLQN8r%oTE(;JZjRAlNMS{1y9n_4$KYaF6d}6| zf5CL0&38C{eh$K;@VI#W{Cf^9`o-*c&{)8QD@N7<5IuI0q`kLp(6%s*4~so+N@GYW zC0c`1l@_fN{`SA>=f#x8)VL<jo$pZ&foLspO6|un2fwf(j%)!$%*OC~EFnKYd0BAX zN{P{U3zOdd6I3UU+<IwLCl^Iy0`MD~rccQRUNcm4s1a9N5q{4wB*L)*vR))iX%=K3 z#pft~ta@Y{#lCqQFa>JaRk)CjJ@JzK51WZ-va^c9ONWeU(hz4t9Np`PN$T;(&5|hC z4=sDoOI%1LF;x-@<Dpy-W^=eVprH7h6lP@Wsjf3&Fhl2QmL_e!%9E5WdfsXtZhN`@ zzs`5#?p7qhSy{SygGm|Z(d)N|fcZGJdx|(gGi_>}DX;G-(H3hA#&lrBvPLv&mOz2= zf+&^C^c;FmZug`R8slXB`K=@2S-M$Apm20j0F*#EwvJv4LB0JB8MS<J%<KLb-5@{0 z7{24wGjQC_z8W%Q9=N>{NZSG|KNq>cSeY70n*kTI#&1L-asF6dm(#qr`HfSO&0r>u z@6<#YlGEywERiy)ote9kRI4B0n0-~lb`D@mZM^)?8O3)diZq_JfD8_AZ9;F5>XXgJ zq)aGx^IP1`tTNm8j|`(ZVF|jlW8ya|^|6rMdMgW;j~f-!wG5!VH;o|2z#v*0No08s zWCp0!<2^LuJw7cQk>8Z&OYDR@;<&qSS3{2BF;K~!->>A9*#~@D@}&pXA)&04xRFxS z;h348NNg>C<FWF{N+F&J0s8#&ayvy<cwL0D$igU8t2?N`qP0IO$ikG4fxe#|N(%<r zQ5paifAla(zNNgD^-9=;iKiry6k2X)Z5OU_t}|iC_fdjFrE{%P8r<{pg(!6IBy|C7 zX4cNB1L><<&B94NkxwZ^k>L)I)2JS!(_1Z3CQHXe^+wT8Ty0hzWG@W8o&d^crir`N z;urh^ESI*vt^xggya-8Z4Z3~l+F;Kl<m@x8+fqP1YQ+P7nHtWBu$cRSvoPO|{6&;b zh!NO3Ht~fN9ZszsA4fv}f%}%X(JqH)92JH26*|^X`ixX~xm|bfX!<_zMJM4@N|EU_ zB4Syx==L-FepYB2q%I)<a_HOg=FUopfx2j_3;czJ60qW8cCPditXP9VbjgGFhLX~j zA$Ppf(p4%FcV>Kp;)`=g%5;{kAo!(EC1S}^Zr;256x?pih(EN%A%r;ifMTGo;-Tq@ zt(fJzcOAfx5iE`JfqNe|!E~5D0zqD801unU-)@S(yuxN{s#32%71VMPS)K)yIz2II zlXfIQulCocU>1L)AmSxnLPSfe1hd4e+3A!Zye#4UWevXuTRBM+=nry1V#laO;)v9p z%qm`3?sNRHoBBPVf!zvC6-am3ND0{Z?sDiwH~nfa_i|pSlwkU8x_P#3c{u}RN-v!7 z-U$)TaJ;4%=LibdBS7^eAiuT47$?fvu)Y!|hbHs18cj@quOGZ?MxF*Ry?q=%QC#!K zeoMQS+pxFOKbHjxk26a|OJR_8q3gSc{>&yQqf>NopfK_L_nIp>*5%Rs^6-H0d5YFe zBa~cX!1~@QYHMLO&Ew$q81KxCCjY6qmc*QVSNBgHzEC8&!#U)Qf<V<|&q?gdl7$A9 zg}{UY%Cv+^t|gXdxz>P~nm>Dnx_yeg+S{;;m<;Fh@@bOrB)rRGun7);)zO*XkB#QV zOET~m-SOV?)`^=g;Y~Xt{i_d4mfE-UPuEvd5qFyE@7DZMIxLEX=Wg<stXo|(Y)`(| z_r~y6G4A4fEl*O;_neDl$>3m4w)`|2sR9WoBBBHc!ck^ZJh)iW$k{+hJmp}HxFN^y z5B`GoVqax73W!)}@XQ&0TrBOnQ6~91kh9kHQ9Rm+p#?vKRf0Vy(LQt{i`|obYbs=? zSlWcdUmmELnDorYO~FNH5#WF#-J1S{B`P5LQQ^B|FOKY)B}nVRPa8M9con+xr<tT% zJ@fo;)2qs)3g;R@{?Bi%LU&C(v-nY3(c95<)?JztgUfH1U~eJ%o)W1-q(bANzQ~fK zwe9XsU#aM)lA1U41d~Jdu#^Vott=CYHK+Q{xx|*fq||K*$#zUa-l=53RkTr^D@?j9 zpC{&ah{}!!Vy&(wA^VPLw(eN9@Oz&zQs`Fo!+F~TIH2QO0P(JuSrjRfQw2)hZStW$ z`8edZ*lPaz7!i}I<=C_$EY3?85fkFle?ZNrJja$_{HpE+jK=5?u(5H;ytFkQZ23cX zl`&|mN))-Gmm9xV87-2ATy)pqkP|K^&`vim7R@G&eY-h?V_d}2SUW(>Mr?y7IS!6& z2hml$Zw=zmAb6OYW_!4ANZ0X)0u~Gdp)Fi1_X2{7j<F0{R$8a&pT*UFf<Xc?R(xtV z@uofR6)>TL7geGC<258(OUwv|cd<VW7^2~Yp!;gn=7Jv=l^Nvv*2~)_ZQ0RNAnqr* z;5m9q8q3BZX+mzg>?|J}-BVZx59A!CF+R@;vK_+osc69_hJYdSSzSjT(?UH#n4EUW z;laDpAT29#j#!T%27HE^AcF@U5jiauLHoLD9da9_S#f1Dw+BB6#(@JCpGy5NcbWme ztyBRa6^VZA{=Q>dqE;Y;_-nM!8<LIAbk@)Sp!dsnE}nQx_FaGAFg_s!L(Y>Cz~#y0 zH|(<i<%?O5_j-lk4beC__I8&F+GYWQKqcPw9uSm{SFzLB#Lvcq+2FDOsj{<;b)mz- z<7sWePLH<+>dd%U7&KAj&76(;$0}6NYcj(i1U^&q-?sT<$OEUgO%{^B<q;8&KP{by z1ym#2wBa|%gNeqsYRr@zF?4CRk(uX&&Rxb$4J1W*1@!v$9h#AIyO^rgEMkH-k!JN~ zV121`=TBXORHun!pb_JYdL3F4IyD89YBQyR?sm`vnOZQ{!i4h9GhU{rZ16QJ*g@T% zBKcVu*<+Q->Kr-GOp~}{$?B!&S%6@MG;_;$`rzQ8p_ArH0f0FXzt)31e?Z}g3#qd4 z=E6#{u<_n0@MAf^bv0^dm0y5}LN)Qar+riSxY<kaEe#dwZmEbJ0cylXf+{ys+mP_K zc{@sT-rdl2sR#N&r5xA_*WA}*EvI~1hv&rX$CxS~wl&y;Jlx(I(j1xemE@c@+W)mB zDqTgFFH+L`tl&hwblmEDI-cT13%<0tc>bcH20f)9;8qKi_GDZN;(3L$O0CwHC>BUa zh8X#*fKeaP6-vZ|Yh0vg(<HjeM<59^+`UcqCFfZih>SzNn6qPn&kL1oS5U%fFQ6>~ z2GRB%O3$Ga-C(fE94v({aS44^l|Wf07#+>I^n8VKT^nIvy;A)vITO67*uN{~ZSL7+ z6(a^nx62$y3)6R<!)!1W+Tss)v7NYpGmW~=M`4F@B^7)rCzIG%w|XH5^Vi9$xR_O{ zN1Zra*DB!cL?dnEoRe50raWA|ip8gA(Z2b74)I5=zn7?pLB{W=W6pqefmJuhqkK0C zZmHpHm&B$08d1HAD+06n6l!uu3)Z)Ttrr2;>?@FHd8EP3xl_0Z`$m?OYM$^^vTHAV zHsZ}>dY*@(PAU48%NKpQtZoZlUP@B0#=c(9c<+pz3kE6`(lzWa>1=^j*0JK6p_^H+ zw_xr_gIA|0&h2=vOe|QCcXO0>JtBe21gn?x-5tBrzh@;}z76ovTdQEwHM7A8={Y}f z<mMS{BAyUVJjixmKp*(;METM`U|H|VBt8u3&q5X8eQ%8(3aVq>xJ&F%s%8PHr0*SP zu(Fx@Gq6=m^Gh5jLadUYlNvkadkMPQ*_ja1R6&U1iSocaz!&bejN*87t*!jFAvy~s zG3J}dL)UWlzE>Vai9k1SHR7AnvRID26lfqu2w&s0Udk!f&RH>og`ElI1@@MJfhKf? z+c`x5FV6E-ZE)2YGfoPInzcjEnR<1+OCIZj5^?N-;?`$dav-b$oT15VSB&y3T%M*% zN6(0KQ`wki71g!#&Z3<Nu%u%6(M9T%8*Li*%>WZHIlRWDOev0E<8AEXR8+GXDW*BU zgJYn2o~MgQ8##@)q623LaQDEMQ8ZLt+iR&s^}Z}XP!R2qh1=qs0B4Z6L_alxHD7mE z7n-KQC+aXIrLHmg#m4a#Nv+ZqBfi`O+LRF1v<A??U?L3v!*cm4+h2k^nX9=k)w#?X zp%ejy#_=6ST?1tEHeJp+g|UU8np29PjlC0Io$Cludx0Lnf#5|WQ9F$<1)N_mq?~(D z+3`WzoWb21ZzW2l-hcCS9Jd%~G`YmL3|F;s1iZXqZLg`-zM@B39Q?bV&cKKjhZ1B1 z&++O>qO87<fTmO~RsT{4#$^`msmwp!W3fp7QsARDRqIBpBN1Rsfo{M-2P~F!#6v+e zsC2V_zrz)S<XdTv@rf~+7djq<Zu99EcCE{Vsl+y3;z{KzQ!o)K$Ol0lbcW9(<Q6Hd z<0W%+*aiHx7ok{0CqUkzu~CCetCUwk@6_&2gWXwTwJ-3uV#b{5&Pr-aaCrk$7IpO( z3v@p50CGl1q}+yjECPt5tdSpsa7*|4*wm_dTm?Q>tIy+?aAf}6=|EW)W={-M7&hKy zvNHm)&(tlGOj*Ne=L$pCBKd`(Hx)6TGZR`4xY&5`j0+ZW*9W>-cg*GqY^c?Y4(4aU zo?1isaCIj1^pSstXb2=8<dx~_)qQv<n<|GqA3yJfVjIR(C_xo0D{$a|^FNqLfs4)e zV7ils$Vz;FKe|KfRQzm^JgB@7a#@LVHR<*HRdxOeINxP;T4W7qEL1~;!ZKL4nUU!; z2HJYvTFP-fLh$@_-%;yjy^rm<;#nh<Q$?O_SiDCNvHf@HzR@=A4Gsq6!ztF$ed^E~ zZ=4gmHbWYmgVwF_pTym*2Zy7zMjj)+hRTAa^!(gK&DHMx7AeTT*pdYt2ywkRM=MLs z8-n_`!(zJ?BdZ&mC1m9YB^rWmaM#~7BmKwGN9JqDlE8sE>Ffyw+X<<FO>OLAu4cmC z4QRQz_SbHSRi*Vs#8iwn2_r|q^noTDy|h;giRYg~yyLI&I?@J7w$Za^%HY^#MYYtW zi_c6bs#f*OR-xz2W|IiVrToS*oxF_K!ST%Cz>StFgc^O~FutW4zf)u~i{KObY8ca8 zmP{o{G84)O*{p1@Bk8$TQ~aN8nNfymd`{jFVxA23oWval{-=nR%fOm4?~;v6o(Nx( z9W{!eXk^|pig$4-8f1??Sj%nmRbf}Ndn|6?cEY^9vxB$7hZ*f#mdEZ3*>mmVeWNvE zZ1@|)v~GvXhVm8#0hyLfq?Z#pP0HyhE&UBr-oEN))nBnZKM97@!s1IW4Z>@5fHHjp zdRuui8Y&G6dNc1tNZ~^TK^}oRMw1h6#ehY{T$~X$#Mb>QDjI-_M2Wfs$&uBfS}Uqn zYuGvw9-b^v(=GdJ^%>n-e)9@ygKj%bHJS6JHqYQoW@m*<N4e|S_n+-U723_;|6QHa z8Vw1QpS`Hu*X#5S@0z7Kba)4vSW)=7%Mz#&jItDv?c}h((B0w9B5MP4NazQNzAl2w z!Yp(KWLcuJvmmm8r>Q|!NG*EU)R0s_f4dfQNVW(L2H_KRbJH4*oa}pj=_S>?vb}dX zRrr>6ggrqk42OTOBPEg3p5bM{G?`*b%fIX9k`QFK37;k!FaTHdcpuQq;mKXA1rGj! zGe4Y!VilV3ZL`2~`*1srN#Ow)#DyolH+4TdG@o)FA_7+qT#RZx`4IMUYNZzymsqfU zelzL}o_*-5^wdv$kYEpC?cX1duT=R}o{9n`LgXbc4vDcA5owF69TlBl<u$2nUZrvj zBz-7mgC&0g9u#J@YFBGql^pRrY~+9Hole!bm)eWkoQlAkPj=WqM5Au(OFxLjE_K3I zdGf#ngG}p^_=2Gz<usvUH=h8)dP3xgrq9Z5{_5Il2}(+I^?0(8=N@*&;<?nm_3pNQ ze{0%GBBn_>z8=#cp3KwgK%mVTf*c?FdCjhixiR~F?g>i9XSBp<(tkHz#%6D|%b`9? zyBNbG=?u4L5Jhs5VY5f<86LPe5f39kTw~jK?gCugK5C!z+H0m*;SP<n%2HEDq<p6% zXg&m0yMD0yMhqls;u<}wuj!9Qz-g|GON>6Ok{SGIV261Y0w9Tfw$=~k4G!dPYK(QP zKZVGt-KxMO8Br31E@%^xc&>fwV`swic+3Bg!d+@KzQB%xS#gelOe=A8kZ{w?sAy_h zoDu%Z>8wgM5oR7q_uD-Vf{Rvj!J1^#yXA-5vvnWKhk}0B^9q7Ix+-_g*U}3bhC%jv zg+tUy!eI%|KoUuA{}2HjmdK9zuV8T0^2FFzbV69IS~x7-2qNAxcr8<G1)wDY-ysCK z&kJ$O@w?D8Mt3n7s<Q`)1s6Eb7W=QJXb|=GDAu8o?h*IZ*nv1%zZ8cB0AhlSV7FP+ z-E8k%MY|60qOoXR8T=8GB*~isxWwNkrJ3GaZx=>$6~B>os@5IV493!{&#jTrWQX=n z`nr5E71UJ)f%$`!D$A6DsJcAph-|hk!y9&mw#ya26*(#%I>(r!Icz@zw(BS((({fb z8%t-MB#M^yX@Sa63fz%Xm|0Fi-{`lJSd(z8li_oL`#mkBp-EFwEv8$r=KSWLLHJR| zFsB92Nu+2iWDPO^4lvUhE4l<Ht76{Nz?(n&eJhm@C{u}XFq_Cv7owmenr^l8Is15- zH9P%u%DVEW6a4GaQ&CPHZ`!U$A(#8sk#4+JhkGpelW8@K8MjeAmOGdx==zSDQitS& z;K9D?5%RxaAOBgbY)j*xVe6Ll<s%O{W}1$J?-?ii`6e-{VqD6cEkRzV-2~2__jHME z(8dcg&In!un`R3K`g${s_0qDVeI#NLJuzB)opLQ#0M2fdr#a)N&9@_#LpVDx-teni z%p-2{v0=F0N3C0?x^mp;CCAr$hxA%4Led_2q79|_hiw^Z_zmb&UgOT&a;SaL6ZqDm zq1BcW=#CLL&yZ)DXcgp-w>Pw{0-H}<2$T+vr5@#Mo-&%%DkkAM)J?2kr%&(KpMjhQ zyZ9(8Go*XSnF7um!HEL?oW$O;nWrpdK>|>~mpFr_!uf!SrC`~*;aFE|QKV6%yzl`h z%f3_o<gn|?GPSl;tj~l{smc^nM-QyvKRn18zQKUMV7GHD`vfvbcXz~(GH%&hh`zx= zrT~ZZ<jRq%3)urmpicpN5>OCw`pxWrWQ!~9_VP^^gLQ!sFBVbN8b}_BF+REF78)(- zUM)LZ4STM;nEUbK;W#)`M3vb^hWxssj#Ll_fla`H5MN&2wOgb-82SQwS-+`Fi<L2P zuA-acZv^cV(7?1;KxM}YNil&Sj*D?h4;X%KcS**%G?gY@lfc*NF6!2k4bR4E%vW_W zHKJgRyQz1Ec6IOWK9y-ptuC{E$qcf4t)^yETl3Dq+x1lNOgp~CX|tQufQcvCA`+N5 z!n6%*_6u;PC_=<?CK$A@6egX_`Kf2apKRKSpU1;g?f-gSg{?eELqhSV@H}r6n@@?Q zoDDTpxp$S6^3odJ-Je%!)NTL^7j!pPYTC&F`s@gO+T;S3tFUwD$1&h_r0RFI=Hvz* zi4`GCdKhWYPdL3%9y`a+CKf!SZ&IhQS=GI3o&q*kim-V-S=M|EN7U{+!{}wk^n7H8 zs#*85+60E0rf1>lVdvu#9oN>L0D=pG0{_a+_QL_=C!%h9X6iBo5aW6USaKv+J~LNq z=s2JJBOK=ZZ7f6haOzpLXNziWDjRzVp!F+7J9h%sbi%=wDwUA!SXr!!oPhx?FoRvl zhz>~J6CEL?!Eb?vGN%z3s_W&WKsSz%pCN^|NDVAY3Z%;Tygs*!*TgOYXtnFkTMYNi z**qi8h#ybx{emIR=JZaC5TedXw7jlbr<8CzRGRLa)^38<nFpO>+1|3l>M$;7+5EUc z1<6S(tM>F?25|s2m3gv-NWlk9U`eI6o06iB#EsL`qAOij6F{lAMs2y&*KYobHi#F) zwEF(MNb(;~yV!ugEhCk~3McRSx^It2gsiDI!>Z5ijP5g}BU9XS9(>F3tP+C+p<{Pj zaf`9m=()n*w3j29klk}Xy(AC|K%=*};KiK$FeakL>a1wd_u`t!dMf(3;oja;;xj@8 z-II>pF1|%&_qEs30l{!rEGi<WSrIijV1~RF&1$nrVsMtp6%#6JK`ojlO8FwO=k|bC z)hTndW5om}tx73NZ2i1cIkM1u_?~evI){7ywt0JLn9=lKqNk@22`%tIe#`RfsQt%V zEdx|duKSncTQVldF<*tnzJygt*%pqFm4r02O_=3AS;xZLwqFlZCEQS<i9LCweFyqf z*m?a2ak{=>?ZI}@L(kd+FUb&ZyUA{M;QO&lP<tS8K}r}_9fBO*w&{2te_vGQa7u$! z@MeyWo!q|j$r3BUbvK@27uF|jne9|p@iUFudQyOb-<;)_z16Z+aPR+uPp0ZLlqwH( zhQ2C0rR2S;<vPmF<q#c}q2Pz?6K?}>WGF>>5?7zvA_P*pD`om453m`-VvvdW4P>t? z;Un}9;I>JOK{KG0UpD}!p87^x2#j~WGJ9l|el!uE&kU{Gpi*g7JgK^m=YHR+Xw%Xh zz@TB9=9$#U<A|5!eZ-xPHwUHywOAM^cu~yyzpkWF<J<U$)%In&6fB2$*4R9C`>1~X z$7fcMNr?2nvRo${cJ7TDZ|>ND?(kagHH+_6H*@Q(kH~g01Y758XeR>-LvUM^(b!{` z>Q&Il&TjxwrR#b=$)J>SWuk*eBbr=F8gC|I)CX$g006>zv6Gzu0000S`2PR|_UC`% zgeH!(R(RN1nKbRc0g1%hTl!dds(WV`3cEL(yL|iW(}eJz_PX728gF3Qy@T%-p`=(7 zgA#?e1hN^-OEE(sQQ$*#a^ZOf4<=VOgJ_y^=;HNvc#cjmTIKw9OzfWVgd1e(o4J!L z4Hw9@kMcO1T9?RLG6!K5Kohzq+7<87Bw|tyI2R&ho)_!fbOMd8OU;bTTE2cmnQca1 zJO_(cZ3fR+?{V|cZG?`Pj)Ir#?jkiW&&Kt}dLMrr7!`HdlhSublrh?B3dF}LCNX7x zdp`>j>`E4CEr~5{;0ZkH%?*7>4WRPqE&*0JAR@1uqPK_l!^ulAf1p3s0gqN%y%3RE z!{l|8wtM&gaMoSx)!F9z@^DXe<&E@iwNhVqx2j|%l8_K|<%8mSzAZbgddXU<ERlHO z6_<j&nNhSW9&{s_h<&t+BXQ>L646CZq5WVuQqX?<iH{Qes)svQw-gL2*q)??nQekl zBZ28XK1V9JCFXiZP}ZXiHO~}MN>3jJ?w8D7iy3?gyea=1C=wj04>S;ie{CLHd-V-x z(8I8_nKc?M_Y8{Qojw^wH_&GFZ5^~vnw$9akQr!AV4nH1q1|<_Qhm}{byg8OiI3Fi z5Tb6C1??AU%j8>)uNwiLK}@17_9c4*g|wSjef)nY4-eDI`a$k`_fPtc%PQ20JwJ3! zXjO|CsuX^dh_BM2K#29Noe}7}pEZJPLTqmQ?5)ytbOE*@PF!4QoYtvz$Xbc$X7SXP z?0nX@8lnf6mA01?jWV7_$(zDtoqgO$?LVeghIHdv<u+}WHVfu?CpM-=*rLV-gW`nF zQP5tu(_{iZnd3)X-11x)2>YmrUgy^#3#?fOky4uc{i=m?-^Nh#{-XXyhhk4~<>r6L zCCkoPH1O4)H=byWS*R!+LhbWkIgvC^I(izq+YYh1S7dFpkP8Y=x0>2A_?OJo#IqYK zR2s8BcHe$~88ZT1pxj?mIiGt#0MaTq_LI~0t)+TiwvZH6|GKX?CIq}`YRhcU)cc>? zWV9>)h|i&ba8piTR4}XlkJ(pY7}y_H3or9&UMNw&P&Yav8z743@l`#b_A?J*Of_Ic ze&qU$g+95<jnE#RY&C^0yXDrX7FZHLMWV6~ROi>lMZ1Zrs4JdcDFhwZ6L)>8XLtfJ zQNKJ29a*5kLdZ8<@}a)fEaY$GE<LY11MBd->^-<mL0$m2pja85Y2PoF3iPRTW=%?+ z2JgAA+dI~b)Nk5jKbywiR)t)bNSM+W4n~(86?^!Y5{X-qfqoSop>!UwlA7w+EERwi zV{cfi%R6NQYh?KY2RPR|C|_Ezn(|@M)iE4I_BVWYdvotA@ut>CINa>*g)r>FA2<z> zHhMYq9*|-(Lsn9&=<%_i6MWtEaTZn8;fs??TPOm<Oi;KOIk16=9YUME9AqvkLaGmF zqe}L?tWaw(=|s|(Ob9ol5K(Ua?HhftMLHPNfOPq@X{~NZv1W~s=~U?bbFIYO`(l|$ zNAKe^OZSB~k74Xt0<eIO|5J(yUf|rl)c%d*k#Jh}>6)LopNthQkN0Jg`t+g_$UW;2 zr0AB9;5XVgh5>>8`CfQAIfMJw9@szi?drFLiS7PkHrDE9>KPxOiTADQ)me)deJ%%X zRlF`Zwok%b8jH0i)D6fs@d#P34)DbYPXa8ZAkT^VMidzD-}fZb@4Q$eA{O)n>mZ`4 zouF`}x_;ZJ5ai36r7{6tSnM8S<y>C;MztZ#b8%$?ZXZM2&s6Ac^^W&L$u=?7uQ(IE zHZKU3q$;^XI#*M}?!XU>3otX1^lZC1U0M#!HDS%i5ssO*P#ShGnV5o&J7*zgOjrw9 z@MiDRtmlIjkw<gabS*l~ydlSlZqXpvXqvoH2Wul<>B+GwaL}96Hyp{pg*MI*djqc) z_&SRzw;9o;3zg&nwcgwE4yn%8H!+p)V!iyFTD0BV>a1f=uXzBIsw-@7jLU-Gq@Gf{ zS~;^ucwo8;6$I5WnZC(xrGl)Q#z*q2W#>ECgAHLp66A_M_TgO7MMH;0;B8qLE?ip% zX`{pD)H_YZo5n1`!Rm+<tm&bMCy)bAV61T2nwlDAz~#}Z`guNF!jkMNV_vml&V|RF z3A6CK7haXy%>%C@ruW#KhK|q;=YZLDYop~FzbSar9>Ka=pdZ^4zvK`!xzHIQg1(e= z{LY+Js2K3<;*66f0@M}ZR%J>Ab{_%Ax{({86uN8Jap=NZY<NLwcB)QGw(|@WqFqVn z0s`i<Dy>pG{&z1=F+rhj3HW#EWAs6gAzfX1tdsVf0448g#~)H=%@a$4&kezY4s)(d z6YKsxHUC4NQovsG==g^#@|KC)G@v__{FeU(6i)1}f{LP(?anZq)_f2t#mev@SY<n* zu{x2m_xB(PGcXRgKq!|^bD6#7J1*Nq9KOVi557?PomJgZr<`gT{GT`t>@rFqh7?~? zxZ_2Lc&$fHQZSO9yS~Xbv$D$5V%~Q^GJrvg5M2m)wHiM&97#?@8Sgn6g~8^?No~wp zd9flc@)=TmKx5aJ0U~{vV?)V&^CSdNYiKLk(9-sm-fu&v2_uvHpKsAD%qEu@6IjTF zg$PW*z_D>vcEXAz)m1AP#0w#M0A#%WfX&H{DKfu&XJ%Pg@c7aJzH;}f64lT_Rl2xC zf9%Ur$oE0LA&7%1NFbxnd9k0`rFd0Ar4SW`i3AQub){Gw!q_-(G_y;*q5j?csRUPq z^AMxaq--JVo6_;Nz5H6%L)0|BIsRQfv%;rck6O1Iee5OW*>FGZfl?eCyo+J_K(fcR zh)%6x?=CavRXL^`L<}Hi`O?q(5;f8$F0fyBtvaimZ&cbp8KX08|I);}`ZQ|Dh8yNL z$f6)RWUgnHgoX`#!L8Q}V}Ny*&92vs$Krh{^reb8N02#$%YqzQyox4h)Ts^y>^CwK zT`RX?f6xDn!3yzQ)>_}WGf;N6)HBuR94Pn-${>3{jZE9uZ99Xz)Gjh6ttMW@)Wgeb z$*cYq`meo~wjfvfG?1HR5sG&R-uJ1hq7?belLanNK8WzVMY`e47+s^^TkTxX^N)V= zmRZ1V0q!8BZ>?$;gX2N#yH=ntlX{F-@XWEoH}ceWW`-y_Wv4`{1eFHDh|mljTCahB z^|~hPOm12^I@+e4z~><nI`dhZIx89}J^9m~-bMxCvU86Q&}A=LGVfrb=`eRop+52@ z%W@W7-<_zbq$iqj1sH_zU#2(KbHU{$@aeH>8BEG*qgX-m99O=MJhIVCAF)l;|F1k$ z(dZ6BAeEZn%F24_>*X}1RoCrkpNb0jc5T)T5`_5Cdsy~#;el+&gNsFnDxRu7`JP2I z?<t_Xw0H?aat3WXv8=3a(_RQqYPdIB%5iw7J_gI@;BvVJC4|0`U3IVN?`F|XPcexw zIdZOVWojqJ<RvAO`amF4Dy999#>ZdiAo(n~x6_cF8r>7k8Q}%%QtVLTjT{|uTeNV- zZgl};sNJ0fA+wXH>clX{Doqt$hS=n_2dip(dO|X<np8=<TH&~J@rRaMcQ3_0u|Fcn zDfF3)!al-~NxU{;Ttgr4YJ6*M`QGHRFfY^pKiOTwVHt9mf_mvZtei5i)RShYnAYFq z+Nw@`5ii$yF`M??r8wUfj9a}HE^0b6uJm;pte#+do~!lzBFwV$Qp45|@GRzNwPJ%t z%`7x|EqcEuX|5s@(1Ew&6z07eF)GCBS4r0@*J1cz&BpU9?Ob+!T`a;a=t$MRz^Bb` zL5&A-qmJq0d)wNOcyM7Glbww2E*6g9|Ci_P+-B%q40*&Qh-(yQks$ZOTG5_`GAE=o zsCLBwF4AEX{1o^5dQmBij6rAAmIC+f6Cpr>fKWtQqfy)QNIMnb^0SBveo9mkZzy8T zDB;D#FRqAHcb;1^mxeAlkPe~7@Gs{n?$s#@Q18_;h&ZK_(pv!dl*>-nYpT`nY~s`a zWdRpD`1!jED(s{)H^~nk8!|q_zF`lGEtjhnAf*)}F*^Lb*S%nMiDeuU(P9GYQTkBw zL4RZX>n&(;u<B@9N{8`w52|z;;|Dvj%qgRqu9c9B>c^#sq(ZosJ)&^@G_2fmDHDXG zg|?@mh8>}NMGY~NXj{GPS#8GQXF%L)dKq<If)te_UuYjn!c%$XpGSadTl}NrJob0$ z=lDBO>1#|zcR0*SqfS4zMGc&K?}A5Gky@i#;M#?bg}*~d!5R0+Swo2=kHU*F^Ipbz zU)Lk{`!_9B)3jtRXOuesyB=Z?Tjm9dJV9;pBxZq{qWI0YJ1$Z8StX#4SvCvWUk6R) zqb=55KF$zwNv@E~1TemB095V~>k!DVnI5H2*SwxH0IFQ3+)AhX+&Fz{jR!!5hG=gI zZvVE$bk4vCTn-^n{~e=%-v4`rOUkFj`bEA-T~vOBGhHFU)h?Kd3RZM^-5c)AZ{dI0 z)bZ_N=T*e37L;r{IBQf(G5_?k93laT*g|b5#?CcytFau!gW<wS?31^E4jeD}*isxx zXQ0m+i=W)V-LS4w%J`F(1p5+9(xA;h>aGk5)fCWZ1posumc2er{9YV`<#anz8E$-t z-YCj#_ML<!%Uz{j$$|FUgo+Ms_UytXA-IxFL4%htg2E)e4Cf(2Qt4ybN44|BllV*Q zQMEcGp>I=W=zOgX|85pnI-{mKoeY#i^3YPOe%eBsI;b0)TzurlSSU`IjavnhVGJ@2 ztGeheylrsdQPl9-l7*B{-z4)C*lpVYsC-F4gkF(uQqlSWj>UE?krsR5V{ojqi$*t^ zb2Bs4`SZD60;ehCyw<4T!0A9_5Cp}7b2Tp#E@>LV0z=CvL`c8et}?hF;)*lxx&n#U zACnCwWx0sVD;kRZd_bQ`UdvLMcsLr#Az{xGA4_LxV)`%>2147ETPd>Id;;O9UJs62 zfX9n)AoF$fE+)k(U7E=2jlApg#vQ6S{&ndCm0P0G^at+4rsWtikLeyz;F`15mmiWV zo{iG(1yAgx^sS{{#hV!MBqbG66|bfB<)HDOng%$!#<FQnDRrI6t*}CJ{6G#qV&7(` z{_7c{2fIreO?J!|Ij{sPtdd_L<e-?S?|}syNg_%jrAH0}Nz4f0lRqp~*Bpns#e*uJ z8p%;#b>zsc3}a*6*5>Zyh*|cTnMz$X2fBw01tf?Kgha~^d;>!Q#Yxy}HE~X>NF&4= z>RG?EYMa#&|5=W{imAHfR>8%%yzm&3;kdzX2kXnl@^f&_^|#r!>4mqP-FBDBH!>ma z@rIhX*17NF=^!00mKA59*%TYb<M5R7H^zorRSjJ<zUcrXQ~HvFFpWwOl^xFtqI$ai zm8<kFw`?*KAU<(E$cbQOfCsL@T^sC~9l@EOZwaGhTkLgt;|^HD8)Wm<z&Yac{zPU? zX|xiW$6i1-uj4Pjk91a*uVCUyx7=NCJ#3~ekIn#W?*Ok(ed|W7P#EtTQ*}SV^Y-5z z$AAjp-Aif%U$ie~_Fu87kj^!HC-RnoQeg{Y#677E2Q7xPA@|Iic=O-A+q;1!S8DO) z5{Yqrd^|0`)E-zf99@+d>zgf+bf`9km^QYep4r-`JuYALmVxPRW$#FMhF*M-?<>$2 z+bmDDW03k&5TtUI$4He3PmPrTg=Q`9|9tG=$UV38#|2{;|J|A(<(OVxAU8iU+Mt;9 zTND4-`;lii2}3;r8kt7T7$h@R;2vzo1W0q2^!ZCVcKf-ef1CzTK2`*cjJAN##YRdm z^stZdeESoD!9U&xoS)i8L0BBy02a?2T`7&}2)>m_Klq_lhjQYi8+o&hh0o>4Tjtj3 za+puab;CjGA-^4Zb5QvaI9zI61&x~|K7It>XZI?5D-5hkU|om-j|r?^4YUAPl$JTW zi$<J(us#(fuHj_tCK~qsfD*gx?jWeOMBX4(Es0{7!Y&yvd4ceB^)j3hzORN3QR{Tc z27B`6&XFr``mgX}pPo%z2Q8R8nw*x;<$+BXm$mDh6}psiigaK@%|UkRqN4~}i?z+n z2DDP6uFP5B`__EfR8;gg1iO+?hs>{{sF*D%eqo-B7$4-N63umGN$N2x^NqtLa+_Ht zm!Ib_>>#otOSJTE)YqYdVV^=CPnAPRZ_otB6;yM7AFC}k6!Ha$;PtU%$218!;XaC? zRW{H%@|Cfnj;AZRAgh1~=4;1qhIn{J5E8j9nYWdw>@5gr-r!`DtaEj2?1p9ytzCqB zm#^H18TxUCEn6HyOQ49`7qc+q4ehg)>N&VICz8P3i9lwP`UQQZeJD2+wX57wHlvMB zqvzusSUwDvq;pJ5Y9{+igq{W{O3O#_F+JqgNo00yQkmM(t^AkDp#g73O>+kQ;@Vfu z<lPFF*5Y>_&1Xd(v$PMFsEi&K1rh$2p^uipUB>bvW<1AP-Ut6W3>Pwu1?EQ(9nC&f zwqZFZYF~9=WyiH>eHYa9aH`lVI3=+~=Wj(FZUc~#OHfRmA;Ve82Pq0Sujt2=$;JZ_ z*;;Jun099Ftv9qV-(1M@Sk#y({Brjv(V(km=+Dm%r_OjD`oEvEmoe>B^L~q|`zF5n zgZ2ikF}0%^*<`QyVN!(Klnj6$q41Q>Dp4niRd|%MNE*VS;5Imw7uS{7K0$IteD}{$ zoL3^VG*%+!@3@!cr$#$>Nte%=&hp$FCytJ<*@{7;>(;UYwcA9E(|JGVMfiG=SQ3wn zoGhu}tulp&-hwQmP+a5dM@TgbIdRCjuFrcjK?ucne=3(WiV}DvfJfDW){F{A(bcwD zWDF~fEp!+%WD{zro+gZ$Spj6fWyE65V_?-9UW!qtgVL60x}hMgJFvA!w%d{V-E-+) zL|B0G&zYyqkIx>h2yU(nWy=AH?WW^vkS$u?1w}H#stwBgz^S?lcTd@sFdXyjMFI@e z4WRR-qli!e^g@#s)0^sZkF{<Hs!43HJRe^mE*^SNEVB8o&G*XxfdgGr1k1;kQS0S5 z4KUr`0rvDFNJB&1EY0>E8|P|#YLbN~$|qiuHw0fIe)K(u<R;&$E_qasq9%p}AU@e1 ze?LQ0w()Gyo<pO>LGF)POBiTOIE%jkBRKR79MUCki+;J}{f1`KVRVk_V)G&UTXuGe z!}G_Biv_g^vvTnhWFT?Yp+3%2fEMlChJ9`s3X2*H2t$nnSOKh+{}OR`@i$F>TcN-< zC~;pFf!Zp?6m6;yY8?#hKhBR+t8ScN$LNmZDDXr+K9FUig@${YS9P*k-cyo{lrf_& z3~QcGl|l=V_O`i!ux{f2#?Dtd^hK-a)UBJ~=Y}G3XLUfK*qcaM3e~Ujc@L*{uxEL@ zF9n!DuuzDixTRYZSq>M;K-0bu0q;Mv)`9uuRj7U$F-9;uH-etg@fuXvJ-3&nS$Oih zr!MO;eXlb3j6iF0{sc0i7(sW*ZH#U5vxC%R>h4ZKRi<`_HPc`ke}z$y`)b+x>v0_R zj~H+d8TRRO(Ld-M;Z`&n{}RQ=B4U>_uD4HL(mjP2*ZT8;<Y9NLqAnj?EQ|Y!t<UDD zC4kx({2!mLSvVkdG!mxK1?|#uwlWU|JAbdE-P(D)#3L1?gJiQ5$kxw`g4YmxTA|y7 zU?2?a3Yb=0DXOA{jCm=*2}}A%An6K}mu;7(B-T4r?{I(#N1deGdx4qgdr}1m6=j)6 zzJ;oa^g}w!R5ZQHH`~GXcVvei2?t$w{!w@IXSB&L{ptBj&<=IZJbWN$efcH9RrT;S z7??r>$WDJ`!vF-V7&U8bx;LsG2H^E0QdgnpQAh45ZUg&|S&HeF){YGQt%T@6&? zAZjhb{1;gX8PqVC#tJ$Feu(Gn-f&9BldO}Jz&QE^$`=~z@W^$Y`3}6%UrS9{q{^WV zk&}#wDdNJh<vJkIqTYgek`NfPP(t)LTW8&W`L9Xg8w5*qknTOzP;ypsP5q<Vixper zuaz7ii^%_!5bUdE`u$Zl=?q(Z67c`X+6^@TKtR90(zjix&c4ipypA;8k}OlFz^bT_ z;I7G}F@!<If4l!`18wy|h1T-)M>a>t*mOxK2DKf$P$Nk=MO`ZRUOgetPA#!Bbk2U~ z^~WCy3bIzXUVt}R@M~^;a>|GtXjPHNkJdX(W=%D}n#azu%=RHRxVG|l;8&K2(FU)E z|HhKWD~`I@$AKeiZo~r7B0ogm`TqIZzoiUB#{j1?qWg0u5Q2nRj$`he#XT7H?NJ-u z_b3+$%Mo?BG(K*5YpL*OQv#Jldy&B7LYl9*k6cqu=W5)|KlxO?3X?+E6}CD8Q&RkT z-e`)y5jX&5>4j4)tFQeWe`5ETPC(~cV2!UAU1gt}8KN9CwS)fFrirAmQ{Ne{vmxc0 z<1?psuA!teH-A%}g6$mkca-IRHleW4X?UU9S{@IF&@rCJ=aoik{*M0}zd#CNpB)ha zT#%C7=4X|o<1F!BV|R>>18F4U$Tt5Aa|YLEj5hIeT%Pof!Oe+kY7rt1?Zxj}c10DH zARa_ovEN@16Du+PU910J-ayOCer$Sk*>gn>V@vI`@ygd^O6{xnb`(ELwsKS#!cLIu zx2hH5&r{5T@70Y>Y~6|zg55%30Hv}F()#!<h4LVzNK!CrwfD3njZ1H=2e-ECCzVBi z0u5VE(*VPb%o^v@9-~7iv-$B_eL_|gwv&42qRBRtk$bC56;9kS3}uq+ptCe7ai>eG zVnpjrk`MY{Odw{PdK+=tAyGeZ%@N20AOG=S!(%k(PF-bYJwyTPx@Y2d0SDttL!W=> zv@t4;th<V^spp3$XZSL>Jx85F3aUyZ@a#!m-LHlo@0$}Mz7%FLn!wDRedqP}Ajac_ zmIRd#$&F6lubYB!3#=@dKG5u?W)s)Owu*!Z0Chx8^I`OgJZcae8jS$XQ-QL@Hq<bI zh=#~V61k^JF8?0KMtbrFDn{ZZ&QISKIn9Z)cDch*n_bW;_qiI&-Eg4p0q<5c*dFzH zlR!a2@jf!j@}5j+BMcAlNYJu_^+_0%Dr(ioF|-fa8e~H%GQ|+HP|+1`posBQFFDvV zyJ@rUe&*oBAE=`J8hj=@i#Qc58te1a4Ub=@+9k|zT(%JY84jO@cacK&)t6x8O~#9> z;O7ldB8F~N{u7k%$`7S`fiStkSpW^e+tkQ#3u~!bo*9|scxt~!4J=fo6ny8r4g5L0 zqUmIM_kr;l7pZSpjf`Vk3pX~!_uwmIff&-Wn!~blV_^=wWHuBS9~F_ZmkJ(WJMV{k zDF9J=GWrY2!VHb6FRrd;gsGIqrNAg!KTVS#{R;+-cWL5_|3lH&`=hgPtlH9i7ghD0 zUl(x=7l}`X`nojd5U$z@+L^&9>b+l_xz^f^vS4hawKsza^!C(mGBz#Rr_Xm1=e_;6 zZ4DptgK~zki3Hb9!aDK#QYF%Q_%m3dPG0+FNJlyn@=O10L;g)3Nt|IH_!l4Ur13%Z z@h`Ljs7KEP#93fGBh`_z3@+*Z7Kv`xhckO*A;zK48P-&T>iV4eiFd<LFNS4|TWd8W zzObWRWsTTzYOUU!MY#+{A^g5I(chssZAqUkuBW)dx<p)k>kW34k!(xXdCCXafiZyZ ztB4Zzi>>G85eg5{l@7HVn6aod3_;?HVIAY*AG2p@K}>CIACTY(vH~gEi=?>Kt@c&) zMwfPq0`N+MS6BQ3AI;h?jCrgZ-b{WIAV11{(_9wy;T}r3^nz~~n(De<LJiFQDitI> z@^r`A{3l61x+=wG=Qs2T8u~$ts*s<0vY}kf!c6U3U|3K<Jwp$?<sZ`cd}eEry*Zo$ zIfTNkGgq@&=3ig9M^Oj)RTAMveku3(&YX$dJN(G2fmd(2R7|*2?qZ_sduY?Tydf%m zm+q8_30&6LR7ek*D7XS4bGjrXqaHL$ey=~C3U}$MEe8-O*hK$BFn*;H9F*`5i?@BA zC+(pLJnfRptt!-2UF;c6feQeq0?cRyp1RSjlr}2hGx9D@Uo;PLU+%K>e0}?c`e@SY ziT%;j9EqGI5l3ie+!{jUzS{e3HKZ{MdZG1#wA}RK(vHL`fNVFAWYw2^(CY(S`Fxt9 zo#HErkbcH=9Hn=wKhYrR@^t4LE=UV7qTF8f$3)CYtr<8*N8dn$4!pjO|Hj^<9s7Dw zrdr4UDhaj!ASuKb)B6NIiceAZ{J!!24s)X7$`RXn$N}k3Sl1jM*<|*mZ@n6+!t;Zo zIi+-P_e>g*9O?^=RI75n`hyUO6QHPz-!F5`yU$O&ZEG~0Pc<U_QLZu;BU+|_c_!tD z&#&(3faLsmqWsMSnthASoWJytE(O~-B4>rOm)S#kN=56YAGf0t;jEzh3BSg&RgHS# zYT$>)a!cZ!Vj6J(acDBr(+1G%<5T;k7r7;4^_5M2E`QX-Qk6xMFA1BT=i&p!+&Z;% zkS2DAeE;kW>TYI!-bo1d);vpZmQ&B_2z7#{t|eKQlI9hXk;S|mGfbIt@BjylDz?{# zZ_@Fy5eZ89U4*~ad{Jr`E)QsC?rs=}Dw_8gI*@jzU*kbth#4UJXHFHLb_dcQQZVJg zEhW*9I4OFlk7tyN3cksdV7LM8!fDVIb~gKY)|TY{)Jx3ducPeBr9#H90+d8=njugB z^i&Vl+KYTvoBmlX+w!mk?fNqVtN0`el;Kw8DY^!AgIB99dvO1J+U~g9ur=mxv^UAq zNCF@G5>m%$KTpGlgRPG4QNRf*fE;-aM|5UZbZgZWSwoE(C@XX@UyOidShV;i_-+6# zrpaiR7XZ~+6311I7oqHvVHP{go2`)qWekif$U&R*Upl-SW6(``Dg8bRda-8r;gEzk zgh#y<>*6b89pE#9_Y*}V1$u5!_lx!78S6pjGvaR1S5xCwNFS|9VsP<3e-P^E|KdhG zootz0`~VpP@$D4H5ppV&e%)!4-<>w7Yy+qfk8s3#MYi*(F&<3@WpX?qZyiZ91b<;X z{!*o+T=(DeZ#ntsWyjm{ToYt0UAhE^d0=43kz^#S^F}EQpS;M@)ZDM8zgDZyE{iBH zdYeO>l?&2xyv40AnLLxGkByerww!>3FcvUi(%lf|DexnoYG1ZqCR>cV(^mMzogGL= zM-}PjB#FH06KQ?ToPzt0al1%JDo^7*H}VqK4-wVZcWvx~;-=3&6+PHQs>i}Q0lf*S zBnFomyq7)M>?{}}Kxk=!mlR*z@?k^xNxBl1WQb9ka+E<*c8)!C-=8clasuoB2NKA- zIE0tco0wV)VhGjCAh7ox$I_#qOTOk)cAybyrKd0EzlG<(7v|gLm0pV;YF<HGnoV`? zLMp0*{q}M#5a-jVc3ZK##~h`5v9cZtZvtwLrHd0#*LlW*Z>3$HaA(H1nArXtq>{bW z{o>)fs~+%VHvw4moQE(d@(YZUeya9-T1a-7nXYByy-hN;*Osj)f_5n?wJzeruz(v= zf^g8FzJdNfQojq|`{K@`6B~X3-aV2%+rI!GRrqE<cykRjBtzaTfSGwBCLK!uKod+q zx<wo&8}>v_u9MmkMQI1@*DNCf1G1J#*jpgsKs3Gu_VPJ@Vkf*6fq_8u5-f<+6{Nqe znqY5tSZWZaGz&T^eXVdADjhpX7bdnF$%zxAi>vAb`xcYTf~=<|IO4A3=rUZz8^Ckt zVdc9Ucx56fLJWdD)<X~_p;KZ(L(~f9+$oM_k$c@Xa5=s=Akt{~(x2>fW_j5R7g^bB z&v;d-pL~*5s2mpWKduN9$lh?H_B0dU*0}q`*8q`|@qr7R3X(_*3Dwr$_m<tO2|RlK zST#NoG-H?d!{c_w^f}9tK~tPnA#}p%S@p5eMw@|HMIV}qQg4e(G<O{%8#R`23g^8W zsj8NYfC$3PmUi6x2rV-k$}^OAD@_w`VDveqM2=H%VDz<9l_C*gXm)<CA(x45OSkL$ z&u4@?gpKPhES+M#k4E>+fknoDvnnvTeeImTI#g*FKKmgDtAWfe10$c&^(dVzLT>6z zm5!o*%-A6sVUqCm?PE*Np01k0b{s<dIRtoyRb-wi$aS{A6i0ym$Q9BX=ofO@{czW_ z?LIBZGt`yBRSmMObfLX<u^oELWh*{jn5m7U@l}=oGjB7@$+nQs5fvV%yK4qjSY#q; ze{Xh#s{Y3_P6wZMNmL<tuBUi$kzt?b5FDf$4sCFWR_gIOVKJ4`lKC$o+dPi)DAli< zrjVoGN;tTi@J!Hp9q!jk3|aWSpQvqZ5<jr^nK1KVuT#-TWs<Fls?Z}AZ0(c~N&Vl+ z-bt7O9Lft>Le<sr!c5CG<yCHPs>@AdW15tNFeLmUtP<)VC^$2qE;tHCarktkmMi37 ziVq$J-E*7mo6mA6|2+x&o=giD7^{2Hq>mJnZJ0#Jh~sGXgRZv<Zf4IxL<FJ2gaT)A zo|cibp)HN-e#H3%r4P?DhDF^vyjcr7E#lsleCKLRdmK*&cQ=L0NH8b3lu@CVJ@5zT z5p6%7sRJ&f2G#0?GZCE824e>Tow095KDMaG{{#2isNWYT`Wk-y_*P=n4Xo8K6ZVju z6WOD-R_I>FTrL2q80up9M+){Fyw(LxdWrL~2N+9xv~i3sN(i65TM(#+e>y-c)r2tz z{Fz^4S3^!7>{xBtVvDdnH7Nn*dGQj^J$(2`elNc0MrXuNS%aE9UQX)8gW$ShYfEu1 zFaV!6umF$rLTfJL%C5qd?g?3hB#pc_X}(Gw`+;seJ~4b@MY=S9R0b=Oc0;?yp+pY! z1tBz<p2x-jmUKSBpIlYgFu}M<PH(LAOE??X^Up-LSq-o5Jv$O|KGi$~Mh08r&Ga9B znF7Iya!#5Osmm)_Bx#F;`>^+|V{DQ!Kbn%8G@$Ss%a!VgZ82eax_m{@>FTI1PLN#x zVH&TRzloh8qkLi*&yF>Wx$<ptx11DtDCVDRaZ2N{a(TTO$@#~gMI=0!xMIF$xj}GG zhd!J`NK)Rq>m^7Q2eh2OwN6*u^)hhw=DiauNN`*}qu0Jji5xGF>R`r6CgVn-bUC1( zO0ZFYMSWNC4&B>_#rDs{PKUL<u_(@=BT2w2FItrmJHq>j$lKp^`+}#O8>F}>14YjO zPs3ZM$VMoZt@!wd{D8^%Hfeavq`Fyfk~M!Au&`aU0XBPDHxoA8!x5JvGqu9d6}rVN z*%K@q-o(q<8Z_Jp*Cg{awK*I=MCwyZzy;yj8U2>R>*WYNjNQ3_t14mXJ{~|P9+k_9 z^F~wjXQl^GK(5gPLJ)p^+SAM##E?}p(OY0#U6lf{&(wRXJquh}nad&>Z%Cb=^}OzR z1naU$HwNf6*!ozF2ELjB(}{)%FXcWuuuTKQ>PL21?VdMLTx(}E=OM3vGoY{m3R?vm zA07Uwnc(Ori7U`vQ&+_lkJ$vG?{f-D;J#`9sJ=36>nIqYd%i8$@k`lGdtN-Xa^_av z65SV2KPL(V5LTGKp@0xpY4}RSGdI2I3$NM&W10p8s$}+NN$lo=npW9t*>U&s<dMUs zIgB!~T2z-6jbK|)(vi~3>{)g<f(C6{4gF1&i=YzqRHx{f!p+qM*Fd}m<5+91sZGa6 z)bwvN2lo3e7*s@t0YBRV#03zmcY&4R<)VHPqHshS9!DJ9NmnhO%qs3yW|VDrT-o(T za<XH3jTbYaz@Bgj-)>CLiRbn!?yF*vt-$a0ujPQ4P{io8xyg>eImcu<xIthmP_C$v zIJQYqfx<&y>^CC@_=c%*!s$d{K<!3DHEgv2r#9~puejZkr+;tKImiThP<?9$bqjCO zI{kr)*Tzzl@B+tgOpM0*nxn1N{aN?~Wi?>Zimj36NNpT`=OLHziOlQjE7)IG%MzFd zM(b0GYoc<Ur6hD)L;XB$AoEdXI2x{JMU1S#k*9VnW6TE<N}v_o!hc<dJ6R(4ztC5W zd~qHItkD)TzGm8Z>|rY5t{b2klxiR&9KIj64`=hLzyh*)TJUSlM)8`{B4)Q~NS7c0 z=YUnGrh%wUf=B);B)(q*{ekX)Uz#xqieD<Xtt$8;D2&qB`H+|1OVMh2qo^a63+HU) zaUNR^rD_+=+Y}q}u{4?;88|o8wQ}6leo4PTZ4Lzvp}Kr{lf8RlgeTPp@16*w)%$%U zruI7QOV<&4(SI7FoMN$6VjDLv|J#`5y+q?OEM`)-TDNir5K#{+mxg3vFZ)IUN*%+~ z)scC$?<qN-72rR!qd27nX;ghmJ1H7|o~4*Gwrpuu^ZgKs`wBElA0UdO%H!3|Vv7wo z-J;#GwDZ9rUF_J0>u1Cx6b4wzk|V)5LAYxp!Od0=`BE~w5jYpQ;Ge-+{!fIkY}r&# zWAViX1|8Fcc_e^KuqDqNd9>hu;6*pou5UZDOM}W2(z-VAAE2kOs+$&9v9poVVP<}U zimskha}#W`z5XZAXJk+<5KM8^bUf4ug%#LvixMmGNZQC_@(|4#C*W)tUf(QK96>w3 z8uX57u$el<C$bjEVdt9SK)cw);4bi06?h`e-%7C+Dpk%<*55Ms4d`dsmC@5fF>g%Z zv0jWNwIZZ=LeFoA@Q@&NR?(;w7QtCWo+z>rZDX{B!_FWBp(;#1)X)_+TeuXq?k{iw z^*uERph(mlyg()AJnv=}v`*>5T@f^MOWS-zK3W=NFT;=Sp*dndUo9cYkpDdP)@YMG z&u#XhXZXT&exc5COsGPY2Tr3tZxJ3$svYwF{}{A}5b-{>{>q|1Y#I#IaoQWbl}VWh zTzyw+_7;bUtfrEj<KpKtYY~L)==xc8m<Rt&Z)OE`Fxh+c0dZtW#IEfN8#~v^W%a~a z>hRR_<R7H-<6Ho8UB-DscEJYmSsLY>Dh%iX&zk!VEbK@AlJvD7`=S8lv;+i&!8f9J z;d{{r<~Z+A*~9+!?QGgi^u>pT5*S4sD)0;VXQ$Uxk`bxlbw;DH$?B^!Gbm#c%hg@W zXXJe4uuV1eIc$ykl~X@+GKa5?l7LB#NOTbE9<RW`t|piaoSNNXH*2#tC#1RR(t3Q> z$R9$~@{m-RR{t3tck$YLOTN#~XFyllq2<ah;#rjgimDt@-MxxR`u9|KjBLr(rY?ka zofa72@mOowtaZR2si-v=1uZr*8~@Qj4h^bwLrI0^Mx<Y+3A*h<gds1RFllpN>>45T z&3=n|na{NKe^p5`L{XbT1raNha8s<9xhDL-Yu>FNoxX9esFVB+gO!$m3kqZcMo90} z2I8Rdyd<fOFZVz3sn7f^lyG>g?F7SYt(nc?Tvc?Q;nNFwr=&h=b+x6U@?iL|6Av6w z!Si8BshaZ#y;1Vn-#vFehcOA)0B5E-?5|@bhX-7>3{z&{J%#x8%N=JjWn&k3J@UE^ zHUzm$YRha7pIv6aFlQ${rMfuChB95%03{gkW@8y2Yn6v$F_CpOEq86f<~aa}QOGPN z4x68XKZ{g)iR*U`td9>rHQHPR=a|tYj9c^EJb;X%o1=@kLbzdDy-gPbqlnJ{=HiHA zjw`tW02bP@2HMs>8MpuHO)*pNY?{{ke;So-Vz`3uJ;~DeIE3m;yifxNvj0rL*(%b^ zFi4+Az*F*$2msY;)K7!s;R05ua$Bc)DGYN50ek`#baTojP$v7^-Y`!@AMcm97PtMD zF8;Y>Tl;Dn7wB6-;fb0&`m8DuNxJ|SH{nOpEd`KR+BzMQ<t^fWazM@c6lkfsrW|L- zkKt^0I6uv>Q@l6F*HJ`pj}DJeewiYD-rYO!N$_p@-lh4}a+@`3<u$gJjTKfD8@et^ zV@5WnM?sd2drEY-l)Rt$k*`;g%$oo;>h%+s0Do9~<_q{td>A)~(}mL8;j!Eq)4g#) zbA;f|ZbZ6M1iaV|9SPeWC!^a%N5|h=nNNt;8%PBSJSD<N%(JV{e>p!_Jg{>2(quMV zp-@aV-bc_3fuGh5PIpR}&?{_FnGgClc;3S2E~@K++RE9KqKRC|JtsVP!hysPeV(%8 zLg+lVVaF3zdmV;uGAj!x1mDH!wXTQFof$vS1`j0<3#`NRIg0cTc=fTj7ovQ|E40{@ zWw+`<8g|Mon=<^KGpU1RTl`h<e)SYUqD)!x*(xs~6J`JP!U?N3iB@nisTYhP9ldGf zAPqu^xtow88dUI`i!UB#bfc11a6rOunp?85*josuO-R0kE*RYZ3gFU|c-1TE_RWFu z&Z(7mTHvO|Oi}wF-dhMId~%br8+QiN<TW=xHPR|n`8kt~hIE=w3z;nw<CY#rY4{9T zk<`pk=8Ps2PK#oH&>mr>16&syj_+wDRV|a#byo40j6LzkLO1^|Sa4KL#l?DxGkTC` z04Se#+#Pa>N@J8wp)MRoa8(b!V-V72+6ngFi=w_SY?207pw)`(+#N4UA?*g)m-ss{ zGd_X@<e|l9ozLB&78c1cEl%7B@T?bECwK*j6(penW-JLE_(IdBS3MFmW`-!Hd4&EH z4K=*O3S%{l`;R;~P2JAHJEiA*CncB^`CSiTk8s2p9k6hG=qpJxdL(f$Wecg?UW8Mz z^E9HPM+uKbI@D0HV%mq6N7E7cgZ&1pO!o%Q+vNFw<r=^$cGugBp*7Qppy>*V>?oVO zhTa32G~s!FY92OKgR5T=$7I{vHlxJKrt!d!xNop47nsW2qvJj{KXD2dvJax{w8C?0 zj(pnTBqERv+JXG<idv1xmXrm^NB45@zUi(jQ4%M!kGl`V%ktyHuy~s<q%)Xv5+*`d zC4p!d^1^F>x4p<EqRB2N9;et}$Sj=#(F=|E!={Ix0Aj;<naN5POgyx98+>qHeOdH- zJi=N~GhVjToUGiRocA_x^u<?n8sYa$LeB_aS-kW~$tf^+8^jKjMw6?*Atc0=&agp$ z^qs<xS1!h}A^1Doy)$g`)!VaQupXuFToAz0t)MQG`P!04wJ;upyWF8Ez1j6J#g4(a z=K2T^K76Q*hFp6w9;nxfm&D<3LZUwf?@dduF_-0=Y@A>&24v9=BNJ#j-Nw8f!{kC| zcprcf*_1QFy$sKU7^?04Jn^mDFFdPyw|gmW&g8_gCJ1s3c}D&pwMg;tySl89I>$R^ zAPVD0Wf<kT+oo|I+mPYe((Qc@%>l<hp#QDLQN;bMpmvq-2=JFp)(Y3;PZ&ro7r`Ug zrtNj6GeaUaX=7UxxkapebVGXQ(b47!XnD3fgAzqtVm~O;I6-uwS!!Au3_jotK1DC9 ze2U+InL~(*<ZS-hVexF5=(d(7uaiDM;&FrZ8waVflhFBhvq#3cB@li;=K#sjANo|D zOXp}xdVD0;Ew}TA05Dvw8#Gt)sg2Une%Q8v0M?ug(Tv)}kv~vGpimwM#HrvfOAC$D zB@&+IbN<#B91wgt>~{05>mjY=ciwyxYapO5={f!e`9h6f!a7v9SsTpTqM6NN-d<#g z|B69}6N|RUlFkYY@GqaHrSHrNwYDi{>5W<Am)YRmL9`lNQ3<1Gn<wZ`ZslvQK~+}v zx=v2@ie83|ls`|V)s1n{10{CRWW^Zwy$J6%Pl*cfg;5yFu4Mv>e1N}9NM}<-iBt>J zH@ofz^Oz7T;>it#O!^p2-LN6Y7ahzStTWJuS1Pl(#*QoGbqS5_>c5Edp$TQ8$H1C{ zsY#Q;wYkOYqip6ng2cyUW++8^j6BMHizmiAWTFy3eMTkZHBKcu)AEX8ck&F4wi{?h zHX#VzIrs9_aa2(o#DuHIlc&^Q^_7Q3^(?gHq(f^E71HWsTsaZ;PPTJcxJ_^zb#0VX z2m)3tDo%Ns|BOKaL=jw~*&hT{7YigK{kDbAxkOD{PxS6wo&O+?8I-?)|L-ln&V~_F z{%X4y!S*3Es!0*q75OJtywJ|dq~nEJsH2xA=^H8wY{hr<oS5|LyK>fg-XE;f*+qX! zZpegLCLkt>bZD~MCsg)_vaD#2ZU8L7AEdh8Aj67Sy-xEs6}Ck-S~u0O=<Pw5S6Rw| z?D~QAI&rDDftImjv8Y!1Vl@KT8cd`n9i5Bvx3^^`vjaCX9VuF5>{<Nl8i@R@XO%Z& z7hsDi*&B73LJHcF3Cy@E3sgfB)SJ?Vco@)(<V0xy-9oPGv^vBZc0E!bds42i+z#Gd z{UW8=?le9J`>#_36`cq3Kadm$v@KAD0ZHTg=GeY5wVdgO*Gp23*I$7)%Nh8Nz&Jq` z(gXOf8M%!a3)S|FN7jdy6pnie!r$jO$9x?pn7BVtfKO6(b!@rc`=rRh-#)>bqL;0` z!fjehms7ZX+ZPzlrAR~cOHE9Re!R>8eoEF?OPmVOFL1&x1`mO#JN}&nQ?=|Rw+z2u zofV0KEc=s{6qE2r4Eu{&%$J%N8H?X(>^NoFj=Ez2etO-d^3mW+K+Y=IN75muWm>{1 z=Z4exk;4<6r&dN*!XAe26!(hlL!lTCgw7|D3q5+d9F<E*yQ)_p4Tgx7c=lHPB!Qdo zf<tnvC08_5n_XG7^Tw)ZwZqY>3^13A_3C^$CePHnVYrMd(SrR4P0A3nc?knf5D9eh z_NDMH2t$=g?-(+Px|Z1=+yP4a!R&SQmU2}Ei2u6+O>%46WtktdGyjWp5w=rQY8-+^ zl7S%zX$33eof!L()+WBcUGEvl5m(O$sH6l`^0`YIQaTy}g;5GGPzk#Yg{mnox)zrS z_Bj3S5GoAHWC#$HBC96}47;wWMaYybz^H-pp<lgRe^cwaM0bk<l+}o-$~D_ppkoLO zM{WUmto)ntXa(TwI8V3JH}8#qR-gs=*^I>)9DNh@OaLD<?h!{LB8_s?z8{d2Z3w&t zmW(>{ixuS6aeW(2;1++W1Ttx&$p*?(rKfZ7d;Hij7v4~OXW;t}*2GOrrBl17GV|NL zN-)~sEULJl5R;kn^iKd&G`*fpYS^TJ)0OW_ankX|h#XumnK9KXK}((Z<A_$NO<H22 zEJrH3=eDN^Hv?b_{FI|ruqk9=kkt#AY)Ufp`G4j+_Tzw`eb@wgsIoeRJj{y{qbFK* zsS5+e*t4r*?XvYM@6b>;x6@9&o@o!V%%3xH!{->v*6sfNOi!cR`qKUDd4&>eqKv5G z+qHAI9{jGDjKkA!o0Gg-3k8q%qbYmjdR9B!+Q`H?2PLs!4+}|34syr?XZw@6j&_=w z{V`5CO7*?S0?{<Xkr{vH*BENvp^ch{v3=B58M3Z}i{!Q$7%hS=>tBgO^qc&zx%<HR zR1KRiEA#c>cx=rdTecDdOg*&%_B5Zq$5$H_bd}<dHj=2vF3eSJ&)}BfY^GBGeO7T? zeCHay>n^P2(1dV|0VdhG7-C(R!ag4!XwsDRKF^HW2oo0%vjsKP1$u7R%p#dgOQLU) z|Dlph>pco6kte8pJP}95tMZQUAd>Nxw@=IAr-8QH@-cXUa>1ev{@i@%L4h)RU=HCI z6H?cOfJIEbe}IhEHVpvu%|0czn4F(4t4OeypOmq1X>mDb4r2)80G)!MhSf`nFRbjR z$J{}6LnXSF6kjKW0ljZ+Gae>3!T<luuxgCg=aH2iRfzw|CyM|%3TFAnTdd0s^q}L5 z@^N`I{@!<~QYT!zn5gXF!P|LBUqM~J?IGyQAX)o(MOwk;49N_a(rhI^0SH^TY|}7= zz3xQEmbjoD;LAa^G{U$-h9TLk&g>2!ke8ZIA7?GN3p{`>qZhe?IJU$R{)_M@fgZh4 zQ-w*fqY~)?`Xk3a(;A+~ZrH=_JF1M;hkH&XTl*^+==IlT;?Mar8^uMsmJNtc3B?8- zAJ8<7!|2COL9-EH?(^+bh#glNdK-R~J26o{?oj)$eY<AmgL6p(cHgr>o0y|D6pL^T z-e(QJ^(FfSG(ZE^xl^to(<`b0i;az)6NW3^65vr>#)Q`UFK#@*DD!=X*G~Cl*;40| zhlXg-?%>209qS31AKOgKE`2QboEd1Prg=DIUZUzh51{~NYi|m%d7Q-ijb1@N9^$!q z`%3#NMl0CLxMR0c$FWzlk<V+*Ai{+DU9SoRf#&3Fsx#Wmowmz<Q6xblKvdSf7)!7S zv9jY0)h{qF1v9Hdr`rVxY@iZwHhsd^Y_Vh_0aM#P?1|r%Ud$%*BN%hJ^wnHQ3!cti zTF47@Sfu3>Gj?=?ZFV3*1KdD}uXB-2#JWVfJvNj}f<0de|F90^6Kcljd+Y%xGy#IJ zTcgNXJYh~QoJR8}mg}dGNUcwn!&|-ntiN^KE{9X8P9iBHc*pWGN4s#9UtGunyx`1o z%i0sQwABE-iRCj`ymJe=27MO&jljj7S&M2~l#4duxsK}leniA);2aYDEdXcZ-U>z4 zd^i>1KLMw-KB^h@{xnF9nlX%CN-RQG10w*|hLm`Ibs=fX_QYvrZvQpj46;tim9aep zD4?@|^=v#k(RZ#uKDu%v$l{+(cF@uw?>Uyth2vpXq1fpnQ`a0MHz_1F1GJjla`AEt z1i-zMl-m@X?PX+=PrQ2P$Xojk`uZ9@gS5A3(2y1M2R(5QaCI+MA8fwQkdZ(OfsUZR z;OgC{uf&w_a%Gj0*GYNlZ{;c{-jRmR3u0D)bdDR4+$Z<evoXWgG)*D9lHfkYUZY~J zFe81N5DRJgc|-4}Rj(G*mMbfQrTe_TBlN9L`5B4_WZIYN`&^&thiNMGP!4m6GVg$# zBF@b%fgt|*)v=y&ed%0vD6{0HsZh95P5sy-BI`O^ikK^0eQD}K_lCqpK)1r`dtscX z2n{fADIAU?W&Q-!A3@ugaiB?hZ)&9*qPZZXqOa$s3n$SH_&X}NS*6`&`j_VhmQ^2g z5>SUkfrv#Vramjg;}PsK52gITG){!js!}|7DO#$L_#j=$$rb+$eR8^i(%)`QW`S^7 zh9&*K?hRSp&qxSc!OMXOKxkPRBBpJkiN|Dzgb^n;+*ixknN73naUeNtsg<AbG{+s@ zrewD`kR#x8F!Fg0K0p*Ul{iO*`RNNpOV^)`!Gaxmj5Bl8(H~EMc&t_OJu&C`BX*1L zbSODLAs-mS!fllUYdONvY%Xp3jZTey(8iLa!6H0AW~5Ua+S8FDg_j<ogM4=V6{S6? zhlgH#vYv?ipRAiR_YxlPHdnOb>Bb$|EiVx!A=ppXxosoMmRrdyYPa-B9dC@cZGdkk zFPaZ!^c4*YEogdH<iYUesH4|h)N19@opTr8)BYEdaZyAk=*m^QKKf7tA{gIi3X_m` z1I?M+#T;k*^A$-sGOy_*J5m!xD}<-~olisXrM4AOA9Z8h>5Ry`nH=JdU{OP&bEz?w zy<q8N0aieDfGU(9^%4)wJYcvx#r44=;~5;1lCiHZ;|0~ip)^hLIOtZ~#E4pIJ{!2? z#>9nTB&aB0wTpQM_L5%xkHb{X;z{hut{K4@LfFT5l6*s7l>vwz-=l7UWtI&KIAwUO zy~~58d9u52(h9w*&>pa!sC;MOk#N(TzNzqa3#`d<3Fv3d%7YGY`1d?Nd(z8|pN-Cv zSU~aPcm^lwT-bHQZO^7{sN&YB3~&WsRAMDH2W`;7oIvox3=5RowL~QiL?|3W0Uw+^ zjhKfT*Fq?8ab;@bXnlaQwFK1@lDXvjE>Jfkw$dg(h+!>!YIDrPX9~o~!O<PAw`qC9 zE7%&&y|pniYw4L<<3`iBLABJG@&OQOKw;Cd1?RYXQJxq@56@6ks8k&Yd}D$#8`=?C zJJVn=ej<M-ewl;|sp8wP?0&|TY5P@kng`58sSqDTZ5SvENo#F|Gn}COO&|XZwje)( z6M<#iH`l(mz#7cZ$;`tKKf%o}ZNY@Yt(pfy%RKR(jpzaal$pes5GL3-6ywO`x_87` zW3YE3!fial$57N)(AxYF4iRXma*9p#S0{t7MB{y(_kwPG9`GYffB~$ZT-10=HfvDX zRNo9+G8B}0foy1)!=!3n!2VVoGK6hqRv46X8*by#V}1fUQ9&qRt!+jXugfx^hW#nn zij{w#TE@0yo8z++JM`f-ULh;y>}tCs+K9JUyI&J^3^7d+<5!{~N7VJWwuxzqjFnIG zh@cj&E5^(kFKD5GNjUfT$7-y4W(#aVSB#HLU4HgsjH!3;-)s>ge}2uN%IdD5IWxlv zn%CWt+g!k4BL@OS1&b4qdfeMvU0<}N&&+wpZq}4d)tKcq*<9-Q%V(6|h7w`n&~X#M z!uw5#l4xQRr{^9Bu|s;H8xSvV6fgEPqFo#w+~2HWPG41Zmtx_htr53NlJD&^)vMhh zJ2|u2AF$q(hjBWcgGQ?)v+tFAL+EKOXVDlEe=Z!ts>mt7Y6x!@io@Rfmd`4v$m{{- zB{&|T0+G$Y5(|=WMCzZ0HpGaxpmcG*(nt3>ICG)*gg6|LwVbc&lqhR6=e%_<kr8|| z{wHS_t7CJaO9x(1#8MIfnN~t?3XqEa8C3m9QEK+>)5a6;w}=@U^jNfUorUD<Cw#fN za6KB5*NncxJ9;gDYu(vuI7k*#W1sL`kVnhlQz#~HFG3hFvgj*zVaSH|loJOsPXcID zKEP~#fmYn^;~7L>KhLSAR(;<T;lt&25zLn7_hn9*(59hDm!9cr@My?Q!Uq{^$=b$U zmd_AH*Ccpj(GgD0l0ci2Kj=ol)2Hur1Ax_Wvi3is;&ydLyE}+{XFb}HgXlaplQHEl zUFj7k@0*f+md;cf;7599zuDPU(+Db^gfreSx)i@uC*Tqt=PM3xYW<F8f!%NLx(n{{ zJ`hLKj;2hOCHmZ-!en!m&M}9V047a-$M+$ue>5#*>S69|Z!ZDICsJcYp^is$bHQ~p z>%N3=-q1@O7mDX^xS4U5G2vks4MNW;8>ts)iG{L>q&}4pnZ7w$gdzbaN;bDE<I`=s zb*pn%q<1t_^l&Cd^}frQ4rW*+q0Ll}Q;`H-1PCh*CaAYa6WaM#CXXPtySWTtZ0qfV zeQmrfXd_cudAbBM+eCk%xg1-&^eQVK@qm`OregOY!MdE!a+S0)XLH@ZEU5G(y|?pX z4f3SNvAvI54T@MZr`Q@F`)^S-6NQ<qmBRp-QHLVgv(cwJkONk6;k3Es<nW}=2UjNh zxE+j+Wk|wDY-3Pk2ezzWCM!Yf-~^u)RciX+h6ST@PX+Kfn*pYLRK`+;xP_Ie?+NML zI{J4dh*2nOs(w<%yOH2@(OdJ)JS=Bp_t9C3d+2~qBbl1Mu~Z<?WaLT)suxX*i98<} z6bdVEo=@XwMjH$K2Yu8pAm)%*Y$P~-T%Fd?B2w^G?8p`39W>GjWB;WjEsYzfwmw}A zD1QJ)Nbd8KSpsd%+pZq+)0!#7`#>i5xXO$0I{!5Q3hI&85?8gume3v@q%caSRjAr4 zvNW=)KCyhXssI|y)C$B(6E2S<`*bJ_sPt9HQ+coRg)CEQWA*d5AVhMd*P3`0`N0P7 zq7`gCC+0Ni%mI{tViB-^S55$klj>M-Zi-b&Oucr)SG{exo4d<Kjpyc-YY5QzL|N;0 z$vHp#U{;GYJpRRfqWHC8{kQJx^25d<-Reb{Sx6@VdH8YuK95d}a>s3!+|1H+Q72yB zxhLwf3v5X_;A_9SqCqYFvnbMKfa~R=xYYiCgW4Fyy5F(J?Bo?RD;jTHa5jR{qA<2Z z5I8WbI6Y~pW$lxg3OaNI9UXwj5xO_u+^xEK*YAEb@C}c*0-|R$_~V(?{B*_~j%qs8 z><KGdKnVK1&Krx&5%C@WO+7kLCc)GR-U`6<gA*j1E%O5gKqSv{1HOl;Y{!KQS{Am+ z45Oq$XL!+4j9H*IkMi<oie^RQVg~FW45r|4>mPT$Bhjf9U?V%|Kl+tA=|E|S5&oND zWLJ?=&&mdHIC7g(XDoN!l}D}?iLjChtG;G(wTkrWh=c2)6{zTEzqD52i<-Bqemm&w zXL(3@%>vteVmDR0VI(AW7mq8JZ(DJ0&>P&&jFHKbY&?wv)0NWk&XV!j&E+92>;9`p z|0M}$j|ojOtTxo9juZmmQx$aG>N|3;a?&g1@8!!<CLC8&-H89;msSdGZ?%R(dbNYF z`hpI&^%&9Dnii)tAM`W2Y;R#D=f6~#MFC%arYQgt$9__ho*|I+?^^(_+}g-&%Q;Gh zVV9%s#BAD;^Dwe+3QEHP46#4~jks_z7GN4c<Ul!Lok&ys@G(@~NWM5udF?6dw9nlM z^TCm7PnoHBpU*74#M1rFj4V-&$0jRS!b%>iA^+$F=vh3G>erdkh4iHN0EE3REqbyM zp87<VjBN1hbrL3*7K*oTU-0o0J$W7Q?`q*7(zr~Acwp`<3JajgjD_^X0*&EY_iCnO zGe=na{!$j3ig6sNE-1=2tYxYTWExTvutH_bmq?Nc2!&9=mCn(`+{7m2!y{|hfI4tc zLm?vlrw3%Jz93lcRsLGm;i90|Zpx%mrbGx^U%0C&2foJI84c{(GkCNmS;o0iuax-( zAPLppNK26l;Of%JK_C}=`1j#3@GkWoqY(mGLnUtyG=f$V$MpK-R1J@5<nZym!9mwD zc?q8Mzj17nP_3GEtVh4KN}ZRF*r}xCGV&)omYyPMp7J<VF=L!<>i=q+p2(b5vn+4k zf+qHY(5fVVXwyLul00u#*+=t-%U&$qZ6?~>3jhrezikK;KUjQIDl7t|RD?*hATTTe z=hZJc_0P0G<xkqZ1AgBmpQA6g>e#JanEtW7?(nfC<#~Fp*9o%kPI*ZO8pi|U`eIkj zLJ|7q5TP4sElo|XoxjFC9GM(*8a?wXMBp?DQ_Pm#pgjRr<u_;gCEI^VQ@iV}B@Zx^ zD?F!=QdXl?{oP%@s#JoamWKS+KPm$RjpK{7><X4qWkxap0$CZt-d1FxsJx!N1FpWi zxl4d$aG}i8m^3PcuCH7vL;2bp@(zORGteRESIK*K9ZlivGfrHl<DqY<JhtrRJF&+Y zi%Htt%(AY>(W|sfyNvKT4mK9rkvN;8p^1XW4uHf@4<^U8CR#?Y2U=%1s+CX+pvz04 zF9Tcq$YbtO_v`G}iWXA(@*(SXLT=rL%D0O86muU5CRRR?=D@9{Lxp~1?LPfO1Ov|( z$+ILSPmJRb8E+h-Z18pJHd>R@X@Mso{J?%Lb~IM0={^O6sPT9<2mPbhe_q4R!S9H= z&F(Ij0!{(yxt8CQK|i<>&$JW5H!_>Pyyp`nv!mapD?;M+J@dY^$Ql=I0k{b8Eo-<g zjpZ*++^{D-7@Hswd_WhK1)h~R#ysLPW$JfZNP=$pxg}=)RrQ!PR73E-0@go;!OS?v z{w=g<`7Cq6AsHh6`m|tIIV<f+tefe?4D=Us<{U@`mH!gzzvQg(TtKhiJCI}pT!%rw zF~^4>B*~_ZBu#(0ap(@`thtytA8k_I;hyFkuG0v&ti2Ttfr&OHFA|t>abSVdQ2c?3 zcYk_h$GF2P6a7HQ{B6E!(l#vCTilaZ6uLW%kJsRtG4b+95d)?AwOZ`uiuL0&1MqLM z;3}5$PA_A}Ohx49b|&h{lA!tc1q?y&=|x_>ndK9yv5{NG_0)*jZ&}*pd<`S{Wv=Uq zwO0Qq`oBjT7=*zO4tpoXrUJ^wWw^I5%YM=MSRkEuzP~`)M^c+QBwmEU3<v0~XuW~0 z!+JPI8#x=PAF*CV<({K}lF0AU+jBOxqz4*U-;}ESHbp7GOF|37voK%|BQD$>cta)e zRL)y<TkLK+ocn!VnCcfcv!CWqi&9q4U{Kx(%K1B2kPkRph~i3;x!WC&3t|+q41lQg zyo4G99Rr4UJ{~=~xmxGz3{n#H$Hbk3B4~<&*-VVXNQZn;x+1`*l8G0o{+aj!2Dw&& z{`#)}Q63V=X`WMgqzciz_QOZqR5mk;JjB=TBnrp8k?eSl$5U3}i!Q%KhZ@M<+rZwS zv0XkUm8g_#rPdzA7~gF2Z4?#;E(9KYDEvqzcd#lX>F?Xeet(3oc&C=<oI`lyj`*Yd zGlGxwK1g8YX3K^Qg%-s9w{64xg=_)i`BmK+s*=a#gX2>s3_p)+%a#ic6MEHC_<gwb zR~gm$HZ!zeFvqQtesIrz(weAe-gnW_B-!IF0SZY8lyTWUnC7YVQ9xYmFX=S(UdApD z35banvjt+ngfs!;!GVw_!5@seYI;(Gv!|@Zuogg7tyIP3QpG+AKhyr`L?*>alrnoq zJj{~80QV)B^9?&4zCuPA<Z~grC)(At%I4mW(N9fM;Hx-2YSeXrl3R_}d>ZUm^As12 zokdTMG5~>#H69rN<oPRnHm!E_cd=?1t`~n@m%YgcQbnVUV>o4%I;&yol}x6zi@hpD z{VM47NC=Y}4tX}emQyr}kb<E|&iJkL3k=5GM-j!|AGGoyaK*PMo=M2GW4AhyvWf?N zG*+JkOl=h6mruGt2CP;qKC8cpQNq2;h#iS9`EHJdmFDE>nH=wP7ll^ocfnr`W}nj9 ztV<R{q4&+cL{T_-kk$QR#5URa%e#f_5yglQ<f?d-CjuL5ZTu*V8*`1Fn*7%x8Im5( zU>K6KRJ#U&eGtp3i(LkO;LGn@Vqw5dDvy``?vap*SwTQ~%HQnZJ&*?mEBqRM;%1?s z#`~lda4tz0qi3U$VRFmg1ZL8~WN7%Q2h)lseL}0j3Xwj@07cMQdkSqT*%6bZKO8xD zi~^f?Lmx8r^Ve;}Z`(X9%<Oj~?2zJx)?%&=vd5$SFs*3RMPCz8iL<PZpq*W!DnOw+ zO7Z?YA2<C!eAt!ZGP^B_TO}v5cjf7fUjx4+fJn82JB-45psF9$Nf}MMm$(IyAm9*S zp#uZ9$jB6eqOrjPkxI@Rntsa1CC2hnAtUgPE`88Wf=t`IdD9IxRKqtXRL9#2B>?Jn zGCO5X_oPi1@o8f6U7=xk7078u+NeaA;)7MhSh3V_2>#9aF`YD{UBlFvY^7($0{7tz z$mRYNR07?L5uF|`)y|?`oU6((69wqZLNdGOIq;=*qnJc=d|hh+mT8ej8Iro!ACfMh z`_QksVoPzK8@}pQ`Xq_<UNmJao|xG054v*I`_C&kYk#GE#S3KNT5IAI7e(Fk>ok+x zav|S{I%-EhHB(!@x3C-lO^ALpLu^6TGGp+u$=Q++fAx-~`)I2r6Hf8!@QZ_70u1ur z8K!0!<c)dT$%l73meho>zYL^u_8W~4w(q3{k$bL047c<FdI7Qd>Evyj-ktEL4O&6N z;+ETGMM2QfnX@uxwNXuta8fx>rPcfDtv>fxBv!mamzOW)K7y{oysMGKpGhiEe@<}* zwL+F<`jk<M5^=DtPP<+m89|4Vr5&1Fw_vsl;80aHN$}jACvC{v69Z_CSVUTw^9_-+ z<+VkPXZvIjfo2=4d^krh$4*A**DprdL<%}Ru<|`=M#*dUAp6<NtQBIQSX?Xx7k<Vr za%E&qXk&laeh>#k`aseJ^I-o^aM9738G=H!jWG;t_l88dK5+_5=nq1peqa9B+g4DQ z+jK)BJjuBXV)u=tqc2)`isuR9(-9$j%#KerbUN}ITHQ3aMRECUeuOKas)Ck#{_{!d z*p_=D;lW9&$jaIEZS1^e=BNCrqs0uQ!vRQW+}u4H<H$RevpS4lgHUWzMyjqmh11+c z*=QSqD!Feo4ovf}r8m?feO0=UdXzR9Ufed>4IHcP?5>f~qA9-d;Laomr8SUMjeR(* z_o`OigZfSa3gr#hc@qH;LOny~b!;#?u<5`6#xZ>q*5xWzHhY+pe_+m!LP<GROJ+y} z)2QzG;&{$-B<%cCp+Y6ry52Ry>X>=zPhAx)C7;rU7v9RwCrr9P*Et@S*uG+o)ajkS z!>0gJVYfi4=n|MD3%lfY_`}{#+4mpFqSbQ^9wgCfLeiT#&N3v|i*)fvAfwkR$|BTG zK>*V`US%*Fr(rrLGCweQycJM}Jj>)I(LR^-q;1m15dK0pcFb#LeveJ7L!Yoa=o&PN z`ex7mWh2Pa_QK9$0c`<+QSa#k&$<RAdzuz7MWs9F$#(#iMLM@1)`$O$*<dDY#b!$V z?v(695FsIrJ+0Gx;zn(i+8?`4?3dwn%KxWAU$8>IWIJOxCSq!s#%rb{9)I8TYAj-$ ztDTGqM^VZ!G;7tPm(8CM@+}HqQ`AWS;rxB9usb~c?|MCiAu|`rr&{Rko7?mmXhZ5a zCw?!nS2jQrN$O$d=yQYBnu_kVNKhhD%O+N7&h|VKhg<E|obc{S8QRUkwOLn5y~Ga~ zPeHv-W+(YUmN}J7&kA|STp5^odKi9f-S~EI3kJ;q1k)NN(^3ZkunQ+R??;$Cc>-p& zjQ~{?&F&=76&Kc3YV0CwJ!nMGMupG9Zz`oU9vHMGX;MILAN%d$dEjUqVd7K$jJody z;m%oCyEb`qH&Dh8S3jrtGNBjKUxgEVr~KvwBCkFZ+r?UG64W=w1OkzX95$E90eR_v z{>8V?MBxA4AXct>GWwOuN@#NRn^+rIjGrY$Nh)p^8(OI#A9dQb5TkQ|9G9D=<)}X+ z2x}}v!#i-vK1j1)jo_&+GP)ZIyVH#tSFHut6Vo=dn^y)W6V$ToH%pJoH#C8^fT|Gt zb#(FUyjCgWZ8tkxSCI$%(A{UlWregIqe_HT=80c{va4q{+VOKN+q4+&f)$Us<@W(A zr566yUOxqB%ZX1YDt@*bFcD^0_MmQp__f9P;2Bg9DA(&17SeVpiC3p3YAjd~wEJf- z4P?}=6dk9JjN$*Nqo4lruKq)En2~adBG(dDx;K=Y9~Dd>*l=sUEVBmf3kN^zhuR^R z=b)y?Ee#C%mgh_-1=UyRkAu?o-XR1LU{gie`ND2Dj01$=UyKsaCo7FHI~E+ATZB4^ zC|M<(1N6ngOY@X?L2{>!`t&M6QvnKsxiP{FgVkGl=xJNtF7Ld;iQI7@hXz*jA}~dN zAn3j9D7P~GUg)qu7@DMtb*`icB3F^`8ma}EOFw<(y85}i8S&v3Y>0M7_Ugt=i};*d zEkir%KAB@|!@h*|nZX|^4*m;7F3I2E`-7Va<eq=d`WKW}v$H6rO}|@*=T<%LT2qwT zh<*Jjg)#`yK05;Q4lulR9aaNQnTPp{<&34td9M+;_`cN7j2iRBP$My5fa~qV889k+ znC6+%4l#(T!5Q^ID<ymJa<#vZ>^~Ih;5_Y2y(^P0U0Ddz|EPN0v<O<CZHXCq1zcrd z7>if$>B13u#Ew)Xdy=QwzpEsvF{U&4kim%Y`ODw4iJTcXdxTw8R&evWm@u=#_&vBx z=%RtX)U2ixMOGj|LZ;WZO7#8!fC)9W?JqQfy|@O#WI>WOg0$mPOG5HtC}W#6T?-9N zQf-2n9C()_#xo(0$BqE!_mU>#Zj|YrmWa$RpiA#Gu9)rs(vwjAVA&UIn0Cm}eBQlO zR)0N2U{l@lN@wd(`||_JNCsc`WQ31M2hGRzb@BJ^Q&a|jC+DdYUpYz)4w_vHw1T4I z9D|AB$)?V9?15pd%YXN0;n`Tn-UKI_t+A%rMS*IE5~>5^erVHx`>%*-sBt)KQ2elp zqNM7ym9X=bZr9BEs2jV~C;w!V@JWjed`#NccYIDhj>;nwvtPV}NUY<10**^+e|esb zlUL5vP5b)Nmp2)bnLP>LH>7$TJGkCs6t>YYx!MmG9IgtNf8ooOT}#)6(Cx8m7&vkz zes}I%bG)n#@6E4p-abjjAvRSzEruF<Q6WvD){Yrtx0UCOmgKvH!I2OJTKkU10sR{S z<g$N@wJ(Q<Y(MYbW%-E+gPoxvw4+8{W!G!FBK%1etmo`(bW8oy5ld?DkaPFJ-Gmi1 zd;CKm{hwZiR~}kzjian;XW7dh&FQL}C@#BvQHha07&pk^#ieKKc9XAa-Q5<K6==o< zr%QC?a;D`Ym6rB~m9w&D2{4Hun4^3+b~O0{`Ae*#do%s=iN&H&1kidtXvJXf&u9{g zU-$h`#xm-TH*9#59zC^&a)*cc)r-F~%xT@j1FQ3snD6aMG5|C9=L-qi1lzY;aB)t- zj)tV(;=u!DQCSG{0b9xAc6_rNc|w3wXwz)z<S*){Kh;eVW_glxsgNj(N3GraM3vBy z#b05UBx6`Eft3Hy{`*`jF6M{2>ED;-{OTgX7f<`mOmG4{QdaD!U?8WB$6dNO6u}i? z$!PwZJ-6=npH?S~R+fx$lJYnw)kX0@f^CO8p!CSQ-xk0D5&bEmuIJ}tLWUnoXI5br z;p|^6=#|O*QWK-$X6G+jel9h~0e%A=XTV>=<D+Cz<1N>8;^P6cryTs?89?494g1+R z=XLC5-b2DO`K5no5)<=pZ(lGdXV%T(7}y^yxAdvMvyW)N7<%a*O_EmQp;b~U&@Q*i z6||apTfFiyK=u%Iz5R9>#E@sFg!&0uUgZ*IT}pYu+2UO<TU?#a+piuHO4KmuS{j3^ zL-)Bu5b2qOW~__V#}E9g9Zk(!*FhE-6WTCEBSz08*`(c6dOEPqxOl-6E!3@jN40x1 zstm+E>x?DzY8J~h_a;6`0WiyN85D#vD>gt8oQHry^(ERt$ZzE$98|cr3@H=xHq=-k zbtdHdT3lBT2cr{=$hR|xWI{Eo!OFGm0^8SYI|y+4r^YsftyLcUy57B~x%Du!1d-}G zi4xdsnc<99I0*_Ijp5#BaZ<O%l&O*HYt(G%UZ;^s<w4>26~+hb|6Csc_d-fkkTazj zh+eNw$syxwhnn(d$gzf3cmBLM#^~YK_}~G8|1AC-8!hohjSB8}bcxC?4LeQ?5MIR5 z2~ane{xZc->3qZ8|L6*wxO3s_r}^`#D&K}4%*CFp`VN$D3Ir|*izzZEpE4Lg2)re_ zoLdyt6~{xDUhv(t7C~<ZzvkvfS%~E3!$neS8Iwo?yM&)AoWQW9NiXu-jU*`L&O)ja zckBCLR(qG9HiIPmG~7!&?+`ge%>%Dh!Y3ub7E;`c@b9f^j4Tp2Prf5<?YXSJpt5c{ zzOjvHK(*^kRj!UxC01n{Pxl_uDamgr`tOAjZRai64P^>dlx&S6&GUv3SN{vlyWMCK z1hSzdYXHVgNfjUlmxs1I9$Y33-zmPodWM(;lN__R#+@~yWExEL$u<@VK%<axlsz2} z^Cf!naJ?S~lAPMRBh`)p!S?y0r16Zh>+^WutGlhKd?&1H$K#7J$oK`rM3|I^S)^)- z$esNy#q}lbd-5yV2tuk$XMiIJ#WalONH1hAJ`HZNDcdo|X{?sS8ZtR(=zP(w&?8Ob zWkoAZMee>80YGmZyg^g&fkbgx`OkW2TsJ*uytQ|Gl>fcy##%l|VF6S2B6!G?Oxe^+ z54`%*dSD2!@!aN=^jM__ON1&U`Ea2T--wXY-lMWU-_id%xi3ZKv6uo-8J@F~PDvzI z3#R9lE!(^v`!cBuyqZfRYH73)Yz`!E$&-5QI3mXm<Z#Ru&`h|m^+2WRTQNCVr}p+& zS*$8&hgJhA^o62HW`jVz+XYYSb57OIYP-%8<Z5Sqq+>PqO<|G`r=>V^b2j_uE>z5S zC6GQNT@j1mz=z83=`{!sclFrLAX@z+4zO|j*A!KqFrIgS7Z^{?)&V~#QMYUr<xODc zQ!lng6%)xPh=X)#UE(uLMI#nk?dFIb202gPSL!wUXips)VQ|GU*pQ|X=1asD*e7P+ zMFajpOwsI?v+YvWCj;vc0>b@upeSaeI>3$5{8t$H_P@wk_++|;!ZlN7&)7QJ!W?hJ ziPFzm7hk2hm~J!5lP7BVBIg~9>snA`vb;PvGXuP3XeeM6^97s^?c5>qqaFpUic3dk z$L;4!`o<6M6+PX^bc^W#IJ?4A5|xU_t#a@>$Ez9AH>->^3C=5A!R9*d!p=ETIO?za z09NY5#~DsP+n3qNDkH0Y)q^B^^U^6dAkF_dZMH{ZyO4*Xb_}}Ie2urBsd{c-8>C5- zmN<wC|1WBsoP!CpT2)R2Fqo+v{!lVv4iW4V=nrjWde1Uue?XN6pkedb(!moRlh4ZM zHI7J|e<S}6A7xkHcoz+|D2xTt-ei8^BMFq?O}rtS)JQ!}TOQ|^x;=clJkY9Ql$W?` zcyn(o)Ezh_@Eh++1jWL}js7xW%9RLgs<jy^23T=%X$!c{y+~J|d*plZ{~HN@$)35< zU^CSx^Fc9QoEO7Oo?GW0GZvA%=Yl#ykp0{yKU|*uX$}NQM0sEMhpu#f0OwpQt9mcI z_Veq>rwH4?pibA7f98d7T+-{1tu$~KJ@<aQ95!5?d<PNoFKm^N@;;VSDZhMEZ0DD# zEsEwbeU$6i;J~)rVdN`JFg29P|M(&gekF{@szycAH{M64br5})ZMc!u-`+<eu#@LQ zAsQ|f--*Vq@m-1~7&wt6!v8MwT;V{Qq8};Zn;5OkIKf4m+ShK5iGabS#=~5sY{cA; z(f^FjR{Q$H<40&Ac9u&lWzg5`JB?`E?y7<GBU_qNAj2+mbt#>or73>J6asAjw9P(k z8z?es%}1FwzNhEaoYxQr+gPmNqrd->naZxXGW;BTEzoxQb~E<kBZjbtWb#Uq5`1bY z7EhBNb=5`t>_m*j%yLXC%AhEXRpJ6xkRv4SnJG2oi$a=zwm$xR`kL-wy<G4!E}MEn z4}b-Ph-t8QP%G4hf_wUtdR5li%?g3b{?bpZ;B6GGiQ{ad$)sOXXu#MvSIX^iXjgQz zf1w~78#kyzpdg+u2w4T598zx^EG=t)Aq+(%vSyv{&ky9>Bmn+(>G{e!+;;E-VLWUM zWRl0jQQKXkX9vegZ&459cKscTMJhsXom-;G*nK;12dlD%LpCvjI8M~L?gFNcI|<_i zqCAJ86~<^0RdC)95ZHhZiWQO+v&Sa>`}sjpMAA<l`{UL9z#dov{jJ>TD!nvK9qQlp zkCbzb=2-^I88M*ZYD)c0Aa~)(qX<rnLox2keP&0~sX~obI=)g7W|;7<Z>lT3A~%zO z0Z2Qr>BSV`6%K6c$co{no+sApDk}rqiTuo79@eO{M{aca68x5_jwL#2Ix<P$hH{`3 zh|HN_17?-7s{b!&_h`tV+@8By=4g{%lQy&yUcw0zNr9Cx6tEH+XRexPAzsYfYhB)Q zTPM#|q;{=R&yNwPF2}}uydchWEwE-W{Q8x8b(}%zRQltxFU3j-r>$V&6jUW=7SUth z*4CM}Eb=nVq^}x+5&^d8l~*e=k#1Ha@SdRLtR^)UA;}GpLxf!F|LUrEr+JFAR)dlZ zCZl;U%Fj`>jtW)F9>?q}z6L=zBjVNbxd-h8gUEzXAuv2mG5C4GruX1FoRU?9;oVr= zzd{v2riJL2oF-Lt={s7<w%q>>V$F|~e6|Z|5N3Zho$(g_QbEjH>W>SCxZmdEhGTKI zfs*o|_itb!?}hR4AZ@jDbnJIQwX%TbJirONx~wa>wdBva6V%tq%T^f!NPt)W80*(+ znR7Pazs_w1co|C$=N@fQkZbtlC|IveXm$B2RC!RIX<lLL4e<WtZ9G`&Th9=Xe%>5F za8$tH&`W<Ld*Fi`+SB&?g2Gz4rVKXY8Y0odvVqQ&x@y<xql*fgpHieHr!kOxu0)ch z4MJ*K_@w{*x0nKwlu}IZxuOPgguq}>Ij*l7BsVKq3kwJ~=IT2NM2b80i_w1Gq0yer zZ{NCnrF-0QEorXJu;~Hz#@wsSt!Z8b-4fUDAB-q3>x+4W1d;;)y0T4fzb5eAU7d1v zITb;6f9;DpNz|i(PG^LW1=~D86}pi-|Dz0rtdyrvrh+Ax(v7?Lb81)5cXvZ00zY&_ zyW`*nwnp%<5rRz>V^_+z<q&=@02_jf$TtG@H;==|-ndwTiZiTcqd`>S1JgW^hFgh1 z_LfrnZ$Wmg8{}hu9{}pH3%eOnlsbClL81d3{YmaMjP1rQkzt^^47dTXKW~k-udHK& z6PDB0*ZtMvh#|U~8Zx>Lk{rILy!A)JhPbZyu1ipnbD?5BMy1*n4xqa-*N!+IFzS5R z{rUJpo;N%KW0QAR0=u-n_#k+wjF5(lBDBE=EnEkM6WOV0R&^*7HuFg*jAwJ*@Ip*8 zzL&gPs^7%<p&nrRW-Fz!o%qg1@clZ2lc3YT?h&9J!SHqL!Wkc~EW{Lb4w*Uvvh2H} zZ7Gy=+0{6MM2w?Uq=+3QatxV1vxI|p+pq~sH6$vKw)>*GwVmGty!u?Jj{3jjwWlID zc0`sIq(K3bD0I{af+$)*krE`zbub9Q(CJSxH9w;WAI!S-`~mh#qj8=&#^a(nb}0C@ zQl3$)p1)D;dEG>Q>*Q#=3sa__?#k_JD3N8K?#tpuLs@MhvqEa8<^I0X8Rs~e1|p(( z58J@{*E=T^pK&aOnOW7^G>c5uO2%kjHndw~E`%aH<o7dfhO~iQZP%z40V)N&F=nAW zPtDJ1NhIdC^+W>!-(o~H<bI-PwU8<kO{AlFg!HS&MzzJ>^f;Od!O{n1F0xC(j`oMd z-)@iS@^NZaVcT69*Y=IcIOMn95O&KR&*$57*=`{a-fzDyk^WL;Yn{3hs+GkF9l#_u z_Q^6)f@<GJ9_AXcW#2cDo72>ttMKxeof*Q1+=I}p{gnC%c5yZNWPM=da`}{0xp!YY z4B8;BB(V!4{XOW?UOzTBfaSaL(D==;eQ)FeyahM;DQU9c4l$r+dRKni)T5@_x+28- z=BUYE#b-5Y@-A1X^hF@xyOVVX?LwPrC@h6OaNB+Q^a=;eZeAapi(`*nMyR$Bdm$i4 z%nRmD<fARUy0wb96gLyJE?Ei>^;bD2CO4KiUwY0e{oOx|MSj7^hK0mH{;tnzP1Ysp z(@%`<Vh_h6<YiTB#746ku-Lh!&Y844cux<*JPMXT-Zd+Q+ii!sCL6n_Skm<X0002a zK?(o_00000|NsAeSO9Z9rR$xP21;wK1Dvpg(?oG;i@m$*bZC%fU|LdDTQQb>cbZL% zQJ-ol9L#b2B`Y#7I^SlO&!cX{hoSfOuN+J#mYk!5q~m@K`AAU?LwIORN#|{{1QFco zm@+tdf>fAx8>msuBR8bAW<`?%8M>6X+KiFjo=9942=#AeU>K`&b@NAmaGE7Y=V-=; zT?-4Rl#Se(p8U8+o+SPKk{aaAJLQ0%wj(^FL{LN)rx9#mh%W~X)OP2oc7KnJiSnG_ zx_xgANSxyaqp{FxyS*5<KcSFh_Gf<=uJgXcIc4cCW0`QUFrlMkO)NFl<!tv#)VKmy z0WhAMIiN2en=*M4p)WBUR|W6Lr-($M$MFERb{+0Y)oOHw*L&y3u`Z!+qWBzW3(gt^ z4C(~A7>~{V4{}!ztt^5TB@TOPprpdty80HP`_;=7I2ltGvF>C+hP=y_JDO>y_wsfW zUhB~>wsNiY{$O=xkd=3Q@vWchjHpM+uzKA>PZB@I$e*eCFy$m7y3C8UP4CKBKB*}x z)uja=nZZ3p-p|JmY=qg2zfqp7u<KCE<Q6}>y@*f|3_oXn=hySS7zFq4m&mun3&@aF z$F`NASW+0PH-0R#+-d(-fh7VVB@PcCw${rtRY7>(6-Oagz5wxMT|xowlC}79o)d$u z!v|+7UvHCu;qRS>-XC=jn!~Nw*6cZ<WH_dSmQ&}E$*eaofjnjozlHOR#mwMjRxenX zJqrMbHr&ESd!wYj8raGT{FKzyvcw6$-hF9Wxp&5!TAfgf*duP{m{|<%kNYD6HE*}A zVC;`bx*r9X-tAM+m%bcbdCi|#sm~zEd-DF1^QQCDc8+S^*dB$t3Jp>#5OME&1T51< zC|gGYmO~V~qn18GQMa_JnZkMs6C;)})#l!T^+t1x(u5<o`<X{}>Ct9x9;9(@aaj+J z<zhes3%tOE9fWc~y-yyiZp`9~1?db|D(@VE<^^CC1~*6GCIDUb_?20Pu@m^mzd0RS z?S)m++EQ>z<Ca>~BMZ16i*c@l;8MgtB$BG_9Z0<6Ro$cw@!bdUvL6z3TwaZK#}n1* z@yE~k#gFpPZWe@x?s?O|m!frB(84Pw@=P0*M&_zyE6mWx3gz2i5-NYY*j6pc8y*z6 z)hxuF7bgkCn0qOjIp?bG;rWYG$B>o%6&H{R;9f#kR8snr-6ZqM(YG<`GY&7piu+qa z8Up%2JRROEG32+r7!8)0ShE=_B24l;W-pqRvT&+pRV(Q28)<pBRJ{>`lVj#2%2c*g z?;s}H8<qrOT<Z+VnqudZa@2hkMWlZ*Bt?W@7q@fCir;KQV2I{|x2sCWWW;?O{#o3) z{sHnlN9IDSc$5Z|La@RnfEgY@cwoNEW$TQCvFwgWdJY7!0{!t6;c^PnYZ5Nk{eAPl z*vXAiJG!$&-Rq3^1o|z5xSh-s`RdKfGz&@FJA_|=#X_x4`ztyh8*2$MdRGsP-@Jgl zZNZiXYe7Cm-gQ%irotOj2D$V$*gpl#%^q{0b&eH3y0l1xB_K>op6;0ucMK{V_8xMN z+F%LgABht+Chg49$Xm8F5+tE(rY@M-8>tBZO;XO}LIuEIP)R9}4=+2v&g}^to5!!A zT{+{M0o4da783kzt`n-6S}tmYw?F703Xlw^gFWZj69(^V6u284bX||OZ$Aq=D>q?7 zP##lw1*hcNBXcuMw<$9f_ShM}a>!<xJFB?`D>+t+r5@zfEri%Kq4wG~#-^B<D(@QM zKifm)!EHE~kuLIoyRWX9w#TtRw`DoKSfEMo?}4jC2xyg|@F#Dw{lx(tvUU~}w_apl z&(#hJ-My@A*^N1~1|z!cs`B{sM2t{n1mv$jDbzE(qxwU`dQ40+QQFn(t9(w-V!>n! zi+AY*DzRm{9*QGGA8z_zpgHmHzYIXOq&-4W92L2JhId3-eF08KnTQoW@yq#M#nSGF z{t;bAI)=sOj$YnJ*mx0<3>a*B<vqsF>wk_?ju<=y_3TuU=%L3_XnFtc_gv(2-5jJ@ zW=XojtrOl?zq9V;P?Y*oVE|-ybLKWHVESgGgI8%mDI&Uy;5dxcG>tcdPB~6BIN)cU z+Y$0cz>GM-+BMj2`On}B<Q|{T+AB0RyI-+QkL~s@a9A<&drU}BEai9x!JWNwnQ!=x z%QoLB&Ebd5D|$ur;QbS78&`EU8-rYh|K&P2K>GAPPj}}{h5c_w98tzolCbW_Pkl9o zqTpYN+X>nplp-r;NQBqO-gfU<$CKli6glUgLshW;0`zA%E0-rfw!7W!G8t4xkICpF zhSF9YHjqt8<NoMNlWo|;@y9}f`rh~QY!okKm3aW9gFPaqtT-K?&TEG(i5pr%{4Hq1 ze~TBVj0m5%cp#_A5od4RgrOgjjHc4Yh!oK2JOv;_Xi9jVtR3G|slnrD^qg?%$T$yz z6}->z^j-Ri_T2Mw!cY)M6JyH)?kmSR-!zt}_=L3PL#@klw-w1PM3!TEtZCmGJ_+fg zUi$qwcd4R#L$GN4_4mH<UIR}&1hlLmWYZ}#%AzEYk_$4}g9RvEqXOjV>%9=aVW2{Q zNNW`?EaYP_|AyifCbC2cgjx8bb|Ndt*9@dKQ(98^At;D^rCIS6rJ@7XYj*yztWUAP zChfWk{x)S24#K65Z4f7J%BfP^dL^wk;PNsN`e`9R!wW`S8IT&g<14_N9rxU&sXLSj zLTn8RWDc3t2WvbH=<sogO!QUub<2AnUSZqh8WikU72^k!(|VEV{yu=b%7MbynYO*= z;@=E+>tclpx`hG3iu}h<r0*49iMtrGiC1Y0e2vbA-x=K75OM1d_^=D&I3N($`PI%D zOiza23PuO5i9COH8j63pJl25jnHbPg(u_+GrGi%Yp2Hp5MFYwCX{>;RM@?5WD~3b( z{?`hOaViym@F%hTcty*UF7Ja&45szjmUbgU-%0*6e6M$PMx6pOna#o$>x?4ePW^hd z4^Jj!f4iZGJ%M%@0Q`M+ve#~nVnp|kuQ%o1w-4>R5_JygGJOb`d*mf%I3Pmp5eVYQ z_L5$PIANHGCjpFo){I&CcrcF8B$+)$(&|;*TO+M2p#-^#!SxG0Gbf$FiFH_4x3wZF zbEMV=G#GKf=0s~_U0gyul6^fo;%4s3ZGFH*EK)*((&0u}T>+K-w*Iw;rNsaii4Ycz z@{Cbde`RTK$?Lj}H=J5bjjw%R=%v{jd$c{#2ITaV%#4BwX5p9pF|G3{SVxn5a0xCC zH0)tVQ8ll1+|mY~aYdbwAHFY^_~9`{!DM`c4XRurO(ZJXJ(%$pzYqqiWo0jj3P_~H zDv~|klkXm)T(qLo`B^#~kholS;-X<&F+Tn|t7KS%B>6y{P9cz++yLK9Bh!P-KOVlX zD*?MyOOW=uA>C>7#D7JG`wcesVG<4xa11PGt$VD}l5_6LasT6fKwj{;QO8x8l4o~i zc)>m(*zY=BQ(ipLwGatkZI%>=Ty(gWj0><^TD`@3YciO&KV=fE>#9t@V(LMdf3A0- zZ=xSiyBDnr`#QS76blHfC^pjLK^F(YF2N~E9pHfx+tF&A8O&<#l~h_`Xk2;Q&Z*`S z-QE)KA2CW-p!c+3xL5xjm@=XLC?Sz;i5O%7yW2W+ja2opM8P}ASzVek(dMdYcV=cg z>S<lRGcm{WujMRXRI-bY{d|=2A3_qva9908rw(D)FZ-4_PjKs>@B{g+c6V%oqr(Oq zRl)$l2UZdgsuQh)BW~4X=>wJ*OfyC|l882XhXwDA$!l}%Q`>+&l=Xi-xzumy-Eyky zQV3mW1=#9wE52K3WP<C$$M8WDUc}=dwn3Zpw}qnqvN?8KU%??px#5=9z>Syde#sQ( zGGx|w_`nJDE0}xJ%^*J_VfT*Z@7On|SF^%+o?FoV4mCDLXH{29SdAGq51eyXJ*svk z#os8-ge!qeJE4WJoF4I}F98mS6e?v;D%#qz&qfe!*2l|sBW!DfU?I_X#RIZr;r6jK z=57E)npAJ(GKOHKC8v6X#KXMtJGV#k+$y`ZVQ(fb-@bgVsw{;TmS}C`qus3_07~_N zAy`*ZU$r<V|2BnNwGx9#S+KX3Z9dp>a*>F<4nQ<BEgS%!_BA8D%zuU_0)ECsj0rSP zZ4gu{saMTK*c~`kpqxw0CPC%dHrc+riMBRRL8te=qAnbPYYSHsih?Q-u8TswRp{SL tvzR0}@o`HS+EUAf)F^4ZYk1-I@fA6M4~qZsPyJJo?2!QA=zIVG002cQtQr6S diff --git a/Frameworks/TagLib/taglib/tests/data/mac-399-tagged.ape b/Frameworks/TagLib/taglib/tests/data/mac-399-tagged.ape deleted file mode 100644 index 3f5a656eb6f513713d7f993230ef4ccdb1c03ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91591 zcmeF&Q<El5*C^n2_q5Gv+t##g+nBbkY1_7K+qP}nHoxbM{V#Uh6_J?-8C4N^o#e_| zD`f<P2$B(ifLMTlfH41SqxS!G{~Oo;-}t}YQAXCG)1R|dgJ;sJmI6_r6@~x^hyWNU zk{AdG^uKvTAP^woN+2Lq2OyxMRUjY?e&GMT26zAh00DpiKmZ^B5C8}O1ONg60e}EN z03ZMm00;mC00IC3fB--MAOH{m2mk~C0ssMk06+jB01yBO00aO600DpiKmZ^B5C8}O z1ONg60e}EN03ZMm00;mC00IC3fB--MAOH{m2mk~C0ssMk06+jB01yBO00aO600Dpi zKmZ^B5C8}O1ONg60e}EN03ZMm00;mC00IC3fB--MAOH{m2mk~C0ssMk06+jB01yBO z00aO600DpiKmZ^B5C8}O1ONg60e}EN03ZMm00{hlE8q>w&<OV5>Y7M^fR3HZSr}KN z7_P?_`LHx1=|8;58yokk;QCQ8Y{jko8w|{N51+gU<rf@l{#tzOdlRMI#$?aY{+{BY zp78G07usReFdFoC_h3}`ck-!Q*KgQRao+iXy6F`?QI)EOi-!SGDh=xQ7gkHHZQi4G zu~dc;7ew{SrBD?z*8RlFx%l3U>Fv|BSy)~)H;%yfxl$u4b%Tdos50DP#pFmsM+M=G zqIm)fWth9?*lbo2cJ5FA&laTo>jh^JRFzkWCE}S&O2=!ycVg?EGv>|*E&bJaknGlB z8%9ip$nWr_o`yo<;(#-1^H<a)<Q?##U=y+C$X&aS#Tw~Ena-e};;GU$w4ueEAUL>; zu)$MVsCr_`VVHQDNwi$fq6>bOcVqt~>uqM!OhsR2;IooVl&4k-3~%{<x{a^|j`8!g zWF@|`FoQ-q+?j~idp}32`Zt*ria#H|b<?z}zwb&=t7X42gUc~a>>8Y@dWANRqA~i1 zNOc1=Gb=g8{52Ln_4^GqIyi9z<KDD&iBfajSA&>qNJ}3kD~i>=cal#y5w&W0_$%K* zYU`2vo$;z|Bx{L{<9|2Q?tY3=Z$0{Oul$hrio{p+W37N%sNI@CHN~cfL#e1CRlvYW zEl-(UqYDJU3Y+J`^r3rQvzAvw3aC&eL@|Tx-*U+B8sc`mln`ju1cfQ(j+`mkZ3Evs zuJIi!0SCors_s@q#(S;JNvi@egnPQx;G^M<Nu7~ayO(_k&;rd+=L<U`CXH9<E=oO` z%eJqKLzaD41(#b584YDGF`dIFI6zC6xgp@<^uhW|4p8<{D0nklhN{8HVZd$ao$^t` zs_y@uBvJyk^h<NYTqCj9`o5&5Lw8ql9W)y!rkdS<&dS-T9wn!E3tFNG)5v_&3VTR9 z@@XqHQRQ6+hsY}!oV6-Don8&a2r*yy!%I3!#{WFZQQH3sM+E;RIhvr%=FQ}eT+3bt z4TD2aeo`z}G3UgrFwtrFh#+65;CKt?76~4Q48~E6^hr)K+O6%n9%B}r-{vQdtm{#R z*GpB9$89|NWWzezlni%S5@}yr9V#zO)-aYDd+r;CDDiNB>yBi+*b~GygO%sCiV{_~ z4b(Ceq8Zc_oQf<J0~<R_$ym)S-1D`cB08ZoL=_PP#e)PSLi}_xl@_{u4iPUjBE(NR zVBTI6aH)btlzudETUJ7EED$aU3B^3*IrVYE=_a!k`Sp8gl5hlSgJ9|k#%ZHFe)5#S zT1iV7pB3(W`%|nxbHG-W*sUo=x|8>}e^;?S6}1pI(+HGGsA|4cWod%_d28ue$0}c+ zS|`ZU-#Qs;SA&9!(uX`6?(r9>QRqDPQAiJ5ZG>lWMQ~lJST|^f*dEk!9m;0^*qE9r z1#+wWN*;NXxqabPu_THKcKO*Jv2<8SZMJ8+#fwpItlz`ug0~65!{7Jult#h}Ns>_n z@8c;Xo3+J;jJwR>a_kNL1_=ByV7;pMV}n$OLry&3eB!XDsM6SUIphL29w0*Ok60rf z(!b-3+UQr){?71(sXqQ-E6Se4_U63P(X*Dq(Fbx{_e6D*#666n_kG`oX*F_HPFRG5 zSQ?TTib!s!kK>sRIQY-4J;&@TWd)ZCA=zT&{959}q>B+l`8!2E>F`ZQ(!d0kd&+wG z)HK0~atr0O!c8`8H-It`iSS@lN?0+jMBFdsNI#TbQ77et-ko@m2m35O#0Gw^t8Vz% z&bMbXm+cp9IUh~JE*>|_d`C28Wau4;?9&{WPK$s>p?j&p`z$<BryaGkE-~~xMY^=j zWMx%RFLVL{CKjL%lE#rt7Gwx7f_B2e7&Qy=lx`gnO}@s_p+|v3d($?!XUWHi`258$ zCXAv4#i%<^LtM<*j4dl9O)G>R0?YI_nvDATft+77Qx6=!BH2pYL&}fG&80IfdG2~W zb*N<{Kj7s>S7WgkiA*62*vrkp&z1zPtlRkgG;gT$?-9DKJFy(OM8B>oF5z+(nN`1Z zxNjIWABRT8Gz0>s0;}Y&Ln9WOd<0_HM4~*;4#hux&JY{Sf*-((9Q1Dl%csV_o3)vI z!*iL86pCP2zTv<%nFa-%6Y|DvNe@0F23bwxuu7)p4oIIYZ5hjA9AIo%f^oy46Y?ob z*W~bPm?-?m0)f(%mVSv*B_;<vJKr#yDZ3}4@4ZYwdc06ah6n9BYk47uSoggF!9pP9 zCJjzRpQS)uRk^!+Ms7&@zSZ_N0cR;a5VKa$PSUBpE#3u{88Wt{p<Ee3&w2Cqy&|G} zQ$Hht{1xXJV`Yip0oI<GOflQ5(?ZsW3>pb@6J>kGFUgtjGj@02!dl(%XbIjl&kfvE zt(*RMkt1CyA8gCRs~8r4vwW0+=P*rR7l{rnS;ceH0|JJs?&<~OZ06*Q|8v-KrT_=! z{$`@qKQ-y-r<ZZ3B~`uwm#!{>Q`Rnwgsg0#O#mGqT`U5O8@+%Po2?cc_{Wk$PFn9p zD&r^FE$6w1EO>?P0vM+^<hD<o?2Nm8Li#M@9nlT=l#AUpuH-q(%Enm_<^sNqFh$oY zny`l%2y7^kapZ8_1XcRmY42@Qjra#bWqHrG2u{|6!!WP2u~aEx&=_*wR{#x_Q3t^x zS*Kg8rxhrw^$^XV0GD>=lX-e2Gy->$oRtVh^&w3Ug-7XhaG+#+JKe$-93w4}cRqjM zH;R32-O5(-_B<QmKv^3e49}SX*x{<T%UO<PMyD5As^Mx(mZUcv4~z<z#<OpuQ7>v^ zWB7~+hJRfvJfeKHqVH6336RF%NAeM)kDSYd?Idn9p8u~U)SL1;`&p)EsiL&r`&^K% z`h3+PaTblAfkm;^_%9oA;(}{L5Ul4*2&8gpnHwRIg=pl&mXJZh0XSQwALJ9&c}fl< zkDQ60%_~0{mbW>B3TmgT8SL~IJus%@hH@=&HgyzKLKjpi7&apIWo>f_W<om@6H*^) zHA2aC!+Ex)E@)DiNAKx>tc2hzrcka4q<?mD35X<*uvAFra)o60&G^Rgq&;3a_*DC| zy6(yj%^d!<We3UMjYyXvYB<Rx&j_rDA>#@Vzn<6F(F$7PNTK3tCu4yHDYC`1y^48L zX%R6XIqYKmSfn}{4)bSqum5IsW}-H-*Zyl?0!|^!je0U)Jj2?VDT70RGP1!Zj||18 z43*(kIxg0)J{0i%w6xUmCG75zURi29N)94W#iQ1^-%eWa)`>j!nh73LOR@ZMynt)l z^F0ws<<nWfsI{{qOtbXdv9MZ~(%(XcG6WfX!I~*RkoZcLkf%HROS=@0AXrNIFMHLS z@*+yybsqLk8>Fs9uwwD*z#R)mna$tn=TdJlpEXO2$F!X{r_iN=*sl8VkqV4VT1DKp zcl05x_Q}T8gIBr`8cf_T%c+%k8EoJwt`^(Pk$FPhw~oS1M#DSM7?PA{B78^%Dmt-0 z_#ED7O-{>1Rxn#8_<RF1ipc`T{6bNrpDX^rBWs%zjD(!ZX|{C}6`xgY!V~)x>cd0W z6JH3+flfQ?@2i1nL9N;(;ev!jFkdOW%&9cnkR}){A0E)r2>T%+g-yAst2#bdp=nR@ zRm>?<;7xCrt{mbe(|2}oIo_w0wBG8olyf?%Iw1M^UdXH9;|vj)OcX{O$s~yy?s>oQ z!4t?eJ{hlnwYlbR)G?|&ot#6iAB~ZDfLF=dc@4HxW2DBz&^Qrt!toVKC2u?|;%$M{ zzA*@4XSx}GUJC61=R$qR|DJyao)~g}_(j%DvP}WAI`*i2fR_D%LA+%j!hJdAZ#g5> z!)eJ}+yEB#%qvO_n=FJ(yD#-nB>7Hg?RY#Ty8xtZG%`W&5%FA@arSVT8{g(1EKFTQ z`Gpi8Nq6b8*zEA|+h#IjDpKdump^~Q8O}y|b6W)4%PGqx`gu3A%AiqSro{ZZw47O+ zCsNHS3Bv%kvIw!p26Em8k#rima8LH_(Sk<cIJg~0t<?x~>oiefu=^2}T}t+_8gp%& zYSUYayLi+)+pm=r@vjLP*c1lL`oN@M3PI7HIP)S&f9llL_f^2VoQW9Hc42<Lq^7kQ zVirl6inH|~0hfDQbt~qixo{teU6Yvhf|^b;`|uSNRdjtaK`d7KvaI+puAEFtFg%Su zE8|j0e?Gj|v+)4|u#WrB(IoBiLRWdqasXw@@(Cp*6V&`%JRzdFPFRG(!L_nz8P{PB zkspnmj_n*TreAF1QX_3=c+25Oy5&X51Iy9qK<72<SG*Q_xz(jY=1f#Hl>hZpdw8~7 z;b%qv#{m;-QD4K?cnD)x!mo@KxkB4}Hmbgd`qmlGXhkkbdyYs;-`j$7`&c56ZT!Aj zOrh=h(XG9Y&175>A9a)X`^}Nm)J1h<nn-p@_^p8iKAuuSKdjzj4LCVG*|ruK%P&{+ z_4VY0n;c27dRd-`Aef+Q#E9unca*xl-hbgPm7JmBB|OxBDMV+0bl2u?sj8wxrMtxm zhA=E?2BEu)Tku$ug2Qr&Jz2DtCX_I6UzUDD#&*dFh~*m-ONVz^5XrT>Ni?~vR%YG6 zPok-Do*zYyCw14u*r4TTQqM$Y-p!M-y>3chNv>Kvmg?<=$BvstIP;BXt?bq!)Df=b z`onj)j6E?j1w@P4+L*IKHPF-aaA$JdG6_iAgHCl}W=j^oJ`NN~youHn2)UAkQEQ=k z^9Lf)J5ae>4W(5kUi+o7G6&4}2jUT8!WE`Ep-Bq(<?<f?B`?Wz)Eg~RD`p$<V;BtI zOb<R24~#cL94`h6Ax6MSK}?kE;I(}DG~K;pJ-8#hibMJ!58SzZpUG-^mwk+5HfX0s zOvI9^`$oAy(R}b;_{j@a`J<wOue-SEtD@x`FAoP{J2^U5X4Q^>4PGn7V>DO8NZZ{v zY^4xAt8#RtTGyDb#$m^?KI&}<XE4&#HC3eel-_B?Yp-D&;l7gg!a*>rtU8hYXRY`` zYu5g8(s48bBtxfKj63;~P}ma=wjk;<2`7V28IL%gFu(n~5`1DggZmG6DsmmF*pQmd z044LII8)}?yd&9)z?3+*S~95Ahqex)rG22#nb#8Ze6MonLrC>`0KBMt7`p*Z44vET znw@hhp^XrS?VD%Z1%4Er1;PAIVprc=l!`})b>}CLP&POlw#!LLRU7_^fd9zr!-Saa z-lxynitvRo*3Y=pwdAkK9yka?h&BiOGo&&W7cqB=FS^7(vhQZ-XiN3$Cp#X@+G}?Z zWrgH_nf*uCbw?_0fp6kiTUYwUl-&O;sf%%fEyo6QDp8{aj1DqzK=%y>afv<yLy&%) zMut&ZFE~t4g*Xztd^ZgOL-Q<pyAW0Lu;^Iika;@$t2RqHKZ3nFaU;C!@IV2Xf+HzD z-)6JhY+Wo7rn}?ykXeUX->BM8?JUZlF>{Sea*azxNmia4OVmK|{L?ceuqUULoa)1a ze%V3S>GzN8^M}G~%8s}eWueK&=_$ww4rWOHC+MIy5};v*%~XPzyn&~0$x!5jS^a(x z))2G_3F^9BM-x|g^)kaem`egiPbD(G<XoQ{klbT)j<}{YZ6>00)@0QQysPSnUIXq~ zPbpwucA3;X9zxi^w@QVX$HHphXS&0Om+ar`?m?*$^)<k-K2M&9B!P2@M`oQBR6-V& zG!vn4ABL}|>g3<I%FB^liGhXV-#|wjM5S4D0`k3bG1`4nRw(d?1($VdVe+<rt&@#u z-LqrKe%MJhZw37;cWl*%G>Gn6*=2Ae%*Qoq{@ssJ$?Lk)Bo}FpJMCtM-`R+qb4j}R zS35zzkv{0Cn5CfZM|L?*CrOZXkp#Qq1%n+PA%yQYXW2T5ra?i2`9Ovf%?^_TDY4L` zrwD5E0Ap<1WmkFTcAul*k;+n}XLFH?tHu6Bm)s>@c2_cds9_EqzlCT)fo=I%b&bVD z@BQ)J?WNuIJ)A68mVA>6q~CMtFJ3UOzgve<-cSMN%e60t-@x1%JE}bJZ>wE@yZBdc zN4*><Bi6%>a~xUL9?WQs-7wNkKb_NJA1Rp)46qx3leVWmQq7R7UquB3wwLc7Ur>d^ zZpzqd(0yEWZZYOD^`z#R*Ef50M*~cve_5bA{ZetgrsOrv+itXuW-xD(uE;Zn9hr}J z@~i?e2#pk^$1&&r3H73T-tc@5;|#9*lYlbZ8ovdGpaYaN<zw6wxGiGJ&s$4UxgjfP zlDHSx=<0w>Aas=6cfbL8DkO<Y=l~8P?V46z3foPlPIBSG;+3O`u1fa{vk-G4#>nc+ zzn^8n-Td!T^WoD?S%RN(0+4h+YOt>Bm2Ef+KLrD*{a-&IMa%SozGtp=xulHRWo_$a zW8~sDZ7+dc>GWf;T?Gzc-p&-bP=8)MW{ARRXKA-B&SAv!+4os-5$VUUF;Ng1Hp0JK zv7MgcQXK;%BW|R-osdyc7^_>lJed|e&lUx%Jcd|9;W&BXv2w)<_g)lq18==vendHL zVURGG2gG2JYx2us=4x9QLfaX&v>jdcGlqBHA9HV^J(S_p)8->c>9ke;{OetH<y8{f z<fs9`CaLgRg0LU^0a;$TtRLL8EBx$#=seVq)?3BF_B^G={&gxjRZE0G)i{{T>t5&K z=Is+1T{B0P(k%DBCQFeELCl-|$)$Xo9J%Gfq`s2q*vj#MD7zu`@=i6w50Dm>;!fK( z85nF8ZAvj0oIMXvG!g&e{n(Q2a|Tj@czfLH$@idYZVe$Qm7OwcneUP<63Ss@(MDh^ zm%?;k-k%cfgk>wx7thylUZs5{JMAyIzfgh`Hip@=BB~%0!T!TTS4nRW@(A%fd8<+X zO}kmWjVR5)aeQBVa2?gxV}jT4fQu5MS65B18ceC?LFPPkd7-9`^7-bv5=Y6ktfA*F zLCSVkbdu0pqY$GDBkRiJGAK=_QzYy|Z<KkTHm1iFELQ(^EiBE~%>OR4QY4SB<m@qP zS_7>C^`>glRw)DhxX!in`%hXCK0d}o;^r8*jp%@p$5enW>g>h3{R~f^<xlZp*Fd`Q z-Lv&vXQ@-NW<=)fBu?J#Z=e-bX!$tc{zf2sb+pH|i+G;nyw-_gr=8|IRi6`Ug2_po zw-iSS2S@xUMP}BO-v~jAU;4dbe@MPIx4GXa?;)Je>sZM?%D*$rMO=l#h$Gca;V2+> z)Dj*JlH4=0|17GoMCXX`mNXuA3+*q(8puYWN32NlqrnR6555uX(g?+hXuZ_paE_LB ztj(~PmvT2?Gu>nMvMv28g?q2|xOtTvWqUF>^=06#ADn^6AzD|FGFRKTV~OlOZIf;Y zcvOyTSJhn5AkzP*DCi~Z*o2<u4wqckRvSUTUjT|Q10|mDsxOTctc|Zqdc-%Y=)zG) zuYe^DO(fl8Q+Oz_%QD&=c~?{_BlX+kjsKoc<3P;gd3Kc{2|3Q%pKFEz9hHr#>C5Zo zGf>{$)8cDusCDByh!FEQ;a^GWSw5HBP(1syuyp>Y9G4hlR-OzzKX7=wq+OXLFB-Ow zsXQz!$Q%MU8n-cjx^P&_RQJi;Y*jqE-l#+2{zje=GvyNImv>E{K{f~p*g=Mh$rsw- z1=&C2SzDpE_#(5q%;D#_uEjW!DVh&&3TDhlw=(i-pXFoHAxMU)O^gb#TW)eC0xNiR zo?>NmkXaO3`+>e7oA9h<mu|(8;q0|^4LnOJusdN1jc$(1N4?#j2a&;c#@YqNZOu>i zAoj|$+#|Rqqqsk`cYWrJTW%p)kj5}+uO+^Um~q&FK^WPNYA%ZUNwQ8ij~nQ<Wyw1b zdAd_bWW(6az%5;FlNCocAAe00wq%}9tn4l`{tJ6k%D*Z6gv3?Ry8Oi;LJJ-bK7J3Q z8hZ2hS^Y~D51Zq-&}HYst6^QxRm2TQB|Q0=KRu!nsmO)i*ZD}^l>p%-z<{<avvL7> zT<1HOkdRv<S#&&=aDcm=`R^1r-WgFm2!GxdP$S5J-i)R)=88|y<Hm%4X44%E1^0Rk zCJrV`y}8Ic=7}aH-65@9#K@_i2_bf6;b_2BI3jsOvqL9ZOm`y4EbxI8VH$h?<Imsc zQlobzV;g-g;oo#{INHuCW|S_!?4elOY_9B(rQS`iUw2RE17i0>c_sZ<5O%tu;Pa}J z8sAu!aWH!L07NrQFa4kbj81L$-fbh&i?zd@@YX?aO+M(oMA8mJj2u-p1$BI`ax@ty zdV}Oz(jR2WdN|6P_!UQTK{pjXI>aIHOVc6|80w@a%W#kJ^q3{eu}>66#@Y)L{$R>` z9k(Y%tEBQb82b#%NbbInCkS`YJVLxa^6_MmD{2mKrH9%_{-9vx^TdwE%(y#$C3EtE z+Huk2%)-q;JLUdP^D?AYkkg$U-9CDU6<(cSL*oJtXPu#xrcmc{_c?!RW(cpMJu$i@ z6?wap9zn?28h%6-3V$E;hfsz})v0R2g+#NGTjz)kAw(}F|4y3|xrf1GuVR3;KVQ$q z3Bi<Aw1RBcshy(x<&^vtxZE|q?$bvl1#4`(ZD|3+`TXT8d({OK`a}n56<Dq7bsfmZ z%}Jb<hT`|#v$K~*+7VBV(%ra!dv*>#uWDD_!sz;UNKIMZq+roRRf-74mOa}wi=&~j z3S@k_cj$8_4BaGtm5X~<2a$+|t<B#Uq7J1Z)cvNFjV~!T?p5cQ7qzw+Y;$tB?wh0$ zKe`gtJ9<1MW9rXqzY-ybpk~KatS}N@u+h}j6H{=M9VP;{y^FkJTmkE?5^Cg%*2{q# zq@F-gqjV#UW4gDrnv2@pUu0y+Y?H(GwBbx5l^`%E0oJ7AKZL#k8$HQq2HNzF3U3cQ zu#VqDLxeZuG~G@uz8gC+4IExwD?+{SznRi^NMrK)jU-|ikX19Y(K5N_5_n2Is{NtA zaLg$EtoaM-VfnWY?rR`f3=_IT+u4aEo3{!~4{X3_3V(=WkbQ})K|zElVuy*mhxMTq z8%CxurE2YYpD}eCKSX(?l316Tb%gB?o{+B`C(tJ#ra3)u(^x}SB^U!jBYl*SATodJ zzNg_6VLL-}c^68#&k6h5^ckLZVmQ*9dpp%OvS-G5wd>%Vjk<)hNT%DAb{zsE>XIF7 z^Y*_NG0WldEhzHs!Uy?*9O!OUfk26mBwnjbUMbu^oj|$js(F`uVMXZh#EkgUi)!|w z*(-C{He_cfbs(DE)dw%mUy}ELrAzn3*1-N~ZtGxvRfSR=?_b#%p6;&8*r-W^{+&?} zn-YV<pg5{A!PZV$N6tgO12e1FH0p+fDBt5gU&5?h<(5r*6BUbn$ESq%XPPQkzRX7y zg)d&<s0?=VG@`f<uw&JI3@SEjd@3b~$9a@5{{YVG_Qv2<!~SpcM8#*qmENeU|4g1l z`rgze&>xX_TO?2N`yrxfQ`ppv!Rh=iNxZFJ6@Yg^l;dB?(c4~VDM;?u57z%j1XaDb zK9K<OMowE<fHT3y>KkuM;wo9000q+Iz7BeH;CaUKFXOD(^SvFYA7`Ah6MeD-t>FIA zoD0^0Uh0-qO|{lTvN9<_DOCD<|M+t*^6%9wnc}b;2)kXVg$UC5xQCs7&fPaN)5|pz z?XJ7Pz0fbxh45$zh10F!Pf_Avxcb<f`EJ&0@9lha8H?<o)RDBU#+(PZfNv1`3G@!u zc|Fk7Sz(SV5XG8+Y4vb&1OqP(OO4B5eX^bTz#L)zKAD}<@8Pybae`bfaRosPZBTa? z{-I=k76Xx3U(Nj}3igc@av<k%D6{nrz0<#Wbl5lsg&NnWvnb0Rl;XzUwUr^QnFfwj zw4VG`K_@@>H}DF<pu}I>fnH(o2T43F=C*S?4!tDT&H4`M#3GYi-~Y;uJ~i0}xI%v5 z4CsW6pTqQFm)szI%e*g>XBBfcAgNY*m)VNmUMyLsjkWzkDeBKIC$|whJgep)KojA< zJO)}+f8BIz^ZBea(KT1=d7kJOhSR9xrI^ahz-Yt>j+97V5#G|D(DcGz{j#$W8jtCB zjg0!K$MONT!vC5p*Go^Ra>#~9=xUT*42iT$AtEnFH6xFnL0zRAEJ5P^lt?{6OW33{ zg4_8>=+X$<X7qyA%gF~(Zf`Oq0KfWSH7u}LF2ojhx~oJ;6yg^1;oj{%8L|h5+>Osw zazTtGJpN{4CW}NuI~e!*h55MHG6q?U@q^gvGR6Rh_TRbMhSrN13Odgh9jStQ*}Eqy zUNZWG@%K!B##^%0v60?GVGqhK<3p~%zF+P%ZhiH%irn|BZolQrfmmI`aRNa!0(T0y zkAd<YD;@(8xu0UB%5uWX8Clj`94wcl8A6dnYhTEtYm#Psl*4N)9#cWUau?c%SN_&L ze|FP^Ga3Gq5_R2)67x+}@1eCKL}g%RY7iPS%=THT%kwc?80Tn7BHm<oy*JnIu4M49 z1-}|YH*-N`UwWrfD{9h9t0ASW#f<m;)gr`1L6my1$M-FlIRkPhJ!`M-VcDHE_|Zn) zo>LL!c~m;$97Zh=-2HaWva#psAo{)tE@_}!mJDOnoW(9a?T6DkmIGAfz^snH21|{5 zRQFc*8<k%UJq=cqgVO8PB=hd4&+u)CbMLnc(YL?85U#=H)1q^fOKWl88^#ccnrKTd zwGzov!qY6)36CG2Ej&4{+Y`a+?L(xYmvl@d`)A?&u9_j=Z5(q3b=`^ryU70@YN=_} zZ=MZig$3dbZ*dW^+H7zgJjq2x;KwO{3a){8hc6%Jz$iYm1v8HB8A&)#SNeP`ERw`p z_+Cb+U9m_W#WChT>@_mMt&g4f>^+QQB9aRthd%ClmE6s&!~VPU7s$=-Vd5DMD>i$~ z8vn-IX!+T`B3->=lfH@j&T;uoyu=P>CgdO@e={Hyh?)g663H69h_BG8Sn&)DOE0&8 z!Lp6dc$i`+JBT&c#2y3&xiXTiNv<VT(v@<rL)&NcVY`LUIvdLfy^~J;`lO|&O*y06 zxJDZ-Gr7?mpT2W_r2jQj8lV2XkHm{^)+=x!QsdG!rN&~@Y=>;k6L5Tj+5<^4H7rJ~ zNl!{Jv11XBS7D*ZqtO$7_Qf3<yhr79Np->lE@8F3sTjVr(|oUZo0*-oQ2KJEx{nAg z-BV*xnO$G4JS=W&93-;7*+K<9pR;GOk%6MumIVrw6xZi!Ccb>_ovak-^7O+TPRaeo zH$BKx*oM24QH%z5c%z(?W#Yb*L%ZPy|I{Smt3YVqw4PetfHOSV4O3{cRIt^mjs=gR z^xD30MYWP}Uh(Ra=5)z0P3pl-$Q8Ke5&BBZb614DdvDF@!9_;2NwR4B^>$I@<VIuT z{)~*>tweJ<c1u%0k7Q0#Jmc-1moA*Zs?<HE2-BVA=%lhWqrR#y_s@H5Gk|aNs&%%M z{;aPR{vsT%avP2|d=~w(xEp1Y<-rNLQY1;)+3V|x3_ejM(RscEv?pKG4;L!loKxwz zu(r&FgO>4;$74Zd=9@j26RxP=NMN%}b%f5FJ+;?zgrtCL>MZ&>UDeVj{IUR41RK6@ zUUzaabjv3fdktjtYR4+?lSj+=o`9V{8`nC~axHPK+3mEvb2}j>j1!>)xo($>VF-xK z1$~E{e`1=ZeOzFFsv_K{!j&37E%!ut?Ps7*a9G|br1%p)G5?=zLW+Zbn9`vCMsfqh zKg|8FqgQiFnh_Ci(1K22<<RXOn5aX_7bx)_0)$os|Bc9!2u^JRA9g|sW5wkf_YjV; z)!bn)Gn@6*p_NHhaU<h!+j%xxnjC*15}-<$pd`$`e;)r{!pwW@_tH@?trQPSel4YK zvE#D%=9oIkg^Qh#e{rNyl?O0EBWseBC8}cuVyxyPDm+JZL0!!tqo)0=v$YU%hf`*~ zJlR-I)?%NkzS$)&z|?Z?+@6w#kQXROQ0A*eYb4|whYZhrMMHX8fylG1E^dv^jC8GC zswog6GU9;T#aGcldK9%zFv3%OYPgGVW%Drou>VcDaFj*6#7<#0{5NCLGfIGMU@$#w zc#r*^4F716E;BY?uxc|V{!o~9y+0y~5mBdDm(OJSV0Gfb3?eZDnmc{-Z+2qN;zIPU z26$7@(O^J2cj6yn5id4O0cf$n#;0^AZZaQoHKKFVL7WTJ2btDCnnC3MV$Wt2({{99 z#!X$VOQ0`WA!+pd!5H?|Blc<2W5j$8YzVw7DybFbxR@@7U4P%Wph~h21g|SN^&+_x zM-CK-juZS5za}ffioQEs#LySh4@;dZV2GgSv9j7Qdfa%VWONw=$Tec9pxnnzKjVh0 z2Yz%5=}cBlB<v-SpvY+YP&#!<kB115gB2bywREf|maeZ|T$pq+afj_QZh-T_G*pE` zKEhos{(XYnAVFyvt7<+2A@GfMDJN%PfMS4U_YQ)h<8PodcvI~RbLA|IQf&X$t!NZj zbHHW~x$RUL-JrWF@PXxYW~sj5_}jD6n~Os=;6mm1YR;2)yJ^@^KNhHLMb@(DyRj`d z7b>iwrSx~;IXSsC5&Y}LTq1|7NA0$(@AR;MLy4Mi!XQ~V+o19#_)N?SQ(;P*in!G9 zcBZyIHt1l+`Gpoon5=7vV`Hdn=x`Mye<|J~CRJtDOn>%Ud-w8v`3)O+X_o5t)XI=e zyzPxt<=-7|oo?MLohDF`zkAvk)NmyoSN1~yy{Q>aRv6>Y&2^F<NSGu;LK7c-`=vDx zO*Cja=HJ2L6hi7|{;#_Mr!&^TU{5LXKzUHK9+blb{#;5HzUqAq;#@m4jSs5BNb}In zTX|&lB5>0RUF~4vnj<efWG8Um*uhw9;$8;ik8fhJulKr8k}StvRB?eMw_FA!!h7vs z10f(~CYF;b5U__p(gW+>2|SE@tGM0-Z#FPCX}@V~3>)N*b&LYwjJ!{opBj!`8>c+_ z-jD^!$mq4PHk%Au4~<;fGrkfHG8Z{SmlX3QCF5b+*E${J+GBmiCCe}1u(Y@{D|cMm zqEHI_bYkaXP>h#y>eXhs4O^@n-yYqxwbM+=g3G^TqNMX<>mD5?j{ejPEyL1SXdj1k zLE?jj!nD`l{0u?wMMtYE&4KdFjD@(V>&7bcFIAjXL?8Z%!Y>VbC}eS@a{G>9EN6iU zvBI30FE#r$Q_!vI)3hArlBBvrm08NdNJkYfirOWhHxIAWmVKfyfbgyS7Z39z;J=(K z<$MfQ2Jz+&UC;SBbEn82zPx@eS0G)B<4@4dfwzHH@_@1==^Cv4Lt%Wq6{!s+RP6C$ z-Bti~qchP7)pQ(M6IsJgO2qLE$|-+KGHh;_!*R6U&*0gG%q`Q-*fJ#rwQaBOqmV2% z?>Mp`3}VF<g$@#H=0wMg^3fP*H^UHQvb3rZt+OYc9=A7@koRCB_b;88KEk})1%DoM zVCmOxY!i5Q;{DX%o@idG!)aDNBHT-a^JM$(Rl~4|R;#22FRzxM!af8T%NRnzp=Zks zY}PdasU6$NR2@Hg52NK`*g4hDz&?>(Zr*fXJ=#K{Ytu_4*ypMygk{85gTm1W53j?o zt8i=myWA2&UkM<LSbJR_67(nW&uKO1I*dmxJSnb_1X!DocCRI)vj|GVkdGj}Jr-BL zy|%?O6E(rrGmO5=#KRp&Xz)BE;~m)X3zAiZi1wwheIbLaNUOU7lq@Mtk4Ydzp8=ss zqLAu^5;kca8dLXTT~lh>eonJQZ_MW!F)GZ&Y?+I{dQLLo_v;DTsaeF@*)w)g9re?- z>D;?zulRVNegTo)vI2<sU?ZunC);;J3vn^%!eT)ISsx^dl*X<l*9>RT``zdh0+zuq z^K4e!HkaaJ^*_jM7iMQUtC_}lHT=_tStx(t{h<9613@ZrbnzZV@fJB_5Y=amaC9n} zZ6t@q48>o#CMdgD&h?zI^)vQC%2Bw*yf)PwOg@!c@D??T<}9??&g-^<;v{!NXMLG* zTDTwQW*3PP7+|rn=MZ$6&Uyzc;1ILtUN5>`JAxfABgj8S@y!Xsf;WG*(|Bj}V)+ho z9>V;#jVQ=5BERM()~?L|@ibNE3{QbAh^rP&dNi{6FQ+u2(U+r_->nDaZN13qVLV-q zl=jWjBtY1097c<9*f29u1ymt+V)U?`jJ<Y#i^fpAD5MHHjK&?mUry8w$!uY+3MEPw z4Sm=rf6Y^mazAgF8*>T(iN@;*ru4HCLzt%)^8SW~DQAh=7%}P2HPtj=aSY>aUUN); z>E|(^YE4Dl-W{Tl#x58+|J~=@DvljrCdvJ=D%DaeHPML*|5Ef2`h#|^PEnM*{29;t zR$b57A~I|~$uKI{7u%S+UCq$bp1m=B94qw4`JzuM5BrPQ>&YW7Z5nf0zz+ng-g`>B z$M~}!rFY3Pazlogp+m6`c3eFJ1rvu52K~m=aKb;K;F}Ut-PD5TkoccMedxB7b;O1p zTP{|N*&c{nGE_UBHPG)>(YoXkFUIZ<DMsL<wV`eUIc<xzFV@x68YE`*XHbR1SOxSm z!G%*F;hN%f?f?daK<rt52j}51+=5_A9P<%5ts$FIU;icEU}8EuNTjDz^m)4w#5H>) zpE5Ok0VyxjpkMlan&78l2Jiy^gkp#<#)dAxHHz~3N$ptkwEwQ&nAI4rCZRgVLa71y zARMqsa8Wabxm%vz^!(KRNb!+d*b`b4_@U+A9f+GIwB(XbAu3kGlVhDCi_eP~9Hpkk zzR5G$ES0*gu1N<3WlTAbkJ>Fz^I%Vkg;e~bJNR-DL}#M020go}@XpEp_Zr`)7Cl5Q z2rs?5uA#}l1H)!vyaKa&V)dD<7b7yR_M_9$NGJ%Yr-#6c&QKwYBg9sY(Cbch#!J?R z*AfyB77fboddWQCEWRyvIYn7g4>V!iTl8Pm=fb)q;b<ABXS^LpSw>BUmk?Rgwp=Uv zU|w!)$Ti*U_b`$*Z6#+m&GsE!6H>wF-w8ub87H|`ke0#jppI!*xlTk``{bVEUq0M5 zx>_X?X))j-SZrC>-gUvdIm4>wute^hadCYJ`-Mk){|b)t#Raf3k7`xRwBCg++c3o4 z9AYRIUC2J_SDCPfr~K)QT~85rcWvvYo26#y^I!=K690(I)c6VZO&(yXcjWr)Fs+%| zo=7b)k{1a>Pn=g1EQEY?Vw_IKbQ%0Z-LO;`SoOe<PwJWA8fI+(F+bFrY=CJjH*#L> zj9?nTBzopLCEECNok~HNzJ6fy5}iOspfgtZ9CHGkI+?RJ%plHY^a?Ds9T=g3O1c4D zstLapN(BDZM$)x$CBcVD{YKnLxLNluWpMzWdfLn92DaPMVcbx3fep=b^)p;?j$${# z0Uf)R9!psa8R9cKkLFsB;WlZPujmKvNiD|+hX3?3Hh}gQiw-{UYUqw^(vNbLj*8_j zyQZE=mxJ>eW|?RDn`sC>GP@9G#qn-`SO01Lf`D!9pk!!nIV7@?talj6+w1$S#p%f| zFfxo-{{ch9QO-}kS}BU~TRQiYV@q{LqEn{C%N_rl#5QR0MhUeW1r_cMdNn!A1(RiM zTaXnUJ;3<5i{L)9awy9`7Ps7LrN%2qw7MA{*3dAX9a@}GkJBPPv_XSb!AYl>5)7G| zyzL}2GJ0Sd-oey$BwfPu%+BGNNTG}o*#&}2d|kd!hrc~HS?nVF#PEEjdQmjSY46q! z{9wiXU=;=?1AHJ1X=}1d+X?1T07h-^UY`xqs!7xDH?@_?*xqowAU8*o*pg<@1P@3= zn40++RDfsNIjv}y`TK1Gck<>SmsA(sp~`PCowkF)r=+nK7i682G7YV(`aWU0Xg8_z zCR46fET^)`7bq3-yQ$jHgBl|N*~?id@suhZHn;rI)I=3;lVcv<e`=*SVYLzY(PYLN zAs2$mXB&C*K>CLtQu)eKvmiT^z#_@{%{fOMVc6Y-3VPfU|5YdMw6VXy4JS#+3@xgR z(pJdZ!CaFsDfy*t2i)hwzP2a9<Lfnwgky~p;xMFZ5{^&k4!N@!bb){$_^tSWnI({% zS+=Vgyv!e}4S^_fT1m94w`i(sB02fXo*~N|P4#%pq}FaS>C^=%3WfncwzHG0g`89O zkd<?9n%}~q|8f#8W+;I?{kjaz1BzKy8GvG3!orKm?zss(O6bJ6)_|qB>YZqBgmS$8 zsr43%C!vqLGQ?jq<N59BVwhoKreNpLpl(&wXytTKj&^~XKda>xa-panwYOlnW2=Gv zU7?+LXzGJ_!Ea8TQ%<p?bXbVrlji{nz4_OQlI^zRYAl#5y@sG!(~eC~sXmGZ3^E)g zXw+V4a+e@TJDw?nG-x7{uNK6>b(~ro?^6#aR`t{1;J$JvilUs+2(t*d#lZF`9HfWo z38R3DA*lHQ!Mpc_tS-^gROGFx3(^QX)v=e@#(3?vL}dU{b7Bccc`R`CNb`_YBjR@k zIqcN8QP9GC!Zq>OGR?0SH%5Q#!mwHkInXRYF)f`q8@$ahonj-=#uv(rq4pH;a)XO= zJ}+K6N1?yyWq%-K+#pW)_x%6m)@m%vTz<`wPwo(CnL0zT-g{WT!YQ6uBH#GQ3ljlN z_@fXi&%KX?X?F+KXaiw#+7$v5QY{F$qg<rh#0=jih1tqPDXg1J)W%C?{kWjT%PbKM z$Md{f{B!~Fryr9)65`W&eEz)ce$w{p%;=;Rz$_?$qpd1&PKAG^;+`8Gs&Z=z>{x`f z&yh(FRDIV+5O~&U42Q*IArtn%zZ1y#`&R|ok<ll9g-qxEQaAf4E^&AQ8-&5~^y3vD zk)kw{(A52qeYR|3n(V)B<{Kkz<2(LokBkkpHn@_>LVw*t4F;c=<4oQRBcxIn8EnNb z0xAgzgH%d<hRGEkBsx^RY~jvmNKCu56&Q=Ps3^2P_tdb)-+mC!`(XAFIbRJ~4y5n_ ztswDKxNlFm_L$_lPRFRaRGoJx(EUXokbHtLkx8$qXk1~qL-~Q6ipMEH<h`vW&Rs6x z5z2>*1s|9Olq`^QuB{y7h(h=K#gA<CmR|LwNk#RU#X!SG8}<EZ6HX83HAi`}21XDG zmq@VzxJ{|H<U^IzY~%WkzgLd27kjAs0=1H7*|)9Tq)v+EFY;(>zMx?pxjD-~YPfqP z=^2@hycK_N^Vel&Gt0uYmUCR*lX=-Mgu`c?W_mL9gxk-}bugq?AT?CC3s!=HUlU^m zV}IZj=wE}LTE;xZ@2<j7A|ky18e@VYnF}e(A~iE}vIxVR_B)0+<vO;HYsx>p7Ln=b zLw-{{5m~3pv>`F$vO~KW)PkEURAQDCDT@swjS922<i(^ca=h@rVtxEqckDWHXOz<8 z*a3-o+5wIS5e_sPe(~a0@-NkSRU6rm?6?@7wn&gwJssF44@kp!PE&$){IuDb2eKg4 zL=9Q^#=OxB1Cr@ct1o>$umMs~PksImrnH3x_<gjCZS%6cui5lm%B-gOGXf}_#%Q1X zTejLPfzx*MffY{Pym-=|cApl1zMIMGLI|$0_}#ko7kw>RgBa$4FGTWw`&2BySu{5a zGh(t|#T-!K)ZF+Op5#-b$9llpy9FT~`EDsO&i0(mo4eVa2{L4%wStBe7kA3N=GzRm z;3rhqiStd8UtJF>M#*NdfsBw}$P`@CPVJ5zmL-vkk6v--`aSC#13gz(1UGqmOQL$2 z&WBC})p*?2Q(>Hojki^zgw&^?C;n3u325_hxdvc$CfenAu*NV)AdT-kU%)ag*qZK? zp*+K_v*)kzFs0smW=9o*X#KL_F<(_SnscRw$@(2<!!3hs$iGgcLA}u^v1V`T`505i zZ?B4%!t1g+-v1yZY5rC<{S^SVpxw<=+&$U|WTJg*;E<z0ND+p3)m|0{n&7G&C0UXo zz_Xv#2`}-A*^e!w7tq$QOX<tN;ci1z{Ck5{b9_gNV-<NDV-aH;{}*`I7F8P|r#ev4 z%OpyjAyXt;r7R{<`{JQ%H1SC$m~$y9TA~U`%KEB7HBLw+v$dVLho}yFgz(<$U*P;D z(Bh4>63xAolqi9&z{YsPUfGrd++9{5+9oO(p2k=|lP01Ej>un=?9u;HsLd`YJ|yQ- zUS0A9igHpwO!!dJi1wt|g^-6V7iu_Dme}2vza-_R<tz52aA(vv&{5^xF`Io+(f(RW z)+2*xq1o!(xI`Rjou6_$_uP~1FH~n1J|M$;k-crQUbPue-@$-z$@rvF+=iC5PH-kt zzK_Rp%14C3H6~*$4*yx?zU{(+&n|*_WjwIoKk`whYU_V|z7Qj$4awL4Rzg<g)pbg8 zx&xtH{@6kE`9*v#w01m0xbImlr*Sx{PbEg?;uuvdk7r*)IC9SJTHAs*%46ezE)srF zzBZ-rcUR*9@17w|p<Tc9uaTa$<WSZR=HE_50;}&+&dI-FTJ*N+a>D*8xP>PT{r;fN z(F0iHGmA~;L?1*Up5b&|--*albURwuj<+lSyqPw27gSw}A|<=jO&qYsub4Jzu6_{G z9uhFn;yf`B$jaZ<yh+3wmLUH`_A1B(__FC_kcHF0g@H9uW~P(pRK$J+uzLG<2T4mq zD37K6)=khzNahyW9Qj`Rk~{?e&VzO)3o;Ug4K?EOi^v_mab#$39U71%MJ8Cd0U54I zd@72FEUWWjO$yq8_}yU$D%G3_&6eMF*7)XqvKvEBMfoB>oU3}8U~dOhZjtHTP?lPb zUFrgRhY&~iW`s?EAUT?rqmBmV(R`55_;6=TIUNw|Xobn%!^z(WvduH}*1%TR-PPji zNt~*Ahn%E;gbIS>jU2iRla>-o!zt;|tR<?lGX=<SW+Y)`Op|x*J(%_T?Lpg;#9=nF zKK@Njo|t85dH3qRcv=-Yj~K{3(Ezq{+wy0+^f&l5(g#6nV@h4n4ReANT{njVLq-2$ zajH^GaBzGUu+`n!aOo>U5{-v4%*6Ce&v8!YoJ5V6<&f!5gCs{ffvjwjH7oCx+m^IX z;a!oWfvrk4h3^DnODFo&qD4S(JLi~=gYnG9Wbh4}RWFm!MwRuRjVMNlCMOmedgK#y zBH;Nv3B;*%HO}=RV+ro+1A+X+@@hht+pQF^NcjDGc8f1$S$S4+Ep*gcpkz(M$K{_? zE600Nv_BcNF)M{<8a0xTUW?q6YLv-!l-a!C4eL(Gr1eX8YZ~_hGbBVu@t`Z2Ekd~C z{Cl$SdtEY_Q~4`(M-p<XyK%k+qF;sKTU6RJn3F9f-o~3ASXoacHtF3xOSYxT3)Y<E z8etg1a5U#Es?RP<YE~>M=Y}O-Lz|AuNd<<^d7Fgb^~fYT%UD1&3rULau!51sn{5E< z5?J@(MsjHyM+5#pRpLGF#z&zDb>^6n@hxHL_%>`gff?=GM87J89kb6M5Mkka*KEUD zbMzpaVLovJSnGRR;rpT#{>c`NbazCQ*{WL62?RUi#F=((11qVu#oxuz#TmzOTXqdO z`nbjXY^F&kOCCRR!53?VC`Wi5OX7F!i(^CkyX@HfbyfF9W|w6@Zb>VaVLmtiCG?q_ zdqWp-={@?Jmaz&TvH$yT`$f$NwViX%t88)8Ize~Fcb2Rys@+DWfchdM){4!P`6?pL z4;h{K^iG2;nNTH<UA!<+V#N{0Cn_pkY<|u+B&B~BGBG^;DMwiJH+Q{*1XT&-%li<< zDGP_-i3{(GdT8s7)=i3+9W`<6noB7Emhfi3;j*Iz-n_c(lxqV?9J-GZfH6F5i1 z%A#Lk6^;D&eQaxhHRaQ;L#A5XZwmEPKi5Bs?2M*WcaUaz%1ZH^v(tNR_2V4a$)qRI zlzJgHn;J~7VY8zy9>Q$&QkR*bkf0!(>z^y4hdkion|$+138qhcl&vaN;E8IbD*gI+ zh6(acc7&PLyfjLdGBFOR4-K{zN}PGnWeF1q7&IoFWx4KQE!c5m0Wi@~KJ>373cBkk zb-|U+B;F#U*b^IxK=x@rh|)*F*p2-dME)_fVxf{aHt1FyZl;XV1gkx;Ef2VS(3C>P zqKAmA8e&A#OT8m6f;&1TWZZ4IGK1n8{JM%E>j?$#i)k8o<brz}ocZ+fD=K1sg~EOY zpOkinAn|T@)4cn`i5~xbl=Ofmlgn4?^zymE!OoJ;zovvbuhoJA6>oY~#RXN74qqu2 zG)wGW8SH)S-Y+2%PNy!K8bZ_O8Do^S$0{than0?DZ&xp?gpy~4uO~@)33SF8Lmdq} z9hG_I>@X6VmQ=!SniS3Hi1%Oo2heA<RR*-rIv!Z9jIhRTs{5svXLgEgeyzG(an{)@ z|0G`OnVpV>sYpAX#TW}>v;XqE6kIUuf^qWEql~UsFDbQvPEFSIltbXq^CdTgL{)kB zOLYC~-L8R3EqQ4}swpo~C+zqoVV<Xdbv$>^f7gQ)a{0!RJp1XsuOZyC(syO+s0e9k zHCuEXZdVgXh`4;VKxEb)mf%gXuN2U~CATX-u3LKh*LFrHlr@V;W}c)c^i%09$xYXz z56&n{#em7rzC_K>Qt2P7Bt~YEQ8kP|<npichQ}M$OxemJo^zMG#(ddevR2YFOB2!i zMsi8*i`X!_&le8@9wjiR;-c+Mu#$p?Xca_j2u|R?(gZuxYLRf)qE#xy(_@FE{-L{G zyu|Kh3t3U<EmKa&F!+D<@dfOqEaGqKJ5lL?G}3dlg>$s#y^X^So+Pd+xCVQ&E>2#& z?1sUoyPJhp2?}Tc?aWZcX1j~y*!e5eEetdPuWayV6rE|tUl26^p@7H5wRz5!e-buT zjSYlwKttgHWrU?E{eG`EntGR%MCUtL@zV)sw`B0sGqIVI+|`QX=pDN|CH`W}`$;@Y zGEuj(Yy>-Blk4pW>lV~d{UZZH+bE82;3lfe9+-U~x-;a)+D9L`+q^<v`SOTYTodJ; zd$Y803^xG2vfzvtl<6>h6)=P#hAp<A3iJ@~ShQ5~`ijEVjYTZJ)3m#*QI;ktMH^=L z=bbEH{@qfL6!FVvdX;xGIH^2ITAcD<;Yc`B$Z}Jt2*g#-`)7Orgfde?Tx61p_Ispa z0NH~T@<mEI9}fG>FuyYDiZ377Tn#yu0$s@0IoY44hJlN2u5kfR%A>EyD-oq+Mo~## zN(b(7=Zkz|8F2-fdDex?z4H$rA_x#%v2i@Xk){n)mo(u2N;)fxnxlip4QH+|H-e|F zfZ-q+g#01C!mPXuOG=F85Km7jmXXq{^9wsAOSR~HV9$0b*1VZN3n@is{-~7iv6pS% z6>PraAJ!*rFQ6bsQM!S6GCNoQN?2gE*|{;HE*g*^4#6FQM~+o;b!NfRbK%o=9G8aX z15tFuIW-8Ll!_fG$n#9CP^fJ=N5K>CtOZd(&#up%ltp^N_%EM>2|4pZ>THoudEN`I z)nMmo<X%c6TV=9Z_ph9kzyT|^km7b*zG>fF3w5*}A}vCXcwHGiyg~8;Hh{7U#kRCw z`~?2)JM{WFh*ufD?&A-b>I*B&+m%zwpG4<@xP4&B@qE$&vF#N>Ys8l)J$9}>ZV`)2 zkB0gOC(5g4!m*l}XLCEbZHNB@HbBY0qo;{=M55nR-+bhK^L@d{GA}LWeEf=S?Ly=c zI~pf;lip%c#)64uwN*=mdlEC(ZJhNX9`U3^*3DA$#L%;j*gqGd$?biYx7>*avps|V zIhnv#dQdBGG2KA%(a}u=yYEWbUFc}=;eW=96h4DXhACE*6w(jIr%C_u?8td~nyrNQ zs;7+vZzkJ!gJCNq#;!a3FfYia)<~G&iuGKHZtgZD4yyaVug?nd(@gwKp-iiC7KGAf zgyzFUN@Q*W9(xqeD5Yy-pQz>?Lv`JqlO;MD2y;>Yk^k139Nw}@gJfFV<Vj*RCCoeV z&mlukC$GK&S)&7e?d6G@aQsb&F285d(aMV1m581*g!P^1MNCq!C(*z++C}cd*+t&S zyU5bEmDNR-2q#kDxowsh-urbK_;olwl4_L{Y8p+fbujO+(-%&<$x&2V=3pV3EXUY9 zQ1m%_USDZ)^^_{}Os&H%_KP}FZ9lWD6&kHC056Z<_zG&|SIq{rswgw~R5<Gz_)_)> zSvEL@ZJ=tS!ONT=-w)C4X^RS%ak@J!xl7#WK}V<9Or}PZs6^6In|%O+LqSz1!|&?z zS@ssTYi`zf{4Lz@kBUCL;BxVS7s$*%seTu+GJ>|Jv{z07v{R)BYNCa}EqONIHWhRs zWd3qlo+-=}e8j%Bev`ix)V{NYk9ZgCxmqD#*-P+bMP|`Qtwwy+FsPs}>$0VU++3Id z%)w<3T(eAv$o`xY!7r@Q*p$-;%N~Wq?<ISmuCVQ+R@dRy*!DwXycPQEJ^`qOAw`4{ zzGv=pU-x_+Nt%wkRZeT66~{ALU`~wwJxMGAWbe<=m`pMj;f5`GE<F3~AFt{3Mu>ut zLPBlGG?;JJmc3T<DOuIMRt`{)f>_H5`WQNoOHrg)*y5$l$~~%#hr=5IpNHh05vKB} zC{ntm?}dcbP(NnPUeKzS4L96~Ebq2H5Mckz;7BS~)CE@E_Xgq2pp@@iImWcI+IrcG zqYB-+?f|p59$2^hu{%3|6#QAR<o(ohRl0`xqCAi0ecmnVI6SK3k`F@Phea+oHtfTX zPpBh5KoQgzJ+MwQ&3t$=Bcc297RV*q(j9Od#ZVc2_IY|oGPQ=Vv&yi>DX@Ie`c^f7 zS0;xh)iOWDDg?jKkTeu?sA`WynZ24>N2z1UUNgAmC|i%xHb0Ww8`$&GQe9L6B0mH5 zE(c=A7N#Qn4R%3P?gNDcvs-a!HsF16eWB@LWqaI}k;m$Vzt1|@h7W@sd4alKP)$(g zQEw*f#Cl2OexqB6fKr3fR&T4(f3>x$%r)BUZ-Ur58Gb)qM*0Qu)qljWoj&tIZp!-* z&|M)ua_QJ_S-m7~=(x*i10YP4Z6R@9BqWnQ0V(LkL@{xpISI13m4bWx5eeX4YCe$b z5x5^!oU4oDU<WtvC2f8TG73|+M$vb(>ezB!L|zSin9L7r#&2+Kek+%cN=!_6c&cM@ zg6sCv{$1C1Clzq-?9}0fDI57KU)AVX%xs4Sie7nacNsLYGRFY1PTxWnLUv2i>;4+w zC~~l1CeA=cLq7~7A#3=@AKk6dxtAVTilV{2-IbrFCu^)$x%D~q@U}xu>LmL$DsPR> zCex@a&<?5XSFyY&6|MAH7OZ%a!zk15A`Pio8W~aM9xq`>K$|GX#bNZWk$mal^rEAP z8<=@8J%T(171%D`waQh1z8e;dbyaK|b9#0lN&HnTNW#Egw@mv0?dVf|7D$PGTU4DY z^bnUv*LWh9kvRbYu4XHCn_lg>j&vBF;UMX`zOu!f)Xu(UKqiHCtq$gicAeiX6o!*2 zxoy^Rv?-vn9R<xi5A9(iA<0arNP}}DY>K_fn}STA!4kDa;i@t}ZwaN5HwVImE3bD^ zKJTRSto^)}J9j+zRnrBgPbQ|&b1MV$S6dfQdFqu4T11lmUuG2{Mu7)uglgu;n%9dl zVC3)w4{{XK71dE)be~&v)r8J)pb`7O2ti-1hCr`aoaaN$-6N1&*{#w9924Fz+JJ=C zlU>P#ccbw@eHcO2Rhx<wYi)4f3;E1MG2}p;-3{cnGdz6}$&KD~l8ECh=>O_Uvug>x zF0;0|aZ7K0n1wt3=GgD_=6lv#zPL^dGK6URW2;wtEmGdx4<Uh5@xE#&Ct4)K%|sJo zf*Qf)%KN|u%@%w1QP0aiY~$Jnks`j;l`q?qz%E&LIMw#KvV#;95$cQJ5M6d7*w)hf z;Mq=_lu-Z#gRXorB12%@3WfeK0L;UOw*wl#{dpBDL>21TCO|WYf`RJo&TW^uJdHzd zTIlQ%AYhGI5eVxhC7-8;-pc?~ie8pxz)VT0`;~V42OF^>tehf?FNekx$tE<BjtH5I zIw=GC#<majz760l(LlS)wM=%4{<-@+-s%X`0|b)GpaIy)e%d(aKt|k#%Lwe$coxt+ z?RTAtdr>!wYb^HrL*Eyr|81VYbYiwi65~_`<keMROoWBEa}J*gQN9I;x&DgcamP2l zl&Ih6q;Xy&cwYctcwY*wiZfR|DrtB<4?3M!pA<V;w2uq;?rM!#8i+}J8XgS0WBj=l ze4zi25Tr|S$zh1m_kudB+S$2Io+CASEwK#u!I~_EE4pT@$>d$lb(a8-^KnI36eE!4 zT2;z8-&N~c23Z~zrN<>Bd5nLk@1(1XC{WwSFaKw7<PO3Wt!8Vd2^JUq`eFDC=8b&O zv|A}mPr6&%vM&<Gy}RdVVvQOZX|t^7;2H%!&YfGM^NDN63zWgBNwq2RKnn>M^LLmO z>0Y9Arrz^Hut->vsOJZpn_QtExNF-cPetXU!^;4cSi%rGP3lUM-@DL){BPH5rxD7< zqxRgQk;47BBZk|ej&l7_yTbK1-JneR)IiyR5m{19tNOgQELpF_B#XAD0slmybG72l zXK|cOJ#cq{WdyEnK4(iEY`u-glZ|;6Lt2qs`UexLL}gV~5K!t<@|^Ch9o$U_m!t%! zM<&@bVIJfj^sRRck>V2t0JWO%JkVHjuDGj$^fW-Az*b?J0uuY?)eS*E(Bx>Tw3vk_ zrlbK4WS4Ei@F~$YgdafZ?gIIj1r43L@#>*Io*=j>4qQoy%^Jf|Uz!h15oYlz49GQ2 zT8IpPa_xPfH345?P0;0HurovNKf1=}Umv1(Tl8jYRAaQt)E%$W46zzNW_G>71aV%^ zT(67IAq+Zj+U+Sn;z_0KTPzN}5FFAjd0Rs282m&0D{4jWZ!pq8y&<5j1uWas{BeX> z{$*<ei%)fJ*^L+`pQGIJNf^ce;;KD$`#J)TuJCdvpHkj=Q)Xvy5z4<`Rq;cq6rZxu z7sHMPyZ=T|(tN_5X-xDRyXZ?{g^f1ov&ZNnMkQ85!Pv3RQ;j?G8b`F1P`%MuP${S< zY04x96q$n=i`|7uE%v}k1?g_PYCCq_4lrAVJZ&vZDIi#B0%q-y7@j?RNHUxy0gqtG zmOjcPlS6GRJ5=5nt^V(u7h)_L?@c?cmG{|+D>*<cjS@_AP0;~;%RvysB4b?uMnM46 zDc#@!Zl`O1%W4l{?BIzCn&T5b3BF8lWkp{?rosnT<KPtFt4Dr~6N^7*zOu1rC*D6^ zsh~m{bm)Zv-rCLc;1amN+~ffCz_W>!ZgBl`eKOkrdm1|j`&{>h255V)NiS;~mkAuq z-Et%}x4W<l$}HK(a~5YS><M<+7%M-MajU-o@0tO`G?=m-G_4hr7?djN%+pK0Nsowa zw0wb|M?ldR8`3P!#F6#XIz6TqX<k<V>ec~b;*fZF66W8*0WskYqr}cDmXqzUV%e`k zqxiSppjq^peh6c@;yhA8peC!VYlAs88Zhe}<$X4Cd^q~m+<M>>Y;wFs{h@yJJZZ!A z2hK`Q0JCYoSB@tsMGcLL${mFZz%qmynp529_l#;%Z)4|*wn|S5{l~nQNqHG~&K}q6 zX{Os1`B<#^WjF``iWkLhH;`L^x>sZarKPe>&a`3*-v$^N$TKcsEx8-`dj}Zuq#wj% z<Lz(~Ubzvs%o=3khd6sY9(HmFDacSIPx`lES!(REhlCpy=*w4%``eB$Jp1yyoE+Ta ziOV!X)$<v39g0RC6Fw{%Y)m0THA}iXTaWX5cE}~}OH`V*TA{;fc5K=pQh>JzNT}V% zA#}l^b(VG&y{%lxKn#q{%s)?+Qx;7)bNModVWvi632t;4Si&5#h77t{uf|!az#XVF z4NXOygn(kfo(E(r95IC<_lS7JVFS)lk7Ke90ME80;Fcf_B@Z%xJO9;-15KX)_33b_ zJB~Wods&U;La&|o22{w2BDd$#D}?@qC9#&h279fLFL)=|D52{l0va!bp6eq&@*a*s zRxVgrHD*`Ri|YpyJSt=*XRAyS-9ep<Cv`6+uR|I2`FJCTmuW`-D0vqnwmy59D=)K~ z2Cb<9_Q>>P1Sg=Qu1Da|<66bD>28kEU`Sy_XS)dS`N!a5Srj3=41d9NpUrnTetr(Z zqwu(R{rr0lE&9dmc+gnDg)2tZ0T4ZQk)*x1ZqT+cjSq`GZc1ZFDkWNjQ<WC26aMzU z>gUCj#niYa&Yka34uNPbaZ2sSF$ce}A&zVTM9jwUdMqJ7KzUhk-Aakkcng!>{u5Lu zkKB4`R3{fjV*>CSo2F0623|8%bEpwlTM>TGFeJjU0<vBtOlcNmAI0Y=eyn<A8^ykP z954lH*;TlZjy>^`{12OnXtJ}4!b^vYY0?m9LLA-eh)L@4$IX%`*bgmx&r4iLB{5YJ z3ge+%5N30@H=v;Sn-peb>#43YVK77IX_h8!zRHu7EqdN+9&UTN{=d$5<L*`@!C6_l zd4owA=h5r8hk*GwwR?&<K{IV?ohh&HDbW^d490X|#Ii;-YL-BO@q#Fo%k&(2Pj2_5 z5E|oT{rRmU;aR#_N1$+YQUH`dIkt{o3qig84jHw4a?I=g7~LR0!Wh2e)H870&b}Hl zWFEM^5=h$uEI${yz*w0YNt*!|v&L^kB60p$UYFCnxA~1zlFeWyj_=e&8IsfLlPr-k zshyd-kW{N5;Fx_?!*&i}OKrUT&l$ycCW<tkwSWu`Z*4+vkm{4o#-vOrck^4^&a5)q z_m2#tIbjL9v}58oD)q6D-Fhnvmya72)3pqsyf=*?$G{+38cAe%4`c?Y)#E)h;ypes z9FgCY=1c5^JL0&zZ&yQ(;W1Fjo!_tIl-UP-TJog_)*+#+l(>;n)Zv(!o=9vhf8(+8 z$Vwre2?6^2^Kv^yR(M^6vdF?HRI59vz@oK3E6Bo>j)A_P9ZCxZ*-;t*7Ju|GNxr4L zmi0>5go&plkrY~PXKfd*ajr9A$oEl#L#1=AQX1Uz@`WgL?<92rY-ZNZsRQY&Tg}2r zJ&{i-M3LbRkkhChqtjb0Q6@{rMD<3|Ph4$Q9b_*Iy`BKdXQqj})#4ZY0xXxdzODiN ze7p!rY7M%5>Dpk=B;@Qft=m#SJ!-`RewiB1h_IOZfwM5*j{HTGPKXiMJ2vr!6dg{j z9Un(R|AG6Kx6v+#XB-uU^%XkSQ2LBic)4A7?`Zly@I@!#R7#QQG$LYIvgr0R`+inv z8l)~E0CMQt^5)J;h=ICjstf#ug%YshVs@_d60BH*L3GK3_lA<vmLYe%)6!Kc5_e{N zgW`*GNXm4UtswZNPbFf>Qf}V6`xM-6%!og<#36(@_<&-duHvETiLIFByLTPHkP$46 z@_~CFHo<h5J_12rW&jVH$lq>?zr4a`YpPPOKNZw+5?P)FlsY{zX_Iy&L9h1Lr(hO; zqaflXUP44ms|2&etJ&$4AiON${bdcm23t8v6X*|eL1M?KMdFCmoy;m;SnhNDv77om zpn=^AO%+IY*hmT3`0jG(MK}FwFZXg@sFYy(ZMu23ZFxBZWlArc@ZJd#&Tzb@80QEI z*CRmnBp|=F!x$&Z*|5G6CWj{Tv>HuJfUh6CYet?1Fui>oKT%xs$9_w@mfNtm(?6F5 z3Xd~OL`z|ib)oCKhyKhaD5Fz!aiB2q{P&tGIM(IS{POUC@Og^XO(T?CV!-;|Dr#$C zHqGPU_89NXj3)o7xt7G7d{_5R9llT`xx+c+je<bcWY0<L%aVl#m4(2B0?M?6O0FfA zXSvpZn3_L(hPr)<yxQBai<k`O^YUqu@Fcv;W3UMhfYs5N-;a&v#Y-~q7v1sR^45u) zF5yi(BK@lmOP1QV^iS7UQxSKX>hIS4QaUV(h39Vam#kY|Gi*=3*Z0QoRx$44do52= z&i9;)WXa%QPPY6s8mR&aC?cW+2*OcjQ#`m>(#Y9BNId0Wj<_Mm?+^Zh_F`XUH42DW zXz<J#eq1c=x=|+iI*_y0^-(<9h@k~PgH?h(C(%B1B8%OVeQPRYr&!vA#9tn$nV9s< z$4$XSXA$6lBHfz)ge58<`cdJ#V=s>EnI%Z;!A~1Eym%G5@~4@kTRrpqZ_}&FqzdO6 zLH^HgtwMKAJhS*wTG89lbk<#(6NAfdmtb!p`koT0LZm|Dp}xqHq_yqtPG70$r;?gC z^aPVb_OO%&=B+FfiZ!SD&bh>vzNFM`3CVU$Lf)xlz*V$SohwYbET1Rlc8JQ32V$+R zCL#NdX}0cIweWkNF;eJO^}~7F1UR7MTLAH{msu1kl2Zjr-EH!rKKVH0w%BU^`WO+D zs^!?UA}r2J7ZDTU(tkkBr##1&U;L`>1&qe%5U{av$-J~R9&GtTca<?{t4b8PqL&-L zR~apmhFo;l;E)q8C(uqeFBZ)vjeWa0gkxO9(pWn{%tma3COHm{YzNU*yl)NS&>(o2 zn`V2sZ%EhihXNK11EDQkEB69|ijJ`iT2@-8>7T{beu6;)F;;wPH}R%D?-ekigBMky z{o^$xTT9Fchj+0*4H%-~g`oRt)aHU87nK?0`qs<aCT-c#Qy}gqx!^f^N*c??A!$Nx zy6h|;8{Jb_2M^>NrZGOx39=o+^r>jUCWe3^^I2U-AJalTL71F&$>G7f(;zJ?agJDz zAO?JfnjnJ*9uYY$7D4;EY8`SLq*-xgGPegm2*!Z}7N1J}FL#;&zpYdOAr*;!?Eb!E zTcTDVg!pT;&l{4B&UDt$0HF8FcP^fIOZHuV;4nTR1Vhe~5y0ii<TvcH|K*EWkN0|o z;0@6@IQDjz3fg7?f<PtS^&SwEj#shM*u>AqgW2G+0I9OGjdh{J!Q*Ld!cLF32I|bX zSQs=><jtIo`o}6%&}%ZoAOt>B^WV1lW5@%iwoMk2zvU4Tk3TJ)hXqt4+O**}$b*T- zw`$Ck95Hlhwvn0Vgw9>YO${VPc?I<P^&Og#bGw+T)huFyHj!raW?+4(bLUT8gH)%9 zW1tb^jCvhf5;`>nlxj1jg6?+E1DRSd*TRJI&NE)7r)=;wE7(EZo+9~K7};Z$$?6<A z&rFlJW6A2J=UISYhBR}_clzMqprMoIN&$d55x>@hJbysphzqH*@#exxvas>qDez-C zz;!ihXO&-oh(a~-x~F|p__*0i@GT7$>Taos9RX^@MuI9gQrnR5ws|{BbKc$1bg2jW zL8Tnn3fJ7%V=bqAT8HPv?8lfYAGS5vgFM{c8qyq@^p)hCHroHSB`RG-moHM%`>fzZ zy>#5_dpe%tMGL;PxOo1ep$0vrAmCODl=fs?3gUT%vr4VjmnarUNQM~stbkD;(iKX? zgKJ!*XwxLR%10mxGu*vR_9f?88;FcUzL>LPfzJz-Y*$diX)mBH0tV6c9ZJuk6Ww62 z$s8<&E^!HcR+T_mCKw&fx%7O6a$Or?U%gWOD>)OqsMx<N<!$cSWfda^NVm%zM+?(; zox^M}724ttcd?zgfHRG{&PQQ~awQdfDJPTIShsp12lLm-s<@a{sz;qTT-Pe#?L;GO z<D8RNBBnfCy^6)BXVJd-d=BwPt-qJ3h(X5hr(@25b%9kk$D@2V3T~<4Y?s8P{Tfld ziz@=N`V?w%M+?@sgRK_<*X%2hXnCZ;&AC&!2>V8slxm*vRI+O?d^Y0EWO|;5qE0FL zmCF}>xvXvrUS3L4ug1P!&v@^QoeKsk71A~AFX?Q7Ro1cMnxUInueV_CNP}0WD9-J8 zu1qXgkau&Gc0D42%LJ>J^W7c0)4yjWT)qwP(Oauv(lxWe2<bULapdM1Y$BczPCUqV zUqB!D??n01KVVt!$|ODv>CZwH;C*k69tx^s-MCBaP^xADsif~6XRxxF`ZKUqO!G?| zCqk@}ppzOq<$DRb+S!>9(o{i+;)(LWJir(3wv6I<bgixYwjnwTB{Alk$V1n1_P$ph zMTtN+a5dta(y~~Ny%cC5MhIWyv|h?7*3MZmgN2<5<puVZfPp4-h1)qr058t-Rc&z9 z88c1_hMKiQ&zX94yh|SIf)a7;f#TL@TXG<*0i2=9Y*&o(EL@(ZN=MI#bW_=wW);=7 z^Uk832(YAL_|Zk`lpAdt_sswkFgd)&rA#S~U*m1;;#5?#8Y!kZzk_3-dY-3?NE<ng zx1s}Q2ypknmr*oSUE6D^MfJWcKu{3vkcHdgoB(H#xI{lSf;C@vR~MS5!6)i4C8e%0 z`NhWZ7D=tr6(hdf1lp7k*0cuDz+fT_|HE?mDcfIyJDIDwFV(rs8le;cg~st6MqLAB z^EO@1Ifb!>pqf*PppCr~UY+X*QG0<Nz=7aJBT+kzF9n=mFQlA%P}%W8+ML1N8gC^^ zrQUz@bR4%BXf(ORw+vUcas<4*VQsIe)xM%fS{(elpU%LD6^9aJ1JCj5NusR2kbtIC zE>-_h2gYR<?WxQ^-D9yx{!-whHdX6Jt0NI$Oo48|K?f|Bbi_kJG^lj5e!s&NgXCLj zkMW5ynHM@9gl_Zc7j~`7gsH?fUgAmRD^oBLD#!;x9(0D!Bjgq-t>Yzgbl3&_wHKjS zL?=Mrp|MeeOskYvLGRS=PJ`W9Vzn>uw_?Ve>CQ@OOK^DuQx<jg7YlSg@c?p0NTl3` zdMpBnqpXo1gK$gt`q<Q}d0YiPR;$nBmvChM-047B7G_TjR2VkiWU?~?vCq^klT2B| zY3B+<)*|_Zp*IyVpEDC$4!GEO@Qe!<a@PmCSa;0k32dm<j1J~!!Jb+}`EYe6^z@N` zhG+;R9^{qj>eYRCD4QyWJRd*rg<>1VR473eEGux}fb&0?Nr8*a_h7n{hsa8Ne?PiI z>s0(~kUXfo5OP_GbT#Sq`&D)R2{_+nby{Q%Xe?Aigu*gdwwaOXGX~mv-CD|VJwovO zbl*|yWxbE>xZ+tOlv72XZCJcV5V8Gt>Aul6?F|kF<ijb}(S7RB8*iKwyEa1_oP*Y_ z@t?%qtp|srwMHHzzJ|(zrS$yVMa|Xj{T3<6zu1xm90+l}IY%o?%^QOHx5Hw)6(g$~ zn<ZrB2qhYVZgAJ%G$Z}T(MRTM$dbT;IqB>P1=|U!fK6@eVy<Sw-VJEExc1j>iB+Zb zMZ{E$HVGp~!1RG88@;qw3yJ5SL%id!@jB85Nw(3mXUgE%Wkt2rrHju@D5_TV%T}T1 z%x04a$EEznF`c}O*TM13;J}TRDufz+;xN9Y8oyIyGK=67`f3={T$W5FNiq}42-&P` zuOsQXR#W_+ZJAMqX?#xJ5MrJT^_;{V2L7jrmdn7JGVhX&OP&Z{k{vaQplD>?GKzO` zDH>#tK3L0b^HpJ2vwJLV;C8~iy|aV2!iO2{Tb9S}3)yq+<9(wwVr=*u!?bRP%ZBn6 z1p%3sO{A9-IZevxDJ}gCQr^DmX4PM@JU<DB)579QFAc(LbbvB_1A1F|G8!rk3VJi| zL`dO71wkHxI!2QdZpDB_#ax^bHpJHbD=Hd*ibRRJ1IdxqqFO7eR%_Tg5gwi_P}42@ zYxNo3T7L5iYJ+Y&O*NVGr8dvtOJ-+<OGmlu+4rCALlxT1-~U~m(;5v4l%Kt*+}G>$ z4)2<!Idpgjnpjczxyur$5sb1FknQBKztG*`%_3_9b4ch1iM}p^%EByk24q>Hva=wv zfv2fKR!A*+*wm0zK!3Xyb4a!b4hG>9b#v1ij-2d!ed#6Dyt2J_IaT<Uc7#1aD-4H! zuOlUq)1KjFz%-d+O3T0N=8_O(w+Wvn8ZZD?^mrf8%i+mgs|61Jfipjxgklw%@NKie za{F*QjY;7F7{rAqy*G6~J2ani9wGu)4qS|CJ^2v!a%!a)6_;4BeSS0Q44!@Hs`S)P ze2`!dVeQ`^kFQkuRi26hB|_vSFAj;Z77=NSsvQ-bU*$EaY+j{u3?zLhW`iYv0v;4* zv}#vtT$LR0JZ$8D>YYy2xR=_C+MJ5On@@JwKt!W%>`On0#4dHhR(bNk1cOZLlK6t5 zAmucnVmF@v!g@mFh^EiVZvN`pY6(h8boF?$k>?(E#p1ctzV+_5et&D)N+PC7Ildm# zAfC+A>Oi2)8G;-i`+3c-i@7oTeeMZL#%Hv|XwrW-UdCo`wacMCOS>4uBk2scXAnhl zl3}w)>=_=oI1vvcKwM+nc<usR+&*fb^xA8tSm6$hv&vFaN2GkGBWOMZRl9z$`$h~T zYT_C_s;}vfM!;#Vj7y9@tdbf0X<&zW76KrNeYVyQ<_!+yZfcBmtUrawsoko;BpFc> zgf3_kk$A3s>SJfZ^LWeukiuPRG`_%&f?08nfJ`fKbdYe<%&2H;TAUI7%jv92H4$bW zN%z}54uXqTbHSQq)4Sz|+p~2a%ZGw~*YgU3Ji01(&DYWk8iqmkdWA#ONy1?X&p;AM zZvPMg9G1wA`LAGb)bhmGS9C&Hty(xN-3TJyGI%XhYz3et0^cD7xz7u6%kjI=G)8wZ z7^<@ei3Jxp&=&izrf3lL_9)h&k?s-q)!2bJS-%vA1ps1#j9|A})ZJ|FTt&MM@S?G3 zUK#umlO)NT0=UHACZ(C)TW=Rea}~dlcB<AL)eOectIw^G&}4`9PWrlhF%{HR1%dg4 zlq$=Vf~dMY=!k5#EyEjjg|^ETzZE$u9y-UEqd9Cp1GeiZBhvGZB^yg;og|8u_Gy92 zPzv0UQ<zy!LEq@Nl30^)tCQh#f%`ozq@hVuQ7xuhu;%>cpF#Lh#xSP^&q<_cD`X8a z01hzI87sO3C#z!K)WDlR`+X~w4=7WKaWI?6PZy$~Bbsit^Evx?nKe88bjrH&rxX0^ z(o<1R9&g&NM<JK{){$<!R)>2m_>*Zhj2X94J(fF|Cg}Q(no@`4gW$ow>Jjq4U?2Zk ztZYl;pJD5k_2nZEIcA!UgYOw9`}rm@s$yKqoGn3Kr`-h3p7(T#ZP3OGGR_EI1Dj?G z2l{$5jrG#9qkSY|5j`<ld!2GER{+j#l&3l4r_Hw`mP0r@FW&I0Tg)SF^08sK-bbxl zrn++6=q1P3dx!K|Eke>Bd7=%a`G;*8YWNN4Q(oiF+j6LV(G&RAqM_B666lT*H_wn~ znrIc|kGD6ptpb}*TnLm7j-?*uY@RZj)hZ_8In+(8U#Cy+*Pnr$2fO$vD>I~f$e9Ap z8^MVJ{+z_#vYDqWWI+N@z?V3Kro#DviKSrKy5U$?Yf+?8q`dF}C(FK5{^YRh$}+XK zRIJa0P^rokQ%4W1;6FUb8NR`QzhJj>Ec*m9NOyO{k1}rATZq2FL8btQ^yJEsstefz zNT5#vdlFC(a{A5ee`Jd*?e_9b7lU<y5ib@|)fz}1iZMR9<rW$(>0T{6Tn&4!yO{g& z;^8<rQ$&^7MTY#kqK;G$2Z2q%fe>F_-nCn#JQ(@{dRf1zOpBE<ajv49<8K7*6VSl4 zS3qUQ3P~}6AdZW1N)H%*Zg)w>xipm~U6a7q>MrWmlMT<tYRp%4F*TxKjk~FLhIV!D z?mm@iORX-me#s27d#$EsQ(N=Sz}xjy@Ju_t#c8vf)PRX6+9DE|IKs3IYxWCprYJ(h zawZtGuM{So%=xKj!=G&0il4{BRPFzIUWKhZNkc;Mr|>*)6q`?prJM~lRJnJRl=9LV z-QAy8Y1D223m0@ZR%+VG0Q&3*ecI##maDLH=f^SNb)@QdwdUjo9*GqpOnMk;&`&tM zQ64+T&n6Z;qi<5Duvyi;Yn}o&SBkKCJz3U#3`f-NJHzN@#`Jt-hpJikv)TlPnx<#r z>0#&N5*^ppo&bUif&%}_&i2Cr<0qnSduHk~1Q6qT1z2(<S3WaWYv?$i{39IZ{B0~l z_;Bi3wP%ZJZ7Lgk383{WMLTx_)^x(bmMWEy?O0i?ikyJ~Eii*!$cPR|-V+@mrNM83 zhBBuS7^>^#qd+%~ke?xiwnz;uOA4gQ_`E*1i`T?10%*1C&RY!k%-K96&WImR?)`!x z&gS$^j1Z#EO0>MLTBnq7J5-wPo7QfE)|m&LV%grZ!|E_DXxaR@K?TW4E35YOUj}gi zHI;d?g-F2%O<+l-wwscokHn4B)S@e0R}(;~w?=Kb)YoqQiZ+NB!?gPTyh!pNPrKNF zzbzw`!wM(w`nqqANQA7ZH^ZvW?Tqd-q$5+@a~^!l@vIVq1fgShTXBoA*66vy-?Wz_ znULLcKfNRn3qYf{x8TK`{4ge>#_FtS(f8t-$a*UJxZ&R3Q{pp11>KX5-7daGW%sq$ z(gDG6S1c+br&$p-IADgn7R_q2Nn&u8$rTeSYe6lVCQA7tvFG-HSJf$Vv}45tCap>- zOKknTR5`NHd-$GlFgk~O{<e90X_(RUU!td{5D6{tKz_^e>!|(5TP*`rO|JWw<6AN& z$T44q#lD19N!b>Tkd=fqvrU-gK3T`Y+qPd1QzhI`p@}_tq<shaRM>g_2XVT-VC}(n z(L>ML124%CZ@bBEci{W6OHg|taY0HLRvm&I-nQv@9)Dj{=5R`bRq$qxkDc7U^T`q` z!F4yDVHegXZJF&<SMf8A+Imueg5R9wm%Y`pRdDbBf={OEG?Xe2b%wqwJEi2ks^vP$ z&gBptm7(B=>=SPTaAYV&c@kHj+9Cu}x+`V+BM-0{!(xz$_zh&QE8!#b58$>*j6pM? zm0vdir=I#oTL_GIzA}4cm3}l4pU(`f+n`cuRXnM>kLP~hs%X>F9KfJqo93C+$m58Y z<bA}QjyDIU0<~BeD0orK`oFHEQRCbAht>9Fx)dyjc-GiFb^EA({l{lkkV%O2zp`8> z8+PuE8gK5{fbQ^G?=_3>RX20%tdGccF$7!ZYiK6}3PW&Pl+oB@m+Do}$j)y7QKjp8 zKFOeza%G}}M<beCN*Zq_V$=s};{X7{da;w8000009QgkL1or2D;)EuSv{rc7S(!BL zzX6HF+gtirc&dA67z(>Lo4b7b>(hkrp7y%kavE=7+P#DC7NMkA6N3_kw*;~o%u6vt zAyME%baLT&1`j4zHiKxIa_HjqcX*CYFk0pOc1-M^@q`;>>6^KeEDaaPwU6>Rn_8F1 zS~3S=6+jcZCfXJ6(IjG04mcMgWS$r6+;jqsu1n2~%v!#FLz!(xUOWejS8WE*SnqN3 z&~1c{n2v&%>+T{oFVDvH#(E!r92gaK*^|<DN0c$zY6`^1DJC&xetSO)66{JAX)TE@ zZQuz!>dg&(NDZL!=q>?PI3Oago1(Xe_ru9cF@K;x)&Y-JTD=gFS;ORYl(u{K|8Uk_ z>($xj`|@y4b>)rpZnaWhceko!C6bU3bmfEMdcG|?t$N8?sw|Os;T4yHy_r$8D;{(s znTUO~iz9L7?h?^OPoe!_I8xAl{E3ee{HljLSGN=lD%hT+g_&)FP$PlqJw8V&xFzO# zM^M(I3^mUbQc6!B1@4#3UW*xg3A`!)8z>SSsSh*|gMV!vTYL2lXVAm2w3#&;E%ywH z;GI4hMK{o9^=%!rPnw(f^pF{7O<<n+vZ38|uTp)|S#?$sJBg3f=n$fAl?Ck=Y0KnW zjjtO4o<U5aEcPXP1BJAkSAG0{C=U<Q%KAa>diPKIj>{_4iakGcO=wk%7^)P0l!&j= zp+JcBt(_6*yPq|JY(i{q{OqmLbaVl>Ax>OeXq?umb;w$Y=w|WMmh61iw;G}cmzB1c z6OA&SM#-DPWSxE7NbNtSR)%!rTIDuvmNpCKc_%ieM%bdp1%u**&QZ`_x6@<-KAGc3 zT-@?p7zq2Qh+gN{Aq%Wo2a!^m{QathbKk~L^8TX!Mu%cgaOLKI$R*3pSv2s~o;RLo zj9I8C9765$UpbL9Pda)Uy4w!1x>savw2%u5Pq&)dGWeIw)WowJD^wb@K6c-Je;G3Z zU7*}wQ#qe|KmgJzH};d$_N}FQUbc`FRsXuLHzowUX==-C(A4{%+hnvW|A^0_fN)bz zU{o-x{*T#LVHnsSRtqolX<jH%zfd<iA{!uz=kZlNp!PElVN5k(M1JJ@jD<eA%Z<<; zo@_ORF1zK{s1{ffKSiRl4^-#Z#YMY`s;DcTUMU0}*b{ess%LltF;Txf3LROX!9vJ4 zT=Jp5)hy(1<Ssq0I|J+RyzD)=O+j7&x1d-VooU}MmJ0N#bY@LTod)l@uiHD;jMQ)1 zV?Ue5-&TcOmq?h>7Y;_392I-`m=cLwl7W5|9iem{u#%eU*en%*6=QE$tIIoO18ZdY z0|z+QJ1AdTu$uB=(bX{=MD{m)cYAa1EAgh*M>yQ<?S(Mx!5=sckv4ic^d696GDB8U ztLX8upA&rD^>G$e)!~biOIs)c!%R@P7&)+ki5)_ly&PmNDnhCcXroH@ysS`bFzH0n zmrMvZqYzPU{_Pumutho;)PQvPvuUkvNU>&(km*$D{d29v-1}mgNJsDEGfVe{HjiQK zSpu+tkN;DO30~mbz104V<B@P$_UW3RxSxy_E|2$RlKS+b639L45TxjqkKi}jH--U$ z{`p>bIXQ#-)*jeD_3i4ngo*9`Vm8+5X6hLqpNaRa>eX3`7kw@VZdJT4IJQs1TpEkD zCe#hcHt`5quMY6V2u}hmr6A9V`bHEO@89<%)9<`kBO(^`1nVH8s-2*4q`H3Fs1W4K znx!%UURdlNW93|4{6@7Q%yV&N0&X8e+s{<!ZuO4$L&-KV)vq`cy*4ihm82@ULpoPe z!|uQjj0-R`lJso5IbB)~%{5`o#}SU1won>&FPWHvjXP%{W=vQMS@34>)2!!%6_H1C z*K{p9&AcJUiEhy#*l3!(Q3q=yUg^oPDsa%7(>EN+z=bx>5PJi!7Wg`gDYqHXr3;nh z0kz)S@(!ua);BSg@M69EoLaQq-0G}jPp^3Zld3ChZ;Z==-=v;WyIMK3MtESl3Kay^ zF`2%}Zl!{(n#M=+t7Ydq*n<sWK@#MOKlb5V(M3atMc{2&7%p5}25F<i=F~e)#hb<~ z!NKZ?6s+l?h$oN(PhhNY*_xUfWx(aps``08T*8v<Dq~)?V$Oxfoe8t>yBA)S+sy;7 zBBuA)oQ96j4d;N_b!(&L8ow!c(;mUPTA&}>6TjpTG`Y|jA%eb?bo|boRj3&7?Ba}* zCIZwI;Z|iz1a=<*$hwgmpcJ}m*m3B>TWokiX?ChkOSbb26rx>8=K=!evns7pJN|bs zPccEEZVC8z>0|UkkRe@NdaRT7oB$>7YR4Z^X3Y~zg3k@XgAQ}9OcU$=JvIMBo>IVG z^XT}8EAp0!+ccm%l>C<e1r$!~u7Zl9lkLthoYs60DaFe0Ay{QQp|LuVviJ8O2{SMb zxIieEPIH;P<~uIiL>#`vj1Rt0`khtXQm3418T_9(4eT;XAchoQQn=$qh<L3>PEs(E zp1Z!uHnXzI(_-FtKr(<qix6E1d9@lpGaN}yL>ccn8HK^-$VqL?T6wV|F7g>td_ZH@ zmjNPum}5i9eDfp(P-|!_+0fGVmELbdrwJpI`=4*oEX*dC7!z2?g@p)Az`(I_Rd&LP zB-K?b7{m)9dH`g+{(#NNjwv#~d}n4^Sn&AL0lsqgsuI=EK~=iALx1ecQpoo~y&;H$ zDM%or&v~(*+NF3^L8TBCg^2_XM|GuG9KzT*Z#1(@yrKTx{HX+2g!2%i(WGo4?3>c@ zw!QpX)<e`ZzB&F~KC{B7U5{F~8-460<=JpQ?txMq9K4HR`arVBwTMowVec+8=T$kT z8$=8sX8F?3`w}(MCN8jFcda_BoNrXxKN+JlZU555yZSV0$c7u{H^`zOI%KYAmV|~4 ze8H{P3}b+Gmd&o$jK|`ADfFd^I7g5<gv){)TD*!TXw<0=1?)F66J0B}VSms6jKK== zT-I9Oxie69w$wA#=Nu^b3d$gRK#fe>*KIq4yVNc+Caor3#ni*gYsstr75cBembM^Q z`ZSQ6Wf6*Z2;TRps-hJ6%##H!P(Fz8yhXa<%otsx-&^fm(DRRe@|Ib^ZUOEfrEjfj z7K7tK>$_H<FOzzVSMbcS!Z-5Nc4mesI%TIsssxn=!idle9a^t}fAzX1>`ZQ2IXc>= zoxtZI5<2r)n>s5RDLwhqp58_U;j(j&571>VS~BloqUkVqOQAmUCChRaUEiIksiY^G zaRnHJ@L#4k)^ow-CGhF7X&Fq)YNJ>|@*G#bjy$r_OCPaK)c>zMRMF@TLLilz;L6H+ z>Feb*rB&DMXrGD-_;zj94HAU-(R*0-bm4()$AgPShbo?`KKY(SH18>(ytH@;LvjXf zJF%>+Zqr@}PinX~Tgq{Gr#=SD=iqX=1|@{Pl3jJL>F;LIPERq3FgbFrZ)IvH#^fa> zllnj)Q!1tXkjBSf=pgwlxVO`gof_Q}%^BeZ>r(7c;*A^~aa*)-#%^^1W2oJo1tGJO zsOrQp#wtw}UWVA@wFj$edwN1LubNazyISG6bMc3kTX!$TKCwR{$SL%hjKV&`kV(8Y zVO&EW?`nK&Zu#EivM?{x|3BGX!(kb6n1XugJgl5Du+)=gsF>E@<l3rEd=W3#c`=*z z-K99+7K~fH7A|T!Gp_V?8myjRd!DQH{36V<^HRgs5b!MKXtiR4M$IfVc`bUsCTXrB z6VQRT;uPk+8Zj!w>Q_nED%WB7V9mz!EA3o%eO)ZVE$B$qzQCu=Z$XU*aifmu<9plM zka%!m8<U-k?k*ON;QyEB?%ZbRT?~1|C5USjXOSTH!&=dvg)%3kG^lpP04~yD6#NwT z`+89+jEq5N)RqGG?GqtDfq+m%TBA|h^GG`t;qtSH3Vupd5pO7B%_!l;#4oOhRd=3S zGM9!fIFJsZ#_%uaDel!N3Q+IWGKe^(lhRuN_>{{|*K4ZP?`-1K0A&FeI{5j!3M%ZR zGdIZ(9vd<~!@gk;i!GO{79gb+BQZMsyw|;8b%|vh6VYM<>rwhp@<D%N{Oc`faj@!W zT1toUb`Pp_8si5$vCJu>ny!_Qi|WUvh@?WemOY|y{4}iGaw!vpq=mMpp@toyd_@g0 zlW1GL>{)Hb;b%bHYI+%UUV;>rBVTAAO2Sil=ATD^YFqrH<2?3v>gV`7QR!<;Mt3;O zN~2CcwnYt`dhdcqR*_nxTHxA+j)lKNNx>QS$XP>)B#*+2G4o!=d0*Ef_WL(2RnxR& zE@zZF|GOSy5L@O2iabGW@+4+~nxgp4xH~RU_gN*Nk6AVg+Fu7v<)bauT|Ukba!Ia` z%LFjKZ2(m65$h1hubCdDPuIMjGXSbwrrb)W{M<NwX^jU!g@$Nv32y(k#dOZV2wV;! zQ2!mHfZqRmg-gn(#QH_PNL^HZg)?0t!PPF9iV9YAdEFcC%x~d;+0^mvV&_%Fs}_`O zIyh@oOELfSvK%4-h}c4HC&tb-ajUT$#Dn3&N$iuifDRll`Pfn%NoSzX8H=CX!QHT~ zQp)&~mIV6}OwypuKkBXw3e^<QXaxWRFqXYOP5fRQgXMHPQW<W1h~6m5ZT6jnCCgo< zUde&>+k}b^ZuacLB_X(yO+kZ~FoMD)z6|FfLQ?5t+DEnX#FO|->`}EkB%yCpX6Ssa z4*zZzS30AnI-LxZL-Np4tbW=;nmVW(n_PV4##ks$n2lQnl3@%o4Xe87F1&4U;ZfA^ z+LDEoPv0c-6xeOs0H}OPK!jeAZc@?u0glCXERhy_;bU;Dvx`PInsYNV)cNzdUIM2n z<Gj|W;K1oXWDo?!f^#)55-w>P!U99fC`3rV+paRWAmWNM@45ns*B_G&C1tsY%qtp- z{d_>5NnXoRnRqxF$su9S6CX=wX=3^?69z)tlv^pX+I#}xs9q0_TY$%la3J$_^e!gF zDP5Y#>y5nY^Tr*jIR16%1C?8%(ewxI!=~jJGLPvVP~e)g)t4WVE1r$g?gdZmr1Y(& zUd5Xj@gyY`QWdYI_2r=PpPB|Zy2i3;PAPSr$*r(La{NFJK4RZyr~d01q6fQ68clZ0 z7dfy5E3A@VA>^Q#sPBOV8%ZKcBBe(T14+yX;gdfsRo5Jcy2XPkpBl+gUv=cjtqfyh z-PY#r<cL}JnVCvmH3zzf3<V^J4TMC?4}1ed0>w$#Yc+9Bt4Jfn8tPfUv}&8x5&v0^ zzKW^3<W|AOxV-QflHs_)ZwKqk#qx7-&Gon0w&{hpoZWVp$u}|~?(v42xYoJv<LMwB zE|wK%pxG1~#^dmm@;AnYTU8BRG`{HoBUAd4gD{Os5S1Oz3Zi<t{*|lrF1Ktl6Cgfu zKFEn+Wq=2+!Cf2dnH|BIpKl4HWLxZYdE*XP!W(4s)xbI8^ZrC;O=+|en#W#1Hm~C^ zzmIfQm9JppNw?fxZ#`_LEsxFsZ0`WCPJQb}tWX&58dG&Y!SnXt9mjwQ;N44V17EZ+ zX7*pPsgTY!d?)gjfl^@$W5hkF4F@fTvmy7)n|Slzz1zEiC0A<k<r0Z;eSADEztkRB zGaOx&80(uYk#wjwg_t(BqMq5>r#&uT^p=6?Ze{OCc!pklknbzd7TYXOwPTR_QxK$b zmB&bx2v3cb0EK2P@Be)4;K)6<^v4Bb82{axAmx}|ULZF=GTNY+^jj1E*!z)ZHwi;M z0UDV`%@`yzR^T3N#so-nm-P8dI(GZHrhl9UP(D@!jf}Q{(8WedFZ8gF@qGIefx$oC z2ArSTMnPB{+W;2N99=1m=?K1+NI&?YRflroq#Jp&jfKzU$Xn*t>2jD)$#ug)>LI@! zdUH_u5jb3GTm_ArBtCuw-)HwKdn*jAN?=`x0gnl+UJbMWSCp1HyNgDgf3Q9kC9dIQ z>?Rua{(us@?Cv0_wM5<^RV|5Pn8Gd@FL{CRboDZv5x%d64pHlL$p(A!=FX8TZ~CwB zVxOK(Tn8<fJDQx9&*gzl7nil`oE5s1a*A|dL(M^U>Y}3vT8p*K%m%blqpr+Z;QQ8m z*;G{YHw3$qPlwE}qNtcHD1Kp{j2Iu}r4r3`Wl8EWEAx%RC32ftC6}M)Fzg_*B1^RN zZq(PIgJGXS9#54+NN>;t#uZd^e;=zYHWcy&iQx6IW5+ZJIpIEvp;b1}I`WmVp^m33 zxge{62<B_YZ-#hyMi3IYEt$8KsO&8WXx`vtldN-fZ0v?+4Xs^-dzY`=hZ*{DhAmqh zLQ9~C+ZVGi;|=YzmFhXTH7An5-HAYEllldHrF|$j6t%0|Q8uHEPNV1J99TXKmZWn` zOKK+jN`#&UC`!vm@i9H*)=6Y`ZBm)q(XITK%Ao;oMon`D{o>kJ&E(w*m)7EU9?fS( z9<#I$m#B;$76lRhm!XfAz+J}jB4#|tS>6Z#It&*wjRodM5FO1vRkmR{Cu(1HU}eX( zXnhyd^l+-!D>x;wMdxot9c}}Vl1orbogu?n$p<M4H?Qc&l*z^e5!qU7?3i|D?yWbp zFyCCr@>tZEDExBwC()p*XXww*4yVp|9{RtZvzIaLRP%m|srx3r`h)fctueKu8QEm7 z_+e6n+msA|AEEG+&MHwSiB))%vq&1kq2M++l^55Q*FHgVMSS<qQJhyIvouyB=I^+d z<)=nFcS)Dena=Xu8z+vAui1)0qU+YO0=3&jjnjEQ=SBE>kysLsjGQc~;H@%+hu(rL zqEKAp>qkg63psJfxvtN9GeHQ&cYi9EG>Q^<B!EZNg4T=*N72=`S!4_=jV*K-GGr5K zsGcT_nOOm3zh%T?&0}EI8eWP~r-Ra#Xu6>wtvj%_N4DFM`rUKsUPM@c^3R#4&5zF> ztq5+e3}wp!iS4H2YmhBk-UUT6!m16*{J^QY3U^Q0l`tIh>_q|$)D58XrK5;Y0rWzX z7So&RbC0!d2&zeJusk1MATAzyP%N_fuFdz#|A7NtQv}P$mQm~FHw`e|-vRdYB1l6+ z+$_!Z9UJFrd}@+~C(0*Yk~aijB7XEehvX*TsxEm{kD?}q1Ry@y9)CYWQ?~JJ(Vj!2 z#X;_mSxXpbOgM|b03$f`3>?xWZ;O7p<o$+b(_wUu>SFUD`&)K)io^5Ai;D%d2(xnW z6J#K9)}cPmQ-Buj+=hK_848OU3<yJw16Tp9mH!fPckwq(e_NrzHYjml7J=F-#T0F- z5NaI^>_5(rQ>$*AV8`f=<0$Y%K0c6TqJ@TgnpbtQS>98UjFd5>E(~j)PnALok@mK^ zfv|4k|HjT&I`l=W=+v#7;OB-Sa%Xiwq1c;9Sqjy!@_7%ZcCcr8yDtTpK(J7VqPV47 z6j=@z$w1S-5CQK$v(|z6<yEMD88JpMJ2!%!(eWBo*gdzGq*-|KyQePeF@3Kx_>4en za{dG|p%_7T$!&~n^0R}~Wa{otK~<)9hc(k+8h?dRko#)c`s;BV_Kz5F4;l99bJ0KO z9N|_p8vhc-$0A~vGp@H!U(!8=7uWjpf#hL#tfDR-Tr7+GimlJ)s3m~f82lffu30!B zbu<#D(FN_&a<(!L1v`JQqutthyu>3Fq=RI$6v)=ki-Ok>ds?B}gkT^H><XAxTq&xe zg^YPAzzIwGM<D46l$ULnrX<!oRPS(r2}hlz+k1hT=zCHH2o+_SN4|xsiu6M|%TzSI z$~W7=_IG559tj6scm7d#^k=lmFa7EHOVAE=&OCe|XMOo4!BzF}H5iye1ISK)WWxXi ztQa;T7+t2ULPJul&hs;;t%QD<ZiVn(NrfR%^fp~%1!`h`pj{1A;vi}*!u%Im2^rKd zn8pe^1b&F;?A~xn#*?g*l)yOp1<Ds1>+r~Ro%s&D(O*kVS)|IL4v~|Lh$-U2vE@1- z(W2ghd6Ezqvrt0xI9q4kfBCOT;Tr@?bdc^n)lhO)a!viC+KUxi<FAz*AdATVlo0Hz zW%~V9Ht7sod=l{g$l47x(zjix&c4ipypA;8k}OlFz^bT_;I7G}F@!<If4l!`18wy| zh1T-)M>a>t*mOxK2DKf$P$Nk=MO`ZRUOgetPA#!Bbk2U~^~WCy3bIzXUVt}R@M~^; za>|GtXjPHNkJdX(W=%D}n#azu%=RHRxVG|l;8&K2(FU)E|HhKWD~`I@$AKeiZo~r7 zB0ogm`TqIZzoiUB#{j1?qWg0u5Q2nRj$`he#XT7H?NJ-u_b3+$%Mo?BG(K*5YpL*O zQv#Jldy&B7LYl9*k6cqu=W5)|KlxO?3X?+E6}CD8Q&RkT-e`)y5jX&5>4j4)tFQeW ze`5ETPC(~cV2!UAU1gt}8KN9CwS)fFrirAmQ{MnUK)=5kud^ZLn&UI4cdntNGdF)z zo`UTh_IH%!em0@7&}n#~+FBkDhtM&e$LEzsYW|M@8^1sbVxJum0bG!h+~#MMqvI^` zUSoHRjss~V;>b4t3v&k7XN)%Sb6lSEj={}|YHAT84(-M7T6RShl^`BOTCv|>5ECmg z{#~p8U*15=%YJNnbJ=r64r5F0v+>H;WJ>L;_jVLNOSW=U7s5`E>$j>E;?Gmeg74Lh zO>EtY6N24BU;w4E4AT1eErs$Rq)1XQYPI*YB#ldNtOvKY>nD{(e*z6#PSXIxjm#S7 z(;lNkC$stST75!R6t<Ik=c36rl#zR@OchStF$`sr?4YwWDRHMut71g!O_C4#UrZoo zn|d2@+96Rtam^9P10VnKV8dfH=T2Q^W<5j!>$+#+cL4|EOGBT3=(I5^jjX$hu&L*V zCujIFxIIUmLJF!%B=GD>Ufr*T9`BnIBEA%6F`B^4oqgx^_aMgOgq8%A56O*A-mja2 za0{#~m_E?#rDhY?#<q%t2mp0NPV-^(iacr%92$)P&QpQ1#WvJ1fry64M-sWGN-qB% z$3}Yc1}aA4CC*RZ7CFs{vv#?|QJY=RDfhV=%iVCG?g8&sG}s>Xd6PgvLh(K_%JQB} zXd?^{@JP_IgY`)mlqzb~$1$`I*&1X+Dl)|ovry3$ZlH+qR4+N$GrMWC?|$as#2=`l z{Th5GJBv6KEE?<c)D4ecrrIUUa9p+!{uvIRhIf%d_SKhQ<W0tltKjDiQ6h$JRsIu{ z@5&FQdx0>y!dU<f!Q0fxa0_dxTAmr1<alboMhz@fq!fJTybb(0yrSu3diR0x85gN< zSdENhTMIWf#rNPVV}Tgbvzo)Qb7Nr+yks^M7#|gpvX=@TU_0-Jdno`>dNTS8$-)ec zsV}asW`wDf#-+e0T0c#bAN>mkjdy9{i~mE>*ZZThaID(Wd>2*qonIGm4Ht<|hWffR z=Mb*i3EG*#DC)gmoVnK8jj~{Dq_sDL3H0{VZ!$J5+NaNV66d}Bw`~m{@`G}Qv55rN zPQp6z`cfs*diXO~qE24>W=Kam67oy`Y(xG{9!Z>GANUs^?xgWS_3<yX0;osN1jJcj zJR{YSvJ5Wi{uYUD*M~EEWFf|(&l%QKgX;R6`iXbLP%nmMj9Y6pB)+htU1g2facZsJ zoJF||Mj`yZHPPRpIBiLvEv~1y!n#CUed`T&l#y&p*LlhZ*nu&C@2iLs_KU6O<`D`H z(UlIh8<?@EGz>xFi(wt(;vchTXhBSEY#)%|2(khx+KZ&P)vfkb^hTF<iUROTgI8Dl z0w2xVFN}Gt8{SNQ6CgjzeA8SO_2C{$xb%W=7@F$3UP2Ab{VEkCJ@RzN+WaR;KDsK! zW#>2a2^#uAi>i>Hda|Kh&B9FWTVPmFKs`ebyyYL#_<Uw-k-a&b0y%`jtut4%S>|6~ zxJOY3`Bf6(MSdyw_|BY(+&lcptAST<xl~NJQ|@A-?0aa_y1XGOeV6W(i3wcR*i=Xl znJBmdA#=JUB%>ZQN`9|Do(gyAsx1c)DcD5+Loj}&5*(E94vV*ao+s_02|VqR%dINZ zRbA{EO@Rvlrvl7q1)jRmtduq?;4|_rPG2++a$oMU^n88$h5BgH>xuo*(;SJMB@stx zXWSY><i6VbZ8fAZ3wojTg0$T9;?j=9Du8S^kYv@De9-FyT={&OqMhO^iI9HAbR4C3 zt3S~o>GE{v8!ku-FrwUE^~XfaNv#<;Mn~U3gATmDj{nBqqaFKtQKnkQ|0)T!{~#&E z7t{L$K8jCK_x!%`{tk1Z;>r=*dB_3jPgvI+AK7H~rEk3&slxMvqB*5>aQ93aksRs^ zjZ~|0zWRd@i4&lxi{CGE&AZP}ylrbVoli9){ZXzm79(1wfO#h6htIF>>44<?c%uBx z1e$$|&78mVkS+z=I3j0-vzOUJc}hj=rXRPX65*_%`w73svQ>?G;cDQA#&S#Ionjhs z0C8wC)6)jf>*G`Vr5Cv+WA&9yelCC1#8Q<-lP?LIp6B8N#oRizbdV-?hkXC+4C-!X ze%?t4_SQU0Z<bTf>Iij$rmiJfmy+fcl99!{95YOrbMOEMj4HO*hHujGvJnYN`CWv+ z*L+cG7%mTJX6|knh$@=*7&?%4reEVhU5FVV`)5uSpLPe*A5t*o!7U}xk2ooMsE=oq ziweHUlwi04?ZRo$6?QiJdDfQX{?tp%<gcUb%B4cauL6`rZ<--b|MXN3*4m4FR-67= zE!*<21nv4W1FQHX3Y6hi<te%bb%R%{EqiePeA@1~+psm}ZnQVa(?|jz`w~*eX+KZH zhl8z-?oq%ADu5h$4o7rmR&;CC6<I@#87M1sFkg&-WmvTMCirduEvCt6mlpulSrW%p zjTfQplVKJ+%$u!|1Z512E672c^j|u>8)MK-c`5xq3wp6;_u-I)H-tyM73<<FV;$f# zg7*_eBn5hIQ1^@V;u-5f<}>1M(N|OBR!ASMNn&vEK7SDE=>OtIJe_QrT>JnT1M%$? z#}RTWlz!c5li!^-sB8nM5sz@hdPTPLs4*T*24!+QAa5N>GX#HOJpNLpq+Ivk^KUu% z=w-*-@>~;SEM2+;hk0ON$dP0utn)@G44=Hn($w6qroUFJ&n}B7FM69poRtgGa=gW@ zFPS`(rjL!5*0!90gfJE`VA9<X<|*(apK4#WUM5?NyVF+q#GM^TM@JRu<|K){>Jw>w z&76Y!k8!(5NGea`JvZ_a*AEfZ*LQ8~g5svnJ{3LKM5@QaIsv^2sU!xM8N8Q0+3YMB zB0y+qftM6t-11>V_({4Fm1KxfnsSsuQg)6#bl;yWE^-3v{|6Gtx;TWF(VLiB3t|Y> z%OJ4#9mmq6pi92yQ+A*cX{Dzx=D&sKz!&D*<&|EG9%^1eTbfOE?m{Z6gZ=h$EfD9^ zsCHYiyT=@*d$F<}3U2~xj-`teP}h0Jf^Vf=o^WTzx0u-e9Hf%H)&1h(yQ?1XWH$j= z^qhw<DDn%8lYXl9d|F6$n3=9+<GoEXwbz!dD1vq=Dzz@+!?1uGQ-W~NpuU0rKT^L7 z-}~auq7xf_0p2~5J=?zkA658fKX`KuG$cdbEP$DLA|@S5|3DK=Ke|O6CL8udPOg*M z5k+YS?AI(K0t2#^NZ4B-;XpLL1@`hee_|)R6@h_3^b#zH)D@(^u9{$PcUWo=rZfvW zDt)bR87dt+Nf#!z8_9_iql>HR1N#<}%z~_^COG1*<LEM6#T&qL=V9f$8+c_RDMAc_ zJk~=HC81MdK||CE=G-ZcWs!T`HgGw<Hz3kz_|l*3bY^+k3>R71YtML9sh@n3R;U~n z??0{x6Ug3hqxLit-`2SM#Mc0klktHIoC=ai3klWM-}jc?s|h@M{#Z3W5j10$_rv3M z#`HPMl0j3PRUvf3=vno#(MFqrSVbS2ic)WjOEh;KBO5iAa0=(W8>y<6jDQHj&6alD z`v@&F8_F}3cPmX3Z(#H}r9_TXaA5ScQ<WkSVQ6-Kt|6C+ZA-W7`_E^DJA{qvEi9d4 zy^lus&4ES6f3qquxqa=NzdBTD7e4zT2djb1E(0T<(e)^uEJAMTOqGtJe$3b*8ex*~ z_3dLz&z`QD!gd@&{5b@8hE-&qDaduUzZ6G+{>T;58|W8u+Wm0Xv+X`D$urcI!c`5j zt#qNib+H|K%VjG*UYMzkqw!Uh|1)nh%*nQp&k+?Kr@LzgRaj&qX@75agsT3>GfoGe zc1ctrc&?{-agkx4=MWsE8V+r6iB{_II$<%D(vtZvA=^BT@+j4>o2HPX-%2>RoA6A~ zdL8c9N(@=}y`QLUZ4y7Q_L(sAVXsrsNM(|(iK@^e7HsX55J~;t$=*qr0vyT<Swhv- z@xn~YHRV-qZ>q~pV`G|>gfJxhBCHbXASgI9pe{HHMsfIbq?Rk>V2TeO2HkU;?VHbX zDE~bP`<_e-7Z|I1(WH+QlWmwp$cW=;_Jgjs3T|f4K|}<h!h`~6ah{fuv!N}G>VCxe z1f>tpGloUoI=op6J1yegm3-%FOnV$p26s1w%SbRMxRg<$mp$+Y=Mil`o~Z*aqXyOL zg)<SH(FS7&0-dpMMn1Nv$NvNO+o<0cDEb<H{rFa5)D5iFFBA5VofFxkwpQp~##}A{ zsTk^F_(ux%9K6;AO?rv*u?HASd$e(kE=mZWy;~5dhkrUiEY*ZD2mF~|V^>2?9_(0c z*<y>ZJvAu-<$3WE&^>(kNPaKA=tgJ6Pg#SSJYG)f#e?9wVQWiqE-(O}Hn0GX^g?Sc z<I1kWmF@{ygd~l;Hfg>}9s7Z9JU%geVMV$$e^dr5l6FJ8#-T(G^aUX_nV!eS0G4z< z!Jk}J*f7DkNltI9^h-D!*YnRrw^<FZ?masaaz52O1V#p1;?49QewhNniE>Vw5~<58 zStMzTg!{1ftz&GGF+ZA;n>3*C8_SjIh;1=pdAfW>(CO-^E>4hK|6v-hn!kyiA)|a^ z7|)J1jJfh{a<`lmc_`+eY;j8Cv2uC68Oiy_o<$@)n7CrTX1PIdPlrC7Lr7BIy6YuK z76-JPzqL+R-1RbW_U644D@br$KBL#ZNQoRTkLqB?Nhae)p>#Q*pGvS%fJJ>*@ebYF zhsE~K#7>8`y|F0Hp(9DaDlb}<5j(>Bh{)UDbo+v*oExOLC<8^$08hhPr^rSqmaX{s zhx~xa`8H{I%cQzlaFR8D7_hKiv;j7IS~n9m+`|!<A~UtZ&=tDHEZGw*8{Wjr*%~z5 z2-hU@G_^S#KSb(NOTY!;+8O<p!t3P-J&fJCfU7ED={_DnCmxl{iStHN^k=3AP(ZHH z140mfecIE^8N`rPGtpaMTwRp{vCq_dt33-`S((cs8E;6PpY^=%c?9dSNH+%PHQ4%C zjRwA&0n>?w2ruP6I<QRx!|F$NSnZxSQCw?hH0L3&fHR=50Sa3M8y_A1shQyDCy6W2 zUQ<`a6pz^iqVIDGO5na}|ERt)Z0jf(pnJY8*zrr*PJ3QFwQ}ZG-V)sxP(LRM1Q1r3 zzoCE-R%!T3#4|U&=?kyg0%Mv61gd2AW=ZVkf|^#@Y}s-5^5l`jra6o<v07A@6^&q9 zP|}go%j{WpH-ZLjTMhk9l#8Ge^;D<mnZnK01=m2l2IE+3uBlDON7VFhGY9tjE*Mlq zh5<j@1H=Uot9OBw;pL)!5~6TK8XiX++(}n0pUf)mR%VoKcU;-^Msl)adW{z|p}?MS z2;Xi@&xz;uEAFdek*&b*_OIoDm{7#%w7JQSz&XccIk-V!D^RYekvO(VQGvokU+gy{ z2Ka`lal+|DU_k9gLp5x*0H-$Z5U;r1lBa)f(mBWkdQg392XzZ?(mMTtir2<clkft^ zZ%mBF`kJGy)%{uc1Z6c~(u%E-=16TEe&->V@rlgq>MPh^SIZKZ21e^siff{Bouwpn zTSNUkZ6NbeW;hzIXGM&xz>%kREMv?E5=x*I+`@ldhdWs!_rK6rjeKz)2CUH*Grnfp zc<f;+;jSB?8I)=uBOJaTwhw3Xs=xxWd0Oym%|`K>(;{ZKX-JnK0Ox>Jr>23ZO@c@M zDkQ#N1O0*SfM1$135s7Tx2-DpA}EZ~*!hr`-b>MHdZVZ#mJ8=><Z&Kb4y9@r&D#_k z^073U9T_+`)U|Tl)P707Ky3~M4xzeyc$2+*VuUBv2k)K;qt*L;B&PN{>`T`XdeMIx zqnu)~Rbm@AFaO(^<-J7XGAw3Nw_3My1`tsXE0>03VK4he0!kgj)76oAwC^c7pB3Og zv!ghr1!+`$N;@eUex9Y6Gq!ALR`dN3iTesPN*^GKqsrse&0>oUH{GJ$v9$BSAYJU( zhwEp=BNPT$%910&I6=5;Bf-s95BX9uyAe1Sx!|9{S^iIiux!~>Ph;`L1_m9|gn1-@ zORy!+9C@_he&9tn)UIzkvrB`@6Vkdi@E@S3u&SFDSFy8^(qU$Pf{L!5Q*#q+vc3K% z&}U>&Ef7p`)pR`62!$2caElTv@krXpWAYHq87JUu7+&8jR2)G&zZ&$8X|S0(#3!;A z$YJN2;y}CD#NaOQRTX$5&EHC~6)IKEP}biv_YLT0*p<=KLoshm;IUqeCAA`?ctX!_ zi13ggbym@+6c)i*M4l+J5p83%g~QGu1EDHRKGe_^He0w9w(c)*0rfpK2%t#R9K1j! z=REIb7PL<3!d($Gb4%NNL_S&?WG};y?x8tiKVK~&$&mj%_SR^VJ<o0Sp=bEQbbg`E za!jZ~l?P6vK5r2oOsXC7{{I-Xh7j>Swf@SYKWrKd)N$Gyy_HFs2wZ(vYW5a~iL9oQ zoa5r>Giwoq?dbYhb(jbLO>brebuig`^#O5YNyM)03mZGv%4PM$S?ciA^W-0-^W$6q za$UxGLw3Oi@mU(>oGJ|H0?(TJ4lL|P{*v^yAN!&J<+KC@g~2zXcj0@{2Ie^LP}#%& z_U&xiO!UQvg%TJ=94hb&_-CirRFV;?;dMr%vB~PIGczb-63f+H%V*?#<*-dP^f_#e z`jt~Zb25jojgo*#jYxD5>mIMb!LBBl44j(XVK-~DHYcRH>e70A*2o`1)bfy2m{$K8 z9e45CdrQ90&u2ha+M(sjF5+301B$8~QQf_YO8WOycZ_Vw)ut|lb)6O%;PF^%*{pTI zAE~G{7zHghG8_NVKn@M6bVEsn=0>DnrU|<3LWChNn=ol}U+fwo^v!;YdYR9(^?y}K zGDK0EK?M;jlyFn5n7JnWziZyDADzB&uc(v!4TF`IfC~y_0!B#h)CS_9^1LLejW72< z@u|=JEtGJ0tnCEDY^|Bi;apX8p5fCAd8ed4YIU`xqViz)uoDj)QNi<JNvWFi2fb19 z+21{PK8G<0*8pdxIqa`vC5H!GwG2~c;5~)-_RAe-GG${Ics=sE4mJe2Olr$)51(CT zz%XYgJ*B!h$c8dq)c_?J@MdEfA8VC|Vlk0*H7$2-!R9#th*8KaCJvjQf<KE?dWq|I z4y=z4KQ-E11m~F1C5&71+&qAcqMM_OxI(yLTfI#e1EYw~0OsO|VvZ}h0st1;u?E`K zJ{h<F>P<0I?`)dZ`hOagZDP2B?>))V_&9{>OT1762eSW6z}YI&%rHowN5E6^jtBtN zYSd4I<KY5UsB&AUc_|EY2LXHn6?AjTB~T{&+ukrwL?7>$w-&ekmM;FeWLx`c8W-qW zLE(v-Jo>CE5lOoM7dPQY(k%s$SlT)rlI1Ppe{w+0`V?rXx~3dw$B*G`cQ`-Iuv5G@ z$JbFraE}g;P=1*recs(W@JaA(`rf7a)N-3OYUMSymW>rw6dSrON@GSgrbj`RjeAOT zx0Jk}`H`<zk<6O_HR|;fmjHiQeC7-IOnewOh|`7A+u^a?8PmOSL34!Q&Td4yQv|%& z4jl>G9w(#QMMuZqTbWOY)*DC#2|OjjNX)aV&wn{TS3IzC_tIoGT%k}*Hr_|j41u54 z4NiATn9wV1QJD|=HhA8`=Ps)2f!fO1l%k1T$vr1Lc*23i5PhDq<3i{>w_(Q<R(l<W zZZaziC<Ncd>9wwh&7B!P&;}1B4-2fr^f`+34|w&lw-=&(#w)bglx4T-K^k_-ESoa? zo-?U~Wn27J@P73aK%z`p^4TgcAroc)^}-3OHi=enF{u}fAsxMG<RA?~iMgAQA{tci zn~N_VW^|*HR&YSVZ<<@OvDjM(rcFq`gf1A|{|eyJlz7!E>GsWm@y@B0cUs`4#Y|EA zAl_RDC46#|vKw~>)8sWbKQ+=SRQWlRjfQlZPYanX6XTX1M``#BS&`JtQ09y#6Hbd_ zf6yLbr2||S8;<X3B~>kx({)zymyA8}$3i#%E?96>O~u7}iZgnUX8<UlcibIviArOX zO`$FvMsQURzGD#5X4(n%-ixBXFKm(qSD@93?A#qMN+InA*_Ze`Ff%@a1mvN`XPwX8 zp%xa&FfC5p2=J^IStob}h!rHE0cI=-9r!}irdK@@G-ie<rg?<^6b&`J!wO?HjQfu~ zH%;Bn!8@hrd?zKC6!~2bVUKXc86B{2eCR7lGkPR(Fl7s=++KuJvGX*dqelskMLN__ zv0~bXmPgYO`Gfrit4#L>&)ekrf8`p$Dt6b~i=j2sh@j~TitH$xyoTNbnKa>fe`+2! zRfDTv5yxcP+cu-b%BJzakGOBJD;Jo`+@s?@Ha~F+7qSnc?6ksjYL0x`;UprE4cdYH z?}}QD$d;4^$Vc~b@V@D;D^U_BvyZzE#LM#I!?1XpFQhY=a}p*(S0#aH81lkvf49BJ zC8EhLCmyHRU&t(-0?`YN_`{}$o&aLQc$vvc7EC;}b{l+fUVT~gdpyEgP%~b()SRr` zpPctLaP-AjbQ<CJOhV5HUs=5LNy#ZNcpJnHltz=Qzab>VmCmq1fApQgkXJ6ou_5?7 z+`Thw^3~h3U$7pf?_3bT(ygE_llj_`N3}2>guC3KDZSbCFvX6+xaRr@4?cXTjD}o$ zF&?PbikHOUZ$hF!1@BEuuQ8Y9n{1q5E(T=L4kHt2Io-y*9mC{8XLuig5!sY8!o3X7 zgcz#r{XFrl+b=w;dbfKiZqDSyu_g#|4S7cXAGJvF@w>XLkUGaZW*`dVM`al0x!b03 z9@~)N+0yNO56uC`KcN4u#!<xmte|$4?+EahP1Xw6<WCq#Ef>Kf*rx4urZYn#Hfdv9 z6S+mKd~`#4=h4yT321q?JA)EMTw*^c(>OtNp;>BL8Vo+*3_e9Kt9**zfSE&xisWqm z+F|i*n&`HcCa;q|KjLwN^&1DNvXjvHce6*vxg`*OKj#3+&>#9#o=fLwN_u=G*Dbg6 zh5#^Jts68~@~Mr|(SF#rfB@E<4AG3*#F0NxM4(U}2gIr1FG~xJ(<Ks~=5zkm7aS0L zIqY`xt?MDJ<ageD6Kf!#F6lY`2KhpbU&1<6w^<v^+oGAxV%}b4i2sT~hZBpo$db+q z4Dc_Xrls%93bnQ=X6cPt<Cods-9fY(Tu}+5XPYPJPj2OFuR&E-_PS0^^@?7Gjg&u6 zrqzvc(E}xR(PYIK_q_=3HcyEP@P$zr%C2PsihO{-Oh{)_M2S=j)Hl2C2J@H@E8@uw zg-rSwP2I2|#}^&U8>}<XhgT}IxW<kv<aG&+?drdX^Pvf4qQ}6RgQ-cA!L_-??4xYv zI)cQ<WM(KudW<~EeTyf?J7l5~KYd0e<TXwuI@9usVR!NjjkX(TMm8Y`-8uL2)p1l& z8^naG$CIbjU-gxTMfEJS<fKDu5EatuV_Z2A_D;5QSh!7a9CdA!R0slAEGkZUng5JI z0Ynj8qS+q=R2K^*BmK68&$&cRTTk@vT%G?Qjv17{f&cF<zRrdbQ~qkZ7s2)+G^$Av z*%kRGR=m*8%B16kTBxI!Cg~e03v9)A^qiRV>br8*dfp$b)7eFTN^Z!6StcMRiF9bP z+b2}^hqA0_k8S`g!5^f$-XOz@SiMg3HWju-Hd;5;u;}eUmseTJf$aK$^*V8>w}F<i zW3i}K`eHQ#*cwcvCLNuN^0&8TCbI)KGaV^fWb9e|>l%pst!I@tV;5kHDcKu!m_iEL zk_pVXDhpIY6V#j1hIkmzjO0XU|J_2a>$Ez=8g@NWAA3@+uiOsaUHu}Z+3qwx2m7y6 z1QneJ^FNRj2ed6vg#k(9`{vlbF}0lOhSy6{jn`j+Hp?0Kj=(rU7SaRwuNk?G84K0+ zj7QdomK2VA3c}y#ILCY)Cz!ZDQGicUc6DsI-}|J<!QVc?nxdDjy~1r;OP5o)ecKlp z&ZS60^h-@li+;S!0Del=S4*4<&@XVpE(Q;Qs5}0h1XH!_CASQ}U!4_+f-L)!l@yck zM-2OmS<IK37#WM-Y3w*<*^atn0DgMirSj3>OF+&l*hkVKr)65gDd&dM_>sdCou^ht zR>B^J?-cin?L(m$4}{Jqk_$b0xg3>CNV}?6APt6ym3a16{Um{#@Pb2ft0h-7RGVE{ zwDZQQXtl%9sthofi}mV!I3~~3yJ5JDE75}e2TjTlvv~;vP7n!n^7f_hE(k-FN$(gk ziMp2AAKU>-`@!sW^_Fr~1&IH<0!?yj+GUv^vorsTbP={wRB9Z8MUsIb2x$c?<DD4$ zk=7=@zg_Pc$Pri12&kk4RPwn?8d5qM0)<fuFHi})4TY*HF1i+%3HCVs?hq;r%47%- zlp?Dq2@JcgsYS??Ex@RO@}Xb7Tz^yRx<q%20+iK=sme9mSD<4E3`cGOd93`K@n{9$ z>o`xh(>L#pe^#Ic_}Prb7#w{Q^-KUCGwu;bBO;A*)V?2(lWhpR1(u9D^NSVa)p30r zP2d)PsRS}<qR9rzQ>CYK@O%8&F&ExYd}rYM57xv@Or=x1r!w=~y-G0J;4G@RpAeIo z^Yl*uQ#8GvO={SrfYX)lOL5Zi#)uqTFPSmbD?v-0_~VFHsZCm9qAW)$y63j12sZ;@ z3jCC#Rj?^!VUX1em~2Wi^!b10JNDy%pMBT_dZ@BGg*?oQ5~C+tb*T#j#n`i}V(qf^ zD(}!xH@DMHy`E_gvdo_|al_{r%GT}v{Y+1z+xpV|>v@F|Y@&>);@h=zw;uein2f{I zZ<~|6TMGq`_M<6#<a$;++}g;*IR_=NU=IsPN)B?!184h_xsG<4n*A|OIZE}t$O6$c z!;u+(=GPc%-l2_}hp~OsRvEIcgNx+085k{sE$d&2L-d>cuetlc`BV*?FDvu);CO7! zA6vE(157=&0`@eYzQ<P^6?B#2k2aF1$1coOZO`DA;cTW-|9w_*Tzuymz3VQl<<Nw1 zi~%Ouxfo(yn8H3E9%#~(^*+yx+6WUD53>a|)dhNP*UTcBOiQ9~k^iBROzS-gD3K?q zd^{0H#jEm;@F0@$mbXvK;irMN+ww7ZfpWp34gTDG=s|%pdteUX7ZXy~g@8p&y?=m= z);0|Q^vymcwwRosFRMtfm!FieaA|QlW)5Qr;{ct4poY~;i7%||r^nnubwee(mK0wn zg#o>9Z8IJwHo^b@%dl#U*XNOy9aV_`$tQ~dISOX^##^k*4fLSni}G=KH2&UqsZu9g zyqKu$;KAE@Nnb%-zwIID%ph6&ctu*l<_yUUm(pw{KLH3^xNOrfguU)W$CkLD9pKAB zwKT%GLWUvPtj_EXACQ-tPakJ3xC=ahE~6K@f;hIs68?+uCxITlQB#FUv7-{{0{SDz zKGPbW$8Ole?mMcC)rWgdC0qL|8R+%bX5!EJGaJQ4x|R)yPYJ~a9Uss%jl<~2PC>H~ zVD9tnREQl{8hRUkl{+y}KJHNauYJ2_<%4rc19soDL7SMPH57|*4c=!Bzx5^i1vEed z*11!zA=4|W0gH`|ofC#D-V)$ZT*idf`!8-hz$o*5hu2Q|WZ6>ZlZS?A(C*;G79Hye znIGFs%r1Q__naAMrKWi}WL~1`KM$b*W@~Q>v3Z=t`;A^fKOW+_dHYKHDn={V%D7{< zQpd4Zvysnh%^<>r`dzOI1cBz{Y^pQb%$>H&eo-VrBS2Kvy%<Zd2(hx`4b?9&F9kEJ zL#NvX2yCDda5jCy*KDz5A^}s|KJ1C#m0rvy^CK8@x%AasNDH3MURuZtbXcV26Ek*n zgKc&oK?B@Ch_7>zO~krHx;-|OOM*RL3IDJT<P&Pf=zHt|Co}<quv??ZSv+A*E}Ta5 zCzk7{kVvghmcv`U{;a=s+%AVxsZJs(B6!F0GDo{`m0w)Q0=(eNa?9EiwY1d$you#A zSiEx!xdwd}{f)rIomq=&T9k`6;kl0L`+h{kXW$$X{Vf1z<K7BI)qFS=;XeVVv_7gC z_5L(SjhZoxUP>%NR|6ve)`paLesv*f%l5=+Wp4j9-VCx%$(6A^1Sp`hfc0!VI?;Eo zKt8&1Bgo>PO?J@IAn!Sr%!T7&R-xGGB2(8KBsVD}H3PJo+;Z`93k1Nula$*Oob6>~ zl25#P=g3?84*L2UJ%hBjXwZ-q^ank04{&uaRv&D>&ybNo3xSTHzu@ZKr?146@N#99 zlGjOj>2KvKC*F~U&I@8zfOL)<klZKt*0V9g)-+8ayOQ8O#a^Rgt}r8gn-B|W`gud| zrd6*N)RrqNf~EVsz9aOlPx%>&2V~lp>ib-u>4#}5^iU3Si8AkioFdN6ErB5Z`PH$W zaee7rbttpsrKwQ3QceBXBO>cMTZ)(~TzzTkLidKmML@U0>U&|Frw9!&Zz&v(BW3;s z)gM9Im~o&<dT(l_8=|=&q@u6qrVA(04fs1MxLKv$W%`%r29{MHbP`a9M1hD!C8j<r z#N!d{G7qKvz%)*T(5g~Acqv+{k@z58$;lP}41IFCfzsb@PG*5{S%xM3zwQlL-Ooq} zTfxhL2|#FB86u`_qKU_3hlCL)Hr!Xs*qKeU>v14CY^jx>@HEFA-lk-?IFKXYb1?FG z4n9B>HkCL>h56|VL`&D7jlqH)d5kl2)X^VLfOxD`@;x!<`6G6V?{p|RKOr9&!@_Nq z18X_L(QGbl`i)MFebB~|q`@LQKW3y;8`{&6B88V8p@V#O{S~D>sfUMNe6pU1{GY6w zGxri6@HSVp;_1d6*)1;-CL!2Q*ST#Y%a&WoD{8m&NgZ#Dw{3uLCNG)~W%Lyd3oU4R zR^-9(<*1|AT-0ji(w%b`-_!mVl5tT)C+NymyFU6*10opTX9|;$cLU9t+r=Db`|}k^ zIWn*5Bs)?QMJt4-{GCrj@TImDQ6F_<-RX?TyO|u~j$lzkqI0P+mc3x<WC2z{b$}|A zAN3Ls%{*YZJH_?EBI6kxl9I8nFXIK(!l5)x@i^#K+{B1lYCapd<i^B>VI-(1V6}^R z2KJI({g1;`&f-bz$*vi}8A8~{canTVUzGuf9^a#Gfn}Br3pizXti8*FrFpWuZ_*0A zs?Z*=o~V3h;E{0CoW7~>bqlP?atY{X&B}ugaQOE;KYP;4jh~Iql2}0T<9G%q>0H=# z#BI-}ZK&ebs0?rgUsPfxH3x0b!JI(w!VC+P+qFa`4MZp$LIEF~JdK!#8rMQ7aB*d7 z<7j<=v$X`(6Oy^)`z}y7Bev2eK8Rs0d}?#d!)FS_$idMauD5A<!z<Vt&b_rUGHdCX zTH{93w?VbkneqV;X+UAqu?6S2dr_VkMGwzVRH#%P2z+CLG8@_vT07HVFn%I`Cw`fP z3#sDUu<U-um1+A`bD9UtM5z!TL~R%-3rTBjg)^L>{7oPK47MOYf)jyd+&9<0x4;_A z(8<ih4?n@pFKxku!>yVJLd!hyo{i`N0hF1<m=Gq|I27Z^<hpmnS!1wwBEoGv!pBh5 zSJ2x05e^Y(sB(%;^j9Z?uSDa0o%e!nd>-&4On?EbpIp><OEzmz*;L;QTQU@sdVy?c zn8T!MUcmlV95RG$WmXuJa~p2s(PMrBI#EF=V6AON6|c)OpoaY^*ou{ZpIXMYWSir& z6Fc<bHC`br=Im;_Bie|!Si4^nbqq005#v{)AxG5pxVDLDij0*{^N64ptt-aN8ZT&} zfk`;`_{VCjdS(l3L062AOkIBVV~nYH@84_@B7c6(pvvm5pgA+c37Xg4k=tCrU?T?t zMFoo!kb2zPTU}qYrO(WH$8Oe?P1Ts?HQ8M1_{(RM--Z%l;m~mtz{2}Yh>~bx6Q}1M z2(d$Yp&Jk{Zxk=~G@@M`9^BuoVNPFFb(dn{q^%LROOo&HGu5lzAv-y<*&ndpl!tLT zor6ZJB(v|8dqe1HEoadf5`Qin!m7wAziJ3?7K+2(`<BltsL1RA<s~>Cp#qW3z!D3R za75~#hBm~Ax1e-!zS2kcIXH8n_k=hck+qz!>XayJGv~Z@FOd;^GyW%M7pr4)p-Tr| zP{dLa0GU=oZwio#{uxyLNKtC`?bF5+@3)8<8uVDSah-+a>nD7<xo|xilGlvB!aI5` ze{0>@YB)$1Q)8d-T#!f0;8Q3jZ!ba^FtX??c45ed_LLI`GEV|%Q$E0Ket}lp?&BFm zUq8>OrdEC56yd|=b`i{$=l5k!nb4-8Ntd4KYVc^tO~MBmYsuQiU6#)fMb{*FW6=># z&XPczlRxN2z|*JibOV6ZakBP5qT+USM!P$Rd}lq{k%Q<wHIp&rFJ0*sC-0k*eU{Et z8sJBIX203lRnrJ6orE*qFuD}KR43pP9p@_!Z)*LHW`W&r@VX1`@jeho(~hQ0mL>Y! zpTcBwmCiATmjEVBe#iGAtba5uWa?q=Y;P|C$0t%_MWK#Ib92FUGwZ&DaNf{M9T$q{ zZ@8IpmNDUB7Y#zsDI2L5Xo-cgiKIT25ShL?S%e}1CrUQAE928`yLGE`SEP3|RP=Br zM)khSnGR-HB%#ezk5iEZUIYj$4koC#NE6!mS0;}jw!66uU~KE{gMDqhENCNBS$Vny zGuuRep}8DeyYwn6AMt>exu#<GA;G$w&vKQtGG}w$zbvTqB)zxuVh!@7$FaSSTMdd> zGpE=ZANy}nH4}xItd+w6m{Er!*|X87JCFlbapAPN<>c_B&j(i~`?wv9j%7%~M{HwI zV+XdZU?wX;>)-^R6;*2b;D!aGb58~EIhz5dd{o9#g}8;4sqYEt+&cPqC5TZdYpQ-y z#k-N<bkSS$%{(k;WB1WnihJmQPa~O{zOhsw&}8IF2C5fLi-|lR859aDZ=O%%Xhs_g z{0Dv1FCgZSSZpLXeq5c_&>~XsRqV(W;vF>731k1IBrS~_sJ1>`4JdyAM@a7TlUV|7 z&D*XX^3$3r#QQ)d_qfW7@H+oB01E1n))H5>!<Nt<9i%Wyr&XxhE3!1Qsy?xNw5k9a z%+w0RN)s-RBl~nH45;)~$WwW*^Mx!^YGd{Dw;)7vrPrEx75Tvi@1hlKJtyWg>C6F? ze_|1^e^*Wbh?DAAaBhlKNld+V!&kj+xSPAnMvdp@m1_vl_(WOjcF8$E{9sm#H9Y>s zeWLiaVg0x6>+-|KA>Halm{~|C0eSdw{yvXRjB>|qmfXzJbWtZ>-nl30vI}fUIpAx* zx}rfX{j(_2Wq|ADqPW!le}mc>#k$|I#_Z%3G%Ff!TyQpm(xNc7L=ZSItT;Vssb%ex zm<l>{1RWiK#}T?W-`uUbdDriLH1G|Nw*sPPH2CA0)%<kE9FA%_)a(f>TR;f<z0Mnp z%n|V&|4ltQP$t3D3Em38^n(*5n=SJL20$dwas$4HscgrE3tASo$qb{UL1%c;QjA%k zHjnc1XNqP;<6;KvAPlD9aO)p;y(7`76<{Mf=s)_EI_W@Zh!OsqVPsd4QqRf;a5!?C zQfDl8-IYhK7KyNu39G(la<z)|>WG8up%tj;XTP*o;ftELtA0D^>}PpMdCdabd}23M zyI~|Gb{CH;mTy~eZqOUt&Ww@Cl59MU1Jjk#@y?R*+0Er4E$jZPNB<=WXO9U@GORY# zrj8T>;8PWJ-Re7XuX55W<?rRoQYIW%Q{9OF;g?nlZEv-PLVC4>u=;`yw)Gg%*P0fm zG#~Ucx@>P@CFj3Xm_-3!ex@k^632d0lAa-u_3v8%uH4$lY|A-HhGCbZ?!;``k@GOJ zZwgAo0SvJ~0gbqDF&1DNK;%F<VVy`*{O~bU-AKMTPI>Jq>$K0^3G=~`YEPM|c%RQK zy~NV}&WtQkjmIV{Si(vkt0DjB1?X8kk?Pl((S`J+_W*>wE-iYp5uW-)mW*uh>va+) zmlle*Z(s276Fqqy@b7BjAkw%@hj?J_ED8&t$&7{c!~%`sTlZ?FWHU!t`~FfEn~HH9 zsV*qWHmqf;3uGEn6R<*M%$G=#2?&Ky!IjR@#N5Ot<ijIt*nm24P(vXi{ig?Hs=gpt z?p6L;*5RU{*KW$BQl>-*TVJ@VDF?pB+8GV(+B0~xC0WL~Qm>Tx1t1C4-bhQ43gGI} z$w43&eE9d_Fz_z*9itHfSwkgn4>W>S636uV<WvohY2@(ny}?1(GI<G}^uKXzlTfXi zb*x9fwMw0rkJzcC<TCOnJC>dzX`b>pRWW0nZR-DOo1Vy=R<kT`-hw9fg3ziYe`wP| z5RyD^R@q1Mhs$0p-EAh?+zS8=5Wj5*6F*pdQz|S1q*R1Rv>-4n0q4~(IrY!9K;=)` zy#s#VB%h-%x9ZrfU6}r{z3%X_CFOZ~uGa~&?@oD12O7r%<N9J(%|a3S<q)A8X)R4n zuARTeJsg=Fa~eJKD@5Ql2~*6L-Jm@IR^>Nm`X$?cNmIM)ttAgIlq)=^kWyBoRsG#v zzN%D$qLzmI);}r(1dZd1wCoC&QDsIl00LPV!roS7p{Tr`y#ubkySYn%WpJU))0i|W zgs!h#DMR_%8}bf<>@(0I=vT>mcO6aP>@!YWrsJV+sXVsq<vX#*7>h~T+|07B$I+{_ zOuLNmISw`!+L1V$qM?a`#}0tRPY))?wI*6dum@UaII5LU3!uwOp)Uhl`^aPNQupiZ z*NPTW`tl*`c0z95hRU~!`V?~?2_{xPk><dyrbC5(WbHovLj(iQ7s<0EB~Ogw5E*YA zqHOSW>NZ-F(`kVxApF37E_O6lsp&oigQ)R%HV6Hq*MDBa&cW}9y3Ot`mjX@!>baKR zltDkZ63?^~!Z$LTzP#rXB(tO6rYl0?^*!^xv&b43Z2`Cl@GWb&E{)|cPTa63Js6uH z5qv-wl?9%aH^w~TGiB;`TS$U#`MD)#{#EsuHB>|Jz5>=ig~7}?$Nnv}X!$I2!66wU z{`$0FS2-)~Nvxac#0>NobLJdK1(p92>c8Zy@mxT!-#d_G16+qezcI&$ASB7AjwDTg zxpC+Y=d8JyI3I0N-Qk|*9In#{x2(Mt4S|U^B`*?~adBXQ(@^|@iFbc`WXHI}Dii%c z$oy@-YSK0=)?3_@R}{KCjE~pgnKAM5ND%|2`n6i@<%;#=GXwB%vfwI~^G+{g$4o`! z=XNIQ$&#S?_yr6>@99Ney_w|`sj-n;#`V;Q*>73e<a`Yy`DL!_iM3Y$DEhxg8yJMa z4-R`L#ijzv#$~v-FUx+>`B)&GcfP+s+DB5GIwW3%!3+oJt!TZ0t;2daMjJUBsUNXk zMdhBOfRf1X(%W-3wWJ3cSl^VY{5C}?z)M04!?Q484kIqy9e6_}@l?)RbzAIiI-L7` zUYP0^HnX4RPm5Ak&tOpA3Cj69SC9`lTZrOHlDXR*j|*ZHvJ8Nz^t^-`104f~cRn6H zy182C>kLv7^~c1WgCb~(g4s-r!$^mGQMw|)r;>>mss5Sx0tUHOf&Tig|4|+i$Z4Ka zd87)_y!OLK+*CF*iaf;E?j#Dwypim9jmJ|~;fpT6MTZ*5-rK<5ps`&(CY7j^Y^By7 z#2DXf@@*6r1}+31d?@@#C3mnYB<b(l$9{i=uXv}H=bS@$<Bs^F`!j-%^gc*n<z~x< z422fN{kLty{Do`*<M~zH8LE=U<b&f=CJaB1Ys;1k4ikFSQ}}(j^;a3y`8G4OUogk5 zk$!N`e$tw#XWn<w(Ina9EddHi36yc!KA7gI^-(}v>@Vpw^<Ks<4+)5g7PAFnz=Sjb z<H3QDCcz(!x@vk-gR`fs#jqAYRjpLT<x<5y2|v^R=tL&PNt7~sM?B1u!2tIqnDY%g z9lk<F802#yyC>S!w94k*kI_#}QsApNJ!;f-fRbB{*L)i6SMwAXjh#hLjxqp&i!~k@ z0Oa{Ad^W9i^mnmp7_Jw8U6;Md2U10&jbk`vl{%|o>Xl5Uw2QqeMExr0^+*Vl8V-3j zzm`)pijab#NY41J^a~8e+(!|`-XFB`AaKRED4t2kv}3nAk+O;heKb~|1Waud;+Idl zKnAQ<D?Y2giBZD6%ZMF`FZphcg_Y*y>6skwa~FkH>36|j4Q8Lx+N?_!L!tN0zC=+t zd63opVZ=7s`OCY7>=DI?5ag<OlqUikYi;}}j2m-}otpgDAsLb$&R`glvsAkVfqf9m zsf%3(e&EaRTVi3rO)8I<{_c^GiCIBFdCK4H;60EB1}pp;e&S}KpvL>86>u&|7^7#S zkzsPn-vnmT!DMLosRz@FCVfJy!3vQ+$N)vqS$hg?D%lZ}q(2-vc#Hy@cS9dC_4C(l z#BbX?EX?e8BkYjkh1O!O4YJ3h{V=U))J0ztP>Hjwj-Z`gqAEb4I!f{WJRdjxKYZAg z;xfA}iCZNnvUla_j9&x4B!Eb@gFB4EdZ4Nw)kzsmyO+2Hks#m@V4(v8w#dj7f}*j( z1CdJ38=8K~$0f${QXwPojxK%BPJ&F^ym`|NHdMnmCsfDV3MByQb}~C<PWPlu7x8Ig z@?D`}cooQLM%t)Em*Rs}#8|P^a0vd*`7xa|qg}()m~5qI#sc@@49MmF6jTD;ixHh3 zF4fMWUYx7SFcSsn%tA7|=Q;4Db)%R>bbMWF0hVczMj4X2*B_EDp!?9TxnfIkpBujF zRr(}}^<Fe(ES{Ly?+?0i)%(vYH*0^TeZ>o8;aY3r6c<I^^XoK|+;Sn`h&pOVKQ&WZ zzPGR(08NN~G(&7b)-q%8vB}wz5P$WKrTb{BB@<5Z>hOz$TmlU8-WjH5803w4+sTJ_ zI+oOgu)hqXa`qdI54P{61(AEML=3m|0eS(k`RU|so8F!9rwv*`!{V0PWko^I(V4R{ zX0=gGjc`&qPo>rS>a9NaS0q-vLYJ2><vxP0!n~`I#GgqjP=8Kw2DL(#W%`s+iV|_K ztxmgM9T`D~lBFG*T(@Ah3*b;yHA(Q?ohNO`+Y<w5jaWolnDY&hv*oo#jc5C05P@bJ zt9&>|FUL+s=+`es*+dFDJ+SgUX-3Iw_aOV(%d8b*pjcci1s8tCE^=jLO=x3(*nSWP zL;66{1@mD4PjJ!EnHhpYwT&?hZ1;vlxju0UOXv?mqkdoh*xOc6m)mqhB0R~t3}W|< zq@yodc#7u<;?of!e9VqdHFP@i8(Q5ow?%RJZGMC+psIqFd;arD>e!ZhBH_VFs>sUO z^=<6DX6C2-siVaVq{9J7Xx!XA8so@2m9sjGUxQF=Qbww-JB8ESMcHT@fhxIgG!9Jj zucbHCB7If5kb0Ch8D88r*$o`4?(D9S(V{87@!-xR2c<QTRgHZ(toN!`-Glm00t)2~ z*m)BH5JEje=5=f^I<V=$0LC$W6xQV`RyKQ>lYd~&k3vZ~R!e3`1k<SQ`QmuaawP2h zQ=vj7*1Fy`!s?iL>Q7x2EhV4Qh8Nz-&L>Q|K-W1Qm)O2yjnwI#zr&{hQen41s^}7! zBn!LbcKE~IPTBV#$fDJA4IU)XYC_VRInFX9*Nb%VM<AouD#{|%PC)?EJ6>fl8>eA9 zCo(@Uc)S%*hCIvUCDA^Y^rUUl#t{BOH+IZxW`2)Nt3#i#JLnoTiuz{H{$(S`()Pm6 zVgYRdfl=@21JAk!Bzu|`Fh!+1=*f2gl|?$YAJ&KejM-o&Y{h0u{qB_PLl7Y$jXkZ? zeBwrJmD(S>PVATAb;|#zLSL{#zhpaOI3{9hn8s_SBOZU>^lB_(oU5IT2}e=NFf?n` zqnFK}5%MhxUsKdc0O9<7tgt&g{qK4`gdsB*$){TA?VH>58E8Z5I46EDu~#-g5=rV| z=IC>S)tZX#wMbARQp+Y*Y0maM5{Fyu)|~L}N*UVC!L?aeNxj4m7*9dHPG%?hL6$j{ zOwS5=$Xpqid3qRrZQb~GZwm&^00h$-CDT#|0k8`vIPXW8Jb40UwT%E(6wU4=&=nWf zRch=aYdvU0&_;#N!fz_2G#(hVC23MXZXf&Y;d$U_9AV;9{fxTr1>w$FSGzWOb2m`N z4_7~@_%fjv(_e)Xe5d^81R}3K6WhgFX%f^o#smV9i5xbU$pLxkfBwa{&qUz=-XK=4 zdouc!%1UT*^_y55Sd5<~L`f=c7aLlsARl$wwGg9ofE<^brRAtUBM56OM8i99$v#N4 zUyb0YE;70s3cJ&d8dt3a*Avq=w3}B3Cll1N>^Dn~$~QEDwt%V-`*n2j?7UVf<83!P zTUU_>`_SEI!)1lE9ivKwRpyCbfwHS-HrnxXEZejg?t&GMx#jl(E2S3x)?PmaXv>LD zC@Oxo8!!=OSoWZ9g7~$?`QRB;5GdE{6&BKVDT!C7C2A~K5VZSeFAZeWt`r@okBs5} zsH30$@~-|va+r~FiXzt%R=PKon;#WSAlPtgzAUo_?F$D#>xbGQm*=3S$1M#E`j+QR zCk544=#PWa_TC``5nxkA+4;h5H;e;>;9raq&?hU6F*_C<oLhuCi6~hmoCEa5!AtX$ zctLWfjr#N|K~n(=g1Irm41?8Mdgy6e-Y)OF!in5*AcqE4^CB=se<0|+>?pS~{a)y> zKp2{&igm7}2qIUJ?;5HFnM*%?<+}R0yczM~7Ho)iM)vB)OpExOTP;I7>OPrcY{R~U z^_jsRDGvS%L@vqS;QND{3FMxC&iWUWSF^JyrA@zEhv!y3?pjln+K7GqDTOi!(LOr@ z^A0e)bsbg%PML@Ki{*@^$$764xcI)*&x{)L#ZV(LV1VoG#2GLueVFE%(hf0*s=*oc zK`SMD@p84lknBGc>fk)>OuZ|UE?rp&)BmV?+_VT<pKXa5c?Dc$U>J*6@9Dx3dc=-Y zBzuyl*}tnKsWGNA_>jSf@%hW&vx%G;H+zI#RaS8Gx|lGt!uUP7Oz5J4zSOLy6Gc`a zK|-e2w@UQ>0DuWKw(T!8g1xu~!el{`HG;I`Q%gefVJKspG+he~Oj2!vnH+eRBgQi! zkH?Mx=l7B(<8GAcotB8qFQ7~BG_IKL0Me6C{b1P_YnXP((0ty#R91gIL|{|h@=9mx zQ2X-(%18!Z_hf{RNC(Zw^>y+0?o(6-e<$au6kj<?3=W!I3$%iw;v9pC;mM}XbnJm) ztjmA*XW`jc$KC`dnys;>*+qeBhZ3p-<9=w<fcvkAXsB^GY*75LilU_Iw3V>)m2TI} z`luVb)F=OBlkiE44SY=6*LQqQK90&G6SH5ugGj97eFBb4YJYj2jgwc-)J^;P(w8?G zl9@dT-#4Us96Pw)V-&X0FuB?f7aXn%mw(~Qm0e5Mh0yJ>Y8W_jC4P7ATywmv4e!mb zaNa&i#vwLUJ1vG9dr=`xqSlTXW4D#(jh5uQgu#&z1zP)##<G8lwJ(Q<Y(MYbW%-E+ zgPoxvw4+8{W!G!FBK%1etmo`(bW8oy5ld?DkaPFJ-Gmi1d;CKm{hwZiR~}kzjian; zXW7dh&FQL}C@#BvQHha07&pk^#ieKKc9XAa-Q5<K6==o<r%QC?a;D`Ym6rB~m9w&D z2{4Hun4^3+b~O0{`Ae*#do%s=iN&H&1kidtXvJXf&u9{gU-$h`#xm-TH*9#59zC^& za)*cc)r-F~%xT@j1FQ3snD6aMG5|C9=L-qi1lzY;aB)t-j)tV(;=u!DQCSG{0b9xA zc6_rNc|w3wXwz)z<S*){Kh;eVW_glxsgNj(N3GraM3vBy#b05UBx6`Eft3Hy{`*|* zokdifLAS1PcMI;`NbttpT^pAKcZcA?35|P#YtZ2C*0==%!3pl}cKPpF=g!XXjt(`b zs`X83)w62wezoh}8^E>`(Yn8uw*7QK-Sa{9aa_q6Mp#4V=%*=VNeslO6^Pe^Z#HcG zk}2GDa+{;W0M<zbyChx!8Rn$V#ey9o1aq&3+SUlVp|PKt@~d`tKTCvDC|K#35o{cp zu<oS{KWX3=Y*_BH>j$v$K%fI)$*j6fdN&Kq)i+t^-T!Su*OibytrLl@(xX5A1@3wr zS*%L-a@`jNTI1keIysqqWVHG-zVViUmZj;cw5u-8x|`5vpIkXnXERS*gL#UrX#~Ii z`xk@u3l6axERT+7&o?WIRY~XrvcB;)j-`>pm!7}>jMxnfvnG~)k>e=Le%#Y14k?$s zZIQ&<&j_`wh@OLBK9!Rxj~mR36A<Dqew3z>nWX(&xT57FP(9J?-Gj?ITj?*`;LBBp z)-QYrrn|Bw80EgD7m<hlIO;@%7s?6X6~oSq2$Hy_TNEF1+NLJeYHmbh!oA>~)ur^H z-+I(H1Ysf;;DU#mxFXCYc*=W58jfL>=IsTMoF7UCc|$9;$)8$RJ4#xvKi0t|90)|= zEZApkfOUY#D5NnPt5z-=O#{iL35RyG_WQ;q3G&<G8+Z7Fh)1u66i~Mk3R>}8MMROt zzf^{)Htiz5Usw&*goC_Z+JS?68}oPT(7~@PFQg=_=Q1%UCtmJRBW&n`DyUe-{nN;5 zd}%M718VzzeJihfD4ES}8;2$Lm!-^W;pAfj*%c2M$xbM6Y{=0}oD4afgknhTbgh{N zcyss=$u#4$m3jhkC&aFu9T~mIt(`t;4LhPFIheN49OlgK>LPjei=`M^#_b7-GF-32 zM^hc&v>e_L+9&R1MZr@neyO+YsM@^@bln6R%h6}2m9}6O96r@f8i(VSiq70xM}f|o z7;CYHLnZC1SWP+|3lh~^@)@RKC&q`<FdT<n)&+D66zydD80zuMa4gU(>R8)~H4a>D z9<3eJpt3wZB|=(6qY$|vJ^C6`XO~ZSI$RQIUDIF|Prf;^($z380kT*@yi2k$8RjLO z&xLab1!7|6VjIm|EOgJ!eSYCNxc2bUd#${!veb{E!Va<-%`tQb-zSxx9HCce8#R>m z%sOyQcj9{iSVWR2Q?v@AK^ou&@5r&6vx%TP)-o+|4BAwr_7ijRTkrWzS5DC=Z(2wL zl%-EP@u9_>$lAp<&%R2z=-p5HSR3*QTeUZM`6j=1><{XT$eBTF-cWlFB`N)#Rm5z6 z`0ZngRDHg@lYFIHgs2$GOndK~hrJdV|9iEdR%C7ZRiK4kdb=haMvW-DE=fh6RtL3s zH-&Yno&1rr6t(@kB8{z0J+?gtt<!Ll&k>Lsg0ba1Mlhw+{Oek*Xy1T?U$5lm2BcTP zY!#sc%XAf%FK-zl*0BVydg!JyH)-28fxBgE<zM)j=SJBq5woNS=;p@zxXY$B=0z7T zLSuv-z1|%$a=Oohgz0s?FhQyROoLJF@-&a9o%J!>E9e8E>i8dMQAYJ9d;D!>(_KyW zMj3qEVTQ;McN?RBTuRb31p3E2kz@$`s%xMFo=0m{GGa650gi?EV(cBoeu4!C%Qb1( z7jdQOqtv=%jXw;qhgdMZ&mOsqmIVUcG1E^V!uy-9A-y~E*05e4P0PszfyG`@r~as! zNxcsyMJ?%$Tq8*gw)fP#WZ*-6HS^kbAs`oQyM;BQDgGsVCdTnH)kOh0e8o3KSxd<A zuHwTW<|)4L%8+~XJ`}L6R}&}Y8>G_pOaM|&G{aX8=0=_X820Q4ob*ocYXA>^JwoXm z^g)PJM3>V34l~n~2h4@g`d-d3@llSy@;fxjerk)4$oE8Ro%M@p$}aVBG$ARJPf7(w zqP()(W@d&U*XwJmz<o?FC4Euj{Dgsh^j5Xh!NO;f(=t#j1tHh$^6yL!E_u@A$SzN; z+>bz-R}2aZ(3<xL^ae&S{LHF(zy=L+^15<6)sI;@VHE@N-LzI=zgD5CvQNor&34{y zPAs!zK)N%MQw6wz-ocm`PP35|B>S=kB4z|#7Z)4U=7|nDP>%1G@A)eUa=>tQ%d{!i z9K)qJhjHeIKE-T<U2-mhgtpya0g3qMWqMJ=>}MMcIC-frCU+54?g3D{hJbP(_V%00 z!{HL7rS4pn`INw&FlWP=!}v;W=MTcS0d1tbhFN}y*ca^fDe)H~sai~3ewy~XX+K%N z?Qr-fA1<tSH!hoP0hB)SBoDvdQDX+sfgxow(!cpuWs5zq{8Js86Xw=dWvQ!^b|tBZ z+3?q*2CL4EzR?i^6KH#1*)9z?#D3&cF#Y>MSUCplk^Zqb?-&~u)KfIrXIN<8zZ^IH z3ZBq;eCXShwWjh+Rb;W4nm-bZv0gqY`+7xV@LiL#kIl`4DJ!>#DPRB(#{RW_T*QHd zk<)HmHiNgbWOpue9t&Yfw_?4Z>oqZBq^g<oiPVpE%JadK>*gO#cy)yNg+d~ZpDh!C zY7)7}ob=<76u5uPRS7VX%NV2m4@M`RhV~?biDxTX;(K7D$cx{@_Y>0&!!s_nA3hS8 zLGYoGHq~BgfZ4EM--je0?LUj-C|^fkW>hQI9q=lnHtq9=3r#ewyBGLCBgZb*Aose! zJW3K0zMm4gl-X=Zdhpq#8crlEtagD^XwtN`mRYBhm|M%VP;WUQ??(idJ<njxgzVAG z6Cr)-OGX7&h!A-vb<9oAXR>H%W(lV(gZ$wIe?ce2^4f4oUXEa(%52LCOmVCr@+Mrq zP(&X7pf$F(^C~9RLJ;OR{6xGu2>r|By|}v6j4Ju#=G=2Pxh~9e<?=pr2e&fW!P<3P zvRllK9>ORQNA5pcg=b|-uZ`gXBo(kE$H|DlrR?ugi5MM$P7Q3!^s_3bGC&74Us4dX zoM83-0Nw^ZhW+8tw~gX#hCheQ0NACdr!iylKR@ea9o_G7o>EI==>%*9IOW&EU32jw z$1+S|EmLaCUfHd0t%q`#v)lA{tdoqBc<XVEdy#SFzovY|tHvR=s`_qCWjwZQXSC{S zz%Z#@=vk>T8HfFo4KnE4PC4PuT5ZYk^pN7?ktx2f^{`pXKA?b9Qfaz@r$uK)F#UP$ z&!3D&mJ81D!e7L}IM9uIDIfr6f};-2S$6JL1w9V|)i8RzWT@f6>p_`!$(L_+Iw6T@ z^aWo&j!df8$D(MDl0%LFoe1K5H2>x<TM&=oLWV-ss6GlQbKHIDDZX77$V}7@-B{6G z?vlV4D-PRB%cR$K-xt&$Zd`sv|1=(#?AM5DgJl`WlXXt;q9HzJa1e(Y-n_Q68UER& z@oVBm?yZw4)oIxIIi*8`yZe!sctdT_j!-x9n}Yz*+^{v-f;&4uJgP$kD;ETMB|MzB z&2Zyg@0xIc_a;)r*d=#RkGH$qV$}VmZ0&K+to21L+s4@J5dG|B%Rxx@z+e(9K46tp z%vq~@eM&Kq)^|PR?P=4^V{os2OEDVnCNcGNU+ve4<W}4Hy@F_zA2}L@bR`_|epOP5 zMd%W?`get|Pfh7CiOCvDr!DyiuA$wgYW!8dh-vu%x~Ql~ygLViC{o`9ucM~}R`aH_ z$DP(%{fc~-U07|Z#;f<CZw8mk$0}`%;a70xPbt8R?1#}`Lg5l&p;~K|9lPkyR*bS- zJ^As)Jp+%U1>|Q7zN%P-#=|cOiQ%^<2)-7eg;gY%s1*m(rOm{&-MQI<CcV5QX<$U% zrP?;v5gKLAs<DHW@jrt`nzpe5*q}&)qlfrluKD8nAgj%~!QZ$lEDOZ7{=xnhiVru4 z61z#&cyto?tR&g`97q9mP=ne=q@FC`vn`$vOZqH-!UH}YWJ@s1ZAEK_t`>EQY4}y~ zIT$zf_x$|x+`mYw*6+letr&@<oh9wpvVGyrRd-d2Y6)(6pG0Je7V$B1+c@WAf#e?# z{1%???<BJMgkU}=d4XWs>O1c!y?=t^!=tI|dk|R-5yNo*mfGleFyiuF$}@o9-YlF+ zC~<YBwHuVJ_21`_n?6_qifXd%CS=Z@1wxW?e|Mc==aTiDc^vf;QB<+?<9T3Y2*A`H zwdFf7CA<Hf1BOU}3$zL&$>?0sGDPY^L%f!%krjDpnd2KD^IIFT*5KM73`=7lx;7h1 zsDYkRsRV`M&`FH$vq-^=`eF$<v?CrLk$R@~RXKP>3y>(rTCbm=Zxjk#viS!$^Z7j) z?;13+)hn{Q)Q`WcNCg~jS+}8T7U!Id9NRG_Smd0H{*#u}bD*k|ur1ks>6{_j1!f>n z=X+x=bwA7tGT`O7u!Lpk%`I|AEB#Rzv^M6gH~7pJN-eZ?%jFne|JBH0{wD!6GkiOT zWuB1g_@s?I?M~CR6fE@GCn=t-fPCwQcxGJX!h$cMSLG0yhJn>9;CGas8AJ=VTE(8& zn~453$GE)<7h7$!B_pEwo0wtXR?{k$=P3E)?vmSIM=GpUr!KaH7Yz%$tX7<|lmTS2 zZd%@(VNUg6+cg>T9pV~`HNN;Czh|?`&o0ulh<YQIL#8U8lOK>hU3l)z{Y|%A?~~su zMVSbpEmBs|)}Ycn3-8Ssi}LaXZMR)a-HliKJ8eO?!}HxU+0?FMaO7J0fC83g3yK$8 zsrw&xeh!-qSn=3iuz`MFNmH)3C3zqoOZ>25WC;^-Uh;pqLO~pJG^WUm{v2l{^Rp4l zmx@w$40T6ktAMqmwc%Sc9v^N!n;r`0HHe>{o-Y+>;xobgydnyg4(J&Q59=3ushYG^ z{zJF_TNQlr2@^uSWua}?FH=Wcz0guLkx?(?t%}(vgpw+@$^!^na)@Z9Cuu9uow@!` zwVVlY6ezg=OkQ7K{dJ+-go_Tdk`WZ_Dq%CLLw`%T*hF`<9k^S^Tbk-?Xd7^(`g?s> z2CL`TGLeqCJkbF-*#*`t(<TcX`y=vhZ+?*~F{EY|gcNQDpx?`>V@P^iE6MLV)WTse zAEa{vzXWTgdy@QAAE)6fY_OD0f+1>6Ze9c@tY*s@5+GeWz1^{tyLnv720DMIlijr* z3^zhWElG}9&d7dhmd&PpeoiFb8W-FS%4wt#Dv(l>A}GPOH;rURM4$ECE%gkHi;23( zTyOPvLYK?jL@214vTf@iY!c0jH@~q8{7`k-+0SpW&-OXPx%y*X!DnR_p1E!NTZP$X z7!dTw>>vEO>=ZvZzu@GtbC81IPlrk(rSc%>P>r5sCkk`6?qT!3yO0{TJg59SQft%+ zVtBLzxE8{=@fS>25N0JyFaaHguWfE&@88x3g8aw1Q9K}#CPB@Kxp;W{Xo}!>o08iL zPdwwpY4%3f%Ig<X56k!zFTeB3oI~(W+2LxR6$w=w(ZQjd()*9wwA8I*(GAL{Bf27` zOw4md@Dv$6!qTgg5KQ~fzu+$Q?276`wb3mC(YB6AHEc9dtAO44%ML=g+tak6rasi6 zcx^~yO0KR3VL4v_OYO4FtIk(C7%DmpOp3-oqg>kJ-mCbsRG?0%a|<I0=##{TJJ)R7 zkjg$pD`pd?q@az{tngI|56tg<l?#84`18zx#UZJhy9vV;eC%I^EHS#mF2Mt1>*hM_ zy6M8GP!YV#y)wQ9g`LC;BX8D<*}2+&<gQhJ8~qlq!5{irYS9ZcjyvgkXvcAnG%!3) zO_iocadNE`@M){Znp0_=q()!Hb9755DTjS8UXm`0FMoT++O95;hqa=hYXGoZPJQ86 zeoHeN$ik#b;<Xi|ib$w8)t6=T`k>&_q;kydtbV<gaf_Y_rD=N1koDZ3wsa&fba8ai z!;IbjBnFGx-W^63>MGWuN?z_b_AeTK9}UEON*cTaZ;Fq=C%aA$Wps0wq8DC+dk5*_ zCo?z>)1Fz>a8}q%)t{w7ZKjBJsR~)w=oh6;EITHXYv0sfDMUYCK|HUez;QP;j`4)x z&h4K=ChrI0E~Xp_LL*MT{O(T6_b{011<+q8k)+7%l$is@rXVQWOQtx?fo%&qtivSa zc+GPx{aGIvko(hpnZEPymYr<eM{7djQ=aiZ#3Qd8OMtXA9+FmQFGr@EI1acl*n7V{ z8b}bsJctRAtpYf<n%W7`Q!{kyh?uFBE`%)Ezo*nXmsw~7_KrzxzBFldU<W6C-k}}Q zYScQVq+cXSh5KZ9h&J;5({7UMtUsP~VIT*sbg0RPCb!{lYxa_+kvqXn<q8n<et*&z zz2%k{=nEm)9f@-9WQ1gi>R$RFB62Zr)6P+gLvTpVQLLN~23!ry^EuvzE6R)=4%_^* z|7F+0aE!WOYn|lEA@~;Vfi<K#YYg}PV0@GtRenh@)Ffy?qEh7%AV5K4hs@yv!i-sK z4{CSlNky;|7m;4|&<ri^CDBA^x#C?Ag&!LycgyvN#TRX@mkXhzR8q`7$-wqPV<x>J zca2*#Mc$@}!sVeq9-A35XynGB&9f_JOaDt!iVUT!F|j29-)*8M&lHczF4#43j7<6i z@+;4XfAa_Q9FjBv&XYqGZdrytn{8;5=pH3XJX%SJ@a|t+gi|}bW)f0&qqs&VQB*+y zpP8f@xu!RK$<`u`8<$cO6Bqu?0#TRikY$Eoc?&#%UnjbVd~1$1bb&kXW|4QWI6a;D zlz2mQNpic#0hpG+b`jY2t16=rQX|%6!QY{qD}Q?WwOk6xIwkLn!KwCn0Gh1UlK`*D z*xY1t4g+PSqr(1g41XO0P3uwF#od(@Sj_@%>z63gELVHMgJhqNk`kBt;@n}mpUTvy z9&^-auYFkN8jDu)Z!}UAjt?fe{O6}#Xkv|p!V>DF_$~h7UQ+u0&?>SSk@zC#qxZ%G zGba%**haDf;R8Fd#;dXm-q;Cfg!Vq$!h@5Cfw3B~ghFuFM_LJcc@PcjFRv%JhFfkc zq=kBx@~yp<xT~P9x|40S<OdBiD05G@9bUkjDk%s7*@!byw??l6!E@X(d?70QDm=h- ztE?sL3z=>(uxF8H!SQ}_9d(O5XL1q1&D&;Dqa1g9!{)5Zap9{Zr^d4FjnI?T;hN!e z7dy(k#x%YWF%IyNzFL3AwIu<0@REcWhP`eJ@QFQKiKu$*Du+Eg$&#uMY9>~nKveyC z!t&QmqLz>s$&;x8mU5x<L#v*rdXS{eG(7&dvdP-jFECeDKtLLUXk**TF(;9hOx*Au zb@+@98E?F@{N~G^Vv@r`-<!ER_+j<-!XA&^Jmm{iVTdqwaRrbpXTmOmC5l8};)&I| zFEIK;2^cA-$(yod7~9HeB{YvB5nMbo7>PHvF9c61X|3R$T|u^{S=zH{eU<6FKLo@K z#&4fIyE1x+x>>$-?N!5)!~Hx8a{_?yuW_gTybG=0k*pkbZNeXBl}i2WQ(?14EP}jW zVEph5^eWBwm8`aYy1wl^H-=Ref~&8fH2=-SHIh#opNPu25CYF=Q~<NJf7pT5WtJ-u zBxi@u#<KPK<7@aoeEM1`<WRl40#9nd&^%fpucp4n9Tj7wUy<H9eo;Q`oSo-OO@(Sr zH~n!d$_uXr4n}WLtOFK<<4CE-vJYJ)@A?HN_Ja+TSRbm4AyGVW+a{nplk9f6s8lc+ zS;8J2#T+AJ4$)2seecXAO6f}b#$(i%!q{wSix}@n7k?8m>9<e9{)<RZ`^eYc`HaSn zoqua+UWcE;P+G&Fd%itER0~h>O`_TeYokCmsD3dM;cG<8OIR+4n0M8v|A3TO^Y?QT zL`tgRYbY{^l~F>0p2Xh*TZH}uon#PBY0Q8Xv5JCq?y~#H7Nuc_?`<lALS>af+<<V& zyO((sunRMO;2A^Bv$ynUGTUj0B3kkF-&9W;$u;>GF27%19x_=loEhW21czYie=5&D z4VbF*=7DW_k-}d+389|+J!|J3V?IgU#{J^kUTwlWZo~1w*yr>|O84EOvjkE~9AhK> z8+x-vgaggeBN?E<{(r!F_ue04r)V>TrDqPbmknqt0eNsO-+Hc5g}E5AdZIjZK}`+R z%x;B$5V#3lx_6}PJ{uWI2qpRp3;eS@8FBFMmSWM62%g!H(KUijd2W1Zh$tF>B8b8w zh`9i(>jYZZI1eAT#_(n8E5-csH{C1xOYB=OJdLn*l{^LxMz-8Yd*-OTWYU#Q@^eOJ z!{k0PlU3*W<*_`2knJL!6;IL0o_e>zA>Cu{7lK}9NTp26yeOQ0PSAygP;Ozt9*H7X z*w36Oyqa`Mo^M#6|NCA~fHc0@(DPrunE{8$3xBz}ZV2tYSe6P^{Eua*H6@zgA!DNC zoxcFkZCZ-)H?34FHkbW@(&3Njyf<bz7?{pzELN4i6*Gx$CnGMen*n0RXU*ym?Tkb# zFAMJ;5z2*A0V7Rgq3H%JWD|!}ya+@0=2S3hwSj)efR7z#dZVZXPQ_uFQrD*g@$|qd zuQ!23q1N`H66H~#wHpr=se+MrW>fqFVlP_{lLFcLSL~%}+f1S{+mjS6eKTvrFG~}p zJ2)$=IHwdG3ZUHEdedgmD_J^c-ZLXrf<qLcIdt2SfP0MAb+uHF;E<ltch2dZG8->T zOThyhqfRak$mOqX789-7=(uOU<O>Q3oB?OhvqTAo**yDWDp1w=Fy{>RzS7gnKDeL{ zfmFK}ss~XA2dfOXGK9u)&U_y>^@9?Z3}0d-uTKR0Y0R*l+p*?SkZ|&Kpm58q)82|} z*`WrKkv06nfeWD1z}h_cuorSBj%(b%N!j?8qOvJ0|D~4S)6k@cN~UEa^-p(9+F`&j z-VUevAFsP^<SRhB@9%L+QEIc>*zMB=z7kMfuXnb=)C&d=uZ)#8NI^G-hzB#%4J2IV zNjI>@I1vi?sw9{fR-H+HUd#@S5sAlap~}3tSUV|$<?shG>Pcg77h*~^?L7cnYrb() z!@c7OCG}m)X^S)5w1}?6C$zt>{amm~_HvoIt-;KRo^7quud0kCj3Cw8VY6VRk`hYc z`YV+#NW-K7$neS=X3&5WBCl87l<FX|;NqGP*^VK`&BaOzm2<;G(=iqp&HxiIC<R95 zR&~JAVlD-ZOD~WCwR1BS$LPhk|MLFrY>R5-RTVF}?aXH*{c48_!u=M^j8zpa(V@M! zrc{?s3p{sGBwW-O4Vz`OX}9y<xH-q?f4jJPJy(6!OgKt_THo{g&!3C9nzWX<thDYF zA{3M&Arutse?CG%<^JFPKONG4&BX0Lc{o6MzqfY+?*!fnyc2jQ@J`@=9fAL+23*~3 z+}z*g!2h}f@V?=90`COg3A__{C*bY<-*Q09#@*iHT@Ab+iFX3;1l|d}6L=@^zmUNH a5K0L8uK)rR)LWe4{~wkAUgUosU;hvJLZ?yy diff --git a/Frameworks/TagLib/taglib/tests/data/mac-399.ape b/Frameworks/TagLib/taglib/tests/data/mac-399.ape deleted file mode 100644 index 3b0661ee130f83142c18229bd5184e8b9f58ffd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85212 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 diff --git a/Frameworks/TagLib/taglib/tests/data/mpeg2.mp3 b/Frameworks/TagLib/taglib/tests/data/mpeg2.mp3 deleted file mode 100644 index 13e8d53df6f32dc924cf5b153eb62b92fc13e65b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcma)DbyQT{*S<pzF~ba9(jC%`ICMx!mox}SOC#OgNJ&YTfFLOiA|fT-C`t%Or!YUp zcYXhVvlgsb3+{8C9e3}2_Spw{5<CF>-^ak-`T6~K0sx&k3j~V80?@I*xDWzDVloOU z8ahU1Rt_#6enAm2$;Z-iipr|$Pqp<7jZMw1Z0sByUEDmpeEkE1!y=;N5|UFhvU1)O z6qlA))x2wLYH922?j0EV{AFzN+wA<(>iUnL+rRe@kIycyZ|~O=SCv+i7kDTp?2aaZ zqVmuf0Eo$%FrsAufE>l+49|fG^@sn*2YCV;0MHSjX&eLqup-&W38^=d24J#(X^|(c z0{~0xsvIb{5J2`7gYiXQT-f}Dl8bI8B6&hoNAn;%*$nCc5rWqSAx24I(kR~t&?#k! z@IhlrM)8XPP4j04gfzK@VRUwCaM@x_0!@emFNhawqC9W}QTJBXbuidG1oIT1lvxHJ z>nrjb;!JQ{o1hKBB`M_75;a8jSNRJ&GKkm8=9@NM7)w^|kg8Ths)-63E>Xw_5|v-* z*+?YvPL;z^i-SB~ff1e@t_1_IkSFE?P?m=CI<wq)G>?TsmaQ*612565ZP~rGbj(W% zVJh}(JHgyp(uOf{(iHC9SM?%!<RKC8URbU7M}DEOSae?4V1tOn*;2Pu_`F6B-H@cS z(^cej9C~1iNE$L1YbQL4JlZHBOa>#Q_K)7<3;%+GJLIZ^Bg@-wzH+6H$L~q4-T(a6 z3uU+)ei_~VaQuh6#@~XuIy?iEM$uSO#m#XRhtWOY4Z5Iy=hq9YVPQE%mAuBFvXFuN zreF=dS8Q@WBiqO7#2VYKQ`X5axx00yd8+a3@$siNg}he(mOT-B0>r1X(edgKaqWK& zv{@0T6kk#o5_!=`^;o@jcW1?;$ZYLqYQY-9{VoB2>PW_Dzn~%MF%sGN>;2ZPNk_p6 zl6KBtzxD29JSa-+%B69Bv|TLe@m-#J!AAcski0w0x^P;RB1#IwCEh4SX%xn+Vrot} z4KIA*kVmhC@Vfo3=Y{1WMOG<lz99EaplPm{MaNB!-GxiVB>V!z{^%GTQ|QIHzeJb^ zzS53{=(qHG*<F)hY4g^I60TF9ne1r%ju=FIYOC&p(F27|r&Y#`xHhlM$_Rc?%&Rb# z5jDZu-;dexA3XDfHT}7n?err<l&Vn*zrp=f!ukv`tqb7Mp>g6*I9Vf4GzV~~?CZj5 zd_NV@*Z6%RCN!A+@RLN;8q42A?5Mh#kvMGU#c#V{GEgI))id$kqx1QmYQOJeL*?S5 z=oqSBj`s^sbwy<~i!Dvp%zE}_>jaM<E-fZXPXX(O-pF>L;CDgTKQfFPVsiNn72am7 zPEFS>u<`)t-{?o_lbB#H0ptnq01RGf`8A(+92c{kA6y}Q?swJ%`-Yxfel4bdEW}Vg zV$gnryh!C61@{h@$kV-EeL6Vaa`lwAC+kQW2gFO<j6r$An~lC<6F-4M!-Z7lG?Dwr z^N|Cu?Zh=AIDhf1nqJKOQRaR^^F@P3TU$10DRYKjD-TbP2l=<Ji|;-AV7(SOj$)|& ztA2*#DM^=_Q(Y^5d#OO=3EcoO#2~*OW=n{#;o;s+CY`O-w>|NGpXqsT>Q}=4CqOQ^ z;r(C&<H@O>v~IS)=7AuJ0VYKAyaMP`NH*|dwtePzw;(fHw$iuQd9|>HQ6c!H@UKDi zo}wk^r<X5OtE16rN`h{!zo2gpV%X|tj0(%W<qsqKVmRc7uQ}w8VgQ4fAC~|=qpssx zBWOu7xg)AiXT0VF+_lN$`0;Aqsw$>}gPs8vFxWffM(J`!9f|=6zb)|onSob{Q^(6+ z-q?9pTbzn!Mh3do&N8GfD$D<VS^mIa>Y?XyyHoMIZe(L+FWpg%3$nTEnsm&vmG;Dx z`stLLwH0`A6@^9s*}y8iXW*kD%iy%do5;o2FrIpePGXyP+w@^YCy{4&fujhH1~DSJ zOA$J-^j>YR(`iLFtz1H1J~?G#+ZBt>!cDcr7!U15$wLlNDlP=fRV!?QEqZo>`v-@M z<iSN3j6>7SsjsV&zKaWjChMAK#&}z4r#S2Klu-<DAgwuhfUkn}a}OYR{DYC<l9!P1 zw5T942d|!;j<}MXZi&*z*N=?Z=nl3^#rkF|BV+d^DW@Rwx%Cvq2mykGT+)wfm<v)X zvnU2cki)*LDnA9Lt<;OUDnAVoEKM2S6hSghjIPU$N|F-o)QQ+?h*p}+SH}0Q>e#I) z253-lW>!^iB%4pSbp*8LeGbDPdWAlhI=8ATA7KO*oK3VeN3t}M(h<iO{Uzk>Z)$j1 ziG!O;nMlo|qL%aKOt2c3Yh~kp>q93L8ZM!7WHP@BR*J`h+B4c3@!x##kEgyH6BFo} z>3K{N-u72Si&2?TPh@?E6;&rj7oXF$vZ;xVZ;gX$sJov%kz$sIrbX@ra&UwoPY?qj zqGN@IE?fo3Yxsx#3xJ_6UXRxrQr|Q0D7;j_KopGQ)&kw{*PmM@G;Vu4Kitd2DG6^7 zWS1N_8Jl8H&abLkAy9brQ{arH{*S12RTazYsp^?xPn}{x`Yrhrn+itWka2R<I{4(h z9Lcz|<f<=4RUd-B2C4?&`@IsI%BW9{Td0t5HJFeCS^q3Ir}Kcz@H2k*StcU*)C*}? zoq2UDj$=g&C62)!a~qJCfA<60WOvIhpg#b6uj*guayJou!exE==8qd$hdgQ>45Adm zLXe?3AWe~I5GKu3By51NU}1~d+&IrPy&k-y^(#G?Hp-M^!H?s9YxJ9yz86USnfBoL zz*evR)o<3sx&@<|l~X}|&+iXYxRJ=4{Um=50GA4vc)Ibdy)7{Kfh^9wSKUWt7We#} z?xZZVrWMY~<XO5sj-J>21pG?~{NOco4BX{N!au5N;l%a)C7a#LeeZv(xVgAL;Faqg zg=^V@MIuWcun7wT26*^TO@6FjBU0N{c3YFG%OZW`lyulYCcYjmj0y}=F;Y?eY~L2) z!0(YPPYc!Dwsv#FGJqYMXE9ibGWMK(7M4ztZm#qTLiTUo>BYeC7w@?t1~3Wve&cix z!O*z@#X#o+%2bLmRsze=i=Z#{{SB*30}`9O#n~z&1FW{JNPqrfzBHGq_&zYnf$Yph zb9=LiX0ogDnC=GjV-Aik*>PnuNFczb36R|Jr(@0ZxAmWK7xnpZf?9`+lv0+^ROzd; zm+A;r`!ib(5~BDQ-_CIJ5(bX~kY%So-H;e|1i^Pmq<wWO#|+w_!*)Q8y#g_ll%$b` z8&j3?X~#vG)4*5jH!}?-Y0fvL^B~DxP00fNNc@F`Ok@uAjqklpc?T%qAvYYRh$xq} zzsUuskg+-oy!KtMVh%8DQQy-S`PD`yFtO|4BV0LrGK@j4tDeow!DNg<1`%tS)95Nd zfa^S&5v&pU$J6Ftj3<U~B+m2u<E9%Vyvl1mbIKlfdm!T5e>Bm@^(FS1r^s|RGa+Ti zOlAkw2?abOcse3%_UeI>d&mj}q=*?`M7N^4zx9Ru%~!fK6gLPoJ98A*H#{AFO<8@- z{IR83|4(@8ogtkjZuxV3_G|JXUrpYp%w47T^-{Jf2IkAP<MQX>DxZp6C0S%5)H)kh zwK_6gqxh8){zVrkP}K@3DWsHOhFe^36tH@8_3t-2K4j(8uod7id$d08b1<Lj$>&Vc zZ5q{?F8g0};XSy2W>n`(tcCz<EBYriVM4`rW9sOsoeZ|;C2;Iw$`H>-Z_dj`l!Pdi z_*=MiRG4kvaS-C}of3+lKVe~;Ur2pTq#*K{=wEb!Z0~jgc%!f@hLs1R8xTra)quXl z!;8o=L|<|SlsDGA+QvlGgPd<CjtqTvh*I#BY6Xc@BjE6R2=s$o^{NYtc10%|n8emm zXhhJg;{iZm6fBs~SG3^3?)fdzV%-l6D~@IsZo*~GO2M|K*izrsP)t<{L|%cNR33H8 z6nxZAJtU2)xI}YR&_!guaT`o0)=5WchXS&GFb&{M;S+1<vnmVD<%X?OtBT7-crgk) z|6s1Q2p|5{UVuDuxB{tA!3)JbPz=CO;BEp?Cp0IdiouQcC<GAJivoC+<ggYts*(XU zG6H}lF>|(2_kcDi^OKtgffKd>^27M8J}Khx${|GIBvG=QDo5Uej`0VI0UT0sH(%wa zQZqPh84w$<vXycsR?P&kyDn*GfYY6BpE+uw;ZD3;T{}II$A-z*q8NanDcFRj=5j_b zotV!~O@I!AF#3<mO%EVmREI;$K3bJtHyq#U+d;u}Et~zaXx$;WwUhRG$yJIHjZnN- z;%`x`F16lk1kNvQRK<l&73$EV=QIB?-G!9B#pdOTkbuHa{Qz2q!cA_Q#)6AnV?vp8 z!0_Hrt`Vu{^v;8=Vd*UXC%;$Uvd)&%Yf+y4YMVcA!CStuFOqCs7bhpe7RXGE>9+-; z(QD3Z@SaGv*Mw%(F@d99(S8z2Ta19=&FR$ZM3cd6*S3vGe^75dl!C#b^N@FbUMGDb zTsfZs6d``CElcIO60OAN=JPO>!6Q%6%Uf2Q`YD{&`LRNUH|t>$(@QdW{;27@=88nZ z5_MsVO8o*#52=X?t&HBvi_9Ml3zn3no)-HK30uv&z=t1v{~|fu9=gy;uKK7D3<Vcj zZFDFB5v9?w-xR*SA(%__I}M(mFLqIJsX6(}!R-oYy?jrFbg0x_yLoF2fMo1PVYvPC zvcJMD1_!4`&cA$^HMVX7+?hu#KyEU#N)~*fs+IE38Bq42fW?r}nEFOCNZsxPmA;uG zrhCy&1_94n`-7|aL!0{Mn)@^VNQP=xQZ^!V@W_fcbY{Rb2$@4Fbh%oHBE%_x>oZHz zPvj?9GRi~l9g1Nx9Wex=QZ|tC6}Pc%{IftSmL!>MW1BrW`aD2s>6dpy(zBI@yN>4j z?DEe?(ICB<!+^AEUUIn^R!Pe_b=}PNXDe}4S-KZl!>6yd)R!K)c&>T0e+bxNrgfj< zr#m|MMc4DJ7W=wD#cmf6odBo{vE6%2s6tVC!zcZ2JM#gddeq>iGG$wOAguVQJct1E zn*eM%?%9~g7T-etV#_O<XZBap%=YG=o6zzsT9`5yQ;t=Gr4>>m(5bP&K81nq+m}&7 zUzB|YLS=^Zg4)*7eSWgSMk6R2vO*%$#87&}gY1}2_xUI!pFW}-+CBoHok--hE2Ia` zt|FgeoI>Zi$5cs0X8orOG7#KY`1H+NY27z}Qz54V+QO$)Y0Yt|;YeoHU2AJ}I+Wgs zA(dG3>pr6?0H#~C*fYyTL%R>h(bS|e`~{l=&mWdV3G<#b{y=uN9z5VC77hE3Vt@g; zyq*C2#1FolaNfHu$cGz;@}HShR5|rgapV%|<!<p%?@Kbpeu6Cooh=0l<1u0hB{aF* zSiebc#$}5vcXDfS0XV{SAs>WLXb>m}9j6PSV2ZEE7XdGUWx{5kYhLEcjc%sp;lH>m z#~FWp9jQ-3ZE^|l`Ck9LG<UTm>uX&B{P^^A8<j4cPGrZdC?GbEC}UApAf-%IX+`rj z2>3X6zsV7xj!|ZTyHT5kH^siDPN8v+{eG1l)1o>)T<ZRLUWcp>+J9{R5CVM?wd<H8 z%(uKRVc|AH`ko{|yoI2At8ml#0lQ(sLiGG?$2X<@dU1{$r<L!t|8hMR5w0vlAVt($ z=XIb0+wRZXhwpb8U!B!GH!Kq&{kh0YNTx#Tf*czxeU7~N0>`)Goy264p%g3^uD@iO zb;;Bmq}a41U?};S;h)KHum#Ly?zbTAs9S+&(lT0HWF+EtzEP3?>;o<2BsB#Opygx8 zW?_pFhKD<ARu~+hX;zLOX2lyi4@N|a_=8152Q)kUs`z(oP#OiGSyH=t{)AX|6`Kji zV*uUzMAu6L;LnPAK{B*J#>bbh$eSi>l#7KRW{b;e%ZOOe|M0C$@c5!m1EA;6IDJ%i zG_qdXW&L&ug@y%Dn(AchAL5k45H(}^bd?^*{Tr75{mddcDG9t9(6%kdJqUHo5{bUR z``r5o`RPMB>!C<x+lekl>w35Rm3QbE=A&dDLr_)^3Jng$5w0Qc$5I_HYFynEs#EBl zF-rNe9Giyaj*A%Xe@5N?HRzY8m*^02r@3Ip%^3%1i`w~#Gr)&vE%Y(Y$V#_we)?jE z-Pz|3g+>8usQTK4P<+U2JbsvKYR%9I#w?V=x6_^nm4u0jyREaoY2D?0U~hGdQ!&VV z$uHa_JTN{!dzeN^Pjnz$`u1+iHFx93t(v<C%6G`f`DxP8{8S%JMboufpp%rqco{yY z8Q<k$rq%pn4<SX+-8KN2<RLp3jmevzOAsB{O4v#;S+T5z2J1O^Taek1qxyg%A6Ey9 zMthJWz|cKvT6_pIqlo;){NXjv`GLHc@V~tooG`np9<aoB?e=c$w**>^q7zmERQriu zG}lq!&Xn2+zX?y<eV-_75U>5DG%4q)>#SEDt?td9ycE}YrkZ4+y?`gcDv2P>y6*+> z4q!u)6Gue-@$HC0VuLVvH?-MsPwmgW==^(R7X?BZ9aRgW*D+<;bT~5pu)fMzO<U9S zGz}e$-P8rO3E|iu=7wnX3u7;dUP5;N%d|ZsJ>>mUECjNU0KWSo;d%*l3<sLXRHj1x z8-f@=y3PvVr3j_z%Z$cBC=UMh0zgnc_hIt;TFh-(LG^}cfbvi|D!Y?TF>?Of{!i@8 zp|&?;Jxs$;26Jo7ojzVR_z2d6g@EL`Zy&pn6VkC<?(}pIaq0^mL?gyf^58%g{N_c? zr@BsAWws%@wc2T;9an@c%TY%3MQ5p6MbycoBU~bRf%qX9A2S9!l48L&gBoE+4(rOM z00kkrZ>9|B4>OmfwYm{X9zrPMd|t|YAoEN)zLulSyZgMtLQP-lCl{ZwPtm51kIK&s zeq*fgq85)dq|IBbcoYKw>blrU+8b#}x(P^~bAd;*E?BA{1j&{|ph-HGnx2h)FE`?B znUt^DL6P$&6((*v6-Ys51ui?oRkdIl+IQY}GVpT_WmgdAfA-la8@NlByCzys%A2%8 z%;as{2H4fPEri=~u<pNR_^Qqso^SZ>`wRU)W8j5n7Qgh$1KC8bakxBz7gu5|>zKL2 zV(RRLSTVUMG#E74>tp_X)=aaWGi21j_{{VkBkIi&o9d3mYW@Q=-KTqS0ym;6&ZT<7 z02{&J5i&RwYuneEqPrRFP^HYL{{&)S=M4Hjj(wj2@3STZR_p@|#e>thMhEqtIEffR znvzNSEvo6FjhHQ}bIq>Bb46}uWafey;?lqZGXLxY4OR&j^c$5f`OHA3<Wte+>XvM` zm`z6X-cAD};XChs1-zUutYF;xc<4m6^^D{$;8;Gf%LREy<nLy{GTci3*^ne+kFdrG z{7)XpM4#(@-$lu`#2tZCHVM~ia5M=C9y}Panz-uY#7*Q?@mYKq^~PVg0Em!4s_1eu zemla$XZRIZO017IvPaagZO<fo%hmSJ+7wXoJ`b=TmNE-~#ll+{kz{OD`{{j`Bu$G- zV4inAqlu9vS8(MIWUPEop>R%k&42cZ3H1P!!_z6B<B5F_iJarG*?KmTWJY@#KH@GM zoE{}O8r@lUa9x$`5$g2|d8|{EZQh?TovsV6N9P;~EnXT^5m_H>|Eyt;LW2`rW%|@u zgtuz(xLBT7pPvyF@M-F{+a9;@b@)WD{h-nFgj(#qFl}_Xnf9We;D7BgrEK`v$|UsW z0a23!jZSC4^EsJTJa_I?6dEC{A;$yFA~LVGB{TBX*QknYA-+Iw1yI(d0{3{6%Ikt$ zA?!%=m!^**2#|j^l$d0mvP3{y4{m4c9%dLW1HR8-Fn9aB_>%INf4YWM4yB*-4w$YN zt9@zvWoE2kSyo1G|Dkd&Jvgt*b&t+dWs(OuT@prN_z7E48kf>Sn6tm)1vvmG(#0sm zvee=Z*<lN0u@o~wp+Vswj$mTnWJ6-A-Mf9t*7yK^|0Qeo<Pk$D^8yF|e706oB{>x` zd~ifugX?2e7Hp*U)f1UdQ_GYs$l8?~Iy+EFO^;1tZrMi^8Xf^`H<(+Q92opIvM}8! z)P=}e_>(hKMfG&(h{HjiiTa_1gOW4C98<eIy`G&k92##>mY3G;Zn~%oq}{ji4I2`* zk}Z?SIqr9d<^u#Q*QSmHNj<<=CCk@h!dm{yx^H^r@ANqZrwyKs4X*su6XSHD&+>DK zHD--s7S!68=5Lexz^G<Lfhl<=6#pQ1oSF2b=Gt&C=q#<9E3jZh@0c$zH1+S<<2(PH zTC>c@F?!__0m5+;Z@=)VEjXV=`Hp(N+xp|>dwG)AU$BPX3ZUD9q*Kxmed!&T5b2aY z5(y-73SIQSZn))YLw8a%P;a0>Efg6Z65K=bmBHTZ>^m43T#KT<WgV_^4#W0omD8yr zPaKj|KNBcy5qS_g#acLHv=^p{klECc*eJq!R@;;+`CQ80ysu~%YX~zLW6}tV*|Rpa zTHQH}lI4J$929I&FHEi9zk*jm>_$~fY|lRVc6#)UYK}dfT?6KzGda@>>@jW(I}qq) zqzsYW{(}PKALL(z3a-|=7sfRo&1fmQ`D50MQwNlN;KUTR(`w`7Afbl$;|1}n)c#ks zP_CO#=n|YpV1RD$;8&2qBb{s~?NGLJg#3&)@$9B0++<~arjPOuW<*uP>S4|9F~xOx z^L-VdIRK(Q=IBlD$Fm0B%OtZ?EgHQz%JQ&?n=G5^(SEO?#A+vR{QI}I11-b`xuP<g zn~>SD_)Tk=3Mr-f5J3-U#J4sajMzY@JKE3RnX>Tg1{#g4&GwvJ@D!@v;tN{sjluK; z*hHZ}TG}S}wh!Va**Kz0D<)DF$%uA++<NYF7GeO6C{${vD;8^d1E<smU{~@rxTsJI zRwcP%6C+^h=AtDnn9z3lo?Wr^+Tx1|jGC?2=Cb_V?>FPDL3eL*-W5bp8yAkJdj3lD zzLN|55_Dqn5(6N3F%v9UQF%TM(u#D~=nXDK>5YIuixbUMQ$Bi}H~JOB(k4T}NcTvb z%O>O8NrWZYspxogptQzmS5zOdNOHIpa$?ldPb^$Wo@ATyhw{*0Y`&$}E|I{a3&upe z|FRiK0<-gJdgR<GVNXNn5tI5UDaiLOtgC`3<`#?>5c_(Tz|FLaYIb~T_p{fF1{4Dj z)UAcVlugm0$2!IM!!!^j;YKJPUzjYC{E6{0y6Ug8S=L&zl0k<p*5@ppMxr2rgkLMa zU_tSHQFX|SUc;v_w?3>4F`+^XdK4NMYWeUsA08g|3O;s2-%FbjhL7a)%b*6CZSKsj zgkzI!pWjWNONePpQ!vZMM+zm^A>RhwhIPC%BtggZM*A$>uSxw?>j(|I@t<~}d}Gr( z4wx9J<6W-mYsX5TlXO7zcng0AT*h|jlSM7{D<W?T4jH?PkW(6X-gh3bBF7%|l+QNl zfJ2whp7h^Ge=%t<C&mT-+XF&<zd=oLVp*L3B&)S^EB>u`;8NHT=rSUWT-%0$<X>*X z#a{1v0pe;LECNppKqv+nP-&WFNunVxlS|pdSFL77cWBm`UkP?`A76fda`iNEAa<<F zu*T}4v9B6>vdCWV^YwRJ{&#&<Zyw>+$30ByJsjjh6XZ2>5B-Kh!-oJ}6+l0hQX#>Q z-yc{ZtF<|iBt9OiUh_I*6;{NAuW|t{rlHus292jd=88z<uEwkcfEZ>JuLNnGX)MNf zH!i>TF#IGm_U{~n0vgkp4l;xRSI=`jbi|n1N)hyf#3Z9$UAhltGCgw6?_NvS#7wOr z`(}Xl!e~}hbirh~UTvd|@d3DBUNznYi>YVS%$SVFIruBhmP)Z#>eRm^Y%0r3Li5i- z#yUt0yhq>L`r*Co!}WcZd|;S_;dRo-7k-+O(YLq9rZZ?mZFFDd8nb4ly2M<#tQ*pl z-@d`q6G@``O%+wiOg3b}{PE2Hn-OxWxni~Gz?zGvzXlz|YoN(Va6$TGuT79%+`Ssg zV|ITsh(xvqp?=>=P3?TRkwcin2eVuzU*JsXeEe5I5)!bX9X#uWft1f*e=K*9F4G{t z|L-3qH%2bMkcZb=oB-xs%C}%!$=Co}-z*6~?1H?RHsgbK2e1`xm~CkiMLhXI_$JL{ zHv7LlAlb3$tQMtOGzEj6<=LD&Ip1H&=qc-WwQH7Mcvz4=skJ4#bb28YR<#dF%ZZuT zs{~yxWPQmtPi&X#QleY&(e-Ji?Za22{nGe-PbxPZ&XtSWm+C$Y#MIMIN;wKs(&6=% zp{xxjcDF(^@r~4~fvS*Gr{I5l)29AV`;O{lj3_Nl+`6NG3CYue_z+V4yszQbqCirV z4+!%;KB^RXa^RYHL9g=c&I_)~B5)INp8*jA0K82AY8n$BsD<OWs1vIRs^}H9oInp< zSe~-p6?o>|eN6^|j%HmZA*XTP70QuY&3BehC5(;?N|LF$ZA)@588PfRL?}=?`*X73 ze}uAxNaSk5gJtV#e-s@ftCWDR@7StPF@zXuKC;t<H$`X7rLz3^Oo)8^c5~zPl?8b( z9UX+3TrKnmjfh4nG-G$v)E{{ld;eykV#w1^P*Y7sb>8KDX6kxC?#y<0glBO5RZ8c2 zF(pC9CPUGn*)iEvwBlc$@1z0bW>?(U<dSC?1>6d-m+aGPzZ}*9oF0tu`hV62Lk$~$ znHmn%)7ko+DNII<s*)syq+f&ApCWl~fXRa602PWL<hSdz=^{fMW@pWW=umadXc^@1 zf#z@k^iZRR@*^1{St3CBU$ssExx8By)EQA-M>ALWb4K#uj3D80I)c6Cj_!fTK=0T2 zKR=Vq4>?1znmY_$9cWiDP6c=N?ry9B20`7Tqf4L~^QuQ@sW`V*_g(7ylP;(j&HRWd zWiWOFo8q*y;oltlE5T&>AbuX?`<VDmS@GWIHooR=t#*&=0USGXY?OAepoX{`={f_+ zl*QjH*Z*)-5cdKIYMbsca*;{~G<L%7Uld4fk&W=UpK3u$Nt%_=F8r_utbE|=^@<af z8HG^%w0-MBAg5Hq5rqbUhH6s=+Nbxe_c7L<3@Ch(E`yRF^LTk~aZWuaZ2i4n_Q~Gb z-xcgy1-!U>ft0vg+Z+m_??jLNa(@7GRsPg^f+syF8$JF!?>}qDn%?HykIdCmn%%@B z69YsjPHH5Hkg~}5psok6MpU~m?tUOg*S@DVIQ|6qbx{les5t+$j^w~IIxRGSkx}3A zA>C<nvsDi8ib|<6eaMl0vuhDMvfXS}AIW;@hFrRRJnV83^!9e5dyD5VMA`6`dK-?D z@*xZO=R05+&iA8E3Ay~m)Nv4~t{p=YzGGK1XgwMJ_y(u?mRON(q<U6~Wli%3162@` zp=G0A;->iYO8?L{u-v9^83xjw=}Aj^QIr0k@4$@|X-uCgYSW#4V8mIIrwV?(tt1rm z^zvCk!HX<ntF7k~h?X-VToRX*pyJ$<c=o_p7X_WWF_&VZ)Yq#9&!W@agub4{Hu3&L zLnjDMJP;R{3g)z8qf--||4aR{<+7ZnKK<j`@?@I+ncXk+blh1ewkzWqj?4>!NaOMn zjMJjyP>_pstO73oCpT%CT~M?EvFOWxegF|o+|~kT0fOVs)P&eQ&aen37((u0W|Da` zTgr6*@F65W904s|J90r@q{w`5G4GW{Og{ehMRN}{9GhozYvAIimzom?Hb<cmLZcHW z09$e;o2x!oEV?=a=I{s@@v~mZl<FEX?Fog)d*NMwICaqQQ@Vfm6_s|Ja=`FX+UU?E zaF{+mnSJA$YT=6!ng5mC>%Oat@@w<N^*dg<L=GGAsR`hW5=*%-l+!z^ERM*^l-=>D zB+^9rdRlCZezpqu?ymGtJD5;7M~|ubK!x~mGE_{IfAQ>3O>L^fx`PQnh9`}HiIbN@ z^@r;V<VO-q6NyxASq!Iu?bfI2GXDCfehyxYXhjU7;X5_rirLZs`So^a4bVTuR(~gs z*lrw_vs8U`B>z<9gg7`F&Ey%g=6Vu~sCh%rrA@SG=J%}2!NP|wLorBQ=(k~DkOsYS zuvdUr(ef*AaSKWwLdYamE1RF3=+K0R@(+E{{j{2B-(1@Omx3>%2+O`auz~OUW{+kI z_@Awn0OlDOiUA06sWNQJuLVq|Is)8?-gP@`L&6vJu?vPeHDF1qmo2Z+Bnz(}!O5Q> z24GcJ4ET?k-V>JS+VoWv30b6l(2?u70;uL@Wib>{Xt?kl=Vd)SEYgHtgR2kmm|y}? z>XS(Ih><`$1?kbx8}{npsT`uaxE@y{><64_DfBvQ!NK0s-~T)$_9%7vHm36v&D@pl zV|Z&0sv<_GO0~SAG1pd5S4I%8{y_c~yTLSWq}=R1f;|!7)g_H^BAn<=_Ipq#sO06$ zWbtYPddOGbkS*PV&hp~M-z$U?+ODrWnpeqNn5Om}KZ4QO^QH54F(z9P6Lpo?_@Dc1 z+BV+*w>{FJMnqGAmMo+PMjlDBfOe<o(gX6p*Qogb4sDeSJYPD$i;IXqY(wvdeRk=W zk;E~38?NS5YyoBT&=SEgy-|uS<&|6LAz8{(g5=Bx8O50bAGoY$(%UJWoi+4w{XX8z zR=itll5yP|5hdWJ!7p&qc$7my$5%}`wOd<1;#*hretFR?e%(GT(|ulJF@r;(fxl@) zl12;dtFXO<D@cr^o=|V1G`pcamSR~Yb<Yv)J}M&yC`gYT{@y8#b}ohT%Jwpw--b|_ zU%WTlL1TJSB;#FL@D6SZH(NaP^X?{;-VVWJ$PZ<BD$cb6&|dC2I!8L~9RD#0Y|d_~ zrjCo`Ktorwbp@TmU~iq2I#cPXDJP=-=C}<qqHIbIv*!e5k}Le=c?qT8(Ac_*cw`kp zPkEMg5mb|!HLPtuM*7^{Gje^gGO_z)c3xlk=cClwiW7_`jW0NX9wAL><4!!<nN^d_ z+$c0MnAq4hK&j%x=A6-$hQ^=#Qw<qMlKGPe3{Lx|^QN)x45W~e?;+JR_Vz{SZws=8 zgxNwMR1?djFuy=YQ^Ei7B)snt5-iCxit>0es0GbYJfVW)d{#Pd<9=1*^T$Yeyo{IR z6qnO(y058<&lr@%PiO0^vr>#)(Xj8QCQ#L_($JZQEG!zE%AkVBrP7<6NJ6B`uUk?5 z&(0(M((}~bMSrQaX*4EU_&#+~q0qP#S8xmrFNoo@!s}?&nSzg7GJW+$Uz$r6P-uAg zha;!JlcC_?$MnH(K$;<V$I&rwqC#P$f&yUrD+~)Dbh_M8<GXvo(1Y9OcZGmO*rmF( zw?y0tyLNqR!rs*oNmY}WUpNT!zlg+608|m-at(c}2)_HGXedYur~b+>G@k$Qrd+nW zQam&)HM&*bI722F{FWl{6vY4w(tB{Lr8F>_%$0;^=;FrfJfr=TU+7MIE36b#QTgD@ zDN;|zXwqoO|M9)YtA6Gr*V6IT*-Ezuvk3dB#L7wDjq<WQS|PFcmuX>8(XLHgoMimj zS_3yB0gmEdd2U1b7B5I6Ni<oWDYvxzuJH-}5<whC&ZeWnZf37CIbL?g6v4#ae1g&T zo44ha>Q)lfMyO+Y#Xor<Az0fW4FsT2k`eQew9g^z!Q<0A^AG_8-tlP-JLx((+<?c( z13<IL2ZxYi<;%Z0E=r?^>m*4Azy_lO_9@FISD-9(nX@1Q4Se{w295mSJ%{Q16C)@6 z@Lq1WX^B+LFpTGki&m3T;r;D_KQ03A%2z)dp1iNys2Kck6Cj?5JS_coe!%9TU9nmn z!5ws0J}tSv9DQ6cck6IJl2L(sT&p%U!(*Zx|9H=qgOLjL))TW_=dY7w`2Z@^vHGdR z*^1db-+BXH_Z<3oPN9oG`)r{7h#{Ac+^V4BNpY`!VgWN(VOpbtnWfLWGLr-^6~stV zm6<KICqFJ>Sw@0f?Q=c(6`}kf-f{}vv8?$sIGh0HjjfZJ{O!^z0Io0O#3hf$hxqXB z)tOS8nbWjhe~x#`UX9apo7$s$dm)h*1(Qi5nkis=OO&;-p$28ApwGO3;7d*GWZVol zV4Jvu>@Py#X`(Avg1jpuNOTYKRmb=cK51dTUodCEM`zzmWIkA9<f&2wu!z|N6GV$4 zBCu`#o%TUt#ppQs<nj?uXHzRT^laypbPWcuAM;q?UYMGyuWvjMRe<LpTa{m@=_;}w zpW^P#mG))7{`IvkTI{%+BiJPwbXYYt7-6Nqh2n-!(7Sv2fmi-%Iw+`hi0tN%|JTd4 z5vA<oI=*n$ZUv_AL|%ko`?8?6CtGQmI!^pDn|(E&1aln{7x63O=gH%GwQdz-vdR30 zQ7GSmLZk_o0ZWYZQf4URv+Oxdv-_c5zxzaAuR+zpERvHU0$;iSc_)uIx-+@E<nMxF z06^MsrvW8JM1`etFp|H+R*{M%7M94!^~6}K)$}L*uF>`_OMM}JCC-Si!dFM#pZNQa zKQBzPalMU{;6@g+zuYVh3EKV20{)Fc!-ZUy?E!fB#0wk4<YDNMol|wICl`D5BV5_L z@^7a(MldN~-N63>_CcCfVsY(HXQ+E|L+}v~KBuVW?fQO^%C<B6;X8-S_;BAXx}Vm< zKc=|^&;}&;`7Y1AH8MYX$h0g_-BoBIH~+2$$;)~QoCP7aDdVKXrIfUMi33m!u%P61 zhXAetS5g9axsji)owd0?Ht=lpm%A|`hFPbY!LgCgaYR158rep%js6KmN6v6ea2CaH z+4Q2B5Hdax)-s37qlwb5LH~RQ3Kge0EEJdXaQnK3X8e5X5lb~Z_ubsi*{RDd4l-T) zJ;yuw;+aP(b+JDrHa%@MWm5E~93Fm0P*N)Dh+Zq;5%E1UhGjpuz`TD;=mtokY?+6+ zxP<tDOQKoPlB)fx0qLEVf#bc}N;3K?2~o0T7<FytI`qNkOlpD404Yiy3~03NDJf1Q zTwYh#$eaN?>zUK(TNYJgPaJPTz9;=iWOoMADtODkV(D(BXY997*XPqepO>DDn0W5y zp4ok^YRv8UiO`e~lhpsuKETN4y?uCJFm3+qZ)#*4_x#efKN&l(TM{eMn$i4LFD<W7 zkeLkhDlB_ViZ_M_nO=L9JZM)m!5{HyvveTmkbY}WV6}HX93>AKgraQuzUS>Kx-M*l zf%{9Ow%Vorg>R6GJ<>l*AVZ%4S?<!9+U)iCy2XOnPCX3800%0%I*+Hs3*gB{cErJ~ zVh05DZ?Yv?zdP?dZ#*&7u!%0c$%_)SmTZyKS`;F5-e+A~j>oYZAqHV6Q3W()#euU* zqZ@S-<?d@S^8xsMhqecjJq)~!lUfF5dwR0d#oYAHp6h3(WtLs3*!%l6Z$YV^d%qcO z8a0wt8q?mDnJ(eVvGn_6<4(zOZc+ZyyK+y>x%A2Go>fG<pYh(x50{NCsLrOrCvKg; zZAi{vetl(BIkB?7PuQE49~ZdHb&UE)cH~$6NHklyILoI_c;Eb+uqa(1y7;0fVti%o z49SDg>>)$-P%u~tO((GLV<L{SWWhI;&tTVrL2W&f;#xX^1Sa_O2D9idJt^=PhFTGi z_lhj#wsDLLj>Umt?dfGMOM{m2x50si9VHomzSrd!xx8&A+2uRl!rA#uA#Nog7hu$y zG%lR+tzj~b)6I~7e`GF>R=se@Fys-X5aopGx0-Bu3HT=oEk4u2z&iEjv5~9e5Ajpu zc5PZc&P@#l)=fxQ(A#U05H_V!KriTP;bM-w6*-F?%04hyG1lqY=lgEGJiZI(m&}(D z<PJv5`&^f8`FFlI>1LG-Rm$@(Zz#sns7Jf*V{HT31G5xtmQ)>1L(Bv;$`^N<nA7>x zZ951-6dDv}j>Hw_9WYZCVOWKAFTT_AgFChBo(ca}GaoYVXwn{5{&myMdgS$^yzAq~ zlj8wjXp^n;i`z@qIquRz%t(Og8%$!5P_XYU3Jn6S$T`x%RRwDt<0H6^^!);#i|JSP zFTun$`f(f`71BFj_Cp3}X28s=Uu1VxWVb0_<=_(;RpGeOf@S82bmi7#DB<BBAX@$Z zq6<_hXB!t+m3)ra*h{Hl`iCsTnJGsUy->3%+m_1PKa{_sCzbdq8FFQf#GNC*&Y&0o z5X1XusT^sd!9<GVPOlS3Y5%@eZs3J%rl;i2(p|fV^=tL!95yYSb`1IM@iPa$BxD68 zG|G3GQd_FPX}4{f_L0(9IrFcsLKGSvq!Miakd6RzJ?-81lA&FD=uXd%l|tnDHmOuK z1^CXw{@VlB{K8?HSn;4yZd>K($z!BbNN!8<uq(c22z9}JQ#w`Jny3GY07@Pb{N%-H zz#ofOh8uP}-m?IUn}Vd0_j-dF5J(s`QS@V^R}%6@*WX#1KcX*1>jcFB2f87%4akmi zt<*af#Zd~vJe^lb&8~j+voaUsCoKHoDLW67B47)bBezq=UcE0>bE8%Ekay|G$qx}2 zh0r<86#Q3D>PzAT2T%;45VpHLVp&`+F};hA)IZtgb}tCsq6^t5pm*d>nm$JZq=H+8 zM;1dPZ;^ZMLA(FX0RhP8hnoP=1ecK@o;+s8)W;fuyf~G`-*l3m3O|S2D@S3{^rV{; z+o7x~pBk!ZWs09Np4qe!=!HhpddDD<r!$VzNrNi-{@20(<bhmqYy)@`yrK{r>Z=Ya zem92ibdh;<g@T~<)}6J3V&*bs(?|5R4(8J8RbG^ydJ|00Amlaa1SY%ik6<*;0b-)Z zJ<qO5-fW`eA%yHaN9B5zVzbBTm|l;(Djb{fuHH!mhW7J&UeLij*9IIMRPP!;HOfyH zNki^uoKZb4dWYM5guD_$%3in!XHHB{g>BtXbtS#QI<B)8Qc<9gdpE0xbxo)sgd8Yo zKlIy%S&RJkNJ{Itz~dz*6D-|axcaaej8*opR>pzJSmER&qVyiUYM4!XKg~wN9<*dU zitk$z02_Qz!6KBYfZUb{EM=GXOaH~L`*`z~vZ}<v>&u@jj1JeB>Uvg;3jEA1bLC&M z|5^L6YMq#BNV7$ug<<<4dV-UvOIrH3=|`p_#f>r9gZNl>@?KGXp`e&U2|X!k;CVC% zLUQ*U>7Hqz8=VY#cZUEh+SnZ5xBlDLL!r^tSi&&Xx<a^hPCc*~2&%zAXK);TXuU7p zgOkF>ftk8dI?-lsO#<;3<Iqf+#tEg<=lC>8PTx3~`JA<e+o3<ag>14*;@@O8F%(2N z5BSLq6FL&`%iwbfyXb$6%5`MW4sB&AllitozlBaJStv#DQS<NG?;boPN*;6qF@_@@ zgd(^nr^(sG^=`(4l<Tme+I>!w%V5Xtl7a00nuVPw0XiXXS!e`~Tp!)GcqurfkTaij zwaGPCrT{5ZfX}H1|9q{6Lc@k!;ZEb4%QFp<O>fm>qxoP$KA}w>Ev~vd*{%$#F5)}w zqX8VJnJhb%plC`e|MQ!<TTVy`hL7MIf007iyHE9w7cVy}O5UiT&|pvs=sftzs9kMB z+WT&ogmbgam`~rd1^L7ygk?vi93_4i=Ey(Ll+i?>!y{SlQr(3XjCacR3$ar1Wd}6T zlX60h%5I|G6Ge2O(8x*9Xd(I1QLI-<aS3k4Mo$fseHHMXjFa7yvvN25WuZI~YJ_QR z+hzm;tQPf^pp*hm`)CY1;h#n1GKiy*W>KC`E5<C0ovI}$G)w|RhD`<~)!{h&sHPi5 zRe7Ql-EeLDlS>6g%Prm+Mq=gsnw>cjv00Mj*Ab$wSonntla@A2Ng<ezZ;Yi&lfLho zySY8e;l)Bnp@AWyBbyuug&L2}{^fKrn%c*8<2w&{BYPg=5^*^u*B8=JV9F3#zQd|6 zY*>nacUL>yK7GCrRtkPXNX`s-Q(6<C^RQ7hiZ9^4`-Pe$`|P|7m@CxuoM|U(#?msV zJ)`{6PA8*eSN6H&#A+fDtJs3KwH(PjbAHAV+V*dUj1EnH4(|dhpxKCU1GIFDO75Nn z)gS453WrrO7{S!m4bNxk-G9uLr~`l8F-vkXDkd=kis2O6MX&p&apMSn?C#3>p_w3F zsoc*>{i{&Kmv#760cjf+Po^JCO067a*_6dk-$!87PxvM<5u3A=2sU=GH!)GYu;*5k zi4FEHx>YuBq$OzMSZ9}|>J45^A1HO~n!!iO1BbNgO&n7V0fW2>b06)T2t=J;*7v5c zR5R2Wko3{pWa;6?8tdNEEn)nvWkq^_3kwxPD$z!Vd*UVUBK_ltNS#80<u&(}?Z)u8 zs;))ec6r~A-5%`_gwxQhgpm6UJ}eXf!@)V4?m#!PJ#m)CGCnEQ6I=+SJ_8^qG;An5 zbN$dj!GL8oLM?d6N2O$FN&|_EV3B#p?t7T(u_0D0(b3U{{COcK#|_IfY(Ou(eAOzY zy>p|BGw6Wez=NWHeQp|_0y{>b5y0%Lwuc3<*wmTRV@Em<&Hk!)w1?cEA%vG1G0{m1 zP*&knGGd7vCgaV%<SQx_rO5I$Pp>$;@i6>bg`p&axo#p(Ujlo!y5oaFgF=E2&WH_C z>mwEK%A0Yuben=&b7pueL_Zx?u?_aj%P>6ZcXNH}Teoj^<f?|3y@SyS>cs4Q8&2H5 zcSX9+%-5UR`7@?Ai0oc(_Y=m@N!-Izq6zc(28=kILZb_i8~DA0z)nu9a<icND7V%= zoMxu{)Z6Z^%E26~;$IZQfX-i^bs1{Lb2<TPQi~hwTaCDgZ+^itktRLm6LzAzmxw&Q zwxRSdC$?*+n>FgYW8G7@KaGt95^t(k_C_j&f`Oo(kNbaQ6j1WuK<Tl5>i9+)m}w!U zL;4houDp@YhsPI<nCC&b7FyLQCNnN00ZbuFqQyPA)hfnMycWUt$vfK<^Ahq^$tN%( z6z4(Sb#{3C910CiWZ$?<?5C2KxZl#H)nwQ-#hM(}%g-{yZ=ewL%FX)a*Q1Djj{IQ` z%$)PD+T62iwPej~FLT*aqd^2T$9LGl*l)zG8v%*rdr9x_R=_PCj=D4z<C%E?!<P!? z`AsmuM0}RFGIok7?Xe7KXC>Kw*R5OLc~G%r{Ow~v>Iw2|h+9)1;y#*0BTYvbnD{9a z0IV;maeg!Gk&|Y)va$J8;`9&5k6jb`8kW9Cx(SQ_v%-Ciw0wVOD4CoMBlb~e3i4UO zgZ5NrG$I79r2tJ+09Qi;Ro{$5O)`P&XN4M@Zj_|=H@8Sf@1OBtWee4@HF}lT{bXK* zGB>l0_f&h9qeJAA$99k0lpPP^UAAOv90>+Dbfc8bFUXG_Ggu79^>VNy)w$)fIE<6M z2qh^o$ua2!3e5u<VVa>m$rY=3wLe{IghAt=ez`!5xoFz37Zy>PjD=3;Hge&WYq|rD z>KMDhKw}nRfs)nu*$}a)zBxeyorU0Rm$~FGj{w3G$*abbQ)^FIl6D$ytr(LEQ0tIU zSvt%EzFD1f0Y}EFN8@k%4%=L|RAb*MkPpJha}pg|8C&&*-POS<lA>&a=I@*Z;yom) zE_#DuM(Pn6av}SM+z}aCo$3)yRWs!sPdNG;Ht1*Du{mwOM^V-M5mTxB@?jCB9So@0 z7QZREBELeKD=4-;drcv*htQ2NCZ?mhn}5&1te&5}6gl-8xwR!KW7dzW(s($#*}?YA zilrMjBc2(Qr4zq58H}f@g2jYF!-pnI-Ra@s19s)uezM7$XQGG*;@<PL$He4-^IQU^ z!rMe9rP>byDl|R04``0qaHwL*<cwu>NwjW7(Nj|5boQa>VFpSG%0nnLLTK=ZWk6sG z|GONRuQ>x*-PRA|`RK-8Xy02(PECNh?#=YB?Tf-mOD%=&WJ{x1oYD+e!`eAuTIiE@ zVZ@zOB(a=L2Ogj$2><U57EQzK!WqS&S<&dyL09K`phUm+xwg*+;+D`uj7E1n5!G@H ztA9(}3Y4g|ASh4_?&DkI6%DyO{~i;L3SD6}N2OO)TBQK(Z>}XmRl--QCQ{Ndr_x+_ zICXqvzdm}n_U2J!cwd!9)?zx8y?y%Q<-+?)dWlU?MZ*1T#C?2&(s%XXXlR0*MQHG| zU&Z-Zgj%v?DM;F?zV{IL`z5I4B7fK+_uTm1xJ~)ZEr(@hio^Zf5K%--FHz?tz)oo# zSxzWuV!nULf!d#vu`;Yq(q<(CeF#hQOo8YW*_0X4QuO4Up=eWjZ(JS9!n72RQbwy% zt%U*7UslO<(lS^EoXj@-;MUgg_;C1eW5RezN?bNS{!VB#X%jOcKpE``91^@vDsePd zujp;peI0|@qF^T3-pq}uRk?s!mXpSPKM_AE!jmz4-0NXH?Z05hwX495{5y`k8X1tF z_{jF4vHrdrj*3+wrmZ;hFhH)5{bkR1<<3^g)9o`z?(%yL#*wK=G&JJfr#z$Ha;KF~ z4XQ_U#0+bZ#UNZX;xj6$t?Hd*XUhBsQAM40vvC$E%fTQ$T}|MA48iY*tzFnDwVp$- zAI1;;jiui5kw+(l@kem~iWjWaV%Qn?`oOF1wvA!{5WvftfZp&|@h;Y7L`2<AccpDr zG8ecf-MgKu-oAEizPw$o2GYEPyMj|YvdvZ*IxPxi2gsHi9(g()D~49_yaMEPm2@Ha zUndI#nw{UoWf7|cR48b=KdN?pk7=X&nX>b`7?L{RkpLqD<@wSQzK^m?jFKN+$Q%0N zJnnz@)ytS#hb43kSxO>BWs#`Wwp$kZZ{7tLN<LPB>yHKA|8{oWik6bn6#3U9KH!}! zu8s!1W%9!ZhJ{Py@@m>x>HY^QlHsB+8e(K=k>5wED#^nWj+WDC`^*hF)%j&~22k1| zgpl`D0Qb|iFd9kXC)h6{%gKx>#{(8!+GGZsGGC#G%+ZQ-@x?x)MV9K)sSEzgB^XeU zaJ|_5EL*<?f7Q0NV{#~K{l;+OX#bOjjh3PME1Sd(K{V}IZJx^%`Xbu<cw{pvIJ3fS zu7rWut>}f&k+Z0(3|d|J2NR$?5yG;Yf7_kp!!Ux$#E~kj+&l4-Q7?<v#H6xhbM)YF zLv=YXj%xe7+-r#@MXC--ezrU}Ew<peWUD&$u!Zxs>PQJ&j7K2y>0`cxSG$6CA^}3H z+WG@Zo11fF{HxV6&|fESlDcx3d7cRD*8ixUIhr{0&o2s%ruq>c1tdoiq&Q&x4@KF$ AumAu6 diff --git a/Frameworks/TagLib/taglib/tests/data/multiple-vc.flac b/Frameworks/TagLib/taglib/tests/data/multiple-vc.flac deleted file mode 100644 index 93d9a8a14a2eb60b75cbb1be5c7975a095407b18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4754 zcmeI$%PWLY9LDi8jLQr&USo`5#&u@nGP#vYk!EC~rrc(MTpAkESO~c-l#s&SWrvl8 zVkZfOg(N#EJ3D28gq86=9=861bL#Z=>381Eclqo01!{#5IVNFJKSm)G{ki8^L`<J< z?z=zwALlpD?v<h~ebt0k2%GvuXw;jaUU!SXq19jQ9vK@P9m^{Ie_S#vlmh%Mk1QYy z$O5u}EFcTW0<wTCAPdL>vVbfg3&;Y01;U^0RuQ6<B}g+wEry|pAaxvsB73P^1=3DX z*UeDWFxBCNqNk|7V<={Zdb@&RTdDj?Nav@He2~72TDXPcIw;dN6yHd_KR||hDzFL} z-Bg<aO7K!QlaTVWPZ46^2}-nc_Ph?6lBvr`C<)6M^>mLz<{0X*9Qu7ITpq}x<IH>q zrKk%XoVi`d>YzG%pj0Pyl?SD{sMkHnmPZ9IAbSlpI}fE-P?i@cqnIiTL78RLK?any dOnrHw>=kOT6v|nkns&mUQ&xxeWQ}gC`vy%NpK<^I diff --git a/Frameworks/TagLib/taglib/tests/data/no-extension b/Frameworks/TagLib/taglib/tests/data/no-extension deleted file mode 100644 index 65f57c2ee985713476ac0b6e3483e6fe472e2176..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 LcmZQz7})>-0RR92 diff --git a/Frameworks/TagLib/taglib/tests/data/no-tags.3g2 b/Frameworks/TagLib/taglib/tests/data/no-tags.3g2 deleted file mode 100644 index d31a6ce96d7cb701216e29bf17e15903e3fca5c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68335 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%0DOmT!Moqh7w1Y^2~HTN>C$n{#(z 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 AGXMYp diff --git a/Frameworks/TagLib/taglib/tests/data/no-tags.flac b/Frameworks/TagLib/taglib/tests/data/no-tags.flac deleted file mode 100644 index 41714416760792085717cb85fa1542e5a7e28981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4692 zcmeI$&nv@m9LMpGZGLQwubCN}`LSJ$g_Iwqw8?T<Ar7<rXtYTjoG=HqY$@FRxZ&iW zxJep?gO=Q++}xDINbF?x>Lq{0=Y9F~=<_~3kMFQA*eisnHwZ)aDHcM}-FQ+$wQ{w8 z>i!PD#`dnCm6iit_fk|SP1zMWvVbfg3&;YpfGi*j$O5u}EFcTW0<wTCAPf8#$fQTj zVvbZcpqzPXJp-viR3Zear>F)6(kxN;Ls0Gl6>va#5o$UC<*!noNvL3$YV3lvBh-Zt z(v4H`N2oAB84jVM0qW}o()UxrZK&8y`SnnVmwH%+6bm);29;W=)GlNwr|#5H8O|%& znOKC3`P6v_^tUKn9>}ESpYaK*$ev^{YsZk;PK`}Ml@2QDgsNQB#|dO{QlVSO+CxQS vP<1C|dWUSSRP!8E(@ve)pxRC9#|zbMQL}AOeViIR%A_M^yXJC-_V@h)*-@2S diff --git a/Frameworks/TagLib/taglib/tests/data/no-tags.m4a b/Frameworks/TagLib/taglib/tests/data/no-tags.m4a deleted file mode 100644 index ba4e92baef225c0204347186c4aaf42e0259112f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 zcmeHJJ#W)s5Psq~5L6^AKGYUEIFx|_Arblmn$m(QRYIyNu^?4WUWZ!sTL-^yD#1`? z?^3DV=~{_Dz<|icFJORynIF(SJZHO2S|L^#{3zDlJ+FOtKHZ%IV5V!|^>lBc2|{FK z5)IToX%*O?E)YlUZV+_*Cy$#8z!DC9w}}@GtR6VCm>-l%S%k6^$|)$P;D49`?(n)S zZZ7b;PLf^PvEJQMvfPKKE8mBwYhO^=JV0&w7Alb67#9rEm+Zyyoqy6Ck~2}Fj2wD{ z!Qd)hjz%{|Bfzyb4Yo<Yw%b`Ql{}Y~ALQ~VlFtM(@>2Z2=i_=>MFCy-T1~#M#Q3-j zXKz@zZ)~YJJqu-${?3_R$m&-e?R05)M(2)-g9j?-=TsWXxj<69-cMsc*Q@)+wqxpV zj5S%&a~`kwWtHRv<JWTF3BmLPPeYRzugc=xC*e}wUc3X`WsqOMRJ%sTx#?Y@s7Sqi zV{KM%>SBN3LlhFi8S*+}8t;WDa7;;OxK>_e4gOINJY-LH7+WAcE93B}kkY(!h0fmY zB-91M`@HotP+g_@P3+Fa-lw0e_c;R@>V0JcYHzz~7*5VS_e2`>dNQWxSc_uArHRIg nO(f_ncc?r}r@-@8>sj&l7xO2r^$l|OCU4jXjrCipjg0*b4AhjE diff --git a/Frameworks/TagLib/taglib/tests/data/no_length.wv b/Frameworks/TagLib/taglib/tests/data/no_length.wv deleted file mode 100644 index c06d1071d5ac76d9be9d6eff977a5f8cd4c82863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmXRfE6C1ZU|?WpVPN<V1VAQ(QWyh+qC^ABdZ+S_ief>YZf+_+IT^wo!(7vHOB4iv zDi|4<7+lscFbHg9VqjqqU`R<UNn`-3VPaqg@>$tHroccd6NuFXB>(^Kh$sizX9DDd z>~pAN0^5abA2t(k=>@rfT)k;bjAZNWh#+6@s&(Y+J;TDpu*(J#H}CIsO5qHv`jVgM K;oRm(yj}nfOJeE( diff --git a/Frameworks/TagLib/taglib/tests/data/noise.aif b/Frameworks/TagLib/taglib/tests/data/noise.aif deleted file mode 100644 index 310b995e3c64878ca14d096b8e219f59389e6ef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4400 zcmZ?s5AtPT5L9>cbaQj|_XV;UgculsWGaJ%1K%1KAPWfGe0+i!82ArCc%$TK2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQQzsf#6_2V4t4R9Og=<u37ARma=Fp z{r|b*Yx0M`OLf`XqgZ_&au@QmO@GKX&0C_whUKRX@6{-2M_q2#X&izT3_(%<Y#7-8 zd|=+g|7&mNpR?0`w=Dh1eV93d|5x^<-`(w>v!*?M<o(ok%lnwaZ>Bu_cG%{JsSW!C zT}EbahC3BZKKwj0_&NXcGl(r^iH`c+{NdX@hCeqieQ&j4Ui^?<b_>7xLvG;;9x)r9 ztO_m#Z}I$guEn~%jO}di4~t7zaP9iQuHpT=j{nc^rECfh*#h{5PBQ$;KFoGim$AH^ zdD1j?&Zu8*TYf%S`b+Z?vr!b6l{aIl&5s+G{)O0l)|30SLhk33Ex&f@GBz${`}l!z z*N1P`6%3O6e^sV&>OSP+l@pvX?Z46`4woolcklnjx~%CBzp!O~dzSet@-T~~Cj$T^ C(vHsn diff --git a/Frameworks/TagLib/taglib/tests/data/noise_odd.aif b/Frameworks/TagLib/taglib/tests/data/noise_odd.aif deleted file mode 100644 index bccfd7283c4be54cb38d869161148a620cc0647b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4399 zcmZ?s5AtPT5L9>cbaQj|_XV;UgculsWGaJ%1K%1KAPWfGe0+i!82ArCc%$TK2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQQzsf#6_2V4t4R9Og=<u37ARma=Fp z{r|b*Yx0M`OLf`XqgZ_&au@QmO@GKX&0C_whUKRX@6{-2M_q2#X&izT3_(%<Y#7-8 zd|=+g|7&mNpR?0`w=Dh1eV93d|5x^<-`(w>v!*?M<o(ok%lnwaZ>Bu_cG%{JsSW!C zT}EbahC3BZKKwj0_&NXcGl(r^iH`c+{NdX@hCeqieQ&j4Ui^?<b_>7xLvG;;9x)r9 ztO_m#Z}I$guEn~%jO}di4~t7zaP9iQuHpT=j{nc^rECfh*#h{5PBQ$;KFoGim$AH^ zdD1j?&Zu8*TYf%S`b+Z?vr!b6l{aIl&5s+G{)O0l)|30SLhk33Ex&f@GBz${`}l!z z*N1P`6%3O6e^sV&>OSP+l@pvX?Z46`4woolcklnjx~%CBzp!O~dzSet@-T~~Cjgc7 Bj?Vx9 diff --git a/Frameworks/TagLib/taglib/tests/data/non_standard_rate.wv b/Frameworks/TagLib/taglib/tests/data/non_standard_rate.wv deleted file mode 100644 index ccc90277e3c0b92e4840f41b2d7057e4a5cf0101..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmXRfE6A>4U|<knVPJ^n12TXBL@P=(h^Jp>d7Hsho><19C>G@D<~G5Sfg#*6%rz~y zL_q+kj*)?h;RQ1T!vcN=1{MYZhLpsT#2la+CI)68pOp=47?en70;x=80&%q%x`6cm O`MUr0nbxeU-U0wcI2fn^ diff --git a/Frameworks/TagLib/taglib/tests/data/pcm_with_fact_chunk.wav b/Frameworks/TagLib/taglib/tests/data/pcm_with_fact_chunk.wav deleted file mode 100644 index a6dc1d6c58bdbd08730cc16c71a940d581910765..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14756 zcmeIup$)=N07cOUt*0ZfMr8#*X@VjI^be$}xIYep@fd^d!MXaXbD2wdkI8+yot9TS z4oP;|=i4QpL(*r+v$nc!j|dPTK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk q1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009F3EU?r^>o<ThpRYfvP77!N diff --git a/Frameworks/TagLib/taglib/tests/data/rare_frames.mp3 b/Frameworks/TagLib/taglib/tests/data/rare_frames.mp3 deleted file mode 100644 index e485337f9e489dea7fecc899c7418cadc923c4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8320 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 N691C_K>+}&{{TD^OUM8K diff --git a/Frameworks/TagLib/taglib/tests/data/segfault.aif b/Frameworks/TagLib/taglib/tests/data/segfault.aif deleted file mode 100644 index 5dce192b05e0219b947cefde7573b7df1f3393b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 icmZ?s5AtP9KB4F6>E`C_@9WC|0>Qz4E<iyJ1_l6t`v*M$ diff --git a/Frameworks/TagLib/taglib/tests/data/segfault.mpc b/Frameworks/TagLib/taglib/tests/data/segfault.mpc deleted file mode 100644 index 2c7e29fb78fc1b5eff50e48411925d50562fd666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19 ZcmeYbaP|)NV4nKxpa=&85d3Fg0026+1vLNw diff --git a/Frameworks/TagLib/taglib/tests/data/segfault.oga b/Frameworks/TagLib/taglib/tests/data/segfault.oga deleted file mode 100644 index e23c21706e2f87776b3b210be638f431e416c00e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmeZIPY-5bVt|6`<8dhhK(<t+hyd5N`cNN7XGR7F{xqLNXP~H(5Q6|41A`m`15gqH vjsTeo3{d{bEFc4@hvCY$ZA(9t>-;${T;af=&?wZf>p|rsRR^Hyd>{Y-^*$$~ diff --git a/Frameworks/TagLib/taglib/tests/data/segfault.wav b/Frameworks/TagLib/taglib/tests/data/segfault.wav deleted file mode 100644 index 0385e99be958fdf68181244ea8cb2ecd74eb1725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30 kcmWIYbaR_v$-ofq80MOmTcW_kz`*eTe@bFWB9OrV0D{&CB>(^b diff --git a/Frameworks/TagLib/taglib/tests/data/segfault2.mpc b/Frameworks/TagLib/taglib/tests/data/segfault2.mpc deleted file mode 100644 index fcfa982f6..000000000 --- a/Frameworks/TagLib/taglib/tests/data/segfault2.mpc +++ /dev/null @@ -1 +0,0 @@ -MPCKSH \ No newline at end of file diff --git a/Frameworks/TagLib/taglib/tests/data/silence-1.wma b/Frameworks/TagLib/taglib/tests/data/silence-1.wma deleted file mode 100644 index e06f9176648836ab73928f0e15af92abd5c82f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35416 zcmeI*U2Icj7zgnG>1H=(g&i@v5Dd+t1e`W(kcGvMY<7&vhmhfvIB*UrvIw%Q8zV>} zOfZXlh+a4_MsZHvT2QiJNYDfmBXL`#V~Pm|k$@p;Oi*LyoEZJT=bQ#M>y;Pl#s75Y z^z=O+@7v$$#gnJcS!Ye}Y2LFYVZU<*F|0bdZqsBqQx=z&Z}yn2bKH%{fzNw1A%ZBH zyms^S=GpkJ`P~V7&v*DZ5L^~n>un1Ub^q}0lDikQ9y~m=aY5ec<uAA!_LhX&OaC}w zUGMF8I59cHtR5J+$7i17*O?{QAJCWM&WEl5A7mV_4Viu}y8V2e>+A-5@Qe5{(|*Zq z_v0Y9bXSD8oWFc!Vb9Ex`_7fE*b#Df=2`twJjEA*2%g4WXy&^CR_^>|`u2H0&3~hI zVq{uoRqvGK-qw%(!=Jui(^9$p$=I&)kwtx*lUw*~A>gP05AZAx<9<|mTP+wlKj(6K zZA3ku;By!o*ykE98?hdBTsN%`abAxGtYeGO1s0)*%cd{=dEfR;nAdsi)p-9avF{ru zu~Cx*Bp?9^NI(J-kbndvAOQ(TKmz|up#SYlH#MFp3O~2MyS~a_^XT&bI9v9})f~mO z>v85POwPjMBh-=1AOOL0u`{=9d2Pu@Gj>#ev+qJj{=d#!+Bq<ob#c&c{}~5*AM0A$ z>Ftq$sdxm7QGsR5BP?WwA;Qc-l-UH6M=;Y=6k--aoUbltqnO!;Vs4!>>gWe~bOfuN z*&KVbcZ@mOJ%c$56C<Ot89rp1ol#nK>iJs>2kf^xImV32q4%6tplnRL#daU^*mFI{ zxSAtv;fRBL7pCue<~V{VW7fs2Z{T_f`!3`$w{hK!JILhBDrQ5XxRdL1FxP3R#AfHU z$vhc@h;wWa^EVAVW7O#(?B!p4sIy+mI(zi!H94V1Z?vVa*AFkQN!VR~VQcM*@`9zG ze{%fAx`e&6huN?r7lPhybOo|GTlj3~*UUQ0hpiv-y-wqm&&g#r3~j(99J+&h#B<^~ z7I3n8_?g`mr|jLWc)Y#0qbGSP^Jy^ItKu=4weuU@zQ$(Bl36j!YUL1CI{4KV2f!)Y ze8fz8Yyyz=?C-Y+^Ya6jfBW<0y|(Rd8M*gJTd*}d$ip;AKmrnwfCMBU0SQQ8JO$iH zwwh5gBU$IWUMG@0&F@F^fXv)7{*CAO)VBmAAOQ(TKmrnwfCN$txRGp(*;q!hPHxtT zWDA%po}oxKwV7HaAOQ(TKmrnwfCSP(z>Q@8W;T|QtaHbW6UlC4X~A4YvgvSzGzJMs zKmrnwfCMBUfz$$Cbpc~oMzZFXYqw7JE7r<ZDw0iYrdA0^KmrnwfCMBUfpie?stXvy zGLkj_kjaf?3jzRdMs(|Bb;nmaTq%t~0uqpb1SB8<2}oeHfLC3>7?zPNi(|b=cH0fW z+GHd<`Ut&}fCMBU0SQPz0uqowItX~x1uTnYB+F&8x?m!(Ns(+iTp^7?0uqpb1SB8< z2}mHdfLC3>vRFp4Tqdgv_+v?JieyupsZ|0JkbndvAOQ(TARPp}>H_{$0wY=H2NT@? zU0?(I6v?K;719_aAOQ(TKmrnwfCN$tc+~|gi)AFs+q{z11vdg+$w*dre5JNis{|w< P0SQPz0uqqGcnbUjXqG|4 diff --git a/Frameworks/TagLib/taglib/tests/data/silence-44-s.flac b/Frameworks/TagLib/taglib/tests/data/silence-44-s.flac deleted file mode 100644 index 24e15deb8c85ef82baf22a231901d646397dd8c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50904 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 diff --git a/Frameworks/TagLib/taglib/tests/data/sinewave.flac b/Frameworks/TagLib/taglib/tests/data/sinewave.flac deleted file mode 100644 index 25d31b2d72ebd2d4e23c0923e06cefdd452678e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64567 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 diff --git a/Frameworks/TagLib/taglib/tests/data/stripped.xm b/Frameworks/TagLib/taglib/tests/data/stripped.xm deleted file mode 100644 index 57055f5f192d5858341a8a9235d0f642481d7180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 602 zcmZQzKm#S2B{``I`DqHp`FZJRa%fypAfFM4Ilv?%0~<pv0|O^Wkplw*Q^P12(IEf; DpT-63 diff --git a/Frameworks/TagLib/taglib/tests/data/sv4_header.mpc b/Frameworks/TagLib/taglib/tests/data/sv4_header.mpc deleted file mode 100644 index 214f7ac4eb710e8e21de093ee7959dab8fe86bca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmV-`0Du3%Cm;Z)0P+K!E+_X8&%*;!>;D5wsil<Pw|`SHW?4+jVwPoDmSr)-7(xuW zvBWGKXl@{?UfGo!nyhFu>6)pQDvY{}wzBH4T&wTPvrFTA(>cv{&D-_Dah=cBT5|n@ iE3UO<#~#&>*ohqgTB!C%gDl*OOm-ISqH9VS7Q>v%RY5rb diff --git a/Frameworks/TagLib/taglib/tests/data/sv5_header.mpc b/Frameworks/TagLib/taglib/tests/data/sv5_header.mpc deleted file mode 100644 index 6d17e65f0f865303397cdb08632cca5a2aa0365a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmV-`0Du3%FCYN&0{{RVcBcU78pg2y2S5XsQc5XpYAK~=`TMqG7PBld%R&|wvn-27 z)(~SG+b-oV^~l!Gc|2h@R~)T+MB#OHHdkBzU)gt`zIpg}+1_WT^O~=6<x2Zku3Wju i%9txZJ@=^oqLdzMqz%Mg>6~40@oh*DH|+sQguls;y*_RL diff --git a/Frameworks/TagLib/taglib/tests/data/sv8_header.mpc b/Frameworks/TagLib/taglib/tests/data/sv8_header.mpc deleted file mode 100644 index 3405545a29460883251a5ccd6135ae440bca5815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114 zcmeYbaP|)N;Crv7*~rn-9LK;a8RX8x=vo_f28=z~0~zHQg8eyM7=XYrfJKH(ED#*R L#wc_k*p(Ro^T!wZ diff --git a/Frameworks/TagLib/taglib/tests/data/tagged.tta b/Frameworks/TagLib/taglib/tests/data/tagged.tta deleted file mode 100644 index 1677a7edfbca692ad1e659f1d477be40d4138de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81819 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 Wc?A899X%42n)rVm{C~Xn=l=qGix&X^ diff --git a/Frameworks/TagLib/taglib/tests/data/tagged.wv b/Frameworks/TagLib/taglib/tests/data/tagged.wv deleted file mode 100644 index 333f8687177ea8d6b9075ef35e80c54869bc0aa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76627 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 diff --git a/Frameworks/TagLib/taglib/tests/data/test.it b/Frameworks/TagLib/taglib/tests/data/test.it deleted file mode 100644 index 379444b91869139a9ca1b73d5b2b9bed98370e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmebD4e%{VEiO?g&d*C%$V<#kWk3Qf0!%<2D+42gIFkqyCj%Qpg8^G@15|}y3da)# z3V{QK;Q#+GK-ai1GB8X5;wM0C0&+4CFf&}Yi&S_j#sH*WDj9Qv==Zx`3otNv`UV6; z)IdoG28WQ0%wh!~N>nIL%q_@C1qX#5iYhQ?wE{w{1!@yE^E~qua`RJ4fd-{zf{6U0 z+{BV%gkBhnSo4rv1$1OlszPE?X>n=_%osRLta*vW3b~~@C7C&yd8rD?`MJ5Nc_qaZ O_*Vh$0{jeY?gId>FJKJ- diff --git a/Frameworks/TagLib/taglib/tests/data/test.mod b/Frameworks/TagLib/taglib/tests/data/test.mod deleted file mode 100644 index 136b6119187bf574bcfdca2c4a4e9155880d553a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3132 zcmeH@u?hk)3_#mI$u2rO9=Pb@KU6O#1)D<C&i=Z&DA?il4km>V@)AN{jrEC;7vM|} z_lXN}EiEBcppcNiZRaMbd?*Ov));39KO{uyJ*Rb%A(FJZn56b8&rQxPaZS0TQ2C%U uO82|1CtRt{Z6%|<6|?aNHvFsq<cRusI$uZJwVP(Z4445kU<S;<SOae~S1CaN diff --git a/Frameworks/TagLib/taglib/tests/data/test.ogg b/Frameworks/TagLib/taglib/tests/data/test.ogg deleted file mode 100644 index 220f76f0cef41c7e50736c9134ffb20f0d297961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4408 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 diff --git a/Frameworks/TagLib/taglib/tests/data/test.s3m b/Frameworks/TagLib/taglib/tests/data/test.s3m deleted file mode 100644 index 668250bb7876f31762bb3c2d4a2cafb93cff2f9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmXR(EiO?g&d*C%$V<#kWk3N^0t^gH46F={Kv4x@CWc_=AYTWzS_6SUNXj@EIhnYa zxmkEvdD-~b`Tt`8P6j>(VFn2XStL!km<<iMWI*B$K)hN3NFafbjLc#MAWF<r$jmD) zDJsoP%_{->MGr|8cBTVR7~MSI{FKt1RE4xm5RqS$n^;neT{9L@Z002<l@_O>JB>&q lv6@$`kXxEll9`j4m#UDQp9}JCF=4NQU5m{;1+WZm0sx-yM0EfF diff --git a/Frameworks/TagLib/taglib/tests/data/test.xm b/Frameworks/TagLib/taglib/tests/data/test.xm deleted file mode 100644 index b09d91324bb3e6edcdae4f659965e1a87b5e1954..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5471 zcmeH}Jx{|h5QZ-i;$vq*Lb?$N!4F`{(t)89`~lNA$f`do+mT>E^q<2yPHTn$T@XX= z68kLqJowT3+FrawX<OOi(zU&ocNkUF5?zPE*=NXcu~d5f`sl@KEj^BLRGn7<^usCj zTWZJfHZGWNI!jw`0O~ErtO=ZuGwyAOzBkfFw8F?R+M<T5arC#T0ZdXnIFRb`;Oe>_ z+)vv~@$sJXPkjS)Ou&OM8!dmY`%0`-C#=Ft6i<DiQ%mfaQbjdutO-hRMn+YH29R*A zoJkT4sBGa#C)B)g>ENbBR0uVLT6gen%LI)sshQ!z#7@z5**R}S47n&x-ds<8<4Q`? tkyd^iJV|I60z=3SVI{B<SP7W`D}j~3O4t)%JFp%0V&HcI+u{H0@Cp8IS;+tZ diff --git a/Frameworks/TagLib/taglib/tests/data/toc_many_children.mp3 b/Frameworks/TagLib/taglib/tests/data/toc_many_children.mp3 deleted file mode 100644 index 168c47981fb866c759a5a845175977b95ce01b23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11525 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 Pw_x14fA{k|!>{%ad<>qZ diff --git a/Frameworks/TagLib/taglib/tests/data/uint8we.wav b/Frameworks/TagLib/taglib/tests/data/uint8we.wav deleted file mode 100644 index 9623db2291a78e96fadbeeb7ca7e58d2daf89688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47240 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%0D$ezK;h2C#Esef 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 S5AvJ8{|DdskND>8w*Nm^KnY*~ diff --git a/Frameworks/TagLib/taglib/tests/data/unsupported-extension.xx b/Frameworks/TagLib/taglib/tests/data/unsupported-extension.xx deleted file mode 100644 index 65f57c2ee985713476ac0b6e3483e6fe472e2176..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 LcmZQz7})>-0RR92 diff --git a/Frameworks/TagLib/taglib/tests/data/unsynch.id3 b/Frameworks/TagLib/taglib/tests/data/unsynch.id3 deleted file mode 100644 index cfe6ee1a6f13da6901627a4543f7849dc2d99ed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeZtF=l3HU|?W02=NRtVqjn}1+xGBXJGJUsAN!JNMc9?;#43ji=mXEn4tv7N(PD* z0mX`e>@<daAX|YUmmxJIz||0_UlOX{k0FyG52#XsAsEQY1**#fs&Vvj0;&;(sxf3R z076xu8ZV&ADu$|%AZKr&JUdk0fWbJ#$JGxg!tVfal@Ws>gBe(t!T;YAco_IU9AokT z$}`9?cnSb1W(H0j5I2rd^#G9ij|`svU-M@HkGx&2`|172;{QKAZewCMWnwU>eR}Y_ dH>%vO**}Anyl%v>9odbd=d!cx(>YD)697C+bpQYW diff --git a/Frameworks/TagLib/taglib/tests/data/w000.mp3 b/Frameworks/TagLib/taglib/tests/data/w000.mp3 deleted file mode 100644 index f9c2261764526ff40aba618a1e9b9933acada5fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmdUqQA@)x6ore5`rwm4K<|s750-TE!M*9)BBSeCW@Pvz=}fz@G#PD5?Z5XFd=USE z2R@Q>a&K<3h^EILbb1qJX^PDTNK<)vV{1#9(F5I6-}nAu3@p6AwKcLxwXRV`=ae;M zOL9BaQmM2gtmDzvp%+~{RVXJveLl~}0Vg1sJn}GG{kYrd9gkNb+$H!mI5SISBwz3e z@(Yj{+bdJiyX|-yM@Y^9V-IXL<9QswT!UBHRLate&~^}pN}sr>8$pSbMi`#I%~5m? z*0v~=X*Y~9xGT@o-Cnf578>b(c#>bDK4>}q_ygkWFhSiB2>A1IyyefUko+%w1F}q5 ADgXcg diff --git a/Frameworks/TagLib/taglib/tests/data/xing.mp3 b/Frameworks/TagLib/taglib/tests/data/xing.mp3 deleted file mode 100644 index 0c880151b6b60b5f5ac4823a064320710b687449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8208 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 diff --git a/Frameworks/TagLib/taglib/tests/data/zero-length-mdat.m4a b/Frameworks/TagLib/taglib/tests/data/zero-length-mdat.m4a deleted file mode 100644 index 578d2ef7a8b000addc1e6d5ad9a6b12211f840b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4517 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 HgBSiA+4#i{ diff --git a/Frameworks/TagLib/taglib/tests/data/zero-size-chunk.wav b/Frameworks/TagLib/taglib/tests/data/zero-size-chunk.wav deleted file mode 100644 index 8517e797dc803bfbcea502588f70d68e643a6aad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmWIYbaUfiU|<M$40BD(Em05vvKbke7+lscFbHg9VqjqqU`R<UNdyXyg3%Bd4S``6 F0sw5+2R;A* diff --git a/Frameworks/TagLib/taglib/tests/data/zero-sized-padding.flac b/Frameworks/TagLib/taglib/tests/data/zero-sized-padding.flac deleted file mode 100644 index 86ab8bf7b354855713a5352887c4791dbe2310b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4692 zcmeI$&nv@m9LMp`Y<_HvubCO<*R}(bkn*EQCW~4jJIwN<(I(Bo33E^jDct?I;pCvW zNg9QNmfWP=+>`?nJDKmRm;b`&U7tQZ`g~5$<2&pPb_*fwCSg*qTp<+0wfjw^Ene=O zbbW_kR(7wRl!kpn`@Bvl)#?|aQIAa#!q?~X_H_8=$O5u}EFcTW0<wTCAPdL>vVbfg z3&;Ypz&|YzQ+EWZ<gislurW}V3hR(&hFVKOX(1{eg0vG<jRNWBsk=caeU=J1p^PXs z8HX~LsLuqHHAL06L3$r`?u87a)anD29iU7HP)<Mf^$Zz%so)lr+eP_}P@adnUx1WS zYU&lrw^469kg1Tm)j|bWuc$LN2bnXevli&@qo{L37Cqn0k5G}ilEEw=K~@JfG7c3x zse}tEsiQuQp;8wWx`Aw+RBQz*Yo#pjP<bO&AAu^Gsnc?(a)bKuKvkR6bQ5G>r3MaD N$*9$#yV$1vJ-_48A29#` diff --git a/Frameworks/TagLib/taglib/tests/data/zerodiv.ape b/Frameworks/TagLib/taglib/tests/data/zerodiv.ape deleted file mode 100644 index 683bc2ddb5ae4f932fd7554664421bd0134f871e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmV;j15Nx*K|>&x00960001BW0001#000220002kRAT@D000000001iN0A!y@L(fn z1FU6N?rMC{2LJ#7AOQfNG5`Q206+i`00IC+tN;KE0RR9H4gvsT-~<51$p-+VsR{s- zij4rzNe}?G9}@um{uKbw(-;7Lp%VZJXC46PH6Z}&6eIwKtR?`4NGSlc5i9^d=q>>8 zg)snlwKD*2CN==G`Zxfn+B*O$yFLK?Zb1MVG(-T(7DoUL^GN_yy-Wy#iBABVR#E^k zO;rHm?N<PPgjxXOF<k(CDPRB{^kM)~Nk&Gb%Ax>QMOH;-ZFC?I0000100IC+tN;KI zu|fa@01yCVVRT`D%Ax?3!cHIFm<<4a!=@`~=9M8_a>)?-3o?rrEy&ZL%zk)>+(y7{ zti6@zFo%OMvExu<c?#g_3~Oq;@f9bSKo4mG?WDdQn+t(|Lmb}wvtlChphNu9r<~Vd z!-p6e0e5^7zUYsZsJK&nyc}ZVE#eXiPBoWxeVJ)8Ll?G=9a_5E>M@b9ZWskn=Nx)d zp{lxNl;FO<I@j6_XJ4P~O>WNjsXPDz006ie=`z|Sc`@D|u6b|?eVW<@?#of*UN^Y1 zOL~}h7^3Oos~_tf*;Xi9HdD$1_aPTqNN9T?_8E|DYC5#x>-?NN5Ai5voy)Q3NK4cG zJuC2S8B)}7DLfa8z^x4ieZdyl&G)oQCu}+rb?<F84Ic^??thCsPmi<zQN+%?g7w~W z7$`M~ZO4#ImD9P*X&orJWh?5al$mo3zss1!=;0qcnsqQi>G;-8Vma+oiAWXea%wR_ z$qYG4i(SKF?(75aFPu{Z3be-lU%pm{{PTCgQ6?MbnuMe`Cm{S`1}090IRnYaX#b4J zgEP$xl{{Z*&K!#sAt@QUHWtKSbN?o=80P1Dx3}|w776XkW{5LLU{{;6uu0kbouJ5| zm;VK#|1S|zq>i2O-okJhkE^gBL^7Dc?{k7xXp+w3tutQlp`kcIK?MK?4tzlMFtAho z<YEMcVF(maoe(-Yw{ZO#`kcxjhBr292~)Z_dc~#@H{CRPf7NC;_5N0<9J8B3g^nGL z>x5^vD}ZcdL`aRAUqP~eRFlu_v`AWZb?g{O&9mmZd=QMX+YL*6(|ofqh$x$U<DXs= zw7g|wG&whmAZOiY-Os44IC6D5MONvan;A@(_NQIo0BzXUu5IB7h;<c(=+5SCw&RZ5 UX3%me7aYL#J4Di%Smf_tolRDj$^ZZW diff --git a/Frameworks/TagLib/taglib/tests/data/zerodiv.mpc b/Frameworks/TagLib/taglib/tests/data/zerodiv.mpc deleted file mode 100644 index d3ea57c75ca8a58f8bcc9bf0388935d59f8d70d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcmeYbaP|)N;Gg>Ipa@4}XS)kS0|OX1<|LKoGB_oA<RqpPvp~cc9E(aai%S@?N{dSr z((;QGN>YnU*r0Omshf*Zff{mv8pNPtA(<sPsSLRVj4*ytVsbWvA<Q_SXh>!>Pz6wf z0!T@+LUF5wf&$P~h4RdjjQ>DT4AJ|VAp})#WNKm&gS~-)fn$Jch@-n}`~`LfhLsE) z3~X^FD3+ip)Jy}q&kSN6Lx=zalI;x9V8`SZpgQCK|B}RXJkI!o<P6RD3vD20Fff3E drGbGVF*yd|Uo@w<MqCg@Q4Cbi1k}dB005C6T2%l5 diff --git a/Frameworks/TagLib/taglib/tests/main.cpp b/Frameworks/TagLib/taglib/tests/main.cpp deleted file mode 100644 index 86a4208c7..000000000 --- a/Frameworks/TagLib/taglib/tests/main.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <stdlib.h> -#include <string.h> -#include <fstream> -#include <stdexcept> -#include <cppunit/TestResult.h> -#include <cppunit/TestResultCollector.h> -#include <cppunit/TestRunner.h> -#include <cppunit/extensions/TestFactoryRegistry.h> -#include <cppunit/BriefTestProgressListener.h> -#include <cppunit/CompilerOutputter.h> -#include <cppunit/XmlOutputter.h> - -int main(int argc, char* argv[]) -{ - std::string testPath = (argc > 1) ? std::string(argv[1]) : ""; - - // Create the event manager and test controller - CppUnit::TestResult controller; - - // Add a listener that collects test result - CppUnit::TestResultCollector result; - controller.addListener(&result); - - // Add a listener that print dots as test run. - CppUnit::BriefTestProgressListener progress; - controller.addListener(&progress); - - // Add the top suite to the test runner - CppUnit::TestRunner runner; - runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); - - try { - std::cout << "Running " << testPath; - runner.run(controller, testPath); - - std::cerr << std::endl; - - // Print test in a compiler compatible format. - CppUnit::CompilerOutputter outputter(&result, std::cerr); - outputter.write(); - -#if defined(_MSC_VER) && _MSC_VER > 1500 - char *xml = NULL; - ::_dupenv_s(&xml, NULL, "CPPUNIT_XML"); -#else - char *xml = ::getenv("CPPUNIT_XML"); -#endif - if(xml && !::strcmp(xml, "1")) { - std::ofstream xmlfileout("cpptestresults.xml"); - CppUnit::XmlOutputter xmlout(&result, xmlfileout); - xmlout.write(); - } -#if defined(_MSC_VER) && _MSC_VER > 1500 - ::free(xml); -#endif - } - catch(std::invalid_argument &e){ - std::cerr << std::endl - << "ERROR: " << e.what() - << std::endl; - return 0; - } - - return result.wasSuccessful() ? 0 : 1; -} diff --git a/Frameworks/TagLib/taglib/tests/plainfile.h b/Frameworks/TagLib/taglib/tests/plainfile.h deleted file mode 100644 index 6147b56b5..000000000 --- a/Frameworks/TagLib/taglib/tests/plainfile.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifndef TAGLIB_PLAINFILE_H -#define TAGLIB_PLAINFILE_H - -#include <tfile.h> - -using namespace TagLib; - -//! File subclass that gives tests access to filesystem operations -class PlainFile : public File { -public: - explicit PlainFile(FileName name) : File(name) { } - Tag *tag() const { return NULL; } - AudioProperties *audioProperties() const { return NULL; } - bool save() { return false; } - void truncate(long length) { File::truncate(length); } - - ByteVector readAll() { - seek(0, End); - long end = tell(); - seek(0); - return readBlock(end); - } -}; - -#endif diff --git a/Frameworks/TagLib/taglib/tests/test_aiff.cpp b/Frameworks/TagLib/taglib/tests/test_aiff.cpp deleted file mode 100644 index 0337729f1..000000000 --- a/Frameworks/TagLib/taglib/tests/test_aiff.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tbytevectorlist.h> -#include <aifffile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestAIFF : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestAIFF); - CPPUNIT_TEST(testAiffProperties); - CPPUNIT_TEST(testAiffCProperties); - CPPUNIT_TEST(testSaveID3v2); - CPPUNIT_TEST(testSaveID3v23); - CPPUNIT_TEST(testDuplicateID3v2); - CPPUNIT_TEST(testFuzzedFile1); - CPPUNIT_TEST(testFuzzedFile2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAiffProperties() - { - RIFF::AIFF::File f(TEST_FILE_PATH_C("empty.aiff")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(67, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(706, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(2941U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isAiffC()); - } - - void testAiffCProperties() - { - RIFF::AIFF::File f(TEST_FILE_PATH_C("alaw.aifc")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(37, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(355, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(1622U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(true, f.audioProperties()->isAiffC()); - CPPUNIT_ASSERT_EQUAL(ByteVector("ALAW"), f.audioProperties()->compressionType()); - CPPUNIT_ASSERT_EQUAL(String("SGI CCITT G.711 A-law"), f.audioProperties()->compressionName()); - } - - void testSaveID3v2() - { - ScopedFileCopy copy("empty", ".aiff"); - string newname = copy.fileName(); - - { - RIFF::AIFF::File f(newname.c_str()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - - f.tag()->setTitle(L"TitleXXX"); - f.save(); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - } - { - RIFF::AIFF::File f(newname.c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String(L"TitleXXX"), f.tag()->title()); - - f.tag()->setTitle(""); - f.save(); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - } - { - RIFF::AIFF::File f(newname.c_str()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - } - } - - void testSaveID3v23() - { - ScopedFileCopy copy("empty", ".aiff"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - { - RIFF::AIFF::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag()); - - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(ID3v2::v3); - CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag()); - } - { - RIFF::AIFF::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, f2.tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - } - - void testDuplicateID3v2() - { - ScopedFileCopy copy("duplicate_id3v2", ".aiff"); - - // duplicate_id3v2.aiff has duplicate ID3v2 tag chunks. - // title() returns "Title2" if can't skip the second tag. - - RIFF::AIFF::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String("Title1"), f.tag()->title()); - - f.save(); - CPPUNIT_ASSERT_EQUAL(7030L, f.length()); - CPPUNIT_ASSERT_EQUAL(-1L, f.find("Title2")); - } - - void testFuzzedFile1() - { - RIFF::AIFF::File f(TEST_FILE_PATH_C("segfault.aif")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testFuzzedFile2() - { - RIFF::AIFF::File f(TEST_FILE_PATH_C("excessive_alloc.aif")); - CPPUNIT_ASSERT(f.isValid()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestAIFF); diff --git a/Frameworks/TagLib/taglib/tests/test_ape.cpp b/Frameworks/TagLib/taglib/tests/test_ape.cpp deleted file mode 100644 index 81b8510ff..000000000 --- a/Frameworks/TagLib/taglib/tests/test_ape.cpp +++ /dev/null @@ -1,238 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <apetag.h> -#include <id3v1tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <apefile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestAPE : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestAPE); - CPPUNIT_TEST(testProperties399); - CPPUNIT_TEST(testProperties399Tagged); - CPPUNIT_TEST(testProperties399Id3v2); - CPPUNIT_TEST(testProperties396); - CPPUNIT_TEST(testProperties390); - CPPUNIT_TEST(testFuzzedFile1); - CPPUNIT_TEST(testFuzzedFile2); - CPPUNIT_TEST(testStripAndProperties); - CPPUNIT_TEST(testRepeatedSave); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testProperties399() - { - APE::File f(TEST_FILE_PATH_C("mac-399.ape")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3550, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(192, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(156556U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(3990, f.audioProperties()->version()); - } - - void testProperties399Tagged() - { - APE::File f(TEST_FILE_PATH_C("mac-399-tagged.ape")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3550, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(192, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(156556U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(3990, f.audioProperties()->version()); - } - - void testProperties399Id3v2() - { - APE::File f(TEST_FILE_PATH_C("mac-399-id3v2.ape")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3550, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(192, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(156556U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(3990, f.audioProperties()->version()); - } - - void testProperties396() - { - APE::File f(TEST_FILE_PATH_C("mac-396.ape")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(162496U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(3960, f.audioProperties()->version()); - } - - void testProperties390() - { - APE::File f(TEST_FILE_PATH_C("mac-390-hdr.ape")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(15, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(15630, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(689262U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(3900, f.audioProperties()->version()); - } - - void testFuzzedFile1() - { - APE::File f(TEST_FILE_PATH_C("longloop.ape")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testFuzzedFile2() - { - APE::File f(TEST_FILE_PATH_C("zerodiv.ape")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testStripAndProperties() - { - ScopedFileCopy copy("mac-399", ".ape"); - - { - APE::File f(copy.fileName().c_str()); - f.APETag(true)->setTitle("APE"); - f.ID3v1Tag(true)->setTitle("ID3v1"); - f.save(); - } - { - APE::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String("APE"), f.properties()["TITLE"].front()); - f.strip(APE::File::APE); - CPPUNIT_ASSERT_EQUAL(String("ID3v1"), f.properties()["TITLE"].front()); - f.strip(APE::File::ID3v1); - CPPUNIT_ASSERT(f.properties().isEmpty()); - } - } - - void testProperties() - { - PropertyMap tags; - tags["ALBUM"] = StringList("Album"); - tags["ALBUMARTIST"] = StringList("Album Artist"); - tags["ALBUMARTISTSORT"] = StringList("Album Artist Sort"); - tags["ALBUMSORT"] = StringList("Album Sort"); - tags["ARTIST"] = StringList("Artist"); - tags["ARTISTS"] = StringList("Artists"); - tags["ARTISTSORT"] = StringList("Artist Sort"); - tags["ASIN"] = StringList("ASIN"); - tags["BARCODE"] = StringList("Barcode"); - tags["CATALOGNUMBER"] = StringList("Catalog Number 1").append("Catalog Number 2"); - tags["COMMENT"] = StringList("Comment"); - tags["DATE"] = StringList("2021-01-10"); - tags["DISCNUMBER"] = StringList("3/5"); - tags["GENRE"] = StringList("Genre"); - tags["ISRC"] = StringList("UKAAA0500001"); - tags["LABEL"] = StringList("Label 1").append("Label 2"); - tags["MEDIA"] = StringList("Media"); - tags["MUSICBRAINZ_ALBUMARTISTID"] = StringList("MusicBrainz_AlbumartistID"); - tags["MUSICBRAINZ_ALBUMID"] = StringList("MusicBrainz_AlbumID"); - tags["MUSICBRAINZ_ARTISTID"] = StringList("MusicBrainz_ArtistID"); - tags["MUSICBRAINZ_RELEASEGROUPID"] = StringList("MusicBrainz_ReleasegroupID"); - tags["MUSICBRAINZ_RELEASETRACKID"] = StringList("MusicBrainz_ReleasetrackID"); - tags["MUSICBRAINZ_TRACKID"] = StringList("MusicBrainz_TrackID"); - tags["ORIGINALDATE"] = StringList("2021-01-09"); - tags["RELEASECOUNTRY"] = StringList("Release Country"); - tags["RELEASESTATUS"] = StringList("Release Status"); - tags["RELEASETYPE"] = StringList("Release Type"); - tags["SCRIPT"] = StringList("Script"); - tags["TITLE"] = StringList("Title"); - tags["TRACKNUMBER"] = StringList("2/3"); - - ScopedFileCopy copy("mac-399", ".ape"); - { - APE::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - CPPUNIT_ASSERT(properties.isEmpty()); - f.setProperties(tags); - f.save(); - } - { - const APE::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - if (tags != properties) { - CPPUNIT_ASSERT_EQUAL(tags.toString(), properties.toString()); - } - CPPUNIT_ASSERT(tags == properties); - } - } - - void testRepeatedSave() - { - ScopedFileCopy copy("mac-399", ".ape"); - - { - APE::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasAPETag()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - - f.APETag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.save(); - - f.APETag()->setTitle("0"); - f.save(); - - f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.APETag()->setTitle("01234 56789 ABCDE FGHIJ 01234 56789 ABCDE FGHIJ 01234 56789"); - f.save(); - } - { - APE::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasAPETag()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestAPE); diff --git a/Frameworks/TagLib/taglib/tests/test_apetag.cpp b/Frameworks/TagLib/taglib/tests/test_apetag.cpp deleted file mode 100644 index 2225ccbd4..000000000 --- a/Frameworks/TagLib/taglib/tests/test_apetag.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <apetag.h> -#include <tdebug.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestAPETag : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestAPETag); - CPPUNIT_TEST(testIsEmpty); - CPPUNIT_TEST(testIsEmpty2); - CPPUNIT_TEST(testPropertyInterface1); - CPPUNIT_TEST(testPropertyInterface2); - CPPUNIT_TEST(testInvalidKeys); - CPPUNIT_TEST(testTextBinary); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testIsEmpty() - { - APE::Tag tag; - CPPUNIT_ASSERT(tag.isEmpty()); - tag.addValue("COMPOSER", "Mike Oldfield"); - CPPUNIT_ASSERT(!tag.isEmpty()); - } - - void testIsEmpty2() - { - APE::Tag tag; - CPPUNIT_ASSERT(tag.isEmpty()); - tag.setArtist("Mike Oldfield"); - CPPUNIT_ASSERT(!tag.isEmpty()); - } - - void testPropertyInterface1() - { - APE::Tag tag; - PropertyMap dict = tag.properties(); - CPPUNIT_ASSERT(dict.isEmpty()); - dict["ARTIST"] = String("artist 1"); - dict["ARTIST"].append("artist 2"); - dict["TRACKNUMBER"].append("17"); - tag.setProperties(dict); - CPPUNIT_ASSERT_EQUAL(String("17"), tag.itemListMap()["TRACK"].values()[0]); - CPPUNIT_ASSERT_EQUAL(2u, tag.itemListMap()["ARTIST"].values().size()); - CPPUNIT_ASSERT_EQUAL(String("artist 1 artist 2"), tag.artist()); - CPPUNIT_ASSERT_EQUAL(17u, tag.track()); - const APE::Item &textItem = tag.itemListMap()["TRACK"]; - CPPUNIT_ASSERT_EQUAL(APE::Item::Text, textItem.type()); - CPPUNIT_ASSERT(!textItem.isEmpty()); - CPPUNIT_ASSERT_EQUAL(9 + 5 + 2, textItem.size()); - } - - void testPropertyInterface2() - { - APE::Tag tag; - APE::Item item1 = APE::Item("TRACK", "17"); - tag.setItem("TRACK", item1); - - APE::Item item2 = APE::Item(); - item2.setType(APE::Item::Binary); - ByteVector binaryData1("first"); - item2.setBinaryData(binaryData1); - tag.setItem("TESTBINARY", item2); - - PropertyMap properties = tag.properties(); - CPPUNIT_ASSERT_EQUAL(1u, properties.unsupportedData().size()); - CPPUNIT_ASSERT(properties.contains("TRACKNUMBER")); - CPPUNIT_ASSERT(!properties.contains("TRACK")); - CPPUNIT_ASSERT(tag.itemListMap().contains("TESTBINARY")); - CPPUNIT_ASSERT_EQUAL(binaryData1, - tag.itemListMap()["TESTBINARY"].binaryData()); - ByteVector binaryData2("second"); - tag.setData("TESTBINARY", binaryData2); - const APE::Item &binaryItem = tag.itemListMap()["TESTBINARY"]; - CPPUNIT_ASSERT_EQUAL(APE::Item::Binary, binaryItem.type()); - CPPUNIT_ASSERT(!binaryItem.isEmpty()); - CPPUNIT_ASSERT_EQUAL(9 + 10 + static_cast<int>(binaryData2.size()), - binaryItem.size()); - CPPUNIT_ASSERT_EQUAL(binaryData2, binaryItem.binaryData()); - - tag.removeUnsupportedProperties(properties.unsupportedData()); - CPPUNIT_ASSERT(!tag.itemListMap().contains("TESTBINARY")); - - APE::Item item3 = APE::Item("TRACKNUMBER", "29"); - tag.setItem("TRACKNUMBER", item3); - properties = tag.properties(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, properties["TRACKNUMBER"].size()); - CPPUNIT_ASSERT_EQUAL(String("17"), properties["TRACKNUMBER"][0]); - CPPUNIT_ASSERT_EQUAL(String("29"), properties["TRACKNUMBER"][1]); - - } - - void testInvalidKeys() - { - PropertyMap properties; - properties["A"] = String("invalid key: one character"); - properties["MP+"] = String("invalid key: forbidden string"); - properties[L"\x1234\x3456"] = String("invalid key: Unicode"); - properties["A B~C"] = String("valid key: space and tilde"); - properties["ARTIST"] = String("valid key: normal one"); - - APE::Tag tag; - PropertyMap unsuccessful = tag.setProperties(properties); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, unsuccessful.size()); - CPPUNIT_ASSERT(unsuccessful.contains("A")); - CPPUNIT_ASSERT(unsuccessful.contains("MP+")); - CPPUNIT_ASSERT(unsuccessful.contains(L"\x1234\x3456")); - - CPPUNIT_ASSERT_EQUAL((unsigned int)2, tag.itemListMap().size()); - tag.addValue("VALID KEY", "Test Value 1"); - tag.addValue("INVALID KEY \x7f", "Test Value 2"); - tag.addValue(L"INVALID KEY \x1234\x3456", "Test Value 3"); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, tag.itemListMap().size()); - } - - void testTextBinary() - { - APE::Item item = APE::Item("DUMMY", "Test Text"); - CPPUNIT_ASSERT_EQUAL(String("Test Text"), item.toString()); - CPPUNIT_ASSERT_EQUAL(ByteVector(), item.binaryData()); - - ByteVector data("Test Data"); - item.setBinaryData(data); - CPPUNIT_ASSERT(item.values().isEmpty()); - CPPUNIT_ASSERT_EQUAL(String(), item.toString()); - CPPUNIT_ASSERT_EQUAL(data, item.binaryData()); - - item.setValue("Test Text 2"); - CPPUNIT_ASSERT_EQUAL(String("Test Text 2"), item.toString()); - CPPUNIT_ASSERT_EQUAL(ByteVector(), item.binaryData()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestAPETag); - diff --git a/Frameworks/TagLib/taglib/tests/test_asf.cpp b/Frameworks/TagLib/taglib/tests/test_asf.cpp deleted file mode 100644 index 2abe9fe50..000000000 --- a/Frameworks/TagLib/taglib/tests/test_asf.cpp +++ /dev/null @@ -1,401 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <asffile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestASF : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestASF); - CPPUNIT_TEST(testAudioProperties); - CPPUNIT_TEST(testLosslessProperties); - CPPUNIT_TEST(testRead); - CPPUNIT_TEST(testSaveMultipleValues); - CPPUNIT_TEST(testSaveStream); - CPPUNIT_TEST(testSaveLanguage); - CPPUNIT_TEST(testDWordTrackNumber); - CPPUNIT_TEST(testSaveLargeValue); - CPPUNIT_TEST(testSavePicture); - CPPUNIT_TEST(testSaveMultiplePictures); - CPPUNIT_TEST(testProperties); - CPPUNIT_TEST(testPropertiesAllSupported); - CPPUNIT_TEST(testRepeatedSave); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAudioProperties() - { - ASF::File f(TEST_FILE_PATH_C("silence-1.wma")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3712, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(64, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(48000, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(ASF::Properties::WMA2, f.audioProperties()->codec()); - CPPUNIT_ASSERT_EQUAL(String("Windows Media Audio 9.1"), f.audioProperties()->codecName()); - CPPUNIT_ASSERT_EQUAL(String("64 kbps, 48 kHz, stereo 2-pass CBR"), f.audioProperties()->codecDescription()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); - } - - void testLosslessProperties() - { - ASF::File f(TEST_FILE_PATH_C("lossless.wma")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3549, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(1152, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(ASF::Properties::WMA9Lossless, f.audioProperties()->codec()); - CPPUNIT_ASSERT_EQUAL(String("Windows Media Audio 9.2 Lossless"), f.audioProperties()->codecName()); - CPPUNIT_ASSERT_EQUAL(String("VBR Quality 100, 44 kHz, 2 channel 16 bit 1-pass VBR"), f.audioProperties()->codecDescription()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); - } - - void testRead() - { - ASF::File f(TEST_FILE_PATH_C("silence-1.wma")); - CPPUNIT_ASSERT_EQUAL(String("test"), f.tag()->title()); - } - - void testSaveMultipleValues() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - { - ASF::File f(newname.c_str()); - ASF::AttributeList values; - values.append("Foo"); - values.append("Bar"); - f.tag()->setAttribute("WM/AlbumTitle", values); - f.save(); - } - { - ASF::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(2, (int)f.tag()->attributeListMap()["WM/AlbumTitle"].size()); - } - } - - void testDWordTrackNumber() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - { - ASF::File f(newname.c_str()); - CPPUNIT_ASSERT(!f.tag()->contains("WM/TrackNumber")); - f.tag()->setAttribute("WM/TrackNumber", (unsigned int)(123)); - f.save(); - } - { - ASF::File f(newname.c_str()); - CPPUNIT_ASSERT(f.tag()->contains("WM/TrackNumber")); - CPPUNIT_ASSERT_EQUAL(ASF::Attribute::DWordType, - f.tag()->attribute("WM/TrackNumber").front().type()); - CPPUNIT_ASSERT_EQUAL((unsigned int)123, f.tag()->track()); - f.tag()->setTrack(234); - f.save(); - } - { - ASF::File f(newname.c_str()); - CPPUNIT_ASSERT(f.tag()->contains("WM/TrackNumber")); - CPPUNIT_ASSERT_EQUAL(ASF::Attribute::UnicodeType, - f.tag()->attribute("WM/TrackNumber").front().type()); - CPPUNIT_ASSERT_EQUAL((unsigned int)234, f.tag()->track()); - } - } - - void testSaveStream() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - { - ASF::File f(newname.c_str()); - ASF::Attribute attr("Foo"); - attr.setStream(43); - f.tag()->setAttribute("WM/AlbumTitle", attr); - f.save(); - } - - { - ASF::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(43, f.tag()->attribute("WM/AlbumTitle").front().stream()); - } - } - - void testSaveLanguage() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - { - ASF::File f(newname.c_str()); - ASF::Attribute attr("Foo"); - attr.setStream(32); - attr.setLanguage(56); - f.tag()->setAttribute("WM/AlbumTitle", attr); - f.save(); - } - { - ASF::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(32, f.tag()->attribute("WM/AlbumTitle").front().stream()); - CPPUNIT_ASSERT_EQUAL(56, f.tag()->attribute("WM/AlbumTitle").front().language()); - } - } - - void testSaveLargeValue() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - { - ASF::File f(newname.c_str()); - ASF::Attribute attr(ByteVector(70000, 'x')); - f.tag()->setAttribute("WM/Blob", attr); - f.save(); - } - { - ASF::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(ByteVector(70000, 'x'), - f.tag()->attribute("WM/Blob").front().toByteVector()); - } - } - - void testSavePicture() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - { - ASF::File f(newname.c_str()); - ASF::Picture picture; - picture.setMimeType("image/jpeg"); - picture.setType(ASF::Picture::FrontCover); - picture.setDescription("description"); - picture.setPicture("data"); - f.tag()->setAttribute("WM/Picture", picture); - f.save(); - } - { - ASF::File f(newname.c_str()); - ASF::AttributeList values2 = f.tag()->attribute("WM/Picture"); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, values2.size()); - ASF::Attribute attr2 = values2.front(); - ASF::Picture picture2 = attr2.toPicture(); - CPPUNIT_ASSERT(picture2.isValid()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), picture2.mimeType()); - CPPUNIT_ASSERT_EQUAL(ASF::Picture::FrontCover, picture2.type()); - CPPUNIT_ASSERT_EQUAL(String("description"), picture2.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("data"), picture2.picture()); - } - } - - void testSaveMultiplePictures() - { - ScopedFileCopy copy("silence-1", ".wma"); - string newname = copy.fileName(); - - { - ASF::File f(newname.c_str()); - ASF::AttributeList values; - ASF::Picture picture; - picture.setMimeType("image/jpeg"); - picture.setType(ASF::Picture::FrontCover); - picture.setDescription("description"); - picture.setPicture("data"); - values.append(ASF::Attribute(picture)); - ASF::Picture picture2; - picture2.setMimeType("image/png"); - picture2.setType(ASF::Picture::BackCover); - picture2.setDescription("back cover"); - picture2.setPicture("PNG data"); - values.append(ASF::Attribute(picture2)); - f.tag()->setAttribute("WM/Picture", values); - f.save(); - } - { - ASF::File f(newname.c_str()); - ASF::AttributeList values2 = f.tag()->attribute("WM/Picture"); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, values2.size()); - ASF::Picture picture3 = values2[1].toPicture(); - CPPUNIT_ASSERT(picture3.isValid()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), picture3.mimeType()); - CPPUNIT_ASSERT_EQUAL(ASF::Picture::FrontCover, picture3.type()); - CPPUNIT_ASSERT_EQUAL(String("description"), picture3.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("data"), picture3.picture()); - ASF::Picture picture4 = values2[0].toPicture(); - CPPUNIT_ASSERT(picture4.isValid()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), picture4.mimeType()); - CPPUNIT_ASSERT_EQUAL(ASF::Picture::BackCover, picture4.type()); - CPPUNIT_ASSERT_EQUAL(String("back cover"), picture4.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("PNG data"), picture4.picture()); - } - } - - void testProperties() - { - ASF::File f(TEST_FILE_PATH_C("silence-1.wma")); - - PropertyMap tags = f.properties(); - - tags["TRACKNUMBER"] = StringList("2"); - tags["DISCNUMBER"] = StringList("3"); - tags["BPM"] = StringList("123"); - tags["ARTIST"] = StringList("Foo Bar"); - f.setProperties(tags); - - tags = f.properties(); - - CPPUNIT_ASSERT_EQUAL(String("Foo Bar"), f.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(StringList("Foo Bar"), tags["ARTIST"]); - - CPPUNIT_ASSERT(f.tag()->contains("WM/BeatsPerMinute")); - CPPUNIT_ASSERT_EQUAL(1u, f.tag()->attributeListMap()["WM/BeatsPerMinute"].size()); - CPPUNIT_ASSERT_EQUAL(String("123"), f.tag()->attribute("WM/BeatsPerMinute").front().toString()); - CPPUNIT_ASSERT_EQUAL(StringList("123"), tags["BPM"]); - - CPPUNIT_ASSERT(f.tag()->contains("WM/TrackNumber")); - CPPUNIT_ASSERT_EQUAL(1u, f.tag()->attributeListMap()["WM/TrackNumber"].size()); - CPPUNIT_ASSERT_EQUAL(String("2"), f.tag()->attribute("WM/TrackNumber").front().toString()); - CPPUNIT_ASSERT_EQUAL(StringList("2"), tags["TRACKNUMBER"]); - - CPPUNIT_ASSERT(f.tag()->contains("WM/PartOfSet")); - CPPUNIT_ASSERT_EQUAL(1u, f.tag()->attributeListMap()["WM/PartOfSet"].size()); - CPPUNIT_ASSERT_EQUAL(String("3"), f.tag()->attribute("WM/PartOfSet").front().toString()); - CPPUNIT_ASSERT_EQUAL(StringList("3"), tags["DISCNUMBER"]); - } - - void testPropertiesAllSupported() - { - PropertyMap tags; - tags["ACOUSTID_ID"] = StringList("Acoustid ID"); - tags["ACOUSTID_FINGERPRINT"] = StringList("Acoustid Fingerprint"); - tags["ALBUM"] = StringList("Album"); - tags["ALBUMARTIST"] = StringList("Album Artist"); - tags["ALBUMARTISTSORT"] = StringList("Album Artist Sort"); - tags["ALBUMSORT"] = StringList("Album Sort"); - tags["ARTIST"] = StringList("Artist"); - tags["ARTISTS"] = StringList("Artists"); - tags["ARTISTSORT"] = StringList("Artist Sort"); - tags["ASIN"] = StringList("ASIN"); - tags["BARCODE"] = StringList("Barcode"); - tags["BPM"] = StringList("123"); - tags["CATALOGNUMBER"] = StringList("Catalog Number"); - tags["COMMENT"] = StringList("Comment"); - tags["COMPOSER"] = StringList("Composer"); - tags["CONDUCTOR"] = StringList("Conductor"); - tags["COPYRIGHT"] = StringList("2021 Copyright"); - tags["DATE"] = StringList("2021-01-03 12:29:23"); - tags["DISCNUMBER"] = StringList("3/5"); - tags["DISCSUBTITLE"] = StringList("Disc Subtitle"); - tags["ENCODEDBY"] = StringList("Encoded by"); - tags["GENRE"] = StringList("Genre"); - tags["GROUPING"] = StringList("Grouping"); - tags["ISRC"] = StringList("UKAAA0500001"); - tags["LABEL"] = StringList("Label"); - tags["LANGUAGE"] = StringList("eng"); - tags["LYRICIST"] = StringList("Lyricist"); - tags["LYRICS"] = StringList("Lyrics"); - tags["MEDIA"] = StringList("Media"); - tags["MOOD"] = StringList("Mood"); - tags["MUSICBRAINZ_ALBUMARTISTID"] = StringList("MusicBrainz_AlbumartistID"); - tags["MUSICBRAINZ_ALBUMID"] = StringList("MusicBrainz_AlbumID"); - tags["MUSICBRAINZ_ARTISTID"] = StringList("MusicBrainz_ArtistID"); - tags["MUSICBRAINZ_RELEASEGROUPID"] = StringList("MusicBrainz_ReleasegroupID"); - tags["MUSICBRAINZ_RELEASETRACKID"] = StringList("MusicBrainz_ReleasetrackID"); - tags["MUSICBRAINZ_TRACKID"] = StringList("MusicBrainz_TrackID"); - tags["MUSICBRAINZ_WORKID"] = StringList("MusicBrainz_WorkID"); - tags["MUSICIP_PUID"] = StringList("MusicIP PUID"); - tags["ORIGINALDATE"] = StringList("2021-01-03 13:52:19"); - tags["PRODUCER"] = StringList("Producer"); - tags["RELEASECOUNTRY"] = StringList("Release Country"); - tags["RELEASESTATUS"] = StringList("Release Status"); - tags["RELEASETYPE"] = StringList("Release Type"); - tags["REMIXER"] = StringList("Remixer"); - tags["SCRIPT"] = StringList("Script"); - tags["SUBTITLE"] = StringList("Subtitle"); - tags["TITLE"] = StringList("Title"); - tags["TITLESORT"] = StringList("Title Sort"); - tags["TRACKNUMBER"] = StringList("2/4"); - - ScopedFileCopy copy("silence-1", ".wma"); - { - ASF::File f(copy.fileName().c_str()); - ASF::Tag *asfTag = f.tag(); - asfTag->setTitle(""); - asfTag->attributeListMap().clear(); - f.save(); - } - { - ASF::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - CPPUNIT_ASSERT(properties.isEmpty()); - f.setProperties(tags); - f.save(); - } - { - const ASF::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - if (tags != properties) { - CPPUNIT_ASSERT_EQUAL(tags.toString(), properties.toString()); - } - CPPUNIT_ASSERT(tags == properties); - } - } - - void testRepeatedSave() - { - ScopedFileCopy copy("silence-1", ".wma"); - - { - ASF::File f(copy.fileName().c_str()); - f.tag()->setTitle(longText(128 * 1024)); - f.save(); - CPPUNIT_ASSERT_EQUAL(297578L, f.length()); - f.tag()->setTitle(longText(16 * 1024)); - f.save(); - CPPUNIT_ASSERT_EQUAL(68202L, f.length()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestASF); diff --git a/Frameworks/TagLib/taglib/tests/test_bytevector.cpp b/Frameworks/TagLib/taglib/tests/test_bytevector.cpp deleted file mode 100644 index 26cde765f..000000000 --- a/Frameworks/TagLib/taglib/tests/test_bytevector.cpp +++ /dev/null @@ -1,599 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#define _USE_MATH_DEFINES -#include <cmath> -#include <tbytevector.h> -#include <tbytevectorlist.h> -#include <cppunit/extensions/HelperMacros.h> - -using namespace std; -using namespace TagLib; - -class TestByteVector : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestByteVector); - CPPUNIT_TEST(testByteVector); - CPPUNIT_TEST(testFind1); - CPPUNIT_TEST(testFind2); - CPPUNIT_TEST(testFind3); - CPPUNIT_TEST(testRfind1); - CPPUNIT_TEST(testRfind2); - CPPUNIT_TEST(testRfind3); - CPPUNIT_TEST(testToHex); - CPPUNIT_TEST(testIntegerConversion); - CPPUNIT_TEST(testFloatingPointConversion); - CPPUNIT_TEST(testReplace); - CPPUNIT_TEST(testReplaceAndDetach); - CPPUNIT_TEST(testIterator); - CPPUNIT_TEST(testResize); - CPPUNIT_TEST(testAppend1); - CPPUNIT_TEST(testAppend2); - CPPUNIT_TEST(testBase64); - CPPUNIT_TEST_SUITE_END(); - -public: - void testByteVector() - { - ByteVector s1("foo"); - CPPUNIT_ASSERT(ByteVectorList::split(s1, " ").size() == 1); - - ByteVector s2("f"); - CPPUNIT_ASSERT(ByteVectorList::split(s2, " ").size() == 1); - - CPPUNIT_ASSERT(ByteVector().isEmpty()); - CPPUNIT_ASSERT_EQUAL(0U, ByteVector().size()); - CPPUNIT_ASSERT(ByteVector("asdf").clear().isEmpty()); - CPPUNIT_ASSERT_EQUAL(0U, ByteVector("asdf").clear().size()); - CPPUNIT_ASSERT_EQUAL(ByteVector(), ByteVector("asdf").clear()); - - ByteVector i("blah blah"); - ByteVector j("blah"); - CPPUNIT_ASSERT(i.containsAt(j, 5, 0)); - CPPUNIT_ASSERT(i.containsAt(j, 6, 1)); - CPPUNIT_ASSERT(i.containsAt(j, 6, 1, 3)); - - i.clear(); - CPPUNIT_ASSERT(i.isEmpty()); - } - - void testFind1() - { - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO")); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 0)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 1)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 2)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 3)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find("SggO", 4)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 5)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 6)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 7)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find("SggO", 8)); - - // Intentional out-of-bounds access. - ByteVector v("0123456789x"); - v.resize(10); - v.data()[10] = 'x'; - CPPUNIT_ASSERT_EQUAL(-1, v.find("789x", 7)); - } - - void testFind2() - { - CPPUNIT_ASSERT_EQUAL(0, ByteVector("\x01", 1).find("\x01")); - CPPUNIT_ASSERT_EQUAL(0, ByteVector("\x01\x02", 2).find("\x01\x02")); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("\x01", 1).find("\x02")); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("\x01\x02", 2).find("\x01\x03")); - } - - void testFind3() - { - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find('S')); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find('S', 0)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find('S', 1)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find('S', 2)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find('S', 3)); - CPPUNIT_ASSERT_EQUAL(4, ByteVector("....SggO."). find('S', 4)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find('S', 5)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find('S', 6)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find('S', 7)); - CPPUNIT_ASSERT_EQUAL(-1, ByteVector("....SggO."). find('S', 8)); - } - - void testRfind1() - { - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 0)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 1)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 2)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 3)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 4)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 5)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 6)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 7)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS", 8)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind("OggS")); - } - - void testRfind2() - { - ByteVector r0("**************"); - ByteVector r1("OggS**********"); - ByteVector r2("**********OggS"); - ByteVector r3("OggS******OggS"); - ByteVector r4("OggS*OggS*OggS"); - - CPPUNIT_ASSERT_EQUAL(-1, r0.find("OggS")); - CPPUNIT_ASSERT_EQUAL(-1, r0.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(0, r1.find("OggS")); - CPPUNIT_ASSERT_EQUAL(0, r1.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r2.find("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r2.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(0, r3.find("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r3.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r4.rfind("OggS")); - CPPUNIT_ASSERT_EQUAL(10, r4.rfind("OggS", 0)); - CPPUNIT_ASSERT_EQUAL(5, r4.rfind("OggS", 7)); - CPPUNIT_ASSERT_EQUAL(10, r4.rfind("OggS", 12)); - } - - void testRfind3() - { - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 0)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 1)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 2)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 3)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 4)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 5)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 6)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 7)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O', 8)); - CPPUNIT_ASSERT_EQUAL(1, ByteVector(".OggS....").rfind('O')); - } - - void testToHex() - { - ByteVector v("\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f", 16); - - CPPUNIT_ASSERT_EQUAL(ByteVector("f0e1d2c3b4a5968778695a4b3c2d1e0f"), v.toHex()); - } - - void testIntegerConversion() - { - const ByteVector data("\x00\xff\x01\xff\x00\xff\x01\xff\x00\xff\x01\xff\x00\xff", 14); - - CPPUNIT_ASSERT_EQUAL((short)0x00ff, data.toShort()); - CPPUNIT_ASSERT_EQUAL((short)0xff00, data.toShort(false)); - CPPUNIT_ASSERT_EQUAL((short)0xff01, data.toShort(5U)); - CPPUNIT_ASSERT_EQUAL((short)0x01ff, data.toShort(5U, false)); - CPPUNIT_ASSERT_EQUAL((short)0xff, data.toShort(13U)); - CPPUNIT_ASSERT_EQUAL((short)0xff, data.toShort(13U, false)); - - CPPUNIT_ASSERT_EQUAL((unsigned short)0x00ff, data.toUShort()); - CPPUNIT_ASSERT_EQUAL((unsigned short)0xff00, data.toUShort(false)); - CPPUNIT_ASSERT_EQUAL((unsigned short)0xff01, data.toUShort(5U)); - CPPUNIT_ASSERT_EQUAL((unsigned short)0x01ff, data.toUShort(5U, false)); - CPPUNIT_ASSERT_EQUAL((unsigned short)0xff, data.toUShort(13U)); - CPPUNIT_ASSERT_EQUAL((unsigned short)0xff, data.toUShort(13U, false)); - - CPPUNIT_ASSERT_EQUAL(0x00ff01ffU, data.toUInt()); - CPPUNIT_ASSERT_EQUAL(0xff01ff00U, data.toUInt(false)); - CPPUNIT_ASSERT_EQUAL(0xff01ff00U, data.toUInt(5U)); - CPPUNIT_ASSERT_EQUAL(0x00ff01ffU, data.toUInt(5U, false)); - CPPUNIT_ASSERT_EQUAL(0x00ffU, data.toUInt(12U)); - CPPUNIT_ASSERT_EQUAL(0xff00U, data.toUInt(12U, false)); - - CPPUNIT_ASSERT_EQUAL(0x00ff01U, data.toUInt(0U, 3U)); - CPPUNIT_ASSERT_EQUAL(0x01ff00U, data.toUInt(0U, 3U, false)); - CPPUNIT_ASSERT_EQUAL(0xff01ffU, data.toUInt(5U, 3U)); - CPPUNIT_ASSERT_EQUAL(0xff01ffU, data.toUInt(5U, 3U, false)); - CPPUNIT_ASSERT_EQUAL(0x00ffU, data.toUInt(12U, 3U)); - CPPUNIT_ASSERT_EQUAL(0xff00U, data.toUInt(12U, 3U, false)); - - CPPUNIT_ASSERT_EQUAL((long long)0x00ff01ff00ff01ffULL, data.toLongLong()); - CPPUNIT_ASSERT_EQUAL((long long)0xff01ff00ff01ff00ULL, data.toLongLong(false)); - CPPUNIT_ASSERT_EQUAL((long long)0xff01ff00ff01ff00ULL, data.toLongLong(5U)); - CPPUNIT_ASSERT_EQUAL((long long)0x00ff01ff00ff01ffULL, data.toLongLong(5U, false)); - CPPUNIT_ASSERT_EQUAL((long long)0x00ffU, data.toLongLong(12U)); - CPPUNIT_ASSERT_EQUAL((long long)0xff00U, data.toLongLong(12U, false)); -} - - void testFloatingPointConversion() - { - const double Tolerance = 1.0e-7; - - const ByteVector pi32le("\xdb\x0f\x49\x40", 4); - CPPUNIT_ASSERT(std::abs(pi32le.toFloat32LE(0) - M_PI) < Tolerance); - CPPUNIT_ASSERT_EQUAL(pi32le, ByteVector::fromFloat32LE(pi32le.toFloat32LE(0))); - - const ByteVector pi32be("\x40\x49\x0f\xdb", 4); - CPPUNIT_ASSERT(std::abs(pi32be.toFloat32BE(0) - M_PI) < Tolerance); - CPPUNIT_ASSERT_EQUAL(pi32be, ByteVector::fromFloat32BE(pi32be.toFloat32BE(0))); - - const ByteVector pi64le("\x18\x2d\x44\x54\xfb\x21\x09\x40", 8); - CPPUNIT_ASSERT(std::abs(pi64le.toFloat64LE(0) - M_PI) < Tolerance); - CPPUNIT_ASSERT_EQUAL(pi64le, ByteVector::fromFloat64LE(pi64le.toFloat64LE(0))); - - const ByteVector pi64be("\x40\x09\x21\xfb\x54\x44\x2d\x18", 8); - CPPUNIT_ASSERT(std::abs(pi64be.toFloat64BE(0) - M_PI) < Tolerance); - CPPUNIT_ASSERT_EQUAL(pi64be, ByteVector::fromFloat64BE(pi64be.toFloat64BE(0))); - - const ByteVector pi80le("\x00\xc0\x68\x21\xa2\xda\x0f\xc9\x00\x40", 10); - CPPUNIT_ASSERT(std::abs(pi80le.toFloat80LE(0) - M_PI) < Tolerance); - - const ByteVector pi80be("\x40\x00\xc9\x0f\xda\xa2\x21\x68\xc0\x00", 10); - CPPUNIT_ASSERT(std::abs(pi80be.toFloat80BE(0) - M_PI) < Tolerance); - } - - void testReplace() - { - { - ByteVector a("abcdabf"); - a.replace(ByteVector(""), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("foobartoolong"), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("xx"), ByteVector("yy")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("a"), ByteVector("x")); - CPPUNIT_ASSERT_EQUAL(ByteVector("xbcdxbf"), a); - a.replace(ByteVector("x"), ByteVector("a")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace('a', 'x'); - CPPUNIT_ASSERT_EQUAL(ByteVector("xbcdxbf"), a); - a.replace('x', 'a'); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("ab"), ByteVector("xy")); - CPPUNIT_ASSERT_EQUAL(ByteVector("xycdxyf"), a); - a.replace(ByteVector("xy"), ByteVector("ab")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("a"), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("<a>bcd<a>bf"), a); - a.replace(ByteVector("<a>"), ByteVector("a")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabf"); - a.replace(ByteVector("b"), ByteVector("<b>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("a<b>cda<b>f"), a); - a.replace(ByteVector("<b>"), ByteVector("b")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), a); - } - { - ByteVector a("abcdabc"); - a.replace(ByteVector("c"), ByteVector("<c>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("ab<c>dab<c>"), a); - a.replace(ByteVector("<c>"), ByteVector("c")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabc"), a); - } - { - ByteVector a("abcdaba"); - a.replace(ByteVector("a"), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("<a>bcd<a>b<a>"), a); - a.replace(ByteVector("<a>"), ByteVector("a")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdaba"), a); - } - } - - void testReplaceAndDetach() - { - { - ByteVector a("abcdabf"); - ByteVector b = a; - a.replace(ByteVector("a"), ByteVector("x")); - CPPUNIT_ASSERT_EQUAL(ByteVector("xbcdxbf"), a); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), b); - } - { - ByteVector a("abcdabf"); - ByteVector b = a; - a.replace('a', 'x'); - CPPUNIT_ASSERT_EQUAL(ByteVector("xbcdxbf"), a); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), b); - } - { - ByteVector a("abcdabf"); - ByteVector b = a; - a.replace(ByteVector("ab"), ByteVector("xy")); - CPPUNIT_ASSERT_EQUAL(ByteVector("xycdxyf"), a); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), b); - } - { - ByteVector a("abcdabf"); - ByteVector b = a; - a.replace(ByteVector("a"), ByteVector("<a>")); - CPPUNIT_ASSERT_EQUAL(ByteVector("<a>bcd<a>bf"), a); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabf"), b); - } - { - ByteVector a("ab<c>dab<c>"); - ByteVector b = a; - a.replace(ByteVector("<c>"), ByteVector("c")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcdabc"), a); - CPPUNIT_ASSERT_EQUAL(ByteVector("ab<c>dab<c>"), b); - } - } - - void testIterator() - { - ByteVector v1("taglib"); - ByteVector v2 = v1; - - ByteVector::Iterator it1 = v1.begin(); - ByteVector::Iterator it2 = v2.begin(); - - CPPUNIT_ASSERT_EQUAL('t', *it1); - CPPUNIT_ASSERT_EQUAL('t', *it2); - - std::advance(it1, 4); - std::advance(it2, 4); - *it2 = 'I'; - CPPUNIT_ASSERT_EQUAL('i', *it1); - CPPUNIT_ASSERT_EQUAL('I', *it2); - CPPUNIT_ASSERT_EQUAL(ByteVector("taglib"), v1); - CPPUNIT_ASSERT_EQUAL(ByteVector("taglIb"), v2); - - ByteVector::ReverseIterator it3 = v1.rbegin(); - ByteVector::ReverseIterator it4 = v2.rbegin(); - - CPPUNIT_ASSERT_EQUAL('b', *it3); - CPPUNIT_ASSERT_EQUAL('b', *it4); - - std::advance(it3, 4); - std::advance(it4, 4); - *it4 = 'A'; - CPPUNIT_ASSERT_EQUAL('a', *it3); - CPPUNIT_ASSERT_EQUAL('A', *it4); - CPPUNIT_ASSERT_EQUAL(ByteVector("taglib"), v1); - CPPUNIT_ASSERT_EQUAL(ByteVector("tAglIb"), v2); - - ByteVector v3; - v3 = ByteVector("0123456789").mid(3, 4); - - it1 = v3.begin(); - it2 = v3.end() - 1; - CPPUNIT_ASSERT_EQUAL('3', *it1); - CPPUNIT_ASSERT_EQUAL('6', *it2); - - it3 = v3.rbegin(); - it4 = v3.rend() - 1; - CPPUNIT_ASSERT_EQUAL('6', *it3); - CPPUNIT_ASSERT_EQUAL('3', *it4); - } - - void testResize() - { - ByteVector a = ByteVector("0123456789"); - ByteVector b = a.mid(3, 4); - b.resize(6, 'A'); - CPPUNIT_ASSERT_EQUAL((unsigned int)6, b.size()); - CPPUNIT_ASSERT_EQUAL('6', b[3]); - CPPUNIT_ASSERT_EQUAL('A', b[4]); - CPPUNIT_ASSERT_EQUAL('A', b[5]); - b.resize(10, 'B'); - CPPUNIT_ASSERT_EQUAL((unsigned int)10, b.size()); - CPPUNIT_ASSERT_EQUAL('6', b[3]); - CPPUNIT_ASSERT_EQUAL('B', b[6]); - CPPUNIT_ASSERT_EQUAL('B', b[9]); - b.resize(3, 'C'); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, b.size()); - CPPUNIT_ASSERT_EQUAL(-1, b.find('C')); - b.resize(3); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, b.size()); - - // Check if a and b were properly detached. - - CPPUNIT_ASSERT_EQUAL((unsigned int)10, a.size()); - CPPUNIT_ASSERT_EQUAL('3', a[3]); - CPPUNIT_ASSERT_EQUAL('5', a[5]); - - // Special case that refCount == 1 and d->offset != 0. - - ByteVector c = ByteVector("0123456789").mid(3, 4); - c.resize(6, 'A'); - CPPUNIT_ASSERT_EQUAL((unsigned int)6, c.size()); - CPPUNIT_ASSERT_EQUAL('6', c[3]); - CPPUNIT_ASSERT_EQUAL('A', c[4]); - CPPUNIT_ASSERT_EQUAL('A', c[5]); - c.resize(10, 'B'); - CPPUNIT_ASSERT_EQUAL((unsigned int)10, c.size()); - CPPUNIT_ASSERT_EQUAL('6', c[3]); - CPPUNIT_ASSERT_EQUAL('B', c[6]); - CPPUNIT_ASSERT_EQUAL('B', c[9]); - c.resize(3, 'C'); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, c.size()); - CPPUNIT_ASSERT_EQUAL(-1, c.find('C')); - } - - void testAppend1() - { - ByteVector v1("foo"); - v1.append("bar"); - CPPUNIT_ASSERT_EQUAL(ByteVector("foobar"), v1); - - ByteVector v2("foo"); - v2.append("b"); - CPPUNIT_ASSERT_EQUAL(ByteVector("foob"), v2); - - ByteVector v3; - v3.append("b"); - CPPUNIT_ASSERT_EQUAL(ByteVector("b"), v3); - - ByteVector v4("foo"); - v4.append(v1); - CPPUNIT_ASSERT_EQUAL(ByteVector("foofoobar"), v4); - - ByteVector v5("foo"); - v5.append('b'); - CPPUNIT_ASSERT_EQUAL(ByteVector("foob"), v5); - - ByteVector v6; - v6.append('b'); - CPPUNIT_ASSERT_EQUAL(ByteVector("b"), v6); - - ByteVector v7("taglib"); - ByteVector v8 = v7; - - v7.append("ABC"); - CPPUNIT_ASSERT_EQUAL(ByteVector("taglibABC"), v7); - v7.append('1'); - v7.append('2'); - v7.append('3'); - CPPUNIT_ASSERT_EQUAL(ByteVector("taglibABC123"), v7); - CPPUNIT_ASSERT_EQUAL(ByteVector("taglib"), v8); - } - - void testAppend2() - { - ByteVector a("1234"); - a.append(a); - CPPUNIT_ASSERT_EQUAL(ByteVector("12341234"), a); - } - - void testBase64() - { - ByteVector sempty; - ByteVector t0("a"); // test 1 byte - ByteVector t1("any carnal pleasure."); - ByteVector t2("any carnal pleasure"); - ByteVector t3("any carnal pleasur"); - ByteVector s0("a"); // test 1 byte - ByteVector s1("any carnal pleasure."); - ByteVector s2("any carnal pleasure"); - ByteVector s3("any carnal pleasur"); - ByteVector eempty; - ByteVector e0("YQ=="); - ByteVector e1("YW55IGNhcm5hbCBwbGVhc3VyZS4="); - ByteVector e2("YW55IGNhcm5hbCBwbGVhc3VyZQ=="); - ByteVector e3("YW55IGNhcm5hbCBwbGVhc3Vy"); - - // Encode - CPPUNIT_ASSERT_EQUAL(eempty, sempty.toBase64()); - CPPUNIT_ASSERT_EQUAL(e0, s0.toBase64()); - CPPUNIT_ASSERT_EQUAL(e1, s1.toBase64()); - CPPUNIT_ASSERT_EQUAL(e2, s2.toBase64()); - CPPUNIT_ASSERT_EQUAL(e3, s3.toBase64()); - - // Decode - CPPUNIT_ASSERT_EQUAL(sempty, ByteVector::fromBase64(eempty)); - CPPUNIT_ASSERT_EQUAL(s0, ByteVector::fromBase64(e0)); - CPPUNIT_ASSERT_EQUAL(s1, ByteVector::fromBase64(e1)); - CPPUNIT_ASSERT_EQUAL(s2, ByteVector::fromBase64(e2)); - CPPUNIT_ASSERT_EQUAL(s3, ByteVector::fromBase64(e3)); - - CPPUNIT_ASSERT_EQUAL(t0, ByteVector::fromBase64(s0.toBase64())); - CPPUNIT_ASSERT_EQUAL(t1, ByteVector::fromBase64(s1.toBase64())); - CPPUNIT_ASSERT_EQUAL(t2, ByteVector::fromBase64(s2.toBase64())); - CPPUNIT_ASSERT_EQUAL(t3, ByteVector::fromBase64(s3.toBase64())); - - ByteVector all((unsigned int)256); - - // in order - { - for(int i = 0; i < 256; i++){ - all[i]=(unsigned char)i; - } - ByteVector b64 = all.toBase64(); - ByteVector original = ByteVector::fromBase64(b64); - CPPUNIT_ASSERT_EQUAL(all,original); - } - - // reverse - { - for(int i = 0; i < 256; i++){ - all[i]=(unsigned char)255-i; - } - ByteVector b64 = all.toBase64(); - ByteVector original = ByteVector::fromBase64(b64); - CPPUNIT_ASSERT_EQUAL(all,original); - } - - // all zeroes - { - for(int i = 0; i < 256; i++){ - all[i]=0; - } - ByteVector b64 = all.toBase64(); - ByteVector original = ByteVector::fromBase64(b64); - CPPUNIT_ASSERT_EQUAL(all,original); - } - - // all ones - { - for(int i = 0; i < 256; i++){ - all[i]=(unsigned char)0xff; - } - ByteVector b64 = all.toBase64(); - ByteVector original = ByteVector::fromBase64(b64); - CPPUNIT_ASSERT_EQUAL(all,original); - } - - // Missing end bytes - { - // No missing bytes - ByteVector m0("YW55IGNhcm5hbCBwbGVhc3VyZQ=="); - CPPUNIT_ASSERT_EQUAL(s2,ByteVector::fromBase64(m0)); - - // 1 missing byte - ByteVector m1("YW55IGNhcm5hbCBwbGVhc3VyZQ="); - CPPUNIT_ASSERT_EQUAL(sempty,ByteVector::fromBase64(m1)); - - // 2 missing bytes - ByteVector m2("YW55IGNhcm5hbCBwbGVhc3VyZQ"); - CPPUNIT_ASSERT_EQUAL(sempty,ByteVector::fromBase64(m2)); - - // 3 missing bytes - ByteVector m3("YW55IGNhcm5hbCBwbGVhc3VyZ"); - CPPUNIT_ASSERT_EQUAL(sempty,ByteVector::fromBase64(m3)); - } - - // Grok invalid characters - { - ByteVector invalid("abd\x00\x01\x02\x03\x04"); - CPPUNIT_ASSERT_EQUAL(sempty,ByteVector::fromBase64(invalid)); - } - - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVector); - diff --git a/Frameworks/TagLib/taglib/tests/test_bytevectorlist.cpp b/Frameworks/TagLib/taglib/tests/test_bytevectorlist.cpp deleted file mode 100644 index 6fe325b84..000000000 --- a/Frameworks/TagLib/taglib/tests/test_bytevectorlist.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevector.h> -#include <tbytevectorlist.h> -#include <cppunit/extensions/HelperMacros.h> - -using namespace std; -using namespace TagLib; - -class TestByteVectorList : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestByteVectorList); - CPPUNIT_TEST(testSplitSingleChar); - CPPUNIT_TEST(testSplitSingleChar_2); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSplitSingleChar() - { - ByteVector v("a b"); - - ByteVectorList l = ByteVectorList::split(v, " "); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, l.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("a"), l[0]); - CPPUNIT_ASSERT_EQUAL(ByteVector("b"), l[1]); - } - - void testSplitSingleChar_2() - { - ByteVector v("a"); - - ByteVectorList l = ByteVectorList::split(v, " "); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, l.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("a"), l[0]); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVectorList); diff --git a/Frameworks/TagLib/taglib/tests/test_bytevectorstream.cpp b/Frameworks/TagLib/taglib/tests/test_bytevectorstream.cpp deleted file mode 100644 index f8308c6dc..000000000 --- a/Frameworks/TagLib/taglib/tests/test_bytevectorstream.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tbytevectorstream.h> -#include <cppunit/extensions/HelperMacros.h> - -using namespace std; -using namespace TagLib; - -class TestByteVectorStream : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestByteVectorStream); - CPPUNIT_TEST(testInitialData); - CPPUNIT_TEST(testWriteBlock); - CPPUNIT_TEST(testWriteBlockResize); - CPPUNIT_TEST(testReadBlock); - CPPUNIT_TEST(testRemoveBlock); - CPPUNIT_TEST(testInsert); - CPPUNIT_TEST(testSeekEnd); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testInitialData() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), *stream.data()); - } - - void testWriteBlock() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.seek(1); - stream.writeBlock(ByteVector("xx")); - CPPUNIT_ASSERT_EQUAL(ByteVector("axxd"), *stream.data()); - } - - void testWriteBlockResize() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.seek(3); - stream.writeBlock(ByteVector("xx")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcxx"), *stream.data()); - stream.seek(5); - stream.writeBlock(ByteVector("yy")); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcxxyy"), *stream.data()); - } - - void testReadBlock() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - CPPUNIT_ASSERT_EQUAL(ByteVector("a"), stream.readBlock(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("bc"), stream.readBlock(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("d"), stream.readBlock(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector(""), stream.readBlock(3)); - } - - void testRemoveBlock() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.removeBlock(1, 1); - CPPUNIT_ASSERT_EQUAL(ByteVector("acd"), *stream.data()); - stream.removeBlock(0, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector("d"), *stream.data()); - stream.removeBlock(0, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector(""), *stream.data()); - } - - void testInsert() - { - ByteVector v("abcd"); - ByteVectorStream stream(v); - - stream.insert(ByteVector("xx"), 1, 1); - CPPUNIT_ASSERT_EQUAL(ByteVector("axxcd"), *stream.data()); - stream.insert(ByteVector("yy"), 0, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector("yyxcd"), *stream.data()); - stream.insert(ByteVector("foa"), 3, 2); - CPPUNIT_ASSERT_EQUAL(ByteVector("yyxfoa"), *stream.data()); - stream.insert(ByteVector("123"), 3, 0); - CPPUNIT_ASSERT_EQUAL(ByteVector("yyx123foa"), *stream.data()); - } - - void testSeekEnd() - { - ByteVector v("abcdefghijklmnopqrstuvwxyz"); - ByteVectorStream stream(v); - CPPUNIT_ASSERT_EQUAL(26L, stream.length()); - - stream.seek(-4, IOStream::End); - CPPUNIT_ASSERT_EQUAL(ByteVector("w"), stream.readBlock(1)); - - stream.seek(-25, IOStream::End); - CPPUNIT_ASSERT_EQUAL(ByteVector("b"), stream.readBlock(1)); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVectorStream); diff --git a/Frameworks/TagLib/taglib/tests/test_file.cpp b/Frameworks/TagLib/taglib/tests/test_file.cpp deleted file mode 100644 index ef8c1b108..000000000 --- a/Frameworks/TagLib/taglib/tests/test_file.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tfile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "plainfile.h" -#include "utils.h" - -using namespace TagLib; - -class TestFile : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFile); - CPPUNIT_TEST(testFindInSmallFile); - CPPUNIT_TEST(testRFindInSmallFile); - CPPUNIT_TEST(testSeek); - CPPUNIT_TEST(testTruncate); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testFindInSmallFile() - { - ScopedFileCopy copy("empty", ".ogg"); - std::string name = copy.fileName(); - { - PlainFile file(name.c_str()); - file.seek(0); - file.writeBlock(ByteVector("0123456239", 10)); - file.truncate(10); - } - { - PlainFile file(name.c_str()); - CPPUNIT_ASSERT_EQUAL(10l, file.length()); - - CPPUNIT_ASSERT_EQUAL(2l, file.find(ByteVector("23", 2))); - CPPUNIT_ASSERT_EQUAL(2l, file.find(ByteVector("23", 2), 2)); - CPPUNIT_ASSERT_EQUAL(7l, file.find(ByteVector("23", 2), 3)); - - file.seek(0); - const ByteVector v = file.readBlock(file.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)10, v.size()); - - CPPUNIT_ASSERT_EQUAL((long)v.find("23"), file.find("23")); - CPPUNIT_ASSERT_EQUAL((long)v.find("23", 2), file.find("23", 2)); - CPPUNIT_ASSERT_EQUAL((long)v.find("23", 3), file.find("23", 3)); - } - } - - void testRFindInSmallFile() - { - ScopedFileCopy copy("empty", ".ogg"); - std::string name = copy.fileName(); - { - PlainFile file(name.c_str()); - file.seek(0); - file.writeBlock(ByteVector("0123456239", 10)); - file.truncate(10); - } - { - PlainFile file(name.c_str()); - CPPUNIT_ASSERT_EQUAL(10l, file.length()); - - CPPUNIT_ASSERT_EQUAL(7l, file.rfind(ByteVector("23", 2))); - CPPUNIT_ASSERT_EQUAL(7l, file.rfind(ByteVector("23", 2), 7)); - CPPUNIT_ASSERT_EQUAL(2l, file.rfind(ByteVector("23", 2), 6)); - - file.seek(0); - const ByteVector v = file.readBlock(file.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)10, v.size()); - - CPPUNIT_ASSERT_EQUAL((long)v.rfind("23"), file.rfind("23")); - CPPUNIT_ASSERT_EQUAL((long)v.rfind("23", 7), file.rfind("23", 7)); - CPPUNIT_ASSERT_EQUAL((long)v.rfind("23", 6), file.rfind("23", 6)); - } - } - - void testSeek() - { - ScopedFileCopy copy("empty", ".ogg"); - std::string name = copy.fileName(); - - PlainFile f(name.c_str()); - CPPUNIT_ASSERT_EQUAL((long)0, f.tell()); - CPPUNIT_ASSERT_EQUAL((long)4328, f.length()); - - f.seek(100, File::Beginning); - CPPUNIT_ASSERT_EQUAL((long)100, f.tell()); - f.seek(100, File::Current); - CPPUNIT_ASSERT_EQUAL((long)200, f.tell()); - f.seek(-300, File::Current); - CPPUNIT_ASSERT_EQUAL((long)200, f.tell()); - - f.seek(-100, File::End); - CPPUNIT_ASSERT_EQUAL((long)4228, f.tell()); - f.seek(-100, File::Current); - CPPUNIT_ASSERT_EQUAL((long)4128, f.tell()); - f.seek(300, File::Current); - CPPUNIT_ASSERT_EQUAL((long)4428, f.tell()); - } - - void testTruncate() - { - ScopedFileCopy copy("empty", ".ogg"); - std::string name = copy.fileName(); - - { - PlainFile f(name.c_str()); - CPPUNIT_ASSERT_EQUAL(4328L, f.length()); - - f.truncate(2000); - CPPUNIT_ASSERT_EQUAL(2000L, f.length()); - } - { - PlainFile f(name.c_str()); - CPPUNIT_ASSERT_EQUAL(2000L, f.length()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFile); - diff --git a/Frameworks/TagLib/taglib/tests/test_fileref.cpp b/Frameworks/TagLib/taglib/tests/test_fileref.cpp deleted file mode 100644 index 1fc5def95..000000000 --- a/Frameworks/TagLib/taglib/tests/test_fileref.cpp +++ /dev/null @@ -1,394 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <fileref.h> -#include <oggflacfile.h> -#include <vorbisfile.h> -#include <mpegfile.h> -#include <mpcfile.h> -#include <asffile.h> -#include <speexfile.h> -#include <flacfile.h> -#include <trueaudiofile.h> -#include <mp4file.h> -#include <wavfile.h> -#include <apefile.h> -#include <aifffile.h> -#include <wavpackfile.h> -#include <opusfile.h> -#include <xmfile.h> -#include <tfilestream.h> -#include <tbytevectorstream.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -namespace -{ - class DummyResolver : public FileRef::FileTypeResolver - { - public: - virtual File *createFile(FileName fileName, bool, AudioProperties::ReadStyle) const - { - return new Ogg::Vorbis::File(fileName); - } - }; -} - -class TestFileRef : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFileRef); - CPPUNIT_TEST(testASF); - CPPUNIT_TEST(testMusepack); - CPPUNIT_TEST(testVorbis); - CPPUNIT_TEST(testSpeex); - CPPUNIT_TEST(testFLAC); - CPPUNIT_TEST(testMP3); - CPPUNIT_TEST(testOGA_FLAC); - CPPUNIT_TEST(testOGA_Vorbis); - CPPUNIT_TEST(testMP4_1); - CPPUNIT_TEST(testMP4_2); - CPPUNIT_TEST(testMP4_3); - CPPUNIT_TEST(testMP4_4); - CPPUNIT_TEST(testTrueAudio); - CPPUNIT_TEST(testAPE); - CPPUNIT_TEST(testWav); - CPPUNIT_TEST(testAIFF_1); - CPPUNIT_TEST(testAIFF_2); - CPPUNIT_TEST(testWavPack); - CPPUNIT_TEST(testOpus); - CPPUNIT_TEST(testUnsupported); - CPPUNIT_TEST(testCreate); - CPPUNIT_TEST(testAudioProperties); - CPPUNIT_TEST(testDefaultFileExtensions); - CPPUNIT_TEST(testFileResolver); - CPPUNIT_TEST_SUITE_END(); - -public: - - template <typename T> - void fileRefSave(const string &filename, const string &ext) - { - ScopedFileCopy copy(filename, ext); - string newname = copy.fileName(); - - { - FileRef f(newname.c_str()); - CPPUNIT_ASSERT(dynamic_cast<T*>(f.file())); - CPPUNIT_ASSERT(!f.isNull()); - f.tag()->setArtist("test artist"); - f.tag()->setTitle("test title"); - f.tag()->setGenre("Test!"); - f.tag()->setAlbum("albummmm"); - f.tag()->setComment("a comment"); - f.tag()->setTrack(5); - f.tag()->setYear(2020); - f.save(); - } - { - FileRef f(newname.c_str()); - CPPUNIT_ASSERT(!f.isNull()); - CPPUNIT_ASSERT_EQUAL(f.tag()->artist(), String("test artist")); - CPPUNIT_ASSERT_EQUAL(f.tag()->title(), String("test title")); - CPPUNIT_ASSERT_EQUAL(f.tag()->genre(), String("Test!")); - CPPUNIT_ASSERT_EQUAL(f.tag()->album(), String("albummmm")); - CPPUNIT_ASSERT_EQUAL(f.tag()->comment(), String("a comment")); - CPPUNIT_ASSERT_EQUAL(f.tag()->track(), (unsigned int)5); - CPPUNIT_ASSERT_EQUAL(f.tag()->year(), (unsigned int)2020); - f.tag()->setArtist("ttest artist"); - f.tag()->setTitle("ytest title"); - f.tag()->setGenre("uTest!"); - f.tag()->setAlbum("ialbummmm"); - f.tag()->setComment("another comment"); - f.tag()->setTrack(7); - f.tag()->setYear(2080); - f.save(); - } - { - FileRef f(newname.c_str()); - CPPUNIT_ASSERT(!f.isNull()); - CPPUNIT_ASSERT_EQUAL(f.tag()->artist(), String("ttest artist")); - CPPUNIT_ASSERT_EQUAL(f.tag()->title(), String("ytest title")); - CPPUNIT_ASSERT_EQUAL(f.tag()->genre(), String("uTest!")); - CPPUNIT_ASSERT_EQUAL(f.tag()->album(), String("ialbummmm")); - CPPUNIT_ASSERT_EQUAL(f.tag()->comment(), String("another comment")); - CPPUNIT_ASSERT_EQUAL(f.tag()->track(), (unsigned int)7); - CPPUNIT_ASSERT_EQUAL(f.tag()->year(), (unsigned int)2080); - } - - { - FileStream fs(newname.c_str()); - FileRef f(&fs); - CPPUNIT_ASSERT(dynamic_cast<T*>(f.file())); - CPPUNIT_ASSERT(!f.isNull()); - CPPUNIT_ASSERT_EQUAL(f.tag()->artist(), String("ttest artist")); - CPPUNIT_ASSERT_EQUAL(f.tag()->title(), String("ytest title")); - CPPUNIT_ASSERT_EQUAL(f.tag()->genre(), String("uTest!")); - CPPUNIT_ASSERT_EQUAL(f.tag()->album(), String("ialbummmm")); - CPPUNIT_ASSERT_EQUAL(f.tag()->comment(), String("another comment")); - CPPUNIT_ASSERT_EQUAL(f.tag()->track(), (unsigned int)7); - CPPUNIT_ASSERT_EQUAL(f.tag()->year(), (unsigned int)2080); - f.tag()->setArtist("test artist"); - f.tag()->setTitle("test title"); - f.tag()->setGenre("Test!"); - f.tag()->setAlbum("albummmm"); - f.tag()->setComment("a comment"); - f.tag()->setTrack(5); - f.tag()->setYear(2020); - f.save(); - } - - ByteVector fileContent; - { - FileStream fs(newname.c_str()); - FileRef f(&fs); - CPPUNIT_ASSERT(dynamic_cast<T*>(f.file())); - CPPUNIT_ASSERT(!f.isNull()); - CPPUNIT_ASSERT_EQUAL(f.tag()->artist(), String("test artist")); - CPPUNIT_ASSERT_EQUAL(f.tag()->title(), String("test title")); - CPPUNIT_ASSERT_EQUAL(f.tag()->genre(), String("Test!")); - CPPUNIT_ASSERT_EQUAL(f.tag()->album(), String("albummmm")); - CPPUNIT_ASSERT_EQUAL(f.tag()->comment(), String("a comment")); - CPPUNIT_ASSERT_EQUAL(f.tag()->track(), (unsigned int)5); - CPPUNIT_ASSERT_EQUAL(f.tag()->year(), (unsigned int)2020); - - fs.seek(0); - fileContent = fs.readBlock(fs.length()); - } - - { - ByteVectorStream bs(fileContent); - FileRef f(&bs); - CPPUNIT_ASSERT(dynamic_cast<T*>(f.file())); - CPPUNIT_ASSERT(!f.isNull()); - CPPUNIT_ASSERT_EQUAL(f.tag()->artist(), String("test artist")); - CPPUNIT_ASSERT_EQUAL(f.tag()->title(), String("test title")); - CPPUNIT_ASSERT_EQUAL(f.tag()->genre(), String("Test!")); - CPPUNIT_ASSERT_EQUAL(f.tag()->album(), String("albummmm")); - CPPUNIT_ASSERT_EQUAL(f.tag()->comment(), String("a comment")); - CPPUNIT_ASSERT_EQUAL(f.tag()->track(), (unsigned int)5); - CPPUNIT_ASSERT_EQUAL(f.tag()->year(), (unsigned int)2020); - f.tag()->setArtist("ttest artist"); - f.tag()->setTitle("ytest title"); - f.tag()->setGenre("uTest!"); - f.tag()->setAlbum("ialbummmm"); - f.tag()->setComment("another comment"); - f.tag()->setTrack(7); - f.tag()->setYear(2080); - f.save(); - - fileContent = *bs.data(); - } - { - ByteVectorStream bs(fileContent); - FileRef f(&bs); - CPPUNIT_ASSERT(dynamic_cast<T*>(f.file())); - CPPUNIT_ASSERT(!f.isNull()); - CPPUNIT_ASSERT_EQUAL(f.tag()->artist(), String("ttest artist")); - CPPUNIT_ASSERT_EQUAL(f.tag()->title(), String("ytest title")); - CPPUNIT_ASSERT_EQUAL(f.tag()->genre(), String("uTest!")); - CPPUNIT_ASSERT_EQUAL(f.tag()->album(), String("ialbummmm")); - CPPUNIT_ASSERT_EQUAL(f.tag()->comment(), String("another comment")); - CPPUNIT_ASSERT_EQUAL(f.tag()->track(), (unsigned int)7); - CPPUNIT_ASSERT_EQUAL(f.tag()->year(), (unsigned int)2080); - } - } - - void testMusepack() - { - fileRefSave<MPC::File>("click", ".mpc"); - } - - void testASF() - { - fileRefSave<ASF::File>("silence-1", ".wma"); - } - - void testVorbis() - { - fileRefSave<Ogg::Vorbis::File>("empty", ".ogg"); - } - - void testSpeex() - { - fileRefSave<Ogg::Speex::File>("empty", ".spx"); - } - - void testFLAC() - { - fileRefSave<FLAC::File>("no-tags", ".flac"); - } - - void testMP3() - { - fileRefSave<MPEG::File>("xing", ".mp3"); - } - - void testTrueAudio() - { - fileRefSave<TrueAudio::File>("empty", ".tta"); - } - - void testMP4_1() - { - fileRefSave<MP4::File>("has-tags", ".m4a"); - } - - void testMP4_2() - { - fileRefSave<MP4::File>("no-tags", ".m4a"); - } - - void testMP4_3() - { - fileRefSave<MP4::File>("no-tags", ".3g2"); - } - - void testMP4_4() - { - fileRefSave<MP4::File>("blank_video", ".m4v"); - } - - void testWav() - { - fileRefSave<RIFF::WAV::File>("empty", ".wav"); - } - - void testOGA_FLAC() - { - fileRefSave<Ogg::FLAC::File>("empty_flac", ".oga"); - } - - void testOGA_Vorbis() - { - fileRefSave<Ogg::Vorbis::File>("empty_vorbis", ".oga"); - } - - void testAPE() - { - fileRefSave<APE::File>("mac-399", ".ape"); - } - - void testAIFF_1() - { - fileRefSave<RIFF::AIFF::File>("empty", ".aiff"); - } - - void testAIFF_2() - { - fileRefSave<RIFF::AIFF::File>("alaw", ".aifc"); - } - - void testWavPack() - { - fileRefSave<WavPack::File>("click", ".wv"); - } - - void testOpus() - { - fileRefSave<Ogg::Opus::File>("correctness_gain_silent_output", ".opus"); - } - - void testUnsupported() - { - FileRef f1(TEST_FILE_PATH_C("no-extension")); - CPPUNIT_ASSERT(f1.isNull()); - - FileRef f2(TEST_FILE_PATH_C("unsupported-extension.xx")); - CPPUNIT_ASSERT(f2.isNull()); - } - - void testCreate() - { - // This is deprecated. But worth it to test. - - File *f = FileRef::create(TEST_FILE_PATH_C("empty_vorbis.oga")); - CPPUNIT_ASSERT(dynamic_cast<Ogg::Vorbis::File*>(f)); - delete f; - - f = FileRef::create(TEST_FILE_PATH_C("xing.mp3")); - CPPUNIT_ASSERT(dynamic_cast<MPEG::File*>(f)); - delete f; - - f = FileRef::create(TEST_FILE_PATH_C("test.xm")); - CPPUNIT_ASSERT(dynamic_cast<XM::File*>(f)); - delete f; - } - - void testAudioProperties() - { - FileRef f(TEST_FILE_PATH_C("xing.mp3")); - const AudioProperties *audioProperties = f.audioProperties(); - CPPUNIT_ASSERT_EQUAL(2, audioProperties->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(2064, audioProperties->lengthInMilliseconds()); - } - - void testDefaultFileExtensions() - { - const StringList extensions = FileRef::defaultFileExtensions(); - CPPUNIT_ASSERT(extensions.contains("mpc")); - CPPUNIT_ASSERT(extensions.contains("wma")); - CPPUNIT_ASSERT(extensions.contains("ogg")); - CPPUNIT_ASSERT(extensions.contains("spx")); - CPPUNIT_ASSERT(extensions.contains("flac")); - CPPUNIT_ASSERT(extensions.contains("mp3")); - CPPUNIT_ASSERT(extensions.contains("tta")); - CPPUNIT_ASSERT(extensions.contains("m4a")); - CPPUNIT_ASSERT(extensions.contains("3g2")); - CPPUNIT_ASSERT(extensions.contains("m4v")); - CPPUNIT_ASSERT(extensions.contains("wav")); - CPPUNIT_ASSERT(extensions.contains("oga")); - CPPUNIT_ASSERT(extensions.contains("ape")); - CPPUNIT_ASSERT(extensions.contains("aiff")); - CPPUNIT_ASSERT(extensions.contains("aifc")); - CPPUNIT_ASSERT(extensions.contains("wv")); - CPPUNIT_ASSERT(extensions.contains("opus")); - CPPUNIT_ASSERT(extensions.contains("xm")); - } - - void testFileResolver() - { - { - FileRef f(TEST_FILE_PATH_C("xing.mp3")); - CPPUNIT_ASSERT(dynamic_cast<MPEG::File *>(f.file()) != NULL); - } - - DummyResolver resolver; - FileRef::addFileTypeResolver(&resolver); - - { - FileRef f(TEST_FILE_PATH_C("xing.mp3")); - CPPUNIT_ASSERT(dynamic_cast<Ogg::Vorbis::File *>(f.file()) != NULL); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFileRef); diff --git a/Frameworks/TagLib/taglib/tests/test_flac.cpp b/Frameworks/TagLib/taglib/tests/test_flac.cpp deleted file mode 100644 index c83f1e90c..000000000 --- a/Frameworks/TagLib/taglib/tests/test_flac.cpp +++ /dev/null @@ -1,672 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <flacfile.h> -#include <xiphcomment.h> -#include <id3v1tag.h> -#include <id3v2tag.h> -#include <cppunit/extensions/HelperMacros.h> -#include "plainfile.h" -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestFLAC : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFLAC); - CPPUNIT_TEST(testSignature); - CPPUNIT_TEST(testMultipleCommentBlocks); - CPPUNIT_TEST(testReadPicture); - CPPUNIT_TEST(testAddPicture); - CPPUNIT_TEST(testReplacePicture); - CPPUNIT_TEST(testRemoveAllPictures); - CPPUNIT_TEST(testRepeatedSave1); - CPPUNIT_TEST(testRepeatedSave2); - CPPUNIT_TEST(testRepeatedSave3); - CPPUNIT_TEST(testSaveMultipleValues); - CPPUNIT_TEST(testDict); - CPPUNIT_TEST(testProperties); - CPPUNIT_TEST(testInvalid); - CPPUNIT_TEST(testAudioProperties); - CPPUNIT_TEST(testZeroSizedPadding1); - CPPUNIT_TEST(testZeroSizedPadding2); - CPPUNIT_TEST(testShrinkPadding); - CPPUNIT_TEST(testSaveID3v1); - CPPUNIT_TEST(testUpdateID3v2); - CPPUNIT_TEST(testEmptyID3v2); - CPPUNIT_TEST(testStripTags); - CPPUNIT_TEST(testRemoveXiphField); - CPPUNIT_TEST(testEmptySeekTable); - CPPUNIT_TEST(testPictureStoredAfterComment); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSignature() - { - FLAC::File f(TEST_FILE_PATH_C("no-tags.flac")); - CPPUNIT_ASSERT_EQUAL(ByteVector("a1b141f766e9849ac3db1030a20a3c77"), f.audioProperties()->signature().toHex()); - } - - void testMultipleCommentBlocks() - { - ScopedFileCopy copy("multiple-vc", ".flac"); - string newname = copy.fileName(); - - { - FLAC::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("Artist 1"), f.tag()->artist()); - f.tag()->setArtist("The Artist"); - f.save(); - } - { - FLAC::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("The Artist"), f.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(69L, f.find("Artist")); - CPPUNIT_ASSERT_EQUAL(-1L, f.find("Artist", 70)); - } - } - - void testReadPicture() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - FLAC::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, lst.size()); - - FLAC::Picture *pic = lst.front(); - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::FrontCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(1, pic->width()); - CPPUNIT_ASSERT_EQUAL(1, pic->height()); - CPPUNIT_ASSERT_EQUAL(24, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(0, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("A pixel."), pic->description()); - CPPUNIT_ASSERT_EQUAL((unsigned int)150, pic->data().size()); - } - - void testAddPicture() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - { - FLAC::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, lst.size()); - - FLAC::Picture *newpic = new FLAC::Picture(); - newpic->setType(FLAC::Picture::BackCover); - newpic->setWidth(5); - newpic->setHeight(6); - newpic->setColorDepth(16); - newpic->setNumColors(7); - newpic->setMimeType("image/jpeg"); - newpic->setDescription("new image"); - newpic->setData("JPEG data"); - f.addPicture(newpic); - f.save(); - } - { - FLAC::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, lst.size()); - - FLAC::Picture *pic = lst[0]; - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::FrontCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(1, pic->width()); - CPPUNIT_ASSERT_EQUAL(1, pic->height()); - CPPUNIT_ASSERT_EQUAL(24, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(0, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("A pixel."), pic->description()); - CPPUNIT_ASSERT_EQUAL((unsigned int)150, pic->data().size()); - - pic = lst[1]; - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::BackCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(5, pic->width()); - CPPUNIT_ASSERT_EQUAL(6, pic->height()); - CPPUNIT_ASSERT_EQUAL(16, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(7, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("new image"), pic->description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("JPEG data"), pic->data()); - } - } - - void testReplacePicture() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - { - FLAC::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, lst.size()); - - FLAC::Picture *newpic = new FLAC::Picture(); - newpic->setType(FLAC::Picture::BackCover); - newpic->setWidth(5); - newpic->setHeight(6); - newpic->setColorDepth(16); - newpic->setNumColors(7); - newpic->setMimeType("image/jpeg"); - newpic->setDescription("new image"); - newpic->setData("JPEG data"); - f.removePictures(); - f.addPicture(newpic); - f.save(); - } - { - FLAC::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, lst.size()); - - FLAC::Picture *pic = lst[0]; - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::BackCover, pic->type()); - CPPUNIT_ASSERT_EQUAL(5, pic->width()); - CPPUNIT_ASSERT_EQUAL(6, pic->height()); - CPPUNIT_ASSERT_EQUAL(16, pic->colorDepth()); - CPPUNIT_ASSERT_EQUAL(7, pic->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), pic->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("new image"), pic->description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("JPEG data"), pic->data()); - } - } - - void testRemoveAllPictures() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - { - FLAC::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, lst.size()); - - f.removePictures(); - f.save(); - } - { - FLAC::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)0, lst.size()); - } - } - - void testRepeatedSave1() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - { - FLAC::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("Silence"), f.tag()->title()); - f.tag()->setTitle("NEW TITLE"); - f.save(); - CPPUNIT_ASSERT_EQUAL(String("NEW TITLE"), f.tag()->title()); - f.tag()->setTitle("NEW TITLE 2"); - f.save(); - CPPUNIT_ASSERT_EQUAL(String("NEW TITLE 2"), f.tag()->title()); - } - { - FLAC::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("NEW TITLE 2"), f.tag()->title()); - } - } - - void testRepeatedSave2() - { - ScopedFileCopy copy("no-tags", ".flac"); - - FLAC::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle("0123456789"); - f.save(); - CPPUNIT_ASSERT_EQUAL(5735L, f.length()); - f.save(); - CPPUNIT_ASSERT_EQUAL(5735L, f.length()); - CPPUNIT_ASSERT(f.find("fLaC") >= 0); - } - - void testRepeatedSave3() - { - ScopedFileCopy copy("no-tags", ".flac"); - - FLAC::File f(copy.fileName().c_str()); - f.xiphComment()->setTitle(longText(8 * 1024)); - f.save(); - CPPUNIT_ASSERT_EQUAL(12862L, f.length()); - f.save(); - CPPUNIT_ASSERT_EQUAL(12862L, f.length()); - } - - void testSaveMultipleValues() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - { - FLAC::File f(newname.c_str()); - f.xiphComment(true)->addField("ARTIST", "artist 1", true); - f.xiphComment(true)->addField("ARTIST", "artist 2", false); - f.save(); - } - { - FLAC::File f(newname.c_str()); - Ogg::FieldListMap m = f.xiphComment()->fieldListMap(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, m["ARTIST"].size()); - CPPUNIT_ASSERT_EQUAL(String("artist 1"), m["ARTIST"][0]); - CPPUNIT_ASSERT_EQUAL(String("artist 2"), m["ARTIST"][1]); - } - } - - void testDict() - { - // test unicode & multiple values with dict interface - ScopedFileCopy copy("silence-44-s", ".flac"); - string newname = copy.fileName(); - - { - FLAC::File f(newname.c_str()); - PropertyMap dict; - dict["ARTIST"].append("artøst 1"); - dict["ARTIST"].append("artöst 2"); - f.setProperties(dict); - f.save(); - } - { - FLAC::File f(newname.c_str()); - PropertyMap dict = f.properties(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, dict["ARTIST"].size()); - CPPUNIT_ASSERT_EQUAL(String("artøst 1"), dict["ARTIST"][0]); - CPPUNIT_ASSERT_EQUAL(String("artöst 2"), dict["ARTIST"][1]); - } - } - - void testProperties() - { - PropertyMap tags; - tags["ALBUM"] = StringList("Album"); - tags["ALBUMARTIST"] = StringList("Album Artist"); - tags["ALBUMARTISTSORT"] = StringList("Album Artist Sort"); - tags["ALBUMSORT"] = StringList("Album Sort"); - tags["ARTIST"] = StringList("Artist"); - tags["ARTISTS"] = StringList("Artists"); - tags["ARTISTSORT"] = StringList("Artist Sort"); - tags["ASIN"] = StringList("ASIN"); - tags["BARCODE"] = StringList("Barcode"); - tags["CATALOGNUMBER"] = StringList("Catalog Number 1").append("Catalog Number 2"); - tags["COMMENT"] = StringList("Comment"); - tags["DATE"] = StringList("2021-01-10"); - tags["DISCNUMBER"] = StringList("3"); - tags["DISCTOTAL"] = StringList("5"); - tags["GENRE"] = StringList("Genre"); - tags["ISRC"] = StringList("UKAAA0500001"); - tags["LABEL"] = StringList("Label 1").append("Label 2"); - tags["MEDIA"] = StringList("Media"); - tags["MUSICBRAINZ_ALBUMARTISTID"] = StringList("MusicBrainz_AlbumartistID"); - tags["MUSICBRAINZ_ALBUMID"] = StringList("MusicBrainz_AlbumID"); - tags["MUSICBRAINZ_ARTISTID"] = StringList("MusicBrainz_ArtistID"); - tags["MUSICBRAINZ_RELEASEGROUPID"] = StringList("MusicBrainz_ReleasegroupID"); - tags["MUSICBRAINZ_RELEASETRACKID"] = StringList("MusicBrainz_ReleasetrackID"); - tags["MUSICBRAINZ_TRACKID"] = StringList("MusicBrainz_TrackID"); - tags["ORIGINALDATE"] = StringList("2021-01-09"); - tags["RELEASECOUNTRY"] = StringList("Release Country"); - tags["RELEASESTATUS"] = StringList("Release Status"); - tags["RELEASETYPE"] = StringList("Release Type"); - tags["SCRIPT"] = StringList("Script"); - tags["TITLE"] = StringList("Title"); - tags["TRACKNUMBER"] = StringList("2"); - tags["TRACKTOTAL"] = StringList("4"); - - ScopedFileCopy copy("no-tags", ".flac"); - { - FLAC::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - CPPUNIT_ASSERT(properties.isEmpty()); - f.setProperties(tags); - f.save(); - } - { - const FLAC::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - if (tags != properties) { - CPPUNIT_ASSERT_EQUAL(tags.toString(), properties.toString()); - } - CPPUNIT_ASSERT(tags == properties); - } - } - - void testInvalid() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - PropertyMap map; - map[L"H\x00c4\x00d6"] = String("bla"); - FLAC::File f(copy.fileName().c_str()); - PropertyMap invalid = f.setProperties(map); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, invalid.size()); - CPPUNIT_ASSERT_EQUAL((unsigned int)0, f.properties().size()); - } - - void testAudioProperties() - { - FLAC::File f(TEST_FILE_PATH_C("sinewave.flac")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3550, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(145, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(156556ULL, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL( - ByteVector("\xcf\xe3\xd9\xda\xba\xde\xab\x2c\xbf\x2c\xa2\x35\x27\x4b\x7f\x76"), - f.audioProperties()->signature()); - } - - void testZeroSizedPadding1() - { - ScopedFileCopy copy("zero-sized-padding", ".flac"); - - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - } - - void testZeroSizedPadding2() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - - { - FLAC::File f(copy.fileName().c_str()); - f.xiphComment()->setTitle("ABC"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - f.xiphComment()->setTitle(std::string(3067, 'X').c_str()); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - } - } - - void testShrinkPadding() - { - ScopedFileCopy copy("no-tags", ".flac"); - - { - FLAC::File f(copy.fileName().c_str()); - f.xiphComment()->setTitle(longText(128 * 1024)); - f.save(); - CPPUNIT_ASSERT(f.length() > 128 * 1024); - } - { - FLAC::File f(copy.fileName().c_str()); - f.xiphComment()->setTitle("0123456789"); - f.save(); - CPPUNIT_ASSERT(f.length() < 8 * 1024); - } - } - - void testSaveID3v1() - { - ScopedFileCopy copy("no-tags", ".flac"); - - ByteVector audioStream; - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - CPPUNIT_ASSERT_EQUAL((long)4692, f.length()); - - f.seek(0x0100); - audioStream = f.readBlock(4436); - - f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.save(); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - CPPUNIT_ASSERT_EQUAL((long)4820, f.length()); - - f.seek(0x0100); - CPPUNIT_ASSERT_EQUAL(audioStream, f.readBlock(4436)); - } - } - - void testUpdateID3v2() - { - ScopedFileCopy copy("no-tags", ".flac"); - - { - FLAC::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle("0123456789"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - f.ID3v2Tag()->setTitle("ABCDEFGHIJ"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String("ABCDEFGHIJ"), f.ID3v2Tag()->title()); - } - } - - void testEmptyID3v2() - { - ScopedFileCopy copy("no-tags", ".flac"); - - { - FLAC::File f(copy.fileName().c_str()); - f.ID3v2Tag(true); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - } - } - - void testStripTags() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - - { - FLAC::File f(copy.fileName().c_str()); - f.xiphComment(true)->setTitle("XiphComment Title"); - f.ID3v1Tag(true)->setTitle("ID3v1 Title"); - f.ID3v2Tag(true)->setTitle("ID3v2 Title"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasXiphComment()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String("XiphComment Title"), f.xiphComment()->title()); - CPPUNIT_ASSERT_EQUAL(String("ID3v1 Title"), f.ID3v1Tag()->title()); - CPPUNIT_ASSERT_EQUAL(String("ID3v2 Title"), f.ID3v2Tag()->title()); - f.strip(FLAC::File::ID3v2); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasXiphComment()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String("XiphComment Title"), f.xiphComment()->title()); - CPPUNIT_ASSERT_EQUAL(String("ID3v1 Title"), f.ID3v1Tag()->title()); - f.strip(FLAC::File::ID3v1); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasXiphComment()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String("XiphComment Title"), f.xiphComment()->title()); - f.strip(FLAC::File::XiphComment); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasXiphComment()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT(f.xiphComment()->isEmpty()); - CPPUNIT_ASSERT_EQUAL(String("reference libFLAC 1.1.0 20030126"), f.xiphComment()->vendorID()); - } - } - - void testRemoveXiphField() - { - ScopedFileCopy copy("silence-44-s", ".flac"); - - { - FLAC::File f(copy.fileName().c_str()); - f.xiphComment(true)->setTitle("XiphComment Title"); - f.ID3v2Tag(true)->setTitle("ID3v2 Title"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String("XiphComment Title"), f.xiphComment()->title()); - f.xiphComment()->removeFields("TITLE"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String(), f.xiphComment()->title()); - } - } - - void testEmptySeekTable() - { - ScopedFileCopy copy("empty-seektable", ".flac"); - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - f.xiphComment(true)->setTitle("XiphComment Title"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - f.seek(42); - const ByteVector data = f.readBlock(4); - CPPUNIT_ASSERT_EQUAL(ByteVector("\x03\x00\x00\x00", 4), data); - } - } - - void testPictureStoredAfterComment() - { - // Blank.png from https://commons.wikimedia.org/wiki/File:Blank.png - const unsigned char blankPngData[] = { - 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, - 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, - 0x08, 0x06, 0x00, 0x00, 0x00, 0x9d, 0x74, 0x66, 0x1a, 0x00, 0x00, 0x00, - 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00, - 0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, - 0x61, 0x05, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, - 0x0e, 0xc3, 0x00, 0x00, 0x0e, 0xc3, 0x01, 0xc7, 0x6f, 0xa8, 0x64, 0x00, - 0x00, 0x00, 0x0c, 0x49, 0x44, 0x41, 0x54, 0x18, 0x57, 0x63, 0xc0, 0x01, - 0x18, 0x18, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x82, 0x92, 0x4d, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82 - }; - const ByteVector picData(reinterpret_cast<const char *>(blankPngData), - sizeof(blankPngData)); - - ScopedFileCopy copy("no-tags", ".flac"); - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT(!f.hasXiphComment()); - CPPUNIT_ASSERT(f.pictureList().isEmpty()); - - FLAC::Picture *pic = new FLAC::Picture; - pic->setData(picData); - pic->setType(FLAC::Picture::FrontCover); - pic->setMimeType("image/png"); - pic->setDescription("blank.png"); - pic->setWidth(3); - pic->setHeight(2); - pic->setColorDepth(32); - pic->setNumColors(0); - f.addPicture(pic); - f.xiphComment(true)->setTitle("Title"); - f.save(); - } - { - FLAC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT(f.hasXiphComment()); - const List<FLAC::Picture *> pictures = f.pictureList(); - CPPUNIT_ASSERT_EQUAL(1U, pictures.size()); - CPPUNIT_ASSERT_EQUAL(picData, pictures[0]->data()); - CPPUNIT_ASSERT_EQUAL(FLAC::Picture::FrontCover, pictures[0]->type()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), pictures[0]->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("blank.png"), pictures[0]->description()); - CPPUNIT_ASSERT_EQUAL(3, pictures[0]->width()); - CPPUNIT_ASSERT_EQUAL(2, pictures[0]->height()); - CPPUNIT_ASSERT_EQUAL(32, pictures[0]->colorDepth()); - CPPUNIT_ASSERT_EQUAL(0, pictures[0]->numColors()); - CPPUNIT_ASSERT_EQUAL(String("Title"), f.xiphComment(false)->title()); - } - - const unsigned char expectedHeadData[] = { - 'f', 'L', 'a', 'C', 0x00, 0x00, 0x00, 0x22, 0x12, 0x00, 0x12, 0x00, - 0x00, 0x00, 0x0e, 0x00, 0x00, 0x10, 0x0a, 0xc4, 0x42, 0xf0, 0x00, 0x02, - 0x7a, 0xc0, 0xa1, 0xb1, 0x41, 0xf7, 0x66, 0xe9, 0x84, 0x9a, 0xc3, 0xdb, - 0x10, 0x30, 0xa2, 0x0a, 0x3c, 0x77, 0x04, 0x00, 0x00, 0x17, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 'T', 'I', - 'T', 'L', 'E', '=', 'T', 'i', 't', 'l', 'e', 0x06, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 'i', 'm', 'a', - 'g', 'e', '/', 'p', 'n', 'g', 0x00, 0x00, 0x00, 0x09, 'b', 'l', - 'a', 'n', 'k', '.', 'p', 'n', 'g', 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x77 - }; - ByteVector expectedData(reinterpret_cast<const char *>(expectedHeadData), - sizeof(expectedHeadData)); - expectedData.append(picData); - const ByteVector fileData = PlainFile(copy.fileName().c_str()).readAll(); - CPPUNIT_ASSERT(fileData.startsWith(expectedData)); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFLAC); diff --git a/Frameworks/TagLib/taglib/tests/test_flacpicture.cpp b/Frameworks/TagLib/taglib/tests/test_flacpicture.cpp deleted file mode 100644 index 6613c5981..000000000 --- a/Frameworks/TagLib/taglib/tests/test_flacpicture.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <flacfile.h> -#include <flacmetadatablock.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestFLACPicture : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFLACPicture); - CPPUNIT_TEST(testParse); - CPPUNIT_TEST(testPassThrough); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testParse() - { - const unsigned char data[] = { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2F, 0x70, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x08, 0x41, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x2E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x77, 0x53, 0xDE, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B, 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xD6, 0x0B, 0x1C, 0x0A, 0x36, 0x06, 0x08, 0x44, 0x3D, 0x32, 0x00, 0x00, 0x00, 0x1D, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x49, 0x4D, 0x50, 0xEF, 0x64, 0x25, 0x6E, 0x00, 0x00, 0x00, 0x0C, 0x49, 0x44, 0x41, 0x54, 0x08, 0xD7, 0x63, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x05, 0xFE, 0x02, 0xFE, 0xDC, 0xCC, 0x59, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 }; - const char *pdata = reinterpret_cast<const char*>(data); - - FLAC::Picture pic(ByteVector(pdata, 199)); - - CPPUNIT_ASSERT_EQUAL(3, int(pic.type())); - CPPUNIT_ASSERT_EQUAL(1, pic.width()); - CPPUNIT_ASSERT_EQUAL(1, pic.height()); - CPPUNIT_ASSERT_EQUAL(24, pic.colorDepth()); - CPPUNIT_ASSERT_EQUAL(0, pic.numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/png"), pic.mimeType()); - CPPUNIT_ASSERT_EQUAL(String("A pixel."), pic.description()); - CPPUNIT_ASSERT_EQUAL((unsigned int)150, pic.data().size()); - } - - void testPassThrough() - { - const unsigned char data[] = { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2F, 0x70, 0x6E, 0x67, 0x00, 0x00, 0x00, 0x08, 0x41, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6C, 0x2E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00, 0x90, 0x77, 0x53, 0xDE, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B, 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xD6, 0x0B, 0x1C, 0x0A, 0x36, 0x06, 0x08, 0x44, 0x3D, 0x32, 0x00, 0x00, 0x00, 0x1D, 0x74, 0x45, 0x58, 0x74, 0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x00, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x54, 0x68, 0x65, 0x20, 0x47, 0x49, 0x4D, 0x50, 0xEF, 0x64, 0x25, 0x6E, 0x00, 0x00, 0x00, 0x0C, 0x49, 0x44, 0x41, 0x54, 0x08, 0xD7, 0x63, 0xF8, 0xFF, 0xFF, 0x3F, 0x00, 0x05, 0xFE, 0x02, 0xFE, 0xDC, 0xCC, 0x59, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82 }; - const char *pdata = reinterpret_cast<const char*>(data); - - FLAC::Picture pic(ByteVector(pdata, 199)); - CPPUNIT_ASSERT_EQUAL(ByteVector(pdata, 199), pic.render()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFLACPicture); - diff --git a/Frameworks/TagLib/taglib/tests/test_flacunknownmetadatablock.cpp b/Frameworks/TagLib/taglib/tests/test_flacunknownmetadatablock.cpp deleted file mode 100644 index d08a9bae3..000000000 --- a/Frameworks/TagLib/taglib/tests/test_flacunknownmetadatablock.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <flacunknownmetadatablock.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestFLACUnknownMetadataBlock : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestFLACUnknownMetadataBlock); - CPPUNIT_TEST(testAccessors); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAccessors() - { - ByteVector data("abc\x01", 4); - FLAC::UnknownMetadataBlock block(42, data); - CPPUNIT_ASSERT_EQUAL(42, block.code()); - CPPUNIT_ASSERT_EQUAL(data, block.data()); - CPPUNIT_ASSERT_EQUAL(data, block.render()); - ByteVector data2("xxx", 3); - block.setCode(13); - block.setData(data2); - CPPUNIT_ASSERT_EQUAL(13, block.code()); - CPPUNIT_ASSERT_EQUAL(data2, block.data()); - CPPUNIT_ASSERT_EQUAL(data2, block.render()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestFLACUnknownMetadataBlock); diff --git a/Frameworks/TagLib/taglib/tests/test_id3v1.cpp b/Frameworks/TagLib/taglib/tests/test_id3v1.cpp deleted file mode 100644 index d3f037aa2..000000000 --- a/Frameworks/TagLib/taglib/tests/test_id3v1.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tstring.h> -#include <mpegfile.h> -#include <id3v1tag.h> -#include <id3v1genres.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestID3v1 : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestID3v1); - CPPUNIT_TEST(testStripWhiteSpace); - CPPUNIT_TEST(testGenres); - CPPUNIT_TEST(testRenamedGenres); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testStripWhiteSpace() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - { - MPEG::File f(newname.c_str()); - f.ID3v1Tag(true)->setArtist("Artist "); - f.save(); - } - - { - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT(f.ID3v1Tag(false)); - CPPUNIT_ASSERT_EQUAL(String("Artist"), f.ID3v1Tag(false)->artist()); - } - } - - void testGenres() - { - CPPUNIT_ASSERT_EQUAL(String("Darkwave"), ID3v1::genre(50)); - CPPUNIT_ASSERT_EQUAL(100, ID3v1::genreIndex("Humour")); - CPPUNIT_ASSERT(ID3v1::genreList().contains("Heavy Metal")); - CPPUNIT_ASSERT_EQUAL(79, ID3v1::genreMap()["Hard Rock"]); - } - - void testRenamedGenres() - { - CPPUNIT_ASSERT_EQUAL(String("Bebop"), ID3v1::genre(85)); - CPPUNIT_ASSERT_EQUAL(85, ID3v1::genreIndex("Bebop")); - CPPUNIT_ASSERT_EQUAL(85, ID3v1::genreIndex("Bebob")); - - ID3v1::Tag tag; - tag.setGenre("Hardcore"); - CPPUNIT_ASSERT_EQUAL(String("Hardcore Techno"), tag.genre()); - CPPUNIT_ASSERT_EQUAL(129U, tag.genreNumber()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestID3v1); diff --git a/Frameworks/TagLib/taglib/tests/test_id3v2.cpp b/Frameworks/TagLib/taglib/tests/test_id3v2.cpp deleted file mode 100644 index 521f460a4..000000000 --- a/Frameworks/TagLib/taglib/tests/test_id3v2.cpp +++ /dev/null @@ -1,1613 +0,0 @@ - /*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <id3v2tag.h> -#include <mpegfile.h> -#include <id3v2frame.h> -#include <uniquefileidentifierframe.h> -#include <textidentificationframe.h> -#include <attachedpictureframe.h> -#include <unsynchronizedlyricsframe.h> -#include <synchronizedlyricsframe.h> -#include <eventtimingcodesframe.h> -#include <generalencapsulatedobjectframe.h> -#include <relativevolumeframe.h> -#include <popularimeterframe.h> -#include <urllinkframe.h> -#include <ownershipframe.h> -#include <unknownframe.h> -#include <chapterframe.h> -#include <tableofcontentsframe.h> -#include <commentsframe.h> -#include <podcastframe.h> -#include <privateframe.h> -#include <tdebug.h> -#include <tpropertymap.h> -#include <tzlib.h> -#include <cppunit/extensions/HelperMacros.h> -#include "plainfile.h" -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class PublicFrame : public ID3v2::Frame -{ - public: - PublicFrame() : ID3v2::Frame(ByteVector("XXXX\0\0\0\0\0\0", 10)) {} - String readStringField(const ByteVector &data, String::Type encoding, - int *position = 0) - { return ID3v2::Frame::readStringField(data, encoding, position); } - virtual String toString() const { return String(); } - virtual void parseFields(const ByteVector &) {} - virtual ByteVector renderFields() const { return ByteVector(); } -}; - -class TestID3v2 : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestID3v2); - CPPUNIT_TEST(testUnsynchDecode); - CPPUNIT_TEST(testDowngradeUTF8ForID3v23_1); - CPPUNIT_TEST(testDowngradeUTF8ForID3v23_2); - CPPUNIT_TEST(testUTF16BEDelimiter); - CPPUNIT_TEST(testUTF16Delimiter); - CPPUNIT_TEST(testReadStringField); - CPPUNIT_TEST(testParseAPIC); - CPPUNIT_TEST(testParseAPIC_UTF16_BOM); - CPPUNIT_TEST(testParseAPICv22); - CPPUNIT_TEST(testRenderAPIC); - CPPUNIT_TEST(testDontRender22); - CPPUNIT_TEST(testParseGEOB); - CPPUNIT_TEST(testRenderGEOB); - CPPUNIT_TEST(testPOPMtoString); - CPPUNIT_TEST(testParsePOPM); - CPPUNIT_TEST(testParsePOPMWithoutCounter); - CPPUNIT_TEST(testRenderPOPM); - CPPUNIT_TEST(testPOPMFromFile); - CPPUNIT_TEST(testParseRelativeVolumeFrame); - CPPUNIT_TEST(testRenderRelativeVolumeFrame); - CPPUNIT_TEST(testParseUniqueFileIdentifierFrame); - CPPUNIT_TEST(testParseEmptyUniqueFileIdentifierFrame); - CPPUNIT_TEST(testRenderUniqueFileIdentifierFrame); - CPPUNIT_TEST(testBrokenFrame1); - CPPUNIT_TEST(testItunes24FrameSize); - CPPUNIT_TEST(testParseUrlLinkFrame); - CPPUNIT_TEST(testRenderUrlLinkFrame); - CPPUNIT_TEST(testParseUserUrlLinkFrame); - CPPUNIT_TEST(testRenderUserUrlLinkFrame); - CPPUNIT_TEST(testParseOwnershipFrame); - CPPUNIT_TEST(testRenderOwnershipFrame); - CPPUNIT_TEST(testParseSynchronizedLyricsFrame); - CPPUNIT_TEST(testParseSynchronizedLyricsFrameWithEmptyDescritpion); - CPPUNIT_TEST(testRenderSynchronizedLyricsFrame); - CPPUNIT_TEST(testParseEventTimingCodesFrame); - CPPUNIT_TEST(testRenderEventTimingCodesFrame); - CPPUNIT_TEST(testParseCommentsFrame); - CPPUNIT_TEST(testRenderCommentsFrame); - CPPUNIT_TEST(testParsePodcastFrame); - CPPUNIT_TEST(testRenderPodcastFrame); - CPPUNIT_TEST(testParsePrivateFrame); - CPPUNIT_TEST(testRenderPrivateFrame); - CPPUNIT_TEST(testSaveUTF16Comment); - CPPUNIT_TEST(testUpdateGenre23_1); - CPPUNIT_TEST(testUpdateGenre23_2); - CPPUNIT_TEST(testUpdateGenre23_3); - CPPUNIT_TEST(testUpdateGenre24); - CPPUNIT_TEST(testUpdateDate22); - CPPUNIT_TEST(testDowngradeTo23); - // CPPUNIT_TEST(testUpdateFullDate22); TODO TYE+TDA should be upgraded to TDRC together - CPPUNIT_TEST(testCompressedFrameWithBrokenLength); - CPPUNIT_TEST(testW000); - CPPUNIT_TEST(testPropertyInterface); - CPPUNIT_TEST(testPropertyInterface2); - CPPUNIT_TEST(testPropertiesMovement); - CPPUNIT_TEST(testPropertyGrouping); - CPPUNIT_TEST(testDeleteFrame); - CPPUNIT_TEST(testSaveAndStripID3v1ShouldNotAddFrameFromID3v1ToId3v2); - CPPUNIT_TEST(testParseChapterFrame); - CPPUNIT_TEST(testRenderChapterFrame); - CPPUNIT_TEST(testParseTableOfContentsFrame); - CPPUNIT_TEST(testRenderTableOfContentsFrame); - CPPUNIT_TEST(testShrinkPadding); - CPPUNIT_TEST(testEmptyFrame); - CPPUNIT_TEST(testDuplicateTags); - CPPUNIT_TEST(testParseTOCFrameWithManyChildren); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testUnsynchDecode() - { - MPEG::File f(TEST_FILE_PATH_C("unsynch.id3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT_EQUAL(String("My babe just cares for me"), f.tag()->title()); - } - - void testDowngradeUTF8ForID3v23_1() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - ID3v2::TextIdentificationFrame *f - = new ID3v2::TextIdentificationFrame(ByteVector("TPE1"), String::UTF8); - StringList sl; - sl.append("Foo"); - f->setText(sl); - - MPEG::File file(newname.c_str()); - file.ID3v2Tag(true)->addFrame(f); - file.save(MPEG::File::ID3v2, File::StripOthers, ID3v2::v3); - CPPUNIT_ASSERT_EQUAL(true, file.hasID3v2Tag()); - - ByteVector data = f->render(); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4+4+2+1+6+2), data.size()); - - ID3v2::TextIdentificationFrame f2(data); - CPPUNIT_ASSERT_EQUAL(sl, f2.fieldList()); - CPPUNIT_ASSERT_EQUAL(String::UTF16, f2.textEncoding()); - } - - void testDowngradeUTF8ForID3v23_2() - { - ScopedFileCopy copy("xing", ".mp3"); - - ID3v2::UnsynchronizedLyricsFrame *f - = new ID3v2::UnsynchronizedLyricsFrame(String::UTF8); - f->setText("Foo"); - - MPEG::File file(copy.fileName().c_str()); - file.ID3v2Tag(true)->addFrame(f); - file.save(MPEG::File::ID3v2, File::StripOthers, ID3v2::v3); - CPPUNIT_ASSERT(file.hasID3v2Tag()); - - ByteVector data = f->render(); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4+4+2+1+3+2+2+6+2), data.size()); - - ID3v2::UnsynchronizedLyricsFrame f2(data); - CPPUNIT_ASSERT_EQUAL(String("Foo"), f2.text()); - CPPUNIT_ASSERT_EQUAL(String::UTF16, f2.textEncoding()); - } - - void testUTF16BEDelimiter() - { - ID3v2::TextIdentificationFrame f(ByteVector("TPE1"), String::UTF16BE); - StringList sl; - sl.append("Foo"); - sl.append("Bar"); - f.setText(sl); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4+4+2+1+6+2+6), f.render().size()); - } - - void testUTF16Delimiter() - { - ID3v2::TextIdentificationFrame f(ByteVector("TPE1"), String::UTF16); - StringList sl; - sl.append("Foo"); - sl.append("Bar"); - f.setText(sl); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4+4+2+1+8+2+8), f.render().size()); - } - - void testBrokenFrame1() - { - MPEG::File f(TEST_FILE_PATH_C("broken-tenc.id3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT(!f.ID3v2Tag()->frameListMap().contains("TENC")); - } - - void testReadStringField() - { - PublicFrame f; - ByteVector data("abc\0", 4); - String str = f.readStringField(data, String::Latin1); - CPPUNIT_ASSERT_EQUAL(String("abc"), str); - } - - // http://bugs.kde.org/show_bug.cgi?id=151078 - void testParseAPIC() - { - ID3v2::AttachedPictureFrame f(ByteVector("APIC" - "\x00\x00\x00\x07" - "\x00\x00" - "\x00" - "m\x00" - "\x01" - "d\x00" - "\x00", 17)); - CPPUNIT_ASSERT_EQUAL(String("m"), f.mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::FileIcon, f.type()); - CPPUNIT_ASSERT_EQUAL(String("d"), f.description()); - } - - void testParseAPIC_UTF16_BOM() - { - ID3v2::AttachedPictureFrame f(ByteVector( - "\x41\x50\x49\x43\x00\x02\x0c\x59\x00\x00\x01\x69\x6d\x61\x67\x65" - "\x2f\x6a\x70\x65\x67\x00\x00\xfe\xff\x00\x63\x00\x6f\x00\x76\x00" - "\x65\x00\x72\x00\x2e\x00\x6a\x00\x70\x00\x67\x00\x00\xff\xd8\xff", - 16 * 3)); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), f.mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::Other, f.type()); - CPPUNIT_ASSERT_EQUAL(String("cover.jpg"), f.description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\xd8\xff", 3), f.picture()); - } - - void testParseAPICv22() - { - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("PIC" - "\x00\x00\x08" - "\x00" - "JPG" - "\x01" - "d\x00" - "\x00", 14); - ID3v2::Header header; - header.setMajorVersion(2); - ID3v2::AttachedPictureFrame *frame = - dynamic_cast<TagLib::ID3v2::AttachedPictureFrame *>(factory->createFrame(data, &header)); - - CPPUNIT_ASSERT(frame); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), frame->mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::FileIcon, frame->type()); - CPPUNIT_ASSERT_EQUAL(String("d"), frame->description()); - - delete frame; - } - - void testRenderAPIC() - { - ID3v2::AttachedPictureFrame f; - f.setTextEncoding(String::UTF8); - f.setMimeType("image/png"); - f.setType(ID3v2::AttachedPictureFrame::BackCover); - f.setDescription("Description"); - f.setPicture("PNG data"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("APIC" - "\x00\x00\x00\x20" - "\x00\x00" - "\x03" - "image/png\x00" - "\x04" - "Description\x00" - "PNG data", 42), - f.render()); - } - - void testDontRender22() - { - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("FOO" - "\x00\x00\x08" - "\x00" - "JPG" - "\x01" - "d\x00" - "\x00", 14); - ID3v2::Header header; - header.setMajorVersion(2); - ID3v2::UnknownFrame *frame = - dynamic_cast<TagLib::ID3v2::UnknownFrame*>(factory->createFrame(data, &header)); - - CPPUNIT_ASSERT(frame); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL((unsigned int)1034, tag.render().size()); - } - - // http://bugs.kde.org/show_bug.cgi?id=151078 - void testParseGEOB() - { - ID3v2::GeneralEncapsulatedObjectFrame f(ByteVector("GEOB" - "\x00\x00\x00\x08" - "\x00\x00" - "\x00" - "m\x00" - "f\x00" - "d\x00" - "\x00", 18)); - CPPUNIT_ASSERT_EQUAL(String("m"), f.mimeType()); - CPPUNIT_ASSERT_EQUAL(String("f"), f.fileName()); - CPPUNIT_ASSERT_EQUAL(String("d"), f.description()); - } - - void testRenderGEOB() - { - ID3v2::GeneralEncapsulatedObjectFrame f; - f.setTextEncoding(String::Latin1); - f.setMimeType("application/octet-stream"); - f.setFileName("test.bin"); - f.setDescription("Description"); - f.setObject(ByteVector(3, '\x01')); - CPPUNIT_ASSERT_EQUAL( - ByteVector("GEOB" - "\x00\x00\x00\x32" - "\x00\x00" - "\x00" - "application/octet-stream\x00" - "test.bin\x00" - "Description\x00" - "\x01\x01\x01", 60), - f.render()); - } - - void testParsePOPM() - { - ID3v2::PopularimeterFrame f(ByteVector("POPM" - "\x00\x00\x00\x17" - "\x00\x00" - "email@example.com\x00" - "\x02" - "\x00\x00\x00\x03", 33)); - CPPUNIT_ASSERT_EQUAL(String("email@example.com"), f.email()); - CPPUNIT_ASSERT_EQUAL(2, f.rating()); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, f.counter()); - } - - void testParsePOPMWithoutCounter() - { - ID3v2::PopularimeterFrame f(ByteVector("POPM" - "\x00\x00\x00\x13" - "\x00\x00" - "email@example.com\x00" - "\x02", 29)); - CPPUNIT_ASSERT_EQUAL(String("email@example.com"), f.email()); - CPPUNIT_ASSERT_EQUAL(2, f.rating()); - CPPUNIT_ASSERT_EQUAL((unsigned int)0, f.counter()); - } - - void testRenderPOPM() - { - ID3v2::PopularimeterFrame f; - f.setEmail("email@example.com"); - f.setRating(2); - f.setCounter(3); - CPPUNIT_ASSERT_EQUAL( - ByteVector("POPM" - "\x00\x00\x00\x17" - "\x00\x00" - "email@example.com\x00" - "\x02" - "\x00\x00\x00\x03", 33), - f.render()); - } - - void testPOPMtoString() - { - ID3v2::PopularimeterFrame f; - f.setEmail("email@example.com"); - f.setRating(2); - f.setCounter(3); - CPPUNIT_ASSERT_EQUAL( - String("email@example.com rating=2 counter=3"), f.toString()); - } - - void testPOPMFromFile() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - ID3v2::PopularimeterFrame *f = new ID3v2::PopularimeterFrame(); - f->setEmail("email@example.com"); - f->setRating(200); - f->setCounter(3); - - { - MPEG::File foo(newname.c_str()); - foo.ID3v2Tag()->addFrame(f); - foo.save(); - } - { - MPEG::File bar(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("email@example.com"), dynamic_cast<ID3v2::PopularimeterFrame *>(bar.ID3v2Tag()->frameList("POPM").front())->email()); - CPPUNIT_ASSERT_EQUAL(200, dynamic_cast<ID3v2::PopularimeterFrame *>(bar.ID3v2Tag()->frameList("POPM").front())->rating()); - } - } - - // http://bugs.kde.org/show_bug.cgi?id=150481 - void testParseRelativeVolumeFrame() - { - ID3v2::RelativeVolumeFrame f( - ByteVector("RVA2" // Frame ID - "\x00\x00\x00\x0B" // Frame size - "\x00\x00" // Frame flags - "ident\x00" // Identification - "\x02" // Type of channel - "\x00\x0F" // Volume adjustment - "\x08" // Bits representing peak - "\x45", 21)); // Peak volume - CPPUNIT_ASSERT_EQUAL(String("ident"), f.identification()); - CPPUNIT_ASSERT_EQUAL(15.0f / 512.0f, - f.volumeAdjustment(ID3v2::RelativeVolumeFrame::FrontRight)); - CPPUNIT_ASSERT_EQUAL(static_cast<short>(15), - f.volumeAdjustmentIndex(ID3v2::RelativeVolumeFrame::FrontRight)); - CPPUNIT_ASSERT_EQUAL((unsigned char)8, - f.peakVolume(ID3v2::RelativeVolumeFrame::FrontRight).bitsRepresentingPeak); - CPPUNIT_ASSERT_EQUAL(ByteVector("\x45"), - f.peakVolume(ID3v2::RelativeVolumeFrame::FrontRight).peakVolume); - const List<ID3v2::RelativeVolumeFrame::ChannelType> channels = f.channels(); - CPPUNIT_ASSERT_EQUAL(1U, channels.size()); - CPPUNIT_ASSERT_EQUAL(ID3v2::RelativeVolumeFrame::FrontRight, channels[0]); - } - - void testRenderRelativeVolumeFrame() - { - ID3v2::RelativeVolumeFrame f; - f.setIdentification("ident"); - f.setVolumeAdjustment(15.0f / 512.0f, ID3v2::RelativeVolumeFrame::FrontRight); - ID3v2::RelativeVolumeFrame::PeakVolume peakVolume; - peakVolume.bitsRepresentingPeak = 8; - peakVolume.peakVolume.setData("\x45"); - f.setPeakVolume(peakVolume, ID3v2::RelativeVolumeFrame::FrontRight); - CPPUNIT_ASSERT_EQUAL( - ByteVector("RVA2" - "\x00\x00\x00\x0B" - "\x00\x00" - "ident\x00" - "\x02" - "\x00\x0F" - "\x08" - "\x45", 21), - f.render()); - } - - void testParseUniqueFileIdentifierFrame() - { - ID3v2::UniqueFileIdentifierFrame f( - ByteVector("UFID" // Frame ID - "\x00\x00\x00\x09" // Frame size - "\x00\x00" // Frame flags - "owner\x00" // Owner identifier - "\x00\x01\x02", 19)); // Identifier - CPPUNIT_ASSERT_EQUAL(String("owner"), - f.owner()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\x00\x01\x02", 3), - f.identifier()); - } - - void testParseEmptyUniqueFileIdentifierFrame() - { - ID3v2::UniqueFileIdentifierFrame f( - ByteVector("UFID" // Frame ID - "\x00\x00\x00\x01" // Frame size - "\x00\x00" // Frame flags - "\x00" // Owner identifier - "", 11)); // Identifier - CPPUNIT_ASSERT_EQUAL(String(), - f.owner()); - CPPUNIT_ASSERT_EQUAL(ByteVector(), - f.identifier()); - } - - void testRenderUniqueFileIdentifierFrame() - { - ID3v2::UniqueFileIdentifierFrame f("owner", "\x01\x02\x03"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("UFID" - "\x00\x00\x00\x09" - "\x00\x00" - "owner\x00" - "\x01\x02\x03", 19), - f.render()); - } - - void testParseUrlLinkFrame() - { - ID3v2::UrlLinkFrame f( - ByteVector("WOAF" // Frame ID - "\x00\x00\x00\x12" // Frame size - "\x00\x00" // Frame flags - "http://example.com", 28)); // URL - CPPUNIT_ASSERT_EQUAL(String("http://example.com"), f.url()); - } - - void testRenderUrlLinkFrame() - { - ID3v2::UrlLinkFrame f("WOAF"); - f.setUrl("http://example.com"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("WOAF" // Frame ID - "\x00\x00\x00\x12" // Frame size - "\x00\x00" // Frame flags - "http://example.com", 28), // URL - f.render()); - } - - void testParseUserUrlLinkFrame() - { - ID3v2::UserUrlLinkFrame f( - ByteVector("WXXX" // Frame ID - "\x00\x00\x00\x17" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "foo\x00" // Description - "http://example.com", 33)); // URL - CPPUNIT_ASSERT_EQUAL(String("foo"), f.description()); - CPPUNIT_ASSERT_EQUAL(String("http://example.com"), f.url()); - } - - void testRenderUserUrlLinkFrame() - { - ID3v2::UserUrlLinkFrame f; - f.setDescription("foo"); - f.setUrl("http://example.com"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("WXXX" // Frame ID - "\x00\x00\x00\x17" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "foo\x00" // Description - "http://example.com", 33), // URL - f.render()); - } - - void testParseOwnershipFrame() - { - ID3v2::OwnershipFrame f( - ByteVector("OWNE" // Frame ID - "\x00\x00\x00\x19" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "GBP1.99\x00" // Price paid - "20120905" // Date of purchase - "Beatport", 35)); // Seller - CPPUNIT_ASSERT_EQUAL(String("GBP1.99"), f.pricePaid()); - CPPUNIT_ASSERT_EQUAL(String("20120905"), f.datePurchased()); - CPPUNIT_ASSERT_EQUAL(String("Beatport"), f.seller()); - } - - void testRenderOwnershipFrame() - { - ID3v2::OwnershipFrame f; - f.setPricePaid("GBP1.99"); - f.setDatePurchased("20120905"); - f.setSeller("Beatport"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("OWNE" // Frame ID - "\x00\x00\x00\x19" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "GBP1.99\x00" // Price paid - "20120905" // Date of purchase - "Beatport", 35), // URL - f.render()); - } - - void testParseSynchronizedLyricsFrame() - { - ID3v2::SynchronizedLyricsFrame f( - ByteVector("SYLT" // Frame ID - "\x00\x00\x00\x21" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "eng" // Language - "\x02" // Time stamp format - "\x01" // Content type - "foo\x00" // Content descriptor - "Example\x00" // 1st text - "\x00\x00\x04\xd2" // 1st time stamp - "Lyrics\x00" // 2nd text - "\x00\x00\x11\xd7", 43)); // 2nd time stamp - CPPUNIT_ASSERT_EQUAL(String::Latin1, f.textEncoding()); - CPPUNIT_ASSERT_EQUAL(ByteVector("eng", 3), f.language()); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchronizedLyricsFrame::AbsoluteMilliseconds, - f.timestampFormat()); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchronizedLyricsFrame::Lyrics, f.type()); - CPPUNIT_ASSERT_EQUAL(String("foo"), f.description()); - ID3v2::SynchronizedLyricsFrame::SynchedTextList stl = f.synchedText(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, stl.size()); - CPPUNIT_ASSERT_EQUAL(String("Example"), stl[0].text); - CPPUNIT_ASSERT_EQUAL((unsigned int)1234, stl[0].time); - CPPUNIT_ASSERT_EQUAL(String("Lyrics"), stl[1].text); - CPPUNIT_ASSERT_EQUAL((unsigned int)4567, stl[1].time); - } - - void testParseSynchronizedLyricsFrameWithEmptyDescritpion() - { - ID3v2::SynchronizedLyricsFrame f( - ByteVector("SYLT" // Frame ID - "\x00\x00\x00\x21" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "eng" // Language - "\x02" // Time stamp format - "\x01" // Content type - "\x00" // Content descriptor - "Example\x00" // 1st text - "\x00\x00\x04\xd2" // 1st time stamp - "Lyrics\x00" // 2nd text - "\x00\x00\x11\xd7", 40)); // 2nd time stamp - CPPUNIT_ASSERT_EQUAL(String::Latin1, f.textEncoding()); - CPPUNIT_ASSERT_EQUAL(ByteVector("eng", 3), f.language()); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchronizedLyricsFrame::AbsoluteMilliseconds, - f.timestampFormat()); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchronizedLyricsFrame::Lyrics, f.type()); - CPPUNIT_ASSERT(f.description().isEmpty()); - ID3v2::SynchronizedLyricsFrame::SynchedTextList stl = f.synchedText(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, stl.size()); - CPPUNIT_ASSERT_EQUAL(String("Example"), stl[0].text); - CPPUNIT_ASSERT_EQUAL((unsigned int)1234, stl[0].time); - CPPUNIT_ASSERT_EQUAL(String("Lyrics"), stl[1].text); - CPPUNIT_ASSERT_EQUAL((unsigned int)4567, stl[1].time); - } - - void testRenderSynchronizedLyricsFrame() - { - ID3v2::SynchronizedLyricsFrame f; - f.setTextEncoding(String::Latin1); - f.setLanguage(ByteVector("eng", 3)); - f.setTimestampFormat(ID3v2::SynchronizedLyricsFrame::AbsoluteMilliseconds); - f.setType(ID3v2::SynchronizedLyricsFrame::Lyrics); - f.setDescription("foo"); - ID3v2::SynchronizedLyricsFrame::SynchedTextList stl; - stl.append(ID3v2::SynchronizedLyricsFrame::SynchedText(1234, "Example")); - stl.append(ID3v2::SynchronizedLyricsFrame::SynchedText(4567, "Lyrics")); - f.setSynchedText(stl); - CPPUNIT_ASSERT_EQUAL( - ByteVector("SYLT" // Frame ID - "\x00\x00\x00\x21" // Frame size - "\x00\x00" // Frame flags - "\x00" // Text encoding - "eng" // Language - "\x02" // Time stamp format - "\x01" // Content type - "foo\x00" // Content descriptor - "Example\x00" // 1st text - "\x00\x00\x04\xd2" // 1st time stamp - "Lyrics\x00" // 2nd text - "\x00\x00\x11\xd7", 43), // 2nd time stamp - f.render()); - } - - void testParseEventTimingCodesFrame() - { - ID3v2::EventTimingCodesFrame f( - ByteVector("ETCO" // Frame ID - "\x00\x00\x00\x0b" // Frame size - "\x00\x00" // Frame flags - "\x02" // Time stamp format - "\x02" // 1st event - "\x00\x00\xf3\x5c" // 1st time stamp - "\xfe" // 2nd event - "\x00\x36\xee\x80", 21)); // 2nd time stamp - CPPUNIT_ASSERT_EQUAL(ID3v2::EventTimingCodesFrame::AbsoluteMilliseconds, - f.timestampFormat()); - ID3v2::EventTimingCodesFrame::SynchedEventList sel = f.synchedEvents(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, sel.size()); - CPPUNIT_ASSERT_EQUAL(ID3v2::EventTimingCodesFrame::IntroStart, sel[0].type); - CPPUNIT_ASSERT_EQUAL((unsigned int)62300, sel[0].time); - CPPUNIT_ASSERT_EQUAL(ID3v2::EventTimingCodesFrame::AudioFileEnds, sel[1].type); - CPPUNIT_ASSERT_EQUAL((unsigned int)3600000, sel[1].time); - } - - void testRenderEventTimingCodesFrame() - { - ID3v2::EventTimingCodesFrame f; - f.setTimestampFormat(ID3v2::EventTimingCodesFrame::AbsoluteMilliseconds); - ID3v2::EventTimingCodesFrame::SynchedEventList sel; - sel.append(ID3v2::EventTimingCodesFrame::SynchedEvent(62300, ID3v2::EventTimingCodesFrame::IntroStart)); - sel.append(ID3v2::EventTimingCodesFrame::SynchedEvent(3600000, ID3v2::EventTimingCodesFrame::AudioFileEnds)); - f.setSynchedEvents(sel); - CPPUNIT_ASSERT_EQUAL( - ByteVector("ETCO" // Frame ID - "\x00\x00\x00\x0b" // Frame size - "\x00\x00" // Frame flags - "\x02" // Time stamp format - "\x02" // 1st event - "\x00\x00\xf3\x5c" // 1st time stamp - "\xfe" // 2nd event - "\x00\x36\xee\x80", 21), // 2nd time stamp - f.render()); - } - - void testParseCommentsFrame() - { - ID3v2::CommentsFrame f( - ByteVector("COMM" - "\x00\x00\x00\x14" - "\x00\x00" - "\x03" - "deu" - "Description\x00" - "Text", 30)); - CPPUNIT_ASSERT_EQUAL(String::UTF8, f.textEncoding()); - CPPUNIT_ASSERT_EQUAL(ByteVector("deu"), f.language()); - CPPUNIT_ASSERT_EQUAL(String("Description"), f.description()); - CPPUNIT_ASSERT_EQUAL(String("Text"), f.text()); - } - - void testRenderCommentsFrame() - { - ID3v2::CommentsFrame f; - f.setTextEncoding(String::UTF16); - f.setLanguage("eng"); - f.setDescription("Description"); - f.setText("Text"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("COMM" - "\x00\x00\x00\x28" - "\x00\x00" - "\x01" - "eng" - "\xff\xfe" "D\0e\0s\0c\0r\0i\0p\0t\0i\0o\0n\0" "\x00\x00" - "\xff\xfe" "T\0e\0x\0t\0", 50), - f.render()); - } - - void testParsePodcastFrame() - { - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("PCST" - "\x00\x00\x00\x04" - "\x00\x00" - "\x00\x00\x00\x00", 14); - const ID3v2::Header header; - CPPUNIT_ASSERT(dynamic_cast<ID3v2::PodcastFrame *>( - factory->createFrame(data, &header))); - } - - void testRenderPodcastFrame() - { - ID3v2::PodcastFrame f; - CPPUNIT_ASSERT_EQUAL( - ByteVector("PCST" - "\x00\x00\x00\x04" - "\x00\x00" - "\x00\x00\x00\x00", 14), - f.render()); - } - - void testParsePrivateFrame() - { - ID3v2::PrivateFrame f( - ByteVector("PRIV" - "\x00\x00\x00\x0e" - "\x00\x00" - "WM/Provider\x00" - "TL", 24)); - CPPUNIT_ASSERT_EQUAL(String("WM/Provider"), f.owner()); - CPPUNIT_ASSERT_EQUAL(ByteVector("TL"), f.data()); - } - - void testRenderPrivateFrame() - { - ID3v2::PrivateFrame f; - f.setOwner("WM/Provider"); - f.setData("TL"); - CPPUNIT_ASSERT_EQUAL( - ByteVector("PRIV" - "\x00\x00\x00\x0e" - "\x00\x00" - "WM/Provider\x00" - "TL", 24), - f.render()); - } - - void testItunes24FrameSize() - { - MPEG::File f(TEST_FILE_PATH_C("005411.id3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT(f.ID3v2Tag()->frameListMap().contains("TIT2")); - CPPUNIT_ASSERT_EQUAL(String("Sunshine Superman"), f.ID3v2Tag()->frameListMap()["TIT2"].front()->toString()); - } - - void testSaveUTF16Comment() - { - String::Type defaultEncoding = ID3v2::FrameFactory::instance()->defaultTextEncoding(); - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - ID3v2::FrameFactory::instance()->setDefaultTextEncoding(String::UTF16); - { - MPEG::File foo(newname.c_str()); - foo.strip(); - foo.tag()->setComment("Test comment!"); - foo.save(); - } - { - MPEG::File bar(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("Test comment!"), bar.tag()->comment()); - ID3v2::FrameFactory::instance()->setDefaultTextEncoding(defaultEncoding); - } - } - - void testUpdateGenre23_1() - { - // "Refinement" is the same as the ID3v1 genre - duplicate - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("TCON" // Frame ID - "\x00\x00\x00\x10" // Frame size - "\x00\x00" // Frame flags - "\x00" // Encoding - "(22)Death Metal", 26); // Text - ID3v2::Header header; - header.setMajorVersion(3); - ID3v2::TextIdentificationFrame *frame = - dynamic_cast<TagLib::ID3v2::TextIdentificationFrame*>(factory->createFrame(data, &header)); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, frame->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("Death Metal"), frame->fieldList()[0]); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(String("Death Metal"), tag.genre()); - } - - void testUpdateGenre23_2() - { - // "Refinement" is different from the ID3v1 genre - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("TCON" // Frame ID - "\x00\x00\x00\x0d" // Frame size - "\x00\x00" // Frame flags - "\x00" // Encoding - "(4)Eurodisco", 23); // Text - ID3v2::Header header; - header.setMajorVersion(3); - ID3v2::TextIdentificationFrame *frame = - dynamic_cast<TagLib::ID3v2::TextIdentificationFrame*>(factory->createFrame(data, &header)); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, frame->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("4"), frame->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Eurodisco"), frame->fieldList()[1]); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(String("Disco Eurodisco"), tag.genre()); - } - - void testUpdateGenre23_3() - { - // Multiple references and a refinement - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("TCON" // Frame ID - "\x00\x00\x00\x15" // Frame size - "\x00\x00" // Frame flags - "\x00" // Encoding - "(9)(138)Viking Metal", 31); // Text - ID3v2::Header header; - header.setMajorVersion(3); - ID3v2::TextIdentificationFrame *frame = - dynamic_cast<TagLib::ID3v2::TextIdentificationFrame*>(factory->createFrame(data, &header)); - CPPUNIT_ASSERT_EQUAL(3U, frame->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("9"), frame->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("138"), frame->fieldList()[1]); - CPPUNIT_ASSERT_EQUAL(String("Viking Metal"), frame->fieldList()[2]); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(String("Metal Black Metal Viking Metal"), tag.genre()); - } - - void testUpdateGenre24() - { - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ByteVector data = ByteVector("TCON" // Frame ID - "\x00\x00\x00\x0D" // Frame size - "\x00\x00" // Frame flags - "\0" // Encoding - "14\0Eurodisco", 23); // Text - ID3v2::Header header; - ID3v2::TextIdentificationFrame *frame = - dynamic_cast<TagLib::ID3v2::TextIdentificationFrame*>(factory->createFrame(data, &header)); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, frame->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("14"), frame->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Eurodisco"), frame->fieldList()[1]); - - ID3v2::Tag tag; - tag.addFrame(frame); - CPPUNIT_ASSERT_EQUAL(String("R&B Eurodisco"), tag.genre()); - } - - void testUpdateDate22() - { - MPEG::File f(TEST_FILE_PATH_C("id3v22-tda.mp3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT_EQUAL((unsigned int)2010, f.tag()->year()); - } - - void testUpdateFullDate22() - { - MPEG::File f(TEST_FILE_PATH_C("id3v22-tda.mp3"), false); - CPPUNIT_ASSERT(f.tag()); - CPPUNIT_ASSERT_EQUAL(String("2010-04-03"), f.ID3v2Tag()->frameListMap()["TDRC"].front()->toString()); - } - - void testDowngradeTo23() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - ID3v2::TextIdentificationFrame *tf; - { - MPEG::File foo(newname.c_str()); - tf = new ID3v2::TextIdentificationFrame("TDOR", String::Latin1); - tf->setText("2011-03-16"); - foo.ID3v2Tag()->addFrame(tf); - tf = new ID3v2::TextIdentificationFrame("TDRC", String::Latin1); - tf->setText("2012-04-17T12:01"); - foo.ID3v2Tag()->addFrame(tf); - tf = new ID3v2::TextIdentificationFrame("TMCL", String::Latin1); - tf->setText(StringList().append("Guitar").append("Artist 1").append("Drums").append("Artist 2")); - foo.ID3v2Tag()->addFrame(tf); - tf = new ID3v2::TextIdentificationFrame("TIPL", String::Latin1); - tf->setText(StringList().append("Producer").append("Artist 3").append("Mastering").append("Artist 4")); - foo.ID3v2Tag()->addFrame(tf); - tf = new ID3v2::TextIdentificationFrame("TCON", String::Latin1); - tf->setText(StringList().append("51").append("Noise").append("Power Noise")); - foo.ID3v2Tag()->addFrame(tf); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDRL", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDTG", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TMOO", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TPRO", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOA", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOT", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSST", String::Latin1)); - foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOP", String::Latin1)); - foo.save(MPEG::File::AllTags, File::StripOthers, ID3v2::v3); - } - { - MPEG::File bar(newname.c_str()); - tf = dynamic_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TDOR").front()); - CPPUNIT_ASSERT(tf); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, tf->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("2011"), tf->fieldList().front()); - tf = dynamic_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TDRC").front()); - CPPUNIT_ASSERT(tf); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, tf->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("2012-04-17T12:01"), tf->fieldList().front()); - tf = dynamic_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TIPL").front()); - CPPUNIT_ASSERT(tf); - CPPUNIT_ASSERT_EQUAL((unsigned int)8, tf->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("Guitar"), tf->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("Artist 1"), tf->fieldList()[1]); - CPPUNIT_ASSERT_EQUAL(String("Drums"), tf->fieldList()[2]); - CPPUNIT_ASSERT_EQUAL(String("Artist 2"), tf->fieldList()[3]); - CPPUNIT_ASSERT_EQUAL(String("Producer"), tf->fieldList()[4]); - CPPUNIT_ASSERT_EQUAL(String("Artist 3"), tf->fieldList()[5]); - CPPUNIT_ASSERT_EQUAL(String("Mastering"), tf->fieldList()[6]); - CPPUNIT_ASSERT_EQUAL(String("Artist 4"), tf->fieldList()[7]); - tf = dynamic_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TCON").front()); - CPPUNIT_ASSERT(tf); - CPPUNIT_ASSERT_EQUAL(3U, tf->fieldList().size()); - CPPUNIT_ASSERT_EQUAL(String("51"), tf->fieldList()[0]); - CPPUNIT_ASSERT_EQUAL(String("39"), tf->fieldList()[1]); - CPPUNIT_ASSERT_EQUAL(String("Power Noise"), tf->fieldList()[2]); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TDRL")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TDTG")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TMOO")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TPRO")); -#ifdef NO_ITUNES_HACKS - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOA")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOT")); - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOP")); -#endif - CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSST")); - } - { - const ByteVector expectedId3v23Data( - "ID3" "\x03\x00\x00\x00\x00\x09\x49" - "TSOA" "\x00\x00\x00\x01\x00\x00\x00" - "TSOT" "\x00\x00\x00\x01\x00\x00\x00" - "TSOP" "\x00\x00\x00\x01\x00\x00\x00" - "TORY" "\x00\x00\x00\x05\x00\x00\x00" "2011" - "TYER" "\x00\x00\x00\x05\x00\x00\x00" "2012" - "TDAT" "\x00\x00\x00\x05\x00\x00\x00" "1704" - "TIME" "\x00\x00\x00\x05\x00\x00\x00" "1201" - "IPLS" "\x00\x00\x00\x44\x00\x00\x00" "Guitar" "\x00" - "Artist 1" "\x00" "Drums" "\x00" "Artist 2" "\x00" "Producer" "\x00" - "Artist 3" "\x00" "Mastering" "\x00" "Artist 4" - "TCON" "\x00\x00\x00\x14\x00\x00\x00" "(51)(39)Power Noise", 211); - const ByteVector actualId3v23Data = - PlainFile(newname.c_str()).readBlock(expectedId3v23Data.size()); - CPPUNIT_ASSERT_EQUAL(expectedId3v23Data, actualId3v23Data); - } - - ScopedFileCopy rareFramesCopy("rare_frames", ".mp3"); - - { - MPEG::File f(rareFramesCopy.fileName().c_str()); - f.save(MPEG::File::AllTags, File::StripOthers, ID3v2::v3); - f.seek(f.find("TCON") + 11); - CPPUNIT_ASSERT_EQUAL(ByteVector("(13)"), f.readBlock(4)); - } - } - - void testCompressedFrameWithBrokenLength() - { - MPEG::File f(TEST_FILE_PATH_C("compressed_id3_frame.mp3"), false); - CPPUNIT_ASSERT(f.ID3v2Tag()->frameListMap().contains("APIC")); - - if(zlib::isAvailable()) { - ID3v2::AttachedPictureFrame *frame - = dynamic_cast<TagLib::ID3v2::AttachedPictureFrame*>(f.ID3v2Tag()->frameListMap()["APIC"].front()); - CPPUNIT_ASSERT(frame); - CPPUNIT_ASSERT_EQUAL(String("image/bmp"), frame->mimeType()); - CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::Other, frame->type()); - CPPUNIT_ASSERT_EQUAL(String(""), frame->description()); - CPPUNIT_ASSERT_EQUAL((unsigned int)86414, frame->picture().size()); - } - else { - // Skip the test if ZLIB is not installed. - // The message "Compressed frames are currently not supported." will be displayed. - - ID3v2::UnknownFrame *frame - = dynamic_cast<TagLib::ID3v2::UnknownFrame*>(f.ID3v2Tag()->frameListMap()["APIC"].front()); - CPPUNIT_ASSERT(frame); - } - } - - void testW000() - { - MPEG::File f(TEST_FILE_PATH_C("w000.mp3"), false); - CPPUNIT_ASSERT(f.ID3v2Tag()->frameListMap().contains("W000")); - ID3v2::UrlLinkFrame *frame = - dynamic_cast<TagLib::ID3v2::UrlLinkFrame*>(f.ID3v2Tag()->frameListMap()["W000"].front()); - CPPUNIT_ASSERT(frame); - CPPUNIT_ASSERT_EQUAL(String("lukas.lalinsky@example.com____"), frame->url()); - } - - void testPropertyInterface() - { - ScopedFileCopy copy("rare_frames", ".mp3"); - string newname = copy.fileName(); - MPEG::File f(newname.c_str()); - PropertyMap dict = f.ID3v2Tag(false)->properties(); - CPPUNIT_ASSERT_EQUAL((unsigned int)6, dict.size()); - - CPPUNIT_ASSERT(dict.contains("USERTEXTDESCRIPTION1")); - CPPUNIT_ASSERT(dict.contains("QuodLibet::USERTEXTDESCRIPTION2")); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, dict["USERTEXTDESCRIPTION1"].size()); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, dict["QuodLibet::USERTEXTDESCRIPTION2"].size()); - CPPUNIT_ASSERT_EQUAL(String("userTextData1"), dict["USERTEXTDESCRIPTION1"][0]); - CPPUNIT_ASSERT_EQUAL(String("userTextData2"), dict["USERTEXTDESCRIPTION1"][1]); - CPPUNIT_ASSERT_EQUAL(String("userTextData1"), dict["QuodLibet::USERTEXTDESCRIPTION2"][0]); - CPPUNIT_ASSERT_EQUAL(String("userTextData2"), dict["QuodLibet::USERTEXTDESCRIPTION2"][1]); - - CPPUNIT_ASSERT_EQUAL(String("Pop"), dict["GENRE"].front()); - - CPPUNIT_ASSERT_EQUAL(String("http://a.user.url"), dict["URL:USERURL"].front()); - - CPPUNIT_ASSERT_EQUAL(String("http://a.user.url/with/empty/description"), dict["URL"].front()); - CPPUNIT_ASSERT_EQUAL(String("A COMMENT"), dict["COMMENT"].front()); - - CPPUNIT_ASSERT_EQUAL(1u, dict.unsupportedData().size()); - CPPUNIT_ASSERT_EQUAL(String("UFID/supermihi@web.de"), dict.unsupportedData().front()); - } - - void testPropertyInterface2() - { - ID3v2::Tag tag; - ID3v2::UnsynchronizedLyricsFrame *frame1 = new ID3v2::UnsynchronizedLyricsFrame(); - frame1->setDescription("test"); - frame1->setText("la-la-la test"); - tag.addFrame(frame1); - - ID3v2::UnsynchronizedLyricsFrame *frame2 = new ID3v2::UnsynchronizedLyricsFrame(); - frame2->setDescription(""); - frame2->setText("la-la-la nodescription"); - tag.addFrame(frame2); - - ID3v2::AttachedPictureFrame *frame3 = new ID3v2::AttachedPictureFrame(); - frame3->setDescription("test picture"); - tag.addFrame(frame3); - - ID3v2::TextIdentificationFrame *frame4 = new ID3v2::TextIdentificationFrame("TIPL"); - frame4->setText("single value is invalid for TIPL"); - tag.addFrame(frame4); - - ID3v2::TextIdentificationFrame *frame5 = new ID3v2::TextIdentificationFrame("TMCL"); - StringList tmclData; - tmclData.append("VIOLIN"); - tmclData.append("a violinist"); - tmclData.append("PIANO"); - tmclData.append("a pianist"); - frame5->setText(tmclData); - tag.addFrame(frame5); - - ID3v2::UniqueFileIdentifierFrame *frame6 = new ID3v2::UniqueFileIdentifierFrame("http://musicbrainz.org", "152454b9-19ba-49f3-9fc9-8fc26545cf41"); - tag.addFrame(frame6); - - ID3v2::UniqueFileIdentifierFrame *frame7 = new ID3v2::UniqueFileIdentifierFrame("http://example.com", "123"); - tag.addFrame(frame7); - - ID3v2::UserTextIdentificationFrame *frame8 = new ID3v2::UserTextIdentificationFrame(); - frame8->setDescription("MusicBrainz Album Id"); - frame8->setText("95c454a5-d7e0-4d8f-9900-db04aca98ab3"); - tag.addFrame(frame8); - - PropertyMap properties = tag.properties(); - - CPPUNIT_ASSERT_EQUAL(3u, properties.unsupportedData().size()); - CPPUNIT_ASSERT(properties.unsupportedData().contains("TIPL")); - CPPUNIT_ASSERT(properties.unsupportedData().contains("APIC")); - CPPUNIT_ASSERT(properties.unsupportedData().contains("UFID/http://example.com")); - - CPPUNIT_ASSERT(properties.contains("PERFORMER:VIOLIN")); - CPPUNIT_ASSERT(properties.contains("PERFORMER:PIANO")); - CPPUNIT_ASSERT_EQUAL(String("a violinist"), properties["PERFORMER:VIOLIN"].front()); - CPPUNIT_ASSERT_EQUAL(String("a pianist"), properties["PERFORMER:PIANO"].front()); - - CPPUNIT_ASSERT(properties.contains("LYRICS")); - CPPUNIT_ASSERT(properties.contains("LYRICS:TEST")); - - CPPUNIT_ASSERT(properties.contains("MUSICBRAINZ_TRACKID")); - CPPUNIT_ASSERT_EQUAL(String("152454b9-19ba-49f3-9fc9-8fc26545cf41"), properties["MUSICBRAINZ_TRACKID"].front()); - - CPPUNIT_ASSERT(properties.contains("MUSICBRAINZ_ALBUMID")); - CPPUNIT_ASSERT_EQUAL(String("95c454a5-d7e0-4d8f-9900-db04aca98ab3"), properties["MUSICBRAINZ_ALBUMID"].front()); - - tag.removeUnsupportedProperties(properties.unsupportedData()); - CPPUNIT_ASSERT(tag.frameList("APIC").isEmpty()); - CPPUNIT_ASSERT(tag.frameList("TIPL").isEmpty()); - CPPUNIT_ASSERT_EQUAL((ID3v2::UniqueFileIdentifierFrame *)0, ID3v2::UniqueFileIdentifierFrame::findByOwner(&tag, "http://example.com")); - CPPUNIT_ASSERT_EQUAL(frame6, ID3v2::UniqueFileIdentifierFrame::findByOwner(&tag, "http://musicbrainz.org")); - } - - void testPropertiesMovement() - { - ID3v2::Tag tag; - ID3v2::TextIdentificationFrame *frameMvnm = new ID3v2::TextIdentificationFrame("MVNM"); - frameMvnm->setText("Movement Name"); - tag.addFrame(frameMvnm); - - ID3v2::TextIdentificationFrame *frameMvin = new ID3v2::TextIdentificationFrame("MVIN"); - frameMvin->setText("2/3"); - tag.addFrame(frameMvin); - - PropertyMap properties = tag.properties(); - CPPUNIT_ASSERT(properties.contains("MOVEMENTNAME")); - CPPUNIT_ASSERT(properties.contains("MOVEMENTNUMBER")); - CPPUNIT_ASSERT_EQUAL(String("Movement Name"), properties["MOVEMENTNAME"].front()); - CPPUNIT_ASSERT_EQUAL(String("2/3"), properties["MOVEMENTNUMBER"].front()); - - ByteVector frameDataMvnm("MVNM" - "\x00\x00\x00\x0e" - "\x00\x00" - "\x00" - "Movement Name", 24); - CPPUNIT_ASSERT_EQUAL(frameDataMvnm, frameMvnm->render()); - ByteVector frameDataMvin("MVIN" - "\x00\x00\x00\x04" - "\x00\x00" - "\x00" - "2/3", 14); - CPPUNIT_ASSERT_EQUAL(frameDataMvin, frameMvin->render()); - - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ID3v2::Header header; - ID3v2::TextIdentificationFrame *parsedFrameMvnm = - dynamic_cast<ID3v2::TextIdentificationFrame *>( - factory->createFrame(frameDataMvnm, &header)); - ID3v2::TextIdentificationFrame *parsedFrameMvin = - dynamic_cast<ID3v2::TextIdentificationFrame *>( - factory->createFrame(frameDataMvin, &header)); - CPPUNIT_ASSERT(parsedFrameMvnm); - CPPUNIT_ASSERT(parsedFrameMvin); - CPPUNIT_ASSERT_EQUAL(String("Movement Name"), parsedFrameMvnm->toString()); - CPPUNIT_ASSERT_EQUAL(String("2/3"), parsedFrameMvin->toString()); - - tag.addFrame(parsedFrameMvnm); - tag.addFrame(parsedFrameMvin); - } - - void testPropertyGrouping() - { - ID3v2::Tag tag; - ID3v2::TextIdentificationFrame *frameGrp1 = new ID3v2::TextIdentificationFrame("GRP1"); - frameGrp1->setText("Grouping"); - tag.addFrame(frameGrp1); - - PropertyMap properties = tag.properties(); - CPPUNIT_ASSERT(properties.contains("GROUPING")); - CPPUNIT_ASSERT_EQUAL(String("Grouping"), properties["GROUPING"].front()); - - ByteVector frameDataGrp1("GRP1" - "\x00\x00\x00\x09" - "\x00\x00" - "\x00" - "Grouping", 19); - CPPUNIT_ASSERT_EQUAL(frameDataGrp1, frameGrp1->render()); - - ID3v2::FrameFactory *factory = ID3v2::FrameFactory::instance(); - ID3v2::Header header; - ID3v2::TextIdentificationFrame *parsedFrameGrp1 = - dynamic_cast<ID3v2::TextIdentificationFrame *>( - factory->createFrame(frameDataGrp1, &header)); - CPPUNIT_ASSERT(parsedFrameGrp1); - CPPUNIT_ASSERT_EQUAL(String("Grouping"), parsedFrameGrp1->toString()); - - tag.addFrame(parsedFrameGrp1); - } - - void testDeleteFrame() - { - ScopedFileCopy copy("rare_frames", ".mp3"); - string newname = copy.fileName(); - - { - MPEG::File f(newname.c_str()); - ID3v2::Tag *t = f.ID3v2Tag(); - ID3v2::Frame *frame = t->frameList("TCON")[0]; - CPPUNIT_ASSERT_EQUAL(1u, t->frameList("TCON").size()); - t->removeFrame(frame, true); - f.save(MPEG::File::ID3v2); - } - { - MPEG::File f2(newname.c_str()); - ID3v2::Tag *t = f2.ID3v2Tag(); - CPPUNIT_ASSERT(t->frameList("TCON").isEmpty()); - } - } - - void testSaveAndStripID3v1ShouldNotAddFrameFromID3v1ToId3v2() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - { - MPEG::File foo(newname.c_str()); - foo.tag()->setArtist("Artist"); - foo.save(MPEG::File::ID3v1 | MPEG::File::ID3v2); - } - - { - MPEG::File bar(newname.c_str()); - bar.ID3v2Tag()->removeFrames("TPE1"); - // Should strip ID3v1 here and not add old values to ID3v2 again - bar.save(MPEG::File::ID3v2, File::StripOthers); - } - - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT(!f.ID3v2Tag()->frameListMap().contains("TPE1")); - } - - void testParseChapterFrame() - { - ID3v2::Header header; - - ByteVector chapterData = - ByteVector("CHAP" // Frame ID - "\x00\x00\x00\x20" // Frame size - "\x00\x00" // Frame flags - "\x43\x00" // Element ID ("C") - "\x00\x00\x00\x03" // Start time - "\x00\x00\x00\x05" // End time - "\x00\x00\x00\x02" // Start offset - "\x00\x00\x00\x03", 28); // End offset - ByteVector embeddedFrameData = - ByteVector("TIT2" // Embedded frame ID - "\x00\x00\x00\x04" // Embedded frame size - "\x00\x00" // Embedded frame flags - "\x00" // TIT2 frame text encoding - "CH1", 14); // Chapter title - - ID3v2::ChapterFrame f1(&header, chapterData); - - CPPUNIT_ASSERT_EQUAL(ByteVector("C"), f1.elementID()); - CPPUNIT_ASSERT((unsigned int)0x03 == f1.startTime()); - CPPUNIT_ASSERT((unsigned int)0x05 == f1.endTime()); - CPPUNIT_ASSERT((unsigned int)0x02 == f1.startOffset()); - CPPUNIT_ASSERT((unsigned int)0x03 == f1.endOffset()); - CPPUNIT_ASSERT((unsigned int)0x00 == f1.embeddedFrameList().size()); - - ID3v2::ChapterFrame f2(&header, chapterData + embeddedFrameData); - - CPPUNIT_ASSERT_EQUAL(ByteVector("C"), f2.elementID()); - CPPUNIT_ASSERT((unsigned int)0x03 == f2.startTime()); - CPPUNIT_ASSERT((unsigned int)0x05 == f2.endTime()); - CPPUNIT_ASSERT((unsigned int)0x02 == f2.startOffset()); - CPPUNIT_ASSERT((unsigned int)0x03 == f2.endOffset()); - CPPUNIT_ASSERT((unsigned int)0x01 == f2.embeddedFrameList().size()); - CPPUNIT_ASSERT(f2.embeddedFrameList("TIT2").size() == 1); - CPPUNIT_ASSERT(f2.embeddedFrameList("TIT2")[0]->toString() == "CH1"); - } - - void testRenderChapterFrame() - { - ID3v2::Header header; - ID3v2::ChapterFrame f1(&header, "CHAP"); - f1.setElementID(ByteVector("\x43\x00", 2)); - f1.setStartTime(3); - f1.setEndTime(5); - f1.setStartOffset(2); - f1.setEndOffset(3); - ID3v2::TextIdentificationFrame *eF = new ID3v2::TextIdentificationFrame("TIT2"); - eF->setText("CH1"); - f1.addEmbeddedFrame(eF); - - ByteVector expected = - ByteVector("CHAP" // Frame ID - "\x00\x00\x00\x20" // Frame size - "\x00\x00" // Frame flags - "\x43\x00" // Element ID - "\x00\x00\x00\x03" // Start time - "\x00\x00\x00\x05" // End time - "\x00\x00\x00\x02" // Start offset - "\x00\x00\x00\x03" // End offset - "TIT2" // Embedded frame ID - "\x00\x00\x00\x04" // Embedded frame size - "\x00\x00" // Embedded frame flags - "\x00" // TIT2 frame text encoding - "CH1", 42); // Chapter title - - CPPUNIT_ASSERT_EQUAL(expected, f1.render()); - - f1.setElementID("C"); - - CPPUNIT_ASSERT_EQUAL(expected, f1.render()); - - ID3v2::FrameList frames; - eF = new ID3v2::TextIdentificationFrame("TIT2"); - eF->setText("CH1"); - frames.append(eF); - - ID3v2::ChapterFrame f2(ByteVector("\x43\x00", 2), 3, 5, 2, 3, frames); - CPPUNIT_ASSERT_EQUAL(expected, f2.render()); - - frames.clear(); - eF = new ID3v2::TextIdentificationFrame("TIT2"); - eF->setText("CH1"); - frames.append(eF); - - ID3v2::ChapterFrame f3(ByteVector("C\x00", 2), 3, 5, 2, 3, frames); - CPPUNIT_ASSERT_EQUAL(expected, f3.render()); - - frames.clear(); - eF = new ID3v2::TextIdentificationFrame("TIT2"); - eF->setText("CH1"); - frames.append(eF); - - ID3v2::ChapterFrame f4("C", 3, 5, 2, 3, frames); - CPPUNIT_ASSERT_EQUAL(expected, f4.render()); - - CPPUNIT_ASSERT(!f4.toString().isEmpty()); - - ID3v2::ChapterFrame f5("C", 3, 5, 2, 3); - eF = new ID3v2::TextIdentificationFrame("TIT2"); - eF->setText("CH1"); - f5.addEmbeddedFrame(eF); - CPPUNIT_ASSERT_EQUAL(expected, f5.render()); - } - - void testParseTableOfContentsFrame() - { - ID3v2::Header header; - ID3v2::TableOfContentsFrame f( - &header, - ByteVector("CTOC" // Frame ID - "\x00\x00\x00\x16" // Frame size - "\x00\x00" // Frame flags - "\x54\x00" // Element ID ("T") - "\x01" // CTOC flags - "\x02" // Entry count - "\x43\x00" // First entry ("C") - "\x44\x00" // Second entry ("D") - "TIT2" // Embedded frame ID - "\x00\x00\x00\x04" // Embedded frame size - "\x00\x00" // Embedded frame flags - "\x00" // TIT2 frame text encoding - "TC1", 32)); // Table of contents title - CPPUNIT_ASSERT_EQUAL(ByteVector("T"), f.elementID()); - CPPUNIT_ASSERT(!f.isTopLevel()); - CPPUNIT_ASSERT(f.isOrdered()); - CPPUNIT_ASSERT((unsigned int)0x02 == f.entryCount()); - CPPUNIT_ASSERT_EQUAL(ByteVector("C"), f.childElements()[0]); - CPPUNIT_ASSERT_EQUAL(ByteVector("D"), f.childElements()[1]); - CPPUNIT_ASSERT((unsigned int)0x01 == f.embeddedFrameList().size()); - CPPUNIT_ASSERT(f.embeddedFrameList("TIT2").size() == 1); - CPPUNIT_ASSERT(f.embeddedFrameList("TIT2")[0]->toString() == "TC1"); - - f.removeChildElement("E"); // not existing - CPPUNIT_ASSERT_EQUAL(2U, f.entryCount()); - f.removeChildElement("C"); - CPPUNIT_ASSERT_EQUAL(1U, f.entryCount()); - CPPUNIT_ASSERT_EQUAL(ByteVector("D"), f.childElements()[0]); - - ID3v2::Frame *frame = f.embeddedFrameList("TIT2")[0]; - f.removeEmbeddedFrame(frame); - CPPUNIT_ASSERT(f.embeddedFrameList("TIT2").isEmpty()); - } - - void testRenderTableOfContentsFrame() - { - ID3v2::Header header; - ID3v2::TableOfContentsFrame f(&header, "CTOC"); - f.setElementID(ByteVector("\x54\x00", 2)); - f.setIsTopLevel(false); - f.setIsOrdered(true); - f.addChildElement(ByteVector("\x43\x00", 2)); - f.addChildElement(ByteVector("\x44\x00", 2)); - ID3v2::TextIdentificationFrame *eF = new ID3v2::TextIdentificationFrame("TIT2"); - eF->setText("TC1"); - f.addEmbeddedFrame(eF); - CPPUNIT_ASSERT_EQUAL( - ByteVector("CTOC" // Frame ID - "\x00\x00\x00\x16" // Frame size - "\x00\x00" // Frame flags - "\x54\x00" // Element ID - "\x01" // CTOC flags - "\x02" // Entry count - "\x43\x00" // First entry - "\x44\x00" // Second entry - "TIT2" // Embedded frame ID - "\x00\x00\x00\x04" // Embedded frame size - "\x00\x00" // Embedded frame flags - "\x00" // TIT2 frame text encoding - "TC1", 32), // Table of contents title - f.render()); - } - - void testShrinkPadding() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - { - MPEG::File f(newname.c_str()); - f.ID3v2Tag()->setTitle(longText(64 * 1024)); - f.save(MPEG::File::ID3v2, File::StripOthers); - } - { - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(74789L, f.length()); - f.ID3v2Tag()->setTitle("ABCDEFGHIJ"); - f.save(MPEG::File::ID3v2, File::StripOthers); - } - { - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(9263L, f.length()); - } - } - - void testEmptyFrame() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - { - MPEG::File f(newname.c_str()); - ID3v2::Tag *tag = f.ID3v2Tag(true); - - ID3v2::UrlLinkFrame *frame1 = new ID3v2::UrlLinkFrame( - ByteVector("WOAF\x00\x00\x00\x01\x00\x00\x00", 11)); - tag->addFrame(frame1); - - ID3v2::TextIdentificationFrame *frame2 = new ID3v2::TextIdentificationFrame("TIT2"); - frame2->setText("Title"); - tag->addFrame(frame2); - - f.save(); - } - - { - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag()); - - ID3v2::Tag *tag = f.ID3v2Tag(); - CPPUNIT_ASSERT_EQUAL(String("Title"), tag->title()); - CPPUNIT_ASSERT_EQUAL(true, tag->frameListMap()["WOAF"].isEmpty()); - } - } - - void testDuplicateTags() - { - ScopedFileCopy copy("duplicate_id3v2", ".mp3"); - - ByteVector audioStream; - { - MPEG::File f(copy.fileName().c_str()); - f.seek(f.ID3v2Tag()->header()->completeTagSize()); - audioStream = f.readBlock(2089); - - // duplicate_id3v2.mp3 has duplicate ID3v2 tags. - // Sample rate will be 32000 if we can't skip the second tag. - - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL((unsigned int)8049, f.ID3v2Tag()->header()->completeTagSize()); - - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - - f.ID3v2Tag()->setArtist("Artist A"); - f.save(MPEG::File::ID3v2, File::StripOthers); - } - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL((long)3594, f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)1505, f.ID3v2Tag()->header()->completeTagSize()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f.ID3v2Tag()->artist()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - - f.seek(f.ID3v2Tag()->header()->completeTagSize()); - CPPUNIT_ASSERT_EQUAL(f.readBlock(2089), audioStream); - - } - } - - void testParseTOCFrameWithManyChildren() - { - MPEG::File f(TEST_FILE_PATH_C("toc_many_children.mp3")); - CPPUNIT_ASSERT(f.isValid()); - - ID3v2::Tag *tag = f.ID3v2Tag(); - const ID3v2::FrameList &frames = tag->frameList(); - CPPUNIT_ASSERT_EQUAL(130U, frames.size()); - int i = 0; - for(ID3v2::FrameList::ConstIterator it = frames.begin(); it != frames.end(); - ++it, ++i) { - if(i > 0) { - CPPUNIT_ASSERT_EQUAL(ByteVector("CHAP"), (*it)->frameID()); - const ID3v2::ChapterFrame *chapFrame = - dynamic_cast<const ID3v2::ChapterFrame *>(*it); - CPPUNIT_ASSERT_EQUAL(ByteVector("chapter") + - ByteVector(String::number(i - 1).toCString()), - chapFrame->elementID()); - CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(100 * i), - chapFrame->startTime()); - CPPUNIT_ASSERT_EQUAL(static_cast<unsigned int>(100 * i), - chapFrame->endTime()); - const ID3v2::FrameList &embeddedFrames = chapFrame->embeddedFrameList(); - CPPUNIT_ASSERT_EQUAL(1U, embeddedFrames.size()); - const ID3v2::TextIdentificationFrame *tit2Frame = - dynamic_cast<const ID3v2::TextIdentificationFrame *>( - embeddedFrames.front()); - CPPUNIT_ASSERT(tit2Frame); - CPPUNIT_ASSERT_EQUAL(String("Marker ") + String::number(i), - tit2Frame->fieldList().front()); - } - else { - CPPUNIT_ASSERT_EQUAL(ByteVector("CTOC"), (*it)->frameID()); - const ID3v2::TableOfContentsFrame *ctocFrame = - dynamic_cast<const ID3v2::TableOfContentsFrame *>(*it); - CPPUNIT_ASSERT_EQUAL(ByteVector("toc"), ctocFrame->elementID()); - CPPUNIT_ASSERT(!ctocFrame->isTopLevel()); - CPPUNIT_ASSERT(!ctocFrame->isOrdered()); - CPPUNIT_ASSERT_EQUAL(129U, ctocFrame->entryCount()); - const ID3v2::FrameList &embeddedFrames = ctocFrame->embeddedFrameList(); - CPPUNIT_ASSERT_EQUAL(1U, embeddedFrames.size()); - const ID3v2::TextIdentificationFrame *tit2Frame = - dynamic_cast<const ID3v2::TextIdentificationFrame *>( - embeddedFrames.front()); - CPPUNIT_ASSERT(tit2Frame); - CPPUNIT_ASSERT_EQUAL(StringList("toplevel toc"), tit2Frame->fieldList()); - } - } - - CPPUNIT_ASSERT(!ID3v2::ChapterFrame::findByElementID(tag, "chap2")); - CPPUNIT_ASSERT(ID3v2::ChapterFrame::findByElementID(tag, "chapter2")); - - CPPUNIT_ASSERT(!ID3v2::TableOfContentsFrame::findTopLevel(tag)); - CPPUNIT_ASSERT(!ID3v2::TableOfContentsFrame::findByElementID(tag, "ctoc")); - CPPUNIT_ASSERT(ID3v2::TableOfContentsFrame::findByElementID(tag, "toc")); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestID3v2); - diff --git a/Frameworks/TagLib/taglib/tests/test_info.cpp b/Frameworks/TagLib/taglib/tests/test_info.cpp deleted file mode 100644 index 4302a249c..000000000 --- a/Frameworks/TagLib/taglib/tests/test_info.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <infotag.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestInfoTag : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestInfoTag); - CPPUNIT_TEST(testTitle); - CPPUNIT_TEST(testNumericFields); - CPPUNIT_TEST_SUITE_END(); - -public: - void testTitle() - { - RIFF::Info::Tag tag; - - CPPUNIT_ASSERT_EQUAL(String(""), tag.title()); - tag.setTitle("Test title 1"); - tag.setFieldText("TEST", "Dummy Text"); - - CPPUNIT_ASSERT_EQUAL(String("Test title 1"), tag.title()); - - RIFF::Info::FieldListMap map = tag.fieldListMap(); - CPPUNIT_ASSERT_EQUAL(String("Test title 1"), map["INAM"]); - CPPUNIT_ASSERT_EQUAL(String("Dummy Text"), map["TEST"]); - } - - void testNumericFields() - { - RIFF::Info::Tag tag; - - CPPUNIT_ASSERT_EQUAL((unsigned int)0, tag.track()); - tag.setTrack(1234); - CPPUNIT_ASSERT_EQUAL((unsigned int)1234, tag.track()); - CPPUNIT_ASSERT_EQUAL(String("1234"), tag.fieldText("IPRT")); - - CPPUNIT_ASSERT_EQUAL((unsigned int)0, tag.year()); - tag.setYear(1234); - CPPUNIT_ASSERT_EQUAL((unsigned int)1234, tag.year()); - CPPUNIT_ASSERT_EQUAL(String("1234"), tag.fieldText("ICRD")); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestInfoTag); - diff --git a/Frameworks/TagLib/taglib/tests/test_it.cpp b/Frameworks/TagLib/taglib/tests/test_it.cpp deleted file mode 100644 index 75afb54dc..000000000 --- a/Frameworks/TagLib/taglib/tests/test_it.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <itfile.h> -#include <tstringlist.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -static const String titleBefore("test song name"); -static const String titleAfter("changed title"); - -static const String commentBefore( - "This is a sample name.\n" - "In module file formats\n" - "sample names are abused\n" - "as multiline comments.\n" - " "); - -static const String newComment( - "This is a sample name!\n" - "In module file formats\n" - "sample names are abused\n" - "as multiline comments.\n" - "-----------------------------------\n" - "The previous line is truncated but starting with this line\n" - "the comment is not limeted in the line length but to 8000\n" - "additional characters (bytes).\n" - "\n" - "This is because it is saved in the 'message' proportion of\n" - "IT files."); - -static const String commentAfter( - "This is a sample name!\n" - "In module file formats\n" - "sample names are abused\n" - "as multiline comments.\n" - "-------------------------\n" - "The previous line is truncated but starting with this line\n" - "the comment is not limeted in the line length but to 8000\n" - "additional characters (bytes).\n" - "\n" - "This is because it is saved in the 'message' proportion of\n" - "IT files."); - -class TestIT : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestIT); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testWriteTags); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.it"), titleBefore, commentBefore); - } - - void testWriteTags() - { - ScopedFileCopy copy("test", ".it"); - { - IT::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(newComment); - file.tag()->setTrackerName("won't be saved"); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, commentAfter); - } - -private: - void testRead(FileName fileName, const String &title, const String &comment) - { - IT::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - IT::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL( 0, p->length()); - CPPUNIT_ASSERT_EQUAL( 0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL( 0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(64, p->channels()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL(true, p->stereo()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 5, p->sampleCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short)535, p->version()); - CPPUNIT_ASSERT_EQUAL((unsigned short)532, p->compatibleVersion()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 9, p->flags()); - CPPUNIT_ASSERT_EQUAL((unsigned char)128, p->globalVolume()); - CPPUNIT_ASSERT_EQUAL((unsigned char) 48, p->mixVolume()); - CPPUNIT_ASSERT_EQUAL((unsigned char)125, p->tempo()); - CPPUNIT_ASSERT_EQUAL((unsigned char) 6, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL((unsigned char)128, p->panningSeparation()); - CPPUNIT_ASSERT_EQUAL((unsigned char) 0, p->pitchWheelDepth()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String(), t->artist()); - CPPUNIT_ASSERT_EQUAL(String(), t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String(), t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String("Impulse Tracker"), t->trackerName()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestIT); diff --git a/Frameworks/TagLib/taglib/tests/test_list.cpp b/Frameworks/TagLib/taglib/tests/test_list.cpp deleted file mode 100644 index 1c6d8c4c6..000000000 --- a/Frameworks/TagLib/taglib/tests/test_list.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tlist.h> -#include <cppunit/extensions/HelperMacros.h> - -using namespace std; -using namespace TagLib; - -class TestList : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestList); - CPPUNIT_TEST(testAppend); - CPPUNIT_TEST(testDetach); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAppend() - { - List<int> l1; - List<int> l2; - List<int> l3; - l1.append(2); - l2.append(3); - l2.append(4); - l1.append(l2); - l1.prepend(1); - l3.append(1); - l3.append(2); - l3.append(3); - l3.append(4); - CPPUNIT_ASSERT_EQUAL(4U, l1.size()); - CPPUNIT_ASSERT(l1 == l3); - } - - void testDetach() - { - List<int> l1; - l1.append(1); - l1.append(2); - l1.append(3); - l1.append(4); - - List<int> l2 = l1; - List<int>::Iterator it = l2.find(3); - *it = 33; - CPPUNIT_ASSERT_EQUAL(3, l1[2]); - CPPUNIT_ASSERT_EQUAL(33, l2[2]); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestList); diff --git a/Frameworks/TagLib/taglib/tests/test_map.cpp b/Frameworks/TagLib/taglib/tests/test_map.cpp deleted file mode 100644 index b5e493b61..000000000 --- a/Frameworks/TagLib/taglib/tests/test_map.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <tmap.h> -#include <cppunit/extensions/HelperMacros.h> - -using namespace std; -using namespace TagLib; - -class TestMap : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMap); - CPPUNIT_TEST(testInsert); - CPPUNIT_TEST(testDetach); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testInsert() - { - Map<String, int> m1; - m1.insert("foo", 3); - m1.insert("bar", 5); - CPPUNIT_ASSERT_EQUAL(2U, m1.size()); - CPPUNIT_ASSERT_EQUAL(3, m1["foo"]); - CPPUNIT_ASSERT_EQUAL(5, m1["bar"]); - m1.insert("foo", 7); - CPPUNIT_ASSERT_EQUAL(2U, m1.size()); - CPPUNIT_ASSERT_EQUAL(7, m1["foo"]); - CPPUNIT_ASSERT_EQUAL(5, m1["bar"]); - } - - void testDetach() - { - Map<String, int> m1; - m1.insert("alice", 5); - m1.insert("bob", 9); - m1.insert("carol", 11); - - Map<String, int> m2 = m1; - Map<String, int>::Iterator it = m2.find("bob"); - (*it).second = 99; - CPPUNIT_ASSERT_EQUAL(9, m1["bob"]); - CPPUNIT_ASSERT_EQUAL(99, m2["bob"]); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMap); diff --git a/Frameworks/TagLib/taglib/tests/test_mod.cpp b/Frameworks/TagLib/taglib/tests/test_mod.cpp deleted file mode 100644 index 55fd74387..000000000 --- a/Frameworks/TagLib/taglib/tests/test_mod.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <modfile.h> -#include <tpropertymap.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -static const String titleBefore("title of song"); -static const String titleAfter("changed title"); - -static const String commentBefore( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "-+-+-+-+-+-+-+-+-+-+-+\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - -static const String newComment( - "This line will be truncated because it is too long for a mod instrument name.\n" - "This line is ok."); - -static const String commentAfter( - "This line will be trun\n" - "This line is ok.\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - -class TestMod : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMod); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testWriteTags); - CPPUNIT_TEST(testPropertyInterface); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.mod"), titleBefore, commentBefore); - } - - void testWriteTags() - { - ScopedFileCopy copy("test", ".mod"); - { - Mod::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(newComment); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, commentAfter); - CPPUNIT_ASSERT(fileEqual( - copy.fileName(), - TEST_FILE_PATH_C("changed.mod"))); - } - - void testPropertyInterface() - { - Mod::Tag t; - PropertyMap properties; - properties["BLA"] = String("bla"); - properties["ARTIST"] = String("artist1"); - properties["ARTIST"].append("artist2"); - properties["TITLE"] = String("title"); - - PropertyMap unsupported = t.setProperties(properties); - CPPUNIT_ASSERT(unsupported.contains("BLA")); - CPPUNIT_ASSERT(unsupported.contains("ARTIST")); - CPPUNIT_ASSERT_EQUAL(properties["ARTIST"], unsupported["ARTIST"]); - CPPUNIT_ASSERT(!unsupported.contains("TITLE")); - - properties = t.properties(); - CPPUNIT_ASSERT_EQUAL(StringList("title"), properties["TITLE"]); - } - -private: - void testRead(FileName fileName, const String &title, const String &comment) - { - Mod::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - Mod::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL(0, p->length()); - CPPUNIT_ASSERT_EQUAL(0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL(0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, p->channels()); - CPPUNIT_ASSERT_EQUAL(31U, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((unsigned char)1, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String(), t->artist()); - CPPUNIT_ASSERT_EQUAL(String(), t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String(), t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String("StarTrekker"), t->trackerName()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMod); diff --git a/Frameworks/TagLib/taglib/tests/test_mp4.cpp b/Frameworks/TagLib/taglib/tests/test_mp4.cpp deleted file mode 100644 index 5f96c9c01..000000000 --- a/Frameworks/TagLib/taglib/tests/test_mp4.cpp +++ /dev/null @@ -1,659 +0,0 @@ -/*************************************************************************** - copyright : (C) 2008 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <mp4tag.h> -#include <tbytevectorlist.h> -#include <tbytevectorstream.h> -#include <tpropertymap.h> -#include <mp4atom.h> -#include <mp4file.h> -#include <cppunit/extensions/HelperMacros.h> -#include "plainfile.h" -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMP4 : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMP4); - CPPUNIT_TEST(testPropertiesAAC); - CPPUNIT_TEST(testPropertiesAACWithoutBitrate); - CPPUNIT_TEST(testPropertiesALAC); - CPPUNIT_TEST(testPropertiesALACWithoutBitrate); - CPPUNIT_TEST(testPropertiesM4V); - CPPUNIT_TEST(testFreeForm); - CPPUNIT_TEST(testCheckValid); - CPPUNIT_TEST(testHasTag); - CPPUNIT_TEST(testIsEmpty); - CPPUNIT_TEST(testUpdateStco); - CPPUNIT_TEST(testSaveExisingWhenIlstIsLast); - CPPUNIT_TEST(test64BitAtom); - CPPUNIT_TEST(testGnre); - CPPUNIT_TEST(testCovrRead); - CPPUNIT_TEST(testCovrWrite); - CPPUNIT_TEST(testCovrRead2); - CPPUNIT_TEST(testProperties); - CPPUNIT_TEST(testPropertiesAllSupported); - CPPUNIT_TEST(testPropertiesMovement); - CPPUNIT_TEST(testFuzzedFile); - CPPUNIT_TEST(testRepeatedSave); - CPPUNIT_TEST(testWithZeroLengthAtom); - CPPUNIT_TEST(testEmptyValuesRemoveItems); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testPropertiesAAC() - { - MP4::File f(TEST_FILE_PATH_C("has-tags.m4a")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3708, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); - CPPUNIT_ASSERT_EQUAL(MP4::Properties::AAC, f.audioProperties()->codec()); - } - - void testPropertiesAACWithoutBitrate() - { - ByteVector aacData = PlainFile(TEST_FILE_PATH_C("has-tags.m4a")).readAll(); - CPPUNIT_ASSERT_GREATER(1960U, aacData.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("mp4a"), aacData.mid(1890, 4)); - // Set the bitrate to zero - for (int offset = 1956; offset < 1960; ++offset) { - aacData[offset] = 0; - } - ByteVectorStream aacStream(aacData); - MP4::File f(&aacStream); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3708, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); - CPPUNIT_ASSERT_EQUAL(MP4::Properties::AAC, f.audioProperties()->codec()); - } - - void testPropertiesALAC() - { - MP4::File f(TEST_FILE_PATH_C("empty_alac.m4a")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3705, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); - CPPUNIT_ASSERT_EQUAL(MP4::Properties::ALAC, f.audioProperties()->codec()); - } - - void testPropertiesALACWithoutBitrate() - { - ByteVector alacData = PlainFile(TEST_FILE_PATH_C("empty_alac.m4a")).readAll(); - CPPUNIT_ASSERT_GREATER(474U, alacData.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("alac"), alacData.mid(446, 4)); - // Set the bitrate to zero - for (int offset = 470; offset < 474; ++offset) { - alacData[offset] = 0; - } - ByteVectorStream alacStream(alacData); - MP4::File f(&alacStream); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3705, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); - CPPUNIT_ASSERT_EQUAL(MP4::Properties::ALAC, f.audioProperties()->codec()); - } - - void testPropertiesM4V() - { - MP4::File f(TEST_FILE_PATH_C("blank_video.m4v")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(975, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(96, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isEncrypted()); - CPPUNIT_ASSERT_EQUAL(MP4::Properties::AAC, f.audioProperties()->codec()); - } - - void testCheckValid() - { - MP4::File f(TEST_FILE_PATH_C("empty.aiff")); - CPPUNIT_ASSERT(!f.isValid()); - } - - void testHasTag() - { - { - MP4::File f(TEST_FILE_PATH_C("has-tags.m4a")); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(f.hasMP4Tag()); - } - - ScopedFileCopy copy("no-tags", ".m4a"); - - { - MP4::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(!f.hasMP4Tag()); - f.tag()->setTitle("TITLE"); - f.save(); - } - { - MP4::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(f.hasMP4Tag()); - } - } - - void testIsEmpty() - { - MP4::Tag t1; - CPPUNIT_ASSERT(t1.isEmpty()); - t1.setArtist("Foo"); - CPPUNIT_ASSERT(!t1.isEmpty()); - - MP4::Tag t2; - t2.setItem("foo", "bar"); - CPPUNIT_ASSERT(!t2.isEmpty()); - } - - void testUpdateStco() - { - ScopedFileCopy copy("no-tags", ".3g2"); - string filename = copy.fileName(); - - ByteVectorList data1; - - { - MP4::File f(filename.c_str()); - f.tag()->setArtist(ByteVector(3000, 'x')); - - MP4::Atoms a(&f); - MP4::Atom *stco = a.find("moov")->findall("stco", true)[0]; - f.seek(stco->offset + 12); - ByteVector data = f.readBlock(stco->length - 12); - unsigned int count = data.mid(0, 4).toUInt(); - int pos = 4; - while (count--) { - unsigned int offset = data.mid(pos, 4).toUInt(); - f.seek(offset); - data1.append(f.readBlock(20)); - pos += 4; - } - - f.save(); - } - - { - MP4::File f(filename.c_str()); - - MP4::Atoms a(&f); - MP4::Atom *stco = a.find("moov")->findall("stco", true)[0]; - f.seek(stco->offset + 12); - ByteVector data = f.readBlock(stco->length - 12); - unsigned int count = data.mid(0, 4).toUInt(); - int pos = 4, i = 0; - while (count--) { - unsigned int offset = data.mid(pos, 4).toUInt(); - f.seek(offset); - CPPUNIT_ASSERT_EQUAL(data1[i], f.readBlock(20)); - pos += 4; - i++; - } - } - } - - void testFreeForm() - { - ScopedFileCopy copy("has-tags", ".m4a"); - string filename = copy.fileName(); - - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT(f.tag()->contains("----:com.apple.iTunes:iTunNORM")); - f.tag()->setItem("----:org.kde.TagLib:Foo", StringList("Bar")); - f.save(); - } - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT(f.tag()->contains("----:org.kde.TagLib:Foo")); - CPPUNIT_ASSERT_EQUAL(String("Bar"), - f.tag()->item("----:org.kde.TagLib:Foo").toStringList().front()); - f.save(); - } - } - - void testSaveExisingWhenIlstIsLast() - { - ScopedFileCopy copy("ilst-is-last", ".m4a"); - string filename = copy.fileName(); - - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(String("82,164"), - f.tag()->item("----:com.apple.iTunes:replaygain_track_minmax").toStringList().front()); - CPPUNIT_ASSERT_EQUAL(String("Pearl Jam"), f.tag()->artist()); - f.tag()->setComment("foo"); - f.save(); - } - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(String("82,164"), - f.tag()->item("----:com.apple.iTunes:replaygain_track_minmax").toStringList().front()); - CPPUNIT_ASSERT_EQUAL(String("Pearl Jam"), f.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(String("foo"), f.tag()->comment()); - } - } - - void test64BitAtom() - { - ScopedFileCopy copy("64bit", ".mp4"); - string filename = copy.fileName(); - - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(true, f.tag()->itemMap()["cpil"].toBool()); - - MP4::Atoms atoms(&f); - MP4::Atom *moov = atoms.atoms[0]; - CPPUNIT_ASSERT_EQUAL(long(77), moov->length); - - f.tag()->setItem("pgap", true); - f.save(); - } - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(true, f.tag()->item("cpil").toBool()); - CPPUNIT_ASSERT_EQUAL(true, f.tag()->item("pgap").toBool()); - - MP4::Atoms atoms(&f); - MP4::Atom *moov = atoms.atoms[0]; - // original size + 'pgap' size + padding - CPPUNIT_ASSERT_EQUAL(long(77 + 25 + 974), moov->length); - } - } - - void testGnre() - { - MP4::File f(TEST_FILE_PATH_C("gnre.m4a")); - CPPUNIT_ASSERT_EQUAL(TagLib::String("Ska"), f.tag()->genre()); - } - - void testCovrRead() - { - MP4::File f(TEST_FILE_PATH_C("has-tags.m4a")); - CPPUNIT_ASSERT(f.tag()->contains("covr")); - MP4::CoverArtList l = f.tag()->item("covr").toCoverArtList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, l.size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL((unsigned int)79, l[0].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL((unsigned int)287, l[1].data().size()); - } - - void testCovrWrite() - { - ScopedFileCopy copy("has-tags", ".m4a"); - string filename = copy.fileName(); - - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT(f.tag()->contains("covr")); - MP4::CoverArtList l = f.tag()->item("covr").toCoverArtList(); - l.append(MP4::CoverArt(MP4::CoverArt::PNG, "foo")); - f.tag()->setItem("covr", l); - f.save(); - } - { - MP4::File f(filename.c_str()); - CPPUNIT_ASSERT(f.tag()->contains("covr")); - MP4::CoverArtList l = f.tag()->item("covr").toCoverArtList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, l.size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL((unsigned int)79, l[0].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL((unsigned int)287, l[1].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[2].format()); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, l[2].data().size()); - } - } - - void testCovrRead2() - { - MP4::File f(TEST_FILE_PATH_C("covr-junk.m4a")); - CPPUNIT_ASSERT(f.tag()->contains("covr")); - MP4::CoverArtList l = f.tag()->item("covr").toCoverArtList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, l.size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL((unsigned int)79, l[0].data().size()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL((unsigned int)287, l[1].data().size()); - } - - void testProperties() - { - MP4::File f(TEST_FILE_PATH_C("has-tags.m4a")); - - PropertyMap tags = f.properties(); - - CPPUNIT_ASSERT_EQUAL(StringList("Test Artist"), tags["ARTIST"]); - - tags["TRACKNUMBER"] = StringList("2/4"); - tags["DISCNUMBER"] = StringList("3/5"); - tags["BPM"] = StringList("123"); - tags["ARTIST"] = StringList("Foo Bar"); - tags["COMPILATION"] = StringList("1"); - f.setProperties(tags); - - tags = f.properties(); - - CPPUNIT_ASSERT(f.tag()->contains("trkn")); - CPPUNIT_ASSERT_EQUAL(2, f.tag()->item("trkn").toIntPair().first); - CPPUNIT_ASSERT_EQUAL(4, f.tag()->item("trkn").toIntPair().second); - CPPUNIT_ASSERT_EQUAL(StringList("2/4"), tags["TRACKNUMBER"]); - - CPPUNIT_ASSERT(f.tag()->contains("disk")); - CPPUNIT_ASSERT_EQUAL(3, f.tag()->item("disk").toIntPair().first); - CPPUNIT_ASSERT_EQUAL(5, f.tag()->item("disk").toIntPair().second); - CPPUNIT_ASSERT_EQUAL(StringList("3/5"), tags["DISCNUMBER"]); - - CPPUNIT_ASSERT(f.tag()->contains("tmpo")); - CPPUNIT_ASSERT_EQUAL(123, f.tag()->item("tmpo").toInt()); - CPPUNIT_ASSERT_EQUAL(StringList("123"), tags["BPM"]); - - CPPUNIT_ASSERT(f.tag()->contains("\251ART")); - CPPUNIT_ASSERT_EQUAL(StringList("Foo Bar"), f.tag()->item("\251ART").toStringList()); - CPPUNIT_ASSERT_EQUAL(StringList("Foo Bar"), tags["ARTIST"]); - - CPPUNIT_ASSERT(f.tag()->contains("cpil")); - CPPUNIT_ASSERT_EQUAL(true, f.tag()->item("cpil").toBool()); - CPPUNIT_ASSERT_EQUAL(StringList("1"), tags["COMPILATION"]); - - tags["COMPILATION"] = StringList("0"); - f.setProperties(tags); - - tags = f.properties(); - - CPPUNIT_ASSERT(f.tag()->contains("cpil")); - CPPUNIT_ASSERT_EQUAL(false, f.tag()->item("cpil").toBool()); - CPPUNIT_ASSERT_EQUAL(StringList("0"), tags["COMPILATION"]); - - // Empty properties do not result in access violations - // when converting integers - tags["TRACKNUMBER"] = StringList(); - tags["DISCNUMBER"] = StringList(); - tags["BPM"] = StringList(); - tags["COMPILATION"] = StringList(); - f.setProperties(tags); - } - - void testPropertiesAllSupported() - { - PropertyMap tags; - tags["ALBUM"] = StringList("Album"); - tags["ALBUMARTIST"] = StringList("Album Artist"); - tags["ALBUMARTISTSORT"] = StringList("Album Artist Sort"); - tags["ALBUMSORT"] = StringList("Album Sort"); - tags["ARTIST"] = StringList("Artist"); - tags["ARTISTS"] = StringList("Artists"); - tags["ARTISTSORT"] = StringList("Artist Sort"); - tags["ASIN"] = StringList("ASIN"); - tags["BARCODE"] = StringList("Barcode"); - tags["BPM"] = StringList("123"); - tags["CATALOGNUMBER"] = StringList("Catalog Number"); - tags["COMMENT"] = StringList("Comment"); - tags["COMPILATION"] = StringList("1"); - tags["COMPOSER"] = StringList("Composer"); - tags["COMPOSERSORT"] = StringList("Composer Sort"); - tags["CONDUCTOR"] = StringList("Conductor"); - tags["COPYRIGHT"] = StringList("2021 Copyright"); - tags["DATE"] = StringList("2021-01-03 12:29:23"); - tags["DISCNUMBER"] = StringList("3/5"); - tags["DISCSUBTITLE"] = StringList("Disc Subtitle"); - tags["DJMIXER"] = StringList("DJ Mixer"); - tags["ENCODEDBY"] = StringList("Encoded by"); - tags["ENGINEER"] = StringList("Engineer"); - tags["GAPLESSPLAYBACK"] = StringList("1"); - tags["GENRE"] = StringList("Genre"); - tags["GROUPING"] = StringList("Grouping"); - tags["ISRC"] = StringList("UKAAA0500001"); - tags["LABEL"] = StringList("Label"); - tags["LANGUAGE"] = StringList("eng"); - tags["LICENSE"] = StringList("License"); - tags["LYRICIST"] = StringList("Lyricist"); - tags["LYRICS"] = StringList("Lyrics"); - tags["MEDIA"] = StringList("Media"); - tags["MIXER"] = StringList("Mixer"); - tags["MOOD"] = StringList("Mood"); - tags["MOVEMENTCOUNT"] = StringList("3"); - tags["MOVEMENTNAME"] = StringList("Movement Name"); - tags["MOVEMENTNUMBER"] = StringList("2"); - tags["MUSICBRAINZ_ALBUMARTISTID"] = StringList("MusicBrainz_AlbumartistID"); - tags["MUSICBRAINZ_ALBUMID"] = StringList("MusicBrainz_AlbumID"); - tags["MUSICBRAINZ_ARTISTID"] = StringList("MusicBrainz_ArtistID"); - tags["MUSICBRAINZ_RELEASEGROUPID"] = StringList("MusicBrainz_ReleasegroupID"); - tags["MUSICBRAINZ_RELEASETRACKID"] = StringList("MusicBrainz_ReleasetrackID"); - tags["MUSICBRAINZ_TRACKID"] = StringList("MusicBrainz_TrackID"); - tags["MUSICBRAINZ_WORKID"] = StringList("MusicBrainz_WorkID"); - tags["ORIGINALDATE"] = StringList("2021-01-03 13:52:19"); - tags["PODCAST"] = StringList("1"); - tags["PODCASTCATEGORY"] = StringList("Podcast Category"); - tags["PODCASTDESC"] = StringList("Podcast Description"); - tags["PODCASTID"] = StringList("Podcast ID"); - tags["PODCASTURL"] = StringList("Podcast URL"); - tags["PRODUCER"] = StringList("Producer"); - tags["RELEASECOUNTRY"] = StringList("Release Country"); - tags["RELEASESTATUS"] = StringList("Release Status"); - tags["RELEASETYPE"] = StringList("Release Type"); - tags["REMIXER"] = StringList("Remixer"); - tags["SCRIPT"] = StringList("Script"); - tags["SHOWSORT"] = StringList("Show Sort"); - tags["SHOWWORKMOVEMENT"] = StringList("1"); - tags["SUBTITLE"] = StringList("Subtitle"); - tags["TITLE"] = StringList("Title"); - tags["TITLESORT"] = StringList("Title Sort"); - tags["TRACKNUMBER"] = StringList("2/4"); - tags["TVEPISODE"] = StringList("3"); - tags["TVEPISODEID"] = StringList("TV Episode ID"); - tags["TVNETWORK"] = StringList("TV Network"); - tags["TVSEASON"] = StringList("2"); - tags["TVSHOW"] = StringList("TV Show"); - tags["WORK"] = StringList("Work"); - - ScopedFileCopy copy("no-tags", ".m4a"); - { - MP4::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - CPPUNIT_ASSERT(properties.isEmpty()); - f.setProperties(tags); - f.save(); - } - { - const MP4::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - if (tags != properties) { - CPPUNIT_ASSERT_EQUAL(tags.toString(), properties.toString()); - } - CPPUNIT_ASSERT(tags == properties); - } - } - - void testPropertiesMovement() - { - MP4::File f(TEST_FILE_PATH_C("has-tags.m4a")); - - PropertyMap tags = f.properties(); - - tags["WORK"] = StringList("Foo"); - tags["MOVEMENTNAME"] = StringList("Bar"); - tags["MOVEMENTNUMBER"] = StringList("2"); - tags["MOVEMENTCOUNT"] = StringList("3"); - tags["SHOWWORKMOVEMENT"] = StringList("1"); - f.setProperties(tags); - - tags = f.properties(); - - CPPUNIT_ASSERT(f.tag()->contains("\251wrk")); - CPPUNIT_ASSERT_EQUAL(StringList("Foo"), f.tag()->item("\251wrk").toStringList()); - CPPUNIT_ASSERT_EQUAL(StringList("Foo"), tags["WORK"]); - - CPPUNIT_ASSERT(f.tag()->contains("\251mvn")); - CPPUNIT_ASSERT_EQUAL(StringList("Bar"), f.tag()->item("\251mvn").toStringList()); - CPPUNIT_ASSERT_EQUAL(StringList("Bar"), tags["MOVEMENTNAME"]); - - CPPUNIT_ASSERT(f.tag()->contains("\251mvi")); - CPPUNIT_ASSERT_EQUAL(2, f.tag()->item("\251mvi").toInt()); - CPPUNIT_ASSERT_EQUAL(StringList("2"), tags["MOVEMENTNUMBER"]); - - CPPUNIT_ASSERT(f.tag()->contains("\251mvc")); - CPPUNIT_ASSERT_EQUAL(3, f.tag()->item("\251mvc").toInt()); - CPPUNIT_ASSERT_EQUAL(StringList("3"), tags["MOVEMENTCOUNT"]); - - CPPUNIT_ASSERT(f.tag()->contains("shwm")); - CPPUNIT_ASSERT_EQUAL(true, f.tag()->item("shwm").toBool()); - CPPUNIT_ASSERT_EQUAL(StringList("1"), tags["SHOWWORKMOVEMENT"]); - - tags["SHOWWORKMOVEMENT"] = StringList("0"); - f.setProperties(tags); - - tags = f.properties(); - - CPPUNIT_ASSERT(f.tag()->contains("shwm")); - CPPUNIT_ASSERT_EQUAL(false, f.tag()->item("shwm").toBool()); - CPPUNIT_ASSERT_EQUAL(StringList("0"), tags["SHOWWORKMOVEMENT"]); - - tags["WORK"] = StringList(); - tags["MOVEMENTNAME"] = StringList(); - tags["MOVEMENTNUMBER"] = StringList(); - tags["MOVEMENTCOUNT"] = StringList(); - tags["SHOWWORKMOVEMENT"] = StringList(); - f.setProperties(tags); - } - - void testFuzzedFile() - { - MP4::File f(TEST_FILE_PATH_C("infloop.m4a")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testRepeatedSave() - { - ScopedFileCopy copy("no-tags", ".m4a"); - - MP4::File f(copy.fileName().c_str()); - f.tag()->setTitle("0123456789"); - f.save(); - f.save(); - CPPUNIT_ASSERT_EQUAL(2862L, f.find("0123456789")); - CPPUNIT_ASSERT_EQUAL(-1L, f.find("0123456789", 2863)); - } - - void testWithZeroLengthAtom() - { - MP4::File f(TEST_FILE_PATH_C("zero-length-mdat.m4a")); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(1115, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(22050, f.audioProperties()->sampleRate()); - } - - void testEmptyValuesRemoveItems() - { - const MP4::File f(TEST_FILE_PATH_C("has-tags.m4a")); - MP4::Tag *tag = f.tag(); - const String testTitle("Title"); - const String testArtist("Artist"); - const String testAlbum("Album"); - const String testComment("Comment"); - const String testGenre("Genre"); - const String nullString; - const unsigned int testYear = 2020; - const unsigned int testTrack = 1; - const unsigned int zeroUInt = 0; - - tag->setTitle(testTitle); - CPPUNIT_ASSERT_EQUAL(testTitle, tag->title()); - CPPUNIT_ASSERT(tag->contains("\251nam")); - tag->setArtist(testArtist); - CPPUNIT_ASSERT_EQUAL(testArtist, tag->artist()); - CPPUNIT_ASSERT(tag->contains("\251ART")); - tag->setAlbum(testAlbum); - CPPUNIT_ASSERT_EQUAL(testAlbum, tag->album()); - CPPUNIT_ASSERT(tag->contains("\251alb")); - tag->setComment(testComment); - CPPUNIT_ASSERT_EQUAL(testComment, tag->comment()); - CPPUNIT_ASSERT(tag->contains("\251cmt")); - tag->setGenre(testGenre); - CPPUNIT_ASSERT_EQUAL(testGenre, tag->genre()); - CPPUNIT_ASSERT(tag->contains("\251gen")); - tag->setYear(testYear); - CPPUNIT_ASSERT_EQUAL(testYear, tag->year()); - CPPUNIT_ASSERT(tag->contains("\251day")); - tag->setTrack(testTrack); - CPPUNIT_ASSERT_EQUAL(testTrack, tag->track()); - CPPUNIT_ASSERT(tag->contains("trkn")); - - tag->setTitle(nullString); - CPPUNIT_ASSERT_EQUAL(nullString, tag->title()); - CPPUNIT_ASSERT(!tag->contains("\251nam")); - tag->setArtist(nullString); - CPPUNIT_ASSERT_EQUAL(nullString, tag->artist()); - CPPUNIT_ASSERT(!tag->contains("\251ART")); - tag->setAlbum(nullString); - CPPUNIT_ASSERT_EQUAL(nullString, tag->album()); - CPPUNIT_ASSERT(!tag->contains("\251alb")); - tag->setComment(nullString); - CPPUNIT_ASSERT_EQUAL(nullString, tag->comment()); - CPPUNIT_ASSERT(!tag->contains("\251cmt")); - tag->setGenre(nullString); - CPPUNIT_ASSERT_EQUAL(nullString, tag->genre()); - CPPUNIT_ASSERT(!tag->contains("\251gen")); - tag->setYear(zeroUInt); - CPPUNIT_ASSERT_EQUAL(zeroUInt, tag->year()); - CPPUNIT_ASSERT(!tag->contains("\251day")); - tag->setTrack(zeroUInt); - CPPUNIT_ASSERT_EQUAL(zeroUInt, tag->track()); - CPPUNIT_ASSERT(!tag->contains("trkn")); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4); diff --git a/Frameworks/TagLib/taglib/tests/test_mp4coverart.cpp b/Frameworks/TagLib/taglib/tests/test_mp4coverart.cpp deleted file mode 100644 index 49ef04707..000000000 --- a/Frameworks/TagLib/taglib/tests/test_mp4coverart.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <mp4coverart.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMP4CoverArt : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMP4CoverArt); - CPPUNIT_TEST(testSimple); - CPPUNIT_TEST(testList); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSimple() - { - MP4::CoverArt c(MP4::CoverArt::PNG, "foo"); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, c.format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), c.data()); - - MP4::CoverArt c2(c); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, c2.format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), c2.data()); - - MP4::CoverArt c3 = c; - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, c3.format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), c3.data()); - } - - void testList() - { - MP4::CoverArtList l; - l.append(MP4::CoverArt(MP4::CoverArt::PNG, "foo")); - l.append(MP4::CoverArt(MP4::CoverArt::JPEG, "bar")); - - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), l[0].data()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("bar"), l[1].data()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4CoverArt); diff --git a/Frameworks/TagLib/taglib/tests/test_mp4item.cpp b/Frameworks/TagLib/taglib/tests/test_mp4item.cpp deleted file mode 100644 index a9a5c99ae..000000000 --- a/Frameworks/TagLib/taglib/tests/test_mp4item.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <mp4coverart.h> -#include <mp4item.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMP4Item : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMP4Item); - CPPUNIT_TEST(testCoverArtList); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testCoverArtList() - { - MP4::CoverArtList l; - l.append(MP4::CoverArt(MP4::CoverArt::PNG, "foo")); - l.append(MP4::CoverArt(MP4::CoverArt::JPEG, "bar")); - - MP4::Item i(l); - MP4::CoverArtList l2 = i.toCoverArtList(); - - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::PNG, l[0].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), l[0].data()); - CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, l[1].format()); - CPPUNIT_ASSERT_EQUAL(ByteVector("bar"), l[1].data()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMP4Item); diff --git a/Frameworks/TagLib/taglib/tests/test_mpc.cpp b/Frameworks/TagLib/taglib/tests/test_mpc.cpp deleted file mode 100644 index 25f759443..000000000 --- a/Frameworks/TagLib/taglib/tests/test_mpc.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <apetag.h> -#include <id3v1tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <mpcfile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMPC : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMPC); - CPPUNIT_TEST(testPropertiesSV8); - CPPUNIT_TEST(testPropertiesSV7); - CPPUNIT_TEST(testPropertiesSV5); - CPPUNIT_TEST(testPropertiesSV4); - CPPUNIT_TEST(testFuzzedFile1); - CPPUNIT_TEST(testFuzzedFile2); - CPPUNIT_TEST(testFuzzedFile3); - CPPUNIT_TEST(testFuzzedFile4); - CPPUNIT_TEST(testStripAndProperties); - CPPUNIT_TEST(testRepeatedSave); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testPropertiesSV8() - { - MPC::File f(TEST_FILE_PATH_C("sv8_header.mpc")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(8, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(1497, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(66014U, f.audioProperties()->sampleFrames()); - } - - void testPropertiesSV7() - { - MPC::File f(TEST_FILE_PATH_C("click.mpc")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(7, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(40, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(318, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(1760U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(14221, f.audioProperties()->trackGain()); - CPPUNIT_ASSERT_EQUAL(19848, f.audioProperties()->trackPeak()); - CPPUNIT_ASSERT_EQUAL(14221, f.audioProperties()->albumGain()); - CPPUNIT_ASSERT_EQUAL(19848, f.audioProperties()->albumPeak()); - } - - void testPropertiesSV5() - { - MPC::File f(TEST_FILE_PATH_C("sv5_header.mpc")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(5, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(26, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(26371, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(1162944U, f.audioProperties()->sampleFrames()); - } - - void testPropertiesSV4() - { - MPC::File f(TEST_FILE_PATH_C("sv4_header.mpc")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(4, f.audioProperties()->mpcVersion()); - CPPUNIT_ASSERT_EQUAL(26, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(26371, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(1162944U, f.audioProperties()->sampleFrames()); - } - - void testFuzzedFile1() - { - MPC::File f(TEST_FILE_PATH_C("zerodiv.mpc")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testFuzzedFile2() - { - MPC::File f(TEST_FILE_PATH_C("infloop.mpc")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testFuzzedFile3() - { - MPC::File f(TEST_FILE_PATH_C("segfault.mpc")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testFuzzedFile4() - { - MPC::File f(TEST_FILE_PATH_C("segfault2.mpc")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testStripAndProperties() - { - ScopedFileCopy copy("click", ".mpc"); - - { - MPC::File f(copy.fileName().c_str()); - f.APETag(true)->setTitle("APE"); - f.ID3v1Tag(true)->setTitle("ID3v1"); - f.save(); - } - { - MPC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String("APE"), f.properties()["TITLE"].front()); - f.strip(MPC::File::APE); - CPPUNIT_ASSERT_EQUAL(String("ID3v1"), f.properties()["TITLE"].front()); - f.strip(MPC::File::ID3v1); - CPPUNIT_ASSERT(f.properties().isEmpty()); - f.save(); - } - { - MPC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasAPETag()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - CPPUNIT_ASSERT(f.properties()["TITLE"].isEmpty()); - CPPUNIT_ASSERT(f.properties().isEmpty()); - } - } - - void testRepeatedSave() - { - ScopedFileCopy copy("click", ".mpc"); - - { - MPC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasAPETag()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - - f.APETag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.save(); - - f.APETag()->setTitle("0"); - f.save(); - - f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.APETag()->setTitle("01234 56789 ABCDE FGHIJ 01234 56789 ABCDE FGHIJ 01234 56789"); - f.save(); - } - { - MPC::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasAPETag()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMPC); diff --git a/Frameworks/TagLib/taglib/tests/test_mpeg.cpp b/Frameworks/TagLib/taglib/tests/test_mpeg.cpp deleted file mode 100644 index 1db1c9d4f..000000000 --- a/Frameworks/TagLib/taglib/tests/test_mpeg.cpp +++ /dev/null @@ -1,539 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tstring.h> -#include <tpropertymap.h> -#include <mpegfile.h> -#include <id3v2tag.h> -#include <id3v1tag.h> -#include <apetag.h> -#include <mpegproperties.h> -#include <xingheader.h> -#include <mpegheader.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestMPEG : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestMPEG); - CPPUNIT_TEST(testAudioPropertiesXingHeaderCBR); - CPPUNIT_TEST(testAudioPropertiesXingHeaderVBR); - CPPUNIT_TEST(testAudioPropertiesVBRIHeader); - CPPUNIT_TEST(testAudioPropertiesNoVBRHeaders); - CPPUNIT_TEST(testSkipInvalidFrames1); - CPPUNIT_TEST(testSkipInvalidFrames2); - CPPUNIT_TEST(testSkipInvalidFrames3); - CPPUNIT_TEST(testVersion2DurationWithXingHeader); - CPPUNIT_TEST(testSaveID3v24); - CPPUNIT_TEST(testSaveID3v24WrongParam); - CPPUNIT_TEST(testSaveID3v23); - CPPUNIT_TEST(testDuplicateID3v2); - CPPUNIT_TEST(testFuzzedFile); - CPPUNIT_TEST(testFrameOffset); - CPPUNIT_TEST(testStripAndProperties); - CPPUNIT_TEST(testProperties); - CPPUNIT_TEST(testRepeatedSave1); - CPPUNIT_TEST(testRepeatedSave2); - CPPUNIT_TEST(testRepeatedSave3); - CPPUNIT_TEST(testEmptyID3v2); - CPPUNIT_TEST(testEmptyID3v1); - CPPUNIT_TEST(testEmptyAPE); - CPPUNIT_TEST(testIgnoreGarbage); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAudioPropertiesXingHeaderCBR() - { - MPEG::File f(TEST_FILE_PATH_C("lame_cbr.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(1887, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(1887164, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(64, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(MPEG::XingHeader::Xing, f.audioProperties()->xingHeader()->type()); - } - - void testAudioPropertiesXingHeaderVBR() - { - MPEG::File f(TEST_FILE_PATH_C("lame_vbr.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(1887, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(1887164, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(70, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(MPEG::XingHeader::Xing, f.audioProperties()->xingHeader()->type()); - } - - void testAudioPropertiesVBRIHeader() - { - MPEG::File f(TEST_FILE_PATH_C("rare_frames.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(222, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(222198, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(233, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(MPEG::XingHeader::VBRI, f.audioProperties()->xingHeader()->type()); - } - - void testAudioPropertiesNoVBRHeaders() - { - MPEG::File f(TEST_FILE_PATH_C("bladeenc.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3553, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(64, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT(!f.audioProperties()->xingHeader()); - - const long last = f.lastFrameOffset(); - const MPEG::Header lastHeader(&f, last, false); - - CPPUNIT_ASSERT_EQUAL(28213L, last); - CPPUNIT_ASSERT_EQUAL(209, lastHeader.frameLength()); - } - - void testSkipInvalidFrames1() - { - MPEG::File f(TEST_FILE_PATH_C("invalid-frames1.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(392, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(160, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT(!f.audioProperties()->xingHeader()); - } - - void testSkipInvalidFrames2() - { - MPEG::File f(TEST_FILE_PATH_C("invalid-frames2.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(314, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(192, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT(!f.audioProperties()->xingHeader()); - } - - void testSkipInvalidFrames3() - { - MPEG::File f(TEST_FILE_PATH_C("invalid-frames3.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(183, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(320, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT(!f.audioProperties()->xingHeader()); - } - - void testVersion2DurationWithXingHeader() - { - MPEG::File f(TEST_FILE_PATH_C("mpeg2.mp3")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(5387, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(5387285, f.audioProperties()->lengthInMilliseconds()); - } - - void testSaveID3v24() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - { - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag()); - - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(MPEG::File::AllTags, File::StripOthers, ID3v2::v4); - CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag()); - } - { - MPEG::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)4, f2.ID3v2Tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - } - - void testSaveID3v24WrongParam() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - { - MPEG::File f(newname.c_str()); - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(MPEG::File::AllTags, true, 8); - } - { - MPEG::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)4, f2.ID3v2Tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - } - - void testSaveID3v23() - { - ScopedFileCopy copy("xing", ".mp3"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - { - MPEG::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag()); - - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(MPEG::File::AllTags, File::StripOthers, ID3v2::v3); - CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag()); - } - { - MPEG::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, f2.ID3v2Tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - } - - void testDuplicateID3v2() - { - MPEG::File f(TEST_FILE_PATH_C("duplicate_id3v2.mp3")); - - // duplicate_id3v2.mp3 has duplicate ID3v2 tags. - // Sample rate will be 32000 if can't skip the second tag. - - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - - void testFuzzedFile() - { - MPEG::File f(TEST_FILE_PATH_C("excessive_alloc.mp3")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testFrameOffset() - { - { - MPEG::File f(TEST_FILE_PATH_C("ape.mp3")); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL((long)0x0000, f.firstFrameOffset()); - CPPUNIT_ASSERT_EQUAL((long)0x1FD6, f.lastFrameOffset()); - } - { - MPEG::File f(TEST_FILE_PATH_C("ape-id3v1.mp3")); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL((long)0x0000, f.firstFrameOffset()); - CPPUNIT_ASSERT_EQUAL((long)0x1FD6, f.lastFrameOffset()); - } - { - MPEG::File f(TEST_FILE_PATH_C("ape-id3v2.mp3")); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL((long)0x041A, f.firstFrameOffset()); - CPPUNIT_ASSERT_EQUAL((long)0x23F0, f.lastFrameOffset()); - } - } - - void testStripAndProperties() - { - ScopedFileCopy copy("xing", ".mp3"); - - { - MPEG::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle("ID3v2"); - f.APETag(true)->setTitle("APE"); - f.ID3v1Tag(true)->setTitle("ID3v1"); - f.save(); - } - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String("ID3v2"), f.properties()["TITLE"].front()); - f.strip(MPEG::File::ID3v2); - CPPUNIT_ASSERT_EQUAL(String("APE"), f.properties()["TITLE"].front()); - f.strip(MPEG::File::APE); - CPPUNIT_ASSERT_EQUAL(String("ID3v1"), f.properties()["TITLE"].front()); - f.strip(MPEG::File::ID3v1); - CPPUNIT_ASSERT(f.properties().isEmpty()); - } - } - - void testProperties() - { - PropertyMap tags; - tags["ALBUM"] = StringList("Album"); - tags["ALBUMARTIST"] = StringList("Album Artist"); - tags["ALBUMARTISTSORT"] = StringList("Album Artist Sort"); - tags["ALBUMSORT"] = StringList("Album Sort"); - tags["ARRANGER"] = StringList("Arranger"); - tags["ARTIST"] = StringList("Artist"); - tags["ARTISTSORT"] = StringList("Artist Sort"); - tags["ARTISTWEBPAGE"] = StringList("Artist Web Page"); - tags["ASIN"] = StringList("ASIN"); - tags["AUDIOSOURCEWEBPAGE"] = StringList("Audio Source Web Page"); - tags["BARCODE"] = StringList("Barcode"); - tags["BPM"] = StringList("123"); - tags["CATALOGNUMBER"] = StringList("Catalog Number"); - tags["COMMENT"] = StringList("Comment"); - tags["COMMENT:CDESC"] = StringList("Comment with Description"); - tags["COMPOSER"] = StringList("Composer"); - tags["COMPOSERSORT"] = StringList("Composer Sort"); - tags["CONDUCTOR"] = StringList("Conductor"); - tags["CONTENTGROUP"] = StringList("Content Group"); - tags["COPYRIGHT"] = StringList("2021 Copyright"); - tags["COPYRIGHTURL"] = StringList("Copyright URL"); - tags["DATE"] = StringList("2021-01-03 12:29:23"); - tags["DISCNUMBER"] = StringList("3/5"); - tags["DJMIXER"] = StringList("DJ Mixer"); - tags["ENCODEDBY"] = StringList("Encoded by"); - tags["ENCODING"] = StringList("Encoding"); - tags["ENCODINGTIME"] = StringList("2021-01-03 13:48:44"); - tags["ENGINEER"] = StringList("Engineer"); - tags["FILETYPE"] = StringList("File Type"); - tags["FILEWEBPAGE"] = StringList("File Web Page"); - tags["GENRE"] = StringList("Genre"); - tags["GROUPING"] = StringList("Grouping"); - tags["INITIALKEY"] = StringList("Dbm"); - tags["ISRC"] = StringList("UKAAA0500001"); - tags["LABEL"] = StringList("Label"); - tags["LANGUAGE"] = StringList("eng"); - tags["LENGTH"] = StringList("1234"); - tags["LYRICIST"] = StringList("Lyricist"); - tags["LYRICS:LDESC"] = StringList("Lyrics"); - tags["MEDIA"] = StringList("Media"); - tags["MIXER"] = StringList("Mixer"); - tags["MOOD"] = StringList("Mood"); - tags["MOVEMENTNAME"] = StringList("Movement Name"); - tags["MOVEMENTNUMBER"] = StringList("2"); - tags["MUSICBRAINZ_ALBUMID"] = StringList("MusicBrainz_AlbumID"); - tags["MUSICBRAINZ_ALBUMARTISTID"] = StringList("MusicBrainz_AlbumartistID"); - tags["MUSICBRAINZ_ARTISTID"] = StringList("MusicBrainz_ArtistID"); - tags["MUSICBRAINZ_RELEASEGROUPID"] = StringList("MusicBrainz_ReleasegroupID"); - tags["MUSICBRAINZ_RELEASETRACKID"] = StringList("MusicBrainz_ReleasetrackID"); - tags["MUSICBRAINZ_TRACKID"] = StringList("MusicBrainz_TrackID"); - tags["MUSICBRAINZ_WORKID"] = StringList("MusicBrainz_WorkID"); - tags["ORIGINALALBUM"] = StringList("Original Album"); - tags["ORIGINALARTIST"] = StringList("Original Artist"); - tags["ORIGINALDATE"] = StringList("2021-01-03 13:52:19"); - tags["ORIGINALFILENAME"] = StringList("Original Filename"); - tags["ORIGINALLYRICIST"] = StringList("Original Lyricist"); - tags["OWNER"] = StringList("Owner"); - tags["PAYMENTWEBPAGE"] = StringList("Payment Web Page"); - tags["PERFORMER:DRUMS"] = StringList("Drummer"); - tags["PERFORMER:GUITAR"] = StringList("Guitarist"); - tags["PLAYLISTDELAY"] = StringList("10"); - tags["PODCAST"] = StringList(); - tags["PODCASTCATEGORY"] = StringList("Podcast Category"); - tags["PODCASTDESC"] = StringList("Podcast Description"); - tags["PODCASTID"] = StringList("Podcast ID"); - tags["PODCASTURL"] = StringList("Podcast URL"); - tags["PRODUCEDNOTICE"] = StringList("2021 Produced Notice"); - tags["PRODUCER"] = StringList("Producer"); - tags["PUBLISHERWEBPAGE"] = StringList("Publisher Web Page"); - tags["RADIOSTATION"] = StringList("Radio Station"); - tags["RADIOSTATIONOWNER"] = StringList("Radio Station Owner"); - tags["RELEASECOUNTRY"] = StringList("Release Country"); - tags["RELEASESTATUS"] = StringList("Release Status"); - tags["RELEASETYPE"] = StringList("Release Type"); - tags["REMIXER"] = StringList("Remixer"); - tags["SCRIPT"] = StringList("Script"); - tags["SUBTITLE"] = StringList("Subtitle"); - tags["TITLE"] = StringList("Title"); - tags["TITLESORT"] = StringList("Title Sort"); - tags["TRACKNUMBER"] = StringList("2/4"); - tags["URL:UDESC"] = StringList("URL"); - - ScopedFileCopy copy("xing", ".mp3"); - { - MPEG::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - CPPUNIT_ASSERT(properties.isEmpty()); - f.setProperties(tags); - f.save(); - } - { - const MPEG::File f(copy.fileName().c_str()); - PropertyMap properties = f.properties(); - if (tags != properties) { - CPPUNIT_ASSERT_EQUAL(tags.toString(), properties.toString()); - } - CPPUNIT_ASSERT(tags == properties); - } - } - - void testRepeatedSave1() - { - ScopedFileCopy copy("xing", ".mp3"); - - { - MPEG::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle(std::string(4096, 'X').c_str()); - f.save(); - } - { - MPEG::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle(""); - f.save(); - f.ID3v2Tag(true)->setTitle(std::string(4096, 'X').c_str()); - f.save(); - CPPUNIT_ASSERT_EQUAL(5141L, f.firstFrameOffset()); - } - } - - void testRepeatedSave2() - { - ScopedFileCopy copy("xing", ".mp3"); - - MPEG::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle("0123456789"); - f.save(); - f.save(); - CPPUNIT_ASSERT_EQUAL(-1L, f.find("ID3", 3)); - } - - void testRepeatedSave3() - { - ScopedFileCopy copy("xing", ".mp3"); - - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasAPETag()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - - f.APETag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.save(); - f.APETag()->setTitle("0"); - f.save(); - f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.APETag()->setTitle("01234 56789 ABCDE FGHIJ 01234 56789 ABCDE FGHIJ 01234 56789"); - f.save(); - } - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasAPETag()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - } - } - - void testEmptyID3v2() - { - ScopedFileCopy copy("xing", ".mp3"); - - { - MPEG::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle("0123456789"); - f.save(MPEG::File::ID3v2); - } - { - MPEG::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle(""); - f.save(MPEG::File::ID3v2, File::StripNone); - } - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - } - } - - void testEmptyID3v1() - { - ScopedFileCopy copy("xing", ".mp3"); - - { - MPEG::File f(copy.fileName().c_str()); - f.ID3v1Tag(true)->setTitle("0123456789"); - f.save(MPEG::File::ID3v1); - } - { - MPEG::File f(copy.fileName().c_str()); - f.ID3v1Tag(true)->setTitle(""); - f.save(MPEG::File::ID3v1, File::StripNone); - } - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - } - } - - void testEmptyAPE() - { - ScopedFileCopy copy("xing", ".mp3"); - - { - MPEG::File f(copy.fileName().c_str()); - f.APETag(true)->setTitle("0123456789"); - f.save(MPEG::File::APE); - } - { - MPEG::File f(copy.fileName().c_str()); - f.APETag(true)->setTitle(""); - f.save(MPEG::File::APE, File::StripNone); - } - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasAPETag()); - } - } - - void testIgnoreGarbage() - { - const ScopedFileCopy copy("garbage", ".mp3"); - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(2255L, f.firstFrameOffset()); - CPPUNIT_ASSERT_EQUAL(6015L, f.lastFrameOffset()); - CPPUNIT_ASSERT_EQUAL(String("Title A"), f.ID3v2Tag()->title()); - f.ID3v2Tag()->setTitle("Title B"); - f.save(); - } - { - MPEG::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String("Title B"), f.ID3v2Tag()->title()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestMPEG); diff --git a/Frameworks/TagLib/taglib/tests/test_ogg.cpp b/Frameworks/TagLib/taglib/tests/test_ogg.cpp deleted file mode 100644 index 6564a2474..000000000 --- a/Frameworks/TagLib/taglib/tests/test_ogg.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <oggfile.h> -#include <vorbisfile.h> -#include <oggpageheader.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestOGG : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestOGG); - CPPUNIT_TEST(testSimple); - CPPUNIT_TEST(testSplitPackets1); - CPPUNIT_TEST(testSplitPackets2); - CPPUNIT_TEST(testDictInterface1); - CPPUNIT_TEST(testDictInterface2); - CPPUNIT_TEST(testAudioProperties); - CPPUNIT_TEST(testPageChecksum); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testSimple() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - { - Vorbis::File f(newname.c_str()); - f.tag()->setArtist("The Artist"); - f.save(); - } - { - Vorbis::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("The Artist"), f.tag()->artist()); - } - } - - void testSplitPackets1() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - const String text = longText(128 * 1024, true); - - { - Vorbis::File f(newname.c_str()); - f.tag()->setTitle(text); - f.save(); - } - { - Vorbis::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(136383L, f.length()); - CPPUNIT_ASSERT_EQUAL(19, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(30U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(131127U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(3832U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(text, f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - - f.tag()->setTitle("ABCDE"); - f.save(); - } - { - Vorbis::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(4370L, f.length()); - CPPUNIT_ASSERT_EQUAL(3, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(30U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(60U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(3832U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(String("ABCDE"), f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - } - } - - void testSplitPackets2() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - const String text = longText(60890, true); - - { - Vorbis::File f(newname.c_str()); - f.tag()->setTitle(text); - f.save(); - } - { - Vorbis::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(text, f.tag()->title()); - - f.tag()->setTitle("ABCDE"); - f.save(); - } - { - Vorbis::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(String("ABCDE"), f.tag()->title()); - } - } - - void testDictInterface1() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - Vorbis::File f(newname.c_str()); - - CPPUNIT_ASSERT_EQUAL((unsigned int)0, f.tag()->properties().size()); - - PropertyMap newTags; - StringList values("value 1"); - values.append("value 2"); - newTags["ARTIST"] = values; - f.tag()->setProperties(newTags); - - PropertyMap map = f.tag()->properties(); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, map.size()); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, map["ARTIST"].size()); - CPPUNIT_ASSERT_EQUAL(String("value 1"), map["ARTIST"][0]); - } - - void testDictInterface2() - { - ScopedFileCopy copy("test", ".ogg"); - string newname = copy.fileName(); - - Vorbis::File f(newname.c_str()); - PropertyMap tags = f.tag()->properties(); - - CPPUNIT_ASSERT_EQUAL((unsigned int)2, tags["UNUSUALTAG"].size()); - CPPUNIT_ASSERT_EQUAL(String("usual value"), tags["UNUSUALTAG"][0]); - CPPUNIT_ASSERT_EQUAL(String("another value"), tags["UNUSUALTAG"][1]); - CPPUNIT_ASSERT_EQUAL( - String("\xC3\xB6\xC3\xA4\xC3\xBC\x6F\xCE\xA3\xC3\xB8", String::UTF8), - tags["UNICODETAG"][0]); - - tags["UNICODETAG"][0] = String( - "\xCE\xBD\xCE\xB5\xCF\x89\x20\xCE\xBD\xCE\xB1\xCE\xBB\xCF\x85\xCE\xB5", String::UTF8); - tags.erase("UNUSUALTAG"); - f.tag()->setProperties(tags); - CPPUNIT_ASSERT_EQUAL( - String("\xCE\xBD\xCE\xB5\xCF\x89\x20\xCE\xBD\xCE\xB1\xCE\xBB\xCF\x85\xCE\xB5", String::UTF8), - f.tag()->properties()["UNICODETAG"][0]); - CPPUNIT_ASSERT_EQUAL(false, f.tag()->properties().contains("UNUSUALTAG")); - } - - void testAudioProperties() - { - Ogg::Vorbis::File f(TEST_FILE_PATH_C("empty.ogg")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->vorbisVersion()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrateMaximum()); - CPPUNIT_ASSERT_EQUAL(112000, f.audioProperties()->bitrateNominal()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrateMinimum()); - } - - void testPageChecksum() - { - ScopedFileCopy copy("empty", ".ogg"); - - { - Vorbis::File f(copy.fileName().c_str()); - f.tag()->setArtist("The Artist"); - f.save(); - - f.seek(0x50); - CPPUNIT_ASSERT_EQUAL((unsigned int)0x3d3bd92d, f.readBlock(4).toUInt(0, true)); - } - { - Vorbis::File f(copy.fileName().c_str()); - f.tag()->setArtist("The Artist 2"); - f.save(); - - f.seek(0x50); - CPPUNIT_ASSERT_EQUAL((unsigned int)0xd985291c, f.readBlock(4).toUInt(0, true)); - } - - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestOGG); diff --git a/Frameworks/TagLib/taglib/tests/test_oggflac.cpp b/Frameworks/TagLib/taglib/tests/test_oggflac.cpp deleted file mode 100644 index 1d00d1231..000000000 --- a/Frameworks/TagLib/taglib/tests/test_oggflac.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tstringlist.h> -#include <tbytevectorlist.h> -#include <oggfile.h> -#include <oggflacfile.h> -#include <oggpageheader.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestOggFLAC : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestOggFLAC); - CPPUNIT_TEST(testFramingBit); - CPPUNIT_TEST(testFuzzedFile); - CPPUNIT_TEST(testSplitPackets); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testFramingBit() - { - ScopedFileCopy copy("empty_flac", ".oga"); - string newname = copy.fileName(); - - { - Ogg::FLAC::File f(newname.c_str()); - f.tag()->setArtist("The Artist"); - f.save(); - } - { - Ogg::FLAC::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(String("The Artist"), f.tag()->artist()); - - f.seek(0, File::End); - CPPUNIT_ASSERT_EQUAL(9134L, f.tell()); - } - } - - void testFuzzedFile() - { - Ogg::FLAC::File f(TEST_FILE_PATH_C("segfault.oga")); - CPPUNIT_ASSERT(!f.isValid()); - } - - void testSplitPackets() - { - ScopedFileCopy copy("empty_flac", ".oga"); - string newname = copy.fileName(); - - const String text = longText(128 * 1024, true); - - { - Ogg::FLAC::File f(newname.c_str()); - f.tag()->setTitle(text); - f.save(); - } - { - Ogg::FLAC::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(141141L, f.length()); - CPPUNIT_ASSERT_EQUAL(21, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(51U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(131126U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(22U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(8196U, f.packet(3).size()); - CPPUNIT_ASSERT_EQUAL(text, f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3705, f.audioProperties()->lengthInMilliseconds()); - - f.tag()->setTitle("ABCDE"); - f.save(); - } - { - Ogg::FLAC::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(9128L, f.length()); - CPPUNIT_ASSERT_EQUAL(5, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(51U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(59U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(22U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(8196U, f.packet(3).size()); - CPPUNIT_ASSERT_EQUAL(String("ABCDE"), f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3705, f.audioProperties()->lengthInMilliseconds()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestOggFLAC); diff --git a/Frameworks/TagLib/taglib/tests/test_opus.cpp b/Frameworks/TagLib/taglib/tests/test_opus.cpp deleted file mode 100644 index 9a49d239a..000000000 --- a/Frameworks/TagLib/taglib/tests/test_opus.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tbytevectorlist.h> -#include <opusfile.h> -#include <oggpageheader.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestOpus : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestOpus); - CPPUNIT_TEST(testAudioProperties); - CPPUNIT_TEST(testReadComments); - CPPUNIT_TEST(testWriteComments); - CPPUNIT_TEST(testSplitPackets); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAudioProperties() - { - Ogg::Opus::File f(TEST_FILE_PATH_C("correctness_gain_silent_output.opus")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(7, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(7737, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(36, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(48000, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(48000, f.audioProperties()->inputSampleRate()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->opusVersion()); - } - - void testReadComments() - { - Ogg::Opus::File f(TEST_FILE_PATH_C("correctness_gain_silent_output.opus")); - CPPUNIT_ASSERT_EQUAL(StringList("Xiph.Org Opus testvectormaker"), f.tag()->fieldListMap()["ENCODER"]); - CPPUNIT_ASSERT(f.tag()->fieldListMap().contains("TESTDESCRIPTION")); - CPPUNIT_ASSERT(!f.tag()->fieldListMap().contains("ARTIST")); - CPPUNIT_ASSERT_EQUAL(String("libopus 0.9.11-66-g64c2dd7"), f.tag()->vendorID()); - } - - void testWriteComments() - { - ScopedFileCopy copy("correctness_gain_silent_output", ".opus"); - string filename = copy.fileName(); - - { - Ogg::Opus::File f(filename.c_str()); - f.tag()->setArtist("Your Tester"); - f.save(); - } - { - Ogg::Opus::File f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(StringList("Xiph.Org Opus testvectormaker"), f.tag()->fieldListMap()["ENCODER"]); - CPPUNIT_ASSERT(f.tag()->fieldListMap().contains("TESTDESCRIPTION")); - CPPUNIT_ASSERT_EQUAL(StringList("Your Tester"), f.tag()->fieldListMap()["ARTIST"]); - CPPUNIT_ASSERT_EQUAL(String("libopus 0.9.11-66-g64c2dd7"), f.tag()->vendorID()); - } - } - - void testSplitPackets() - { - ScopedFileCopy copy("correctness_gain_silent_output", ".opus"); - string newname = copy.fileName(); - - const String text = longText(128 * 1024, true); - - { - Ogg::Opus::File f(newname.c_str()); - f.tag()->setTitle(text); - f.save(); - } - { - Ogg::Opus::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(167534L, f.length()); - CPPUNIT_ASSERT_EQUAL(27, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(19U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(131380U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(5U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(5U, f.packet(3).size()); - CPPUNIT_ASSERT_EQUAL(text, f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(7737, f.audioProperties()->lengthInMilliseconds()); - - f.tag()->setTitle("ABCDE"); - f.save(); - } - { - Ogg::Opus::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(35521L, f.length()); - CPPUNIT_ASSERT_EQUAL(11, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(19U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(313U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(5U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(5U, f.packet(3).size()); - CPPUNIT_ASSERT_EQUAL(String("ABCDE"), f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(7737, f.audioProperties()->lengthInMilliseconds()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestOpus); diff --git a/Frameworks/TagLib/taglib/tests/test_propertymap.cpp b/Frameworks/TagLib/taglib/tests/test_propertymap.cpp deleted file mode 100644 index 2125fb57d..000000000 --- a/Frameworks/TagLib/taglib/tests/test_propertymap.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/*************************************************************************** - copyright : (C) 2012 by Michael Helmling - email : helmling@mathematik.uni-kl.de - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tpropertymap.h> -#include <tag.h> -#include <id3v1tag.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace TagLib; - -class TestPropertyMap : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestPropertyMap); - CPPUNIT_TEST(testInvalidKeys); - CPPUNIT_TEST(testGetSet); - CPPUNIT_TEST_SUITE_END(); - -public: - void testInvalidKeys() - { - PropertyMap map1; - CPPUNIT_ASSERT(map1.isEmpty()); - map1[L"\x00c4\x00d6\x00dc"].append("test"); - CPPUNIT_ASSERT_EQUAL(map1.size(), 1u); - - PropertyMap map2; - map2[L"\x00c4\x00d6\x00dc"].append("test"); - CPPUNIT_ASSERT(map1 == map2); - CPPUNIT_ASSERT(map1.contains(map2)); - - map2["ARTIST"] = String("Test Artist"); - CPPUNIT_ASSERT(map1 != map2); - CPPUNIT_ASSERT(map2.contains(map1)); - - map2[L"\x00c4\x00d6\x00dc"].append("test 2"); - CPPUNIT_ASSERT(!map2.contains(map1)); - - } - - void testGetSet() - { - ID3v1::Tag tag; - - tag.setTitle("Test Title"); - tag.setArtist("Test Artist"); - tag.setAlbum("Test Album"); - tag.setYear(2015); - tag.setTrack(10); - - { - PropertyMap prop = tag.properties(); - CPPUNIT_ASSERT_EQUAL(String("Test Title"), prop["TITLE" ].front()); - CPPUNIT_ASSERT_EQUAL(String("Test Artist"), prop["ARTIST" ].front()); - CPPUNIT_ASSERT_EQUAL(String("Test Album"), prop["ALBUM" ].front()); - CPPUNIT_ASSERT_EQUAL(String("2015"), prop["DATE" ].front()); - CPPUNIT_ASSERT_EQUAL(String("10"), prop["TRACKNUMBER"].front()); - - prop["TITLE" ].front() = "Test Title 2"; - prop["ARTIST" ].front() = "Test Artist 2"; - prop["TRACKNUMBER"].front() = "5"; - - tag.setProperties(prop); - } - - CPPUNIT_ASSERT_EQUAL(String("Test Title 2"), tag.title()); - CPPUNIT_ASSERT_EQUAL(String("Test Artist 2"), tag.artist()); - CPPUNIT_ASSERT_EQUAL(5U, tag.track()); - - PropertyMap props = tag.properties(); - CPPUNIT_ASSERT_EQUAL(StringList("Test Artist 2"), props.find("ARTIST")->second); - CPPUNIT_ASSERT(props.find("COMMENT") == props.end()); - props.replace("ARTIST", StringList("Test Artist 3")); - CPPUNIT_ASSERT_EQUAL(StringList("Test Artist 3"), props["ARTIST"]); - - PropertyMap eraseMap; - eraseMap.insert("ARTIST", StringList()); - eraseMap.insert("ALBUM", StringList()); - eraseMap.insert("TITLE", StringList()); - props.erase(eraseMap); - CPPUNIT_ASSERT_EQUAL(String("DATE=2015\nTRACKNUMBER=5\n"), props.toString()); - - tag.setProperties(PropertyMap()); - - CPPUNIT_ASSERT_EQUAL(String(""), tag.title()); - CPPUNIT_ASSERT_EQUAL(String(""), tag.artist()); - CPPUNIT_ASSERT_EQUAL(0U, tag.track()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestPropertyMap); diff --git a/Frameworks/TagLib/taglib/tests/test_riff.cpp b/Frameworks/TagLib/taglib/tests/test_riff.cpp deleted file mode 100644 index f9a20dfb1..000000000 --- a/Frameworks/TagLib/taglib/tests/test_riff.cpp +++ /dev/null @@ -1,298 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <tag.h> -#include <tbytevectorlist.h> -#include <rifffile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class PublicRIFF : public RIFF::File -{ -public: - PublicRIFF(FileName file) : RIFF::File(file, BigEndian) {}; - unsigned int riffSize() { return RIFF::File::riffSize(); }; - unsigned int chunkCount() { return RIFF::File::chunkCount(); }; - unsigned int chunkOffset(unsigned int i) { return RIFF::File::chunkOffset(i); }; - unsigned int chunkPadding(unsigned int i) { return RIFF::File::chunkPadding(i); }; - unsigned int chunkDataSize(unsigned int i) { return RIFF::File::chunkDataSize(i); }; - ByteVector chunkName(unsigned int i) { return RIFF::File::chunkName(i); }; - ByteVector chunkData(unsigned int i) { return RIFF::File::chunkData(i); }; - void setChunkData(unsigned int i, const ByteVector &data) { - RIFF::File::setChunkData(i, data); - } - void setChunkData(const ByteVector &name, const ByteVector &data) { - RIFF::File::setChunkData(name, data); - }; - virtual TagLib::Tag* tag() const { return 0; }; - virtual TagLib::AudioProperties* audioProperties() const { return 0;}; - virtual bool save() { return false; }; - void removeChunk(unsigned int i) { RIFF::File::removeChunk(i); } - void removeChunk(const ByteVector &name) { RIFF::File::removeChunk(name); } -}; - -class TestRIFF : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestRIFF); - CPPUNIT_TEST(testPadding); - CPPUNIT_TEST(testLastChunkAtEvenPosition); - CPPUNIT_TEST(testLastChunkAtEvenPosition2); - CPPUNIT_TEST(testLastChunkAtEvenPosition3); - CPPUNIT_TEST(testChunkOffset); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testPadding() - { - ScopedFileCopy copy("empty", ".aiff"); - string filename = copy.fileName(); - - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x1728 + 8), f.chunkOffset(2)); - - f.setChunkData("TEST", "foo"); - } - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f.chunkData(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(3), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x1728 + 8), f.chunkOffset(2)); - - f.setChunkData("SSND", "abcd"); - - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), f.chunkData(1)); - - f.seek(f.chunkOffset(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), f.readBlock(4)); - - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f.chunkData(2)); - - f.seek(f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f.readBlock(3)); - } - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("abcd"), f.chunkData(1)); - - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("foo"), f.chunkData(2)); - } - } - - void testLastChunkAtEvenPosition() - { - ScopedFileCopy copy("noise", ".aif"); - string filename = copy.fileName(); - - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0xff0 + 8), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(long(4400), f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4399 - 8), f.riffSize()); - f.setChunkData("TEST", "abcd"); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4088), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4408), f.chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4), f.chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0), f.chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4412 - 8), f.riffSize()); - } - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4088), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4408), f.chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4), f.chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0), f.chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(long(4412), f.length()); - } - } - - void testLastChunkAtEvenPosition2() - { - ScopedFileCopy copy("noise_odd", ".aif"); - string filename = copy.fileName(); - - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0xff0 + 8), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(long(4399), f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4399 - 8), f.riffSize()); - f.setChunkData("TEST", "abcd"); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4088), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4408), f.chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4), f.chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0), f.chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4412 - 8), f.riffSize()); - } - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4088), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4408), f.chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4), f.chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0), f.chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(long(4412), f.length()); - } - } - - void testLastChunkAtEvenPosition3() - { - ScopedFileCopy copy("noise_odd", ".aif"); - string filename = copy.fileName(); - - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0xff0 + 8), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL(long(4399), f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4399 - 8), f.riffSize()); - f.setChunkData("TEST", "abc"); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4088), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4408), f.chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(3), f.chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4412 - 8), f.riffSize()); - } - { - PublicRIFF f(filename.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4088), f.chunkOffset(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(311), f.chunkDataSize(2)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(4408), f.chunkOffset(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(3), f.chunkDataSize(3)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(3)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(1), f.chunkPadding(3)); - CPPUNIT_ASSERT_EQUAL(long(4412), f.length()); - } - } - - void testChunkOffset() - { - ScopedFileCopy copy("empty", ".aiff"); - string filename = copy.fileName(); - - PublicRIFF f(filename.c_str()); - - CPPUNIT_ASSERT_EQUAL(5928U, f.riffSize()); - CPPUNIT_ASSERT_EQUAL(5936L, f.length()); - CPPUNIT_ASSERT_EQUAL(ByteVector("COMM"), f.chunkName(0)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x000C + 8), f.chunkOffset(0)); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.chunkName(1)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x0026 + 8), f.chunkOffset(1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.chunkName(2)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x1728 + 8), f.chunkOffset(2)); - - const ByteVector data(0x400, ' '); - f.setChunkData("SSND", data); - CPPUNIT_ASSERT_EQUAL(1070U, f.riffSize()); - CPPUNIT_ASSERT_EQUAL(1078L, f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x000C + 8), f.chunkOffset(0)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x0026 + 8), f.chunkOffset(1)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x042E + 8), f.chunkOffset(2)); - - f.seek(f.chunkOffset(0) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("COMM"), f.readBlock(4)); - f.seek(f.chunkOffset(1) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.readBlock(4)); - f.seek(f.chunkOffset(2) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.readBlock(4)); - - f.setChunkData(0, data); - CPPUNIT_ASSERT_EQUAL(2076U, f.riffSize()); - CPPUNIT_ASSERT_EQUAL(2084L, f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x000C + 8), f.chunkOffset(0)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x0414 + 8), f.chunkOffset(1)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x081C + 8), f.chunkOffset(2)); - - f.seek(f.chunkOffset(0) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("COMM"), f.readBlock(4)); - f.seek(f.chunkOffset(1) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("SSND"), f.readBlock(4)); - f.seek(f.chunkOffset(2) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.readBlock(4)); - - f.removeChunk("SSND"); - CPPUNIT_ASSERT_EQUAL(1044U, f.riffSize()); - CPPUNIT_ASSERT_EQUAL(1052L, f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x000C + 8), f.chunkOffset(0)); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x0414 + 8), f.chunkOffset(1)); - - f.seek(f.chunkOffset(0) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("COMM"), f.readBlock(4)); - f.seek(f.chunkOffset(1) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.readBlock(4)); - - f.removeChunk(0); - CPPUNIT_ASSERT_EQUAL(12U, f.riffSize()); - CPPUNIT_ASSERT_EQUAL(20L, f.length()); - CPPUNIT_ASSERT_EQUAL((unsigned int)(0x000C + 8), f.chunkOffset(0)); - - f.seek(f.chunkOffset(0) - 8); - CPPUNIT_ASSERT_EQUAL(ByteVector("TEST"), f.readBlock(4)); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestRIFF); - diff --git a/Frameworks/TagLib/taglib/tests/test_s3m.cpp b/Frameworks/TagLib/taglib/tests/test_s3m.cpp deleted file mode 100644 index fd211d220..000000000 --- a/Frameworks/TagLib/taglib/tests/test_s3m.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <s3mfile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -static const String titleBefore("test song name"); -static const String titleAfter("changed title"); - -static const String commentBefore( - "This is an instrument name.\n" - "Module file formats\n" - "abuse instrument names\n" - "as multiline comments.\n" - " "); - -static const String newComment( - "This is an instrument name!\n" - "Module file formats\n" - "abuse instrument names\n" - "as multiline comments.\n" - "-----------------------------------\n" - "This line will be dropped and the previous is truncated."); - -static const String commentAfter( - "This is an instrument name!\n" - "Module file formats\n" - "abuse instrument names\n" - "as multiline comments.\n" - "---------------------------"); - -class TestS3M : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestS3M); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testWriteTags); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.s3m"), titleBefore, commentBefore); - } - - void testWriteTags() - { - ScopedFileCopy copy("test", ".s3m"); - { - S3M::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(newComment); - file.tag()->setTrackerName("won't be saved"); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, commentAfter); - CPPUNIT_ASSERT(fileEqual( - copy.fileName(), - TEST_FILE_PATH_C("changed.s3m"))); - } - -private: - void testRead(FileName fileName, const String &title, const String &comment) - { - S3M::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - S3M::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL( 0, p->length()); - CPPUNIT_ASSERT_EQUAL( 0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL( 0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, p->channels()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL(false, p->stereo()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 5, p->sampleCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0, p->flags()); - CPPUNIT_ASSERT_EQUAL((unsigned short)4896, p->trackerVersion()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 2, p->fileFormatVersion()); - CPPUNIT_ASSERT_EQUAL((unsigned char) 64, p->globalVolume()); - CPPUNIT_ASSERT_EQUAL((unsigned char) 48, p->masterVolume()); - CPPUNIT_ASSERT_EQUAL((unsigned char)125, p->tempo()); - CPPUNIT_ASSERT_EQUAL((unsigned char) 6, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String(), t->artist()); - CPPUNIT_ASSERT_EQUAL(String(), t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String(), t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String("ScreamTracker III"), t->trackerName()); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestS3M); diff --git a/Frameworks/TagLib/taglib/tests/test_speex.cpp b/Frameworks/TagLib/taglib/tests/test_speex.cpp deleted file mode 100644 index 1f5bb754a..000000000 --- a/Frameworks/TagLib/taglib/tests/test_speex.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/*************************************************************************** - copyright : (C) 2015 by Tsuda Kageyu - email : tsuda.kageyu@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <speexfile.h> -#include <oggpageheader.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestSpeex : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestSpeex); - CPPUNIT_TEST(testAudioProperties); - CPPUNIT_TEST(testSplitPackets); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testAudioProperties() - { - Ogg::Speex::File f(TEST_FILE_PATH_C("empty.spx")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(53, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(-1, f.audioProperties()->bitrateNominal()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - } - - void testSplitPackets() - { - ScopedFileCopy copy("empty", ".spx"); - string newname = copy.fileName(); - - const String text = longText(128 * 1024, true); - - { - Ogg::Speex::File f(newname.c_str()); - f.tag()->setTitle(text); - f.save(); - } - { - Ogg::Speex::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(156330L, f.length()); - CPPUNIT_ASSERT_EQUAL(23, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(80U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(131116U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(93U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(93U, f.packet(3).size()); - CPPUNIT_ASSERT_EQUAL(text, f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - - f.tag()->setTitle("ABCDE"); - f.save(); - } - { - Ogg::Speex::File f(newname.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT_EQUAL(24317L, f.length()); - CPPUNIT_ASSERT_EQUAL(7, f.lastPageHeader()->pageSequenceNumber()); - CPPUNIT_ASSERT_EQUAL(80U, f.packet(0).size()); - CPPUNIT_ASSERT_EQUAL(49U, f.packet(1).size()); - CPPUNIT_ASSERT_EQUAL(93U, f.packet(2).size()); - CPPUNIT_ASSERT_EQUAL(93U, f.packet(3).size()); - CPPUNIT_ASSERT_EQUAL(String("ABCDE"), f.tag()->title()); - - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestSpeex); diff --git a/Frameworks/TagLib/taglib/tests/test_string.cpp b/Frameworks/TagLib/taglib/tests/test_string.cpp deleted file mode 100644 index 7b60b8147..000000000 --- a/Frameworks/TagLib/taglib/tests/test_string.cpp +++ /dev/null @@ -1,371 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <tstring.h> -#include <string.h> -#include <cppunit/extensions/HelperMacros.h> - -using namespace std; -using namespace TagLib; - -class TestString : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestString); - CPPUNIT_TEST(testString); - CPPUNIT_TEST(testRfind); - CPPUNIT_TEST(testUTF16Encode); - CPPUNIT_TEST(testUTF16Decode); - CPPUNIT_TEST(testUTF16DecodeInvalidBOM); - CPPUNIT_TEST(testUTF16DecodeEmptyWithBOM); - CPPUNIT_TEST(testSurrogatePair); - CPPUNIT_TEST(testAppendCharDetach); - CPPUNIT_TEST(testAppendStringDetach); - CPPUNIT_TEST(testToInt); - CPPUNIT_TEST(testFromInt); - CPPUNIT_TEST(testSubstr); - CPPUNIT_TEST(testNewline); - CPPUNIT_TEST(testUpper); - CPPUNIT_TEST(testEncodeNonLatin1); - CPPUNIT_TEST(testEncodeEmpty); - CPPUNIT_TEST(testEncodeNonBMP); - CPPUNIT_TEST(testIterator); - CPPUNIT_TEST(testInvalidUTF8); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testString() - { - String s = "taglib string"; - ByteVector v = "taglib string"; - CPPUNIT_ASSERT(v == s.data(String::Latin1)); - - char str[] = "taglib string"; - CPPUNIT_ASSERT(strcmp(s.toCString(), str) == 0); - CPPUNIT_ASSERT(s == "taglib string"); - CPPUNIT_ASSERT(s != "taglib STRING"); - CPPUNIT_ASSERT(s != "taglib"); - CPPUNIT_ASSERT(s != "taglib string taglib"); - CPPUNIT_ASSERT(s == L"taglib string"); - CPPUNIT_ASSERT(s != L"taglib STRING"); - CPPUNIT_ASSERT(s != L"taglib"); - CPPUNIT_ASSERT(s != L"taglib string taglib"); - - s.clear(); - CPPUNIT_ASSERT(s.isEmpty()); - - String unicode("José Carlos", String::UTF8); - CPPUNIT_ASSERT(strcmp(unicode.toCString(), "Jos\xe9 Carlos") == 0); - - String latin = "Jos\xe9 Carlos"; - CPPUNIT_ASSERT(strcmp(latin.toCString(true), "José Carlos") == 0); - - String c; - c = "1"; - CPPUNIT_ASSERT(c == L"1"); - - c = L'\u4E00'; - CPPUNIT_ASSERT(c == L"\u4E00"); - - String unicode2(unicode.to8Bit(true), String::UTF8); - CPPUNIT_ASSERT(unicode == unicode2); - - String unicode3(L"\u65E5\u672C\u8A9E"); - CPPUNIT_ASSERT(*(unicode3.toCWString() + 1) == L'\u672C'); - - String unicode4(L"\u65e5\u672c\u8a9e", String::UTF16BE); - CPPUNIT_ASSERT(unicode4[1] == L'\u672c'); - - String unicode5(L"\u65e5\u672c\u8a9e", String::UTF16LE); - CPPUNIT_ASSERT(unicode5[1] == L'\u2c67'); - - std::wstring stduni = L"\u65e5\u672c\u8a9e"; - - String unicode6(stduni, String::UTF16BE); - CPPUNIT_ASSERT(unicode6[1] == L'\u672c'); - - String unicode7(stduni, String::UTF16LE); - CPPUNIT_ASSERT(unicode7[1] == L'\u2c67'); - - CPPUNIT_ASSERT(String(" foo ").stripWhiteSpace() == String("foo")); - CPPUNIT_ASSERT(String("foo ").stripWhiteSpace() == String("foo")); - CPPUNIT_ASSERT(String(" foo").stripWhiteSpace() == String("foo")); - CPPUNIT_ASSERT(String("foo").stripWhiteSpace() == String("foo")); - CPPUNIT_ASSERT(String("f o o").stripWhiteSpace() == String("f o o")); - CPPUNIT_ASSERT(String(" f o o ").stripWhiteSpace() == String("f o o")); - - CPPUNIT_ASSERT(memcmp(String("foo").data(String::Latin1).data(), "foo", 3) == 0); - CPPUNIT_ASSERT(memcmp(String("f").data(String::Latin1).data(), "f", 1) == 0); - } - - void testUTF16Encode() - { - String a("foo"); - ByteVector b("\0f\0o\0o", 6); - ByteVector c("f\0o\0o\0", 6); - ByteVector d("\377\376f\0o\0o\0", 8); - CPPUNIT_ASSERT(a.data(String::UTF16BE) != a.data(String::UTF16LE)); - CPPUNIT_ASSERT(b == a.data(String::UTF16BE)); - CPPUNIT_ASSERT(c == a.data(String::UTF16LE)); - CPPUNIT_ASSERT_EQUAL(d, a.data(String::UTF16)); - } - - void testUTF16Decode() - { - String a("foo"); - ByteVector b("\0f\0o\0o", 6); - ByteVector c("f\0o\0o\0", 6); - ByteVector d("\377\376f\0o\0o\0", 8); - CPPUNIT_ASSERT_EQUAL(a, String(b, String::UTF16BE)); - CPPUNIT_ASSERT_EQUAL(a, String(c, String::UTF16LE)); - CPPUNIT_ASSERT_EQUAL(a, String(d, String::UTF16)); - } - - // this test is expected to print "TagLib: String::prepare() - - // Invalid UTF16 string." on the console 3 times - void testUTF16DecodeInvalidBOM() - { - ByteVector b(" ", 1); - ByteVector c(" ", 2); - ByteVector d(" \0f\0o\0o", 8); - CPPUNIT_ASSERT_EQUAL(String(), String(b, String::UTF16)); - CPPUNIT_ASSERT_EQUAL(String(), String(c, String::UTF16)); - CPPUNIT_ASSERT_EQUAL(String(), String(d, String::UTF16)); - } - - void testUTF16DecodeEmptyWithBOM() - { - ByteVector a("\377\376", 2); - ByteVector b("\376\377", 2); - CPPUNIT_ASSERT_EQUAL(String(), String(a, String::UTF16)); - CPPUNIT_ASSERT_EQUAL(String(), String(b, String::UTF16)); - } - - void testSurrogatePair() - { - // Make sure that a surrogate pair is converted into single UTF-8 char - // and vice versa. - - const ByteVector v1("\xff\xfe\x42\xd8\xb7\xdf\xce\x91\x4b\x5c"); - const ByteVector v2("\xf0\xa0\xae\xb7\xe9\x87\x8e\xe5\xb1\x8b"); - - const String s1(v1, String::UTF16); - CPPUNIT_ASSERT_EQUAL(s1.data(String::UTF8), v2); - - const String s2(v2, String::UTF8); - CPPUNIT_ASSERT_EQUAL(s2.data(String::UTF16), v1); - - const ByteVector v3("\xfe\xff\xd8\x01\x30\x42"); - CPPUNIT_ASSERT(String(v3, String::UTF16).data(String::UTF8).isEmpty()); - - const ByteVector v4("\xfe\xff\x30\x42\xdc\x01"); - CPPUNIT_ASSERT(String(v4, String::UTF16).data(String::UTF8).isEmpty()); - - const ByteVector v5("\xfe\xff\xdc\x01\xd8\x01"); - CPPUNIT_ASSERT(String(v5, String::UTF16).data(String::UTF8).isEmpty()); - } - - void testAppendStringDetach() - { - String a("a"); - String b = a; - a += "b"; - CPPUNIT_ASSERT_EQUAL(String("ab"), a); - CPPUNIT_ASSERT_EQUAL(String("a"), b); - } - - void testAppendCharDetach() - { - String a("a"); - String b = a; - a += 'b'; - CPPUNIT_ASSERT_EQUAL(String("ab"), a); - CPPUNIT_ASSERT_EQUAL(String("a"), b); - } - - void testRfind() - { - CPPUNIT_ASSERT_EQUAL(-1, String("foo.bar").rfind(".", 0)); - CPPUNIT_ASSERT_EQUAL(-1, String("foo.bar").rfind(".", 1)); - CPPUNIT_ASSERT_EQUAL(-1, String("foo.bar").rfind(".", 2)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 3)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 4)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 5)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 6)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".", 7)); - CPPUNIT_ASSERT_EQUAL(3, String("foo.bar").rfind(".")); - } - - void testToInt() - { - bool ok; - CPPUNIT_ASSERT_EQUAL(String("123").toInt(&ok), 123); - CPPUNIT_ASSERT_EQUAL(ok, true); - - CPPUNIT_ASSERT_EQUAL(String("-123").toInt(&ok), -123); - CPPUNIT_ASSERT_EQUAL(ok, true); - - CPPUNIT_ASSERT_EQUAL(String("abc").toInt(&ok), 0); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("1x").toInt(&ok), 1); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("").toInt(&ok), 0); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("-").toInt(&ok), 0); - CPPUNIT_ASSERT_EQUAL(ok, false); - - CPPUNIT_ASSERT_EQUAL(String("123").toInt(), 123); - CPPUNIT_ASSERT_EQUAL(String("-123").toInt(), -123); - CPPUNIT_ASSERT_EQUAL(String("123aa").toInt(), 123); - CPPUNIT_ASSERT_EQUAL(String("-123aa").toInt(), -123); - - CPPUNIT_ASSERT_EQUAL(String("0000").toInt(), 0); - CPPUNIT_ASSERT_EQUAL(String("0001").toInt(), 1); - - String("2147483648").toInt(&ok); - CPPUNIT_ASSERT_EQUAL(ok, false); - - String("-2147483649").toInt(&ok); - CPPUNIT_ASSERT_EQUAL(ok, false); - } - - void testFromInt() - { - CPPUNIT_ASSERT_EQUAL(String::number(0), String("0")); - CPPUNIT_ASSERT_EQUAL(String::number(12345678), String("12345678")); - CPPUNIT_ASSERT_EQUAL(String::number(-12345678), String("-12345678")); - } - - void testSubstr() - { - CPPUNIT_ASSERT_EQUAL(String("01"), String("0123456").substr(0, 2)); - CPPUNIT_ASSERT_EQUAL(String("12"), String("0123456").substr(1, 2)); - CPPUNIT_ASSERT_EQUAL(String("123456"), String("0123456").substr(1, 200)); - CPPUNIT_ASSERT_EQUAL(String("0123456"), String("0123456").substr(0, 7)); - CPPUNIT_ASSERT_EQUAL(String("0123456"), String("0123456").substr(0, 200)); - } - - void testNewline() - { - ByteVector cr("abc\x0dxyz", 7); - ByteVector lf("abc\x0axyz", 7); - ByteVector crlf("abc\x0d\x0axyz", 8); - - CPPUNIT_ASSERT_EQUAL((unsigned int)7, String(cr).size()); - CPPUNIT_ASSERT_EQUAL((unsigned int)7, String(lf).size()); - CPPUNIT_ASSERT_EQUAL((unsigned int)8, String(crlf).size()); - - CPPUNIT_ASSERT_EQUAL(L'\x0d', String(cr)[3]); - CPPUNIT_ASSERT_EQUAL(L'\x0a', String(lf)[3]); - CPPUNIT_ASSERT_EQUAL(L'\x0d', String(crlf)[3]); - CPPUNIT_ASSERT_EQUAL(L'\x0a', String(crlf)[4]); - } - - void testUpper() - { - String s1 = "tagLIB 012 strING"; - String s2 = s1.upper(); - CPPUNIT_ASSERT_EQUAL(String("tagLIB 012 strING"), s1); - CPPUNIT_ASSERT_EQUAL(String("TAGLIB 012 STRING"), s2); - } - - void testEncodeNonLatin1() - { - const String jpn(L"\u65E5\u672C\u8A9E"); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xE5\x2C\x9E"), jpn.data(String::Latin1)); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"), jpn.data(String::UTF8)); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xFF\xFE\xE5\x65\x2C\x67\x9E\x8A"), jpn.data(String::UTF16)); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xE5\x65\x2C\x67\x9E\x8A"), jpn.data(String::UTF16LE)); - CPPUNIT_ASSERT_EQUAL(ByteVector("\x65\xE5\x67\x2C\x8A\x9E"), jpn.data(String::UTF16BE)); - CPPUNIT_ASSERT_EQUAL(std::string("\xE5\x2C\x9E"), jpn.to8Bit(false)); - CPPUNIT_ASSERT_EQUAL(std::string("\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"), jpn.to8Bit(true)); - } - - void testEncodeEmpty() - { - const String empty; - CPPUNIT_ASSERT(empty.data(String::Latin1).isEmpty()); - CPPUNIT_ASSERT(empty.data(String::UTF8).isEmpty()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xFF\xFE"), empty.data(String::UTF16)); - CPPUNIT_ASSERT(empty.data(String::UTF16LE).isEmpty()); - CPPUNIT_ASSERT(empty.data(String::UTF16BE).isEmpty()); - CPPUNIT_ASSERT(empty.to8Bit(false).empty()); - CPPUNIT_ASSERT(empty.to8Bit(true).empty()); - } - - void testEncodeNonBMP() - { - const ByteVector a("\xFF\xFE\x3C\xD8\x50\xDD\x40\xD8\xF5\xDC\x3C\xD8\x00\xDE", 14); - const ByteVector b("\xF0\x9F\x85\x90\xF0\xA0\x83\xB5\xF0\x9F\x88\x80"); - CPPUNIT_ASSERT_EQUAL(b, String(a, String::UTF16).data(String::UTF8)); - } - - void testIterator() - { - String s1 = "taglib string"; - String s2 = s1; - - String::Iterator it1 = s1.begin(); - String::Iterator it2 = s2.begin(); - - CPPUNIT_ASSERT_EQUAL(L't', *it1); - CPPUNIT_ASSERT_EQUAL(L't', *it2); - - std::advance(it1, 4); - std::advance(it2, 4); - *it2 = L'I'; - CPPUNIT_ASSERT_EQUAL(L'i', *it1); - CPPUNIT_ASSERT_EQUAL(L'I', *it2); - } - - void testInvalidUTF8() - { - CPPUNIT_ASSERT_EQUAL(String("/"), String(ByteVector("\x2F"), String::UTF8)); - CPPUNIT_ASSERT(String(ByteVector("\xC0\xAF"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xE0\x80\xAF"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xF0\x80\x80\xAF"), String::UTF8).isEmpty()); - - CPPUNIT_ASSERT(String(ByteVector("\xF8\x80\x80\x80\x80"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xFC\x80\x80\x80\x80\x80"), String::UTF8).isEmpty()); - - CPPUNIT_ASSERT(String(ByteVector("\xC2"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xE0\x80"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xF0\x80\x80"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xF8\x80\x80\x80"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xFC\x80\x80\x80\x80"), String::UTF8).isEmpty()); - - CPPUNIT_ASSERT(String('\x80', String::UTF8).isEmpty()); - - CPPUNIT_ASSERT(String(ByteVector("\xED\xA0\x80\xED\xB0\x80"), String::UTF8).isEmpty()); - CPPUNIT_ASSERT(String(ByteVector("\xED\xB0\x80\xED\xA0\x80"), String::UTF8).isEmpty()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestString); - diff --git a/Frameworks/TagLib/taglib/tests/test_synchdata.cpp b/Frameworks/TagLib/taglib/tests/test_synchdata.cpp deleted file mode 100644 index 08d650794..000000000 --- a/Frameworks/TagLib/taglib/tests/test_synchdata.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - - -#include <id3v2synchdata.h> -#include <cppunit/extensions/HelperMacros.h> - -using namespace std; -using namespace TagLib; - -class TestID3v2SynchData : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestID3v2SynchData); - CPPUNIT_TEST(test1); - CPPUNIT_TEST(test2); - CPPUNIT_TEST(test3); - CPPUNIT_TEST(testToUIntBroken); - CPPUNIT_TEST(testToUIntBrokenAndTooLarge); - CPPUNIT_TEST(testDecode1); - CPPUNIT_TEST(testDecode2); - CPPUNIT_TEST(testDecode3); - CPPUNIT_TEST(testDecode4); - CPPUNIT_TEST_SUITE_END(); - -public: - - void test1() - { - char data[] = { 0, 0, 0, 127 }; - ByteVector v(data, 4); - - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::toUInt(v), (unsigned int)127); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::fromUInt(127), v); - } - - void test2() - { - char data[] = { 0, 0, 1, 0 }; - ByteVector v(data, 4); - - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::toUInt(v), (unsigned int)128); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::fromUInt(128), v); - } - - void test3() - { - char data[] = { 0, 0, 1, 1 }; - ByteVector v(data, 4); - - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::toUInt(v), (unsigned int)129); - CPPUNIT_ASSERT_EQUAL(ID3v2::SynchData::fromUInt(129), v); - } - - void testToUIntBroken() - { - char data[] = { 0, 0, 0, (char)-1 }; - char data2[] = { 0, 0, (char)-1, (char)-1 }; - - CPPUNIT_ASSERT_EQUAL((unsigned int)255, ID3v2::SynchData::toUInt(ByteVector(data, 4))); - CPPUNIT_ASSERT_EQUAL((unsigned int)65535, ID3v2::SynchData::toUInt(ByteVector(data2, 4))); - } - - void testToUIntBrokenAndTooLarge() - { - char data[] = { 0, 0, 0, (char)-1, 0 }; - ByteVector v(data, 5); - - CPPUNIT_ASSERT_EQUAL((unsigned int)255, ID3v2::SynchData::toUInt(v)); - } - - void testDecode1() - { - ByteVector a("\xff\x00\x00", 3); - a = ID3v2::SynchData::decode(a); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, a.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\x00", 2), a); - } - - void testDecode2() - { - ByteVector a("\xff\x44", 2); - a = ID3v2::SynchData::decode(a); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, a.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\x44", 2), a); - } - - void testDecode3() - { - ByteVector a("\xff\xff\x00", 3); - a = ID3v2::SynchData::decode(a); - CPPUNIT_ASSERT_EQUAL((unsigned int)2, a.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\xff", 2), a); - } - - void testDecode4() - { - ByteVector a("\xff\xff\xff", 3); - a = ID3v2::SynchData::decode(a); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, a.size()); - CPPUNIT_ASSERT_EQUAL(ByteVector("\xff\xff\xff", 3), a); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestID3v2SynchData); diff --git a/Frameworks/TagLib/taglib/tests/test_trueaudio.cpp b/Frameworks/TagLib/taglib/tests/test_trueaudio.cpp deleted file mode 100644 index d8e6fbca3..000000000 --- a/Frameworks/TagLib/taglib/tests/test_trueaudio.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <id3v1tag.h> -#include <id3v2tag.h> -#include <tpropertymap.h> -#include <trueaudiofile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestTrueAudio : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestTrueAudio); - CPPUNIT_TEST(testReadPropertiesWithoutID3v2); - CPPUNIT_TEST(testReadPropertiesWithTags); - CPPUNIT_TEST(testStripAndProperties); - CPPUNIT_TEST(testRepeatedSave); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testReadPropertiesWithoutID3v2() - { - TrueAudio::File f(TEST_FILE_PATH_C("empty.tta")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(173, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(162496U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->ttaVersion()); - } - - void testReadPropertiesWithTags() - { - TrueAudio::File f(TEST_FILE_PATH_C("tagged.tta")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3685, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(173, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(162496U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->ttaVersion()); - } - - void testStripAndProperties() - { - ScopedFileCopy copy("empty", ".tta"); - - { - TrueAudio::File f(copy.fileName().c_str()); - f.ID3v2Tag(true)->setTitle("ID3v2"); - f.ID3v1Tag(true)->setTitle("ID3v1"); - f.save(); - } - { - TrueAudio::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String("ID3v2"), f.properties()["TITLE"].front()); - f.strip(TrueAudio::File::ID3v2); - CPPUNIT_ASSERT_EQUAL(String("ID3v1"), f.properties()["TITLE"].front()); - f.strip(TrueAudio::File::ID3v1); - CPPUNIT_ASSERT(f.properties().isEmpty()); - f.save(); - } - { - TrueAudio::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT(f.properties()["TITLE"].isEmpty()); - CPPUNIT_ASSERT(f.properties().isEmpty()); - } - } - - void testRepeatedSave() - { - ScopedFileCopy copy("empty", ".tta"); - - { - TrueAudio::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - - f.ID3v2Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.save(); - - f.ID3v2Tag()->setTitle("0"); - f.save(); - - f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.ID3v2Tag()->setTitle("01234 56789 ABCDE FGHIJ 01234 56789 ABCDE FGHIJ 01234 56789"); - f.save(); - } - { - TrueAudio::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestTrueAudio); diff --git a/Frameworks/TagLib/taglib/tests/test_wav.cpp b/Frameworks/TagLib/taglib/tests/test_wav.cpp deleted file mode 100644 index 61081393c..000000000 --- a/Frameworks/TagLib/taglib/tests/test_wav.cpp +++ /dev/null @@ -1,389 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <id3v2tag.h> -#include <infotag.h> -#include <tbytevectorlist.h> -#include <tbytevectorstream.h> -#include <tfilestream.h> -#include <tpropertymap.h> -#include <wavfile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "plainfile.h" -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestWAV : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestWAV); - CPPUNIT_TEST(testPCMProperties); - CPPUNIT_TEST(testALAWProperties); - CPPUNIT_TEST(testFloatProperties); - CPPUNIT_TEST(testFloatWithoutFactChunkProperties); - CPPUNIT_TEST(testZeroSizeDataChunk); - CPPUNIT_TEST(testID3v2Tag); - CPPUNIT_TEST(testSaveID3v23); - CPPUNIT_TEST(testInfoTag); - CPPUNIT_TEST(testStripTags); - CPPUNIT_TEST(testDuplicateTags); - CPPUNIT_TEST(testFuzzedFile1); - CPPUNIT_TEST(testFuzzedFile2); - CPPUNIT_TEST(testFileWithGarbageAppended); - CPPUNIT_TEST(testStripAndProperties); - CPPUNIT_TEST(testPCMWithFactChunk); - CPPUNIT_TEST(testWaveFormatExtensible); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testPCMProperties() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("empty.wav")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3675, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(32, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(1000, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(3675U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->format()); - } - - void testALAWProperties() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("alaw.wav")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3550, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(128, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(8000, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(28400U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(6, f.audioProperties()->format()); - } - - void testFloatProperties() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("float64.wav")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(97, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(5645, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(64, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(4281U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->format()); - } - - void testFloatWithoutFactChunkProperties() - { - ByteVector wavData = PlainFile(TEST_FILE_PATH_C("float64.wav")).readAll(); - CPPUNIT_ASSERT_EQUAL(ByteVector("fact"), wavData.mid(36, 4)); - // Remove the fact chunk by renaming it to fakt - wavData[38] = 'k'; - ByteVectorStream wavStream(wavData); - RIFF::WAV::File f(&wavStream); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(97, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(5645, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(64, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(4281U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->format()); - } - - void testZeroSizeDataChunk() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("zero-size-chunk.wav")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testID3v2Tag() - { - ScopedFileCopy copy("empty", ".wav"); - string filename = copy.fileName(); - - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - - f.ID3v2Tag()->setTitle(L"Title"); - f.ID3v2Tag()->setArtist(L"Artist"); - f.save(); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - } - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String(L"Title"), f.ID3v2Tag()->title()); - CPPUNIT_ASSERT_EQUAL(String(L"Artist"), f.ID3v2Tag()->artist()); - - f.ID3v2Tag()->setTitle(L""); - f.ID3v2Tag()->setArtist(L""); - f.save(); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - } - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String(L""), f.ID3v2Tag()->title()); - CPPUNIT_ASSERT_EQUAL(String(L""), f.ID3v2Tag()->artist()); - } - } - - void testSaveID3v23() - { - ScopedFileCopy copy("empty", ".wav"); - string newname = copy.fileName(); - - String xxx = ByteVector(254, 'X'); - { - RIFF::WAV::File f(newname.c_str()); - CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag()); - - f.tag()->setTitle(xxx); - f.tag()->setArtist("Artist A"); - f.save(RIFF::WAV::File::AllTags, File::StripOthers, ID3v2::v3); - CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag()); - } - { - RIFF::WAV::File f2(newname.c_str()); - CPPUNIT_ASSERT_EQUAL((unsigned int)3, f2.ID3v2Tag()->header()->majorVersion()); - CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist()); - CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title()); - } - } - - void testInfoTag() - { - ScopedFileCopy copy("empty", ".wav"); - string filename = copy.fileName(); - - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(!f.hasInfoTag()); - - f.InfoTag()->setTitle(L"Title"); - f.InfoTag()->setArtist(L"Artist"); - f.save(); - CPPUNIT_ASSERT(f.hasInfoTag()); - } - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(f.hasInfoTag()); - CPPUNIT_ASSERT_EQUAL(String(L"Title"), f.InfoTag()->title()); - CPPUNIT_ASSERT_EQUAL(String(L"Artist"), f.InfoTag()->artist()); - - f.InfoTag()->setTitle(L""); - f.InfoTag()->setArtist(L""); - f.save(); - CPPUNIT_ASSERT(!f.hasInfoTag()); - } - - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.isValid()); - CPPUNIT_ASSERT(!f.hasInfoTag()); - CPPUNIT_ASSERT_EQUAL(String(L""), f.InfoTag()->title()); - CPPUNIT_ASSERT_EQUAL(String(L""), f.InfoTag()->artist()); - } - } - - void testStripTags() - { - ScopedFileCopy copy("empty", ".wav"); - string filename = copy.fileName(); - - { - RIFF::WAV::File f(filename.c_str()); - f.ID3v2Tag()->setTitle("test title"); - f.InfoTag()->setTitle("test title"); - f.save(); - } - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT(f.hasInfoTag()); - f.save(RIFF::WAV::File::ID3v2, File::StripOthers); - } - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT(!f.hasInfoTag()); - f.ID3v2Tag()->setTitle("test title"); - f.InfoTag()->setTitle("test title"); - f.save(); - } - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT(f.hasInfoTag()); - f.save(RIFF::WAV::File::Info, File::StripOthers); - } - { - RIFF::WAV::File f(filename.c_str()); - CPPUNIT_ASSERT(!f.hasID3v2Tag()); - CPPUNIT_ASSERT(f.hasInfoTag()); - } - } - - void testDuplicateTags() - { - ScopedFileCopy copy("duplicate_tags", ".wav"); - - RIFF::WAV::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(17052L, f.length()); - - // duplicate_tags.wav has duplicate ID3v2/INFO tags. - // title() returns "Title2" if can't skip the second tag. - - CPPUNIT_ASSERT(f.hasID3v2Tag()); - CPPUNIT_ASSERT_EQUAL(String("Title1"), f.ID3v2Tag()->title()); - - CPPUNIT_ASSERT(f.hasInfoTag()); - CPPUNIT_ASSERT_EQUAL(String("Title1"), f.InfoTag()->title()); - - f.save(); - CPPUNIT_ASSERT_EQUAL(15898L, f.length()); - CPPUNIT_ASSERT_EQUAL(-1L, f.find("Title2")); - } - - void testFuzzedFile1() - { - RIFF::WAV::File f1(TEST_FILE_PATH_C("infloop.wav")); - CPPUNIT_ASSERT(f1.isValid()); - // The file has problems: - // Chunk 'ISTt' has invalid size (larger than the file size). - // Its properties can nevertheless be read. - RIFF::WAV::Properties* properties = f1.audioProperties(); - CPPUNIT_ASSERT_EQUAL(1, properties->channels()); - CPPUNIT_ASSERT_EQUAL(88, properties->bitrate()); - CPPUNIT_ASSERT_EQUAL(8, properties->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(11025, properties->sampleRate()); - CPPUNIT_ASSERT(!f1.hasInfoTag()); - CPPUNIT_ASSERT(!f1.hasID3v2Tag()); - } - - void testFuzzedFile2() - { - RIFF::WAV::File f2(TEST_FILE_PATH_C("segfault.wav")); - CPPUNIT_ASSERT(f2.isValid()); - } - - void testFileWithGarbageAppended() - { - ScopedFileCopy copy("empty", ".wav"); - ByteVector contentsBeforeModification; - { - FileStream stream(copy.fileName().c_str()); - stream.seek(0, IOStream::End); - const char garbage[] = "12345678"; - stream.writeBlock(ByteVector(garbage, sizeof(garbage) - 1)); - stream.seek(0); - contentsBeforeModification = stream.readBlock(stream.length()); - } - { - RIFF::WAV::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.isValid()); - f.ID3v2Tag()->setTitle("ID3v2 Title"); - f.InfoTag()->setTitle("INFO Title"); - CPPUNIT_ASSERT(f.save()); - } - { - RIFF::WAV::File f(copy.fileName().c_str()); - f.strip(); - } - { - FileStream stream(copy.fileName().c_str()); - ByteVector contentsAfterModification = stream.readBlock(stream.length()); - CPPUNIT_ASSERT_EQUAL(contentsBeforeModification, contentsAfterModification); - } - } - - void testStripAndProperties() - { - ScopedFileCopy copy("empty", ".wav"); - - { - RIFF::WAV::File f(copy.fileName().c_str()); - f.ID3v2Tag()->setTitle("ID3v2"); - f.InfoTag()->setTitle("INFO"); - f.save(); - } - { - RIFF::WAV::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String("ID3v2"), f.properties()["TITLE"].front()); - f.strip(RIFF::WAV::File::ID3v2); - CPPUNIT_ASSERT_EQUAL(String("INFO"), f.properties()["TITLE"].front()); - f.strip(RIFF::WAV::File::Info); - CPPUNIT_ASSERT(f.properties().isEmpty()); - } - } - - void testPCMWithFactChunk() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("pcm_with_fact_chunk.wav")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3675, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(32, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(1000, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(3675U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->format()); - } - - void testWaveFormatExtensible() - { - RIFF::WAV::File f(TEST_FILE_PATH_C("uint8we.wav")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(2937, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(128, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(8000, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(23493U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->format()); - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestWAV); diff --git a/Frameworks/TagLib/taglib/tests/test_wavpack.cpp b/Frameworks/TagLib/taglib/tests/test_wavpack.cpp deleted file mode 100644 index 591529fb7..000000000 --- a/Frameworks/TagLib/taglib/tests/test_wavpack.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/*************************************************************************** - copyright : (C) 2010 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <apetag.h> -#include <id3v1tag.h> -#include <tbytevectorlist.h> -#include <tpropertymap.h> -#include <wavpackfile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestWavPack : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestWavPack); - CPPUNIT_TEST(testNoLengthProperties); - CPPUNIT_TEST(testMultiChannelProperties); - CPPUNIT_TEST(testDsdStereoProperties); - CPPUNIT_TEST(testNonStandardRateProperties); - CPPUNIT_TEST(testTaggedProperties); - CPPUNIT_TEST(testFuzzedFile); - CPPUNIT_TEST(testStripAndProperties); - CPPUNIT_TEST(testRepeatedSave); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testNoLengthProperties() - { - WavPack::File f(TEST_FILE_PATH_C("no_length.wv")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3705, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(1, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(true, f.audioProperties()->isLossless()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(163392U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1031, f.audioProperties()->version()); - } - - void testMultiChannelProperties() - { - WavPack::File f(TEST_FILE_PATH_C("four_channels.wv")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3833, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(112, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(4, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isLossless()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(169031U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1031, f.audioProperties()->version()); - } - - void testDsdStereoProperties() - { - WavPack::File f(TEST_FILE_PATH_C("dsd_stereo.wv")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(200, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(2096, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(8, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(true, f.audioProperties()->isLossless()); - CPPUNIT_ASSERT_EQUAL(352800, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(70560U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1040, f.audioProperties()->version()); - } - - void testNonStandardRateProperties() - { - WavPack::File f(TEST_FILE_PATH_C("non_standard_rate.wv")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3675, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(true, f.audioProperties()->isLossless()); - CPPUNIT_ASSERT_EQUAL(1000, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(3675U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1040, f.audioProperties()->version()); - } - - void testTaggedProperties() - { - WavPack::File f(TEST_FILE_PATH_C("tagged.wv")); - CPPUNIT_ASSERT(f.audioProperties()); - CPPUNIT_ASSERT_EQUAL(3, f.audioProperties()->lengthInSeconds()); - CPPUNIT_ASSERT_EQUAL(3550, f.audioProperties()->lengthInMilliseconds()); - CPPUNIT_ASSERT_EQUAL(172, f.audioProperties()->bitrate()); - CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels()); - CPPUNIT_ASSERT_EQUAL(16, f.audioProperties()->bitsPerSample()); - CPPUNIT_ASSERT_EQUAL(false, f.audioProperties()->isLossless()); - CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate()); - CPPUNIT_ASSERT_EQUAL(156556U, f.audioProperties()->sampleFrames()); - CPPUNIT_ASSERT_EQUAL(1031, f.audioProperties()->version()); - } - - void testFuzzedFile() - { - WavPack::File f(TEST_FILE_PATH_C("infloop.wv")); - CPPUNIT_ASSERT(f.isValid()); - } - - void testStripAndProperties() - { - ScopedFileCopy copy("click", ".wv"); - - { - WavPack::File f(copy.fileName().c_str()); - f.APETag(true)->setTitle("APE"); - f.ID3v1Tag(true)->setTitle("ID3v1"); - f.save(); - } - { - WavPack::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT_EQUAL(String("APE"), f.properties()["TITLE"].front()); - f.strip(WavPack::File::APE); - CPPUNIT_ASSERT_EQUAL(String("ID3v1"), f.properties()["TITLE"].front()); - f.strip(WavPack::File::ID3v1); - CPPUNIT_ASSERT(f.properties().isEmpty()); - } - } - - void testRepeatedSave() - { - ScopedFileCopy copy("click", ".wv"); - - { - WavPack::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(!f.hasAPETag()); - CPPUNIT_ASSERT(!f.hasID3v1Tag()); - - f.APETag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.save(); - - f.APETag()->setTitle("0"); - f.save(); - - f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); - f.APETag()->setTitle("01234 56789 ABCDE FGHIJ 01234 56789 ABCDE FGHIJ 01234 56789"); - f.save(); - } - { - WavPack::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.hasAPETag()); - CPPUNIT_ASSERT(f.hasID3v1Tag()); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestWavPack); diff --git a/Frameworks/TagLib/taglib/tests/test_xiphcomment.cpp b/Frameworks/TagLib/taglib/tests/test_xiphcomment.cpp deleted file mode 100644 index 386a3e67e..000000000 --- a/Frameworks/TagLib/taglib/tests/test_xiphcomment.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/*************************************************************************** - copyright : (C) 2009 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <string> -#include <stdio.h> -#include <xiphcomment.h> -#include <vorbisfile.h> -#include <tpropertymap.h> -#include <tdebug.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -class TestXiphComment : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestXiphComment); - CPPUNIT_TEST(testYear); - CPPUNIT_TEST(testSetYear); - CPPUNIT_TEST(testTrack); - CPPUNIT_TEST(testSetTrack); - CPPUNIT_TEST(testInvalidKeys1); - CPPUNIT_TEST(testInvalidKeys2); - CPPUNIT_TEST(testClearComment); - CPPUNIT_TEST(testRemoveFields); - CPPUNIT_TEST(testPicture); - CPPUNIT_TEST(testLowercaseFields); - CPPUNIT_TEST_SUITE_END(); - -public: - - void testYear() - { - Ogg::XiphComment cmt; - CPPUNIT_ASSERT_EQUAL((unsigned int)0, cmt.year()); - cmt.addField("YEAR", "2009"); - CPPUNIT_ASSERT_EQUAL((unsigned int)2009, cmt.year()); - cmt.addField("DATE", "2008"); - CPPUNIT_ASSERT_EQUAL((unsigned int)2008, cmt.year()); - } - - void testSetYear() - { - Ogg::XiphComment cmt; - cmt.addField("YEAR", "2009"); - cmt.addField("DATE", "2008"); - cmt.setYear(1995); - CPPUNIT_ASSERT(cmt.fieldListMap()["YEAR"].isEmpty()); - CPPUNIT_ASSERT_EQUAL(String("1995"), cmt.fieldListMap()["DATE"].front()); - } - - void testTrack() - { - Ogg::XiphComment cmt; - CPPUNIT_ASSERT_EQUAL((unsigned int)0, cmt.track()); - cmt.addField("TRACKNUM", "7"); - CPPUNIT_ASSERT_EQUAL((unsigned int)7, cmt.track()); - cmt.addField("TRACKNUMBER", "8"); - CPPUNIT_ASSERT_EQUAL((unsigned int)8, cmt.track()); - } - - void testSetTrack() - { - Ogg::XiphComment cmt; - cmt.addField("TRACKNUM", "7"); - cmt.addField("TRACKNUMBER", "8"); - cmt.setTrack(3); - CPPUNIT_ASSERT(cmt.fieldListMap()["TRACKNUM"].isEmpty()); - CPPUNIT_ASSERT_EQUAL(String("3"), cmt.fieldListMap()["TRACKNUMBER"].front()); - } - - void testInvalidKeys1() - { - PropertyMap map; - map[""] = String("invalid key: empty string"); - map["A=B"] = String("invalid key: contains '='"); - map["A~B"] = String("invalid key: contains '~'"); - map["A\x7F" "B"] = String("invalid key: contains '\x7F'"); - map[L"A\x3456" "B"] = String("invalid key: Unicode"); - - Ogg::XiphComment cmt; - PropertyMap unsuccessful = cmt.setProperties(map); - CPPUNIT_ASSERT_EQUAL((unsigned int)5, unsuccessful.size()); - CPPUNIT_ASSERT(cmt.properties().isEmpty()); - } - - void testInvalidKeys2() - { - Ogg::XiphComment cmt; - cmt.addField("", "invalid key: empty string"); - cmt.addField("A=B", "invalid key: contains '='"); - cmt.addField("A~B", "invalid key: contains '~'"); - cmt.addField("A\x7F" "B", "invalid key: contains '\x7F'"); - cmt.addField(L"A\x3456" "B", "invalid key: Unicode"); - CPPUNIT_ASSERT_EQUAL(0U, cmt.fieldCount()); - } - - void testClearComment() - { - ScopedFileCopy copy("empty", ".ogg"); - - { - Ogg::Vorbis::File f(copy.fileName().c_str()); - f.tag()->addField("COMMENT", "Comment1"); - f.save(); - } - { - Ogg::Vorbis::File f(copy.fileName().c_str()); - f.tag()->setComment(""); - CPPUNIT_ASSERT_EQUAL(String(""), f.tag()->comment()); - } - } - - void testRemoveFields() - { - Ogg::Vorbis::File f(TEST_FILE_PATH_C("empty.ogg")); - f.tag()->addField("title", "Title1"); - f.tag()->addField("Title", "Title1", false); - f.tag()->addField("titlE", "Title2", false); - f.tag()->addField("TITLE", "Title3", false); - f.tag()->addField("artist", "Artist1"); - f.tag()->addField("ARTIST", "Artist2", false); - CPPUNIT_ASSERT_EQUAL(String("Title1 Title1 Title2 Title3"), f.tag()->title()); - CPPUNIT_ASSERT_EQUAL(String("Artist1 Artist2"), f.tag()->artist()); - - f.tag()->removeFields("title", "Title1"); - CPPUNIT_ASSERT_EQUAL(String("Title2 Title3"), f.tag()->title()); - CPPUNIT_ASSERT_EQUAL(String("Artist1 Artist2"), f.tag()->artist()); - - f.tag()->removeFields("Artist"); - CPPUNIT_ASSERT_EQUAL(String("Title2 Title3"), f.tag()->title()); - CPPUNIT_ASSERT(f.tag()->artist().isEmpty()); - - f.tag()->removeAllFields(); - CPPUNIT_ASSERT(f.tag()->title().isEmpty()); - CPPUNIT_ASSERT(f.tag()->artist().isEmpty()); - CPPUNIT_ASSERT_EQUAL(String("Xiph.Org libVorbis I 20050304"), f.tag()->vendorID()); - } - - void testPicture() - { - ScopedFileCopy copy("empty", ".ogg"); - string newname = copy.fileName(); - - { - Vorbis::File f(newname.c_str()); - FLAC::Picture *newpic = new FLAC::Picture(); - newpic->setType(FLAC::Picture::BackCover); - newpic->setWidth(5); - newpic->setHeight(6); - newpic->setColorDepth(16); - newpic->setNumColors(7); - newpic->setMimeType("image/jpeg"); - newpic->setDescription("new image"); - newpic->setData("JPEG data"); - f.tag()->addPicture(newpic); - f.save(); - } - { - Vorbis::File f(newname.c_str()); - List<FLAC::Picture *> lst = f.tag()->pictureList(); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, lst.size()); - CPPUNIT_ASSERT_EQUAL((int)5, lst[0]->width()); - CPPUNIT_ASSERT_EQUAL((int)6, lst[0]->height()); - CPPUNIT_ASSERT_EQUAL((int)16, lst[0]->colorDepth()); - CPPUNIT_ASSERT_EQUAL((int)7, lst[0]->numColors()); - CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), lst[0]->mimeType()); - CPPUNIT_ASSERT_EQUAL(String("new image"), lst[0]->description()); - CPPUNIT_ASSERT_EQUAL(ByteVector("JPEG data"), lst[0]->data()); - } - } - - void testLowercaseFields() - { - const ScopedFileCopy copy("lowercase-fields", ".ogg"); - { - Vorbis::File f(copy.fileName().c_str()); - List<FLAC::Picture *> lst = f.tag()->pictureList(); - CPPUNIT_ASSERT_EQUAL(String("TEST TITLE"), f.tag()->title()); - CPPUNIT_ASSERT_EQUAL(String("TEST ARTIST"), f.tag()->artist()); - CPPUNIT_ASSERT_EQUAL((unsigned int)1, lst.size()); - f.save(); - } - { - Vorbis::File f(copy.fileName().c_str()); - CPPUNIT_ASSERT(f.find("METADATA_BLOCK_PICTURE") > 0); - } - } - -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestXiphComment); diff --git a/Frameworks/TagLib/taglib/tests/test_xm.cpp b/Frameworks/TagLib/taglib/tests/test_xm.cpp deleted file mode 100644 index fcda4f568..000000000 --- a/Frameworks/TagLib/taglib/tests/test_xm.cpp +++ /dev/null @@ -1,220 +0,0 @@ -/*************************************************************************** - copyright : (C) 2011 by Mathias Panzenböck - email : grosser.meister.morti@gmx.net - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#include <xmfile.h> -#include <cppunit/extensions/HelperMacros.h> -#include "utils.h" - -using namespace std; -using namespace TagLib; - -static const String titleBefore("title of song"); -static const String titleAfter("changed title"); - -static const String trackerNameBefore("MilkyTracker "); -static const String trackerNameAfter("TagLib"); - -static const String commentBefore( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "-+-+-+-+-+-+-+-+-+-+-+\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample\n" - "names\n" - "are sometimes\n" - "also abused as\n" - "comments."); - -static const String newCommentShort( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "======================\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample names\n" - "are sometimes\n" - "also abused as\n" - "comments."); - -static const String newCommentLong( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "======================\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample names\n" - "are sometimes\n" - "also abused as\n" - "comments.\n" - "\n\n\n\n\n\n\n" - "TEST"); - -static const String commentAfter( - "Instrument names\n" - "are abused as\n" - "comments in\n" - "module file formats.\n" - "======================\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - "\n\n\n" - "Sample names\n" - "are sometimes\n" - "also abused as\n" - "comments.\n"); - -class TestXM : public CppUnit::TestFixture -{ - CPPUNIT_TEST_SUITE(TestXM); - CPPUNIT_TEST(testReadTags); - CPPUNIT_TEST(testReadStrippedTags); - CPPUNIT_TEST(testWriteTagsShort); - CPPUNIT_TEST(testWriteTagsLong); - CPPUNIT_TEST_SUITE_END(); - -public: - void testReadTags() - { - testRead(TEST_FILE_PATH_C("test.xm"), titleBefore, - commentBefore, trackerNameBefore); - } - - void testReadStrippedTags() - { - XM::File file(TEST_FILE_PATH_C("stripped.xm")); - CPPUNIT_ASSERT(file.isValid()); - - XM::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL(0, p->length()); - CPPUNIT_ASSERT_EQUAL(0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL(0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, p->channels()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0, p->version()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0 , p->restartPosition()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->flags()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 6, p->tempo()); - CPPUNIT_ASSERT_EQUAL((unsigned short)125, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL(titleBefore, t->title()); - CPPUNIT_ASSERT_EQUAL(String(), t->artist()); - CPPUNIT_ASSERT_EQUAL(String(), t->album()); - CPPUNIT_ASSERT_EQUAL(String(), t->comment()); - CPPUNIT_ASSERT_EQUAL(String(), t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(String(), t->trackerName()); - } - - void testWriteTagsShort() - { - testWriteTags(newCommentShort); - } - - void testWriteTagsLong() - { - testWriteTags(newCommentLong); - } - -private: - void testRead(FileName fileName, const String &title, - const String &comment, const String &trackerName) - { - XM::File file(fileName); - - CPPUNIT_ASSERT(file.isValid()); - - XM::Properties *p = file.audioProperties(); - Mod::Tag *t = file.tag(); - - CPPUNIT_ASSERT(0 != p); - CPPUNIT_ASSERT(0 != t); - - CPPUNIT_ASSERT_EQUAL(0, p->length()); - CPPUNIT_ASSERT_EQUAL(0, p->bitrate()); - CPPUNIT_ASSERT_EQUAL(0, p->sampleRate()); - CPPUNIT_ASSERT_EQUAL(8, p->channels()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->lengthInPatterns()); - CPPUNIT_ASSERT_EQUAL((unsigned short)260, p->version()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 0, p->restartPosition()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->patternCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short)128, p->instrumentCount()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 1, p->flags()); - CPPUNIT_ASSERT_EQUAL((unsigned short) 6, p->tempo()); - CPPUNIT_ASSERT_EQUAL((unsigned short)125, p->bpmSpeed()); - CPPUNIT_ASSERT_EQUAL(title, t->title()); - CPPUNIT_ASSERT_EQUAL(String(), t->artist()); - CPPUNIT_ASSERT_EQUAL(String(), t->album()); - CPPUNIT_ASSERT_EQUAL(comment, t->comment()); - CPPUNIT_ASSERT_EQUAL(String(), t->genre()); - CPPUNIT_ASSERT_EQUAL(0U, t->year()); - CPPUNIT_ASSERT_EQUAL(0U, t->track()); - CPPUNIT_ASSERT_EQUAL(trackerName, t->trackerName()); - } - - void testWriteTags(const String &comment) - { - ScopedFileCopy copy("test", ".xm"); - { - XM::File file(copy.fileName().c_str()); - CPPUNIT_ASSERT(file.tag() != 0); - file.tag()->setTitle(titleAfter); - file.tag()->setComment(comment); - file.tag()->setTrackerName(trackerNameAfter); - CPPUNIT_ASSERT(file.save()); - } - testRead(copy.fileName().c_str(), titleAfter, - commentAfter, trackerNameAfter); - CPPUNIT_ASSERT(fileEqual( - copy.fileName(), - TEST_FILE_PATH_C("changed.xm"))); - } -}; - -CPPUNIT_TEST_SUITE_REGISTRATION(TestXM); diff --git a/Frameworks/TagLib/taglib/tests/utils.h b/Frameworks/TagLib/taglib/tests/utils.h deleted file mode 100644 index 51d8862b5..000000000 --- a/Frameworks/TagLib/taglib/tests/utils.h +++ /dev/null @@ -1,150 +0,0 @@ -/*************************************************************************** - copyright : (C) 2007 by Lukas Lalinsky - email : lukas@oxygene.sk - ***************************************************************************/ - -/*************************************************************************** - * This library is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Lesser General Public License version * - * 2.1 as published by the Free Software Foundation. * - * * - * This library is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with this library; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * - * 02110-1301 USA * - * * - * Alternatively, this file is available under the Mozilla Public * - * License Version 1.1. You may obtain a copy of the License at * - * http://www.mozilla.org/MPL/ * - ***************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef _WIN32 -#include <windows.h> -#else -#include <unistd.h> -#include <fcntl.h> -#include <sys/fcntl.h> -#include <sys/stat.h> -#endif -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <string> -#include <fstream> - -using namespace std; - -inline string testFilePath(const string &filename) -{ - return string(TESTS_DIR "data/") + filename; -} - -#define TEST_FILE_PATH_C(f) testFilePath(f).c_str() - -inline string copyFile(const string &filename, const string &ext) -{ - char testFileName[1024]; - -#ifdef _WIN32 - char tempDir[MAX_PATH + 1]; - GetTempPathA(sizeof(tempDir), tempDir); - wsprintfA(testFileName, "%s\\taglib-test%s", tempDir, ext.c_str()); -#else - snprintf(testFileName, sizeof(testFileName), "/%s/taglib-test%s", P_tmpdir, ext.c_str()); -#endif - - string sourceFileName = testFilePath(filename) + ext; - ifstream source(sourceFileName.c_str(), std::ios::binary); - ofstream destination(testFileName, std::ios::binary); - destination << source.rdbuf(); - return string(testFileName); -} - -inline void deleteFile(const string &filename) -{ - remove(filename.c_str()); -} - -inline bool fileEqual(const string &filename1, const string &filename2) -{ - char buf1[BUFSIZ]; - char buf2[BUFSIZ]; - - ifstream stream1(filename1.c_str(), ios_base::in | ios_base::binary); - ifstream stream2(filename2.c_str(), ios_base::in | ios_base::binary); - - if(!stream1 && !stream2) return true; - if(!stream1 || !stream2) return false; - - for(;;) - { - stream1.read(buf1, BUFSIZ); - stream2.read(buf2, BUFSIZ); - - streamsize n1 = stream1.gcount(); - streamsize n2 = stream2.gcount(); - - if(n1 != n2) return false; - - if(n1 == 0) break; - - if(memcmp(buf1, buf2, static_cast<size_t>(n1)) != 0) return false; - } - - return stream1.good() == stream2.good(); -} - -#ifdef TAGLIB_STRING_H - -namespace TagLib { - - inline String longText(size_t length, bool random = false) - { - const wchar_t chars[] = L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"; - - std::wstring text(length, L'X'); - - if(random) { - for(size_t i = 0; i < length; ++i) - text[i] = chars[rand() % 53]; - } - - return String(text); - } -} - -#endif - -class ScopedFileCopy -{ -public: - ScopedFileCopy(const string &filename, const string &ext, bool deleteFile=true) : - m_deleteFile(deleteFile), - m_filename(copyFile(filename, ext)) - { - } - - ~ScopedFileCopy() - { - if(m_deleteFile) - deleteFile(m_filename); - } - - string fileName() const - { - return m_filename; - } - -private: - const bool m_deleteFile; - const string m_filename; -}; diff --git a/Frameworks/TagLib/tr.lproj/InfoPlist.strings b/Frameworks/TagLib/tr.lproj/InfoPlist.strings deleted file mode 100644 index cde2c3450..000000000 --- a/Frameworks/TagLib/tr.lproj/InfoPlist.strings +++ /dev/null @@ -1,3 +0,0 @@ -/* Localized versions of Info.plist keys */ - -NSHumanReadableCopyright = "© __MyCompanyName__, 2006"; diff --git a/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj b/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj index c97e48ad8..bd5455c8c 100644 --- a/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj +++ b/Plugins/TagLib/TagLib.xcodeproj/project.pbxproj @@ -9,9 +9,9 @@ /* Begin PBXBuildFile section */ 07CACE8B0ED1AD1000C0F1E8 /* TagLibMetadataWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 07CACE8A0ED1AD1000C0F1E8 /* TagLibMetadataWriter.m */; }; 17C93FC30B90056C008627D6 /* TagLibMetadataReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C93FC20B90056C008627D6 /* TagLibMetadataReader.m */; }; - 17F563B40C3BDBB30019975C /* TagLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17F563A60C3BDB8F0019975C /* TagLib.framework */; }; - 17F563B60C3BDBB50019975C /* TagLib.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17F563A60C3BDB8F0019975C /* TagLib.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 8307D31D286072BF000FF8EB /* SandboxBroker.h in Headers */ = {isa = PBXBuildFile; fileRef = 8307D31C286072BF000FF8EB /* SandboxBroker.h */; }; + 83344E182D4B536200C120FA /* tag.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83344E172D4B536200C120FA /* tag.framework */; }; + 83344E192D4B627A00C120FA /* tag.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 83344E172D4B536200C120FA /* tag.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 834A42C3287AFF5E00EB9D9B /* AudioChunk.h in Headers */ = {isa = PBXBuildFile; fileRef = 834A42C2287AFF5E00EB9D9B /* AudioChunk.h */; }; 8356BCE527B377C20074E50C /* TagLibID3v2Reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8356BCE327B377C20074E50C /* TagLibID3v2Reader.h */; }; 8356BCE627B377C20074E50C /* TagLibID3v2Reader.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8356BCE427B377C20074E50C /* TagLibID3v2Reader.mm */; }; @@ -19,23 +19,6 @@ 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 17F563A50C3BDB8F0019975C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 17F563A00C3BDB8F0019975C /* TagLib.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8DC2EF5B0486A6940098B216; - remoteInfo = TagLib; - }; - 17F563C00C3BDBC60019975C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 17F563A00C3BDB8F0019975C /* TagLib.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 8DC2EF4F0486A6940098B216; - remoteInfo = TagLib; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXCopyFilesBuildPhase section */ 17C93FF20B900734008627D6 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -43,7 +26,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 17F563B60C3BDBB50019975C /* TagLib.framework in CopyFiles */, + 83344E192D4B627A00C120FA /* tag.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -58,9 +41,9 @@ 177FCFA40B90C9600011C3B5 /* Plugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Plugin.h; path = ../../Audio/Plugin.h; sourceTree = SOURCE_ROOT; }; 17C93FC10B90056C008627D6 /* TagLibMetadataReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagLibMetadataReader.h; sourceTree = "<group>"; }; 17C93FC20B90056C008627D6 /* TagLibMetadataReader.m */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = TagLibMetadataReader.m; sourceTree = "<group>"; }; - 17F563A00C3BDB8F0019975C /* TagLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = TagLib.xcodeproj; path = ../../Frameworks/TagLib/TagLib.xcodeproj; sourceTree = SOURCE_ROOT; }; 32DBCF630370AF2F00C91783 /* TagLib_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TagLib_Prefix.pch; sourceTree = "<group>"; }; 8307D31C286072BF000FF8EB /* SandboxBroker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SandboxBroker.h; path = ../../Utils/SandboxBroker.h; sourceTree = "<group>"; }; + 83344E172D4B536200C120FA /* tag.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = tag.framework; path = /Users/chris/Source/Repos/cog/ThirdParty/Frameworks/tag.framework; sourceTree = "<absolute>"; }; 834A42C2287AFF5E00EB9D9B /* AudioChunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioChunk.h; path = ../../Audio/Chain/AudioChunk.h; sourceTree = "<group>"; }; 8356BCE327B377C20074E50C /* TagLibID3v2Reader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TagLibID3v2Reader.h; sourceTree = "<group>"; }; 8356BCE427B377C20074E50C /* TagLibID3v2Reader.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = TagLibID3v2Reader.mm; sourceTree = "<group>"; }; @@ -76,8 +59,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 17F563B40C3BDBB30019975C /* TagLib.framework in Frameworks */, 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */, + 83344E182D4B536200C120FA /* tag.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -134,7 +117,7 @@ 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( - 17F563A00C3BDB8F0019975C /* TagLib.xcodeproj */, + 83344E172D4B536200C120FA /* tag.framework */, 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; @@ -150,14 +133,6 @@ name = "Other Frameworks"; sourceTree = "<group>"; }; - 17F563A10C3BDB8F0019975C /* Products */ = { - isa = PBXGroup; - children = ( - 17F563A60C3BDB8F0019975C /* TagLib.framework */, - ); - name = Products; - sourceTree = "<group>"; - }; 19C28FB8FE9D52D311CA2CBB /* Products */ = { isa = PBXGroup; children = ( @@ -213,7 +188,6 @@ buildRules = ( ); dependencies = ( - 17F563C10C3BDBC60019975C /* PBXTargetDependency */, ); name = "TagLib Plugin"; productInstallPath = "$(HOME)/Library/Bundles"; @@ -230,7 +204,7 @@ LastUpgradeCheck = 1400; TargetAttributes = { 8D5B49AC048680CD000E48DA = { - DevelopmentTeam = ""; + DevelopmentTeam = N6E749HJ2X; ProvisioningStyle = Manual; }; }; @@ -245,12 +219,6 @@ ); mainGroup = 089C166AFE841209C02AAC07 /* TagLib */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 17F563A10C3BDB8F0019975C /* Products */; - ProjectRef = 17F563A00C3BDB8F0019975C /* TagLib.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 8D5B49AC048680CD000E48DA /* TagLib Plugin */, @@ -258,16 +226,6 @@ }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - 17F563A60C3BDB8F0019975C /* TagLib.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = TagLib.framework; - remoteRef = 17F563A50C3BDB8F0019975C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ 8D5B49AF048680CD000E48DA /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -291,22 +249,15 @@ }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 17F563C10C3BDBC60019975C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = TagLib; - targetProxy = 17F563C00C3BDBC60019975C /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin XCBuildConfiguration section */ 1DEB913B08733D840010E9CD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ""; + FRAMEWORK_SEARCH_PATHS = ../../ThirdParty/Frameworks; GCC_DYNAMIC_NO_PIC = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; @@ -319,6 +270,7 @@ ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.taglib; PRODUCT_NAME = TagLib; SDKROOT = macosx; @@ -331,9 +283,10 @@ 1DEB913C08733D840010E9CD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; CLANG_CXX_LIBRARY = "libc++"; COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ""; + FRAMEWORK_SEARCH_PATHS = ../../ThirdParty/Frameworks; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = TagLib_Prefix.pch; @@ -344,6 +297,7 @@ ); INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = org.cogx.taglib; PRODUCT_NAME = TagLib; SDKROOT = macosx; diff --git a/Plugins/TagLib/TagLibID3v2Reader.mm b/Plugins/TagLib/TagLibID3v2Reader.mm index fcf4ab695..cee54ac22 100644 --- a/Plugins/TagLib/TagLibID3v2Reader.mm +++ b/Plugins/TagLib/TagLibID3v2Reader.mm @@ -7,11 +7,12 @@ #import "TagLibID3v2Reader.h" -#import <taglib/fileref.h> -#import <taglib/mpeg/id3v2/frames/attachedpictureframe.h> -#import <taglib/mpeg/id3v2/id3v2tag.h> -#import <taglib/mpeg/mpegfile.h> -#import <taglib/toolkit/tbytevectorstream.h> +#import <tag/fileref.h> +#import <tag/attachedpictureframe.h> +#import <tag/id3v2tag.h> +#import <tag/mpegfile.h> +#import <tag/tfilestream.h> +#import <tag/tbytevectorstream.h> @implementation TagLibID3v2Reader @@ -55,7 +56,7 @@ TagLib::ByteVector vector((const char *)[tagBlock bytes], (unsigned int)[tagBlock length]); TagLib::ByteVectorStream vectorStream(vector); - TagLib::FileRef f(&vectorStream, false); + TagLib::FileRef f((TagLib::IOStream *)&vectorStream, false); if(!f.isNull()) { const TagLib::Tag *tag = f.tag(); @@ -67,14 +68,14 @@ TagLib::String soundcheck; artist = tag->artist(); - albumartist = tag->albumartist(); - composer = tag->composer(); + //albumartist = tag->albumartist(); + //composer = tag->composer(); title = tag->title(); album = tag->album(); genre = tag->genre(); comment = tag->comment(); - cuesheet = tag->cuesheet(); - unsyncedlyrics = tag->unsyncedlyrics(); + //cuesheet = tag->cuesheet(); + //unsyncedlyrics = tag->unsyncedlyrics(); year = tag->year(); [dict setObject:@(year) forKey:@"year"]; @@ -82,10 +83,10 @@ track = tag->track(); [dict setObject:@(track) forKey:@"track"]; - disc = tag->disc(); - [dict setObject:@(disc) forKey:@"disc"]; + /*disc = tag->disc(); + [dict setObject:@(disc) forKey:@"disc"];*/ - rgAlbumGain = tag->rgAlbumGain(); + /*rgAlbumGain = tag->rgAlbumGain(); rgAlbumPeak = tag->rgAlbumPeak(); rgTrackGain = tag->rgTrackGain(); rgTrackPeak = tag->rgTrackPeak(); @@ -110,7 +111,7 @@ float volumeScale = pow(10, volumeToUse / 20); [dict setObject:@(volumeScale) forKey:@"volume"]; } - } + }*/ if(!artist.isEmpty()) [dict setObject:[NSString stringWithUTF8String:artist.toCString(true)] forKey:@"artist"]; diff --git a/Plugins/TagLib/TagLibMetadataReader.m b/Plugins/TagLib/TagLibMetadataReader.m index a433184e5..379059dff 100644 --- a/Plugins/TagLib/TagLibMetadataReader.m +++ b/Plugins/TagLib/TagLibMetadataReader.m @@ -7,16 +7,16 @@ // #import "TagLibMetadataReader.h" -#import <taglib/audioproperties.h> -#import <taglib/fileref.h> -#import <taglib/flac/flacfile.h> -#import <taglib/mpc/mpcproperties.h> -#import <taglib/mpeg/id3v2/frames/attachedpictureframe.h> -#import <taglib/mpeg/id3v2/id3v2tag.h> -#import <taglib/mpeg/mpegfile.h> -#import <taglib/tag.h> -#import <taglib/ogg/vorbis/vorbisfile.h> -#import <taglib/ogg/xiphcomment.h> +#import <tag/audioproperties.h> +#import <tag/fileref.h> +#import <tag/flacfile.h> +#import <tag/mpcproperties.h> +#import <tag/attachedpictureframe.h> +#import <tag/id3v2tag.h> +#import <tag/mpegfile.h> +#import <tag/tag.h> +#import <tag/vorbisfile.h> +#import <tag/xiphcomment.h> #import "SandboxBroker.h" @@ -80,16 +80,16 @@ TagLib::String soundcheck; artist = tag->artist(); - albumartist = tag->albumartist(); - composer = tag->composer(); + //albumartist = tag->albumartist(); + //composer = tag->composer(); title = tag->title(); ; album = tag->album(); genre = tag->genre(); comment = tag->comment(); - cuesheet = tag->cuesheet(); + //cuesheet = tag->cuesheet(); - unsyncedlyrics = tag->unsyncedlyrics(); + //unsyncedlyrics = tag->unsyncedlyrics(); year = tag->year(); [dict setObject:@(year) forKey:@"year"]; @@ -97,19 +97,19 @@ track = tag->track(); [dict setObject:@(track) forKey:@"track"]; - disc = tag->disc(); - [dict setObject:@(disc) forKey:@"disc"]; + /*disc = tag->disc(); + [dict setObject:@(disc) forKey:@"disc"];*/ - rgAlbumGain = tag->rgAlbumGain(); + /*rgAlbumGain = tag->rgAlbumGain(); rgAlbumPeak = tag->rgAlbumPeak(); rgTrackGain = tag->rgTrackGain(); rgTrackPeak = tag->rgTrackPeak(); [dict setObject:@(rgAlbumGain) forKey:@"replaygain_album_gain"]; [dict setObject:@(rgAlbumPeak) forKey:@"replaygain_album_peak"]; [dict setObject:@(rgTrackGain) forKey:@"replaygain_track_gain"]; - [dict setObject:@(rgTrackPeak) forKey:@"replaygain_track_peak"]; + [dict setObject:@(rgTrackPeak) forKey:@"replaygain_track_peak"];*/ - soundcheck = tag->soundcheck(); + /*soundcheck = tag->soundcheck(); if(!soundcheck.isEmpty()) { TagLib::StringList tag = soundcheck.split(" "); TagLib::StringList wantedTag; @@ -125,7 +125,7 @@ float volumeScale = pow(10, volumeToUse / 20); [dict setObject:@(volumeScale) forKey:@"volume"]; } - } + }*/ if(!artist.isEmpty()) [dict setObject:[NSString stringWithUTF8String:artist.toCString(true)] forKey:@"artist"]; diff --git a/Plugins/TagLib/TagLibMetadataWriter.m b/Plugins/TagLib/TagLibMetadataWriter.m index 2054a413b..d48e5d537 100644 --- a/Plugins/TagLib/TagLibMetadataWriter.m +++ b/Plugins/TagLib/TagLibMetadataWriter.m @@ -8,8 +8,8 @@ #import "TagLibMetadataWriter.h" -#import <taglib/fileref.h> -#import <taglib/tag.h> +#import <tag/fileref.h> +#import <tag/tag.h> #import "Logging.h" diff --git a/ThirdParty/Frameworks/tag.framework/Headers b/ThirdParty/Frameworks/tag.framework/Headers new file mode 120000 index 000000000..a177d2a6b --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/ThirdParty/Frameworks/tag.framework/Resources b/ThirdParty/Frameworks/tag.framework/Resources new file mode 120000 index 000000000..953ee36f3 --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Resources @@ -0,0 +1 @@ +Versions/Current/Resources \ No newline at end of file diff --git a/Frameworks/TagLib/taglib/taglib/riff/aiff/aifffile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/aifffile.h similarity index 80% rename from Frameworks/TagLib/taglib/taglib/riff/aiff/aifffile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/aifffile.h index 9c3b7e338..d50cf04eb 100644 --- a/Frameworks/TagLib/taglib/taglib/riff/aiff/aifffile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/aifffile.h @@ -26,9 +26,9 @@ #ifndef TAGLIB_AIFFFILE_H #define TAGLIB_AIFFFILE_H -#include <taglib/riff/rifffile.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/riff/aiff/aiffproperties.h> +#include "rifffile.h" +#include "id3v2tag.h" +#include "aiffproperties.h" namespace TagLib { @@ -37,7 +37,7 @@ namespace TagLib { //! An implementation of AIFF metadata /*! - * This is implementation of AIFF metadata. + * This is an implementation of AIFF metadata. * * This supports an ID3v2 tag as well as reading stream from the ID3 RIFF * chunk as well as properties from the file. @@ -58,30 +58,41 @@ namespace TagLib { { public: /*! - * Constructs an AIFF file from \a file. If \a readProperties is true the + * Constructs an AIFF file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). */ File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); /*! - * Constructs an AIFF file from \a stream. If \a readProperties is true the + * Constructs an AIFF file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is * responsible for deleting it after the File object. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). */ File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the Tag for this file. @@ -92,32 +103,32 @@ namespace TagLib { * * \see hasID3v2Tag() */ - virtual ID3v2::Tag *tag() const; + ID3v2::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * This method forwards to ID3v2::Tag::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &unsupported) override; /*! * Implements the unified property interface -- import function. * This method forwards to ID3v2::Tag::setProperties(). */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the AIFF::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Saves the file. */ - virtual bool save(); + bool save() override; /*! * Save using a specific ID3v2 version (e.g. v3) @@ -140,18 +151,16 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); friend class Properties; class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } - } -} + } // namespace AIFF + } // namespace RIFF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/riff/aiff/aiffproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/aiffproperties.h similarity index 70% rename from Frameworks/TagLib/taglib/taglib/riff/aiff/aiffproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/aiffproperties.h index 881f16cba..2c8f9100a 100644 --- a/Frameworks/TagLib/taglib/taglib/riff/aiff/aiffproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/aiffproperties.h @@ -26,7 +26,8 @@ #ifndef TAGLIB_AIFFPROPERTIES_H #define TAGLIB_AIFFPROPERTIES_H -#include <taglib/audioproperties.h> +#include "tstring.h" +#include "audioproperties.h" namespace TagLib { @@ -46,14 +47,6 @@ namespace TagLib { class TAGLIB_EXPORT Properties : public AudioProperties { public: - /*! - * Create an instance of AIFF::Properties with the data read from the - * ByteVector \a data. - * - * \deprecated - */ - TAGLIB_DEPRECATED Properties(const ByteVector &data, ReadStyle style); - /*! * Create an instance of AIFF::Properties with the data read from the * AIFF::File \a file. @@ -63,71 +56,45 @@ namespace TagLib { /*! * Destroys this AIFF::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample. */ int bitsPerSample() const; - /*! - * Returns the number of bits per audio sample. - * - * \note This method is just an alias of bitsPerSample(). - * - * \deprecated - */ - TAGLIB_DEPRECATED int sampleWidth() const; - /*! * Returns the number of sample frames */ unsigned int sampleFrames() const; /*! - * Returns true if the file is in AIFF-C format, false if AIFF format. + * Returns \c true if the file is in AIFF-C format, \c false if AIFF format. */ bool isAiffC() const; @@ -151,16 +118,14 @@ namespace TagLib { String compressionName() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - void read(File *file); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } - } -} + } // namespace AIFF + } // namespace RIFF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ape/apefile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apefile.h similarity index 86% rename from Frameworks/TagLib/taglib/taglib/ape/apefile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apefile.h index 1331e537b..1d1eee6be 100644 --- a/Frameworks/TagLib/taglib/taglib/ape/apefile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apefile.h @@ -34,9 +34,9 @@ #ifndef TAGLIB_APEFILE_H #define TAGLIB_APEFILE_H -#include <taglib/toolkit/tfile.h> -#include <taglib/taglib_export.h> -#include <taglib/ape/apeproperties.h> +#include "tfile.h" +#include "taglib_export.h" +#include "apeproperties.h" namespace TagLib { @@ -48,7 +48,7 @@ namespace TagLib { //! An implementation of APE metadata /*! - * This is implementation of APE metadata. + * This is an implementation of APE metadata. * * This supports ID3v1 and APE (v1 and v2) style comments as well as reading stream * properties from the file. @@ -84,7 +84,7 @@ namespace TagLib { }; /*! - * Constructs an APE file from \a file. If \a readProperties is true the + * Constructs an APE file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. @@ -93,7 +93,7 @@ namespace TagLib { Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs an APE file from \a stream. If \a readProperties is true the + * Constructs an APE file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is @@ -107,39 +107,42 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag * or a combination of the two. */ - virtual TagLib::Tag *tag() const; + TagLib::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * If the file contains both an APE and an ID3v1 tag, only APE * will be converted to the PropertyMap. */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Removes unsupported properties. Forwards to the actual Tag's * removeUnsupportedProperties() function. */ - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &properties) override; /*! * Implements the unified property interface -- import function. * Creates an APEv2 tag if necessary. A potentially existing ID3v1 * tag will be updated as well. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the APE::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Saves the file. @@ -147,20 +150,20 @@ namespace TagLib { * \note According to the official Monkey's Audio SDK, an APE file * can only have either ID3V1 or APE tags, so a parameter is used here. */ - virtual bool save(); + bool save() override; /*! * Returns a pointer to the ID3v1 tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid ID3v1 tag. If \a create is \c true it will create * an ID3v1 tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an ID3v1 tag. Use hasID3v1Tag() to check if the file * on disk actually has an ID3v1 tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the APE::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -171,15 +174,15 @@ namespace TagLib { /*! * Returns a pointer to the APE tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid APE tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid APE tag. If \a create is \c true it will create * an APE tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an APE tag. Use hasAPETag() to check if the file * on disk actually has an APE tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the APE::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -221,15 +224,13 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace APE +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ape/apefooter.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apefooter.h similarity index 89% rename from Frameworks/TagLib/taglib/taglib/ape/apefooter.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apefooter.h index c637d46b0..488f9692d 100644 --- a/Frameworks/TagLib/taglib/taglib/ape/apefooter.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apefooter.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_APEFOOTER_H #define TAGLIB_APEFOOTER_H -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> +#include "tbytevector.h" +#include "taglib_export.h" namespace TagLib { @@ -59,7 +59,10 @@ namespace TagLib { /*! * Destroys the footer. */ - virtual ~Footer(); + ~Footer(); + + Footer(const Footer &) = delete; + Footer &operator=(const Footer &) = delete; /*! * Returns the version number. (Note: This is the 1000 or 2000.) @@ -67,17 +70,17 @@ namespace TagLib { unsigned int version() const; /*! - * Returns true if a header is present in the tag. + * Returns \c true if a header is present in the tag. */ bool headerPresent() const; /*! - * Returns true if a footer is present in the tag. + * Returns \c true if a footer is present in the tag. */ bool footerPresent() const; /*! - * Returns true this is actually the header. + * Returns \c true if this is actually the header. */ bool isHeader() const; @@ -142,8 +145,8 @@ namespace TagLib { ByteVector renderFooter() const; /*! - * Renders the header corresponding to the footer. If headerPresent is - * set to false, it returns an empty ByteVector. + * Renders the header corresponding to the footer. If headerPresent() is + * \c false, it returns an empty ByteVector. */ ByteVector renderHeader() const; @@ -160,14 +163,12 @@ namespace TagLib { ByteVector render(bool isHeader) const; private: - Footer(const Footer &); - Footer &operator=(const Footer &); - class FooterPrivate; - FooterPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FooterPrivate> d; }; - } -} + } // namespace APE +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ape/apeitem.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apeitem.h similarity index 83% rename from Frameworks/TagLib/taglib/taglib/ape/apeitem.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apeitem.h index 32e670355..af75704ca 100644 --- a/Frameworks/TagLib/taglib/taglib/ape/apeitem.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apeitem.h @@ -26,14 +26,12 @@ #ifndef TAGLIB_APEITEM_H #define TAGLIB_APEITEM_H -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tstringlist.h> +#include "tbytevector.h" +#include "tstring.h" +#include "tstringlist.h" namespace TagLib { - namespace APE { - //! An implementation of APE-items /*! @@ -58,12 +56,6 @@ namespace TagLib { */ Item(); - /*! - * Constructs a text item with \a key and \a value. - */ - // BIC: Remove this, StringList has a constructor from a single string - Item(const String &key, const String &value); - /*! * Constructs a text item with \a key and \a values. */ @@ -71,7 +63,7 @@ namespace TagLib { /*! * Constructs an item with \a key and \a value. - * If \a binary is true a Binary item will be created, otherwise \a value will be interpreted as text + * If \a binary is \c true a Binary item will be created, otherwise \a value will be interpreted as text */ Item(const String &key, const ByteVector &value, bool binary); @@ -83,7 +75,7 @@ namespace TagLib { /*! * Destroys the item. */ - virtual ~Item(); + ~Item(); /*! * Copies the contents of \a item into this item. @@ -91,9 +83,9 @@ namespace TagLib { Item &operator=(const Item &item); /*! - * Exchanges the content of this item by the content of \a item. + * Exchanges the content of this item with the content of \a item. */ - void swap(Item &item); + void swap(Item &item) noexcept; /*! * Returns the key. @@ -112,11 +104,6 @@ namespace TagLib { */ void setBinaryData(const ByteVector &value); -#ifndef DO_NOT_DOCUMENT - /* Remove in next binary incompatible release */ - ByteVector value() const; -#endif - /*! * Sets the key for the item to \a key. */ @@ -133,7 +120,7 @@ namespace TagLib { * Sets the text value of the item to the list of values in \a value and clears * any previous contents. * - * \see toStringList() + * \see values() */ void setValues(const StringList &values); @@ -147,7 +134,7 @@ namespace TagLib { /*! * Appends \a values to extend the current list of text values. * - * \see toStringList() + * \see values() */ void appendValues(const StringList &values); @@ -163,11 +150,6 @@ namespace TagLib { */ String toString() const; -#ifndef DO_NOT_DOCUMENT - /* Remove in next binary incompatible release */ - StringList toStringList() const; -#endif - /*! * Returns the list of text values. If the data type is not \a Text, always * returns an empty StringList. @@ -190,16 +172,16 @@ namespace TagLib { void setReadOnly(bool readOnly); /*! - * Return true if the item is read-only. + * Return \c true if the item is read-only. */ bool isReadOnly() const; /*! - * Sets the type of the item to \a type. + * Sets the type of the item to \a val. * * \see ItemTypes */ - void setType(ItemTypes type); + void setType(ItemTypes val); /*! * Returns the type of the item. @@ -207,18 +189,16 @@ namespace TagLib { ItemTypes type() const; /*! - * Returns if the item has any real content. + * Returns \c false if the item has any real content. */ bool isEmpty() const; private: class ItemPrivate; - ItemPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<ItemPrivate> d; }; - } - -} + } // namespace APE +} // namespace TagLib #endif - - diff --git a/Frameworks/TagLib/taglib/taglib/ape/apeproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apeproperties.h similarity index 70% rename from Frameworks/TagLib/taglib/taglib/ape/apeproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apeproperties.h index bf330025c..b107d3690 100644 --- a/Frameworks/TagLib/taglib/taglib/ape/apeproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apeproperties.h @@ -30,8 +30,9 @@ #ifndef TAGLIB_APEPROPERTIES_H #define TAGLIB_APEPROPERTIES_H -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> +#include "taglib.h" +#include "taglib_export.h" +#include "audioproperties.h" namespace TagLib { @@ -52,63 +53,38 @@ namespace TagLib { /*! * Create an instance of APE::Properties with the data read from the * APE::File \a file. - * - * \deprecated */ - TAGLIB_DEPRECATED Properties(File *file, ReadStyle style = Average); - - /*! - * Create an instance of APE::Properties with the data read from the - * APE::File \a file. - */ - Properties(File *file, long streamLength, ReadStyle style = Average); + Properties(File *file, offset_t streamLength, ReadStyle style = Average); /*! * Destroys this APE::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample. @@ -121,23 +97,21 @@ namespace TagLib { unsigned int sampleFrames() const; /*! - * Returns APE version. + * Returns the APE version. */ int version() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(File *file, long streamLength); + void read(File *file, offset_t streamLength); void analyzeCurrent(File *file); void analyzeOld(File *file); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace APE +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ape/apetag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apetag.h similarity index 74% rename from Frameworks/TagLib/taglib/taglib/ape/apetag.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apetag.h index cc80a9aea..804b130f1 100644 --- a/Frameworks/TagLib/taglib/taglib/ape/apetag.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/apetag.h @@ -26,13 +26,13 @@ #ifndef TAGLIB_APETAG_H #define TAGLIB_APETAG_H -#include <taglib/tag.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/tstring.h> -#include <taglib/taglib_export.h> - -#include <taglib/ape/apeitem.h> +#include "tbytevector.h" +#include "tmap.h" +#include "tstring.h" +#include "taglib.h" +#include "taglib_export.h" +#include "tag.h" +#include "apeitem.h" namespace TagLib { @@ -49,8 +49,7 @@ namespace TagLib { * * \see APE::Tag::itemListMap() */ - typedef Map<const String, Item> ItemListMap; - + using ItemListMap = Map<const String, Item>; //! An APE tag implementation @@ -66,12 +65,15 @@ namespace TagLib { * Create an APE tag and parse the data in \a file with APE footer at * \a tagOffset. */ - Tag(TagLib::File *file, long footerLocation); + Tag(TagLib::File *file, offset_t footerLocation); /*! * Destroys this Tag instance. */ - virtual ~Tag(); + ~Tag() override; + + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; /*! * Renders the in memory values to a ByteVector suitable for writing to @@ -87,40 +89,21 @@ namespace TagLib { // Reimplementations. - virtual String title() const; - virtual String albumartist() const; - virtual String artist() const; - virtual String composer() const; - virtual String album() const; - virtual String unsyncedlyrics() const; - virtual String comment() const; - virtual String genre() const; - virtual unsigned int year() const; - virtual unsigned int track() const; - virtual unsigned int disc() const; - virtual String cuesheet() const; - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; + String title() const override; + String artist() const override; + String album() const override; + String comment() const override; + String genre() const override; + unsigned int year() const override; + unsigned int track() const override; - virtual void setTitle(const String &s); - virtual void setAlbumArtist(const String &s); - virtual void setArtist(const String &s); - virtual void setComposer(const String &s); - virtual void setAlbum(const String &s); - virtual void setUnsyncedlyrics(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(unsigned int i); - virtual void setTrack(unsigned int i); - virtual void setDisc(unsigned int i); - virtual void setCuesheet(const String &s); - virtual void setRGAlbumGain(float f); - virtual void setRGAlbumPeak(float f); - virtual void setRGTrackGain(float f); - virtual void setRGTrackPeak(float f); + void setTitle(const String &s) override; + void setArtist(const String &s) override; + void setAlbum(const String &s) override; + void setComment(const String &s) override; + void setGenre(const String &s) override; + void setYear(unsigned int i) override; + void setTrack(unsigned int i) override; /*! * Implements the unified tag dictionary interface -- export function. @@ -134,11 +117,12 @@ namespace TagLib { * * The only conversion done by this export function is to rename the APE tags * TRACK to TRACKNUMBER, YEAR to DATE, and ALBUM ARTIST to ALBUMARTIST, respectively, + * (and a few other keys, see \ref p_propertymapping) * in order to be compliant with the names used in other formats. */ - PropertyMap properties() const; + PropertyMap properties() const override; - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &properties) override; /*! * Implements the unified tag dictionary interface -- import function. The same @@ -146,7 +130,11 @@ namespace TagLib { * specification requires keys to have between 2 and 16 printable ASCII characters * with the exception of the fixed strings "ID3", "TAG", "OGGS", and "MP+". */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; + + StringList complexPropertyKeys() const override; + List<VariantMap> complexProperties(const String &key) const override; + bool setComplexProperties(const String &key, const List<VariantMap> &value) override; /*! * Check if the given String is a valid APE tag key. @@ -179,7 +167,7 @@ namespace TagLib { /*! * Adds to the text item specified by \a key the data \a value. If \a replace - * is true, then all of the other values on the same key will be removed + * is \c true, then all of the other values on the same key will be removed * first. If a binary item exists for \a key it will be removed first. */ void addValue(const String &key, const String &value, bool replace = true); @@ -198,9 +186,9 @@ namespace TagLib { void setItem(const String &key, const Item &item); /*! - * Returns true if the tag does not contain any data. + * Returns \c true if the tag does not contain any data. */ - bool isEmpty() const; + bool isEmpty() const override; protected: @@ -215,13 +203,11 @@ namespace TagLib { void parse(const ByteVector &data); private: - Tag(const Tag &); - Tag &operator=(const Tag &); - class TagPrivate; - TagPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; }; - } -} + } // namespace APE +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/asf/asfattribute.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfattribute.h similarity index 91% rename from Frameworks/TagLib/taglib/taglib/asf/asfattribute.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfattribute.h index 8d446a58a..4f686253a 100644 --- a/Frameworks/TagLib/taglib/taglib/asf/asfattribute.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfattribute.h @@ -26,20 +26,20 @@ #ifndef TAGLIB_ASFATTRIBUTE_H #define TAGLIB_ASFATTRIBUTE_H -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> -#include <taglib/asf/asfpicture.h> +#include "tstring.h" +#include "tbytevector.h" +#include "taglib_export.h" +#include "asfpicture.h" namespace TagLib { - namespace ASF { - class File; class Picture; + //! Attribute of ASF (WMA) metadata + class TAGLIB_EXPORT Attribute { public: @@ -108,7 +108,7 @@ namespace TagLib /*! * Construct an attribute as a copy of \a other. */ - Attribute(const Attribute &item); + Attribute(const Attribute &other); /*! * Copies the contents of \a other into this item. @@ -116,17 +116,17 @@ namespace TagLib Attribute &operator=(const Attribute &other); /*! - * Exchanges the content of the Attribute by the content of \a other. + * Exchanges the content of the Attribute with the content of \a other. */ - void swap(Attribute &other); + void swap(Attribute &other) noexcept; /*! * Destroys the attribute. */ - virtual ~Attribute(); + ~Attribute(); /*! - * Returns type of the value. + * Returns the type of the value. */ AttributeTypes type() const; @@ -199,10 +199,10 @@ namespace TagLib ByteVector render(const String &name, int kind = 0) const; class AttributePrivate; - AttributePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<AttributePrivate> d; }; - } - -} + } // namespace ASF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/asf/asffile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asffile.h similarity index 85% rename from Frameworks/TagLib/taglib/taglib/asf/asffile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asffile.h index 0b2e3dda0..ec3a9c9c9 100644 --- a/Frameworks/TagLib/taglib/taglib/asf/asffile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asffile.h @@ -26,16 +26,16 @@ #ifndef TAGLIB_ASFFILE_H #define TAGLIB_ASFFILE_H -#include <taglib/tag.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/taglib_export.h> -#include <taglib/asf/asfproperties.h> -#include <taglib/asf/asftag.h> +#include "tfile.h" +#include "taglib_export.h" +#include "tag.h" +#include "asfproperties.h" +#include "asftag.h" namespace TagLib { - //! An implementation of ASF (WMA) metadata namespace ASF { + //! An implementation of TagLib::File with ASF specific methods /*! * This implements and provides an interface for ASF files to the @@ -73,7 +73,10 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns a pointer to the ASF tag of the file. @@ -85,35 +88,35 @@ namespace TagLib { * deleted by the user. It will be deleted when the file (object) is * destroyed. */ - virtual Tag *tag() const; + Tag *tag() const override; /*! * Implements the unified property interface -- export function. */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Removes unsupported properties. Forwards to the actual Tag's * removeUnsupportedProperties() function. */ - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &properties) override; /*! * Implements the unified property interface -- import function. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the ASF audio properties for this file. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Save the file. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - virtual bool save(); + bool save() override; /*! * Returns whether or not the given \a stream can be opened as an ASF @@ -128,11 +131,10 @@ namespace TagLib { void read(); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - - } - -} + } // namespace ASF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/asf/asfpicture.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfpicture.h similarity index 65% rename from Frameworks/TagLib/taglib/taglib/asf/asfpicture.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfpicture.h index 2ca2d50e6..60201caee 100644 --- a/Frameworks/TagLib/taglib/taglib/asf/asfpicture.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfpicture.h @@ -26,10 +26,10 @@ #ifndef ASFPICTURE_H #define ASFPICTURE_H -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> -#include <taglib/mpeg/id3v2/frames/attachedpictureframe.h> +#include "tstring.h" +#include "tbytevector.h" +#include "tpicturetype.h" +#include "taglib_export.h" namespace TagLib { @@ -39,9 +39,9 @@ namespace TagLib //! An ASF attached picture interface implementation /*! - * This is an implementation of ASF attached pictures interface. Pictures may be + * This is an implementation of ASF attached pictures. Pictures may be * included in attributes, one per WM/Picture attribute (but there may be multiple WM/Picture - * attribute in a single tag). These pictures are usually in either JPEG or + * attributes in a single tag). These pictures are usually in either JPEG or * PNG format. * \see Attribute::toPicture() * \see Attribute::Attribute(const Picture& picture) @@ -49,53 +49,10 @@ namespace TagLib class TAGLIB_EXPORT Picture { public: - /*! + /* * This describes the function or content of the picture. */ - enum Type { - //! A type not enumerated below - Other = 0x00, - //! 32x32 PNG image that should be used as the file icon - FileIcon = 0x01, - //! File icon of a different size or format - OtherFileIcon = 0x02, - //! Front cover image of the album - FrontCover = 0x03, - //! Back cover image of the album - BackCover = 0x04, - //! Inside leaflet page of the album - LeafletPage = 0x05, - //! Image from the album itself - Media = 0x06, - //! Picture of the lead artist or soloist - LeadArtist = 0x07, - //! Picture of the artist or performer - Artist = 0x08, - //! Picture of the conductor - Conductor = 0x09, - //! Picture of the band or orchestra - Band = 0x0A, - //! Picture of the composer - Composer = 0x0B, - //! Picture of the lyricist or text writer - Lyricist = 0x0C, - //! Picture of the recording location or studio - RecordingLocation = 0x0D, - //! Picture of the artists during recording - DuringRecording = 0x0E, - //! Picture of the artists during performance - DuringPerformance = 0x0F, - //! Picture from a movie or video related to the track - MovieScreenCapture = 0x10, - //! Picture of a large, coloured fish - ColouredFish = 0x11, - //! Illustration related to the track - Illustration = 0x12, - //! Logo of the band or performer - BandLogo = 0x13, - //! Logo of the publisher (record company) - PublisherLogo = 0x14 - }; + DECLARE_PICTURE_TYPE_ENUM(Type) /*! * Constructs an empty picture. @@ -103,14 +60,14 @@ namespace TagLib Picture(); /*! - * Construct an picture as a copy of \a other. + * Construct a picture as a copy of \a other. */ Picture(const Picture& other); /*! * Destroys the picture. */ - virtual ~Picture(); + ~Picture(); /*! * Copies the contents of \a other into this picture. @@ -118,12 +75,12 @@ namespace TagLib Picture& operator=(const Picture& other); /*! - * Exchanges the content of the Picture by the content of \a other. + * Exchanges the content of the Picture with the content of \a other. */ - void swap(Picture &other); + void swap(Picture &other) noexcept; /*! - * Returns true if Picture stores valid picture + * Returns \c true if Picture stores valid picture */ bool isValid() const; @@ -178,7 +135,7 @@ namespace TagLib /*! * Returns the image data as a ByteVector. * - * \note ByteVector has a data() method that returns a const char * which + * \note ByteVector has a data() method that returns a <tt>const char *</tt> which * should make it easy to export this data to external programs. * * \see setPicture() @@ -214,9 +171,10 @@ namespace TagLib private: class PicturePrivate; - PicturePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<PicturePrivate> d; }; - } -} + } // namespace ASF +} // namespace TagLib #endif // ASFPICTURE_H diff --git a/Frameworks/TagLib/taglib/taglib/asf/asfproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfproperties.h similarity index 81% rename from Frameworks/TagLib/taglib/taglib/asf/asfproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfproperties.h index 236b13938..a90eba66f 100644 --- a/Frameworks/TagLib/taglib/taglib/asf/asfproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asfproperties.h @@ -26,21 +26,19 @@ #ifndef TAGLIB_ASFPROPERTIES_H #define TAGLIB_ASFPROPERTIES_H -#include <taglib/audioproperties.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/taglib_export.h> +#include "tstring.h" +#include "taglib_export.h" +#include "audioproperties.h" namespace TagLib { - namespace ASF { - //! An implementation of ASF audio properties class TAGLIB_EXPORT Properties : public AudioProperties { public: /*! - * Audio codec types can be used in ASF file. + * Audio codec types which can be used in ASF files. */ enum Codec { @@ -78,49 +76,32 @@ namespace TagLib { /*! * Destroys this ASF::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample. @@ -160,9 +141,6 @@ namespace TagLib { bool isEncrypted() const; #ifndef DO_NOT_DOCUMENT - // deprecated - void setLength(int value); - void setLengthInMilliseconds(int value); void setBitrate(int value); void setSampleRate(int value); @@ -176,11 +154,9 @@ namespace TagLib { private: class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - - } - -} - + } // namespace ASF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/asf/asftag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asftag.h similarity index 51% rename from Frameworks/TagLib/taglib/taglib/asf/asftag.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asftag.h index 260f4f5f8..752bad2c7 100644 --- a/Frameworks/TagLib/taglib/taglib/asf/asftag.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/asftag.h @@ -26,18 +26,20 @@ #ifndef TAGLIB_ASFTAG_H #define TAGLIB_ASFTAG_H -#include <taglib/tag.h> -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/taglib_export.h> -#include <taglib/asf/asfattribute.h> +#include "tlist.h" +#include "tmap.h" +#include "taglib_export.h" +#include "tag.h" +#include "asfattribute.h" namespace TagLib { namespace ASF { - typedef List<Attribute> AttributeList; - typedef Map<String, AttributeList> AttributeListMap; + using AttributeList = List<Attribute>; + using AttributeListMap = Map<String, AttributeList>; + + //! An implementation of ASF (WMA) tags class TAGLIB_EXPORT Tag : public TagLib::Tag { @@ -47,50 +49,37 @@ namespace TagLib { Tag(); - virtual ~Tag(); + ~Tag() override; + + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; /*! * Returns the track name. */ - virtual String title() const; - - /*! - * Returns the album artist name. - */ - virtual String albumartist() const; + String title() const override; /*! * Returns the artist name. */ - virtual String artist() const; - - /*! - * Returns the composer name. - */ - virtual String composer() const; + String artist() const override; /*! * Returns the album name; if no album name is present in the tag - * String::null will be returned. + * an empty string will be returned. */ - virtual String album() const; - - /*! - * Returns the unsynchronized lyrics; if no unsynced lyrics are - * present in the tag String::null will be returned. - */ - virtual String unsyncedlyrics() const; + String album() const override; /*! * Returns the track comment. */ - virtual String comment() const; + String comment() const override; /*! - * Returns the genre name; if no genre is present in the tag String::null + * Returns the genre name; if no genre is present in the tag an empty string * will be returned. */ - virtual String genre() const; + String genre() const override; /*! * Returns the rating. @@ -98,110 +87,79 @@ namespace TagLib { virtual String rating() const; /*! - * Returns the genre name; if no genre is present in the tag String::null - * will be returned. + * Returns the copyright information; if no copyright information is + * present in the tag an empty string will be returned. */ virtual String copyright() const; /*! * Returns the year; if there is no year set, this will return 0. */ - virtual unsigned int year() const; + unsigned int year() const override; /*! * Returns the track number; if there is no track number set, this will * return 0. */ - virtual unsigned int track() const; - virtual unsigned int disc() const; - - virtual String cuesheet() const; - - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; + unsigned int track() const override; /*! - * Sets the title to \a s. + * Sets the title to \a value. */ - virtual void setTitle(const String &s); + void setTitle(const String &value) override; /*! - * Sets the artist to \a s. + * Sets the artist to \a value. */ - virtual void setAlbumArtist(const String &s); + void setArtist(const String &value) override; /*! - * Sets the artist to \a s. - */ - virtual void setArtist(const String &s); - - /*! - * Sets the composer to \a s. - */ - virtual void setComposer(const String &s); - - /*! - * Sets the album to \a s. If \a s is String::null then this value will be + * Sets the album to \a value. If \a value is an empty string then this value will be * cleared. */ - virtual void setAlbum(const String &s); - + void setAlbum(const String &value) override; + /*! - * Sets the unsynced lyrics to \a s. if \a s is String::null then this - * value will be cleared. + * Sets the comment to \a value. */ - virtual void setUnsyncedlyrics(const String &s); + void setComment(const String &value) override; /*! - * Sets the comment to \a s. + * Sets the rating to \a value. */ - virtual void setComment(const String &s); + virtual void setRating(const String &value); /*! - * Sets the rating to \a s. + * Sets the copyright to \a value. */ - virtual void setRating(const String &s); + virtual void setCopyright(const String &value); /*! - * Sets the copyright to \a s. + * Sets the genre to \a value. */ - virtual void setCopyright(const String &s); + void setGenre(const String &value) override; /*! - * Sets the genre to \a s. + * Sets the year to \a value. If \a value is 0 then this value will be cleared. */ - virtual void setGenre(const String &s); + void setYear(unsigned int value) override; /*! - * Sets the year to \a i. If \a s is 0 then this value will be cleared. + * Sets the track to \a value. If \a value is 0 then this value will be cleared. */ - virtual void setYear(unsigned int i); + void setTrack(unsigned int value) override; /*! - * Sets the track to \a i. If \a s is 0 then this value will be cleared. - */ - virtual void setTrack(unsigned int i); - virtual void setDisc(unsigned int i); - - virtual void setCuesheet(const String &s); - - virtual void setRGAlbumGain(float f); - virtual void setRGAlbumPeak(float f); - virtual void setRGTrackGain(float f); - virtual void setRGTrackPeak(float f); - - /*! - * Returns true if the tag does not contain any data. This should be + * Returns \c true if the tag does not contain any data. This should be * reimplemented in subclasses that provide more than the basic tagging * abilities in this class. */ - virtual bool isEmpty() const; + bool isEmpty() const override; /*! - * \deprecated + * \warning You should not modify this data structure directly, instead + * use attributeListMap() const, contains(), removeItem(), + * attribute(), setAttribute(), addAttribute(). */ AttributeListMap &attributeListMap(); @@ -209,18 +167,17 @@ namespace TagLib { * Returns a reference to the item list map. This is an AttributeListMap of * all of the items in the tag. */ - // BIC: return by value const AttributeListMap &attributeListMap() const; /*! - * \return True if a value for \a attribute is currently set. + * \return \c true if a value for \a key is currently set. */ - bool contains(const String &name) const; + bool contains(const String &key) const; /*! * Removes the \a key attribute from the tag */ - void removeItem(const String &name); + void removeItem(const String &key); /*! * \return The list of values for the key \a name, or an empty list if no @@ -229,8 +186,8 @@ namespace TagLib { AttributeList attribute(const String &name) const; /*! - * Sets the \a key attribute to the value of \a attribute. If an attribute - * with the \a key is already present, it will be replaced. + * Sets the \a name attribute to the value of \a attribute. If an attribute + * with the \a name is already present, it will be replaced. */ void setAttribute(const String &name, const Attribute &attribute); @@ -240,20 +197,25 @@ namespace TagLib { void setAttribute(const String &name, const AttributeList &values); /*! - * Sets the \a key attribute to the value of \a attribute. If an attribute - * with the \a key is already present, it will be added to the list. + * Sets the \a name attribute to the value of \a attribute. If an attribute + * with the \a name is already present, it will be added to the list. */ void addAttribute(const String &name, const Attribute &attribute); - PropertyMap properties() const; - void removeUnsupportedProperties(const StringList& properties); - PropertyMap setProperties(const PropertyMap &properties); + PropertyMap properties() const override; + void removeUnsupportedProperties(const StringList &props) override; + PropertyMap setProperties(const PropertyMap &props) override; + + StringList complexPropertyKeys() const override; + List<VariantMap> complexProperties(const String &key) const override; + bool setComplexProperties(const String &key, const List<VariantMap> &value) override; private: class TagPrivate; - TagPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; }; - } -} + } // namespace ASF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/attachedpictureframe.h similarity index 68% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/attachedpictureframe.h index 7deb16dff..0a69d0c70 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/attachedpictureframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/attachedpictureframe.h @@ -26,9 +26,9 @@ #ifndef TAGLIB_ATTACHEDPICTUREFRAME_H #define TAGLIB_ATTACHEDPICTUREFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "tpicturetype.h" +#include "id3v2frame.h" namespace TagLib { @@ -49,53 +49,10 @@ namespace TagLib { public: - /*! + /* * This describes the function or content of the picture. */ - enum Type { - //! A type not enumerated below - Other = 0x00, - //! 32x32 PNG image that should be used as the file icon - FileIcon = 0x01, - //! File icon of a different size or format - OtherFileIcon = 0x02, - //! Front cover image of the album - FrontCover = 0x03, - //! Back cover image of the album - BackCover = 0x04, - //! Inside leaflet page of the album - LeafletPage = 0x05, - //! Image from the album itself - Media = 0x06, - //! Picture of the lead artist or soloist - LeadArtist = 0x07, - //! Picture of the artist or performer - Artist = 0x08, - //! Picture of the conductor - Conductor = 0x09, - //! Picture of the band or orchestra - Band = 0x0A, - //! Picture of the composer - Composer = 0x0B, - //! Picture of the lyricist or text writer - Lyricist = 0x0C, - //! Picture of the recording location or studio - RecordingLocation = 0x0D, - //! Picture of the artists during recording - DuringRecording = 0x0E, - //! Picture of the artists during performance - DuringPerformance = 0x0F, - //! Picture from a movie or video related to the track - MovieScreenCapture = 0x10, - //! Picture of a large, coloured fish - ColouredFish = 0x11, - //! Illustration related to the track - Illustration = 0x12, - //! Logo of the band or performer - BandLogo = 0x13, - //! Logo of the publisher (record company) - PublisherLogo = 0x14 - }; + DECLARE_PICTURE_TYPE_ENUM(Type) /*! * Constructs an empty picture frame. The description, content and text @@ -109,14 +66,22 @@ namespace TagLib { explicit AttachedPictureFrame(const ByteVector &data); /*! - * Destroys the AttahcedPictureFrame instance. + * Destroys the AttachedPictureFrame instance. */ - virtual ~AttachedPictureFrame(); + ~AttachedPictureFrame() override; + + AttachedPictureFrame(const AttachedPictureFrame &) = delete; + AttachedPictureFrame &operator=(const AttachedPictureFrame &) = delete; /*! * Returns a string containing the description and mime-type */ - virtual String toString() const; + String toString() const override; + + /*! + * Returns a string list containing the description and mime-type. + */ + StringList toStringList() const override; /*! * Returns the text encoding used for the description. @@ -184,7 +149,7 @@ namespace TagLib { /*! * Returns the image data as a ByteVector. * - * \note ByteVector has a data() method that returns a const char * which + * \note ByteVector has a data() method that returns a <tt>const char *</tt> which * should make it easy to export this data to external programs. * * \see setPicture() @@ -203,28 +168,26 @@ namespace TagLib { void setPicture(const ByteVector &p); protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; class AttachedPictureFramePrivate; - AttachedPictureFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<AttachedPictureFramePrivate> d; private: - AttachedPictureFrame(const AttachedPictureFrame &); - AttachedPictureFrame &operator=(const AttachedPictureFrame &); AttachedPictureFrame(const ByteVector &data, Header *h); - }; //! support for ID3v2.2 PIC frames class TAGLIB_EXPORT AttachedPictureFrameV22 : public AttachedPictureFrame { protected: - virtual void parseFields(const ByteVector &data); + void parseFields(const ByteVector &data) override; private: AttachedPictureFrameV22(const ByteVector &data, Header *h); friend class FrameFactory; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/audioproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/audioproperties.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/audioproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/audioproperties.h index 8b1053259..021c6329c 100644 --- a/Frameworks/TagLib/taglib/taglib/audioproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/audioproperties.h @@ -26,7 +26,10 @@ #ifndef TAGLIB_AUDIOPROPERTIES_H #define TAGLIB_AUDIOPROPERTIES_H -#include <taglib/taglib_export.h> +#include <memory> + +#include "taglib.h" +#include "taglib_export.h" namespace TagLib { @@ -34,7 +37,7 @@ namespace TagLib { /*! * The values here are common to most audio formats. For more specific, codec - * dependent values, please see see the subclasses APIs. This is meant to + * dependent values, please see the subclasses APIs. This is meant to * compliment the TagLib::File and TagLib::Tag APIs in providing a simple * interface that is sufficient for most applications. */ @@ -64,10 +67,19 @@ namespace TagLib { */ virtual ~AudioProperties(); + AudioProperties(const AudioProperties &) = delete; + AudioProperties &operator=(const AudioProperties &) = delete; + /*! - * Returns the length of the file in seconds. - */ - virtual int length() const = 0; + * Returns the length of the file in seconds. The length is rounded down to + * the nearest whole second. + * + * \note This method is just an alias of lengthInSeconds(). + * + * \deprecated Use lengthInSeconds(). + */ + TAGLIB_DEPRECATED + virtual int length() const; /*! * Returns the length of the file in seconds. The length is rounded down to @@ -75,28 +87,26 @@ namespace TagLib { * * \see lengthInMilliseconds() */ - // BIC: make virtual - int lengthInSeconds() const; + virtual int lengthInSeconds() const; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + virtual int lengthInMilliseconds() const; /*! * Returns the most appropriate bit rate for the file in kb/s. For constant * bitrate formats this is simply the bitrate of the file. For variable * bitrate formats this is either the average or nominal bitrate. */ - virtual int bitrate() const = 0; + virtual int bitrate() const; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const = 0; + virtual int sampleRate() const; /*! * Returns the number of audio channels. @@ -115,13 +125,11 @@ namespace TagLib { AudioProperties(ReadStyle style); private: - AudioProperties(const AudioProperties &); - AudioProperties &operator=(const AudioProperties &); - class AudioPropertiesPrivate; - AudioPropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<AudioPropertiesPrivate> d; }; -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/chapterframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/chapterframe.h similarity index 88% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/chapterframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/chapterframe.h index d897c4dd7..27a42f7d6 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/chapterframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/chapterframe.h @@ -26,9 +26,9 @@ #ifndef TAGLIB_CHAPTERFRAME #define TAGLIB_CHAPTERFRAME -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2tag.h" +#include "id3v2frame.h" namespace TagLib { @@ -57,7 +57,7 @@ namespace TagLib { * \a startTime, end time \a endTime, start offset \a startOffset, * end offset \a endOffset and optionally a list of embedded frames, * whose ownership will then be taken over by this Frame, in - * \a embeddedFrames; + * \a embeddedFrames. * * All times are in milliseconds. */ @@ -69,7 +69,10 @@ namespace TagLib { /*! * Destroys the frame. */ - virtual ~ChapterFrame(); + ~ChapterFrame() override; + + ChapterFrame(const ChapterFrame &) = delete; + ChapterFrame &operator=(const ChapterFrame &) = delete; /*! * Returns the element ID of the frame. Element ID @@ -97,7 +100,7 @@ namespace TagLib { * Returns zero based byte offset (count of bytes from the beginning * of the audio file) of chapter's start. * - * \note If returned value is 0xFFFFFFFF, start time should be used instead. + * \note If the returned value is 0xFFFFFFFF, start time should be used instead. * \see setStartOffset() */ unsigned int startOffset() const; @@ -106,7 +109,7 @@ namespace TagLib { * Returns zero based byte offset (count of bytes from the beginning * of the audio file) of chapter's end. * - * \note If returned value is 0xFFFFFFFF, end time should be used instead. + * \note If the returned value is 0xFFFFFFFF, end time should be used instead. * \see setEndOffset() */ unsigned int endOffset() const; @@ -150,7 +153,7 @@ namespace TagLib { void setEndOffset(const unsigned int &eO); /*! - * Returns a reference to the frame list map. This is an FrameListMap of + * Returns a reference to the frame list map. This is a FrameListMap of * all of the frames embedded in the CHAP frame. * * This is the most convenient structure for accessing the CHAP frame's @@ -166,11 +169,11 @@ namespace TagLib { const FrameListMap &embeddedFrameListMap() const; /*! - * Returns a reference to the embedded frame list. This is an FrameList + * Returns a reference to the embedded frame list. This is a FrameList * of all of the frames embedded in the CHAP frame in the order that they * were parsed. * - * This can be useful if for example you want iterate over the CHAP frame's + * This can be useful if for example you want to iterate over the CHAP frame's * embedded frames in the order that they occur in the CHAP frame. * * \warning You should not modify this data structure directly, instead @@ -201,8 +204,8 @@ namespace TagLib { void addEmbeddedFrame(Frame *frame); /*! - * Remove an embedded frame from the CHAP frame. If \a del is true the frame's - * memory will be freed; if it is false, it must be deleted by the user. + * Remove an embedded frame from the CHAP frame. If \a del is \c true the frame's + * memory will be freed; if it is \c false, it must be deleted by the user. * * \note Using this method will invalidate any pointers on the list * returned by embeddedFrameList() @@ -218,9 +221,9 @@ namespace TagLib { */ void removeEmbeddedFrames(const ByteVector &id); - virtual String toString() const; + String toString() const override; - PropertyMap asProperties() const; + PropertyMap asProperties() const override; /*! * CHAP frames each have a unique element ID. This searches for a CHAP @@ -232,18 +235,17 @@ namespace TagLib { static ChapterFrame *findByElementID(const Tag *tag, const ByteVector &eID); protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: ChapterFrame(const ID3v2::Header *tagHeader, const ByteVector &data, Header *h); - ChapterFrame(const ChapterFrame &); - ChapterFrame &operator=(const ChapterFrame &); class ChapterFramePrivate; - ChapterFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<ChapterFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/commentsframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/commentsframe.h similarity index 87% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/commentsframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/commentsframe.h index db0d6d3f4..aaee6ae42 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/commentsframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/commentsframe.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_COMMENTSFRAME_H #define TAGLIB_COMMENTSFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { @@ -59,14 +59,17 @@ namespace TagLib { /*! * Destroys this CommentFrame instance. */ - virtual ~CommentsFrame(); + ~CommentsFrame() override; + + CommentsFrame(const CommentsFrame &) = delete; + CommentsFrame &operator=(const CommentsFrame &) = delete; /*! * Returns the text of this comment. * * \see text() */ - virtual String toString() const; + String toString() const override; /*! * Returns the language encoding as a 3 byte encoding as specified by @@ -97,11 +100,11 @@ namespace TagLib { /*! * Set the language using the 3 byte language code from * <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a> to - * \a languageCode. + * \a languageEncoding. * * \see language() */ - void setLanguage(const ByteVector &languageCode); + void setLanguage(const ByteVector &languageEncoding); /*! * Sets the description of the comment to \a s. @@ -115,7 +118,7 @@ namespace TagLib { * * \see text() */ - virtual void setText(const String &s); + void setText(const String &s) override; /*! * Returns the text encoding that will be used in rendering this frame. @@ -145,12 +148,12 @@ namespace TagLib { * - otherwise, the key will be "COMMENT:<description>" * - The single value will be the frame's text(). */ - PropertyMap asProperties() const; + PropertyMap asProperties() const override; /*! * Comments each have a unique description. This searches for a comment * frame with the description \a d and returns a pointer to it. If no - * frame is found that matches the given description null is returned. + * frame is found that matches the given description, null is returned. * * \see description() */ @@ -159,21 +162,20 @@ namespace TagLib { protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! * The constructor used by the FrameFactory. */ CommentsFrame(const ByteVector &data, Header *h); - CommentsFrame(const CommentsFrame &); - CommentsFrame &operator=(const CommentsFrame &); class CommentsFramePrivate; - CommentsFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<CommentsFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffdiintag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffdiintag.h new file mode 100644 index 000000000..62a7b7355 --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffdiintag.h @@ -0,0 +1,147 @@ +/*************************************************************************** + copyright : (C) 2016 by Damien Plisson, Audirvana + email : damien78@audirvana.com + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_DSDIFFDIINTAG_H +#define TAGLIB_DSDIFFDIINTAG_H + +#include "tag.h" + +namespace TagLib { + + namespace DSDIFF { + + namespace DIIN { + + /*! + * Tags from the Edited Master Chunk Info + * + * Only Title and Artist tags are supported + */ + class TAGLIB_EXPORT Tag : public TagLib::Tag + { + public: + Tag(); + ~Tag() override; + + /*! + * Returns the track name; if no track name is present in the tag + * String() will be returned. + */ + String title() const override; + + /*! + * Returns the artist name; if no artist name is present in the tag + * String() will be returned. + */ + String artist() const override; + + /*! + * Not supported. Therefore always returns String(). + */ + String album() const override; + + /*! + * Not supported. Therefore always returns String(). + */ + String comment() const override; + + /*! + * Not supported. Therefore always returns String(). + */ + String genre() const override; + + /*! + * Not supported. Therefore always returns 0. + */ + unsigned int year() const override; + + /*! + * Not supported. Therefore always returns 0. + */ + unsigned int track() const override; + + /*! + * Sets the title to \a title. If \a title is String() then this + * value will be cleared. + */ + void setTitle(const String &title) override; + + /*! + * Sets the artist to \a artist. If \a artist is String() then this + * value will be cleared. + */ + void setArtist(const String &artist) override; + + /*! + * Not supported and therefore ignored. + */ + void setAlbum(const String &album) override; + + /*! + * Not supported and therefore ignored. + */ + void setComment(const String &comment) override; + + /*! + * Not supported and therefore ignored. + */ + void setGenre(const String &genre) override; + + /*! + * Not supported and therefore ignored. + */ + void setYear(unsigned int year) override; + + /*! + * Not supported and therefore ignored. + */ + void setTrack(unsigned int track) override; + + /*! + * Implements the unified property interface -- export function. + * Since the DIIN tag is very limited, the exported map is as well. + */ + PropertyMap properties() const override; + + /*! + * Implements the unified property interface -- import function. + * Because of the limitations of the DIIN file tag, any tags besides + * TITLE and ARTIST, will be + * returned. Additionally, if the map contains tags with multiple values, + * all but the first will be contained in the returned map of unsupported + * properties. + */ + PropertyMap setProperties(const PropertyMap &) override; + + private: + class TagPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; + }; + } // namespace DIIN + } // namespace DSDIFF +} // namespace TagLib + +#endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdifffile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdifffile.h new file mode 100644 index 000000000..86df7c16b --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdifffile.h @@ -0,0 +1,290 @@ +/*************************************************************************** + copyright : (C) 2016 by Damien Plisson, Audirvana + email : damien78@audirvana.com + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_DSDIFFFILE_H +#define TAGLIB_DSDIFFFILE_H + +#include "rifffile.h" +#include "id3v2tag.h" +#include "dsdiffproperties.h" +#include "dsdiffdiintag.h" + +namespace TagLib { + + //! An implementation of DSDIFF metadata + + /*! + * This is an implementation of DSDIFF metadata. + * + * This supports an ID3v2 tag as well as reading stream from the ID3 RIFF + * chunk as well as properties from the file. + * Description of the DSDIFF format is available at + * <a href="https://dsd-guide.com/sites/default/files/white-papers/DSDIFF_1.5_Spec.pdf"> + * DSDIFF_1.5_Spec.pdf</a>. + * The DSDIFF standard does not explicitly specify the ID3 chunk. + * It can be found at the root level, but also sometimes inside the PROP chunk. + * In addition, title and artist info are stored as part of the standard. + */ + + namespace DSDIFF { + + //! An implementation of TagLib::File with DSDIFF specific methods. + + /*! + * This implements and provides an interface for DSDIFF files to the + * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing + * the abstract TagLib::File API as well as providing some additional + * information specific to DSDIFF files. + */ + + class TAGLIB_EXPORT File : public TagLib::File + { + public: + + /*! + * This set of flags is used for various operations and is suitable for + * being OR-ed together. + */ + enum TagTypes { + //! Empty set. Matches no tag types. + NoTags = 0x0000, + //! Matches DIIN tags. + DIIN = 0x0001, + //! Matches ID3v2 tags. + ID3v2 = 0x0002, + //! Matches all tag types. + AllTags = 0xffff + }; + + /*! + * Constructs a DSDIFF file from \a file. If \a readProperties is \c true + * the file's audio properties will also be read. + * + * \note In the current implementation, \a propertiesStyle is ignored. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). + */ + File(FileName file, bool readProperties = true, + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); + + /*! + * Constructs a DSDIFF file from \a stream. If \a readProperties is \c true + * the file's audio properties will also be read. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). + * + * \note TagLib will *not* take ownership of the stream, the caller is + * responsible for deleting it after the File object. + * + * \note In the current implementation, \a propertiesStyle is ignored. + */ + File(IOStream *stream, bool readProperties = true, + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); + + /*! + * Destroys this instance of the File. + */ + ~File() override; + + /*! + * Returns a pointer to a tag that is the union of the ID3v2 and DIIN + * tags. The ID3v2 tag is given priority in reading the information -- if + * requested information exists in both the ID3v2 tag and the ID3v1 tag, + * the information from the ID3v2 tag will be returned. + * + * If you would like more granular control over the content of the tags, + * with the concession of generality, use the tag-type specific calls. + * + * \note As this tag is not implemented as an ID3v2 tag or a DIIN tag, + * but a union of the two this pointer may not be cast to the specific + * tag types. + * + * \see ID3v2Tag() + * \see DIINTag() + */ + Tag *tag() const override; + + /*! + * Returns the ID3V2 Tag for this file. + * + * \note This always returns a valid pointer regardless of whether or not + * the file on disk has an ID3v2 tag. Use hasID3v2Tag() to check if the + * file on disk actually has an ID3v2 tag. + * + * \see hasID3v2Tag() + */ + ID3v2::Tag *ID3v2Tag(bool create = false) const; + + /*! + * Returns the DSDIFF DIIN Tag for this file + * + */ + DSDIFF::DIIN::Tag *DIINTag(bool create = false) const; + + /*! + * Implements the unified property interface -- export function. + * This method forwards to ID3v2::Tag::properties(). + */ + PropertyMap properties() const override; + + void removeUnsupportedProperties(const StringList &properties) override; + + /*! + * Implements the unified property interface -- import function. + * This method forwards to ID3v2::Tag::setProperties(). + */ + PropertyMap setProperties(const PropertyMap &) override; + + /*! + * Returns the AIFF::Properties for this file. If no audio properties + * were read then this will return a null pointer. + */ + Properties *audioProperties() const override; + + /*! + * Save the file. If at least one tag -- ID3v1 or DIIN -- exists this + * will duplicate its content into the other tag. This returns \c true + * if saving was successful. + * + * If neither exists or if both tags are empty, this will strip the tags + * from the file. + * + * This is the same as calling save(AllTags); + * + * If you would like more granular control over the content of the tags, + * with the concession of generality, use parameterized save call below. + * + * \see save(int tags) + */ + bool save() override; + + /*! + * Save the file. If \a strip is specified, it is possible to choose if + * tags not specified in \a tags should be stripped from the file or + * retained. With \a version, it is possible to specify whether ID3v2.4 + * or ID3v2.3 should be used. + */ + bool save(int tags, StripTags strip = StripOthers, ID3v2::Version version = ID3v2::v4); + + /*! + * This will strip the tags that match the OR-ed together TagTypes from the + * file. By default it strips all tags. It returns \c true if the tags are + * successfully stripped. + * + * \note This will update the file immediately. + */ + void strip(int tags = AllTags); + + /*! + * Returns whether or not the file on disk actually has an ID3v2 tag. + * + * \see ID3v2Tag() + */ + bool hasID3v2Tag() const; + + /*! + * Returns whether or not the file on disk actually has the DSDIFF + * title and artist tags. + * + * \see DIINTag() + */ + bool hasDIINTag() const; + + /*! + * Returns whether or not the given \a stream can be opened as a DSDIFF + * file. + * + * \note This method is designed to do a quick check. The result may + * not necessarily be correct. + */ + static bool isSupported(IOStream *stream); + + protected: + enum Endianness { BigEndian, LittleEndian }; + + private: + void removeRootChunk(const ByteVector &id); + void removeRootChunk(unsigned int i); + void removeChildChunk(const ByteVector &id, unsigned int childChunkNum); + void removeChildChunk(unsigned int i, unsigned int childChunkNum); + + /*! + * Sets the data for the specified chunk at root level to \a data. + * + * \warning This will update the file immediately. + */ + void setRootChunkData(unsigned int i, const ByteVector &data); + + /*! + * Sets the data for the root-level chunk \a name to \a data. + * If a root-level chunk with the given name already exists + * it will be overwritten, otherwise it will be + * created after the existing chunks. + * + * \warning This will update the file immediately. + */ + void setRootChunkData(const ByteVector &name, const ByteVector &data); + + /*! + * Sets the data for the specified child chunk to \a data. + * + * If data is null, then remove the chunk + * + * \warning This will update the file immediately. + */ + void setChildChunkData(unsigned int i, const ByteVector &data, + unsigned int childChunkNum); + + /*! + * Sets the data for the child chunk \a name to \a data. If a chunk with + * the given name already exists it will be overwritten, otherwise it will + * be created after the existing chunks inside the child chunk. + * + * If data is null, then remove the chunks with \a name name + * + * \warning This will update the file immediately. + */ + void setChildChunkData(const ByteVector &name, const ByteVector &data, + unsigned int childChunkNum); + + void updateRootChunksStructure(unsigned int startingChunk); + + void read(bool readProperties, Properties::ReadStyle propertiesStyle); + void writeChunk(const ByteVector &name, const ByteVector &data, + unsigned long long offset, unsigned long replace = 0, + unsigned int leadingPadding = 0); + + class FilePrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; + }; + } // namespace DSDIFF +} // namespace TagLib + +#endif diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4coverart.cpp b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffproperties.h similarity index 52% rename from Frameworks/TagLib/taglib/taglib/mp4/mp4coverart.cpp rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffproperties.h index 9fc11eb19..f2d6afc93 100644 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4coverart.cpp +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsdiffproperties.h @@ -1,7 +1,7 @@ -/************************************************************************** - copyright : (C) 2009 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ +/*************************************************************************** + copyright : (C) 2016 by Damien Plisson, Audirvana + email : damien78@audirvana.com +***************************************************************************/ /*************************************************************************** * This library is free software; you can redistribute it and/or modify * @@ -23,71 +23,57 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tdebug.h> -#include <taglib/toolkit/trefcounter.h> -#include <taglib/mp4/mp4coverart.h> +#ifndef TAGLIB_DSDIFFPROPERTIES_H +#define TAGLIB_DSDIFFPROPERTIES_H -using namespace TagLib; +#include "audioproperties.h" -class MP4::CoverArt::CoverArtPrivate : public RefCounter -{ -public: - CoverArtPrivate() : - RefCounter(), - format(MP4::CoverArt::JPEG) {} +namespace TagLib { - Format format; - ByteVector data; -}; + namespace DSDIFF { -//////////////////////////////////////////////////////////////////////////////// -// public members -//////////////////////////////////////////////////////////////////////////////// + class File; -MP4::CoverArt::CoverArt(Format format, const ByteVector &data) : - d(new CoverArtPrivate()) -{ - d->format = format; - d->data = data; -} + //! An implementation of audio property reading for DSDIFF -MP4::CoverArt::CoverArt(const CoverArt &item) : - d(item.d) -{ - d->ref(); -} + /*! + * This reads the data from a DSDIFF stream found in the AudioProperties + * API. + */ -MP4::CoverArt & -MP4::CoverArt::operator=(const CoverArt &item) -{ - CoverArt(item).swap(*this); - return *this; -} + class TAGLIB_EXPORT Properties : public AudioProperties + { + public: + /*! + * Create an instance of DSDIFF::Properties with the data read from the + * ByteVector \a data. + */ + Properties(unsigned int sampleRate, unsigned short channels, + unsigned long long samplesCount, int bitrate, + ReadStyle style); -void -MP4::CoverArt::swap(CoverArt &item) -{ - using std::swap; + /*! + * Destroys this DSDIFF::Properties instance. + */ + ~Properties() override; - swap(d, item.d); -} + // Reimplementations. -MP4::CoverArt::~CoverArt() -{ - if(d->deref()) { - delete d; - } -} + int lengthInSeconds() const override; + int lengthInMilliseconds() const override; + int bitrate() const override; + int sampleRate() const override; + int channels() const override; -MP4::CoverArt::Format -MP4::CoverArt::format() const -{ - return d->format; -} + int bitsPerSample() const; + long long sampleCount() const; -ByteVector -MP4::CoverArt::data() const -{ - return d->data; -} + private: + class PropertiesPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; + }; + } // namespace DSDIFF +} // namespace TagLib + +#endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsffile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsffile.h new file mode 100644 index 000000000..b538f6440 --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsffile.h @@ -0,0 +1,156 @@ +/*************************************************************************** + copyright : (C) 2013-2023 Stephen F. Booth + email : me@sbooth.org + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_DSFFILE_H +#define TAGLIB_DSFFILE_H + +#include <memory> + +#include "taglib_export.h" +#include "tfile.h" + +#include "dsfproperties.h" + +#include "id3v2tag.h" + +namespace TagLib { + + //! An implementation of DSF metadata + + /*! + * This is an implementation of DSF metadata using an ID3v2 tag inside the + * metadata chunk. + * The DSF specification is located at + * http://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf + */ + + namespace DSF { + + //! An implementation of TagLib::File with DSF specific methods + + /*! + * This implements and provides an interface for DSF files to the + * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing + * the abstract TagLib::File API as well as providing some additional + * information specific to DSF files. + */ + + class TAGLIB_EXPORT File : public TagLib::File { + public: + /*! + * Constructs a DSD stream file from \a file. + * + * \note In the current implementation, both \a readProperties and + * \a propertiesStyle are ignored. The audio properties are always + * read. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). + */ + File(FileName file, bool readProperties = true, + AudioProperties::ReadStyle propertiesStyle = + AudioProperties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); + + /*! + * Constructs a DSD stream file from \a stream. + * + * \note In the current implementation, both \a readProperties and + * \a propertiesStyle are ignored. The audio properties are always + * read. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). + * + * \note TagLib will *not* take ownership of the stream, the caller is + * responsible for deleting it after the File object. + */ + File(IOStream *stream, bool readProperties = true, + AudioProperties::ReadStyle propertiesStyle = + AudioProperties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); + + /*! + * Destroys this instance of the File. + */ + ~File() override; + + /*! + * Returns the ID3v2 Tag for this file. + */ + ID3v2::Tag *tag() const override; + + /*! + * Implements the unified property interface -- export function. + * Forwards to ID3v2::Tag::properties(). + */ + PropertyMap properties() const override; + + /*! + * Implements the unified property interface -- import function. + * Forwards to ID3v2::Tag::setProperties(). + */ + PropertyMap setProperties(const PropertyMap &) override; + + /*! + * Returns the DSF::Properties for this file. If no audio properties + * were read then this will return a null pointer. + */ + Properties *audioProperties() const override; + + /*! + * Save the file. + * + * This returns \c true if the save was successful. + */ + bool save() override; + + /*! + * Save the file. + * + * \a version specifies the ID3v2 version to be used for writing tags. + */ + bool save(ID3v2::Version version); + + /*! + * Returns whether or not the given \a stream can be opened as a DSF + * file. + * + * \note This method is designed to do a quick check. The result may + * not necessarily be correct. + */ + static bool isSupported(IOStream *stream); + + private: + void read(AudioProperties::ReadStyle propertiesStyle); + + class FilePrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; + }; + } // namespace DSF +} // namespace TagLib + +#endif diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsfproperties.h similarity index 55% rename from Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsfproperties.h index 09139d772..ce2491b47 100644 --- a/Frameworks/TagLib/taglib/taglib/flac/flacunknownmetadatablock.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/dsfproperties.h @@ -1,7 +1,7 @@ -/************************************************************************** - copyright : (C) 2010 by Lukáš Lalinský - email : lalinsky@gmail.com - **************************************************************************/ +/*************************************************************************** + copyright : (C) 2013-2023 Stephen F. Booth + email : me@sbooth.org + ***************************************************************************/ /*************************************************************************** * This library is free software; you can redistribute it and/or modify * @@ -23,59 +23,51 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ -#ifndef TAGLIB_FLACUNKNOWNMETADATABLOCK_H -#define TAGLIB_FLACUNKNOWNMETADATABLOCK_H +#ifndef TAGLIB_DSFPROPERTIES_H +#define TAGLIB_DSFPROPERTIES_H -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> -#include <taglib/flac/flacmetadatablock.h> +#include <memory> + +#include "taglib_export.h" +#include "tbytevector.h" +#include "audioproperties.h" namespace TagLib { - - namespace FLAC { - - class TAGLIB_EXPORT UnknownMetadataBlock : public MetadataBlock - { + namespace DSF { + //! An implementation of audio properties for DSF + class TAGLIB_EXPORT Properties : public AudioProperties { public: - UnknownMetadataBlock(int blockType, const ByteVector &data); - ~UnknownMetadataBlock(); + Properties(const ByteVector &data, ReadStyle style); + ~Properties() override; + + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; + + int lengthInMilliseconds() const override; + int bitrate() const override; + int sampleRate() const override; + int channels() const override; + + int formatVersion() const; + int formatID() const; /*! - * Returns the FLAC metadata block type. + * Channel type values: 1 = mono, 2 = stereo, 3 = 3 channels, + * 4 = quad, 5 = 4 channels, 6 = 5 channels, 7 = 5.1 channels */ - int code() const; - - /*! - * Sets the FLAC metadata block type. - */ - void setCode(int code); - - /*! - * Returns the FLAC metadata block type. - */ - ByteVector data() const; - - /*! - * Sets the FLAC metadata block type. - */ - void setData(const ByteVector &data); - - /*! - * Render the content of the block. - */ - ByteVector render() const; + int channelType() const; + int bitsPerSample() const; + long long sampleCount() const; + int blockSizePerChannel() const; private: - UnknownMetadataBlock(const MetadataBlock &item); - UnknownMetadataBlock &operator=(const MetadataBlock &item); + void read(const ByteVector &data); - class UnknownMetadataBlockPrivate; - UnknownMetadataBlockPrivate *d; + class PropertiesPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - - } - -} + } // namespace DSF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/eventtimingcodesframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/eventtimingcodesframe.h similarity index 89% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/eventtimingcodesframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/eventtimingcodesframe.h index bc3b68b75..2e6678a3c 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/eventtimingcodesframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/eventtimingcodesframe.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_EVENTTIMINGCODESFRAME_H #define TAGLIB_EVENTTIMINGCODESFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/toolkit/tlist.h> +#include "tlist.h" +#include "id3v2frame.h" namespace TagLib { @@ -116,7 +116,7 @@ namespace TagLib { /*! * List of synchronized events. */ - typedef TagLib::List<SynchedEvent> SynchedEventList; + using SynchedEventList = TagLib::List<SynchedEvent>; /*! * Construct an empty event timing codes frame. @@ -124,19 +124,22 @@ namespace TagLib { explicit EventTimingCodesFrame(); /*! - * Construct a event timing codes frame based on the data in \a data. + * Construct an event timing codes frame based on the data in \a data. */ explicit EventTimingCodesFrame(const ByteVector &data); /*! * Destroys this EventTimingCodesFrame instance. */ - virtual ~EventTimingCodesFrame(); + ~EventTimingCodesFrame() override; + + EventTimingCodesFrame(const EventTimingCodesFrame &) = delete; + EventTimingCodesFrame &operator=(const EventTimingCodesFrame &) = delete; /*! - * Returns a null string. + * Returns an empty string. */ - virtual String toString() const; + String toString() const override; /*! * Returns the timestamp format. @@ -165,21 +168,20 @@ namespace TagLib { protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! * The constructor used by the FrameFactory. */ EventTimingCodesFrame(const ByteVector &data, Header *h); - EventTimingCodesFrame(const EventTimingCodesFrame &); - EventTimingCodesFrame &operator=(const EventTimingCodesFrame &); class EventTimingCodesFramePrivate; - EventTimingCodesFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<EventTimingCodesFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/fileref.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/fileref.h new file mode 100644 index 000000000..0fe000efb --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/fileref.h @@ -0,0 +1,417 @@ +/*************************************************************************** + copyright : (C) 2002 - 2008 by Scott Wheeler + email : wheeler@kde.org + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_FILEREF_H +#define TAGLIB_FILEREF_H + +#include "tfile.h" +#include "tstringlist.h" + +#include "taglib_export.h" +#include "audioproperties.h" + +namespace TagLib { + + class Tag; + + //! This class provides a simple abstraction for creating and handling files + + /*! + * FileRef exists to provide a minimal, generic and value-based wrapper around + * a File. It is lightweight and implicitly shared, and as such suitable for + * pass-by-value use. This hides some of the uglier details of TagLib::File + * and the non-generic portions of the concrete file implementations. + * + * This class is useful in a "simple usage" situation where it is desirable + * to be able to get and set some of the tag information that is similar + * across file types. + * + * Also note that it is probably a good idea to plug this into your mime + * type system rather than using the constructor that accepts a file name using + * the FileTypeResolver. + * + * \see FileTypeResolver + * \see addFileTypeResolver() + */ + + class TAGLIB_EXPORT FileRef + { + public: + + //! A class for pluggable file type resolution. + + /*! + * %File type resolver, better implement StreamTypeResolver in order to + * support both file and stream resolution. + */ + + class TAGLIB_EXPORT FileTypeResolver + { + public: + FileTypeResolver(); + /*! + * Destroys this FileTypeResolver instance. + */ + virtual ~FileTypeResolver() = 0; + + FileTypeResolver(const FileTypeResolver &) = delete; + FileTypeResolver &operator=(const FileTypeResolver &) = delete; + + /*! + * This method must be overridden to provide an additional file type + * resolver. If the resolver is able to determine the file type it should + * return a valid File object; if not it should return nullptr. + * + * \note The created file is then owned by the FileRef and should not be + * deleted. Deletion will happen automatically when the FileRef passes + * out of scope. + */ + virtual File *createFile(FileName fileName, + bool readAudioProperties = true, + AudioProperties::ReadStyle + audioPropertiesStyle = AudioProperties::Average) const = 0; + private: + class FileTypeResolverPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FileTypeResolverPrivate> d; + }; + + //! A class for pluggable stream type resolution. + + /*! + * This class is used to extend TagLib's very basic file name based file + * type resolution. + * + * This can be accomplished with: + * + * \code + * + * class MyStreamTypeResolver : StreamTypeResolver + * { + * TagLib::File *createFile(TagLib::FileName *fileName, bool readProps, + * AudioProperties::ReadStyle readStyle) const override + * { + * if(someCheckForAnMP3File(fileName)) + * return new TagLib::MPEG::File(fileName, readProps, readStyle); + * return nullptr; + * } + * + * TagLib::File *createFileFromStream(TagLib::IOStream *s, bool readProps, + * AudioProperties::ReadStyle readStyle) const override + * { + * if(someCheckForAnMP3Stream(s)) + * return new TagLib::MPEG::File(s, readProps, readStyle); + * return nullptr; + * } + * } + * + * FileRef::addFileTypeResolver(new MyStreamTypeResolver); + * + * \endcode + * + * Naturally a less contrived example would be slightly more complex. This + * can be used to plug in mime-type detection systems or to add new file types + * to TagLib. + */ + + class TAGLIB_EXPORT StreamTypeResolver : public FileTypeResolver + { + public: + StreamTypeResolver(); + /*! + * Destroys this StreamTypeResolver instance. + */ + virtual ~StreamTypeResolver() override = 0; // virtual is needed by SWIG + + StreamTypeResolver(const StreamTypeResolver &) = delete; + StreamTypeResolver &operator=(const StreamTypeResolver &) = delete; + + /*! + * This method must be overridden to provide an additional stream type + * resolver. If the resolver is able to determine the file type it should + * return a valid File object; if not it should return nullptr. + * + * \note The created file is then owned by the FileRef and should not be + * deleted. Deletion will happen automatically when the FileRef passes + * out of scope. + * + * \see createFile() + */ + virtual File *createFileFromStream(IOStream *stream, + bool readAudioProperties = true, + AudioProperties::ReadStyle + audioPropertiesStyle = AudioProperties::Average) const = 0; + private: + class StreamTypeResolverPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<StreamTypeResolverPrivate> d; + }; + + /*! + * Creates a null FileRef. + */ + FileRef(); + + /*! + * Create a FileRef from \a fileName. If \a readAudioProperties is \c true then + * the audio properties will be read using \a audioPropertiesStyle. If + * \a readAudioProperties is \c false then \a audioPropertiesStyle will be + * ignored. + * + * Also see the note in the class documentation about why you may not want to + * use this method in your application. + */ + explicit FileRef(FileName fileName, + bool readAudioProperties = true, + AudioProperties::ReadStyle + audioPropertiesStyle = AudioProperties::Average); + + /*! + * Construct a FileRef from an opened \a IOStream. If \a readAudioProperties + * is \c true then the audio properties will be read using \a audioPropertiesStyle. + * If \a readAudioProperties is \c false then \a audioPropertiesStyle will be + * ignored. + * + * Also see the note in the class documentation about why you may not want to + * use this method in your application. + * + * \note TagLib will *not* take ownership of the stream, the caller is + * responsible for deleting it after the File object. + */ + explicit FileRef(IOStream* stream, + bool readAudioProperties = true, + AudioProperties::ReadStyle + audioPropertiesStyle = AudioProperties::Average); + + /*! + * Construct a FileRef using \a file. The FileRef now takes ownership of the + * pointer and will delete the File when it passes out of scope. + */ + explicit FileRef(File *file); + + /*! + * Make a copy of \a ref. + */ + FileRef(const FileRef &ref); + + /*! + * Destroys this FileRef instance. + */ + ~FileRef(); + + /*! + * Returns a pointer to the represented file's tag. + * + * \warning This pointer will become invalid when this FileRef and all + * copies pass out of scope. + * + * \warning Do not cast it to any subclasses of Tag. + * Use tag returning methods of appropriate subclasses of File instead. + * + * \see File::tag() + */ + Tag *tag() const; + + /*! + * Exports the tags of the file as dictionary mapping (human readable) tag + * names (uppercase Strings) to StringLists of tag values. Calls this + * method on the wrapped File instance. + * For each metadata object of the file that could not be parsed into the PropertyMap + * format, the returned map's unsupportedData() list will contain one entry identifying + * that object (e.g. the frame type for ID3v2 tags). Use removeUnsupportedProperties() + * to remove (a subset of) them. + * For files that contain more than one tag (e.g. an MP3 with both an ID3v1 and an ID3v2 + * tag) only the most "modern" one will be exported (ID3v2 in this case). + */ + PropertyMap properties() const; + + /*! + * Removes unsupported properties, or a subset of them, from the file's metadata. + * The parameter \a properties must contain only entries from + * properties().unsupportedData(). + */ + void removeUnsupportedProperties(const StringList& properties); + + /*! + * Sets the tags of the wrapped File to those specified in \a properties. + * If some value(s) could not be written to the specific metadata format, + * the returned PropertyMap will contain those value(s). Otherwise it will be empty, + * indicating that no problems occurred. + * With file types that support several tag formats (for instance, MP3 files can have + * ID3v1, ID3v2, and APEv2 tags), this function will create the most appropriate one + * (ID3v2 for MP3 files). Older formats will be updated as well, if they exist, but won't + * be taken into account for the return value of this function. + * See the documentation of the subclass implementations for detailed descriptions. + */ + PropertyMap setProperties(const PropertyMap &properties); + + /*! + * Get the keys of complex properties, i.e. properties which cannot be + * represented simply by a string. + * Because such properties might be expensive to fetch, there are separate + * operations to get the available keys - which is expected to be cheap - + * and getting and setting the property values. + * Calls the method on the wrapped File, which collects the keys from one + * or more of its tags. + */ + StringList complexPropertyKeys() const; + + /*! + * Get the complex properties for a given \a key. + * In order to be flexible for different metadata formats, the properties + * are represented as variant maps. Despite this dynamic nature, some + * degree of standardization should be achieved between formats: + * + * - PICTURE + * - data: ByteVector with picture data + * - description: String with description + * - pictureType: String with type as specified for ID3v2, + * e.g. "Front Cover", "Back Cover", "Band" + * - mimeType: String with image format, e.g. "image/jpeg" + * - optionally more information found in the tag, such as + * "width", "height", "numColors", "colorDepth" int values + * in FLAC pictures + * - GENERALOBJECT + * - data: ByteVector with object data + * - description: String with description + * - fileName: String with file name + * - mimeType: String with MIME type + * - this is currently only implemented for ID3v2 GEOB frames + * + * Calls the method on the wrapped File, which gets the properties from one + * or more of its tags. + */ + List<VariantMap> complexProperties(const String &key) const; + + /*! + * Set all complex properties for a given \a key using variant maps as + * \a value with the same format as returned by complexProperties(). + * An empty list as \a value removes all complex properties for \a key. + */ + bool setComplexProperties(const String &key, const List<VariantMap> &value); + + /*! + * Returns the audio properties for this FileRef. If no audio properties + * were read then this will return a null pointer. + */ + AudioProperties *audioProperties() const; + + /*! + * Returns a pointer to the file represented by this handler class. + * + * As a general rule this call should be avoided since if you need to work + * with file objects directly, you are probably better served instantiating + * the File subclasses (i.e. MPEG::File) manually and working with their APIs. + * + * This <i>handle</i> exists to provide a minimal, generic and value-based + * wrapper around a File. Accessing the file directly generally indicates + * a moving away from this simplicity (and into things beyond the scope of + * FileRef). + * + * \warning This pointer will become invalid when this FileRef and all + * copies pass out of scope. + */ + File *file() const; + + /*! + * Saves the file. Returns \c true on success. + */ + bool save(); + + /*! + * Adds a FileTypeResolver to the list of those used by TagLib. Each + * additional FileTypeResolver is added to the front of a list of resolvers + * that are tried. If the FileTypeResolver returns zero the next resolver + * is tried. + * + * Returns a pointer to the added resolver (the same one that's passed in -- + * this is mostly so that static initializers have something to use for + * assignment). + * + * \see FileTypeResolver + */ + static const FileTypeResolver *addFileTypeResolver(const FileTypeResolver *resolver); + + /*! + * Remove all resolvers added by addFileTypeResolver(). + */ + static void clearFileTypeResolvers(); + + /*! + * As is mentioned elsewhere in this class's documentation, the default file + * type resolution code provided by TagLib only works by comparing file + * extensions. + * + * This method returns the list of file extensions that are used by default. + * + * The extensions are all returned in lowercase, though the comparison used + * by TagLib for resolution is case-insensitive. + * + * \note This does not account for any additional file type resolvers that + * are plugged in. Also note that this is not intended to replace a proper + * mime-type resolution system, but is just here for reference. + * + * \see FileTypeResolver + */ + static StringList defaultFileExtensions(); + + /*! + * Returns \c true if the file (and as such other pointers) are null. + */ + bool isNull() const; + + /*! + * Assign the file pointed to by \a ref to this FileRef. + */ + FileRef &operator=(const FileRef &ref); + + /*! + * Exchanges the content of the FileRef with the content of \a ref. + */ + void swap(FileRef &ref) noexcept; + + /*! + * Returns \c true if this FileRef and \a ref point to the same File object. + */ + bool operator==(const FileRef &ref) const; + + /*! + * Returns \c true if this FileRef and \a ref do not point to the same File + * object. + */ + bool operator!=(const FileRef &ref) const; + + private: + void parse(FileName fileName, bool readAudioProperties, AudioProperties::ReadStyle audioPropertiesStyle); + void parse(IOStream *stream, bool readAudioProperties, AudioProperties::ReadStyle audioPropertiesStyle); + + class FileRefPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<FileRefPrivate> d; + }; + +} // namespace TagLib + +#endif diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacfile.h similarity index 74% rename from Frameworks/TagLib/taglib/taglib/flac/flacfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacfile.h index f57f1d232..4186f222d 100644 --- a/Frameworks/TagLib/taglib/taglib/flac/flacfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacfile.h @@ -26,13 +26,12 @@ #ifndef TAGLIB_FLACFILE_H #define TAGLIB_FLACFILE_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tlist.h> -#include <taglib/tag.h> - -#include <taglib/flac/flacpicture.h> -#include <taglib/flac/flacproperties.h> +#include "tfile.h" +#include "tlist.h" +#include "taglib_export.h" +#include "tag.h" +#include "flacpicture.h" +#include "flacproperties.h" namespace TagLib { @@ -44,7 +43,7 @@ namespace TagLib { //! An implementation of FLAC metadata /*! - * This is implementation of FLAC metadata for non-Ogg FLAC files. At some + * This is an implementation of FLAC metadata for non-Ogg FLAC files. At some * point when Ogg / FLAC is more common there will be a similar implementation * under the Ogg hierarchy. * @@ -84,44 +83,65 @@ namespace TagLib { }; /*! - * Constructs a FLAC file from \a file. If \a readProperties is true the + * Constructs a FLAC file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. * - * \deprecated This constructor will be dropped in favor of the one below - * in a future version. + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). */ File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); /*! - * Constructs an FLAC file from \a file. If \a readProperties is true the + * Constructs a FLAC file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * - * If this file contains and ID3v2 tag the frames will be created using + * If this file contains an ID3v2 tag, the frames will be created using * \a frameFactory. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * \deprecated Use the constructor above. */ - // BIC: merge with the above constructor + TAGLIB_DEPRECATED File(FileName file, ID3v2::FrameFactory *frameFactory, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs a FLAC file from \a stream. If \a readProperties is true the + * Constructs a FLAC file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is * responsible for deleting it after the File object. * - * If this file contains and ID3v2 tag the frames will be created using - * \a frameFactory. + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). * * \note In the current implementation, \a propertiesStyle is ignored. */ - // BIC: merge with the above constructor + File(IOStream *stream, bool readProperties = true, + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); + + /*! + * Constructs a FLAC file from \a stream. If \a readProperties is \c true the + * file's audio properties will also be read. + * + * \note TagLib will *not* take ownership of the stream, the caller is + * responsible for deleting it after the File object. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory. + * + * \note In the current implementation, \a propertiesStyle is ignored. + * + * \deprecated Use the constructor above. + */ + TAGLIB_DEPRECATED File(IOStream *stream, ID3v2::FrameFactory *frameFactory, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); @@ -129,7 +149,10 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the Tag for this file. This will be a union of XiphComment, @@ -139,7 +162,7 @@ namespace TagLib { * \see ID3v1Tag() * \see XiphComment() */ - virtual TagLib::Tag *tag() const; + TagLib::Tag *tag() const override; /*! * Implements the unified property interface -- export function. @@ -147,9 +170,9 @@ namespace TagLib { * only the first one (in the order XiphComment, ID3v2, ID3v1) will be * converted to the PropertyMap. */ - PropertyMap properties() const; + PropertyMap properties() const override; - void removeUnsupportedProperties(const StringList &); + void removeUnsupportedProperties(const StringList &) override; /*! * Implements the unified property interface -- import function. @@ -158,35 +181,52 @@ namespace TagLib { * Ignores any changes to ID3v1 or ID3v2 comments since they are not allowed * in the FLAC specification. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; + + /*! + * Returns ["PICTURE"] if any picture is stored in METADATA_BLOCK_PICTURE. + */ + StringList complexPropertyKeys() const override; + + /*! + * Get the pictures stored in METADATA_BLOCK_PICTURE as complex properties + * for \a key "PICTURE". + */ + List<VariantMap> complexProperties(const String &key) const override; + + /*! + * Set the complex properties \a value as pictures in METADATA_BLOCK_PICTURE + * for \a key "PICTURE". + */ + bool setComplexProperties(const String &key, const List<VariantMap> &value) override; /*! * Returns the FLAC::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Save the file. This will primarily save the XiphComment, but * will also keep any old ID3-tags up to date. If the file * has no XiphComment, one will be constructed from the ID3-tags. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - virtual bool save(); + bool save() override; /*! * Returns a pointer to the ID3v2 tag of the file. * - * If \a create is false (the default) this returns a null pointer - * if there is no valid ID3v2 tag. If \a create is true it will create + * If \a create is \c false (the default) this returns a null pointer + * if there is no valid ID3v2 tag. If \a create is \c true it will create * an ID3v2 tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an ID3v2 tag. Use hasID3v2Tag() to check if the file * on disk actually has an ID3v2 tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the FLAC::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -197,15 +237,15 @@ namespace TagLib { /*! * Returns a pointer to the ID3v1 tag of the file. * - * If \a create is false (the default) this returns a null pointer - * if there is no valid APE tag. If \a create is true it will create + * If \a create is \c false (the default) this returns a null pointer + * if there is no valid APE tag. If \a create is \c true it will create * an APE tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an ID3v1 tag. Use hasID3v1Tag() to check if the file * on disk actually has an ID3v1 tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the FLAC::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -216,8 +256,8 @@ namespace TagLib { /*! * Returns a pointer to the XiphComment for the file. * - * If \a create is false (the default) this returns a null pointer - * if there is no valid XiphComment. If \a create is true it will create + * If \a create is \c false (the default) this returns a null pointer + * if there is no valid XiphComment. If \a create is \c true it will create * a XiphComment if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the @@ -232,40 +272,14 @@ namespace TagLib { */ Ogg::XiphComment *xiphComment(bool create = false); - /*! - * Set the ID3v2::FrameFactory to something other than the default. This - * can be used to specify the way that ID3v2 frames will be interpreted - * when - * - * \see ID3v2FrameFactory - * \deprecated This value should be passed in via the constructor - */ - TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory); - - /*! - * Returns the block of data used by FLAC::Properties for parsing the - * stream properties. - * - * \deprecated Always returns an empty vector. - */ - TAGLIB_DEPRECATED ByteVector streamInfoData(); // BIC: remove - - /*! - * Returns the length of the audio-stream, used by FLAC::Properties for - * calculating the bitrate. - * - * \deprecated Always returns zero. - */ - TAGLIB_DEPRECATED long streamLength(); // BIC: remove - /*! * Returns a list of pictures attached to the FLAC file. */ List<Picture *> pictureList(); /*! - * Removes an attached picture. If \a del is true the picture's memory - * will be freed; if it is false, it must be deleted by the user. + * Removes an attached picture. If \a del is \c true the picture's memory + * will be freed; if it is \c false, it must be deleted by the user. */ void removePicture(Picture *picture, bool del = true); @@ -328,16 +342,14 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); void scan(); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace FLAC +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacmetadatablock.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacmetadatablock.h similarity index 86% rename from Frameworks/TagLib/taglib/taglib/flac/flacmetadatablock.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacmetadatablock.h index d4d5ab98b..efe61bfda 100644 --- a/Frameworks/TagLib/taglib/taglib/flac/flacmetadatablock.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacmetadatablock.h @@ -26,20 +26,21 @@ #ifndef TAGLIB_FLACMETADATABLOCK_H #define TAGLIB_FLACMETADATABLOCK_H -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> +#include "tbytevector.h" +#include "taglib_export.h" namespace TagLib { - namespace FLAC { - + //! FLAC metadata block class TAGLIB_EXPORT MetadataBlock { public: MetadataBlock(); virtual ~MetadataBlock(); + MetadataBlock(const MetadataBlock &item) = delete; + MetadataBlock &operator=(const MetadataBlock &item) = delete; + enum BlockType { StreamInfo = 0, Padding, @@ -61,15 +62,10 @@ namespace TagLib { virtual ByteVector render() const = 0; private: - MetadataBlock(const MetadataBlock &item); - MetadataBlock &operator=(const MetadataBlock &item); - class MetadataBlockPrivate; - MetadataBlockPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<MetadataBlockPrivate> d; }; - - } - -} - + } // namespace FLAC +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacpicture.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacpicture.h similarity index 60% rename from Frameworks/TagLib/taglib/taglib/flac/flacpicture.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacpicture.h index 7aa536403..935206219 100644 --- a/Frameworks/TagLib/taglib/taglib/flac/flacpicture.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacpicture.h @@ -26,71 +26,31 @@ #ifndef TAGLIB_FLACPICTURE_H #define TAGLIB_FLACPICTURE_H -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> -#include <taglib/flac/flacmetadatablock.h> +#include "tlist.h" +#include "tstring.h" +#include "tbytevector.h" +#include "tpicturetype.h" +#include "taglib_export.h" +#include "flacmetadatablock.h" namespace TagLib { - namespace FLAC { - + //! FLAC picture class TAGLIB_EXPORT Picture : public MetadataBlock { public: - /*! + /* * This describes the function or content of the picture. */ - enum Type { - //! A type not enumerated below - Other = 0x00, - //! 32x32 PNG image that should be used as the file icon - FileIcon = 0x01, - //! File icon of a different size or format - OtherFileIcon = 0x02, - //! Front cover image of the album - FrontCover = 0x03, - //! Back cover image of the album - BackCover = 0x04, - //! Inside leaflet page of the album - LeafletPage = 0x05, - //! Image from the album itself - Media = 0x06, - //! Picture of the lead artist or soloist - LeadArtist = 0x07, - //! Picture of the artist or performer - Artist = 0x08, - //! Picture of the conductor - Conductor = 0x09, - //! Picture of the band or orchestra - Band = 0x0A, - //! Picture of the composer - Composer = 0x0B, - //! Picture of the lyricist or text writer - Lyricist = 0x0C, - //! Picture of the recording location or studio - RecordingLocation = 0x0D, - //! Picture of the artists during recording - DuringRecording = 0x0E, - //! Picture of the artists during performance - DuringPerformance = 0x0F, - //! Picture from a movie or video related to the track - MovieScreenCapture = 0x10, - //! Picture of a large, coloured fish - ColouredFish = 0x11, - //! Illustration related to the track - Illustration = 0x12, - //! Logo of the band or performer - BandLogo = 0x13, - //! Logo of the publisher (record company) - PublisherLogo = 0x14 - }; + DECLARE_PICTURE_TYPE_ENUM(Type) Picture(); Picture(const ByteVector &data); - ~Picture(); + ~Picture() override; + + Picture(const Picture &item) = delete; + Picture &operator=(const Picture &item) = delete; /*! * Returns the type of the image. @@ -112,7 +72,7 @@ namespace TagLib { * Sets the mime type of the image. This should in most cases be * "image/png" or "image/jpeg". */ - void setMimeType(const String &m); + void setMimeType(const String &mimeType); /*! * Returns a text description of the image. @@ -121,10 +81,10 @@ namespace TagLib { String description() const; /*! - * Sets a textual description of the image to \a desc. + * Sets a textual description of the image to \a description. */ - void setDescription(const String &desc); + void setDescription(const String &description); /*! * Returns the width of the image. @@ -134,7 +94,7 @@ namespace TagLib { /*! * Sets the width of the image. */ - void setWidth(int w); + void setWidth(int width); /*! * Returns the height of the image. @@ -144,7 +104,7 @@ namespace TagLib { /*! * Sets the height of the image. */ - void setHeight(int h); + void setHeight(int height); /*! * Returns the color depth (in bits-per-pixel) of the image. @@ -154,7 +114,7 @@ namespace TagLib { /*! * Sets the color depth (in bits-per-pixel) of the image. */ - void setColorDepth(int depth); + void setColorDepth(int colorDepth); /*! * Returns the number of colors used on the image.. @@ -179,30 +139,25 @@ namespace TagLib { /*! * Returns the FLAC metadata block type. */ - int code() const; + int code() const override; /*! * Render the content to the FLAC picture block format. */ - ByteVector render() const; + ByteVector render() const override; /*! * Parse the picture data in the FLAC picture block format. */ - bool parse(const ByteVector &rawData); + bool parse(const ByteVector &data); private: - Picture(const Picture &item); - Picture &operator=(const Picture &item); - class PicturePrivate; - PicturePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PicturePrivate> d; }; - typedef List<Picture> PictureList; - - } - -} - + using PictureList = List<Picture>; + } // namespace FLAC +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/flac/flacproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacproperties.h similarity index 64% rename from Frameworks/TagLib/taglib/taglib/flac/flacproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacproperties.h index db6c3ca70..5926a82d1 100644 --- a/Frameworks/TagLib/taglib/taglib/flac/flacproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/flacproperties.h @@ -26,19 +26,18 @@ #ifndef TAGLIB_FLACPROPERTIES_H #define TAGLIB_FLACPROPERTIES_H -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> +#include "tbytevector.h" +#include "taglib_export.h" +#include "audioproperties.h" namespace TagLib { namespace FLAC { - class File; - //! An implementation of audio property reading for FLAC /*! - * This reads the data from an FLAC stream found in the AudioProperties + * This reads the data from a FLAC stream found in the AudioProperties * API. */ @@ -49,62 +48,37 @@ namespace TagLib { * Create an instance of FLAC::Properties with the data read from the * ByteVector \a data. */ - // BIC: switch to const reference - Properties(ByteVector data, long streamLength, ReadStyle style = Average); - - /*! - * Create an instance of FLAC::Properties with the data read from the - * FLAC::File \a file. - */ - // BIC: remove - Properties(File *file, ReadStyle style = Average); + Properties(const ByteVector &data, offset_t streamLength, ReadStyle style = Average); /*! * Destroys this FLAC::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample as read from the FLAC @@ -112,16 +86,6 @@ namespace TagLib { */ int bitsPerSample() const; - /*! - * Returns the sample width as read from the FLAC identification - * header. - * - * \note This method is just an alias of bitsPerSample(). - * - * \deprecated - */ - TAGLIB_DEPRECATED int sampleWidth() const; - /*! * Return the number of sample frames. */ @@ -134,15 +98,13 @@ namespace TagLib { ByteVector signature() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(const ByteVector &data, long streamLength); + void read(const ByteVector &data, offset_t streamLength); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace FLAC +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/generalencapsulatedobjectframe.h similarity index 87% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/generalencapsulatedobjectframe.h index 609d80782..481343936 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/generalencapsulatedobjectframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/generalencapsulatedobjectframe.h @@ -29,9 +29,8 @@ #ifndef TAGLIB_GENERALENCAPSULATEDOBJECT_H #define TAGLIB_GENERALENCAPSULATEDOBJECT_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/mpeg/id3v2/id3v2header.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { @@ -42,7 +41,7 @@ namespace TagLib { /*! * This is an implementation of ID3v2 general encapsulated objects. * Arbitrary binary data may be included in tags, stored in GEOB frames. - * There may be multiple GEOB frames in a single tag. Each GEOB it + * There may be multiple GEOB frames in a single tag. Each GEOB is * labelled with a content description (which may be blank), a required * mime-type, and a file name (may be blank). The content description * uniquely identifies the GEOB frame in the tag. @@ -72,12 +71,20 @@ namespace TagLib { /*! * Destroys the GeneralEncapsulatedObjectFrame instance. */ - virtual ~GeneralEncapsulatedObjectFrame(); + ~GeneralEncapsulatedObjectFrame() override; + + GeneralEncapsulatedObjectFrame(const GeneralEncapsulatedObjectFrame &) = delete; + GeneralEncapsulatedObjectFrame &operator=(const GeneralEncapsulatedObjectFrame &) = delete; /*! * Returns a string containing the description, file name and mime-type */ - virtual String toString() const; + String toString() const override; + + /*! + * Returns a string list containing the description, file name and mime-type. + */ + StringList toStringList() const override; /*! * Returns the text encoding used for the description and file name. @@ -143,7 +150,7 @@ namespace TagLib { /*! * Returns the object data as a ByteVector. * - * \note ByteVector has a data() method that returns a const char * which + * \note ByteVector has a data() method that returns a <tt>const char *</tt> which * should make it easy to export this data to external programs. * * \see setObject() @@ -159,21 +166,20 @@ namespace TagLib { * \see mimeType() * \see setMimeType() */ - void setObject(const ByteVector &object); + void setObject(const ByteVector &data); protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: GeneralEncapsulatedObjectFrame(const ByteVector &data, Header *h); - GeneralEncapsulatedObjectFrame(const GeneralEncapsulatedObjectFrame &); - GeneralEncapsulatedObjectFrame &operator=(const GeneralEncapsulatedObjectFrame &); class GeneralEncapsulatedObjectFramePrivate; - GeneralEncapsulatedObjectFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<GeneralEncapsulatedObjectFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1genres.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v1genres.h similarity index 94% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1genres.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v1genres.h index d4e20d8f9..888c00d06 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1genres.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v1genres.h @@ -26,14 +26,14 @@ #ifndef TAGLIB_ID3V1GENRE_H #define TAGLIB_ID3V1GENRE_H -#include <taglib/toolkit/tmap.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/taglib_export.h> +#include "tmap.h" +#include "tstringlist.h" +#include "taglib_export.h" namespace TagLib { namespace ID3v1 { - typedef Map<String, int> GenreMap; + using GenreMap = Map<String, int>; /*! * Returns the list of canonical ID3v1 genre names in the order that they @@ -60,7 +60,7 @@ namespace TagLib { * will be returned. */ int TAGLIB_EXPORT genreIndex(const String &name); - } -} + } // namespace ID3v1 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1tag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v1tag.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1tag.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v1tag.h index ccd46b295..e85023ef3 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v1/id3v1tag.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v1tag.h @@ -26,9 +26,10 @@ #ifndef TAGLIB_ID3V1TAG_H #define TAGLIB_ID3V1TAG_H -#include <taglib/tag.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> +#include "tbytevector.h" +#include "taglib.h" +#include "taglib_export.h" +#include "tag.h" namespace TagLib { @@ -38,7 +39,7 @@ namespace TagLib { namespace ID3v1 { - //! A abstraction for the string to data encoding in ID3v1 tags. + //! An abstraction for the string to data encoding in ID3v1 tags. /*! * ID3v1 should in theory always contain ISO-8859-1 (Latin1) data. In @@ -59,11 +60,14 @@ namespace TagLib { class TAGLIB_EXPORT StringHandler { - TAGLIB_IGNORE_MISSING_DESTRUCTOR public: - // BIC: Add virtual destructor. StringHandler(); + virtual ~StringHandler(); + + StringHandler(const StringHandler &) = delete; + StringHandler &operator=(const StringHandler &) = delete; + /*! * Decode a string from \a data. The default implementation assumes that * \a data is an ISO-8859-1 (Latin1) character array. @@ -80,6 +84,11 @@ namespace TagLib { * ISO-8859-1. */ virtual ByteVector render(const String &s) const; + + private: + class StringHandlerPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<StringHandlerPrivate> d; }; //! The main class in the ID3v1 implementation @@ -114,12 +123,15 @@ namespace TagLib { * Create an ID3v1 tag and parse the data in \a file starting at * \a tagOffset. */ - Tag(File *file, long tagOffset); + Tag(File *file, offset_t tagOffset); /*! * Destroys this Tag instance. */ - virtual ~Tag(); + ~Tag() override; + + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; /*! * Renders the in memory values to a ByteVector suitable for writing to @@ -135,40 +147,21 @@ namespace TagLib { // Reimplementations. - virtual String title() const; - virtual String albumartist() const; - virtual String artist() const; - virtual String composer() const; - virtual String album() const; - virtual String comment() const; - virtual String unsyncedlyrics() const; - virtual String genre() const; - virtual unsigned int year() const; - virtual unsigned int track() const; - virtual unsigned int disc() const; - virtual String cuesheet() const; - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; + String title() const override; + String artist() const override; + String album() const override; + String comment() const override; + String genre() const override; + unsigned int year() const override; + unsigned int track() const override; - virtual void setTitle(const String &s); - virtual void setAlbumArtist(const String &s); - virtual void setArtist(const String &s); - virtual void setComposer(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setUnsyncedlyrics(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(unsigned int i); - virtual void setTrack(unsigned int i); - virtual void setDisc(unsigned int i); - virtual void setCuesheet(const String &s); - virtual void setRGAlbumGain(float f); - virtual void setRGAlbumPeak(float f); - virtual void setRGTrackGain(float f); - virtual void setRGTrackPeak(float f); + void setTitle(const String &s) override; + void setArtist(const String &s) override; + void setAlbum(const String &s) override; + void setComment(const String &s) override; + void setGenre(const String &s) override; + void setYear(unsigned int i) override; + void setTrack(unsigned int i) override; /*! * Returns the genre in number. @@ -204,18 +197,16 @@ namespace TagLib { */ void read(); /*! - * Pareses the body of the tag in \a data. + * Parses the body of the tag in \a data. */ void parse(const ByteVector &data); private: - Tag(const Tag &); - Tag &operator=(const Tag &); - class TagPrivate; - TagPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; }; - } -} + } // namespace ID3v1 +} // namespace TagLib #endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2.h new file mode 100644 index 000000000..aa6b4bc4a --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2.h @@ -0,0 +1,34 @@ +#ifndef TAGLIB_ID3V2_H +#define TAGLIB_ID3V2_H + +namespace TagLib { + //! An ID3v2 implementation + + /*! + * This is a relatively complete and flexible framework for working with ID3v2 + * tags. + * + * More information about ID3v2 tags can be found at + * - <a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.2.0.txt"> + * id3v2.2.0.txt</a> + * - <a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.3.0.txt"> + * id3v2.3.0.txt</a> + * - <a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a> + * - <a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-frames.txt"> + * id3v2.4.0-frames.txt</a> + * + * \see ID3v2::Tag + */ + namespace ID3v2 { + /*! + * Used to specify which version of the ID3 standard to use when saving tags. + */ + enum Version { + v3 = 3, //!< ID3v2.3 + v4 = 4 //!< ID3v2.4 + }; + } // namespace ID3v2 +} // namespace TagLib + +#endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2extendedheader.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2extendedheader.h similarity index 86% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2extendedheader.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2extendedheader.h index 1c59573a7..93cc90b92 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2extendedheader.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2extendedheader.h @@ -26,9 +26,8 @@ #ifndef TAGLIB_ID3V2EXTENDEDHEADER_H #define TAGLIB_ID3V2EXTENDEDHEADER_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/taglib.h> +#include "tbytevector.h" +#include "taglib_export.h" namespace TagLib { @@ -42,7 +41,8 @@ namespace TagLib { * the ID3v2 standard. The API is based on the properties of ID3v2 extended * headers specified there. If any of the terms used in this documentation * are unclear please check the specification in the linked section. - * (Structure, <a href="id3v2-structure.html#3.2">3.2</a>) + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a>, 3.2) */ class TAGLIB_EXPORT ExtendedHeader @@ -56,7 +56,10 @@ namespace TagLib { /*! * Destroys the extended header. */ - virtual ~ExtendedHeader(); + ~ExtendedHeader(); + + ExtendedHeader(const ExtendedHeader &) = delete; + ExtendedHeader &operator=(const ExtendedHeader &) = delete; /*! * Returns the size of the extended header. This is variable for the @@ -81,13 +84,11 @@ namespace TagLib { void parse(const ByteVector &data); private: - ExtendedHeader(const ExtendedHeader &); - ExtendedHeader &operator=(const ExtendedHeader &); - class ExtendedHeaderPrivate; - ExtendedHeaderPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<ExtendedHeaderPrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2footer.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2footer.h similarity index 90% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2footer.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2footer.h index 50e271888..3902be67c 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2footer.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2footer.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_ID3V2FOOTER_H #define TAGLIB_ID3V2FOOTER_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tbytevector.h> +#include "tbytevector.h" +#include "taglib_export.h" namespace TagLib { @@ -57,7 +57,10 @@ namespace TagLib { /*! * Destroys the footer. */ - virtual ~Footer(); + ~Footer(); + + Footer(const Footer &) = delete; + Footer &operator=(const Footer &) = delete; /*! * Returns the size of the footer. Presently this is always 10 bytes. @@ -70,13 +73,11 @@ namespace TagLib { ByteVector render(const Header *header) const; private: - Footer(const Footer &); - Footer &operator=(const Footer &); - class FooterPrivate; - FooterPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FooterPrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2frame.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2frame.h similarity index 71% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2frame.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2frame.h index 01b29ed40..eb8ba5e29 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2frame.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2frame.h @@ -26,9 +26,9 @@ #ifndef TAGLIB_ID3V2FRAME_H #define TAGLIB_ID3V2FRAME_H -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> +#include "tstring.h" +#include "tbytevector.h" +#include "taglib_export.h" namespace TagLib { @@ -45,34 +45,35 @@ namespace TagLib { /*! * This class is the main ID3v2 frame implementation. In ID3v2, a tag is * split between a collection of frames (which are in turn split into fields - * (Structure, <a href="id3v2-structure.html#4">4</a>) - * (<a href="id3v2-frames.html">Frames</a>). This class provides an API for + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a>, 4) + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-frames.txt"> + * id3v2.4.0-frames.txt</a>). This class provides an API for * gathering information about and modifying ID3v2 frames. Functionality - * specific to a given frame type is handed in one of the many subclasses. + * specific to a given frame type is handled in one of the many subclasses. */ class TAGLIB_EXPORT Frame { friend class Tag; - friend class FrameFactory; public: - - /*! - * Creates a textual frame which corresponds to a single key in the PropertyMap - * interface. These are all (User)TextIdentificationFrames except TIPL and TMCL, - * all (User)URLLinkFrames, CommentsFrames, and UnsynchronizedLyricsFrame. - */ - static Frame *createTextualFrame(const String &key, const StringList &values); + class Header; /*! * Destroys this Frame instance. */ virtual ~Frame(); + Frame(const Frame &) = delete; + Frame &operator=(const Frame &) = delete; + /*! - * Returns the Frame ID (Structure, <a href="id3v2-structure.html#4">4</a>) - * (Frames, <a href="id3v2-frames.html#4">4</a>) + * Returns the Frame ID + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a>, 4) + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-frames.txt"> + * id3v2.4.0-frames.txt</a>, 4) */ ByteVector frameID() const; @@ -83,21 +84,8 @@ namespace TagLib { /*! * Returns the size of the frame header - * - * \deprecated This is only accurate for ID3v2.3 or ID3v2.4. Please use - * the call below which accepts an ID3v2 version number. In the next - * non-binary compatible release this will be made into a non-static - * member that checks the internal ID3v2 version. */ - static unsigned int headerSize(); // BIC: make non-static - - /*! - * Returns the size of the frame header for the given ID3v2 version. - * - * \deprecated Please see the explanation above. - */ - // BIC: remove - static unsigned int headerSize(unsigned int version); + unsigned int headerSize() const; /*! * Sets the data that will be used as the frame. Since the length is not @@ -125,17 +113,42 @@ namespace TagLib { */ virtual String toString() const = 0; + /*! + * This returns the textual representation of the data in the frame. + * Subclasses can reimplement this method to provide a string list + * representation of the frame's data. The default implementation + * returns the single string representation from toString(). + */ + virtual StringList toStringList() const; + /*! * Render the frame back to its binary format in a ByteVector. */ ByteVector render() const; + /*! + * Returns a pointer to the frame header. + */ + Header *header() const; + /*! * Returns the text delimiter that is used between fields for the string * type \a t. */ static ByteVector textDelimiter(String::Type t); + /*! + * Returns an appropriate ID3 frame ID for the given free-form tag key. This method + * will return an empty ByteVector if no specialized translation is found. + */ + static ByteVector keyToFrameID(const String &); + + /*! + * Returns a free-form tag name for the given ID3 frame ID. Note that this does not work + * for general frame IDs such as TXXX or WXXX; in such a case an empty string is returned. + */ + static String frameIDToKey(const ByteVector &); + /*! * The string with which an instrument name is prefixed to build a key in a PropertyMap; * used to translate PropertyMaps to TMCL frames. In the current implementation, this @@ -159,8 +172,6 @@ namespace TagLib { static const String urlPrefix; protected: - class Header; - /*! * Constructs an ID3v2 frame using \a data to read the header information. * All other processing of \a data should be handled in a subclass. @@ -171,7 +182,7 @@ namespace TagLib { explicit Frame(const ByteVector &data); /*! - * This creates an Frame using the header \a h. + * This creates a Frame using the header \a h. * * The ownership of this header will be assigned to the frame and the * header will be deleted when the frame is destroyed. @@ -179,12 +190,7 @@ namespace TagLib { Frame(Header *h); /*! - * Returns a pointer to the frame header. - */ - Header *header() const; - - /*! - * Sets the header to \a h. If \a deleteCurrent is true, this will free + * Sets the header to \a h. If \a deleteCurrent is \c true, this will free * the memory of the current header. * * The ownership of this header will be assigned to the frame and the @@ -225,28 +231,10 @@ namespace TagLib { * This is useful for reading strings sequentially. */ String readStringField(const ByteVector &data, String::Type encoding, - int *position = 0); + int *position = nullptr); /*! - * Checks a the list of string values to see if they can be used with the - * specified encoding and returns the recommended encoding. - */ - // BIC: remove and make non-static - static String::Type checkEncoding(const StringList &fields, - String::Type encoding); - - /*! - * Checks a the list of string values to see if they can be used with the - * specified encoding and returns the recommended encoding. This method - * also checks the ID3v2 version and makes sure the encoding can be used - * in the specified version. - */ - // BIC: remove and make non-static - static String::Type checkEncoding(const StringList &fields, - String::Type encoding, unsigned int version); - - /*! - * Checks a the list of string values to see if they can be used with the + * Checks the list of string values to see if they can be used with the * specified encoding and returns the recommended encoding. This method * also checks the ID3v2 version and makes sure the encoding can be used * in the version specified by the frame's header. @@ -259,31 +247,8 @@ namespace TagLib { * Parses the contents of this frame as PropertyMap. If that fails, the returned * PropertyMap will be empty, and its unsupportedData() will contain this frame's * ID. - * BIC: Will be a virtual function in future releases. */ - PropertyMap asProperties() const; - - /*! - * Returns an appropriate ID3 frame ID for the given free-form tag key. This method - * will return an empty ByteVector if no specialized translation is found. - */ - static ByteVector keyToFrameID(const String &); - - /*! - * Returns a free-form tag name for the given ID3 frame ID. Note that this does not work - * for general frame IDs such as TXXX or WXXX; in such a case an empty string is returned. - */ - static String frameIDToKey(const ByteVector &); - - /*! - * Returns an appropriate TXXX frame description for the given free-form tag key. - */ - static String keyToTXXX(const String &); - - /*! - * Returns a free-form tag name for the given ID3 frame description. - */ - static String txxxToKey(const String &); + virtual PropertyMap asProperties() const; /*! * This helper function splits the PropertyMap \a original into three ProperytMaps @@ -302,18 +267,18 @@ namespace TagLib { PropertyMap &tiplProperties, PropertyMap &tmclProperties); private: - Frame(const Frame &); - Frame &operator=(const Frame &); - class FramePrivate; friend class FramePrivate; - FramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FramePrivate> d; }; //! ID3v2 frame header implementation /*! - * The ID3v2 Frame Header (Structure, <a href="id3v2-structure.html#4">4</a>) + * The ID3v2 Frame Header + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a>, 4) * * Every ID3v2::Frame has an associated header that gives some general * properties of the frame and also makes it possible to identify the frame @@ -327,16 +292,6 @@ namespace TagLib { class TAGLIB_EXPORT Frame::Header { public: - /*! - * Construct a Frame Header based on \a data. \a data must at least - * contain a 4 byte frame ID, and optionally can contain flag data and the - * frame size. i.e. Just the frame id -- "TALB" -- is a valid value. - * - * \deprecated Please use the constructor below that accepts a version - * number. - */ - TAGLIB_DEPRECATED Header(const ByteVector &data, bool synchSafeInts); - /*! * Construct a Frame Header based on \a data. \a data must at least * contain a 4 byte frame ID, and optionally can contain flag data and the @@ -351,13 +306,8 @@ namespace TagLib { */ virtual ~Header(); - /*! - * Sets the data for the Header. - * - * \deprecated Please use the version below that accepts an ID3v2 version - * number. - */ - TAGLIB_DEPRECATED void setData(const ByteVector &data, bool synchSafeInts); + Header(const Header &) = delete; + Header &operator=(const Header &) = delete; /*! * Sets the data for the Header. \a version should indicate the ID3v2 @@ -366,8 +316,11 @@ namespace TagLib { void setData(const ByteVector &data, unsigned int version = 4); /*! - * Returns the Frame ID (Structure, <a href="id3v2-structure.html#4">4</a>) - * (Frames, <a href="id3v2-frames.html#4">4</a>) + * Returns the Frame ID + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a>, 4) + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-frames.txt"> + * id3v2.4.0-frames.txt</a>, 4) */ ByteVector frameID() const; @@ -406,26 +359,11 @@ namespace TagLib { /*! * Returns the size of the frame header in bytes. - * - * \deprecated Please use the version of this method that accepts a - * version. This is only accurate for ID3v2.3 and ID3v2.4. This will be - * removed in the next binary incompatible release (2.0) and will be - * replaced with a non-static method that checks the frame version. */ - // BIC: make non-static - static unsigned int size(); + unsigned int size() const; /*! - * Returns the size of the frame header in bytes for the ID3v2 version - * that's given. - * - * \deprecated Please see the explanation in the version above. - */ - // BIC: remove - static unsigned int size(unsigned int version); - - /*! - * Returns true if the flag for tag alter preservation is set. + * Returns \c true if the flag for tag alter preservation is set. * * The semantics are a little backwards from what would seem natural * (setting the preservation flag to throw away the frame), but this @@ -437,7 +375,7 @@ namespace TagLib { /*! * Sets the flag for preservation of this frame if the tag is set. If - * this is set to true the frame will not be written when the tag is + * this is set to \c true the frame will not be written when the tag is * saved. * * The semantics are a little backwards from what would seem natural @@ -446,54 +384,50 @@ namespace TagLib { * * \see tagAlterPreservation() */ - void setTagAlterPreservation(bool discard); + void setTagAlterPreservation(bool preserve); /*! - * Returns true if the flag for file alter preservation is set. + * Returns \c true if the flag for file alter preservation is set. * * \note This flag is currently ignored internally in TagLib. */ bool fileAlterPreservation() const; /*! - * Returns true if the frame is meant to be read only. + * Returns \c true if the frame is meant to be read only. * * \note This flag is currently ignored internally in TagLib. */ bool readOnly() const; /*! - * Returns true if the flag for the grouping identity is set. + * Returns \c true if the flag for the grouping identity is set. * * \note This flag is currently ignored internally in TagLib. */ bool groupingIdentity() const; /*! - * Returns true if compression is enabled for this frame. + * Returns \c true if compression is enabled for this frame. * * \note This flag is currently ignored internally in TagLib. */ bool compression() const; /*! - * Returns true if encryption is enabled for this frame. + * Returns \c true if encryption is enabled for this frame. * * \note This flag is currently ignored internally in TagLib. */ bool encryption() const; -#ifndef DO_NOT_DOCUMENT - bool unsycronisation() const; -#endif - /*! - * Returns true if unsynchronisation is enabled for this frame. + * Returns \c true if unsynchronisation is enabled for this frame. */ bool unsynchronisation() const; /*! - * Returns true if the flag for a data length indicator is set. + * Returns \c true if the flag for a data length indicator is set. */ bool dataLengthIndicator() const; @@ -502,20 +436,13 @@ namespace TagLib { */ ByteVector render() const; - /*! - * \deprecated - */ - TAGLIB_DEPRECATED bool frameAlterPreservation() const; - private: - Header(const Header &); - Header &operator=(const Header &); - class HeaderPrivate; - HeaderPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<HeaderPrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2framefactory.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2framefactory.h similarity index 64% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2framefactory.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2framefactory.h index ddd2ef5f6..4f3919c8f 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2framefactory.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2framefactory.h @@ -26,10 +26,10 @@ #ifndef TAGLIB_ID3V2FRAMEFACTORY_H #define TAGLIB_ID3V2FRAMEFACTORY_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/mpeg/id3v2/id3v2header.h> +#include "tbytevector.h" +#include "taglib_export.h" +#include "id3v2frame.h" +#include "id3v2header.h" namespace TagLib { @@ -50,13 +50,15 @@ namespace TagLib { * factory to be the default factory in ID3v2::Tag constructor you can * implement behavior that will allow for new ID3v2::Frame subclasses (also * provided by you) to be used. + * See <a href="https://github.com/taglib/taglib/blob/master/tests/test_id3v2framefactory.cpp"> + * tests/test_id3v2framefactory.cpp</a> for an example. * * This implements both <i>abstract factory</i> and <i>singleton</i> patterns * of which more information is available on the web and in software design - * textbooks (Notably <i>Design Patters</i>). + * textbooks (notably <i>Design Patterns</i>). * * \note You do not need to use this factory to create new frames to add to - * an ID3v2::Tag. You can instantiate frame subclasses directly (with new) + * an ID3v2::Tag. You can instantiate frame subclasses directly (with \c new) * and add them to a tag using ID3v2::Tag::addFrame() * * \see ID3v2::Tag::addFrame() @@ -65,46 +67,31 @@ namespace TagLib { class TAGLIB_EXPORT FrameFactory { public: + FrameFactory(const FrameFactory &) = delete; + FrameFactory &operator=(const FrameFactory &) = delete; + static FrameFactory *instance(); - /*! - * Create a frame based on \a data. \a synchSafeInts should only be set - * false if we are parsing an old tag (v2.3 or older) that does not support - * synchsafe ints. - * - * \deprecated Please use the method below that accepts a ID3v2::Header - * instance in new code. - */ - TAGLIB_DEPRECATED Frame *createFrame(const ByteVector &data, bool synchSafeInts) const; /*! - * Create a frame based on \a data. \a version should indicate the ID3v2 - * version of the tag. As ID3v2.4 is the most current version of the - * standard 4 is the default. - * - * \deprecated Please use the method below that accepts a ID3v2::Header - * instance in new code. - */ - TAGLIB_DEPRECATED Frame *createFrame(const ByteVector &data, unsigned int version = 4) const; - - /*! - * \deprecated - */ - // BIC: remove - Frame *createFrame(const ByteVector &data, Header *tagHeader) const; - /*! - * Create a frame based on \a data. \a tagHeader should be a valid + * Create a frame based on \a origData. \a tagHeader should be a valid * ID3v2::Header instance. */ - // BIC: make virtual - Frame *createFrame(const ByteVector &data, const Header *tagHeader) const; + virtual Frame *createFrame(const ByteVector &origData, const Header *tagHeader) const; + + /*! + * Creates a textual frame which corresponds to a single key in the + * PropertyMap interface. TIPL and TMCL do not belong to this category + * and are thus handled explicitly in the Frame class. + */ + virtual Frame *createFrameForProperty( + const String &key, const StringList &values) const; /*! * After a tag has been read, this tries to rebuild some of them * information, most notably the recording date, from frames that * have been deprecated and can't be upgraded directly. */ - // BIC: Make virtual - void rebuildAggregateFrames(ID3v2::Tag *tag) const; + virtual void rebuildAggregateFrames(ID3v2::Tag *tag) const; /*! * Returns the default text encoding for text frames. If setTextEncoding() @@ -128,6 +115,18 @@ namespace TagLib { */ void setDefaultTextEncoding(String::Type encoding); + /*! + * Returns \c true if defaultTextEncoding() is used. + * The default text encoding is used when setDefaultTextEncoding() has + * been called. In this case, reimplementations of FrameFactory should + * use defaultTextEncoding() on the frames (having a text encoding field) + * they create. + * + * \see defaultTextEncoding() + * \see setDefaultTextEncoding() + */ + bool isUsingDefaultTextEncoding() const; + protected: /*! * Constructs a frame factory. Because this is a singleton this method is @@ -138,7 +137,7 @@ namespace TagLib { /*! * Destroys the frame factory. */ - virtual ~FrameFactory(); + ~FrameFactory(); /*! * This method checks for compliance to the current ID3v2 standard (2.4) @@ -146,24 +145,45 @@ namespace TagLib { * is not compatible with the current standard, this method either updates * the frame or indicates that it should be discarded. * - * This method with return true (with or without changes to the frame) if - * this frame should be kept or false if it should be discarded. + * This method with return \c true (with or without changes to the frame) if + * this frame should be kept or \c false if it should be discarded. * * See the id3v2.4.0-changes.txt document for further information. */ virtual bool updateFrame(Frame::Header *header) const; - private: - FrameFactory(const FrameFactory &); - FrameFactory &operator=(const FrameFactory &); + /*! + * Creates and prepares the frame header for createFrame(). + * + * \param data data of the frame (might be modified) + * \param tagHeader the tag header + * \return {header, ok}: header is a created frame header or nullptr + * if the frame is invalid; ok is \c true if the frame is supported. + */ + std::pair<Frame::Header *, bool> prepareFrameHeader( + ByteVector &data, const Header *tagHeader) const; + /*! + * Create a frame based on \a data. \a header should be a valid frame + * header and \a tagHeader a valid ID3v2::Header instance. + * + * This method is called by the public overloaded method + * createFrame(const ByteVector &, const Header *) after creating + * \a header from verified \a data using prepareFrameHeader(), so + * this method is provided to be reimplemented in derived classes. + */ + virtual Frame *createFrame(const ByteVector &data, Frame::Header *header, + const Header *tagHeader) const; + + private: static FrameFactory factory; class FrameFactoryPrivate; - FrameFactoryPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FrameFactoryPrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2header.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2header.h similarity index 85% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2header.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2header.h index 9e04153d2..cdfa949d9 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2header.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2header.h @@ -26,9 +26,8 @@ #ifndef TAGLIB_ID3V2HEADER_H #define TAGLIB_ID3V2HEADER_H -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> -#include <taglib/mpeg/id3v2/id3v2.h> +#include "tbytevector.h" +#include "taglib_export.h" namespace TagLib { @@ -42,7 +41,8 @@ namespace TagLib { * the ID3v2 standard. The API is based on the properties of ID3v2 headers * specified there. If any of the terms used in this documentation are * unclear please check the specification in the linked section. - * (Structure, <a href="id3v2-structure.html#3.1">3.1</a>) + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a>, 3.1) */ class TAGLIB_EXPORT Header @@ -62,7 +62,10 @@ namespace TagLib { /*! * Destroys the header. */ - virtual ~Header(); + ~Header(); + + Header(const Header &) = delete; + Header &operator=(const Header &) = delete; /*! * Returns the major version number. (Note: This is the 4, not the 2 in @@ -71,7 +74,7 @@ namespace TagLib { unsigned int majorVersion() const; /*! - * Set the the major version number to \a version. (Note: This is + * Set the major version number to \a version. (Note: This is * the 4, not the 2 in ID3v2.4.0. The 2 is implied.) * \see majorVersion() * @@ -88,22 +91,22 @@ namespace TagLib { unsigned int revisionNumber() const; /*! - * Returns true if unsynchronisation has been applied to all frames. + * Returns \c true if unsynchronisation has been applied to all frames. */ bool unsynchronisation() const; /*! - * Returns true if an extended header is present in the tag. + * Returns \c true if an extended header is present in the tag. */ bool extendedHeader() const; /*! - * Returns true if the experimental indicator flag is set. + * Returns \c true if the experimental indicator flag is set. */ bool experimentalIndicator() const; /*! - * Returns true if a footer is present in the tag. + * Returns \c true if a footer is present in the tag. */ bool footerPresent() const; /*! @@ -139,7 +142,7 @@ namespace TagLib { static unsigned int size(); /*! - * Returns the string used to identify and ID3v2 tag inside of a file. + * Returns the string used to identify an ID3v2 tag inside of a file. * Presently this is always "ID3". */ static ByteVector fileIdentifier(); @@ -163,14 +166,12 @@ namespace TagLib { void parse(const ByteVector &data); private: - Header(const Header &); - Header &operator=(const Header &); - class HeaderPrivate; - HeaderPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<HeaderPrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2synchdata.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2synchdata.h similarity index 87% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2synchdata.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2synchdata.h index bf0765047..07ee84417 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2synchdata.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2synchdata.h @@ -26,8 +26,7 @@ #ifndef TAGLIB_ID3V2SYNCHDATA_H #define TAGLIB_ID3V2SYNCHDATA_H -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/taglib.h> +#include "tbytevector.h" namespace TagLib { @@ -47,8 +46,9 @@ namespace TagLib { { /*! * This returns the unsigned integer value of \a data where \a data is a - * ByteVector that contains a \e synchsafe integer (Structure, - * <a href="id3v2-structure.html#6.2">6.2</a>). The default \a length of + * ByteVector that contains a \e synchsafe integer + * (<a href="https://github.com/taglib/taglib/blob/master/taglib/mpeg/id3v2/id3v2.4.0-structure.txt"> + * id3v2.4.0-structure.txt</a>, 6.2). The default \a length of * 4 is used if another value is not specified. */ TAGLIB_EXPORT unsigned int toUInt(const ByteVector &data); @@ -61,10 +61,10 @@ namespace TagLib { /*! * Convert the data from unsynchronized data to its original format. */ - TAGLIB_EXPORT ByteVector decode(const ByteVector &input); - } + TAGLIB_EXPORT ByteVector decode(const ByteVector &data); + } // namespace SynchData - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2tag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2tag.h similarity index 79% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2tag.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2tag.h index 5933d7564..20fa0b7a1 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/id3v2tag.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/id3v2tag.h @@ -26,15 +26,15 @@ #ifndef TAGLIB_ID3V2TAG_H #define TAGLIB_ID3V2TAG_H -#include <taglib/tag.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/taglib_export.h> - -#include <taglib/mpeg/id3v2/id3v2.h> -#include <taglib/mpeg/id3v2/id3v2framefactory.h> +#include "tbytevector.h" +#include "tstring.h" +#include "tlist.h" +#include "tmap.h" +#include "taglib.h" +#include "taglib_export.h" +#include "tag.h" +#include "id3v2.h" +#include "id3v2framefactory.h" namespace TagLib { @@ -44,10 +44,9 @@ namespace TagLib { class Header; class ExtendedHeader; - class Footer; - typedef List<Frame *> FrameList; - typedef Map<ByteVector, FrameList> FrameListMap; + using FrameList = List<Frame *>; + using FrameListMap = Map<ByteVector, FrameList>; //! An abstraction for the ISO-8859-1 string to data encoding in ID3v2 tags. @@ -71,30 +70,37 @@ namespace TagLib { public: Latin1StringHandler(); virtual ~Latin1StringHandler(); + Latin1StringHandler(const Latin1StringHandler &) = delete; + Latin1StringHandler &operator=(const Latin1StringHandler &) = delete; /*! * Decode a string from \a data. The default implementation assumes that * \a data is an ISO-8859-1 (Latin1) character array. */ virtual String parse(const ByteVector &data) const; + + private: + class Latin1StringHandlerPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<Latin1StringHandlerPrivate> d; }; //! The main class in the ID3v2 implementation /*! * This is the main class in the ID3v2 implementation. It serves two - * functions. This first, as is obvious from the public API, is to provide a + * functions. The first, as is obvious from the public API, is to provide a * container for the other ID3v2 related classes. In addition, through the * read() and parse() protected methods, it provides the most basic level of * parsing. In these methods the ID3v2 tag is extracted from the file and * split into data components. * * ID3v2 tags have several parts, TagLib attempts to provide an interface - * for them all. header(), footer() and extendedHeader() correspond to those + * for them all. header() and extendedHeader() correspond to those * data structures in the ID3v2 standard and the APIs for the classes that * they return attempt to reflect this. * - * Also ID3v2 tags are built up from a list of frames, which are in turn + * Also ID3v2 tags are built up from a list of frames, which * have a header and a list of fields. TagLib provides two ways of accessing * the list of frames that are in a given ID3v2 tag. The first is simply * via the frameList() method. This is just a list of pointers to the frames. @@ -121,7 +127,7 @@ namespace TagLib { * with said spec (which is distributed with the TagLib sources). TagLib * tries to do most of the work, but with a little luck, you can still * convince it to generate invalid ID3v2 tags. The APIs for ID3v2 assume a - * working knowledge of ID3v2 structure. You're been warned. + * working knowledge of ID3v2 structure. You've been warned. */ class TAGLIB_EXPORT Tag : public TagLib::Tag @@ -146,58 +152,36 @@ namespace TagLib { * * \see FrameFactory */ - Tag(File *file, long tagOffset, + Tag(File *file, offset_t tagOffset, const FrameFactory *factory = FrameFactory::instance()); /*! * Destroys this Tag instance. */ - virtual ~Tag(); + ~Tag() override; + + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; // Reimplementations. - virtual String title() const; - virtual String albumartist() const; - virtual String artist() const; - virtual String composer() const; - virtual String album() const; - virtual String comment() const; - virtual String unsyncedlyrics() const; - virtual String genre() const; - virtual unsigned int year() const; - virtual unsigned int track() const; - virtual unsigned int disc() const; - - virtual String cuesheet() const; + String title() const override; + String artist() const override; + String album() const override; + String comment() const override; + String genre() const override; + unsigned int year() const override; + unsigned int track() const override; - float rg(const String &type) const; - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; + void setTitle(const String &s) override; + void setArtist(const String &s) override; + void setAlbum(const String &s) override; + void setComment(const String &s) override; + void setGenre(const String &s) override; + void setYear(unsigned int i) override; + void setTrack(unsigned int i) override; - virtual void setTitle(const String &s); - virtual void setAlbumArtist(const String &s); - virtual void setArtist(const String &s); - virtual void setComposer(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setUnsyncedlyrics(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(unsigned int i); - virtual void setTrack(unsigned int i); - virtual void setDisc(unsigned int i); - - virtual void setCuesheet(const String &s); - - void setRG(const String &type, float f, bool peak); - virtual void setRGAlbumGain(float f); - virtual void setRGAlbumPeak(float f); - virtual void setRGTrackGain(float f); - virtual void setRGTrackPeak(float f); - - virtual bool isEmpty() const; + bool isEmpty() const override; /*! * Returns a pointer to the tag's header. @@ -211,17 +195,7 @@ namespace TagLib { ExtendedHeader *extendedHeader() const; /*! - * Returns a pointer to the tag's footer or null if there is no footer. - * - * \deprecated I don't see any reason to keep this around since there's - * nothing useful to be retrieved from the footer, but well, again, I'm - * prone to change my mind, so this gets to stay around until near a - * release. - */ - TAGLIB_DEPRECATED Footer *footer() const; - - /*! - * Returns a reference to the frame list map. This is an FrameListMap of + * Returns a reference to the frame list map. This is a FrameListMap of * all of the frames in the tag. * * This is the most convenient structure for accessing the tag's frames. @@ -257,10 +231,10 @@ namespace TagLib { const FrameListMap &frameListMap() const; /*! - * Returns a reference to the frame list. This is an FrameList of all of + * Returns a reference to the frame list. This is a FrameList of all of * the frames in the tag in the order that they were parsed. * - * This can be useful if for example you want iterate over the tag's frames + * This can be useful if for example you want to iterate over the tag's frames * in the order that they occur in the tag. * * \warning You should not modify this data structure directly, instead @@ -291,8 +265,8 @@ namespace TagLib { void addFrame(Frame *frame); /*! - * Remove a frame from the tag. If \a del is true the frame's memory - * will be freed; if it is false, it must be deleted by the user. + * Remove a frame from the tag. If \a del is \c true the frame's memory + * will be freed; if it is \c false, it must be deleted by the user. * * \note Using this method will invalidate any pointers on the list * returned by frameList() @@ -336,7 +310,7 @@ namespace TagLib { * once, the description, separated by a "/". * */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Removes unsupported frames given by \a properties. The elements of @@ -349,24 +323,23 @@ namespace TagLib { * - "UNKNOWN/" + frameID, for frames that could not be parsed by TagLib. * In that case, *all* unknown frames with the given ID will be removed. */ - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &properties) override; /*! * Implements the unified property interface -- import function. * See the comments in properties(). */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; + + StringList complexPropertyKeys() const override; + List<VariantMap> complexProperties(const String &key) const override; + bool setComplexProperties(const String &key, const List<VariantMap> &value) override; /*! * Render the tag back to binary data, suitable to be written to disk. */ ByteVector render() const; - /*! - * \deprecated - */ - TAGLIB_DEPRECATED ByteVector render(int version) const; - /*! * Render the tag back to binary data, suitable to be written to disk. * @@ -409,7 +382,7 @@ namespace TagLib { * This is called by read to parse the body of the tag. It determines if an * extended header exists and adds frames to the FrameListMap. */ - void parse(const ByteVector &data); + void parse(const ByteVector &origData); /*! * Sets the value of the text frame with the Frame ID \a id to \a value. @@ -420,17 +393,15 @@ namespace TagLib { /*! * Downgrade frames from ID3v2.4 (used internally and by default) to ID3v2.3. */ - void downgradeFrames(FrameList *existingFrames, FrameList *newFrames) const; + void downgradeFrames(FrameList *frames, FrameList *newFrames) const; private: - Tag(const Tag &); - Tag &operator=(const Tag &); - class TagPrivate; - TagPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/riff/wav/infotag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/infotag.h similarity index 66% rename from Frameworks/TagLib/taglib/taglib/riff/wav/infotag.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/infotag.h index 637947e56..b9ab43528 100644 --- a/Frameworks/TagLib/taglib/taglib/riff/wav/infotag.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/infotag.h @@ -26,24 +26,23 @@ #ifndef TAGLIB_INFOTAG_H #define TAGLIB_INFOTAG_H -#include <taglib/tag.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> +#include "tmap.h" +#include "tstring.h" +#include "tbytevector.h" +#include "taglib_export.h" +#include "tag.h" namespace TagLib { class File; - //! A RIFF INFO tag implementation. namespace RIFF { + //! A RIFF INFO tag implementation. namespace Info { - typedef Map<ByteVector, String> FieldListMap; + using FieldListMap = Map<ByteVector, String>; - //! A abstraction for the string to data encoding in Info tags. + //! An abstraction for the string to data encoding in Info tags. /*! * RIFF INFO tag has no clear definitions about character encodings. @@ -61,7 +60,10 @@ namespace TagLib { { public: StringHandler(); - ~StringHandler(); + virtual ~StringHandler(); + + StringHandler(const StringHandler &) = delete; + StringHandler &operator=(const StringHandler &) = delete; /*! * Decode a string from \a data. The default implementation assumes that @@ -74,9 +76,14 @@ namespace TagLib { * assumes that \a s is an UTF-8 string. */ virtual ByteVector render(const String &s) const; + + private: + class StringHandlerPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<StringHandlerPrivate> d; }; - //! The main class in the ID3v2 implementation + //! The main class in the INFO tag implementation /*! * This is the main class in the INFO tag implementation. RIFF INFO tag is a @@ -94,50 +101,38 @@ namespace TagLib { Tag(); /*! - * Constructs an INFO tag read from \a data which is contents of "LIST" chunk. + * Constructs an INFO tag read from \a data which is the contents of the "LIST" chunk. */ Tag(const ByteVector &data); - virtual ~Tag(); + ~Tag() override; + + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; // Reimplementations - virtual String title() const; - virtual String albumartist() const; - virtual String artist() const; - virtual String composer() const; - virtual String album() const; - virtual String unsyncedlyrics() const; - virtual String comment() const; - virtual String genre() const; - virtual unsigned int year() const; - virtual unsigned int track() const; - virtual unsigned int disc() const; - virtual String cuesheet() const; - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; + String title() const override; + String artist() const override; + String album() const override; + String comment() const override; + String genre() const override; + unsigned int year() const override; + unsigned int track() const override; - virtual void setTitle(const String &s); - virtual void setAlbumArtist(const String &s); - virtual void setArtist(const String &s); - virtual void setComposer(const String &s); - virtual void setAlbum(const String &s); - virtual void setUnsyncedlyrics(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(unsigned int i); - virtual void setTrack(unsigned int i); - virtual void setDisc(unsigned int); - virtual void setCuesheet(const String &s); - virtual void setRGAlbumGain(float f); - virtual void setRGAlbumPeak(float f); - virtual void setRGTrackGain(float f); - virtual void setRGTrackPeak(float f); + void setTitle(const String &s) override; + void setArtist(const String &s) override; + void setAlbum(const String &s) override; + void setComment(const String &s) override; + void setGenre(const String &s) override; + void setYear(unsigned int i) override; + void setTrack(unsigned int i) override; - virtual bool isEmpty() const; + bool isEmpty() const override; + + PropertyMap properties() const override; + void removeUnsupportedProperties(const StringList &props) override; + PropertyMap setProperties(const PropertyMap &props) override; /*! * Returns a copy of the internal fields of the tag. The returned map directly @@ -151,22 +146,22 @@ namespace TagLib { */ FieldListMap fieldListMap() const; - /* + /*! * Gets the value of the field with the ID \a id. */ String fieldText(const ByteVector &id) const; - /* - * Sets the value of the field with the ID \a id to \a s. - * If the field does not exist, it is created. - * If \s is empty, the field is removed. - * - * \note fieldId must be four-byte long pure ASCII string. This function - * performs nothing if fieldId is invalid. - */ + /*! + * Sets the value of the field with the ID \a id to \a s. + * If the field does not exist, it is created. + * If \a s is empty, the field is removed. + * + * \note fieldId must be a four-byte long pure ASCII string. This function + * performs nothing if fieldId is invalid. + */ void setFieldText(const ByteVector &id, const String &s); - /* + /*! * Removes the field with the ID \a id. */ void removeField(const ByteVector &id); @@ -174,7 +169,7 @@ namespace TagLib { /*! * Render the tag back to binary data, suitable to be written to disk. * - * \note Returns empty ByteVector is the tag contains no fields. + * \note Returns an empty ByteVector if the tag contains no fields. */ ByteVector render() const; @@ -193,19 +188,17 @@ namespace TagLib { protected: /*! - * Pareses the body of the tag in \a data. + * Parses the body of the tag in \a data. */ void parse(const ByteVector &data); - private: - Tag(const Tag &); - Tag &operator=(const Tag &); - class TagPrivate; - TagPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; }; - }} -} + } // namespace Info +} // namespace RIFF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/it/itfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/itfile.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/it/itfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/itfile.h index 19327dc65..8bc7c7cf9 100644 --- a/Frameworks/TagLib/taglib/taglib/it/itfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/itfile.h @@ -23,20 +23,35 @@ #define TAGLIB_ITFILE_H #include "tfile.h" -#include "audioproperties.h" #include "taglib_export.h" +#include "audioproperties.h" #include "modfilebase.h" #include "modtag.h" #include "itproperties.h" namespace TagLib { + //! An implementation of Impulse Tracker metadata + + /*! + * This is an implementation of Impulse Tracker metadata. + */ + namespace IT { + //! An implementation of TagLib::File with IT specific methods + + /*! + * This implements and provides an interface for IT files to the + * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing + * the abstract TagLib::File API as well as providing some additional + * information specific to IT files. + */ + class TAGLIB_EXPORT File : public Mod::FileBase { public: /*! - * Constructs a Impulse Tracker file from \a file. + * Constructs an Impulse Tracker file from \a file. * * \note In the current implementation, both \a readProperties and * \a propertiesStyle are ignored. The audio properties are always @@ -47,7 +62,7 @@ namespace TagLib { AudioProperties::Average); /*! - * Constructs a Impulse Tracker file from \a stream. + * Constructs an Impulse Tracker file from \a stream. * * \note In the current implementation, both \a readProperties and * \a propertiesStyle are ignored. The audio properties are always @@ -63,27 +78,18 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; - Mod::Tag *tag() const; + File(const File &) = delete; + File &operator=(const File &) = delete; - /*! - * Forwards to Mod::Tag::properties(). - * BIC: will be removed once File::toDict() is made virtual - */ - PropertyMap properties() const; - - /*! - * Forwards to Mod::Tag::setProperties(). - * BIC: will be removed once File::setProperties() is made virtual - */ - PropertyMap setProperties(const PropertyMap &); + Mod::Tag *tag() const override; /*! * Returns the IT::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - IT::Properties *audioProperties() const; + IT::Properties *audioProperties() const override; /*! * Save the file. @@ -91,19 +97,16 @@ namespace TagLib { * * \note Saving Impulse Tracker tags is not supported. */ - bool save(); - + bool save() override; private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace IT +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/it/itproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/itproperties.h similarity index 66% rename from Frameworks/TagLib/taglib/taglib/it/itproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/itproperties.h index be1c9d264..ec14333e2 100644 --- a/Frameworks/TagLib/taglib/taglib/it/itproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/itproperties.h @@ -26,13 +26,12 @@ #ifndef TAGLIB_ITPROPERTIES_H #define TAGLIB_ITPROPERTIES_H -#include "taglib.h" #include "audioproperties.h" namespace TagLib { namespace IT { + //! An implementation of audio property reading for IT class TAGLIB_EXPORT Properties : public AudioProperties { - friend class File; public: /*! Flag bits. */ enum { @@ -53,55 +52,51 @@ namespace TagLib { }; Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); + ~Properties() override; - int length() const; - int lengthInSeconds() const; - int lengthInMilliseconds() const; - int bitrate() const; - int sampleRate() const; - int channels() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; - unsigned short lengthInPatterns() const; - bool stereo() const; - unsigned short instrumentCount() const; - unsigned short sampleCount() const; - unsigned short patternCount() const; - unsigned short version() const; + int channels() const override; + + unsigned short lengthInPatterns() const; + bool stereo() const; + unsigned short instrumentCount() const; + unsigned short sampleCount() const; + unsigned short patternCount() const; + unsigned short version() const; unsigned short compatibleVersion() const; - unsigned short flags() const; - unsigned short special() const; - unsigned char globalVolume() const; - unsigned char mixVolume() const; - unsigned char tempo() const; - unsigned char bpmSpeed() const; - unsigned char panningSeparation() const; - unsigned char pitchWheelDepth() const; + unsigned short flags() const; + unsigned short special() const; + unsigned char globalVolume() const; + unsigned char mixVolume() const; + unsigned char tempo() const; + unsigned char bpmSpeed() const; + unsigned char panningSeparation() const; + unsigned char pitchWheelDepth() const; void setChannels(int channels); void setLengthInPatterns(unsigned short lengthInPatterns); void setInstrumentCount(unsigned short instrumentCount); - void setSampleCount (unsigned short sampleCount); + void setSampleCount(unsigned short sampleCount); void setPatternCount(unsigned short patternCount); - void setVersion (unsigned short version); + void setVersion(unsigned short version); void setCompatibleVersion(unsigned short compatibleVersion); - void setFlags (unsigned short flags); - void setSpecial (unsigned short special); + void setFlags(unsigned short flags); + void setSpecial(unsigned short special); void setGlobalVolume(unsigned char globalVolume); - void setMixVolume (unsigned char mixVolume); - void setTempo (unsigned char tempo); - void setBpmSpeed (unsigned char bpmSpeed); + void setMixVolume(unsigned char mixVolume); + void setTempo(unsigned char tempo); + void setBpmSpeed(unsigned char bpmSpeed); void setPanningSeparation(unsigned char panningSeparation); - void setPitchWheelDepth (unsigned char pitchWheelDepth); + void setPitchWheelDepth(unsigned char pitchWheelDepth); private: - Properties(const Properties&); - Properties &operator=(const Properties&); - class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace IT +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mod/modfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modfile.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/mod/modfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modfile.h index 1608d343a..73c285271 100644 --- a/Frameworks/TagLib/taglib/taglib/mod/modfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modfile.h @@ -26,17 +26,32 @@ #ifndef TAGLIB_MODFILE_H #define TAGLIB_MODFILE_H -#include <taglib/toolkit/tfile.h> -#include <taglib/audioproperties.h> -#include <taglib/taglib_export.h> -#include <taglib/mod/modfilebase.h> -#include <taglib/mod/modtag.h> -#include <taglib/mod/modproperties.h> +#include "tfile.h" +#include "taglib_export.h" +#include "audioproperties.h" +#include "modfilebase.h" +#include "modtag.h" +#include "modproperties.h" namespace TagLib { + //! An implementation of Protracker metadata + + /*! + * This is an implementation of Protracker metadata. + */ + namespace Mod { + //! An implementation of TagLib::File with Mod specific methods + + /*! + * This implements and provides an interface for Mod files to the + * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing + * the abstract TagLib::File API as well as providing some additional + * information specific to Mod files. + */ + class TAGLIB_EXPORT File : public TagLib::Mod::FileBase { public: @@ -68,26 +83,29 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; - Mod::Tag *tag() const; + File(const File &) = delete; + File &operator=(const File &) = delete; + + Mod::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * Forwards to Mod::Tag::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified property interface -- import function. * Forwards to Mod::Tag::setProperties(). */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the Mod::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - Mod::Properties *audioProperties() const; + Mod::Properties *audioProperties() const override; /*! * Save the file. @@ -95,20 +113,15 @@ namespace TagLib { * * \note Saving Protracker tags is not supported. */ - bool save(); + bool save() override; private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - - } - -} - + } // namespace Mod +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mod/modfilebase.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modfilebase.h similarity index 85% rename from Frameworks/TagLib/taglib/taglib/mod/modfilebase.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modfilebase.h index 2bb516a45..63e4c1873 100644 --- a/Frameworks/TagLib/taglib/taglib/mod/modfilebase.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modfilebase.h @@ -26,20 +26,22 @@ #ifndef TAGLIB_MODFILEBASE_H #define TAGLIB_MODFILEBASE_H -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tlist.h> -#include <taglib/taglib_export.h> - -#include <algorithm> +#include "taglib.h" +#include "tfile.h" +#include "tlist.h" +#include "taglib_export.h" namespace TagLib { - namespace Mod { - + //! Base class for module files class TAGLIB_EXPORT FileBase : public TagLib::File { + public: + ~FileBase() override; + + FileBase(const FileBase &) = delete; + FileBase& operator=(const FileBase &) = delete; + protected: FileBase(FileName file); FileBase(IOStream *stream); @@ -57,10 +59,11 @@ namespace TagLib { bool readU32L(unsigned long &number); bool readU16B(unsigned short &number); bool readU32B(unsigned long &number); + private: + class FileBasePrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FileBasePrivate> d; }; - - } - -} - + } // namespace Mod +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mod/modproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modproperties.h similarity index 78% rename from Frameworks/TagLib/taglib/taglib/mod/modproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modproperties.h index 591796848..6bdf44b05 100644 --- a/Frameworks/TagLib/taglib/taglib/mod/modproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modproperties.h @@ -26,46 +26,37 @@ #ifndef TAGLIB_MODPROPERTIES_H #define TAGLIB_MODPROPERTIES_H -#include <taglib/toolkit/taglib.h> -#include <taglib/audioproperties.h> +#include "audioproperties.h" namespace TagLib { - namespace Mod { - + //! An implementation of audio property reading for Mod class TAGLIB_EXPORT Properties : public AudioProperties { public: Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); + ~Properties() override; - int length() const; - int lengthInSeconds() const; - int lengthInMilliseconds() const; - int bitrate() const; - int sampleRate() const; - int channels() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; - unsigned int instrumentCount() const; + int bitrate() const override; + int sampleRate() const override; + int channels() const override; + + unsigned int instrumentCount() const; unsigned char lengthInPatterns() const; void setChannels(int channels); - void setInstrumentCount(unsigned int sampleCount); + void setInstrumentCount(unsigned int instrumentCount); void setLengthInPatterns(unsigned char lengthInPatterns); private: - friend class File; - - Properties(const Properties&); - Properties &operator=(const Properties&); - class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - - } - -} - + } // namespace Mod +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mod/modtag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modtag.h similarity index 59% rename from Frameworks/TagLib/taglib/taglib/mod/modtag.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modtag.h index 7b8c9e326..336d75ee1 100644 --- a/Frameworks/TagLib/taglib/taglib/mod/modtag.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/modtag.h @@ -26,12 +26,13 @@ #ifndef TAGLIB_MODTAG_H #define TAGLIB_MODTAG_H -#include <taglib/tag.h> +#include "tag.h" namespace TagLib { - namespace Mod { + //! A module file tag implementation + /*! * Tags for module files (Mod, S3M, IT, XM). * @@ -48,142 +49,80 @@ namespace TagLib { { public: Tag(); - virtual ~Tag(); + ~Tag() override; + + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; /*! * Returns the track name; if no track name is present in the tag - * String::null will be returned. + * an empty string will be returned. */ - virtual String title() const; + String title() const override; /*! - * Not supported by module files. Therefore always returns String::null. + * Not supported by module files. Therefore always returns an empty string. */ - virtual String albumartist() const; + String artist() const override; /*! - * Not supported by module files. Therefore always returns String::null. + * Not supported by module files. Therefore always returns an empty string. */ - virtual String artist() const; + String album() const override; - /*! - * Not supported by module files. Therefore always returns String::null. - */ - virtual String composer() const; - - /*! - * Not supported by module files. Therefore always returns String::null. - */ - virtual String album() const; - - /*! - * Not supported by module files. Therefore always returns String::null. - */ - virtual String unsyncedlyrics() const; - /*! * Returns the track comment derived from the instrument/sample/pattern - * names; if no comment is present in the tag String::null will be + * names; if no comment is present in the tag an empty string will be * returned. */ - virtual String comment() const; + String comment() const override; /*! - * Not supported by module files. Therefore always returns String::null. + * Not supported by module files. Therefore always returns an empty string. */ - virtual String genre() const; + String genre() const override; /*! * Not supported by module files. Therefore always returns 0. */ - virtual unsigned int year() const; + unsigned int year() const override; /*! * Not supported by module files. Therefore always returns 0. */ - virtual unsigned int track() const; - - /*! - * Not supported by module files. Therefore always returns 0. - */ - virtual unsigned int disc() const; - - /*! - * Not supported by module files. Therefore always returns empty. - */ - virtual String cuesheet() const; - - /*! - * Not supported by module files. Therefore always returns 0. - */ - virtual float rgAlbumGain() const; - - /*! - * Not supported by module files. Therefore always returns 0. - */ - virtual float rgAlbumPeak() const; - - /*! - * Not supported by module files. Therefore always returns 0. - */ - virtual float rgTrackGain() const; - - /*! - * Not supported by module files. Therefore always returns 0. - */ - virtual float rgTrackPeak() const; - - /*! - * Not supported by module files. Therefore always returns empty. - */ - virtual String soundcheck() const; + unsigned int track() const override; /*! * Returns the name of the tracker used to create/edit the module file. * Only XM files store this tag to the file as such, for other formats * (Mod, S3M, IT) this is derived from the file type or the flavour of * the file type. Therefore only XM files might have an empty - * (String::null) tracker name. + * tracker name. */ String trackerName() const; /*! - * Sets the title to \a title. If \a title is String::null then this + * Sets the title to \a title. If \a title is an empty string then this * value will be cleared. * * The length limits per file type are (1 character = 1 byte): * Mod 20 characters, S3M 27 characters, IT 25 characters and XM 20 * characters. */ - virtual void setTitle(const String &title); + void setTitle(const String &title) override; /*! * Not supported by module files and therefore ignored. */ - virtual void setAlbumArtist(const String &albumartist); + void setArtist(const String &artist) override; /*! * Not supported by module files and therefore ignored. */ - virtual void setArtist(const String &artist); + void setAlbum(const String &album) override; /*! - * Not supported by module files and therefore ignored. - */ - virtual void setComposer(const String &composer); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setAlbum(const String &album); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setUnsyncedlyrics(const String &unsyncedlyrics); - - /*! - * Sets the comment to \a comment. If \a comment is String::null then + * Sets the comment to \a comment. If \a comment is an empty string then * this value will be cleared. * * Note that module file formats don't actually support a comment tag. @@ -192,63 +131,33 @@ namespace TagLib { * module file is fixed to the number of instruments/patterns/samples. * * Also note that the instrument/pattern/sample name length is limited - * an thus the line length in comments are limited. Too big comments + * and thus the line length in comments are limited. Too big comments * will be truncated. * * The line length limits per file type are (1 character = 1 byte): * Mod 22 characters, S3M 27 characters, IT 25 characters and XM 22 * characters. */ - virtual void setComment(const String &comment); + void setComment(const String &comment) override; /*! * Not supported by module files and therefore ignored. */ - virtual void setGenre(const String &genre); + void setGenre(const String &genre) override; /*! * Not supported by module files and therefore ignored. */ - virtual void setYear(unsigned int year); + void setYear(unsigned int year) override; /*! * Not supported by module files and therefore ignored. */ - virtual void setTrack(unsigned int track); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setDisc(unsigned int track); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setCuesheet(const String &); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setRGAlbumGain(float f); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setRGAlbumPeak(float f); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setRGTrackGain(float f); - - /*! - * Not supported by module files and therefore ignored. - */ - virtual void setRGTrackPeak(float f); + void setTrack(unsigned int track) override; /*! * Sets the tracker name to \a trackerName. If \a trackerName is - * String::null then this value will be cleared. + * an empty string then this value will be cleared. * * Note that only XM files support this tag. Setting the * tracker name for other module file formats will be ignored. @@ -262,7 +171,7 @@ namespace TagLib { * Implements the unified property interface -- export function. * Since the module tag is very limited, the exported map is as well. */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified property interface -- import function. @@ -272,18 +181,13 @@ namespace TagLib { * all but the first will be contained in the returned map of unsupported * properties. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; private: - Tag(const Tag &); - Tag &operator=(const Tag &); - class TagPrivate; - TagPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; }; - - } - -} - + } // namespace Mod +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4atom.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4atom.h similarity index 70% rename from Frameworks/TagLib/taglib/taglib/mp4/mp4atom.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4atom.h index dd4981498..0dca96cdc 100644 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4atom.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4atom.h @@ -25,23 +25,16 @@ // This file is not part of the public API! -#ifndef DO_NOT_DOCUMENT - #ifndef TAGLIB_MP4ATOM_H #define TAGLIB_MP4ATOM_H -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tlist.h> +#include "tfile.h" +#include "tlist.h" namespace TagLib { - namespace MP4 { - class Atom; - typedef TagLib::List<Atom *> AtomList; - - enum AtomDataType - { + enum AtomDataType { TypeImplicit = 0, // for use with tags for which no type needs to be indicated because only one type is allowed TypeUTF8 = 1, // without any count or null terminator TypeUTF16 = 2, // also known as UTF-16BE @@ -65,47 +58,63 @@ namespace TagLib { TypeUndefined = 255 // undefined }; +#ifndef DO_NOT_DOCUMENT struct AtomData { - AtomData(AtomDataType type, ByteVector data) : type(type), locale(0), data(data) {} + AtomData(AtomDataType type, const ByteVector &data) : + type(type), data(data) { } AtomDataType type; - int locale; + int locale { 0 }; ByteVector data; }; - typedef TagLib::List<AtomData> AtomDataList; + class Atom; + using AtomList = TagLib::List<Atom *>; + using AtomDataList = TagLib::List<AtomData>; - class Atom + class TAGLIB_EXPORT Atom { public: Atom(File *file); ~Atom(); - Atom *find(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0); - bool path(AtomList &path, const char *name1, const char *name2 = 0, const char *name3 = 0); - AtomList findall(const char *name, bool recursive = false); - long offset; - long length; - TagLib::ByteVector name; - AtomList children; + Atom(const Atom &) = delete; + Atom &operator=(const Atom &) = delete; + Atom *find(const char *name1, const char *name2 = nullptr, const char *name3 = nullptr, const char *name4 = nullptr); + bool path(AtomList &path, const char *name1, const char *name2 = nullptr, const char *name3 = nullptr); + AtomList findall(const char *name, bool recursive = false) const; + void addToOffset(offset_t delta); + void prependChild(Atom *atom); + bool removeChild(Atom *meta); + offset_t offset() const; + offset_t length() const; + const ByteVector &name() const; + const AtomList &children() const; + private: - static const int numContainers = 11; - static const char *containers[11]; + class AtomPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<AtomPrivate> d; }; //! Root-level atoms - class Atoms + class TAGLIB_EXPORT Atoms { public: Atoms(File *file); ~Atoms(); - Atom *find(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0); - AtomList path(const char *name1, const char *name2 = 0, const char *name3 = 0, const char *name4 = 0); - AtomList atoms; + Atoms(const Atoms &) = delete; + Atoms &operator=(const Atoms &) = delete; + Atom *find(const char *name1, const char *name2 = nullptr, const char *name3 = nullptr, const char *name4 = nullptr) const; + AtomList path(const char *name1, const char *name2 = nullptr, const char *name3 = nullptr, const char *name4 = nullptr) const; + bool checkRootLevelAtoms(); + const AtomList &atoms() const; + + private: + class AtomsPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<AtomsPrivate> d; }; - - } - -} - -#endif +#endif // DO_NOT_DOCUMENT + } // namespace MP4 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4coverart.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4coverart.h similarity index 77% rename from Frameworks/TagLib/taglib/taglib/mp4/mp4coverart.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4coverart.h index e7f122683..780828ae5 100644 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4coverart.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4coverart.h @@ -26,15 +26,14 @@ #ifndef TAGLIB_MP4COVERART_H #define TAGLIB_MP4COVERART_H -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> -#include <taglib/mp4/mp4atom.h> +#include "tlist.h" +#include "tbytevector.h" +#include "taglib_export.h" +#include "mp4atom.h" namespace TagLib { - namespace MP4 { - + //! MP4 picture class TAGLIB_EXPORT CoverArt { public: @@ -60,9 +59,9 @@ namespace TagLib { CoverArt &operator=(const CoverArt &item); /*! - * Exchanges the content of the CoverArt by the content of \a item. + * Exchanges the content of the CoverArt with the content of \a item. */ - void swap(CoverArt &item); + void swap(CoverArt &item) noexcept; //! Format of the image Format format() const; @@ -70,15 +69,24 @@ namespace TagLib { //! The image data ByteVector data() const; + /*! + * Returns \c true if the CoverArt and \a other are of the same format and + * contain the same data. + */ + bool operator==(const CoverArt &other) const; + + /*! + * Returns \c true if the CoverArt and \a other differ in format or data. + */ + bool operator!=(const CoverArt &other) const; + private: class CoverArtPrivate; - CoverArtPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<CoverArtPrivate> d; }; - typedef List<CoverArt> CoverArtList; - - } - -} - + using CoverArtList = List<CoverArt>; + } // namespace MP4 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4file.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4file.h similarity index 72% rename from Frameworks/TagLib/taglib/taglib/mp4/mp4file.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4file.h index 5e1d72f24..faf215e45 100644 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4file.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4file.h @@ -26,18 +26,19 @@ #ifndef TAGLIB_MP4FILE_H #define TAGLIB_MP4FILE_H -#include <taglib/tag.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/taglib_export.h> -#include <taglib/mp4/mp4properties.h> -#include <taglib/mp4/mp4tag.h> +#include "tfile.h" +#include "taglib_export.h" +#include "mp4tag.h" +#include "tag.h" +#include "mp4properties.h" namespace TagLib { - //! An implementation of MP4 (AAC, ALAC, ...) metadata namespace MP4 { - class Atoms; + class ItemFactory; + + //! An implementation of TagLib::File with MP4 specific methods /*! * This implements and provides an interface for MP4 files to the @@ -49,30 +50,52 @@ namespace TagLib { { public: /*! - * Constructs an MP4 file from \a file. If \a readProperties is true the + * This set of flags is used for strip() and is suitable for + * being OR-ed together. + */ + enum TagTypes { + //! Empty set. Matches no tag types. + NoTags = 0x0000, + //! Matches MP4 tags. + MP4 = 0x0001, + //! Matches all tag types. + AllTags = 0xffff + }; + + /*! + * Constructs an MP4 file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * The items will be created using \a itemFactory (default if null). */ File(FileName file, bool readProperties = true, - Properties::ReadStyle audioPropertiesStyle = Properties::Average); + Properties::ReadStyle audioPropertiesStyle = Properties::Average, + ItemFactory *itemFactory = nullptr); /*! - * Constructs an MP4 file from \a stream. If \a readProperties is true the + * Constructs an MP4 file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is * responsible for deleting it after the File object. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * The items will be created using \a itemFactory (default if null). */ File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle audioPropertiesStyle = Properties::Average); + Properties::ReadStyle audioPropertiesStyle = Properties::Average, + ItemFactory *itemFactory = nullptr); /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns a pointer to the MP4 tag of the file. @@ -84,35 +107,44 @@ namespace TagLib { * deleted by the user. It will be deleted when the file (object) is * destroyed. */ - Tag *tag() const; + Tag *tag() const override; /*! * Implements the unified property interface -- export function. */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Removes unsupported properties. Forwards to the actual Tag's * removeUnsupportedProperties() function. */ - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &properties) override; /*! * Implements the unified property interface -- import function. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the MP4 audio properties for this file. */ - Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Save the file. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - bool save(); + bool save() override; + + /*! + * This will strip the tags that match the OR-ed together TagTypes from the + * file. By default it strips all tags. It returns \c true if the tags are + * successfully stripped. + * + * \note This will update the file immediately. + */ + bool strip(int tags = AllTags); /*! * Returns whether or not the file on disk actually has an MP4 tag, or the @@ -133,11 +165,9 @@ namespace TagLib { void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - - } - -} - + } // namespace MP4 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4item.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4item.h similarity index 73% rename from Frameworks/TagLib/taglib/taglib/mp4/mp4item.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4item.h index f6d2e4096..8f6ae9a89 100644 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4item.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4item.h @@ -26,17 +26,32 @@ #ifndef TAGLIB_MP4ITEM_H #define TAGLIB_MP4ITEM_H -#include <taglib/toolkit/tstringlist.h> -#include <taglib/mp4/mp4coverart.h> -#include <taglib/taglib_export.h> +#include "tstringlist.h" +#include "taglib_export.h" +#include "mp4coverart.h" namespace TagLib { - namespace MP4 { - + //! MP4 item class TAGLIB_EXPORT Item { public: + /*! + * The data type stored in the item. + */ + enum class Type : unsigned char { + Void, + Bool, + Int, + IntPair, + Byte, + UInt, + LongLong, + StringList, + ByteVectorList, + CoverArtList + }; + struct IntPair { int first, second; }; @@ -50,9 +65,9 @@ namespace TagLib { Item &operator=(const Item &item); /*! - * Exchanges the content of the Item by the content of \a item. + * Exchanges the content of the Item with the content of \a item. */ - void swap(Item &item); + void swap(Item &item) noexcept; ~Item(); @@ -61,7 +76,7 @@ namespace TagLib { Item(unsigned int value); Item(long long value); Item(bool value); - Item(int first, int second); + Item(int value1, int value2); Item(const StringList &value); Item(const ByteVectorList &value); Item(const CoverArtList &value); @@ -81,13 +96,26 @@ namespace TagLib { bool isValid() const; + Type type() const; + + /*! + * Returns \c true if the Item and \a other are of the same type and + * contain the same value. + */ + bool operator==(const Item &other) const; + + /*! + * Returns \c true if the Item and \a other differ in type or value. + */ + bool operator!=(const Item &other) const; + private: class ItemPrivate; - ItemPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<ItemPrivate> d; }; - } - -} - + using ItemMap = TagLib::Map<String, Item>; + } // namespace MP4 +} // namespace TagLib #endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4itemfactory.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4itemfactory.h new file mode 100644 index 000000000..88590e1c3 --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4itemfactory.h @@ -0,0 +1,257 @@ +/*************************************************************************** + copyright : (C) 2023 by Urs Fleisch + email : ufleisch@users.sourceforge.net + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_MP4ITEMFACTORY_H +#define TAGLIB_MP4ITEMFACTORY_H + +#include <memory> +#include "taglib_export.h" +#include "mp4item.h" + +namespace TagLib { + + namespace MP4 { + + //! A factory for creating MP4 items during parsing + + /*! + * This factory abstracts away the parsing and rendering between atom data + * and MP4 items. + * + * Reimplementing this factory is the key to adding support for atom types + * not directly supported by TagLib to your application. To do so you would + * subclass this factory and reimplement nameHandlerMap() to add support + * for new atoms. If the new atoms do not have the same behavior as + * other supported atoms, it may be necessary to reimplement parseItem() and + * renderItem(). Then by setting your factory in the MP4::Tag constructor + * you can implement behavior that will allow for new atom types to be used. + * + * A custom item factory adding support for a "tsti" integer atom and a + * "tstt" text atom can be implemented like this: + * + * \code + * class CustomItemFactory : public MP4::ItemFactory { + * protected: + * NameHandlerMap nameHandlerMap() const override + * { + * return MP4::ItemFactory::nameHandlerMap() + * .insert("tsti", ItemHandlerType::Int) + * .insert("tstt", ItemHandlerType::Text); + * } + * }; + * \endcode + * + * If the custom item shall also be accessible via a property, + * namePropertyMap() can be overridden in the same way. + */ + class TAGLIB_EXPORT ItemFactory + { + public: + ItemFactory(const ItemFactory &) = delete; + ItemFactory &operator=(const ItemFactory &) = delete; + + static ItemFactory *instance(); + + /*! + * Create an MP4 item from the \a data bytes of an \a atom. + * Returns the name (in most cases atom->name) and an item, + * an invalid item on failure. + * The default implementation uses the map returned by nameHandlerMap(). + */ + virtual std::pair<String, Item> parseItem( + const Atom *atom, const ByteVector &data) const; + + /*! + * Render an MP4 \a item to the data bytes of an atom \a itemName. + * An empty byte vector is returned if the item is invalid or unknown. + * The default implementation uses the map returned by nameHandlerMap(). + */ + virtual ByteVector renderItem( + const String &itemName, const Item &item) const; + + /*! + * Create an MP4 item from a property with \a key and \a values. + * If the property is not supported, an invalid item is returned. + * The default implementation uses the map returned by namePropertyMap(). + */ + virtual std::pair<ByteVector, Item> itemFromProperty( + const String &key, const StringList &values) const; + + /*! + * Get an MP4 item as a property. + * If no property exists for \a itemName, an empty string is returned as + * the property key. + * The default implementation uses the map returned by namePropertyMap(). + */ + virtual std::pair<String, StringList> itemToProperty( + const ByteVector &itemName, const Item &item) const; + + /*! + * Returns property key for atom \a name, empty if no property exists for + * this atom. + * The default method looks up the map created by namePropertyMap() and + * should be enough for most uses. + */ + virtual String propertyKeyForName(const ByteVector &name) const; + + /*! + * Returns atom name for property \a key, empty if no property is + * supported for this key. + * The default method uses the reverse mapping of propertyKeyForName() + * and should be enough for most uses. + */ + virtual ByteVector nameForPropertyKey(const String &key) const; + + protected: + /*! + * Type that determines the parsing and rendering between the data and + * the item representation of an atom. + */ + enum class ItemHandlerType { + Unknown, + FreeForm, + IntPair, + IntPairNoTrailing, + Bool, + Int, + TextOrInt, + UInt, + LongLong, + Byte, + Gnre, + Covr, + TextImplicit, + Text + }; + + /*! Mapping of atom name to handler type. */ + using NameHandlerMap = Map<ByteVector, ItemHandlerType>; + + /*! + * Constructs an item factory. Because this is a singleton this method is + * protected, but may be used for subclasses. + */ + ItemFactory(); + + /*! + * Destroys the frame factory. + */ + ~ItemFactory(); + + /*! + * Returns mapping between atom names and handler types. + * This method is called once by handlerTypeForName() to initialize its + * internal cache. + * To add support for a new atom, it is sufficient in most cases to just + * reimplement this method and add new entries. + */ + virtual NameHandlerMap nameHandlerMap() const; + + /*! + * Returns handler type for atom \a name. + * The default method looks up the map created by nameHandlerMap() and + * should be enough for most uses. + */ + virtual ItemHandlerType handlerTypeForName(const ByteVector &name) const; + + /*! + * Returns mapping between atom names and property keys. + * This method is called once by propertyKeyForName() to initialize its + * internal cache. + * To add support for a new atom with a property, it is sufficient in most + * cases to just reimplement this method and add new entries. + */ + virtual Map<ByteVector, String> namePropertyMap() const; + + // Functions used by parseItem() to create items from atom data. + static MP4::AtomDataList parseData2( + const MP4::Atom *atom, const ByteVector &data, int expectedFlags = -1, + bool freeForm = false); + static ByteVectorList parseData( + const MP4::Atom *atom, const ByteVector &bytes, int expectedFlags = -1, + bool freeForm = false); + static std::pair<String, Item> parseText( + const MP4::Atom *atom, const ByteVector &bytes, int expectedFlags = 1); + static std::pair<String, Item> parseFreeForm( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseInt( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseByte( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseTextOrInt( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseUInt( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseLongLong( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseGnre( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseIntPair( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseBool( + const MP4::Atom *atom, const ByteVector &bytes); + static std::pair<String, Item> parseCovr( + const MP4::Atom *atom, const ByteVector &data); + + // Functions used by renderItem() to render atom data for items. + static ByteVector renderAtom( + const ByteVector &name, const ByteVector &data); + static ByteVector renderData( + const ByteVector &name, int flags, const ByteVectorList &data); + static ByteVector renderText( + const ByteVector &name, const MP4::Item &item, int flags = TypeUTF8); + static ByteVector renderFreeForm( + const String &name, const MP4::Item &item); + static ByteVector renderBool( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderInt( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderTextOrInt( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderByte( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderUInt( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderLongLong( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderIntPair( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderIntPairNoTrailing( + const ByteVector &name, const MP4::Item &item); + static ByteVector renderCovr( + const ByteVector &name, const MP4::Item &item); + + private: + static ItemFactory factory; + + class ItemFactoryPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<ItemFactoryPrivate> d; + }; + + } // namespace MP4 +} // namespace TagLib + +#endif diff --git a/Frameworks/TagLib/taglib/taglib/mp4/mp4properties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4properties.h similarity index 74% rename from Frameworks/TagLib/taglib/taglib/mp4/mp4properties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4properties.h index a13e1b21d..a2f1de8d5 100644 --- a/Frameworks/TagLib/taglib/taglib/mp4/mp4properties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4properties.h @@ -26,13 +26,11 @@ #ifndef TAGLIB_MP4PROPERTIES_H #define TAGLIB_MP4PROPERTIES_H -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> +#include "taglib_export.h" +#include "audioproperties.h" namespace TagLib { - namespace MP4 { - class Atoms; class File; @@ -46,50 +44,33 @@ namespace TagLib { ALAC }; - Properties(File *file, Atoms *atoms, ReadStyle style = Average); - virtual ~Properties(); + Properties(File *file, const Atoms *atoms, ReadStyle style = Average); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample. @@ -107,14 +88,12 @@ namespace TagLib { Codec codec() const; private: - void read(File *file, Atoms *atoms); + void read(File *file, const Atoms *atoms); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - - } - -} - + } // namespace MP4 +} // namespace TagLib #endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4tag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4tag.h new file mode 100644 index 000000000..bae7d232f --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mp4tag.h @@ -0,0 +1,137 @@ +/************************************************************************** + copyright : (C) 2007,2011 by Lukáš Lalinský + email : lalinsky@gmail.com + **************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_MP4TAG_H +#define TAGLIB_MP4TAG_H + +#include "tfile.h" +#include "tmap.h" +#include "tstringlist.h" +#include "taglib_export.h" +#include "tag.h" +#include "mp4atom.h" +#include "mp4item.h" + +namespace TagLib { + namespace MP4 { + + class ItemFactory; + + //! An MP4 tag implementation + class TAGLIB_EXPORT Tag: public TagLib::Tag + { + public: + Tag(); + Tag(TagLib::File *file, Atoms *atoms, + const ItemFactory *factory = nullptr); + ~Tag() override; + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; + bool save(); + + String title() const override; + String artist() const override; + String album() const override; + String comment() const override; + String genre() const override; + unsigned int year() const override; + unsigned int track() const override; + + void setTitle(const String &value) override; + void setArtist(const String &value) override; + void setAlbum(const String &value) override; + void setComment(const String &value) override; + void setGenre(const String &value) override; + void setYear(unsigned int value) override; + void setTrack(unsigned int value) override; + + bool isEmpty() const override; + + /*! + * Returns a string-keyed map of the MP4::Items for this tag. + */ + const ItemMap &itemMap() const; + + /*! + * \return The item, if any, corresponding to \a key. + */ + Item item(const String &key) const; + + /*! + * Sets the value of \a key to \a value, overwriting any previous value. + */ + void setItem(const String &key, const Item &value); + + /*! + * Removes the entry with \a key from the tag, or does nothing if it does + * not exist. + */ + void removeItem(const String &key); + + /*! + * \return \c true if the tag contains an entry for \a key. + */ + bool contains(const String &key) const; + + /*! + * Saves the associated file with the tag stripped. + */ + bool strip(); + + PropertyMap properties() const override; + void removeUnsupportedProperties(const StringList &props) override; + PropertyMap setProperties(const PropertyMap &props) override; + + StringList complexPropertyKeys() const override; + List<VariantMap> complexProperties(const String &key) const override; + bool setComplexProperties(const String &key, const List<VariantMap> &value) override; + + protected: + /*! + * Sets the value of \a key to \a value, overwriting any previous value. + * If \a value is empty, the item is removed. + */ + void setTextItem(const String &key, const String &value); + + private: + ByteVector padIlst(const ByteVector &data, int length = -1) const; + ByteVector renderAtom(const ByteVector &name, const ByteVector &data) const; + + + void updateParents(const AtomList &path, offset_t delta, int ignore = 0); + void updateOffsets(offset_t delta, offset_t offset); + + void saveNew(ByteVector data); + void saveExisting(ByteVector data, const AtomList &path); + + void addItem(const String &name, const Item &value); + + class TagPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; + }; + } // namespace MP4 +} // namespace TagLib +#endif diff --git a/Frameworks/TagLib/taglib/taglib/mpc/mpcfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpcfile.h similarity index 84% rename from Frameworks/TagLib/taglib/taglib/mpc/mpcfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpcfile.h index cffb60153..0c715b636 100644 --- a/Frameworks/TagLib/taglib/taglib/mpc/mpcfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpcfile.h @@ -26,13 +26,10 @@ #ifndef TAGLIB_MPCFILE_H #define TAGLIB_MPCFILE_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/tag.h> - -#include <taglib/mpc/mpcproperties.h> - -#include <taglib/toolkit/tlist.h> +#include "tfile.h" +#include "taglib_export.h" +#include "tag.h" +#include "mpcproperties.h" namespace TagLib { @@ -44,7 +41,7 @@ namespace TagLib { //! An implementation of MPC metadata /*! - * This is implementation of MPC metadata. + * This is an implementation of MPC metadata. * * This supports ID3v1 and APE (v1 and v2) style comments as well as reading stream * properties from the file. ID3v2 tags are invalid in MPC-files, but will be skipped @@ -84,7 +81,7 @@ namespace TagLib { }; /*! - * Constructs an MPC file from \a file. If \a readProperties is true the + * Constructs an MPC file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. @@ -93,7 +90,7 @@ namespace TagLib { Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs an MPC file from \a stream. If \a readProperties is true the + * Constructs an MPC file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is @@ -107,55 +104,58 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag * or a combination of the two. */ - virtual TagLib::Tag *tag() const; + TagLib::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * If the file contains both an APE and an ID3v1 tag, only the APE * tag will be converted to the PropertyMap. */ - PropertyMap properties() const; + PropertyMap properties() const override; - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &properties) override; /*! * Implements the unified property interface -- import function. * Affects only the APEv2 tag which will be created if necessary. * If an ID3v1 tag exists, it will be updated as well. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the MPC::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Saves the file. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - virtual bool save(); + bool save() override; /*! * Returns a pointer to the ID3v1 tag of the file. * - * If \a create is false (the default) this returns a null pointer - * if there is no valid APE tag. If \a create is true it will create + * If \a create is \c false (the default) this returns a null pointer + * if there is no valid APE tag. If \a create is \c true it will create * an APE tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an ID3v1 tag. Use hasID3v1Tag() to check if the file * on disk actually has an ID3v1 tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the MPC::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -166,16 +166,16 @@ namespace TagLib { /*! * Returns a pointer to the APE tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid APE tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid APE tag. If \a create is \c true it will create * an APE tag if one does not exist and returns a valid pointer. If - * there already be an ID3v1 tag, the new APE tag will be placed before it. + * there already is an ID3v1 tag, the new APE tag will be placed before it. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an APE tag. Use hasAPETag() to check if the file * on disk actually has an APE tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the MPC::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -194,12 +194,6 @@ namespace TagLib { */ void strip(int tags = AllTags); - /*! - * \deprecated - * \see strip - */ - TAGLIB_DEPRECATED void remove(int tags = AllTags); - /*! * Returns whether or not the file on disk actually has an ID3v1 tag. * @@ -224,15 +218,13 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace MPC +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpc/mpcproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpcproperties.h similarity index 70% rename from Frameworks/TagLib/taglib/taglib/mpc/mpcproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpcproperties.h index 725fbea89..ca343da01 100644 --- a/Frameworks/TagLib/taglib/taglib/mpc/mpcproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpcproperties.h @@ -26,8 +26,9 @@ #ifndef TAGLIB_MPCPROPERTIES_H #define TAGLIB_MPCPROPERTIES_H -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> +#include "tbytevector.h" +#include "taglib_export.h" +#include "audioproperties.h" namespace TagLib { @@ -35,7 +36,7 @@ namespace TagLib { class File; - static const unsigned int HeaderSize = 8 * 7; + static constexpr unsigned int HeaderSize = 8 * 7; //! An implementation of audio property reading for MPC @@ -47,66 +48,41 @@ namespace TagLib { class TAGLIB_EXPORT Properties : public AudioProperties { public: - /*! - * Create an instance of MPC::Properties with the data read from the - * ByteVector \a data. - * - * This constructor is deprecated. It only works for MPC version up to 7. - */ - Properties(const ByteVector &data, long streamLength, ReadStyle style = Average); - /*! * Create an instance of MPC::Properties with the data read directly - * from a MPC::File. + * from an MPC::File. */ - Properties(File *file, long streamLength, ReadStyle style = Average); + Properties(File *file, offset_t streamLength, ReadStyle style = Average); /*! * Destroys this MPC::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the version of the bitstream (SV4-SV8) @@ -114,7 +90,7 @@ namespace TagLib { int mpcVersion() const; unsigned int totalFrames() const; - unsigned int sampleFrames() const; + unsigned long sampleFrames() const; /*! * Returns the track gain as an integer value, @@ -143,16 +119,14 @@ namespace TagLib { int albumPeak() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void readSV7(const ByteVector &data, long streamLength); - void readSV8(File *file, long streamLength); + void readSV7(const ByteVector &data, offset_t streamLength); + void readSV8(File *file, offset_t streamLength); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace MPC +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegfile.h similarity index 70% rename from Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegfile.h index 3d70439ad..bff35b4db 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegfile.h @@ -26,13 +26,11 @@ #ifndef TAGLIB_MPEGFILE_H #define TAGLIB_MPEGFILE_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/tag.h> - -#include <taglib/mpeg/mpegproperties.h> - -#include <taglib/mpeg/id3v2/id3v2.h> +#include "tfile.h" +#include "taglib_export.h" +#include "tag.h" +#include "mpegproperties.h" +#include "id3v2.h" namespace TagLib { @@ -73,51 +71,83 @@ namespace TagLib { }; /*! - * Constructs an MPEG file from \a file. If \a readProperties is true the + * Constructs an MPEG file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * - * \note In the current implementation, \a propertiesStyle is ignored. + * If \a readStyle is not Fast, the file will be scanned + * completely if no ID3v2 tag or MPEG sync code is found at the start. * - * \deprecated This constructor will be dropped in favor of the one below - * in a future version. + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). */ File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle readStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); /*! - * Constructs an MPEG file from \a file. If \a readProperties is true the + * Constructs an MPEG file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * - * If this file contains and ID3v2 tag the frames will be created using + * If this file contains an ID3v2 tag, the frames will be created using * \a frameFactory. * - * \note In the current implementation, \a propertiesStyle is ignored. + * If \a readStyle is not Fast, the file will be scanned + * completely if no ID3v2 tag or MPEG sync code is found at the start. + * + * \deprecated Use the constructor above. */ - // BIC: merge with the above constructor + TAGLIB_DEPRECATED File(FileName file, ID3v2::FrameFactory *frameFactory, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle readStyle = Properties::Average); /*! - * Constructs an MPEG file from \a stream. If \a readProperties is true the + * Constructs an MPEG file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is * responsible for deleting it after the File object. * - * If this file contains and ID3v2 tag the frames will be created using + * If this file contains an ID3v2 tag, the frames will be created using * \a frameFactory. * - * \note In the current implementation, \a propertiesStyle is ignored. + * If \a readStyle is not Fast, the file will be scanned + * completely if no ID3v2 tag or MPEG sync code is found at the start. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). */ + File(IOStream *stream, bool readProperties = true, + Properties::ReadStyle readStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); + + /*! + * Constructs an MPEG file from \a stream. If \a readProperties is \c true the + * file's audio properties will also be read. + * + * \note TagLib will *not* take ownership of the stream, the caller is + * responsible for deleting it after the File object. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory. + * + * If \a readStyle is not Fast, the file will be scanned + * completely if no ID3v2 tag or MPEG sync code is found at the start. + * + * \deprecated Use the constructor above. + */ + TAGLIB_DEPRECATED File(IOStream *stream, ID3v2::FrameFactory *frameFactory, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle readStyle = Properties::Average); /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns a pointer to a tag that is the union of the ID3v2 and ID3v1 @@ -136,7 +166,7 @@ namespace TagLib { * \see ID3v2Tag() * \see APETag() */ - virtual Tag *tag() const; + Tag *tag() const override; /*! * Implements the reading part of the unified property interface. @@ -144,9 +174,9 @@ namespace TagLib { * first one (in the order ID3v2, APE, ID3v1) will be converted to the * PropertyMap. */ - PropertyMap properties() const; + PropertyMap properties() const override; - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &properties) override; /*! * Implements the writing part of the unified tag dictionary interface. @@ -156,17 +186,17 @@ namespace TagLib { * limitations of that format. * The returned PropertyMap refers to the ID3v2 tag only. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the MPEG::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Save the file. If at least one tag -- ID3v1 or ID3v2 -- exists this - * will duplicate its content into the other tag. This returns true + * will duplicate its content into the other tag. This returns \c true * if saving was successful. * * If neither exists or if both tags are empty, this will strip the tags @@ -179,36 +209,7 @@ namespace TagLib { * * \see save(int tags) */ - virtual bool save(); - - /*! - * Save the file. This will attempt to save all of the tag types that are - * specified by OR-ing together TagTypes values. The save() method above - * uses AllTags. This returns true if saving was successful. - * - * This strips all tags not included in the mask, but does not modify them - * in memory, so later calls to save() which make use of these tags will - * remain valid. This also strips empty tags. - */ - bool save(int tags); - - /*! - * \deprecated - */ - // BIC: combine with the above method - TAGLIB_DEPRECATED bool save(int tags, bool stripOthers); - - /*! - * \deprecated - */ - // BIC: combine with the above method - TAGLIB_DEPRECATED bool save(int tags, bool stripOthers, int id3v2Version); - - /*! - * \deprecated - */ - // BIC: combine with the above method - TAGLIB_DEPRECATED bool save(int tags, bool stripOthers, int id3v2Version, bool duplicateTags); + bool save() override; /*! * Save the file. This will attempt to save all of the tag types that are @@ -220,18 +221,18 @@ namespace TagLib { * \a version specifies the ID3v2 version to be used for writing tags. By * default, the latest standard, ID3v2.4 is used. * - * If \a duplicate is set to DuplicateTags and at least one tag -- ID3v1 + * If \a duplicate is set to Duplicate and at least one tag -- ID3v1 * or ID3v2 -- exists this will duplicate its content into the other tag. */ - bool save(int tags, StripTags strip, + bool save(int tags, StripTags strip = StripOthers, ID3v2::Version version = ID3v2::v4, DuplicateTags duplicate = Duplicate); /*! * Returns a pointer to the ID3v2 tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid ID3v2 tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid ID3v2 tag. If \a create is \c true it will create * an ID3v2 tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the @@ -249,8 +250,8 @@ namespace TagLib { /*! * Returns a pointer to the ID3v1 tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid ID3v1 tag. If \a create is \c true it will create * an ID3v1 tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the @@ -268,8 +269,8 @@ namespace TagLib { /*! * Returns a pointer to the APE tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid APE tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid APE tag. If \a create is \c true it will create * an APE tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the @@ -286,60 +287,37 @@ namespace TagLib { /*! * This will strip the tags that match the OR-ed together TagTypes from the - * file. By default it strips all tags. It returns true if the tags are + * file. By default it strips all tags. It returns \c true if the tags are * successfully stripped. * - * This is equivalent to strip(tags, true) - * - * \note This will also invalidate pointers to the ID3 and APE tags - * as their memory will be freed. - * - * \note This will update the file immediately. - */ - bool strip(int tags = AllTags); - - /*! - * This will strip the tags that match the OR-ed together TagTypes from the - * file. By default it strips all tags. It returns true if the tags are - * successfully stripped. - * - * If \a freeMemory is true the ID3 and APE tags will be deleted and + * If \a freeMemory is \c true the ID3 and APE tags will be deleted and * pointers to them will be invalidated. * * \note This will update the file immediately. */ - // BIC: merge with the method above - bool strip(int tags, bool freeMemory); - - /*! - * Set the ID3v2::FrameFactory to something other than the default. - * - * \see ID3v2FrameFactory - * \deprecated This value should be passed in via the constructor - */ - TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory); + bool strip(int tags = AllTags, bool freeMemory = true); /*! * Returns the position in the file of the first MPEG frame. */ - long firstFrameOffset(); + offset_t firstFrameOffset(); /*! * Returns the position in the file of the next MPEG frame, - * using the current position as start + * using the current position as start. */ - long nextFrameOffset(long position); + offset_t nextFrameOffset(offset_t position); /*! * Returns the position in the file of the previous MPEG frame, - * using the current position as start + * using the current position as start. */ - long previousFrameOffset(long position); + offset_t previousFrameOffset(offset_t position); /*! * Returns the position in the file of the last MPEG frame. */ - long lastFrameOffset(); + offset_t lastFrameOffset(); /*! * Returns whether or not the file on disk actually has an ID3v1 tag. @@ -372,16 +350,14 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - - void read(bool readProperties); - long findID3v2(); + void read(bool readProperties, Properties::ReadStyle readStyle); + offset_t findID3v2(Properties::ReadStyle readStyle); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace MPEG +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegheader.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegheader.h similarity index 63% rename from Frameworks/TagLib/taglib/taglib/mpeg/mpegheader.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegheader.h index 072dd5a0d..ecc354d2c 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegheader.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegheader.h @@ -26,7 +26,10 @@ #ifndef TAGLIB_MPEGHEADER_H #define TAGLIB_MPEGHEADER_H -#include <taglib/taglib_export.h> +#include <memory> + +#include "taglib.h" +#include "taglib_export.h" namespace TagLib { @@ -39,29 +42,25 @@ namespace TagLib { /*! * This is an implementation of MPEG Layer III headers. The API follows more - * or less the binary format of these headers. I've used - * <a href="http://www.mp3-tech.org/programmer/frame_header.html">this</a> - * document as a reference. + * or less the binary format of these headers. + * + * See these documents as a reference + * - <a href="http://www.mp3-tech.org/programmer/frame_header.html"> + * MPEG Audio Layer I/II/III frame header</a> + * - <a href="https://wiki.multimedia.cx/index.php/ADTS">ADTS</a> */ class TAGLIB_EXPORT Header { public: - /*! - * Parses an MPEG header based on \a data. - * - * \deprecated - */ - TAGLIB_DEPRECATED Header(const ByteVector &data); - /*! * Parses an MPEG header based on \a file and \a offset. * - * \note If \a checkLength is true, this requires the next MPEG frame to + * \note If \a checkLength is \c true, this requires the next MPEG frame to * check if the frame length is parsed and calculated correctly. So it's * suitable for seeking for the first valid frame. */ - Header(File *file, long offset, bool checkLength = true); + Header(File *file, offset_t offset, bool checkLength = true); /*! * Does a shallow copy of \a h. @@ -71,10 +70,10 @@ namespace TagLib { /*! * Destroys this Header instance. */ - virtual ~Header(); + ~Header(); /*! - * Returns true if the frame is at least an appropriate size and has + * Returns \c true if the frame is at least an appropriate size and has * legal values. */ bool isValid() const; @@ -88,7 +87,9 @@ namespace TagLib { //! MPEG Version 2 Version2 = 1, //! MPEG Version 2.5 - Version2_5 = 2 + Version2_5 = 2, + //! MPEG Version 4 + Version4 = 3 }; /*! @@ -102,7 +103,7 @@ namespace TagLib { int layer() const; /*! - * Returns true if the MPEG protection bit is enabled. + * Returns \c true if the MPEG protection bit is enabled. */ bool protectionEnabled() const; @@ -117,7 +118,7 @@ namespace TagLib { int sampleRate() const; /*! - * Returns true if the frame is padded. + * Returns \c true if the frame is padded. */ bool isPadded() const; @@ -142,12 +143,48 @@ namespace TagLib { ChannelMode channelMode() const; /*! - * Returns true if the copyrighted bit is set. + * MPEG-4 channel configuration. + */ + enum ChannelConfiguration { + //! Defined in audio object type (AOT) specific configuration + Custom = 0, + //! 1 channel: front-center + FrontCenter = 1, + //! 2 channels: front-left, front-right + FrontLeftRight = 2, + //! 3 channels: front-center, front-left, front-right + FrontCenterLeftRight = 3, + //! 4 channels: front-center, front-left, front-right, back-center + FrontCenterLeftRightBackCenter = 4, + //! 5 channels: front-center, front-left, front-right, back-left, + //! back-right + FrontCenterLeftRightBackLeftRight = 5, + //! 6 channels: front-center, front-left, front-right, back-left, + //! back-right, LFE-channel + FrontCenterLeftRightBackLeftRightLFE = 6, + //! 8 channels: front-center, front-left, front-right, side-left, + //! side-right, back-left, back-right, LFE-channel + FrontCenterLeftRightSideLeftRightBackLeftRightLFE = 7 + }; + + /*! + * Returns the MPEG-4 channel configuration. + */ + ChannelConfiguration channelConfiguration() const; + + /*! + * Returns \c true if this is the header of an Audio Data Transport Stream + * (ADTS), usually AAC. + */ + bool isADTS() const; + + /*! + * Returns \c true if the copyrighted bit is set. */ bool isCopyrighted() const; /*! - * Returns true if the "original" bit is set. + * Returns \c true if the "original" bit is set. */ bool isOriginal() const; @@ -167,12 +204,13 @@ namespace TagLib { Header &operator=(const Header &h); private: - void parse(File *file, long offset, bool checkLength); + void parse(File *file, offset_t offset, bool checkLength); class HeaderPrivate; - HeaderPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<HeaderPrivate> d; }; - } -} + } // namespace MPEG +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/mpegproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegproperties.h similarity index 75% rename from Frameworks/TagLib/taglib/taglib/mpeg/mpegproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegproperties.h index b16b690bf..c92a3b030 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/mpegproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/mpegproperties.h @@ -26,10 +26,9 @@ #ifndef TAGLIB_MPEGPROPERTIES_H #define TAGLIB_MPEGPROPERTIES_H -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> - -#include <taglib/mpeg/mpegheader.h> +#include "taglib_export.h" +#include "audioproperties.h" +#include "mpegheader.h" namespace TagLib { @@ -57,49 +56,32 @@ namespace TagLib { /*! * Destroys this MPEG Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns a pointer to the Xing/VBRI header if one exists or null if no @@ -118,7 +100,7 @@ namespace TagLib { int layer() const; /*! - * Returns true if the MPEG protection bit is enabled. + * Returns \c true if the MPEG protection bit is enabled. */ bool protectionEnabled() const; @@ -128,25 +110,33 @@ namespace TagLib { Header::ChannelMode channelMode() const; /*! - * Returns true if the copyrighted bit is set. + * Returns the MPEG-4 channel configuration. + */ + Header::ChannelConfiguration channelConfiguration() const; + + /*! + * Returns \c true for an Audio Data Transport Stream (ADTS), usually AAC. + */ + bool isADTS() const; + + /*! + * Returns \c true if the copyrighted bit is set. */ bool isCopyrighted() const; /*! - * Returns true if the "original" bit is set. + * Returns \c true if the "original" bit is set. */ bool isOriginal() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(File *file); + void read(File *file, ReadStyle readStyle); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace MPEG +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/oggfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggfile.h similarity index 90% rename from Frameworks/TagLib/taglib/taglib/ogg/oggfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggfile.h index 0ea9b5ccc..a4d75f310 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/oggfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggfile.h @@ -23,13 +23,13 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tfile.h> -#include <taglib/toolkit/tbytevectorlist.h> - #ifndef TAGLIB_OGGFILE_H #define TAGLIB_OGGFILE_H +#include "tfile.h" +#include "tbytevectorlist.h" +#include "taglib_export.h" + namespace TagLib { //! A namespace for the classes used by Ogg-based metadata files @@ -44,13 +44,16 @@ namespace TagLib { * This is an implementation of Ogg file page and packet rendering and is of * use to Ogg based formats. While the API is small this handles the * non-trivial details of breaking up an Ogg stream into packets and makes - * these available (via subclassing) to the codec meta data implementations. + * these available (via subclassing) to the codec metadata implementations. */ class TAGLIB_EXPORT File : public TagLib::File { public: - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the packet contents for the i-th packet (starting from zero) @@ -78,7 +81,7 @@ namespace TagLib { */ const PageHeader *lastPageHeader(); - virtual bool save(); + bool save() override; protected: /*! @@ -103,9 +106,6 @@ namespace TagLib { File(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - /*! * Reads the pages from the beginning of the file until enough to compose * the requested packet. @@ -118,10 +118,11 @@ namespace TagLib { void writePacket(unsigned int i, const ByteVector &packet); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/flac/oggflacfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggflacfile.h similarity index 86% rename from Frameworks/TagLib/taglib/taglib/ogg/flac/oggflacfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggflacfile.h index f40b4d0d2..d83be0b3f 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/flac/oggflacfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggflacfile.h @@ -26,11 +26,10 @@ #ifndef TAGLIB_OGGFLACFILE_H #define TAGLIB_OGGFLACFILE_H -#include <taglib/taglib_export.h> -#include <taglib/ogg/oggfile.h> -#include <taglib/ogg/xiphcomment.h> - -#include <taglib/flac/flacproperties.h> +#include "taglib_export.h" +#include "oggfile.h" +#include "xiphcomment.h" +#include "flacproperties.h" namespace TagLib { @@ -41,7 +40,7 @@ namespace TagLib { //! An implementation of Ogg FLAC metadata /*! - * This is implementation of FLAC metadata for Ogg FLAC files. For "pure" + * This is an implementation of FLAC metadata for Ogg FLAC files. For "pure" * FLAC files look under the FLAC hierarchy. * * Unlike "pure" FLAC-files, Ogg FLAC only supports Xiph-comments, @@ -64,7 +63,7 @@ namespace TagLib { { public: /*! - * Constructs an Ogg/FLAC file from \a file. If \a readProperties is true + * Constructs an Ogg/FLAC file from \a file. If \a readProperties is \c true * the file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. @@ -73,7 +72,7 @@ namespace TagLib { Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs an Ogg/FLAC file from \a stream. If \a readProperties is true + * Constructs an Ogg/FLAC file from \a stream. If \a readProperties is \c true * the file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is @@ -87,7 +86,10 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the Tag for this file. This will always be a XiphComment. @@ -96,45 +98,45 @@ namespace TagLib { * the file on disk has a XiphComment. Use hasXiphComment() to check if * the file on disk actually has a XiphComment. * - * \note The Tag <b>is still</b> owned by the FLAC::File and should not be + * \note The Tag <b>is still</b> owned by the Ogg::FLAC::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * * \see hasXiphComment() */ - virtual XiphComment *tag() const; + XiphComment *tag() const override; /*! * Returns the FLAC::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Implements the unified property interface -- export function. * This forwards directly to XiphComment::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified tag dictionary interface -- import function. * Like properties(), this is a forwarder to the file's XiphComment. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Save the file. This will primarily save and update the XiphComment. - * Returns true if the save is successful. + * Returns \c true if the save is successful. */ - virtual bool save(); + bool save() override; /*! * Returns the length of the audio-stream, used by FLAC::Properties for * calculating the bitrate. */ - long streamLength(); + offset_t streamLength(); /*! * Returns whether or not the file on disk actually has a XiphComment. @@ -152,16 +154,14 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties, Properties::ReadStyle propertiesStyle); void scan(); ByteVector streamInfoData(); ByteVector xiphCommentData(); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; } // namespace FLAC } // namespace Ogg diff --git a/Frameworks/TagLib/taglib/taglib/ogg/oggpage.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggpage.h similarity index 90% rename from Frameworks/TagLib/taglib/taglib/ogg/oggpage.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggpage.h index c900d78b2..64ac01c96 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/oggpage.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggpage.h @@ -26,8 +26,9 @@ #ifndef TAGLIB_OGGPAGE_H #define TAGLIB_OGGPAGE_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tbytevectorlist.h> +#include "tbytevectorlist.h" +#include "taglib.h" +#include "taglib_export.h" namespace TagLib { @@ -46,7 +47,7 @@ namespace TagLib { * * In most Xiph.org formats the comments are found in the first few packets, * this however is a reasonably complete implementation of Ogg pages that - * could potentially be useful for non-meta data purposes. + * could potentially be useful for non-metadata purposes. */ class TAGLIB_EXPORT Page @@ -55,14 +56,17 @@ namespace TagLib { /*! * Read an Ogg page from the \a file at the position \a pageOffset. */ - Page(File *file, long pageOffset); + Page(File *file, offset_t pageOffset); - virtual ~Page(); + ~Page(); + + Page(const Page &) = delete; + Page &operator=(const Page &) = delete; /*! * Returns the page's position within the file (in bytes). */ - long fileOffset() const; + offset_t fileOffset() const; /*! * Returns a pointer to the header for this page. This pointer will become @@ -85,16 +89,6 @@ namespace TagLib { */ void setPageSequenceNumber(int sequenceNumber); - /*! - * Returns a copy of the page with \a sequenceNumber set as sequence number. - * - * \see header() - * \see PageHeader::setPageSequenceNumber() - * - * \deprecated Always returns null. - */ - TAGLIB_DEPRECATED Page *getCopyWithNewPageSequenceNumber(int sequenceNumber); - /*! * Returns the index of the first packet wholly or partially contained in * this page. @@ -112,7 +106,7 @@ namespace TagLib { /*! * When checking to see if a page contains a given packet this set of flags - * represents the possible values for that packets status in the page. + * represents the possible values for that packet's status in the page. * * \see containsPacket() */ @@ -181,7 +175,7 @@ namespace TagLib { * Pack \a packets into Ogg pages using the \a strategy for pagination. * The page number indicator inside of the rendered packets will start * with \a firstPage and be incremented for each page rendered. - * \a containsLastPacket should be set to true if \a packets contains the + * \a containsLastPacket should be set to \c true if \a packets contains the * last page in the stream and will set the appropriate flag in the last * rendered Ogg page's header. \a streamSerialNumber should be set to * the serial number for this stream. @@ -217,12 +211,10 @@ namespace TagLib { bool containsLastPacket = false); private: - Page(const Page &); - Page &operator=(const Page &); - class PagePrivate; - PagePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PagePrivate> d; }; - } -} + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/oggpageheader.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggpageheader.h similarity index 87% rename from Frameworks/TagLib/taglib/taglib/ogg/oggpageheader.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggpageheader.h index 0a3581134..a17e4e5d4 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/oggpageheader.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/oggpageheader.h @@ -26,9 +26,10 @@ #ifndef TAGLIB_OGGPAGEHEADER_H #define TAGLIB_OGGPAGEHEADER_H -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/taglib_export.h> +#include "tlist.h" +#include "tbytevector.h" +#include "taglib.h" +#include "taglib_export.h" namespace TagLib { @@ -52,21 +53,24 @@ namespace TagLib { * create a page with no (and as such, invalid) data that must be set * later. */ - PageHeader(File *file = 0, long pageOffset = -1); + PageHeader(File *file = nullptr, offset_t pageOffset = -1); /*! * Deletes this instance of the PageHeader. */ - virtual ~PageHeader(); + ~PageHeader(); + + PageHeader(const PageHeader &) = delete; + PageHeader &operator=(const PageHeader &) = delete; /*! - * Returns true if the header parsed properly and is valid. + * Returns \c true if the header parsed properly and is valid. */ bool isValid() const; /*! * Ogg pages contain a list of packets (which are used by the contained - * codecs). The sizes of these pages is encoded in the page header. This + * codecs). The sizes of these pages are encoded in the page header. This * returns a list of the packet sizes in bytes. * * \see setPacketSizes() @@ -84,7 +88,7 @@ namespace TagLib { /*! * Some packets can be <i>continued</i> across multiple pages. If the * first packet in the current page is a continuation this will return - * true. If this is page starts with a new packet this will return false. + * \c true. If this page starts with a new packet this will return \c false. * * \see lastPacketCompleted() * \see setFirstPacketContinued() @@ -100,7 +104,7 @@ namespace TagLib { void setFirstPacketContinued(bool continued); /*! - * Returns true if the last packet of this page is completely contained in + * Returns \c true if the last packet of this page is completely contained in * this page. * * \see firstPacketContinued() @@ -117,7 +121,7 @@ namespace TagLib { void setLastPacketCompleted(bool completed); /*! - * This returns true if this is the first page of the Ogg (logical) stream. + * This returns \c true if this is the first page of the Ogg (logical) stream. * * \see setFirstPageOfStream() */ @@ -131,7 +135,7 @@ namespace TagLib { void setFirstPageOfStream(bool first); /*! - * This returns true if this is the last page of the Ogg (logical) stream. + * This returns \c true if this is the last page of the Ogg (logical) stream. * * \see setLastPageOfStream() */ @@ -216,17 +220,15 @@ namespace TagLib { ByteVector render() const; private: - PageHeader(const PageHeader &); - PageHeader &operator=(const PageHeader &); - - void read(Ogg::File *file, long pageOffset); + void read(Ogg::File *file, offset_t pageOffset); ByteVector lacingValues() const; class PageHeaderPrivate; - PageHeaderPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PageHeaderPrivate> d; }; - } -} + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/opusfile.h similarity index 86% rename from Frameworks/TagLib/taglib/taglib/ogg/opus/opusfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/opusfile.h index 02845e5b3..9918bbca0 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/opusfile.h @@ -30,10 +30,9 @@ #ifndef TAGLIB_OPUSFILE_H #define TAGLIB_OPUSFILE_H -#include <taglib/ogg/oggfile.h> -#include <taglib/ogg/xiphcomment.h> - -#include <taglib/ogg/opus/opusproperties.h> +#include "oggfile.h" +#include "xiphcomment.h" +#include "opusproperties.h" namespace TagLib { @@ -56,7 +55,7 @@ namespace TagLib { { public: /*! - * Constructs an Opus file from \a file. If \a readProperties is true the + * Constructs an Opus file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. @@ -65,7 +64,7 @@ namespace TagLib { Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs an Opus file from \a stream. If \a readProperties is true the + * Constructs an Opus file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is @@ -79,39 +78,42 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the XiphComment for this file. XiphComment implements the tag * interface, so this serves as the reimplementation of * TagLib::File::tag(). */ - virtual Ogg::XiphComment *tag() const; + Ogg::XiphComment *tag() const override; /*! * Implements the unified property interface -- export function. * This forwards directly to XiphComment::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified tag dictionary interface -- import function. * Like properties(), this is a forwarder to the file's XiphComment. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the Opus::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Save the file. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - virtual bool save(); + bool save() override; /*! * Returns whether or not the given \a stream can be opened as an Opus @@ -123,16 +125,14 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } - } -} + } // namespace Opus + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/opusproperties.h similarity index 78% rename from Frameworks/TagLib/taglib/taglib/ogg/opus/opusproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/opusproperties.h index 39b1b4e30..45523efc4 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/opus/opusproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/opusproperties.h @@ -30,7 +30,7 @@ #ifndef TAGLIB_OPUSPROPERTIES_H #define TAGLIB_OPUSPROPERTIES_H -#include <taglib/audioproperties.h> +#include "audioproperties.h" namespace TagLib { @@ -59,39 +59,22 @@ namespace TagLib { /*! * Destroys this Opus::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. @@ -99,12 +82,12 @@ namespace TagLib { * \note Always returns 48000, because Opus can decode any stream at a * sample rate of 8, 12, 16, 24, or 48 kHz, */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * The Opus codec supports decoding at multiple sample rates, there is no @@ -119,16 +102,14 @@ namespace TagLib { int opusVersion() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - void read(File *file); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } - } -} + } // namespace Opus + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/ownershipframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/ownershipframe.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/ownershipframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/ownershipframe.h index 8553de916..0d04744d7 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/ownershipframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/ownershipframe.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_OWNERSHIPFRAME_H #define TAGLIB_OWNERSHIPFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { @@ -51,21 +51,29 @@ namespace TagLib { explicit OwnershipFrame(String::Type encoding = String::Latin1); /*! - * Construct a ownership based on the data in \a data. + * Construct an ownership frame based on the data in \a data. */ explicit OwnershipFrame(const ByteVector &data); /*! * Destroys this OwnershipFrame instance. */ - virtual ~OwnershipFrame(); + ~OwnershipFrame() override; + + OwnershipFrame(const OwnershipFrame &) = delete; + OwnershipFrame &operator=(const OwnershipFrame &) = delete; /*! - * Returns the text of this popularimeter. + * Returns price paid, date purchased and seller. * * \see text() */ - virtual String toString() const; + String toString() const override; + + /*! + * Returns price paid, date purchased and seller. + */ + StringList toStringList() const override; /*! * Returns the date purchased. @@ -79,7 +87,7 @@ namespace TagLib { * * \see datePurchased() */ - void setDatePurchased(const String &datePurchased); + void setDatePurchased(const String &s); /*! * Returns the price paid. @@ -93,7 +101,7 @@ namespace TagLib { * * \see pricePaid() */ - void setPricePaid(const String &pricePaid); + void setPricePaid(const String &s); /*! * Returns the seller. @@ -131,21 +139,20 @@ namespace TagLib { protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! * The constructor used by the FrameFactory. */ OwnershipFrame(const ByteVector &data, Header *h); - OwnershipFrame(const OwnershipFrame &); - OwnershipFrame &operator=(const OwnershipFrame &); class OwnershipFramePrivate; - OwnershipFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<OwnershipFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/podcastframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/podcastframe.h similarity index 80% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/podcastframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/podcastframe.h index c8991711a..da151433c 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/podcastframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/podcastframe.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_PODCASTFRAME_H #define TAGLIB_PODCASTFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { @@ -50,33 +50,35 @@ namespace TagLib { /*! * Destroys this PodcastFrame instance. */ - virtual ~PodcastFrame(); + ~PodcastFrame() override; + + PodcastFrame(const PodcastFrame &) = delete; + PodcastFrame &operator=(const PodcastFrame &) = delete; /*! - * Returns a null string. + * Returns an empty string. */ - virtual String toString() const; + String toString() const override; - PropertyMap asProperties() const; + PropertyMap asProperties() const override; protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! * The constructor used by the FrameFactory. */ PodcastFrame(const ByteVector &data, Header *h); - PodcastFrame(const PodcastFrame &); - PodcastFrame &operator=(const PodcastFrame &); class PodcastFramePrivate; - PodcastFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PodcastFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/popularimeterframe.h similarity index 81% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/popularimeterframe.h index 9e0f8bcdf..e7a57822c 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/popularimeterframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/popularimeterframe.h @@ -1,4 +1,5 @@ /*************************************************************************** + * copyright : (C) 2008 by Lukas Lalinsky email : lalinsky@gmail.com ***************************************************************************/ @@ -26,8 +27,8 @@ #ifndef TAGLIB_POPULARIMETERFRAME_H #define TAGLIB_POPULARIMETERFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { @@ -58,14 +59,22 @@ namespace TagLib { /*! * Destroys this PopularimeterFrame instance. */ - virtual ~PopularimeterFrame(); + ~PopularimeterFrame() override; + + PopularimeterFrame(const PopularimeterFrame &) = delete; + PopularimeterFrame &operator=(const PopularimeterFrame &) = delete; /*! * Returns the text of this popularimeter. * * \see text() */ - virtual String toString() const; + String toString() const override; + + /*! + * Returns email, rating and counter. + */ + StringList toStringList() const override; /*! * Returns the email. @@ -79,7 +88,7 @@ namespace TagLib { * * \see email() */ - void setEmail(const String &email); + void setEmail(const String &s); /*! * Returns the rating. @@ -93,7 +102,7 @@ namespace TagLib { * * \see rating() */ - void setRating(int rating); + void setRating(int s); /*! * Returns the counter. @@ -107,26 +116,25 @@ namespace TagLib { * * \see counter() */ - void setCounter(unsigned int counter); + void setCounter(unsigned int s); protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! * The constructor used by the FrameFactory. */ PopularimeterFrame(const ByteVector &data, Header *h); - PopularimeterFrame(const PopularimeterFrame &); - PopularimeterFrame &operator=(const PopularimeterFrame &); class PopularimeterFramePrivate; - PopularimeterFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PopularimeterFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/privateframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/privateframe.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/privateframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/privateframe.h index b8bc9a481..ddc4a31bc 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/privateframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/privateframe.h @@ -27,14 +27,14 @@ #ifndef TAGLIB_PRIVATEFRAME_H #define TAGLIB_PRIVATEFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { namespace ID3v2 { - //! An implementation of ID3v2 privateframe + //! An implementation of ID3v2 private frame class TAGLIB_EXPORT PrivateFrame : public Frame { @@ -56,14 +56,17 @@ namespace TagLib { /*! * Destroys this private frame instance. */ - virtual ~PrivateFrame(); + ~PrivateFrame() override; + + PrivateFrame(const PrivateFrame &) = delete; + PrivateFrame &operator=(const PrivateFrame &) = delete; /*! * Returns the text of this private frame, currently just the owner. * * \see text() */ - virtual String toString() const; + String toString() const override; /*! * \return The owner of the private frame. @@ -72,7 +75,7 @@ namespace TagLib { String owner() const; /*! - * + * Returns the private data. */ ByteVector data() const; @@ -83,15 +86,15 @@ namespace TagLib { void setOwner(const String &s); /*! - * + * Sets the private \a data. */ - void setData(const ByteVector &v); + void setData(const ByteVector &data); protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! @@ -99,13 +102,11 @@ namespace TagLib { */ PrivateFrame(const ByteVector &data, Header *h); - PrivateFrame(const PrivateFrame &); - PrivateFrame &operator=(const PrivateFrame &); - class PrivateFramePrivate; - PrivateFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PrivateFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/relativevolumeframe.h similarity index 80% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/relativevolumeframe.h index 77b1f8534..f2b0aace5 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/relativevolumeframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/relativevolumeframe.h @@ -26,9 +26,9 @@ #ifndef TAGLIB_RELATIVEVOLUMEFRAME_H #define TAGLIB_RELATIVEVOLUMEFRAME_H -#include <taglib/toolkit/tlist.h> -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "tlist.h" +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { @@ -82,17 +82,12 @@ namespace TagLib { * The peak volume is described as a series of bits that is padded to fill * a block of bytes. These two values should always be updated in tandem. */ - struct PeakVolume - { - /*! - * Constructs an empty peak volume description. - */ - PeakVolume() : bitsRepresentingPeak(0) {} + struct PeakVolume { /*! * The number of bits (in the range of 0 to 255) used to describe the * peak volume. */ - unsigned char bitsRepresentingPeak; + unsigned char bitsRepresentingPeak { 0 }; /*! * The array of bits (represented as a series of bytes) used to describe * the peak volume. @@ -114,38 +109,23 @@ namespace TagLib { /*! * Destroys the RelativeVolumeFrame instance. */ - virtual ~RelativeVolumeFrame(); + ~RelativeVolumeFrame() override; + + RelativeVolumeFrame(const RelativeVolumeFrame &) = delete; + RelativeVolumeFrame &operator=(const RelativeVolumeFrame &) = delete; /*! * Returns the frame's identification. * * \see identification() */ - virtual String toString() const; + String toString() const override; /*! * Returns a list of channels with information currently in the frame. */ List<ChannelType> channels() const; - /*! - * \deprecated Always returns master volume. - */ - TAGLIB_DEPRECATED ChannelType channelType() const; - - /*! - * \deprecated This method no longer has any effect. - */ - TAGLIB_DEPRECATED void setChannelType(ChannelType t); - - /* - * There was a terrible API goof here, and while this can't be changed to - * the way it appears below for binary compatibility reasons, let's at - * least pretend that it looks clean. - */ - -#ifdef DOXYGEN - /*! * Returns the relative volume adjustment "index". As indicated by the * ID3v2 standard this is a 16-bit signed integer that reflects the @@ -219,31 +199,6 @@ namespace TagLib { */ void setPeakVolume(const PeakVolume &peak, ChannelType type = MasterVolume); -#else - - // BIC: Combine each of the following pairs of functions (or maybe just - // rework this junk altogether). - - short volumeAdjustmentIndex(ChannelType type) const; - short volumeAdjustmentIndex() const; - - void setVolumeAdjustmentIndex(short index, ChannelType type); - void setVolumeAdjustmentIndex(short index); - - float volumeAdjustment(ChannelType type) const; - float volumeAdjustment() const; - - void setVolumeAdjustment(float adjustment, ChannelType type); - void setVolumeAdjustment(float adjustment); - - PeakVolume peakVolume(ChannelType type) const; - PeakVolume peakVolume() const; - - void setPeakVolume(const PeakVolume &peak, ChannelType type); - void setPeakVolume(const PeakVolume &peak); - -#endif - /*! * Returns the identification for this frame. */ @@ -257,18 +212,17 @@ namespace TagLib { void setIdentification(const String &s); protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: RelativeVolumeFrame(const ByteVector &data, Header *h); - RelativeVolumeFrame(const RelativeVolumeFrame &); - RelativeVolumeFrame &operator=(const RelativeVolumeFrame &); class RelativeVolumeFramePrivate; - RelativeVolumeFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<RelativeVolumeFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/riff/rifffile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/rifffile.h similarity index 89% rename from Frameworks/TagLib/taglib/taglib/riff/rifffile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/rifffile.h index 48126f876..75fcc5af7 100644 --- a/Frameworks/TagLib/taglib/taglib/riff/rifffile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/rifffile.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_RIFFFILE_H #define TAGLIB_RIFFFILE_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tfile.h> +#include "tfile.h" +#include "taglib_export.h" namespace TagLib { @@ -35,7 +35,7 @@ namespace TagLib { namespace RIFF { - //! An RIFF file class with some useful methods specific to RIFF + //! A RIFF file class with some useful methods specific to RIFF /*! * This implements the generic TagLib::File API and additionally provides @@ -49,7 +49,10 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; protected: @@ -71,7 +74,7 @@ namespace TagLib { /*! * \return The offset within the file for the selected chunk number. */ - unsigned int chunkOffset(unsigned int i) const; + offset_t chunkOffset(unsigned int i) const; /*! * \return The size of the chunk data. @@ -116,7 +119,7 @@ namespace TagLib { * given name already exists it will be overwritten, otherwise it will be * created after the existing chunks. * - * \note If \a alwaysCreate is true, a new chunk is created regardless of + * \note If \a alwaysCreate is \c true, a new chunk is created regardless of * whether or not the chunk \a name exists. It should only be used for * "LIST" chunks. * @@ -140,12 +143,9 @@ namespace TagLib { void removeChunk(const ByteVector &name); private: - File(const File &); - File &operator=(const File &); - void read(); void writeChunk(const ByteVector &name, const ByteVector &data, - unsigned long offset, unsigned long replace = 0); + offset_t offset, unsigned long replace = 0); /*! * Update the global RIFF size based on the current internal structure. @@ -153,9 +153,10 @@ namespace TagLib { void updateGlobalSize(); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace RIFF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/s3m/s3mfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/s3mfile.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/s3m/s3mfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/s3mfile.h index 46abe2a72..9095d2f60 100644 --- a/Frameworks/TagLib/taglib/taglib/s3m/s3mfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/s3mfile.h @@ -26,17 +26,32 @@ #ifndef TAGLIB_S3MFILE_H #define TAGLIB_S3MFILE_H -#include <taglib/toolkit/tfile.h> -#include <taglib/audioproperties.h> -#include <taglib/taglib_export.h> -#include <taglib/mod/modfilebase.h> -#include <taglib/mod/modtag.h> -#include <taglib/s3m/s3mproperties.h> +#include "tfile.h" +#include "taglib_export.h" +#include "audioproperties.h" +#include "modfilebase.h" +#include "modtag.h" +#include "s3mproperties.h" namespace TagLib { + //! An implementation of ScreamTracker III metadata + + /*! + * This is an implementation of ScreamTracker III metadata. + */ + namespace S3M { + //! An implementation of TagLib::File with S3M specific methods + + /*! + * This implements and provides an interface for S3M files to the + * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing + * the abstract TagLib::File API as well as providing some additional + * information specific to S3M files. + */ + class TAGLIB_EXPORT File : public Mod::FileBase { public: /*! @@ -67,27 +82,30 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; - Mod::Tag *tag() const; + File(const File &) = delete; + File &operator=(const File &) = delete; + + Mod::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * Forwards to Mod::Tag::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified property interface -- import function. * Forwards to Mod::Tag::setProperties(). */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the S3M::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - S3M::Properties *audioProperties() const; + S3M::Properties *audioProperties() const override; /*! * Save the file. @@ -95,18 +113,16 @@ namespace TagLib { * * \note Saving ScreamTracker III tags is not supported. */ - bool save(); + bool save() override; private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace S3M +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/s3m/s3mproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/s3mproperties.h similarity index 61% rename from Frameworks/TagLib/taglib/taglib/s3m/s3mproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/s3mproperties.h index b8a3332b9..342ddb2bf 100644 --- a/Frameworks/TagLib/taglib/taglib/s3m/s3mproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/s3mproperties.h @@ -26,13 +26,12 @@ #ifndef TAGLIB_S3MPROPERTIES_H #define TAGLIB_S3MPROPERTIES_H -#include <taglib/toolkit/taglib.h> -#include <taglib/audioproperties.h> +#include "audioproperties.h" namespace TagLib { namespace S3M { + //! An implementation of audio property reading for S3M class TAGLIB_EXPORT Properties : public AudioProperties { - friend class File; public: /*! Flag bits. */ enum { @@ -46,49 +45,45 @@ namespace TagLib { }; Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); + ~Properties() override; - int length() const; - int lengthInSeconds() const; - int lengthInMilliseconds() const; - int bitrate() const; - int sampleRate() const; - int channels() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; - unsigned short lengthInPatterns() const; - bool stereo() const; - unsigned short sampleCount() const; - unsigned short patternCount() const; - unsigned short flags() const; - unsigned short trackerVersion() const; + int channels() const override; + + unsigned short lengthInPatterns() const; + bool stereo() const; + unsigned short sampleCount() const; + unsigned short patternCount() const; + unsigned short flags() const; + unsigned short trackerVersion() const; unsigned short fileFormatVersion() const; - unsigned char globalVolume() const; - unsigned char masterVolume() const; - unsigned char tempo() const; - unsigned char bpmSpeed() const; + unsigned char globalVolume() const; + unsigned char masterVolume() const; + unsigned char tempo() const; + unsigned char bpmSpeed() const; void setChannels(int channels); - void setLengthInPatterns (unsigned short lengthInPatterns); - void setStereo (bool stereo); - void setSampleCount (unsigned short sampleCount); - void setPatternCount (unsigned short patternCount); - void setFlags (unsigned short flags); - void setTrackerVersion (unsigned short trackerVersion); + void setLengthInPatterns(unsigned short lengthInPatterns); + void setStereo(bool stereo); + void setSampleCount(unsigned short sampleCount); + void setPatternCount(unsigned short patternCount); + void setFlags(unsigned short flags); + void setTrackerVersion(unsigned short trackerVersion); void setFileFormatVersion(unsigned short fileFormatVersion); - void setGlobalVolume (unsigned char globalVolume); - void setMasterVolume (unsigned char masterVolume); - void setTempo (unsigned char tempo); - void setBpmSpeed (unsigned char bpmSpeed); + void setGlobalVolume(unsigned char globalVolume); + void setMasterVolume(unsigned char masterVolume); + void setTempo(unsigned char tempo); + void setBpmSpeed(unsigned char bpmSpeed); private: - Properties(const Properties&); - Properties &operator=(const Properties&); - class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace S3M +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/speexfile.h similarity index 86% rename from Frameworks/TagLib/taglib/taglib/ogg/speex/speexfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/speexfile.h index 8d5f2ea41..284f2ca4b 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/speexfile.h @@ -30,10 +30,9 @@ #ifndef TAGLIB_SPEEXFILE_H #define TAGLIB_SPEEXFILE_H -#include <taglib/ogg/oggfile.h> -#include <taglib/ogg/xiphcomment.h> - -#include <taglib/ogg/speex/speexproperties.h> +#include "oggfile.h" +#include "xiphcomment.h" +#include "speexproperties.h" namespace TagLib { @@ -56,7 +55,7 @@ namespace TagLib { { public: /*! - * Constructs a Speex file from \a file. If \a readProperties is true the + * Constructs a Speex file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. @@ -65,7 +64,7 @@ namespace TagLib { Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs a Speex file from \a stream. If \a readProperties is true the + * Constructs a Speex file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is @@ -79,39 +78,42 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the XiphComment for this file. XiphComment implements the tag * interface, so this serves as the reimplementation of * TagLib::File::tag(). */ - virtual Ogg::XiphComment *tag() const; + Ogg::XiphComment *tag() const override; /*! * Implements the unified property interface -- export function. * This forwards directly to XiphComment::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified tag dictionary interface -- import function. * Like properties(), this is a forwarder to the file's XiphComment. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the Speex::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Save the file. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - virtual bool save(); + bool save() override; /*! * Returns whether or not the given \a stream can be opened as a Speex @@ -123,16 +125,14 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } - } -} + } // namespace Speex + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/speexproperties.h similarity index 77% rename from Frameworks/TagLib/taglib/taglib/ogg/speex/speexproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/speexproperties.h index 47ff5030a..1911f986b 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/speex/speexproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/speexproperties.h @@ -30,7 +30,7 @@ #ifndef TAGLIB_SPEEXPROPERTIES_H #define TAGLIB_SPEEXPROPERTIES_H -#include <taglib/audioproperties.h> +#include "audioproperties.h" namespace TagLib { @@ -59,39 +59,22 @@ namespace TagLib { /*! * Destroys this Speex::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the nominal bit rate as read from the Speex header in kb/s. @@ -101,12 +84,12 @@ namespace TagLib { /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the Speex version, currently "0" (as specified by the spec). @@ -114,16 +97,14 @@ namespace TagLib { int speexVersion() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - void read(File *file); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } - } -} + } // namespace Speex + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/synchronizedlyricsframe.h similarity index 90% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/synchronizedlyricsframe.h index bd52cb433..f231c1c11 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/synchronizedlyricsframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/synchronizedlyricsframe.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_SYNCHRONIZEDLYRICSFRAME_H #define TAGLIB_SYNCHRONIZEDLYRICSFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/toolkit/tlist.h> +#include "tlist.h" +#include "id3v2frame.h" namespace TagLib { @@ -85,7 +85,8 @@ namespace TagLib { * Single entry of time stamp and lyrics text. */ struct SynchedText { - SynchedText(unsigned int ms, String str) : time(ms), text(str) {} + SynchedText(unsigned int ms, const String &str) : + time(ms), text(str) { } unsigned int time; String text; }; @@ -93,7 +94,7 @@ namespace TagLib { /*! * List of synchronized lyrics. */ - typedef TagLib::List<SynchedText> SynchedTextList; + using SynchedTextList = TagLib::List<SynchedText>; /*! * Construct an empty synchronized lyrics frame that will use the text @@ -109,14 +110,17 @@ namespace TagLib { /*! * Destroys this SynchronizedLyricsFrame instance. */ - virtual ~SynchronizedLyricsFrame(); + ~SynchronizedLyricsFrame() override; + + SynchronizedLyricsFrame(const SynchronizedLyricsFrame &) = delete; + SynchronizedLyricsFrame &operator=(const SynchronizedLyricsFrame &) = delete; /*! * Returns the description of this synchronized lyrics frame. * * \see description() */ - virtual String toString() const; + String toString() const override; /*! * Returns the text encoding that will be used in rendering this frame. @@ -174,11 +178,11 @@ namespace TagLib { /*! * Set the language using the 3 byte language code from * <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a> to - * \a languageCode. + * \a languageEncoding. * * \see language() */ - void setLanguage(const ByteVector &languageCode); + void setLanguage(const ByteVector &languageEncoding); /*! * Set the timestamp format. @@ -211,21 +215,20 @@ namespace TagLib { protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! * The constructor used by the FrameFactory. */ SynchronizedLyricsFrame(const ByteVector &data, Header *h); - SynchronizedLyricsFrame(const SynchronizedLyricsFrame &); - SynchronizedLyricsFrame &operator=(const SynchronizedLyricsFrame &); class SynchronizedLyricsFramePrivate; - SynchronizedLyricsFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<SynchronizedLyricsFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/tableofcontentsframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tableofcontentsframe.h similarity index 84% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/tableofcontentsframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tableofcontentsframe.h index 3fdfb70f7..06effb7ba 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/tableofcontentsframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tableofcontentsframe.h @@ -26,10 +26,9 @@ #ifndef TAGLIB_TABLEOFCONTENTSFRAME #define TAGLIB_TABLEOFCONTENTSFRAME -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/mpeg/id3v2/id3v2frame.h> - -#include <taglib/toolkit/tbytevectorlist.h> +#include "tbytevectorlist.h" +#include "id3v2tag.h" +#include "id3v2frame.h" namespace TagLib { @@ -65,18 +64,21 @@ namespace TagLib { /*! * Destroys the frame. */ - ~TableOfContentsFrame(); + ~TableOfContentsFrame() override; + + TableOfContentsFrame(const TableOfContentsFrame &) = delete; + TableOfContentsFrame &operator=(const TableOfContentsFrame &) = delete; /*! - * Returns the elementID of the frame. Element ID - * is a null terminated string, however it's not human-readable. + * Returns the elementID of the frame. + * Element ID is not intended to be human readable. * * \see setElementID() */ ByteVector elementID() const; /*! - * Returns true, if the frame is top-level (doesn't have + * Returns \c true, if the frame is top-level (doesn't have * any parent CTOC frame). * * \see setIsTopLevel() @@ -84,7 +86,7 @@ namespace TagLib { bool isTopLevel() const; /*! - * Returns true, if the child elements list entries + * Returns \c true, if the child elements list entries * are ordered. * * \see setIsOrdered() @@ -92,8 +94,8 @@ namespace TagLib { bool isOrdered() const; /*! - * Returns count of child elements of the frame. It always - * corresponds to size of child elements list. + * Returns the count of child elements of the frame. It always + * corresponds to the size of the child elements list. * * \see childElements() */ @@ -107,8 +109,7 @@ namespace TagLib { ByteVectorList childElements() const; /*! - * Sets the elementID of the frame to \a eID. If \a eID isn't - * null terminated, a null char is appended automatically. + * Sets the elementID of the frame to \a eID. * * \see elementID() */ @@ -138,7 +139,7 @@ namespace TagLib { void setChildElements(const ByteVectorList &l); /*! - * Adds \a cE to list of child elements of the frame. + * Adds \a cE to the list of child elements of the frame. * * \see childElements() */ @@ -152,7 +153,7 @@ namespace TagLib { void removeChildElement(const ByteVector &cE); /*! - * Returns a reference to the frame list map. This is an FrameListMap of + * Returns a reference to the frame list map. This is a FrameListMap of * all of the frames embedded in the CTOC frame. * * This is the most convenient structure for accessing the CTOC frame's @@ -168,11 +169,11 @@ namespace TagLib { const FrameListMap &embeddedFrameListMap() const; /*! - * Returns a reference to the embedded frame list. This is an FrameList + * Returns a reference to the embedded frame list. This is a FrameList * of all of the frames embedded in the CTOC frame in the order that they * were parsed. * - * This can be useful if for example you want iterate over the CTOC frame's + * This can be useful if for example you want to iterate over the CTOC frame's * embedded frames in the order that they occur in the CTOC frame. * * \warning You should not modify this data structure directly, instead @@ -203,8 +204,8 @@ namespace TagLib { void addEmbeddedFrame(Frame *frame); /*! - * Remove an embedded frame from the CTOC frame. If \a del is true the frame's - * memory will be freed; if it is false, it must be deleted by the user. + * Remove an embedded frame from the CTOC frame. If \a del is \c true the frame's + * memory will be freed; if it is \c false, it must be deleted by the user. * * \note Using this method will invalidate any pointers on the list * returned by embeddedFrameList() @@ -220,9 +221,9 @@ namespace TagLib { */ void removeEmbeddedFrames(const ByteVector &id); - virtual String toString() const; + String toString() const override; - PropertyMap asProperties() const; + PropertyMap asProperties() const override; /*! * CTOC frames each have a unique element ID. This searches for a CTOC @@ -236,25 +237,24 @@ namespace TagLib { /*! * CTOC frames each contain a flag that indicates, if CTOC frame is top-level (there isn't * any frame, which contains this frame in its child elements list). Only a single frame - * within tag can be top-level. This searches for a top-level CTOC frame. + * within the tag can be top-level. This searches for a top-level CTOC frame. * * \see isTopLevel() */ static TableOfContentsFrame *findTopLevel(const Tag *tag); protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: TableOfContentsFrame(const ID3v2::Header *tagHeader, const ByteVector &data, Header *h); - TableOfContentsFrame(const TableOfContentsFrame &); - TableOfContentsFrame &operator=(const TableOfContentsFrame &); class TableOfContentsFramePrivate; - TableOfContentsFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TableOfContentsFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/tag.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tag.h similarity index 55% rename from Frameworks/TagLib/taglib/taglib/tag.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tag.h index ed2838915..cfd159179 100644 --- a/Frameworks/TagLib/taglib/taglib/tag.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tag.h @@ -26,23 +26,25 @@ #ifndef TAGLIB_TAG_H #define TAGLIB_TAG_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tstring.h> +#include "taglib_export.h" +#include "tstring.h" +#include "tlist.h" +#include "tvariant.h" namespace TagLib { - //! A simple, generic interface to common audio meta data fields + class PropertyMap; + + //! A simple, generic interface to common audio metadata fields. /*! - * This is an attempt to abstract away the difference in the meta data formats + * This is an attempt to abstract away the difference in the metadata formats * of various audio codecs and tagging schemes. As such it is generally a * subset of what is available in the specific formats but should be suitable * for most applications. This is meant to compliment the generic APIs found * in TagLib::AudioProperties, TagLib::File and TagLib::FileRef. */ - class PropertyMap; - class TAGLIB_EXPORT Tag { public: @@ -52,76 +54,101 @@ namespace TagLib { */ virtual ~Tag(); + Tag(const Tag &) = delete; + Tag &operator=(const Tag &) = delete; + /*! * Exports the tags of the file as dictionary mapping (human readable) tag * names (Strings) to StringLists of tag values. * The default implementation in this class considers only the usual built-in * tags (artist, album, ...) and only one value per key. */ - PropertyMap properties() const; + virtual PropertyMap properties() const; /*! * Removes unsupported properties, or a subset of them, from the tag. * The parameter \a properties must contain only entries from * properties().unsupportedData(). - * BIC: Will become virtual in future releases. Currently the non-virtual - * standard implementation of TagLib::Tag does nothing, since there are - * no unsupported elements. */ - void removeUnsupportedProperties(const StringList& properties); + virtual void removeUnsupportedProperties(const StringList& properties); /*! - * Sets the tags of this File to those specified in \a properties. This default + * Sets the tags of this File to those specified in \a origProps. This default * implementation sets only the tags for which setter methods exist in this class * (artist, album, ...), and only one value per key; the rest will be contained * in the returned PropertyMap. */ - PropertyMap setProperties(const PropertyMap &properties); + virtual PropertyMap setProperties(const PropertyMap &origProps); + + /*! + * Get the keys of complex properties, i.e. properties which cannot be + * represented simply by a string. + * Because such properties might be expensive to fetch, there are separate + * operations to get the available keys - which is expected to be cheap - + * and getting and setting the property values. + * The default implementation returns only an empty list. Reimplementations + * should provide "PICTURE" if embedded cover art is present, and optionally + * support other properties. + */ + virtual StringList complexPropertyKeys() const; + + /*! + * Get the complex properties for a given \a key. + * In order to be flexible for different metadata formats, the properties + * are represented as variant maps. Despite this dynamic nature, some + * degree of standardization should be achieved between formats: + * + * - PICTURE + * - data: ByteVector with picture data + * - description: String with description + * - pictureType: String with type as specified for ID3v2, + * e.g. "Front Cover", "Back Cover", "Band" + * - mimeType: String with image format, e.g. "image/jpeg" + * - optionally more information found in the tag, such as + * "width", "height", "numColors", "colorDepth" int values + * in FLAC pictures + * - GENERALOBJECT + * - data: ByteVector with object data + * - description: String with description + * - fileName: String with file name + * - mimeType: String with MIME type + * - this is currently only implemented for ID3v2 GEOB frames + */ + virtual List<VariantMap> complexProperties(const String &key) const; + + /*! + * Set all complex properties for a given \a key using variant maps as + * \a value with the same format as returned by complexProperties(). + * An empty list as \a value removes all complex properties for \a key. + */ + virtual bool setComplexProperties(const String &key, const List<VariantMap> &value); /*! * Returns the track name; if no track name is present in the tag - * String::null will be returned. + * an empty string will be returned. */ virtual String title() const = 0; - /*! - * Returns the album artist name; if no artist name is present in the tag - * String::null will be returned. - */ - virtual String albumartist() const = 0; - /*! * Returns the artist name; if no artist name is present in the tag - * String::null will be returned. + * an empty string will be returned. */ virtual String artist() const = 0; - /*! - * Returns the composer name; if no composer name is present in the tag - * String::null will be returned. - */ - virtual String composer() const = 0; - /*! * Returns the album name; if no album name is present in the tag - * String::null will be returned. + * an empty string will be returned. */ virtual String album() const = 0; - /*! - * Returns the unsynced lyrics; if no unsynced lyrics are present - * in the tag String::null will be returned. - */ - virtual String unsyncedlyrics() const = 0; - /*! * Returns the track comment; if no comment is present in the tag - * String::null will be returned. + * an empty string will be returned. */ virtual String comment() const = 0; /*! - * Returns the genre name; if no genre is present in the tag String::null + * Returns the genre name; if no genre is present in the tag an empty string * will be returned. */ virtual String genre() const = 0; @@ -138,91 +165,31 @@ namespace TagLib { virtual unsigned int track() const = 0; /*! - * Returns the disc number; if there is no track number set, this will - * return 0. - */ - virtual unsigned int disc() const = 0; - - /*! - * Returns the embedded cuesheet; if there is no cuesheet set, this - * will return an empty string. - */ - virtual String cuesheet() const = 0; - - /*! - * Returns the ReplayGain album gain; if there is no gain level set, this - * will return 0. - */ - virtual float rgAlbumGain() const = 0; - - /*! - * Returns the ReplayGain album peak; if there is no gain level set, this - * will return 0. - */ - virtual float rgAlbumPeak() const = 0; - - /*! - * Returns the ReplayGain track gain; if there is no gain level set, this - * will return 0. - */ - virtual float rgTrackGain() const = 0; - - /*! - * Returns the ReplayGain track peak; if there is no gain level set, this - * will return 0. - */ - virtual float rgTrackPeak() const = 0; - - /*! - * Returns the Apple SoundCheck tag; if there is tag set, this will - * return empty. - */ - virtual String soundcheck() const = 0; - - /*! - * Sets the title to \a s. If \a s is String::null then this value will be + * Sets the title to \a s. If \a s is an empty string then this value will be * cleared. */ virtual void setTitle(const String &s) = 0; /*! - * Sets the album artist to \a s. If \a s is String::null then this value will be - * cleared. - */ - virtual void setAlbumArtist(const String &s) = 0; - - /*! - * Sets the artist to \a s. If \a s is String::null then this value will be + * Sets the artist to \a s. If \a s is an empty string then this value will be * cleared. */ virtual void setArtist(const String &s) = 0; /*! - * Sets the composer to \a s. If \a s is String::null then this value will be - * cleared. - */ - virtual void setComposer(const String &s) = 0; - - /*! - * Sets the album to \a s. If \a s is String::null then this value will be + * Sets the album to \a s. If \a s is an empty string then this value will be * cleared. */ virtual void setAlbum(const String &s) = 0; /*! - * Sets the unsynced lyrics to \a s. If \a s is String::null then this - * value will be cleared. - */ - virtual void setUnsyncedlyrics(const String &s) = 0; - - /*! - * Sets the comment to \a s. If \a s is String::null then this value will be + * Sets the comment to \a s. If \a s is an empty string then this value will be * cleared. */ virtual void setComment(const String &s) = 0; /*! - * Sets the genre to \a s. If \a s is String::null then this value will be + * Sets the genre to \a s. If \a s is an empty string then this value will be * cleared. For tag formats that use a fixed set of genres, the appropriate * value will be selected based on a string comparison. A list of available * genres for those formats should be available in that type's @@ -241,42 +208,7 @@ namespace TagLib { virtual void setTrack(unsigned int i) = 0; /*! - * Sets the disc to \a i. If \a s is 0 then this value will be cleared. - */ - virtual void setDisc(unsigned int i) = 0; - - /*! - * Sets the embedded cuesheet to \a s. If \a s is empty then this - * value will be cleared. - */ - virtual void setCuesheet(const String &s) = 0; - - /*! - * Sets the ReplayGain album gain to \a f. If \a f is 0 then this value will - * be cleared. - */ - virtual void setRGAlbumGain(float i) = 0; - - /*! - * Sets the ReplayGain album peak to \a f. If \a f is 0 then this value will - * be cleared. - */ - virtual void setRGAlbumPeak(float i) = 0; - - /*! - * Sets the ReplayGain track gain to \a f. If \a f is 0 then this value will - * be cleared. - */ - virtual void setRGTrackGain(float i) = 0; - - /*! - * Sets the ReplayGain track peak to \a f. If \a f is 0 then this value will - * be cleared. - */ - virtual void setRGTrackPeak(float i) = 0; - - /*! - * Returns true if the tag does not contain any data. This should be + * Returns \c true if the tag does not contain any data. This should be * reimplemented in subclasses that provide more than the basic tagging * abilities in this class. */ @@ -285,16 +217,24 @@ namespace TagLib { /*! * Copies the generic data from one tag to another. * - * \note This will no affect any of the lower level details of the tag. For + * \note This will not affect any of the lower level details of the tag. For * instance if any of the tag type specific data (maybe a URL for a band) is * set, this will not modify or copy that. This just copies using the API * in this class. * - * If \a overwrite is true then the values will be unconditionally copied. - * If false only empty values will be overwritten. + * If \a overwrite is \c true then the values will be unconditionally copied. + * If \c false only empty values will be overwritten. */ static void duplicate(const Tag *source, Tag *target, bool overwrite = true); + /*! + * Join the \a values of a tag to a single string separated by " / ". + * If the tag implementation can have multiple values for a basic tag + * (e.g. artist), they can be combined to a single string for the basic + * tag getters (e.g. artist()). + */ + static String joinTagValues(const StringList &values); + protected: /*! * Construct a Tag. This is protected since tags should only be instantiated @@ -303,12 +243,10 @@ namespace TagLib { Tag(); private: - Tag(const Tag &); - Tag &operator=(const Tag &); - class TagPrivate; - TagPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TagPrivate> d; }; -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/taglib.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/taglib.h similarity index 59% rename from Frameworks/TagLib/taglib/taglib/toolkit/taglib.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/taglib.h index ffce61f7c..cd1635350 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/taglib.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/taglib.h @@ -26,17 +26,9 @@ #ifndef TAGLIB_H #define TAGLIB_H -#include "taglib_config.h" - -#define TAGLIB_MAJOR_VERSION 1 -#define TAGLIB_MINOR_VERSION 12 -#define TAGLIB_PATCH_VERSION 0 - -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 1)) || defined(__clang__) -#define TAGLIB_IGNORE_MISSING_DESTRUCTOR _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") -#else -#define TAGLIB_IGNORE_MISSING_DESTRUCTOR -#endif +#define TAGLIB_MAJOR_VERSION 2 +#define TAGLIB_MINOR_VERSION 0 +#define TAGLIB_PATCH_VERSION 2 #if (defined(_MSC_VER) && _MSC_VER >= 1600) #define TAGLIB_CONSTRUCT_BITSET(x) static_cast<unsigned long long>(x) @@ -44,17 +36,11 @@ #define TAGLIB_CONSTRUCT_BITSET(x) static_cast<unsigned long>(x) #endif -#if __cplusplus >= 201402 #define TAGLIB_DEPRECATED [[deprecated]] -#elif defined(__GNUC__) || defined(__clang__) -#define TAGLIB_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) -#define TAGLIB_DEPRECATED __declspec(deprecated) -#else -#define TAGLIB_DEPRECATED -#endif -#include <string> +#ifndef _WIN32 +#include <sys/types.h> +#endif //! A namespace for all TagLib related classes and functions @@ -70,34 +56,28 @@ namespace TagLib { class String; - // These integer types are deprecated. Do not use them. + // Offset or length type for I/O streams. + // In Win32, always 64bit. Otherwise, equivalent to off_t. +#ifdef _WIN32 + using offset_t = long long; +#elif !defined(__illumos__) + using offset_t = off_t; +#endif - typedef wchar_t wchar; // Assumed to be sufficient to store a UTF-16 char. - typedef unsigned char uchar; - typedef unsigned short ushort; - typedef unsigned int uint; - typedef unsigned long ulong; - typedef unsigned long long ulonglong; - - /*! - * Unfortunately std::wstring isn't defined on some systems, (i.e. GCC < 3) - * so I'm providing something here that should be constant. - */ - typedef std::basic_string<wchar_t> wstring; -} +} // namespace TagLib /*! * \mainpage TagLib * * \section intro Introduction * - * TagLib is a library for reading and editing audio meta data, commonly know as \e tags. + * TagLib is a library for reading and editing audio metadata, commonly known as \e tags. * * Features: - * - A clean, high level, C++ API to handling audio meta data. + * - A clean, high level, C++ API for handling audio metadata. * - Format specific APIs for advanced API users. * - ID3v1, ID3v2, APE, FLAC, Xiph, iTunes-style MP4 and WMA tag formats. - * - MP3, MPC, FLAC, MP4, ASF, AIFF, WAV, TrueAudio, WavPack, Ogg FLAC, Ogg Vorbis, Speex and Opus file formats. + * - MP3, MPC, FLAC, MP4, ASF, AIFF, WAV, DSF, DFF, TrueAudio, WavPack, Ogg FLAC, Ogg Vorbis, Speex and Opus file formats. * - Basic audio file properties such as length, sample rate, etc. * - Long term binary and source compatibility. * - Extensible design, notably the ability to add other formats or extend current formats as a library user. @@ -111,12 +91,12 @@ namespace TagLib { * TagLib originally was written to provide an updated and improved ID3v2 implementation in C++ for use * in a variety of Open Source projects. Since development began in 2002 and the 1.0 release in 2004 * it has expanded to cover a wide variety of tag and file formats and is used in a wide variety of - * Open Source and proprietary applications. It now supports a variety of UNIXes, including Apple's OS - * X, as well as Microsoft Windows. + * Open Source and proprietary applications. It now supports a variety of UNIXes, including Apple's + * macOS, as well as Microsoft Windows. * * \section commercial Usage in Commercial Applications * - * TagLib's licenses \e do allow usage within propriety (\e closed) applications, however TagLib is \e not + * TagLib's licenses \e do allow usage within proprietary (\e closed) applications, however TagLib is \e not * public domain. Please note the requirements of the LGPL or MPL, and adhere to at least one of them. * In simple terms, you must at a minimum note your usage of TagLib, note the licensing terms of TagLib and * if you make changes to TagLib publish them. Please review the licenses above before using TagLib in your @@ -128,28 +108,33 @@ namespace TagLib { * Please see the <a href="http://taglib.org/">TagLib website</a> for the latest * downloads. * - * TagLib can be built using the CMake build system. TagLib installs a taglib-config and pkg-config file to + * TagLib can be built using the CMake build system. TagLib installs a CMake + * configuration and a taglib-config and pkg-config file to * make it easier to integrate into various build systems. Note that TagLib's include install directory \e must * be included in the header include path. Simply adding <taglib/tag.h> will \e not work. * + * Detailed instructions about building TagLib itself and building with TagLib + * can be found in <a href="https://github.com/taglib/taglib/blob/master/INSTALL.md">INSTALL.md</a> + * * \section start Getting Started * * TagLib provides both simple, abstract APIs which make it possible to ignore the differences between tagging * formats and format specific APIs which allow programmers to work with the features of specific tagging - * schemes. There is a similar abstraction mechanism for AudioProperties. + * schemes. There is a similar abstraction mechanism for \link TagLib::AudioProperties AudioProperties \endlink. * - * The best place to start is with the <b>Class Hierarchy</b> linked at the top of the page. The File and - * AudioProperties classes and their subclasses are the core of TagLib. The FileRef class is also a convenient - * way for using a value-based handle. + * The best place to start is with the <b>Class Hierarchy</b> linked at the top of the page. + * The \link TagLib::File File \endlink and \link TagLib::AudioProperties AudioProperties \endlink + * classes and their subclasses are the core of TagLib. The \link TagLib::FileRef FileRef \endlink + * class is also a convenient way for using a value-based handle. * - * \note When working with FileRef please consider that it has only the most basic (extension-based) file - * type resolution. Please see its documentation on how to plug in more advanced file type resolution. (Such - * resolution may be part of later TagLib releases by default.) + * \note When working with \link TagLib::FileRef FileRef \endlink please consider that it has only + * the most basic (extension-based) file type resolution. Please see its documentation on how to + * plug in more advanced file type resolution. + * (Such resolution may be part of later TagLib releases by default.) * * Here's a very simple example with TagLib: * - * \code - * + * \code {.cpp} * TagLib::FileRef f("Latex Solar Beef.mp3"); * TagLib::String artist = f.tag()->artist(); // artist == "Frank Zappa" * @@ -161,10 +146,63 @@ namespace TagLib { * * g.tag()->setTrack(1); * g.save(); - * * \endcode * - * More examples can be found in the \e examples directory of the source distribution. + * If the basic tag interface, which provides methods like + * \link TagLib::Tag::title() title() \endlink, + * \link TagLib::Tag::artist() artist() \endlink, + * \link TagLib::Tag::album() album() \endlink, + * \link TagLib::Tag::comment() comment() \endlink, + * \link TagLib::Tag::genre() genre() \endlink, + * \link TagLib::Tag::year() year() \endlink, + * \link TagLib::Tag::track() track() \endlink + * and the corresponding setters, is not enough, the + * \link TagLib::PropertyMap PropertyMap \endlink interface + * offers a flexible abstraction for textual metadata. + * See \ref p_propertymapping for details about the mapping of tags to properties. + * + * \code {.cpp} + * TagLib::PropertyMap props = f.properties(); + * TagLib::StringList artists = props["ARTIST"]; + * artists.append("Jim Pons"); + * props["ARTIST"] = artists; + * f.setProperties(props); + * f.save(); + * \endcode + * + * An additional \link TagLib::FileRef::complexProperties() abstraction \endlink is + * provided to handle complex (i.e. non textual) properties. + * + * \code {.cpp} + * TagLib::ByteVector data = ...; + * f.setComplexProperties("PICTURE", { + * { + * {"data", data}, + * {"pictureType", "Front Cover"}, + * {"mimeType", "image/jpeg"} + * } + * }); + * \endcode + * + * Finally, for full control, there are specific types for all supported metadata formats. + * + * \code {.cpp} + * if(auto file = dynamic_cast<TagLib::MPEG::File *>(f.file())) { + * if(auto id3v2Tag = file->ID3v2Tag()) { + * auto frames = id3v2Tag->frameList("SYLT"); + * if(!frames.isEmpty()) { + * if(auto syltFrame = dynamic_cast<TagLib::ID3v2::SynchronizedLyricsFrame *>( + * frames.front())) { + * auto text = syltFrame->synchedText(); + * // ... + * } + * } + * } + * } + * \endcode + * + * More examples can be found in the <a href="https://github.com/taglib/taglib/tree/master/examples"> + * examples</a> directory of the source distribution. * * \section Contact * diff --git a/Frameworks/TagLib/taglib/taglib/taglib_export.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/taglib_export.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/taglib_export.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/taglib_export.h index 737ae6442..7a96cc949 100644 --- a/Frameworks/TagLib/taglib/taglib/taglib_export.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/taglib_export.h @@ -40,4 +40,19 @@ #define TAGLIB_EXPORT #endif +#if defined _MSC_VER && !defined TAGLIB_STATIC +/*! + * Suppress MSVC C4251 warning for next statement. + * Unfortunately, MSVC exports everything (not only public members) when + * __declspec(dllexport) is set at the class level via TAGLIB_EXPORT, which + * leads to many "needs to have dll-interface to be used by clients" C4251 + * warnings issued by MSVC, because the std::unique_ptr pimpls are + * exported too. This macro can be used before private STL fields to suppress + * such warnings. +*/ +#define TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE _Pragma("warning(suppress: 4251)") +#else +#define TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE +#endif + #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevector.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevector.h similarity index 71% rename from Frameworks/TagLib/taglib/taglib/toolkit/tbytevector.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevector.h index 0e6073bcb..abf882101 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevector.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevector.h @@ -26,30 +26,30 @@ #ifndef TAGLIB_BYTEVECTOR_H #define TAGLIB_BYTEVECTOR_H -#include <taglib/toolkit/taglib.h> -#include <taglib/taglib_export.h> - +#include <memory> #include <vector> -#include <iostream> +#include <iosfwd> + +#include "taglib_export.h" namespace TagLib { //! A byte vector /*! - * This class provides a byte vector with some methods that are useful for - * tagging purposes. Many of the search functions are tailored to what is - * useful for finding tag related patterns in a data array. + * This class provides an implicitly shared byte vector with some methods that + * are useful for tagging purposes. Many of the search functions are tailored + * to what is useful for finding tag related patterns in a data array. */ class TAGLIB_EXPORT ByteVector { public: #ifndef DO_NOT_DOCUMENT - typedef std::vector<char>::iterator Iterator; - typedef std::vector<char>::const_iterator ConstIterator; - typedef std::vector<char>::reverse_iterator ReverseIterator; - typedef std::vector<char>::const_reverse_iterator ConstReverseIterator; + using Iterator = std::vector<char>::iterator; + using ConstIterator = std::vector<char>::const_iterator; + using ReverseIterator = std::vector<char>::reverse_iterator; + using ConstReverseIterator = std::vector<char>::const_reverse_iterator; #endif /*! @@ -95,12 +95,12 @@ namespace TagLib { /*! * Destroys this ByteVector instance. */ - virtual ~ByteVector(); + ~ByteVector(); /*! - * Sets the data for the byte array using the first \a length bytes of \a data + * Sets the data for the byte array using the first \a length bytes of \a s */ - ByteVector &setData(const char *data, unsigned int length); + ByteVector &setData(const char *s, unsigned int length); /*! * Sets the data for the byte array copies \a data up to the first null @@ -170,12 +170,12 @@ namespace TagLib { unsigned int patternOffset = 0, unsigned int patternLength = 0xffffffff) const; /*! - * Returns true if the vector starts with \a pattern. + * Returns \c true if the vector starts with \a pattern. */ bool startsWith(const ByteVector &pattern) const; /*! - * Returns true if the vector ends with \a pattern. + * Returns \c true if the vector ends with \a pattern. */ bool endsWith(const ByteVector &pattern) const; @@ -240,6 +240,11 @@ namespace TagLib { */ ConstIterator begin() const; + /*! + * Returns a ConstIterator that points to the front of the vector. + */ + ConstIterator cbegin() const; + /*! * Returns an Iterator that points to the back of the vector. */ @@ -250,6 +255,11 @@ namespace TagLib { */ ConstIterator end() const; + /*! + * Returns a ConstIterator that points to the back of the vector. + */ + ConstIterator cend() const; + /*! * Returns a ReverseIterator that points to the front of the vector. */ @@ -271,40 +281,18 @@ namespace TagLib { ConstReverseIterator rend() const; /*! - * Returns true if the vector is null. - * - * \note A vector may be empty without being null. So do not use this - * method to check if the vector is empty. - * - * \see isEmpty() - * - * \deprecated - */ - // BIC: remove - TAGLIB_DEPRECATED bool isNull() const; - - /*! - * Returns true if the ByteVector is empty. + * Returns \c true if the ByteVector is empty. * * \see size() - * \see isNull() */ bool isEmpty() const; - /*! - * Returns a CRC checksum of the byte vector's data. - * - * \note This uses an uncommon variant of CRC32 specializes in Ogg. - */ - // BIC: Remove or make generic. - unsigned int checksum() const; - /*! * Converts the first 4 bytes of the vector to an unsigned integer. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $00 $00 $01 == 0x00000001 == 1, if false, $01 00 00 00 == + * \c true then $00 $00 $00 $01 == 0x00000001 == 1, if \c false, $01 00 00 00 == * 0x01000000 == 1. * * \see fromUInt() @@ -314,9 +302,9 @@ namespace TagLib { /*! * Converts the 4 bytes at \a offset of the vector to an unsigned integer. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $00 $00 $01 == 0x00000001 == 1, if false, $01 00 00 00 == + * \c true then $00 $00 $00 $01 == 0x00000001 == 1, if \c false, $01 00 00 00 == * 0x01000000 == 1. * * \see fromUInt() @@ -327,9 +315,9 @@ namespace TagLib { * Converts the \a length bytes at \a offset of the vector to an unsigned * integer. If \a length is larger than 4, the excess is ignored. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $00 $00 $01 == 0x00000001 == 1, if false, $01 00 00 00 == + * \c true then $00 $00 $00 $01 == 0x00000001 == 1, if \c false, $01 00 00 00 == * 0x01000000 == 1. * * \see fromUInt() @@ -340,9 +328,9 @@ namespace TagLib { /*! * Converts the first 2 bytes of the vector to a (signed) short. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $01 == 0x0001 == 1, if false, $01 00 == 0x01000000 == 1. + * \c true then $00 $01 == 0x0001 == 1, if \c false, $01 00 == 0x01000000 == 1. * * \see fromShort() */ @@ -351,105 +339,137 @@ namespace TagLib { /*! * Converts the 2 bytes at \a offset of the vector to a (signed) short. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $01 == 0x0001 == 1, if false, $01 00 == 0x01000000 == 1. + * \c true then $00 $01 == 0x0001 == 1, if \c false, $01 00 == 0x01000000 == 1. * * \see fromShort() */ short toShort(unsigned int offset, bool mostSignificantByteFirst = true) const; /*! - * Converts the first 2 bytes of the vector to a unsigned short. + * Converts the first 2 bytes of the vector to an unsigned short. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $01 == 0x0001 == 1, if false, $01 00 == 0x01000000 == 1. + * \c true then $00 $01 == 0x0001 == 1, if \c false, $01 00 == 0x01000000 == 1. * - * \see fromShort() + * \see fromUShort() */ unsigned short toUShort(bool mostSignificantByteFirst = true) const; /*! - * Converts the 2 bytes at \a offset of the vector to a unsigned short. + * Converts the 2 bytes at \a offset of the vector to an unsigned short. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 $01 == 0x0001 == 1, if false, $01 00 == 0x01000000 == 1. + * \c true then $00 $01 == 0x0001 == 1, if \c false, $01 00 == 0x01000000 == 1. * - * \see fromShort() + * \see fromUShort() */ unsigned short toUShort(unsigned int offset, bool mostSignificantByteFirst = true) const; /*! * Converts the first 8 bytes of the vector to a (signed) long long. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 00 00 00 00 00 00 01 == 0x0000000000000001 == 1, - * if false, $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. + * \c true then $00 00 00 00 00 00 00 01 == 0x0000000000000001 == 1, + * if \c false, $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. * - * \see fromUInt() + * \see fromLongLong() */ long long toLongLong(bool mostSignificantByteFirst = true) const; /*! * Converts the 8 bytes at \a offset of the vector to a (signed) long long. * - * If \a mostSignificantByteFirst is true this will operate left to right + * If \a mostSignificantByteFirst is \c true this will operate left to right * evaluating the integer. For example if \a mostSignificantByteFirst is - * true then $00 00 00 00 00 00 00 01 == 0x0000000000000001 == 1, - * if false, $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. + * \c true then $00 00 00 00 00 00 00 01 == 0x0000000000000001 == 1, + * if \c false, $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. * - * \see fromUInt() + * \see fromLongLong() */ long long toLongLong(unsigned int offset, bool mostSignificantByteFirst = true) const; - /* + /*! + * Converts the first 8 bytes of the vector to an unsigned long long. + * + * If \a mostSignificantByteFirst is \c true this will operate left to right + * evaluating the integer. For example if \a mostSignificantByteFirst is + * \c true then $00 00 00 00 00 00 00 01 == 0x0000000000000001 == 1, + * if \c false, $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. + * + * \see fromULongLong() + */ + unsigned long long toULongLong(bool mostSignificantByteFirst = true) const; + + /*! + * Converts the 8 bytes at \a offset of the vector to an unsigned long long. + * + * If \a mostSignificantByteFirst is \c true this will operate left to right + * evaluating the integer. For example if \a mostSignificantByteFirst is + * \c true then $00 00 00 00 00 00 00 01 == 0x0000000000000001 == 1, + * if \c false, $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. + * + * \see fromULongLong() + */ + unsigned long long toULongLong(unsigned int offset, bool mostSignificantByteFirst = true) const; + + /*! * Converts the 4 bytes at \a offset of the vector to a float as an IEEE754 * 32-bit little-endian floating point number. + * + * \see fromFloat32LE() */ float toFloat32LE(size_t offset) const; - /* + /*! * Converts the 4 bytes at \a offset of the vector to a float as an IEEE754 * 32-bit big-endian floating point number. + * + * \see fromFloat32BE() */ float toFloat32BE(size_t offset) const; - /* + /*! * Converts the 8 bytes at \a offset of the vector to a double as an IEEE754 * 64-bit little-endian floating point number. + * + * \see fromFloat64LE() */ double toFloat64LE(size_t offset) const; - /* + /*! * Converts the 8 bytes at \a offset of the vector to a double as an IEEE754 * 64-bit big-endian floating point number. + * + * \see fromFloat64BE() */ double toFloat64BE(size_t offset) const; - /* - * Converts the 10 bytes at \a offset of the vector to a long double as an - * IEEE754 80-bit little-endian floating point number. - * - * \note This may compromise the precision depends on the size of long double. - */ + /*! + * Converts the 10 bytes at \a offset of the vector to a long double as an + * IEEE754 80-bit little-endian floating point number. + * + * \note This may compromise the precision depending on the size of long double. + */ long double toFloat80LE(size_t offset) const; - /* + /*! * Converts the 10 bytes at \a offset of the vector to a long double as an * IEEE754 80-bit big-endian floating point number. * - * \note This may compromise the precision depends on the size of long double. + * \note This may compromise the precision depending on the size of long double. */ long double toFloat80BE(size_t offset) const; /*! * Creates a 4 byte ByteVector based on \a value. If - * \a mostSignificantByteFirst is true, then this will operate left to right + * \a mostSignificantByteFirst is \c true, then this will operate left to right * in building the ByteVector. For example if \a mostSignificantByteFirst is - * true then $00 00 00 01 == 0x00000001 == 1, if false, $01 00 00 00 == + * \c true then $00 00 00 01 == 0x00000001 == 1, if \c false, $01 00 00 00 == * 0x01000000 == 1. * * \see toUInt() @@ -458,30 +478,51 @@ namespace TagLib { /*! * Creates a 2 byte ByteVector based on \a value. If - * \a mostSignificantByteFirst is true, then this will operate left to right + * \a mostSignificantByteFirst is \c true, then this will operate left to right * in building the ByteVector. For example if \a mostSignificantByteFirst is - * true then $00 01 == 0x0001 == 1, if false, $01 00 == 0x0100 == 1. + * \c true then $00 01 == 0x0001 == 1, if \c false, $01 00 == 0x0100 == 1. * * \see toShort() */ static ByteVector fromShort(short value, bool mostSignificantByteFirst = true); /*! - * Creates a 8 byte ByteVector based on \a value. If - * \a mostSignificantByteFirst is true, then this will operate left to right + * Creates a 2 byte ByteVector based on \a value. If + * \a mostSignificantByteFirst is \c true, then this will operate left to right * in building the ByteVector. For example if \a mostSignificantByteFirst is - * true then $00 00 00 01 == 0x0000000000000001 == 1, if false, + * \c true then $00 01 == 0x0001 == 1, if \c false, $01 00 == 0x0100 == 1. + * + * \see toUShort() + */ + static ByteVector fromUShort(unsigned short value, bool mostSignificantByteFirst = true); + + /*! + * Creates an 8 byte ByteVector based on \a value. If + * \a mostSignificantByteFirst is \c true, then this will operate left to right + * in building the ByteVector. For example if \a mostSignificantByteFirst is + * \c true then $00 00 00 01 == 0x0000000000000001 == 1, if \c false, * $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. * * \see toLongLong() */ static ByteVector fromLongLong(long long value, bool mostSignificantByteFirst = true); + /*! + * Creates an 8 byte ByteVector based on \a value. If + * \a mostSignificantByteFirst is \c true, then this will operate left to right + * in building the ByteVector. For example if \a mostSignificantByteFirst is + * \c true then $00 00 00 01 == 0x0000000000000001 == 1, if \c false, + * $01 00 00 00 00 00 00 00 == 0x0100000000000000 == 1. + * + * \see toULongLong() + */ + static ByteVector fromULongLong(unsigned long long value, bool mostSignificantByteFirst = true); + /*! * Creates a 4 byte ByteVector based on \a value as an IEEE754 32-bit * little-endian floating point number. * - * \see fromFloat32BE() + * \see toFloat32LE() */ static ByteVector fromFloat32LE(float value); @@ -489,23 +530,23 @@ namespace TagLib { * Creates a 4 byte ByteVector based on \a value as an IEEE754 32-bit * big-endian floating point number. * - * \see fromFloat32LE() + * \see toFloat32BE() */ static ByteVector fromFloat32BE(float value); /*! - * Creates a 8 byte ByteVector based on \a value as an IEEE754 64-bit + * Creates an 8 byte ByteVector based on \a value as an IEEE754 64-bit * little-endian floating point number. * - * \see fromFloat64BE() + * \see toFloat64LE() */ static ByteVector fromFloat64LE(double value); /*! - * Creates a 8 byte ByteVector based on \a value as an IEEE754 64-bit + * Creates an 8 byte ByteVector based on \a value as an IEEE754 64-bit * big-endian floating point number. * - * \see fromFloat64LE() + * \see toFloat64BE() */ static ByteVector fromFloat64BE(double value); @@ -525,36 +566,36 @@ namespace TagLib { char &operator[](int index); /*! - * Returns true if this ByteVector and \a v are equal. + * Returns \c true if this ByteVector and \a v are equal. */ bool operator==(const ByteVector &v) const; /*! - * Returns true if this ByteVector and \a v are not equal. + * Returns \c true if this ByteVector and \a v are not equal. */ bool operator!=(const ByteVector &v) const; /*! - * Returns true if this ByteVector and the null terminated C string \a s + * Returns \c true if this ByteVector and the null terminated C string \a s * contain the same data. */ bool operator==(const char *s) const; /*! - * Returns true if this ByteVector and the null terminated C string \a s + * Returns \c true if this ByteVector and the null terminated C string \a s * do not contain the same data. */ bool operator!=(const char *s) const; /*! - * Returns true if this ByteVector is less than \a v. The value of the + * Returns \c true if this ByteVector is less than \a v. The value of the * vectors is determined by evaluating the character from left to right, and * in the event one vector is a superset of the other, the size is used. */ bool operator<(const ByteVector &v) const; /*! - * Returns true if this ByteVector is greater than \a v. + * Returns \c true if this ByteVector is greater than \a v. */ bool operator>(const ByteVector &v) const; @@ -581,21 +622,9 @@ namespace TagLib { ByteVector &operator=(const char *data); /*! - * Exchanges the content of the ByteVector by the content of \a v. + * Exchanges the content of the ByteVector with the content of \a v. */ - void swap(ByteVector &v); - - /*! - * A static, empty ByteVector which is convenient and fast (since returning - * an empty or "null" value does not require instantiating a new ByteVector). - * - * \warning Do not modify this variable. It will mess up the internal state - * of TagLib. - * - * \deprecated - */ - // BIC: remove - TAGLIB_DEPRECATED static ByteVector null; + void swap(ByteVector &v) noexcept; /*! * Returns a hex-encoded copy of the byte vector. @@ -604,16 +633,20 @@ namespace TagLib { /*! * Returns a base64 encoded copy of the byte vector + * + * \see fromBase64() */ ByteVector toBase64() const; /*! * Decodes the base64 encoded byte vector. + * + * \see toBase64() */ static ByteVector fromBase64(const ByteVector &); protected: - /* + /*! * If this ByteVector is being shared via implicit sharing, do a deep copy * of the data and separate from the shared members. This should be called * by all non-const subclass members. @@ -622,9 +655,10 @@ namespace TagLib { private: class ByteVectorPrivate; - ByteVectorPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<ByteVectorPrivate> d; }; -} +} // namespace TagLib /*! * \relates TagLib::ByteVector diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorlist.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevectorlist.h similarity index 77% rename from Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorlist.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevectorlist.h index 873c9e438..4760943b3 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorlist.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevectorlist.h @@ -26,9 +26,9 @@ #ifndef TAGLIB_BYTEVECTORLIST_H #define TAGLIB_BYTEVECTORLIST_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tlist.h> +#include "tbytevector.h" +#include "tlist.h" +#include "taglib_export.h" namespace TagLib { @@ -38,39 +38,48 @@ namespace TagLib { * A List specialization with some handy features useful for ByteVectors. */ - class TAGLIB_EXPORT ByteVectorList : public List<ByteVector> + class ByteVectorList : public List<ByteVector> { public: /*! * Construct an empty ByteVectorList. */ + TAGLIB_EXPORT ByteVectorList(); /*! * Destroys this ByteVectorList instance. */ - virtual ~ByteVectorList(); + TAGLIB_EXPORT + ~ByteVectorList(); /*! * Make a shallow, implicitly shared, copy of \a l. Because this is * implicitly shared, this method is lightweight and suitable for * pass-by-value usage. */ + TAGLIB_EXPORT ByteVectorList(const ByteVectorList &l); + /*! + * Construct a ByteVectorList with the contents of the braced initializer list. + */ + TAGLIB_EXPORT + ByteVectorList(std::initializer_list<ByteVector> init); + + TAGLIB_EXPORT + ByteVectorList &operator=(const ByteVectorList &); + TAGLIB_EXPORT + ByteVectorList &operator=(std::initializer_list<ByteVector> init); + /*! * Convert the ByteVectorList to a ByteVector separated by \a separator. By * default a space is used. */ + TAGLIB_EXPORT ByteVector toByteVector(const ByteVector &separator = " ") const; - /*! - * Splits the ByteVector \a v into several strings at \a pattern. This will - * not include the pattern in the returned ByteVectors. - */ - static ByteVectorList split(const ByteVector &v, const ByteVector &pattern, - int byteAlign = 1); /*! * Splits the ByteVector \a v into several strings at \a pattern. This will * not include the pattern in the returned ByteVectors. \a max is the @@ -78,14 +87,20 @@ namespace TagLib { * is 2 then a maximum of 1 match will be found and the vector will be split * on that match. */ - // BIC: merge with the function above + TAGLIB_EXPORT static ByteVectorList split(const ByteVector &v, const ByteVector &pattern, - int byteAlign, int max); + int byteAlign = 1, int max = 0); private: class ByteVectorListPrivate; - ByteVectorListPrivate *d; + std::unique_ptr<ByteVectorListPrivate> d; }; -} +} // namespace TagLib + +/*! + * \related TagLib::ByteVectorList + * Send the ByteVectorList to an output stream. + */ +std::ostream TAGLIB_EXPORT &operator<<(std::ostream &s, const TagLib::ByteVectorList &l); #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorstream.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevectorstream.h similarity index 70% rename from Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorstream.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevectorstream.h index 7bab6103a..21c699f45 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tbytevectorstream.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tbytevectorstream.h @@ -26,10 +26,10 @@ #ifndef TAGLIB_BYTEVECTORSTREAM_H #define TAGLIB_BYTEVECTORSTREAM_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tiostream.h> +#include "tbytevector.h" +#include "tiostream.h" +#include "taglib_export.h" +#include "taglib.h" namespace TagLib { @@ -43,36 +43,36 @@ namespace TagLib { { public: /*! - * Construct a File object and opens the \a file. \a file should be a - * be a C-string in the local file system encoding. + * Construct a ByteVectorStream from the bytes in \a data. */ ByteVectorStream(const ByteVector &data); /*! * Destroys this ByteVectorStream instance. */ - virtual ~ByteVectorStream(); + ~ByteVectorStream() override; + + ByteVectorStream(const ByteVectorStream &) = delete; + ByteVectorStream &operator=(const ByteVectorStream &) = delete; /*! - * Returns the file name in the local file system encoding. + * Returns an empty string. */ - FileName name() const; + FileName name() const override; /*! * Reads a block of size \a length at the current get pointer. */ - ByteVector readBlock(unsigned long length); + ByteVector readBlock(size_t length) override; /*! - * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- - * this attempts to reopen the file in read/write mode. + * Writes the block \a data at the current get pointer. * * \note This should be used instead of using the streaming output operator * for a ByteVector. And even this function is significantly slower than * doing output with a char[]. */ - void writeBlock(const ByteVector &data); + void writeBlock(const ByteVector &data) override; /*! * Insert \a data at position \a start in the file overwriting \a replace @@ -81,7 +81,7 @@ namespace TagLib { * \note This method is slow since it requires rewriting all of the file * after the insertion point. */ - void insert(const ByteVector &data, unsigned long start = 0, unsigned long replace = 0); + void insert(const ByteVector &data, offset_t start = 0, size_t replace = 0) override; /*! * Removes a block of the file starting a \a start and continuing for @@ -90,18 +90,17 @@ namespace TagLib { * \note This method is slow since it involves rewriting all of the file * after the removed portion. */ - void removeBlock(unsigned long start = 0, unsigned long length = 0); + void removeBlock(offset_t start = 0, size_t length = 0) override; /*! - * Returns true if the file is read only (or if the file can not be opened). + * Returns \c false. */ - bool readOnly() const; + bool readOnly() const override; /*! - * Since the file can currently only be opened as an argument to the - * constructor (sort-of by design), this returns if that open succeeded. + * Returns \c true. */ - bool isOpen() const; + bool isOpen() const override; /*! * Move the I/O pointer to \a offset in the file from position \a p. This @@ -109,37 +108,36 @@ namespace TagLib { * * \see Position */ - void seek(long offset, Position p = Beginning); + void seek(offset_t offset, Position p = Beginning) override; /*! - * Reset the end-of-file and error flags on the file. + * Does nothing. */ - void clear(); + void clear() override; /*! * Returns the current offset within the file. */ - long tell() const; + offset_t tell() const override; /*! * Returns the length of the file. */ - long length(); + offset_t length() override; /*! * Truncates the file to a \a length. */ - void truncate(long length); + void truncate(offset_t length) override; ByteVector *data(); - protected: - private: class ByteVectorStreamPrivate; - ByteVectorStreamPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<ByteVectorStreamPrivate> d; }; -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tdebuglistener.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tdebuglistener.h similarity index 88% rename from Frameworks/TagLib/taglib/taglib/toolkit/tdebuglistener.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tdebuglistener.h index e1b76f51e..5a8aed78b 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tdebuglistener.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tdebuglistener.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_DEBUGLISTENER_H #define TAGLIB_DEBUGLISTENER_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/tstring.h> +#include "tstring.h" +#include "taglib_export.h" namespace TagLib { @@ -45,6 +45,8 @@ namespace TagLib public: DebugListener(); virtual ~DebugListener(); + DebugListener(const DebugListener &) = delete; + DebugListener &operator=(const DebugListener &) = delete; /*! * When overridden in a derived class, redirects \a msg to your preferred @@ -53,15 +55,15 @@ namespace TagLib virtual void printMessage(const String &msg) = 0; private: - // Noncopyable - DebugListener(const DebugListener &); - DebugListener &operator=(const DebugListener &); + class DebugListenerPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<DebugListenerPrivate> d; }; /*! * Sets the listener that decides how the debug messages are redirected. * If the parameter \a listener is null, the previous listener is released - * and default stderr listener is restored. + * and the default stderr listener is restored. * * \note The caller is responsible for deleting the previous listener * as needed after it is released. @@ -69,6 +71,6 @@ namespace TagLib * \see DebugListener */ TAGLIB_EXPORT void setDebugListener(DebugListener *listener); -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/textidentificationframe.h similarity index 87% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/textidentificationframe.h index b20fe0699..c88e16fff 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/textidentificationframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/textidentificationframe.h @@ -26,18 +26,17 @@ #ifndef TAGLIB_TEXTIDENTIFICATIONFRAME_H #define TAGLIB_TEXTIDENTIFICATIONFRAME_H -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/taglib_export.h> - -#include <taglib/mpeg/id3v2/id3v2frame.h> +#include "tstringlist.h" +#include "tmap.h" +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { namespace ID3v2 { class Tag; - typedef Map<String, String> KeyConversionMap; + using KeyConversionMap = Map<String, String>; //! An ID3v2 text identification frame implementation @@ -60,7 +59,7 @@ namespace TagLib { * <li><b>TDTG</b> Tagging time</li> * <li><b>TENC</b> Encoded by</li> * <li><b>TEXT</b> Lyricist/Text writer</li> - * <li><b>TFLT</b> File type</li> + * <li><b>TFLT</b> %File type</li> * <li><b>TIPL</b> Involved people list</li> * <li><b>TIT1</b> Content group description</li> * <li><b>TIT2</b> Title/songname/content description</li> @@ -75,7 +74,7 @@ namespace TagLib { * <li><b>TOFN</b> Original filename</li> * <li><b>TOLY</b> Original lyricist(s)/text writer(s)</li> * <li><b>TOPE</b> Original artist(s)/performer(s)</li> - * <li><b>TOWN</b> File owner/licensee</li> + * <li><b>TOWN</b> %File owner/licensee</li> * <li><b>TPE1</b> Lead performer(s)/Soloist(s)</li> * <li><b>TPE2</b> Band/orchestra/accompaniment</li> * <li><b>TPE3</b> Conductor/performer refinement</li> @@ -142,7 +141,10 @@ namespace TagLib { /*! * Destroys this TextIdentificationFrame instance. */ - virtual ~TextIdentificationFrame(); + ~TextIdentificationFrame() override; + + TextIdentificationFrame(const TextIdentificationFrame &) = delete; + TextIdentificationFrame &operator=(const TextIdentificationFrame &) = delete; /*! * Text identification frames are a list of string fields. @@ -158,8 +160,9 @@ namespace TagLib { // Reimplementations. - virtual void setText(const String &s); - virtual String toString() const; + void setText(const String &s) override; + String toString() const override; + StringList toStringList() const override; /*! * Returns the text encoding that will be used in rendering this frame. @@ -195,13 +198,13 @@ namespace TagLib { */ static const KeyConversionMap &involvedPeopleMap(); - PropertyMap asProperties() const; + PropertyMap asProperties() const override; protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; /*! * The constructor used by the FrameFactory. @@ -209,9 +212,6 @@ namespace TagLib { TextIdentificationFrame(const ByteVector &data, Header *h); private: - TextIdentificationFrame(const TextIdentificationFrame &); - TextIdentificationFrame &operator=(const TextIdentificationFrame &); - /*! * Parses the special structure of a TIPL frame * Only the whitelisted roles "ARRANGER", "ENGINEER", "PRODUCER", @@ -223,7 +223,8 @@ namespace TagLib { */ PropertyMap makeTMCLProperties() const; class TextIdentificationFramePrivate; - TextIdentificationFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<TextIdentificationFramePrivate> d; }; /*! @@ -258,7 +259,12 @@ namespace TagLib { */ UserTextIdentificationFrame(const String &description, const StringList &values, String::Type encoding = String::UTF8); - virtual String toString() const; + ~UserTextIdentificationFrame() override; + + UserTextIdentificationFrame(const UserTextIdentificationFrame &) = delete; + UserTextIdentificationFrame &operator=(const UserTextIdentificationFrame &) = delete; + + String toString() const override; /*! * Returns the description for this frame. @@ -272,8 +278,7 @@ namespace TagLib { */ void setDescription(const String &s); - StringList fieldList() const; - void setText(const String &text); + void setText(const String &text) override; void setText(const StringList &fields); /*! @@ -289,25 +294,34 @@ namespace TagLib { * in the value list, in order to be compatible with TagLib which copies * the description() into the fieldList(). */ - PropertyMap asProperties() const; + PropertyMap asProperties() const override; /*! * Searches for the user defined text frame with the description \a description * in \a tag. This returns null if no matching frames were found. */ - static UserTextIdentificationFrame *find(Tag *tag, const String &description); + static UserTextIdentificationFrame *find(const Tag *tag, const String &description); + + /*! + * Returns an appropriate TXXX frame description for the given free-form tag key. + */ + static String keyToTXXX(const String &); + + /*! + * Returns a free-form tag name for the given ID3 frame description. + */ + static String txxxToKey(const String &); private: UserTextIdentificationFrame(const ByteVector &data, Header *h); - UserTextIdentificationFrame(const TextIdentificationFrame &); - UserTextIdentificationFrame &operator=(const UserTextIdentificationFrame &); void checkFields(); class UserTextIdentificationFramePrivate; - UserTextIdentificationFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<UserTextIdentificationFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tfile.h similarity index 79% rename from Frameworks/TagLib/taglib/taglib/toolkit/tfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tfile.h index 48774f9f2..196e262a9 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tfile.h @@ -26,11 +26,11 @@ #ifndef TAGLIB_FILE_H #define TAGLIB_FILE_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/taglib.h> -#include <taglib/tag.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tiostream.h> +#include "tbytevector.h" +#include "tiostream.h" +#include "taglib_export.h" +#include "taglib.h" +#include "tag.h" namespace TagLib { @@ -66,8 +66,8 @@ namespace TagLib { * Specify which tags to strip either explicitly, or on save. */ enum StripTags { - StripNone, //<! Don't strip any tags - StripOthers //<! Strip all tags not explicitly referenced in method call + StripNone, //!< Don't strip any tags + StripOthers //!< Strip all tags not explicitly referenced in method call }; /*! @@ -75,8 +75,8 @@ namespace TagLib { * types should be synchronized. */ enum DuplicateTags { - Duplicate, //<! Synchronize values between different tag types - DoNotDuplicate //<! Do not synchronize values between different tag types + Duplicate, //!< Synchronize values between different tag types + DoNotDuplicate //!< Do not synchronize values between different tag types }; /*! @@ -84,6 +84,9 @@ namespace TagLib { */ virtual ~File(); + File(const File &) = delete; + File &operator=(const File &) = delete; + /*! * Returns the file name in the local file system encoding. */ @@ -105,23 +108,21 @@ namespace TagLib { * to remove (a subset of) them. * For files that contain more than one tag (e.g. an MP3 with both an ID3v1 and an ID3v2 * tag) only the most "modern" one will be exported (ID3v2 in this case). - * BIC: Will be made virtual in future releases. */ - PropertyMap properties() const; + virtual PropertyMap properties() const; /*! * Removes unsupported properties, or a subset of them, from the file's metadata. * The parameter \a properties must contain only entries from * properties().unsupportedData(). - * BIC: Will be mad virtual in future releases. */ - void removeUnsupportedProperties(const StringList& properties); + virtual void removeUnsupportedProperties(const StringList& properties); /*! * Sets the tags of this File to those specified in \a properties. Calls the * according specialization method in the subclasses of File to do the translation * into the format-specific details. - * If some value(s) could not be written imported to the specific metadata format, + * If some value(s) could not be written to the specific metadata format, * the returned PropertyMap will contain those value(s). Otherwise it will be empty, * indicating that no problems occurred. * With file types that support several tag formats (for instance, MP3 files can have @@ -129,9 +130,30 @@ namespace TagLib { * (ID3v2 for MP3 files). Older formats will be updated as well, if they exist, but won't * be taken into account for the return value of this function. * See the documentation of the subclass implementations for detailed descriptions. - * BIC: will become pure virtual in the future */ - PropertyMap setProperties(const PropertyMap &properties); + virtual PropertyMap setProperties(const PropertyMap &properties); + + /*! + * Get the keys of complex properties, i.e. properties which cannot be + * represented simply by a string. + * The default implementation calls Tag::complexPropertyKeys(). + * \see Tag::complexPropertyKeys() + */ + virtual StringList complexPropertyKeys() const; + + /*! + * Get the complex properties for a given \a key. + * The default implementation calls Tag::complexProperties(). + * \see Tag::complexProperties() + */ + virtual List<VariantMap> complexProperties(const String &key) const; + + /*! + * Set all complex properties for \a key using the variant maps \a value. + * The default implementation calls Tag::setComplexProperties(). + * \see Tag::setComplexProperties() + */ + virtual bool setComplexProperties(const String &key, const List<VariantMap> &value); /*! * Returns a pointer to this file's audio properties. This should be @@ -142,7 +164,7 @@ namespace TagLib { /*! * Save the file and its associated tags. This should be reimplemented in - * the concrete subclasses. Returns true if the save succeeds. + * the concrete subclasses. Returns \c true if the save succeeds. * * \warning On UNIX multiple processes are able to write to the same file at * the same time. This can result in serious file corruption. If you are @@ -155,11 +177,11 @@ namespace TagLib { /*! * Reads a block of size \a length at the current get pointer. */ - ByteVector readBlock(unsigned long length); + ByteVector readBlock(size_t length); /*! * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- + * file is currently only opened read only -- i.e. readOnly() returns \c true -- * this attempts to reopen the file in read/write mode. * * \note This should be used instead of using the streaming output operator @@ -180,8 +202,8 @@ namespace TagLib { * \note This has the practical limitation that \a pattern can not be longer * than the buffer size used by readBlock(). Currently this is 1024 bytes. */ - long find(const ByteVector &pattern, - long fromOffset = 0, + offset_t find(const ByteVector &pattern, + offset_t fromOffset = 0, const ByteVector &before = ByteVector()); /*! @@ -196,8 +218,8 @@ namespace TagLib { * \note This has the practical limitation that \a pattern can not be longer * than the buffer size used by readBlock(). Currently this is 1024 bytes. */ - long rfind(const ByteVector &pattern, - long fromOffset = 0, + offset_t rfind(const ByteVector &pattern, + offset_t fromOffset = 0, const ByteVector &before = ByteVector()); /*! @@ -207,7 +229,7 @@ namespace TagLib { * \note This method is slow since it requires rewriting all of the file * after the insertion point. */ - void insert(const ByteVector &data, unsigned long start = 0, unsigned long replace = 0); + void insert(const ByteVector &data, offset_t start = 0, size_t replace = 0); /*! * Removes a block of the file starting a \a start and continuing for @@ -216,10 +238,10 @@ namespace TagLib { * \note This method is slow since it involves rewriting all of the file * after the removed portion. */ - void removeBlock(unsigned long start = 0, unsigned long length = 0); + void removeBlock(offset_t start = 0, size_t length = 0); /*! - * Returns true if the file is read only (or if the file can not be opened). + * Returns \c true if the file is read only (or if the file can not be opened). */ bool readOnly() const; @@ -230,7 +252,7 @@ namespace TagLib { bool isOpen() const; /*! - * Returns true if the file is open and readable. + * Returns \c true if the file is open and readable. */ bool isValid() const; @@ -240,7 +262,7 @@ namespace TagLib { * * \see Position */ - void seek(long offset, Position p = Beginning); + void seek(offset_t offset, Position p = Beginning); /*! * Reset the end-of-file and error flags on the file. @@ -250,37 +272,22 @@ namespace TagLib { /*! * Returns the current offset within the file. */ - long tell() const; + offset_t tell() const; /*! * Returns the length of the file. */ - long length(); - - /*! - * Returns true if \a file can be opened for reading. If the file does not - * exist, this will return false. - * - * \deprecated - */ - TAGLIB_DEPRECATED static bool isReadable(const char *file); - - /*! - * Returns true if \a file can be opened for writing. - * - * \deprecated - */ - TAGLIB_DEPRECATED static bool isWritable(const char *name); + offset_t length(); protected: /*! - * Construct a File object and opens the \a file. \a file should be a - * be a C-string in the local file system encoding. + * Construct a File object and open the \a fileName. \a fileName should be a + * C-string in the local file system encoding. * * \note Constructor is protected since this class should only be * instantiated through subclasses. */ - File(FileName file); + File(FileName fileName); /*! * Construct a File object and use the \a stream instance. @@ -303,7 +310,7 @@ namespace TagLib { /*! * Truncates the file to a \a length. */ - void truncate(long length); + void truncate(offset_t length); /*! * Returns the buffer size that is used for internal buffering. @@ -311,13 +318,11 @@ namespace TagLib { static unsigned int bufferSize(); private: - File(const File &); - File &operator=(const File &); - class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tfilestream.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tfilestream.h similarity index 74% rename from Frameworks/TagLib/taglib/taglib/toolkit/tfilestream.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tfilestream.h index 4420bc938..36e1d542a 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tfilestream.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tfilestream.h @@ -26,10 +26,10 @@ #ifndef TAGLIB_FILESTREAM_H #define TAGLIB_FILESTREAM_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/toolkit/tiostream.h> +#include "tbytevector.h" +#include "tiostream.h" +#include "taglib_export.h" +#include "taglib.h" namespace TagLib { @@ -37,53 +37,50 @@ namespace TagLib { class Tag; class AudioProperties; - //! A file class with some useful methods for tag manipulation - - /*! - * This class is a basic file class with some methods that are particularly - * useful for tag editors. It has methods to take advantage of - * ByteVector and a binary search method for finding patterns in a file. - */ + //! I/O stream with data from a file. class TAGLIB_EXPORT FileStream : public IOStream { public: /*! - * Construct a File object and opens the \a file. \a file should be a - * be a C-string in the local file system encoding. + * Construct a FileStream object and open the \a fileName. \a fileName should be a + * C-string in the local file system encoding. */ - FileStream(FileName file, bool openReadOnly = false); + FileStream(FileName fileName, bool openReadOnly = false); /*! - * Construct a File object and opens the \a file using file descriptor. + * Construct a FileStream object using an existing \a fileDescriptor. */ FileStream(int fileDescriptor, bool openReadOnly = false); /*! * Destroys this FileStream instance. */ - virtual ~FileStream(); + ~FileStream() override; + + FileStream(const FileStream &) = delete; + FileStream &operator=(const FileStream &) = delete; /*! * Returns the file name in the local file system encoding. */ - FileName name() const; + FileName name() const override; /*! * Reads a block of size \a length at the current get pointer. */ - ByteVector readBlock(unsigned long length); + ByteVector readBlock(size_t length) override; /*! * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- + * file is currently only opened read only -- i.e. readOnly() returns \c true -- * this attempts to reopen the file in read/write mode. * * \note This should be used instead of using the streaming output operator * for a ByteVector. And even this function is significantly slower than * doing output with a char[]. */ - void writeBlock(const ByteVector &data); + void writeBlock(const ByteVector &data) override; /*! * Insert \a data at position \a start in the file overwriting \a replace @@ -92,7 +89,7 @@ namespace TagLib { * \note This method is slow since it requires rewriting all of the file * after the insertion point. */ - void insert(const ByteVector &data, unsigned long start = 0, unsigned long replace = 0); + void insert(const ByteVector &data, offset_t start = 0, size_t replace = 0) override; /*! * Removes a block of the file starting a \a start and continuing for @@ -101,18 +98,18 @@ namespace TagLib { * \note This method is slow since it involves rewriting all of the file * after the removed portion. */ - void removeBlock(unsigned long start = 0, unsigned long length = 0); + void removeBlock(offset_t start = 0, size_t length = 0) override; /*! - * Returns true if the file is read only (or if the file can not be opened). + * Returns \c true if the file is read only (or if the file can not be opened). */ - bool readOnly() const; + bool readOnly() const override; /*! * Since the file can currently only be opened as an argument to the * constructor (sort-of by design), this returns if that open succeeded. */ - bool isOpen() const; + bool isOpen() const override; /*! * Move the I/O pointer to \a offset in the file from position \a p. This @@ -120,27 +117,27 @@ namespace TagLib { * * \see Position */ - void seek(long offset, Position p = Beginning); + void seek(offset_t offset, Position p = Beginning) override; /*! * Reset the end-of-file and error flags on the file. */ - void clear(); + void clear() override; /*! * Returns the current offset within the file. */ - long tell() const; + offset_t tell() const override; /*! * Returns the length of the file. */ - long length(); + offset_t length() override; /*! * Truncates the file to a \a length. */ - void truncate(long length); + void truncate(offset_t length) override; protected: @@ -151,9 +148,10 @@ namespace TagLib { private: class FileStreamPrivate; - FileStreamPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FileStreamPrivate> d; }; -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tiostream.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tiostream.h similarity index 83% rename from Frameworks/TagLib/taglib/taglib/toolkit/tiostream.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tiostream.h index 82f49caf6..5429f86ee 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tiostream.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tiostream.h @@ -26,9 +26,13 @@ #ifndef TAGLIB_IOSTREAM_H #define TAGLIB_IOSTREAM_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tbytevector.h> +#include "tbytevector.h" +#include "taglib_export.h" +#include "taglib.h" + +#ifdef _WIN32 +#include <string> +#endif namespace TagLib { @@ -42,19 +46,17 @@ namespace TagLib { FileName(const FileName &name); operator const wchar_t *() const; - operator const char *() const; const std::wstring &wstr() const; - const std::string &str() const; String toString() const; private: - const std::string m_name; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE const std::wstring m_wname; }; #else - typedef const char *FileName; + using FileName = const char *; #endif //! An abstract class that provides operations on a sequence of bytes @@ -81,6 +83,9 @@ namespace TagLib { */ virtual ~IOStream(); + IOStream(const IOStream &) = delete; + IOStream &operator=(const IOStream &) = delete; + /*! * Returns the stream name in the local file system encoding. */ @@ -89,11 +94,11 @@ namespace TagLib { /*! * Reads a block of size \a length at the current get pointer. */ - virtual ByteVector readBlock(unsigned long length) = 0; + virtual ByteVector readBlock(size_t length) = 0; /*! * Attempts to write the block \a data at the current get pointer. If the - * file is currently only opened read only -- i.e. readOnly() returns true -- + * file is currently only opened read only -- i.e. readOnly() returns \c true -- * this attempts to reopen the file in read/write mode. * * \note This should be used instead of using the streaming output operator @@ -110,7 +115,7 @@ namespace TagLib { * after the insertion point. */ virtual void insert(const ByteVector &data, - unsigned long start = 0, unsigned long replace = 0) = 0; + offset_t start = 0, size_t replace = 0) = 0; /*! * Removes a block of the file starting a \a start and continuing for @@ -119,10 +124,10 @@ namespace TagLib { * \note This method is slow since it involves rewriting all of the file * after the removed portion. */ - virtual void removeBlock(unsigned long start = 0, unsigned long length = 0) = 0; + virtual void removeBlock(offset_t start = 0, size_t length = 0) = 0; /*! - * Returns true if the file is read only (or if the file can not be opened). + * Returns \c true if the file is read only (or if the file can not be opened). */ virtual bool readOnly() const = 0; @@ -138,7 +143,7 @@ namespace TagLib { * * \see Position */ - virtual void seek(long offset, Position p = Beginning) = 0; + virtual void seek(offset_t offset, Position p = Beginning) = 0; /*! * Reset the end-of-stream and error flags on the stream. @@ -148,23 +153,24 @@ namespace TagLib { /*! * Returns the current offset within the stream. */ - virtual long tell() const = 0; + virtual offset_t tell() const = 0; /*! * Returns the length of the stream. */ - virtual long length() = 0; + virtual offset_t length() = 0; /*! * Truncates the stream to a \a length. */ - virtual void truncate(long length) = 0; + virtual void truncate(offset_t length) = 0; private: - IOStream(const IOStream &); - IOStream &operator=(const IOStream &); + class IOStreamPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<IOStreamPrivate> d; }; -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tlist.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tlist.h similarity index 69% rename from Frameworks/TagLib/taglib/taglib/toolkit/tlist.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tlist.h index 8f13618e8..34b3e356b 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tlist.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tlist.h @@ -26,17 +26,17 @@ #ifndef TAGLIB_LIST_H #define TAGLIB_LIST_H -#include <taglib/toolkit/taglib.h> - #include <list> +#include <initializer_list> +#include <memory> namespace TagLib { //! A generic, implicitly shared list. /*! - * This is basic generic list that's somewhere between a std::list and a - * QValueList. This class is implicitly shared. For example: + * This is a basic generic list that's somewhere between a std::list and a + * QList. This class is implicitly shared. For example: * * \code * @@ -44,7 +44,7 @@ namespace TagLib { * * \endcode * - * The above example is very cheap. This also makes lists suitable for the + * The above example is very cheap. This also makes lists suitable as * return types of functions. The above example will just copy a pointer rather * than copying the data in the list. When your \e shared list's data changes, * only \e then will the data be copied. @@ -54,8 +54,8 @@ namespace TagLib { { public: #ifndef DO_NOT_DOCUMENT - typedef typename std::list<T>::iterator Iterator; - typedef typename std::list<T>::const_iterator ConstIterator; + using Iterator = typename std::list<T>::iterator; + using ConstIterator = typename std::list<T>::const_iterator; #endif /*! @@ -71,43 +71,64 @@ namespace TagLib { List(const List<T> &l); /*! - * Destroys this List instance. If auto deletion is enabled and this list - * contains a pointer type all of the members are also deleted. + * Construct a List with the contents of the braced initializer list. */ - virtual ~List(); + List(std::initializer_list<T> init); + + /*! + * Destroys this List instance. If auto deletion is enabled and this list + * contains a pointer type, all of the members are also deleted. + */ + ~List(); /*! * Returns an STL style iterator to the beginning of the list. See - * std::list::const_iterator for the semantics. + * \c std::list::const_iterator for the semantics. */ Iterator begin(); /*! * Returns an STL style constant iterator to the beginning of the list. See - * std::list::iterator for the semantics. + * \c std::list::iterator for the semantics. */ ConstIterator begin() const; + /*! + * Returns an STL style constant iterator to the beginning of the list. See + * \c std::list::iterator for the semantics. + */ + ConstIterator cbegin() const; + /*! * Returns an STL style iterator to the end of the list. See - * std::list::iterator for the semantics. + * \c std::list::iterator for the semantics. */ Iterator end(); /*! * Returns an STL style constant iterator to the end of the list. See - * std::list::const_iterator for the semantics. + * \c std::list::const_iterator for the semantics. */ ConstIterator end() const; /*! - * Inserts a copy of \a value before \a it. + * Returns an STL style constant iterator to the end of the list. See + * \c std::list::const_iterator for the semantics. */ - Iterator insert(Iterator it, const T &value); + ConstIterator cend() const; + + /*! + * Inserts a copy of \a item before \a it. + * + * \note This method cannot detach because \a it is tied to the internal + * list. Do not make an implicitly shared copy of this list between + * getting the iterator and calling this method! + */ + Iterator insert(Iterator it, const T &item); /*! * Inserts the \a value into the list. This assumes that the list is - * currently sorted. If \a unique is true then the value will not + * currently sorted. If \a unique is \c true then the value will not * be inserted if it is already in the list. */ List<T> &sortedInsert(const T &value, bool unique = false); @@ -169,12 +190,21 @@ namespace TagLib { ConstIterator find(const T &value) const; /*! - * Returns true if the list contains \a value. + * Find the first occurrence of \a value. + */ + ConstIterator cfind(const T &value) const; + + /*! + * Returns \c true if the list contains \a value. */ bool contains(const T &value) const; /*! * Erase the item at \a it from the list. + * + * \note This method cannot detach because \a it is tied to the internal + * list. Do not make an implicitly shared copy of this list between + * getting the iterator and calling this method! */ Iterator erase(Iterator it); @@ -208,6 +238,11 @@ namespace TagLib { */ void setAutoDelete(bool autoDelete); + /*! + * Returns \c true if auto-deletion is enabled. + */ + bool autoDelete() const; + /*! * Returns a reference to item \a i in the list. * @@ -230,41 +265,61 @@ namespace TagLib { List<T> &operator=(const List<T> &l); /*! - * Exchanges the content of this list by the content of \a l. + * Replace the contents of the list with those of the braced initializer list. + * + * If auto deletion is enabled and the list contains a pointer type, the members are also deleted */ - void swap(List<T> &l); + List<T> &operator=(std::initializer_list<T> init); /*! - * Compares this list with \a l and returns true if all of the elements are + * Exchanges the content of this list with the content of \a l. + */ + void swap(List<T> &l) noexcept; + + /*! + * Compares this list with \a l and returns \c true if all of the elements are * the same. */ bool operator==(const List<T> &l) const; /*! - * Compares this list with \a l and returns true if the lists differ. + * Compares this list with \a l and returns \c true if the lists differ. */ bool operator!=(const List<T> &l) const; + /*! + * Sorts this list in ascending order using operator< of T. + */ + void sort(); + + /*! + * Sorts this list in ascending order using the comparison + * function object \a comp which returns \c true if the first argument is + * less than the second. + */ + template<class Compare> + void sort(Compare&& comp); + protected: - /* + /*! * If this List is being shared via implicit sharing, do a deep copy of the * data and separate from the shared members. This should be called by all - * non-const subclass members. + * non-const subclass members without Iterator parameters. */ void detach(); private: #ifndef DO_NOT_DOCUMENT template <class TP> class ListPrivate; - ListPrivate<T> *d; + std::shared_ptr<ListPrivate<T>> d; #endif }; -} +} // namespace TagLib // Since GCC doesn't support the "export" keyword, we have to include the // implementation. -#include <taglib/toolkit/tlist.tcc> +#include "tlist.tcc" #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tlist.tcc b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tlist.tcc similarity index 77% rename from Frameworks/TagLib/taglib/taglib/toolkit/tlist.tcc rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tlist.tcc index 2e75e76de..bc2531797 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tlist.tcc +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tlist.tcc @@ -24,7 +24,7 @@ ***************************************************************************/ #include <algorithm> -#include <taglib/toolkit/trefcounter.h> +#include <memory> namespace TagLib { @@ -39,12 +39,10 @@ namespace TagLib { // A base for the generic and specialized private class types. New // non-templatized members should be added here. -// BIC change to RefCounter -class ListPrivateBase : public RefCounterOld +class ListPrivateBase { public: - ListPrivateBase() : autoDelete(false) {} - bool autoDelete; + bool autoDelete{}; }; // A generic implementation @@ -53,8 +51,9 @@ template <class T> template <class TP> class List<T>::ListPrivate : public ListPrivateBase { public: - ListPrivate() : ListPrivateBase() {} - ListPrivate(const std::list<TP> &l) : ListPrivateBase(), list(l) {} + using ListPrivateBase::ListPrivateBase; + ListPrivate(const std::list<TP> &l) : list(l) {} + ListPrivate(std::initializer_list<TP> init) : list(init) {} void clear() { list.clear(); } @@ -65,19 +64,21 @@ public: // setAutoDelete() functionality. template <class T> -template <class TP> class List<T>::ListPrivate<TP *> : public ListPrivateBase +template <class TP> class List<T>::ListPrivate<TP *> : public ListPrivateBase { public: - ListPrivate() : ListPrivateBase() {} - ListPrivate(const std::list<TP *> &l) : ListPrivateBase(), list(l) {} + using ListPrivateBase::ListPrivateBase; + ListPrivate(const std::list<TP *> &l) : list(l) {} + ListPrivate(std::initializer_list<TP *> init) : list(init) {} ~ListPrivate() { clear(); } + ListPrivate(const ListPrivate &) = delete; + ListPrivate &operator=(const ListPrivate &) = delete; void clear() { if(autoDelete) { - typename std::list<TP *>::const_iterator it = list.begin(); - for(; it != list.end(); ++it) - delete *it; + for(auto &m : list) + delete m; } list.clear(); } @@ -90,22 +91,21 @@ public: template <class T> List<T>::List() : - d(new ListPrivate<T>()) + d(std::make_shared<ListPrivate<T>>()) { } template <class T> -List<T>::List(const List<T> &l) : d(l.d) +List<T>::List(const List<T> &) = default; + +template <class T> +List<T>::List(std::initializer_list<T> init) : + d(std::make_shared<ListPrivate<T>>(init)) { - d->ref(); } template <class T> -List<T>::~List() -{ - if(d->deref()) - delete d; -} +List<T>::~List() = default; template <class T> typename List<T>::Iterator List<T>::begin() @@ -120,6 +120,12 @@ typename List<T>::ConstIterator List<T>::begin() const return d->list.begin(); } +template <class T> +typename List<T>::ConstIterator List<T>::cbegin() const +{ + return d->list.cbegin(); +} + template <class T> typename List<T>::Iterator List<T>::end() { @@ -133,10 +139,15 @@ typename List<T>::ConstIterator List<T>::end() const return d->list.end(); } +template <class T> +typename List<T>::ConstIterator List<T>::cend() const +{ + return d->list.cend(); +} + template <class T> typename List<T>::Iterator List<T>::insert(Iterator it, const T &item) { - detach(); return d->list.insert(it, item); } @@ -218,6 +229,12 @@ typename List<T>::ConstIterator List<T>::find(const T &value) const return std::find(d->list.begin(), d->list.end(), value); } +template <class T> +typename List<T>::ConstIterator List<T>::cfind(const T &value) const +{ + return std::find(d->list.cbegin(), d->list.cend(), value); +} + template <class T> bool List<T>::contains(const T &value) const { @@ -252,9 +269,16 @@ const T &List<T>::back() const template <class T> void List<T>::setAutoDelete(bool autoDelete) { + detach(); d->autoDelete = autoDelete; } +template <class T> +bool List<T>::autoDelete() const +{ + return d->autoDelete; +} + template <class T> T &List<T>::back() { @@ -265,7 +289,7 @@ T &List<T>::back() template <class T> T &List<T>::operator[](unsigned int i) { - Iterator it = d->list.begin(); + auto it = d->list.begin(); std::advance(it, i); return *it; @@ -274,21 +298,26 @@ T &List<T>::operator[](unsigned int i) template <class T> const T &List<T>::operator[](unsigned int i) const { - ConstIterator it = d->list.begin(); + auto it = d->list.begin(); std::advance(it, i); return *it; } template <class T> -List<T> &List<T>::operator=(const List<T> &l) +List<T> &List<T>::operator=(const List<T> &) = default; + +template <class T> +List<T> &List<T>::operator=(std::initializer_list<T> init) { - List<T>(l).swap(*this); + bool autoDeleteEnabled = d->autoDelete; + List(init).swap(*this); + setAutoDelete(autoDeleteEnabled); return *this; } template <class T> -void List<T>::swap(List<T> &l) +void List<T>::swap(List<T> &l) noexcept { using std::swap; @@ -307,6 +336,21 @@ bool List<T>::operator!=(const List<T> &l) const return d->list != l.d->list; } +template <class T> +void List<T>::sort() +{ + detach(); + d->list.sort(); +} + +template <class T> +template <class Compare> +void List<T>::sort(Compare&& comp) +{ + detach(); + d->list.sort(std::forward<Compare>(comp)); +} + //////////////////////////////////////////////////////////////////////////////// // protected members //////////////////////////////////////////////////////////////////////////////// @@ -314,9 +358,8 @@ bool List<T>::operator!=(const List<T> &l) const template <class T> void List<T>::detach() { - if(d->count() > 1) { - d->deref(); - d = new ListPrivate<T>(d->list); + if(d.use_count() > 1) { + d = std::make_shared<ListPrivate<T>>(d->list); } } diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tmap.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tmap.h similarity index 66% rename from Frameworks/TagLib/taglib/taglib/toolkit/tmap.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tmap.h index 28d80e656..d04cf33de 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tmap.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tmap.h @@ -27,8 +27,9 @@ #define TAGLIB_MAP_H #include <map> - -#include <taglib/toolkit/taglib.h> +#include <memory> +#include <initializer_list> +#include <utility> namespace TagLib { @@ -53,11 +54,11 @@ namespace TagLib { // Not all the specializations of Map can use the class keyword // (when T is not actually a class type), so don't apply this // generally. - typedef typename std::map<class Key, class T>::iterator Iterator; - typedef typename std::map<class Key, class T>::const_iterator ConstIterator; + using Iterator = typename std::map<class Key, class T>::iterator; + using ConstIterator = typename std::map<class Key, class T>::const_iterator; #else - typedef typename std::map<Key, T>::iterator Iterator; - typedef typename std::map<Key, T>::const_iterator ConstIterator; + using Iterator = typename std::map<Key, T>::iterator; + using ConstIterator = typename std::map<Key, T>::const_iterator; #endif #endif @@ -73,35 +74,52 @@ namespace TagLib { */ Map(const Map<Key, T> &m); + /*! + * Constructs a Map with the contents of the braced initializer list. + */ + Map(std::initializer_list<std::pair<const Key, T>> init); + /*! * Destroys this instance of the Map. */ - virtual ~Map(); + ~Map(); /*! * Returns an STL style iterator to the beginning of the map. See - * std::map::iterator for the semantics. + * \c std::map::iterator for the semantics. */ Iterator begin(); /*! * Returns an STL style iterator to the beginning of the map. See - * std::map::const_iterator for the semantics. + * \c std::map::const_iterator for the semantics. */ ConstIterator begin() const; + /*! + * Returns an STL style iterator to the beginning of the map. See + * \c std::map::const_iterator for the semantics. + */ + ConstIterator cbegin() const; + /*! * Returns an STL style iterator to the end of the map. See - * std::map::iterator for the semantics. + * \c std::map::iterator for the semantics. */ Iterator end(); /*! * Returns an STL style iterator to the end of the map. See - * std::map::const_iterator for the semantics. + * \c std::map::const_iterator for the semantics. */ ConstIterator end() const; + /*! + * Returns an STL style iterator to the end of the map. See + * \c std::map::const_iterator for the semantics. + */ + ConstIterator cend() const; + /*! * Inserts \a value under \a key in the map. If a value for \a key already * exists it will be overwritten. @@ -109,7 +127,7 @@ namespace TagLib { Map<Key, T> &insert(const Key &key, const T &value); /*! - * Removes all of the elements from elements from the map. This however + * Removes all of the elements from the map. This however * will not delete pointers if the mapped type is a pointer type. */ Map<Key, T> &clear(); @@ -122,7 +140,7 @@ namespace TagLib { unsigned int size() const; /*! - * Returns true if the map is empty. + * Returns \c true if the map is empty. * * \see size() */ @@ -139,20 +157,32 @@ namespace TagLib { ConstIterator find(const Key &key) const; /*! - * Returns true if the map contains an instance of \a key. + * Returns \c true if the map contains an item for \a key. */ bool contains(const Key &key) const; /*! - * Erase the item at \a it from the list. + * Erase the item at \a it from the map. + * + * \note This method cannot detach because \a it is tied to the internal + * map. Do not make an implicitly shared copy of this map between + * getting the iterator and calling this method! */ Map<Key, T> &erase(Iterator it); /*! - * Erase the item with \a key from the list. + * Erase the item with \a key from the map. */ Map<Key, T> &erase(const Key &key); + /*! + * Returns the value associated with \a key. + * + * If the map does not contain \a key, it returns \a defaultValue. + * If no \a defaultValue is specified, it returns a default-constructed value. + */ + T value(const Key &key, const T &defaultValue = T()) const; + /*! * Returns a reference to the value associated with \a key. * @@ -175,30 +205,46 @@ namespace TagLib { Map<Key, T> &operator=(const Map<Key, T> &m); /*! - * Exchanges the content of this map by the content of \a m. + * Replace the contents of the map with those of the braced initializer list */ - void swap(Map<Key, T> &m); + Map<Key, T> &operator=(std::initializer_list<std::pair<const Key, T>> init); + + /*! + * Exchanges the content of this map with the content of \a m. + */ + void swap(Map<Key, T> &m) noexcept; + + /*! + * Compares this map with \a m and returns \c true if all of the elements are + * the same. + */ + bool operator==(const Map<Key, T> &m) const; + + /*! + * Compares this map with \a m and returns \c true if the maps differ. + */ + bool operator!=(const Map<Key, T> &m) const; protected: - /* - * If this List is being shared via implicit sharing, do a deep copy of the + /*! + * If this Map is being shared via implicit sharing, do a deep copy of the * data and separate from the shared members. This should be called by all - * non-const subclass members. + * non-const subclass members without Iterator parameters. */ void detach(); private: #ifndef DO_NOT_DOCUMENT template <class KeyP, class TP> class MapPrivate; - MapPrivate<Key, T> *d; + std::shared_ptr<MapPrivate<Key, T>> d; #endif }; -} +} // namespace TagLib // Since GCC doesn't support the "export" keyword, we have to include the // implementation. -#include <taglib/toolkit/tmap.tcc> +#include "tmap.tcc" #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tmap.tcc b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tmap.tcc similarity index 73% rename from Frameworks/TagLib/taglib/taglib/toolkit/tmap.tcc rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tmap.tcc index 703d94a9d..d56013cc2 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tmap.tcc +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tmap.tcc @@ -23,48 +23,48 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ -#include <taglib/toolkit/trefcounter.h> - namespace TagLib { //////////////////////////////////////////////////////////////////////////////// // public members //////////////////////////////////////////////////////////////////////////////// -// BIC change to RefCounter template <class Key, class T> template <class KeyP, class TP> -class Map<Key, T>::MapPrivate : public RefCounterOld +class Map<Key, T>::MapPrivate { public: - MapPrivate() : RefCounterOld() {} + MapPrivate() = default; #ifdef WANT_CLASS_INSTANTIATION_OF_MAP - MapPrivate(const std::map<class KeyP, class TP>& m) : RefCounterOld(), map(m) {} + MapPrivate(const std::map<class KeyP, class TP>& m) : map(m) {} + MapPrivate(std::initializer_list<std::pair<const class KeyP, class TP>> init) : map(init) {} + std::map<class KeyP, class TP> map; #else - MapPrivate(const std::map<KeyP, TP>& m) : RefCounterOld(), map(m) {} + MapPrivate(const std::map<KeyP, TP>& m) : map(m) {} + MapPrivate(std::initializer_list<std::pair<const KeyP, TP>> init) : map(init) {} + std::map<KeyP, TP> map; #endif }; template <class Key, class T> Map<Key, T>::Map() : - d(new MapPrivate<Key, T>()) + d(std::make_shared<MapPrivate<Key, T>>()) { } template <class Key, class T> -Map<Key, T>::Map(const Map<Key, T> &m) : d(m.d) +Map<Key, T>::Map(const Map<Key, T> &) = default; + +template <class Key, class T> +Map<Key, T>::Map(std::initializer_list<std::pair<const Key, T>> init) : + d(std::make_shared<MapPrivate<Key, T>>(init)) { - d->ref(); } template <class Key, class T> -Map<Key, T>::~Map() -{ - if(d->deref()) - delete(d); -} +Map<Key, T>::~Map() = default; template <class Key, class T> typename Map<Key, T>::Iterator Map<Key, T>::begin() @@ -79,6 +79,12 @@ typename Map<Key, T>::ConstIterator Map<Key, T>::begin() const return d->map.begin(); } +template <class Key, class T> +typename Map<Key, T>::ConstIterator Map<Key, T>::cbegin() const +{ + return d->map.cbegin(); +} + template <class Key, class T> typename Map<Key, T>::Iterator Map<Key, T>::end() { @@ -92,6 +98,12 @@ typename Map<Key, T>::ConstIterator Map<Key, T>::end() const return d->map.end(); } +template <class Key, class T> +typename Map<Key, T>::ConstIterator Map<Key, T>::cend() const +{ + return d->map.cend(); +} + template <class Key, class T> Map<Key, T> &Map<Key, T>::insert(const Key &key, const T &value) { @@ -136,7 +148,6 @@ bool Map<Key, T>::contains(const Key &key) const template <class Key, class T> Map<Key, T> &Map<Key,T>::erase(Iterator it) { - detach(); d->map.erase(it); return *this; } @@ -155,6 +166,13 @@ unsigned int Map<Key, T>::size() const return static_cast<unsigned int>(d->map.size()); } +template <class Key, class T> +T Map<Key, T>::value(const Key &key, const T &defaultValue) const +{ + auto it = d->map.find(key); + return it != d->map.end() ? it->second : defaultValue; +} + template <class Key, class T> const T &Map<Key, T>::operator[](const Key &key) const { @@ -169,20 +187,35 @@ T &Map<Key, T>::operator[](const Key &key) } template <class Key, class T> -Map<Key, T> &Map<Key, T>::operator=(const Map<Key, T> &m) +Map<Key, T> &Map<Key, T>::operator=(const Map<Key, T> &) = default; + +template <class Key, class T> +Map<Key, T> &Map<Key, T>::operator=(std::initializer_list<std::pair<const Key, T>> init) { - Map<Key, T>(m).swap(*this); + Map(init).swap(*this); return *this; } template <class Key, class T> -void Map<Key, T>::swap(Map<Key, T> &m) +void Map<Key, T>::swap(Map<Key, T> &m) noexcept { using std::swap; swap(d, m.d); } +template <class Key, class T> +bool Map<Key, T>::operator==(const Map<Key, T> &m) const +{ + return d->map == m.d->map; +} + +template <class Key, class T> +bool Map<Key, T>::operator!=(const Map<Key, T> &m) const +{ + return d->map != m.d->map; +} + //////////////////////////////////////////////////////////////////////////////// // protected members //////////////////////////////////////////////////////////////////////////////// @@ -190,9 +223,8 @@ void Map<Key, T>::swap(Map<Key, T> &m) template <class Key, class T> void Map<Key, T>::detach() { - if(d->count() > 1) { - d->deref(); - d = new MapPrivate<Key, T>(d->map); + if(d.use_count() > 1) { + d = std::make_shared<MapPrivate<Key, T>>(d->map); } } diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tpicturetype.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tpicturetype.h new file mode 100644 index 000000000..f16fa833e --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tpicturetype.h @@ -0,0 +1,122 @@ +/*************************************************************************** + copyright : (C) 2023 by Urs Fleisch + email : ufleisch@users.sourceforge.net + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_PICTURETYPE_H +#define TAGLIB_PICTURETYPE_H + +// THIS FILE IS NOT A PART OF THE TAGLIB API + +#ifndef DO_NOT_DOCUMENT // tell Doxygen not to document this header + +#include "taglib_export.h" + +/*! + * Declare a picture type \a name enumeration inside a class. + * Declares a picture type enum according to the ID3v2 specification and + * adds methods \c typeToString() and \c typeFromString(). + * + * \code {.cpp} + * class MyClass { + * public: + * DECLARE_PICTURE_TYPE_ENUM(Type) + * (..) + * } + * \endcode + */ +#define DECLARE_PICTURE_TYPE_ENUM(name) \ +enum name { \ + /*! A type not enumerated below */ \ + Other = 0x00, \ + /*! 32x32 PNG image that should be used as the file icon */ \ + FileIcon = 0x01, \ + /*! File icon of a different size or format */ \ + OtherFileIcon = 0x02, \ + /*! Front cover image of the album */ \ + FrontCover = 0x03, \ + /*! Back cover image of the album */ \ + BackCover = 0x04, \ + /*! Inside leaflet page of the album */ \ + LeafletPage = 0x05, \ + /*! Image from the album itself */ \ + Media = 0x06, \ + /*! Picture of the lead artist or soloist */ \ + LeadArtist = 0x07, \ + /*! Picture of the artist or performer */ \ + Artist = 0x08, \ + /*! Picture of the conductor */ \ + Conductor = 0x09, \ + /*! Picture of the band or orchestra */ \ + Band = 0x0A, \ + /*! Picture of the composer */ \ + Composer = 0x0B, \ + /*! Picture of the lyricist or text writer */ \ + Lyricist = 0x0C, \ + /*! Picture of the recording location or studio */ \ + RecordingLocation = 0x0D, \ + /*! Picture of the artists during recording */ \ + DuringRecording = 0x0E, \ + /*! Picture of the artists during performance */ \ + DuringPerformance = 0x0F, \ + /*! Picture from a movie or video related to the track */ \ + MovieScreenCapture = 0x10, \ + /*! Picture of a large, coloured fish */ \ + ColouredFish = 0x11, \ + /*! Illustration related to the track */ \ + Illustration = 0x12, \ + /*! Logo of the band or performer */ \ + BandLogo = 0x13, \ + /*! Logo of the publisher (record company) */ \ + PublisherLogo = 0x14 \ +}; \ +static TagLib::String typeToString(name type) { \ + return TagLib::Utils::pictureTypeToString(type); \ +} \ +static name typeFromString(const TagLib::String &str) { \ + return static_cast<name>( \ + TagLib::Utils::pictureTypeFromString(str)); \ +} + +namespace TagLib { + + class String; + + namespace Utils { + + /*! + * Get string representation of picture type. + */ + String TAGLIB_EXPORT pictureTypeToString(int type); + + /*! + * Get picture type from string representation. + */ + int TAGLIB_EXPORT pictureTypeFromString(const String& str); + + } // namespace Utils +} // namespace TagLib + +#endif + +#endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tpropertymap.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tpropertymap.h similarity index 71% rename from Frameworks/TagLib/taglib/taglib/toolkit/tpropertymap.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tpropertymap.h index 78eec3041..f21c526b4 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tpropertymap.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tpropertymap.h @@ -23,17 +23,23 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ -#ifndef TAGLIB_PROPERTYMAP_H_ -#define TAGLIB_PROPERTYMAP_H_ +#ifndef TAGLIB_PROPERTYMAP_H +#define TAGLIB_PROPERTYMAP_H -#include <taglib/toolkit/tmap.h> -#include <taglib/toolkit/tstringlist.h> +#include "tmap.h" +#include "tstringlist.h" + +#ifdef _MSC_VER +// Explained at end of tpropertymap.cpp +TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE +extern template class TagLib::Map<TagLib::String, TagLib::StringList>; +#endif namespace TagLib { - typedef Map<String,StringList> SimplePropertyMap; + using SimplePropertyMap = Map<String, StringList>; - //! A map for format-independent <key,valuelist> tag representations. + //! A map for format-independent <key,values> tag representations. /*! * This map implements a generic representation of textual audio metadata @@ -41,6 +47,9 @@ namespace TagLib { * and a nonempty list of corresponding values, each value being an arbitrary * unicode String. * + * See \ref p_propertymapping for the mapping of the different formats to + * properties. + * * Note that most metadata formats pose additional conditions on the tag keys. The * most popular ones (Vorbis, APE, ID3v2) should support all ASCII only words of * length between 2 and 16. @@ -61,7 +70,6 @@ namespace TagLib { * - ORIGINALDATE * - GENRE * - COMMENT - * - UNSYNCEDLYRICS * * Sort names: * @@ -77,7 +85,7 @@ namespace TagLib { * - LYRICIST * - CONDUCTOR * - REMIXER - * - PERFORMER:<XXXX> + * - PERFORMER:\<XXXX> * * Other tags: * @@ -111,25 +119,31 @@ namespace TagLib { * */ - class TAGLIB_EXPORT PropertyMap: public SimplePropertyMap + class PropertyMap: public SimplePropertyMap { public: + using Iterator = SimplePropertyMap::Iterator; + using ConstIterator = SimplePropertyMap::ConstIterator; - typedef SimplePropertyMap::Iterator Iterator; - typedef SimplePropertyMap::ConstIterator ConstIterator; - + TAGLIB_EXPORT PropertyMap(); + TAGLIB_EXPORT PropertyMap(const PropertyMap &m); + TAGLIB_EXPORT + PropertyMap &operator=(const PropertyMap &other); + /*! * Creates a PropertyMap initialized from a SimplePropertyMap. Copies all * entries from \a m that have valid keys. * Invalid keys will be appended to the unsupportedData() list. */ + TAGLIB_EXPORT PropertyMap(const SimplePropertyMap &m); - virtual ~PropertyMap(); + TAGLIB_EXPORT + ~PropertyMap(); /*! * Inserts \a values under \a key in the map. If \a key already exists, @@ -137,6 +151,7 @@ namespace TagLib { * The returned value indicates success, i.e. whether \a key is a * valid key. */ + TAGLIB_EXPORT bool insert(const String &key, const StringList &values); /*! @@ -145,38 +160,45 @@ namespace TagLib { * The returned value indicates success, i.e. whether \a key is a * valid key. */ + TAGLIB_EXPORT bool replace(const String &key, const StringList &values); /*! * Find the first occurrence of \a key. */ + TAGLIB_EXPORT Iterator find(const String &key); /*! * Find the first occurrence of \a key. */ + TAGLIB_EXPORT ConstIterator find(const String &key) const; /*! - * Returns true if the map contains values for \a key. + * Returns \c true if the map contains values for \a key. */ + TAGLIB_EXPORT bool contains(const String &key) const; /*! - * Returns true if this map contains all keys of \a other - * and the values coincide for that keys. Does not take + * Returns \c true if this map contains all keys of \a other + * and the values coincide for those keys. Does not take * the unsupportedData list into account. */ + TAGLIB_EXPORT bool contains(const PropertyMap &other) const; /*! * Erase the \a key and its values from the map. */ + TAGLIB_EXPORT PropertyMap &erase(const String &key); /*! * Erases from this map all keys that appear in \a other. */ + TAGLIB_EXPORT PropertyMap &erase(const PropertyMap &other); /*! @@ -185,59 +207,84 @@ namespace TagLib { * are appended to that of the first. * The unsupportedData() lists are concatenated as well. */ + TAGLIB_EXPORT PropertyMap &merge(const PropertyMap &other); + /*! + * Returns the value associated with \a key. + * + * If the map does not contain \a key, it returns \a defaultValue. + * If no \a defaultValue is specified, it returns an empty string list. + */ + TAGLIB_EXPORT + StringList value(const String &key, + const StringList &defaultValue = StringList()) const; + /*! * Returns a reference to the value associated with \a key. * - * \note: If \a key is not contained in the map, an empty + * \note If \a key is not contained in the map, an empty * StringList is returned without error. */ + TAGLIB_EXPORT const StringList &operator[](const String &key) const; /*! * Returns a reference to the value associated with \a key. * - * \note: If \a key is not contained in the map, an empty + * \note If \a key is not contained in the map, an empty * StringList is returned. You can also directly add entries * by using this function as an lvalue. */ + TAGLIB_EXPORT StringList &operator[](const String &key); /*! - * Returns true if and only if \other has the same contents as this map. + * Returns \c true if and only if \a other has the same contents as this map. */ + TAGLIB_EXPORT bool operator==(const PropertyMap &other) const; /*! - * Returns false if and only \other has the same contents as this map. + * Returns \c false if and only if \a other has the same contents as this map. */ + TAGLIB_EXPORT bool operator!=(const PropertyMap &other) const; /*! - * If a PropertyMap is read from a File object using File::properties(), + * If a PropertyMap is read from a File object using File::properties() + * (or a FileRef object using FileRef::properties()), * the StringList returned from this function will represent metadata * that could not be parsed into the PropertyMap representation. This could * be e.g. binary data, unknown ID3 frames, etc. - * You can remove items from the returned list, which tells TagLib to remove - * those unsupported elements if you call File::setProperties() with the - * same PropertyMap as argument. + * + * \see File::removeUnsupportedProperties(), + * FileRef::removeUnsupportedProperties() */ - StringList &unsupportedData(); + TAGLIB_EXPORT const StringList &unsupportedData() const; + /*! + * Add property \a key to list of unsupported data. + * + * \see unsupportedData() + */ + TAGLIB_EXPORT + void addUnsupportedData(const String &key); + /*! * Removes all entries which have an empty value list. */ + TAGLIB_EXPORT void removeEmpty(); + TAGLIB_EXPORT String toString() const; private: - - - StringList unsupported; + class PropertyMapPrivate; + std::unique_ptr<PropertyMapPrivate> d; }; -} -#endif /* TAGLIB_PROPERTYMAP_H_ */ +} // namespace TagLib +#endif /* TAGLIB_PROPERTYMAP_H */ diff --git a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudiofile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/trueaudiofile.h similarity index 73% rename from Frameworks/TagLib/taglib/taglib/trueaudio/trueaudiofile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/trueaudiofile.h index 6d10017da..ddc191741 100644 --- a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudiofile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/trueaudiofile.h @@ -30,8 +30,9 @@ #ifndef TAGLIB_TRUEAUDIOFILE_H #define TAGLIB_TRUEAUDIOFILE_H -#include <taglib/toolkit/tfile.h> -#include <taglib/trueaudio/trueaudioproperties.h> +#include "taglib.h" +#include "tfile.h" +#include "trueaudioproperties.h" namespace TagLib { @@ -39,14 +40,13 @@ namespace TagLib { namespace ID3v2 { class Tag; class FrameFactory; } namespace ID3v1 { class Tag; } - namespace APE { class Tag; } //! An implementation of TrueAudio metadata /*! - * This is implementation of TrueAudio metadata. + * This is an implementation of TrueAudio metadata. * - * This supports ID3v1, ID3v2, and APE tags as well as reading stream + * This supports ID3v1 and ID3v2 tags as well as reading stream * properties from the file. */ @@ -75,58 +75,70 @@ namespace TagLib { ID3v1 = 0x0001, //! Matches ID3v2 tags. ID3v2 = 0x0002, - //! Matches APE tags. - APE = 0x0004, //! Matches all tag types. AllTags = 0xffff }; /*! - * Constructs a TrueAudio file from \a file. If \a readProperties is true + * Constructs a TrueAudio file from \a file. If \a readProperties is \c true * the file's audio properties will also be read. * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). + * * \note In the current implementation, \a propertiesStyle is ignored. */ File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); /*! - * Constructs a TrueAudio file from \a file. If \a readProperties is true + * Constructs a TrueAudio file from \a file. If \a readProperties is \c true * the file's audio properties will also be read. * - * If this file contains and ID3v2 tag the frames will be created using + * If this file contains an ID3v2 tag, the frames will be created using * \a frameFactory. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * \deprecated Use the constructor above. */ + TAGLIB_DEPRECATED File(FileName file, ID3v2::FrameFactory *frameFactory, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs a TrueAudio file from \a stream. If \a readProperties is true + * Constructs a TrueAudio file from \a stream. If \a readProperties is \c true * the file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is * responsible for deleting it after the File object. * - * \note In the current implementation, \a propertiesStyle is ignored. - */ - File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); - - /*! - * Constructs a TrueAudio file from \a stream. If \a readProperties is true - * the file's audio properties will also be read. - * - * \note TagLib will *not* take ownership of the stream, the caller is - * responsible for deleting it after the File object. - * - * If this file contains and ID3v2 tag the frames will be created using + * If this file contains an ID3v2 tag, the frames will be created using * \a frameFactory. * * \note In the current implementation, \a propertiesStyle is ignored. */ + File(IOStream *stream, bool readProperties = true, + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); + + /*! + * Constructs a TrueAudio file from \a stream. If \a readProperties is \c true + * the file's audio properties will also be read. + * + * \note TagLib will *not* take ownership of the stream, the caller is + * responsible for deleting it after the File object. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory. + * + * \note In the current implementation, \a propertiesStyle is ignored. + * + * \deprecated Use the constructor above. + */ + TAGLIB_DEPRECATED File(IOStream *stream, ID3v2::FrameFactory *frameFactory, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); @@ -134,61 +146,55 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the Tag for this file. */ - virtual TagLib::Tag *tag() const; + TagLib::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * If the file contains both ID3v1 and v2 tags, only ID3v2 will be - * converted to the PropertyMap. If the file contains APE tags, - * only they will be converted to the PropertyMap. + * converted to the PropertyMap. */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified property interface -- import function. - * Creates an APE tag if necessary. If an ID3v1 tag exists, it will + * Creates in ID3v2 tag if necessary. If an ID3v1 tag exists, it will * be updated as well, within the limitations of ID3v1. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &unsupported) override; /*! * Returns the TrueAudio::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; - - /*! - * Set the ID3v2::FrameFactory to something other than the default. - * - * \see ID3v2FrameFactory - * \deprecated This value should be passed in via the constructor - */ - TAGLIB_DEPRECATED void setID3v2FrameFactory(const ID3v2::FrameFactory *factory); + Properties *audioProperties() const override; /*! * Saves the file. */ - virtual bool save(); + bool save() override; /*! * Returns a pointer to the ID3v1 tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid ID3v1 tag. If \a create is \c true it will create * an ID3v1 tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an ID3v1 tag. Use hasID3v1Tag() to check if the file * on disk actually has an ID3v1 tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the TrueAudio::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -199,15 +205,15 @@ namespace TagLib { /*! * Returns a pointer to the ID3v2 tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid ID3v2 tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid ID3v2 tag. If \a create is \c true it will create * an ID3v2 tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an ID3v2 tag. Use hasID3v2Tag() to check if the file * on disk actually has an ID3v2 tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the TrueAudio::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -215,25 +221,6 @@ namespace TagLib { */ ID3v2::Tag *ID3v2Tag(bool create = false); - /*! - * Returns a pointer to the APE tag of the file. - * - * If \a create is false (the default) this may return a null pointer - * if there is no valid APE tag. If \a create is true it will create - * an APE tag if one does not exist and returns a valid pointer. - * - * \note This may return a valid pointer regardless of whether or not the - * file on disk has an APE tag. Use hasAPETag() to check if the file - * on disk actually has an APE tag. - * - * \note The Tag <b>is still</b> owned by the TTA::File and should not be - * deleted by the user. It will be deleted when the file (object) is - * destroyed. - * - * \see hasAPETag() - */ - APE::Tag *APETag(bool create = false); - /*! * This will remove the tags that match the OR-ed together TagTypes from the * file. By default it removes all tags. @@ -258,13 +245,6 @@ namespace TagLib { */ bool hasID3v2Tag() const; - /*! - * Returns whether or not the file on disk actually has an APE tag. - * - * \see APETag() - */ - bool hasAPETag() const; - /*! * Returns whether or not the given \a stream can be opened as a TrueAudio * file. @@ -275,15 +255,13 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace TrueAudio +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudioproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/trueaudioproperties.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/trueaudio/trueaudioproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/trueaudioproperties.h index d9fdcba8e..14f85bf2b 100644 --- a/Frameworks/TagLib/taglib/taglib/trueaudio/trueaudioproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/trueaudioproperties.h @@ -30,20 +30,19 @@ #ifndef TAGLIB_TRUEAUDIOPROPERTIES_H #define TAGLIB_TRUEAUDIOPROPERTIES_H -#include <taglib/audioproperties.h> +#include "tbytevector.h" +#include "audioproperties.h" namespace TagLib { namespace TrueAudio { - class File; - - static const unsigned int HeaderSize = 18; + static constexpr unsigned int HeaderSize = 18; //! An implementation of audio property reading for TrueAudio /*! - * This reads the data from an TrueAudio stream found in the AudioProperties + * This reads the data from a TrueAudio stream found in the AudioProperties * API. */ @@ -54,22 +53,15 @@ namespace TagLib { * Create an instance of TrueAudio::Properties with the data read from the * ByteVector \a data. */ - Properties(const ByteVector &data, long streamLength, ReadStyle style = Average); + Properties(const ByteVector &data, offset_t streamLength, ReadStyle style = Average); /*! * Destroys this TrueAudio::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in seconds. The length is rounded down to @@ -77,31 +69,29 @@ namespace TagLib { * * \see lengthInMilliseconds() */ - // BIC: make virtual - int lengthInSeconds() const; + int lengthInSeconds() const override; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample. @@ -119,15 +109,13 @@ namespace TagLib { int ttaVersion() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(const ByteVector &data, long streamLength); + void read(const ByteVector &data, offset_t streamLength); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace TrueAudio +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tstring.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tstring.h similarity index 75% rename from Frameworks/TagLib/taglib/taglib/toolkit/tstring.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tstring.h index 8fb8ef750..f7e408151 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tstring.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tstring.h @@ -26,12 +26,10 @@ #ifndef TAGLIB_STRING_H #define TAGLIB_STRING_H -#include <taglib/taglib_export.h> -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tbytevector.h> - #include <string> -#include <iostream> + +#include "tbytevector.h" +#include "taglib_export.h" /*! * \relates TagLib::String @@ -45,7 +43,7 @@ #if defined(QT_VERSION) && (QT_VERSION >= 0x040000) #define QStringToTString(s) TagLib::String(s.toUtf8().data(), TagLib::String::UTF8) #else -#define QStringToTString(s) TagLib::String(s.utf8().data(), TagLib::String::UTF8) +#define QStringToTString(s) TagLib::String((s).utf8().data(), TagLib::String::UTF8) #endif /*! @@ -58,7 +56,7 @@ * */ -#define TStringToQString(s) QString::fromUtf8(s.toCString(true)) +#define TStringToQString(s) QString::fromUtf8((s).toCString(true)) namespace TagLib { @@ -68,17 +66,17 @@ namespace TagLib { /*! * This is an implicitly shared \e wide string. For storage it uses - * TagLib::wstring, but as this is an <i>implementation detail</i> this of - * course could change. Strings are stored internally as UTF-16(without BOM/ - * CPU byte order) + * std::wstring, but as this is an <i>implementation detail</i> this of + * course could change. Strings are stored internally as UTF-16 (without + * BOM/CPU byte order) * * The use of implicit sharing means that copying a string is cheap, the only * \e cost comes into play when the copy is modified. Prior to that the string * just has a pointer to the data of the \e parent String. This also makes * this class suitable as a function return type. * - * In addition to adding implicit sharing, this class keeps track of four - * possible encodings, which are the four supported by the ID3v2 standard. + * In addition to adding implicit sharing, this class keeps track of + * possible encodings, which are those supported by the ID3v2 standard. */ class TAGLIB_EXPORT String @@ -86,17 +84,18 @@ namespace TagLib { public: #ifndef DO_NOT_DOCUMENT - typedef TagLib::wstring::iterator Iterator; - typedef TagLib::wstring::const_iterator ConstIterator; + using Iterator = std::wstring::iterator; + using ConstIterator = std::wstring::const_iterator; #endif /** * The four types of string encodings supported by the ID3v2 specification. + * (plus UTF16LE). * ID3v1 is assumed to be Latin1 and Ogg Vorbis comments use UTF8. */ enum Type { /*! - * IS08859-1, or <i>Latin1</i> encoding. 8 bit characters. + * ISO-8859-1, or <i>Latin1</i> encoding. 8 bit characters. */ Latin1 = 0, /*! @@ -139,22 +138,24 @@ namespace TagLib { String(const std::string &s, Type t = Latin1); /*! - * Makes a deep copy of the data in \a s. - * - * /note If \a t is UTF16LE, the byte order of \a s will be swapped regardless - * of the CPU byte order. If UTF16BE, it will not be swapped. This behavior - * will be changed in TagLib2.0. + * Makes a deep copy of the data in \a s, which are in CPU byte order. */ - String(const wstring &s, Type t = UTF16BE); + String(const std::wstring &s); /*! - * Makes a deep copy of the data in \a s. - * - * /note If \a t is UTF16LE, the byte order of \a s will be swapped regardless - * of the CPU byte order. If UTF16BE, it will not be swapped. This behavior - * will be changed in TagLib2.0. + * Makes a deep copy of the data in \a s, which are in byte order \a t. */ - String(const wchar_t *s, Type t = UTF16BE); + String(const std::wstring &s, Type t); + + /*! + * Makes a deep copy of the data in \a s, which are in CPU byte order. + */ + String(const wchar_t *s); + + /*! + * Makes a deep copy of the data in \a s, which are in byte order \a t. + */ + String(const wchar_t *s, Type t); /*! * Makes a deep copy of the data in \a c. @@ -185,28 +186,28 @@ namespace TagLib { /*! * Destroys this String instance. */ - virtual ~String(); + ~String(); /*! - * Returns a deep copy of this String as an std::string. The returned string - * is encoded in UTF8 if \a unicode is true, otherwise Latin1. + * Returns a deep copy of this String as an \c std::string. The returned string + * is encoded in UTF8 if \a unicode is \c true, otherwise Latin1. * * \see toCString() */ std::string to8Bit(bool unicode = false) const; /*! - * Returns a deep copy of this String as a wstring. The returned string is - * encoded in UTF-16 (without BOM/CPU byte order), not UTF-32 even if wchar_t + * Returns a deep copy of this String as a \c wstring. The returned string is + * encoded in UTF-16 (without BOM/CPU byte order), not UTF-32 even if \c wchar_t * is 32-bit wide. * * \see toCWString() */ - wstring toWString() const; + std::wstring toWString() const; /*! * Creates and returns a standard C-style (null-terminated) version of this - * String. The returned string is encoded in UTF8 if \a unicode is true, + * String. The returned string is encoded in UTF8 if \a unicode is \c true, * otherwise Latin1. * * The returned string is still owned by this String and should not be deleted @@ -227,7 +228,7 @@ namespace TagLib { /*! * Returns a standard C-style (null-terminated) wide character version of * this String. The returned string is encoded in UTF-16 (without BOM/CPU byte - * order), not UTF-32 even if wchar_t is 32-bit wide. + * order), not UTF-32 even if \c wchar_t is 32-bit wide. * * The returned string is still owned by this String and should not be deleted * by the user. @@ -252,6 +253,11 @@ namespace TagLib { */ ConstIterator begin() const; + /*! + * Returns a const iterator pointing to the beginning of the string. + */ + ConstIterator cbegin() const; + /*! * Returns an iterator pointing to the end of the string (the position * after the last character). @@ -264,6 +270,12 @@ namespace TagLib { */ ConstIterator end() const; + /*! + * Returns a const iterator pointing to the end of the string (the position + * after the last character). + */ + ConstIterator cend() const; + /*! * Finds the first occurrence of pattern \a s in this string starting from * \a offset. If the pattern is not found, -1 is returned. @@ -283,7 +295,7 @@ namespace TagLib { StringList split(const String &separator = " ") const; /*! - * Returns true if the strings starts with the substring \a s. + * Returns \c true if the string starts with the substring \a s. */ bool startsWith(const String &s) const; @@ -322,26 +334,10 @@ namespace TagLib { unsigned int length() const; /*! - * Returns true if the string is empty. - * - * \see isNull() + * Returns \c true if the string is empty. */ bool isEmpty() const; - /*! - * Returns true if this string is null -- i.e. it is a copy of the - * String::null string. - * - * \note A string can be empty and not null. So do not use this method to - * check if the string is empty. - * - * \see isEmpty() - * - * \deprecated - */ - // BIC: remove - TAGLIB_DEPRECATED bool isNull() const; - /*! * Returns a ByteVector containing the string's data. If \a t is Latin1 or * UTF8, this will return a vector of 8 bit characters, otherwise it will use @@ -354,41 +350,14 @@ namespace TagLib { */ ByteVector data(Type t) const; - /*! - * Convert the string to an integer. - * - * Returns the integer if the conversion was successful or 0 if the - * string does not represent a number. - */ - // BIC: merge with the method below - int toInt(unsigned int base = 10) const; - /*! * Convert the string to an integer. * * If the conversion was successful, it sets the value of \a *ok to - * true and returns the integer. Otherwise it sets \a *ok to false + * \c true and returns the integer. Otherwise it sets \a *ok to \c false * and the result is undefined. */ - int toInt(bool *ok, unsigned int base = 10) const; - - /*! - * Convert the string to a float. - * - * Returns the float if the conversion was successful or 0 if the - * string does not represent a number. - */ - // BIC: merge with the method below - float toFloat() const; - - /*! - * Convert the string to a float. - * - * If the conversion was successful, it sets the value of \a *ok to - * true and returns the float. Otherwise it sets \a *ok to false - * and the result is undefined. - */ - float toFloat(bool *ok) const; + int toInt(bool *ok = nullptr) const; /*! * Returns a string with the leading and trailing whitespace stripped. @@ -396,12 +365,12 @@ namespace TagLib { String stripWhiteSpace() const; /*! - * Returns true if the file only uses characters required by Latin1. + * Returns \c true if the file only uses characters required by Latin1. */ bool isLatin1() const; /*! - * Returns true if the file only uses characters required by (7-bit) ASCII. + * Returns \c true if the file only uses characters required by (7-bit) ASCII. */ bool isAscii() const; @@ -411,9 +380,9 @@ namespace TagLib { static String number(int n); /*! - * Converts the base-10 float \a n to a string. + * Converts the base-10 integer \a n to a string. */ - static String numberFloat(float n); + static String fromLongLong(long long n); /*! * Returns a reference to the character at position \a i. @@ -427,37 +396,37 @@ namespace TagLib { /*! * Compares each character of the String with each character of \a s and - * returns true if the strings match. + * returns \c true if the strings match. */ bool operator==(const String &s) const; /*! * Compares each character of the String with each character of \a s and - * returns false if the strings match. + * returns \c false if the strings match. */ bool operator!=(const String &s) const; /*! * Compares each character of the String with each character of \a s and - * returns true if the strings match. + * returns \c true if the strings match. */ bool operator==(const char *s) const; /*! * Compares each character of the String with each character of \a s and - * returns false if the strings match. + * returns \c false if the strings match. */ bool operator!=(const char *s) const; /*! * Compares each character of the String with each character of \a s and - * returns true if the strings match. + * returns \c true if the strings match. */ bool operator==(const wchar_t *s) const; /*! * Compares each character of the String with each character of \a s and - * returns false if the strings match. + * returns \c false if the strings match. */ bool operator!=(const wchar_t *s) const; @@ -500,7 +469,7 @@ namespace TagLib { /*! * Performs a deep copy of the data in \a s. */ - String &operator=(const wstring &s); + String &operator=(const std::wstring &s); /*! * Performs a deep copy of the data in \a s. @@ -528,28 +497,17 @@ namespace TagLib { String &operator=(const ByteVector &v); /*! - * Exchanges the content of the String by the content of \a s. + * Exchanges the content of the String with the content of \a s. */ - void swap(String &s); + void swap(String &s) noexcept; /*! * To be able to use this class in a Map, this operator needed to be - * implemented. Returns true if \a s is less than this string in a byte-wise + * implemented. Returns \c true if \a s is less than this string in a byte-wise * comparison. */ bool operator<(const String &s) const; - /*! - * A null string provided for convenience. - * - * \warning Do not modify this variable. It will mess up the internal state - * of TagLib. - * - * \deprecated - */ - // BIC: remove - TAGLIB_DEPRECATED static String null; - protected: /*! * If this String is being shared via implicit sharing, do a deep copy of the @@ -559,38 +517,32 @@ namespace TagLib { void detach(); private: - /*! - * \deprecated This variable is no longer used, but NEVER remove this. It - * may lead to a linkage error. - */ - // BIC: remove - TAGLIB_DEPRECATED static const Type WCharByteOrder; - class StringPrivate; - StringPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<StringPrivate> d; }; -} +} // namespace TagLib /*! * \relates TagLib::String * * Concatenates \a s1 and \a s2 and returns the result as a string. */ -TAGLIB_EXPORT const TagLib::String operator+(const TagLib::String &s1, const TagLib::String &s2); +TAGLIB_EXPORT TagLib::String operator+(const TagLib::String &s1, const TagLib::String &s2); /*! * \relates TagLib::String * * Concatenates \a s1 and \a s2 and returns the result as a string. */ -TAGLIB_EXPORT const TagLib::String operator+(const char *s1, const TagLib::String &s2); +TAGLIB_EXPORT TagLib::String operator+(const char *s1, const TagLib::String &s2); /*! * \relates TagLib::String * * Concatenates \a s1 and \a s2 and returns the result as a string. */ -TAGLIB_EXPORT const TagLib::String operator+(const TagLib::String &s1, const char *s2); +TAGLIB_EXPORT TagLib::String operator+(const TagLib::String &s1, const char *s2); /*! diff --git a/Frameworks/TagLib/taglib/taglib/toolkit/tstringlist.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tstringlist.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/toolkit/tstringlist.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tstringlist.h index 630db99e8..a12cf3abf 100644 --- a/Frameworks/TagLib/taglib/taglib/toolkit/tstringlist.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tstringlist.h @@ -26,29 +26,28 @@ #ifndef TAGLIB_STRINGLIST_H #define TAGLIB_STRINGLIST_H -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tbytevectorlist.h> -#include <taglib/taglib_export.h> - -#include <iostream> +#include "tstring.h" +#include "tlist.h" +#include "tbytevectorlist.h" +#include "taglib_export.h" namespace TagLib { //! A list of strings /*! - * This is a specialization of the List class with some members convention for - * string operations. + * This is a specialization of the List class with some convenience members + * for string operations. */ - class TAGLIB_EXPORT StringList : public List<String> + class StringList : public List<String> { public: /*! * Constructs an empty StringList. */ + TAGLIB_EXPORT StringList(); /*! @@ -56,60 +55,79 @@ namespace TagLib { * implicitly shared, this method is lightweight and suitable for * pass-by-value usage. */ + TAGLIB_EXPORT StringList(const StringList &l); + /*! + * Construct a StringList with the contents of the braced initializer list. + */ + TAGLIB_EXPORT + StringList(std::initializer_list<String> init); + + TAGLIB_EXPORT + StringList &operator=(const StringList &); + TAGLIB_EXPORT + StringList &operator=(std::initializer_list<String> init); + /*! * Constructs a StringList with \a s as a member. */ + TAGLIB_EXPORT StringList(const String &s); /*! - * Makes a deep copy of the data in \a vl. + * Makes a deep copy of the data in \a bl. * * \note This should only be used with the 8-bit codecs Latin1 and UTF8, when * used with other codecs it will simply print a warning and exit. */ - StringList(const ByteVectorList &vl, String::Type t = String::Latin1); + TAGLIB_EXPORT + StringList(const ByteVectorList &bl, String::Type t = String::Latin1); /*! * Destroys this StringList instance. */ - virtual ~StringList(); + TAGLIB_EXPORT + ~StringList(); /*! * Concatenate the list of strings into one string separated by \a separator. */ + TAGLIB_EXPORT String toString(const String &separator = " ") const; /*! * Appends \a s to the end of the list and returns a reference to the * list. */ + TAGLIB_EXPORT StringList &append(const String &s); /*! * Appends all of the values in \a l to the end of the list and returns a * reference to the list. */ + TAGLIB_EXPORT StringList &append(const StringList &l); /*! * Splits the String \a s into several strings at \a pattern. This will not include * the pattern in the returned strings. */ + TAGLIB_EXPORT static StringList split(const String &s, const String &pattern); private: class StringListPrivate; - StringListPrivate *d; + std::unique_ptr<StringListPrivate> d; }; -} +} // namespace TagLib /*! * \related TagLib::StringList * Send the StringList to an output stream. */ -std::ostream &operator<<(std::ostream &s, const TagLib::StringList &l); +std::ostream TAGLIB_EXPORT &operator<<(std::ostream &s, const TagLib::StringList &l); #endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tvariant.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tvariant.h new file mode 100644 index 000000000..a8408e54b --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tvariant.h @@ -0,0 +1,211 @@ +/*************************************************************************** + copyright : (C) 2023 by Urs Fleisch + email : ufleisch@users.sourceforge.net + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_VARIANT_H +#define TAGLIB_VARIANT_H + +#include <iosfwd> + +#include "tlist.h" +#include "tmap.h" +#include "taglib_export.h" + +// Forward declaration needed for friend function +namespace TagLib { class Variant; } + +/*! + * \relates TagLib::Variant + * + * Send the variant to an output stream. + */ +TAGLIB_EXPORT std::ostream &operator<<(std::ostream &s, const TagLib::Variant &v); + +namespace TagLib { + + class String; + class StringList; + class ByteVector; + class ByteVectorList; + + //! An implicitly shared discriminated union. + + /*! + * This is an implicitly shared discriminated union. + * + * The use of implicit sharing means that copying a variant is cheap. + * These Variant objects are immutable (have only const methods). + */ + class TAGLIB_EXPORT Variant + { + public: + /*! + * Types which can be stored in a variant. + */ + // The number and order of these types must correspond to the template + // parameters for StdVariantType in tvariant.cpp! + enum Type { + Void, //!< variant is empty + Bool, //!< \c bool + Int, //!< \c int + UInt, //!< <tt>unsigned int</tt> + LongLong, //!< <tt>long long</tt> + ULongLong, //!< <tt>unsigned long long</tt> + Double, //!< \c double + String, //!< String + StringList, //!< StringList + ByteVector, //!< ByteVector + ByteVectorList, //!< ByteVectorList + VariantList, //!< \link TagLib::VariantList VariantList \endlink + VariantMap //!< \link TagLib::VariantMap VariantMap \endlink + }; + + /*! + * Constructs an empty Variant. + */ + Variant(); + + Variant(int val); + Variant(unsigned int val); + Variant(long long val); + Variant(unsigned long long val); + Variant(bool val); + Variant(double val); + Variant(const char *val); + Variant(const TagLib::String &val); + Variant(const TagLib::StringList &val); + Variant(const TagLib::ByteVector &val); + Variant(const TagLib::ByteVectorList &val); + Variant(const TagLib::List<TagLib::Variant> &val); + Variant(const TagLib::Map<TagLib::String, TagLib::Variant> &val); + + /*! + * Make a shallow, implicitly shared, copy of \a v. Because this is + * implicitly shared, this method is lightweight and suitable for + * pass-by-value usage. + */ + Variant(const Variant &v); + + /*! + * Destroys this Variant instance. + */ + ~Variant(); + + /*! + * Get the type which is currently stored in this Variant. + */ + Type type() const; + + /*! + * Returns \c true if the Variant is empty. + */ + bool isEmpty() const; + + /*! + * Extracts a value from the Variant. + * If \a ok is passed, its boolean variable will be set to \c true if the + * Variant contains the correct type, and the returned value is the value + * of the Variant. Otherwise, the \a ok variable is set to \c false and + * a dummy default value is returned. + */ + int toInt(bool *ok = nullptr) const; + + //! \copydoc toInt() + unsigned int toUInt(bool *ok = nullptr) const; + //! \copydoc toInt() + long long toLongLong(bool *ok = nullptr) const; + //! \copydoc toInt() + unsigned long long toULongLong(bool *ok = nullptr) const; + //! \copydoc toInt() + bool toBool(bool *ok = nullptr) const; + //! \copydoc toInt() + double toDouble(bool *ok = nullptr) const; + //! \copydoc toInt() + TagLib::String toString(bool *ok = nullptr) const; + //! \copydoc toInt() + TagLib::StringList toStringList(bool *ok = nullptr) const; + //! \copydoc toInt() + TagLib::ByteVector toByteVector(bool *ok = nullptr) const; + //! \copydoc toInt() + TagLib::ByteVectorList toByteVectorList(bool *ok = nullptr) const; + //! \copydoc toInt() + TagLib::List<TagLib::Variant> toList(bool *ok = nullptr) const; + //! \copydoc toInt() + TagLib::Map<TagLib::String, TagLib::Variant> toMap(bool *ok = nullptr) const; + + /*! + * Extracts value of type \a T from the Variant. + * If \a ok is passed, its boolean variable will be set to \c true if the + * Variant contains the correct type, and the returned value is the value + * of the Variant. Otherwise, the \a ok variable is set to \c false and + * a dummy default value is returned. + */ + template<typename T> + T value(bool *ok = nullptr) const; + + /*! + * Returns \c true if the Variant and \a v are of the same type and contain the + * same value. + */ + bool operator==(const Variant &v) const; + + /*! + * Returns \c true if the Variant and \a v differ in type or value. + */ + bool operator!=(const Variant &v) const; + + /*! + * Performs a shallow, implicitly shared, copy of \a v, overwriting the + * Variant's current data. + */ + Variant &operator=(const Variant &v); + + private: + friend TAGLIB_EXPORT std::ostream& ::operator<<(std::ostream &s, const TagLib::Variant &v); + class VariantPrivate; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::shared_ptr<VariantPrivate> d; + }; + + /*! A list of Variant elements. */ + using VariantList = TagLib::List<TagLib::Variant>; + + /*! A map with String keys and Variant values. */ + using VariantMap = TagLib::Map<TagLib::String, TagLib::Variant>; + + extern template TAGLIB_EXPORT bool Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT int Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT unsigned int Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT long long Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT unsigned long long Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT double Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT String Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT StringList Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT ByteVector Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT ByteVectorList Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT VariantList Variant::value(bool *ok) const; + extern template TAGLIB_EXPORT VariantMap Variant::value(bool *ok) const; +} // namespace TagLib + +#endif diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tversionnumber.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tversionnumber.h new file mode 100644 index 000000000..5d61673a7 --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/tversionnumber.h @@ -0,0 +1,142 @@ +/*************************************************************************** + copyright : (C) 2020 by Kevin Andre + email : hyperquantum@gmail.com + + copyright : (C) 2023 by Urs Fleisch + email : ufleisch@users.sourceforge.net + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * + * 02110-1301 USA * + * * + * Alternatively, this file is available under the Mozilla Public * + * License Version 1.1. You may obtain a copy of the License at * + * http://www.mozilla.org/MPL/ * + ***************************************************************************/ + +#ifndef TAGLIB_VERSIONNUMBER_H +#define TAGLIB_VERSIONNUMBER_H + +#include "taglib_export.h" + +namespace TagLib { + + class String; + + //! Version number with major, minor and patch segments. + + class TAGLIB_EXPORT VersionNumber { + public: + /*! + * Constructs a version number from \a major, \a minor and \a patch segments. + */ + constexpr VersionNumber(unsigned int major, unsigned int minor, + unsigned int patch = 0) + : m_combined(((major & 0xff) << 16) | ((minor & 0xff) << 8) + | (patch & 0xff)) { + } + + /*! + * Returns the version as an unsigned integer in the form + * (major version << 16) | (minor version << 8) | (patch version), + * e.g. 0x020100 for version 2.1.0. + */ + constexpr unsigned int combinedVersion() const { + return m_combined; + } + + /*! + * Returns the major version, e.g. 2 + */ + constexpr unsigned int majorVersion() const { + return (m_combined & 0xff0000) >> 16; + } + + /*! + * Returns the minor version, e.g. 1 + */ + constexpr unsigned int minorVersion() const { + return (m_combined & 0xff00) >> 8; + } + + /*! + * Returns the patch version, e.g. 0 + */ + constexpr unsigned int patchVersion() const { + return m_combined & 0xff; + } + + /*! + * Returns \c true if this version is equal to \a rhs. + */ + constexpr bool operator==(const VersionNumber &rhs) const { + return m_combined == rhs.m_combined; + } + + /*! + * Returns \c true if this version is not equal to \a rhs. + */ + constexpr bool operator!=(const VersionNumber &rhs) const { + return m_combined != rhs.m_combined; + } + + /*! + * Returns \c true if this version is less than \a rhs. + */ + constexpr bool operator<(const VersionNumber &rhs) const { + return m_combined < rhs.m_combined; + } + + /*! + * Returns \c true if this version is greater than \a rhs. + */ + constexpr bool operator>(const VersionNumber &rhs) const { + return m_combined > rhs.m_combined; + } + + /*! + * Returns \c true if this version is less or equal than \a rhs. + */ + constexpr bool operator<=(const VersionNumber &rhs) const { + return m_combined <= rhs.m_combined; + } + + /*! + * Returns \c true if this version is greater or equal than \a rhs. + */ + constexpr bool operator>=(const VersionNumber &rhs) const { + return m_combined >= rhs.m_combined; + } + + /*! + * Returns a string with major, minor, and patch versions separated by + * periods. + */ + String toString() const; + + private: + unsigned int m_combined; + }; + + /*! + * \relates TagLib::VersionNumber + * Returns the version number of TagLib in use at runtime. + * This does not need not be the version the application was compiled with. + */ + TAGLIB_EXPORT VersionNumber runtimeVersion(); + +} // namespace TagLib + +#endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/uniquefileidentifierframe.h similarity index 89% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/uniquefileidentifierframe.h index 35499693d..a17f8ee17 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/uniquefileidentifierframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/uniquefileidentifierframe.h @@ -26,7 +26,7 @@ #ifndef TAGLIB_UNIQUEFILEIDENTIFIERFRAME #define TAGLIB_UNIQUEFILEIDENTIFIERFRAME -#include <taglib/mpeg/id3v2/id3v2frame.h> +#include "id3v2frame.h" namespace TagLib { @@ -59,7 +59,10 @@ namespace TagLib { /*! * Destroys the frame. */ - ~UniqueFileIdentifierFrame(); + ~UniqueFileIdentifierFrame() override; + + UniqueFileIdentifierFrame(const UniqueFileIdentifierFrame &) = delete; + UniqueFileIdentifierFrame &operator=(const UniqueFileIdentifierFrame &) = delete; /*! * Returns the owner for the frame; essentially this is the key for @@ -92,9 +95,9 @@ namespace TagLib { */ void setIdentifier(const ByteVector &v); - virtual String toString() const; + String toString() const override; - PropertyMap asProperties() const; + PropertyMap asProperties() const override; /*! * UFID frames each have a unique owner. This searches for a UFID @@ -105,19 +108,17 @@ namespace TagLib { static UniqueFileIdentifierFrame *findByOwner(const Tag *tag, const String &o); protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: - UniqueFileIdentifierFrame(const UniqueFileIdentifierFrame &); - UniqueFileIdentifierFrame &operator=(const UniqueFileIdentifierFrame &); - UniqueFileIdentifierFrame(const ByteVector &data, Header *h); class UniqueFileIdentifierFramePrivate; - UniqueFileIdentifierFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<UniqueFileIdentifierFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unknownframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/unknownframe.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unknownframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/unknownframe.h index 0512720df..213e6fd8a 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unknownframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/unknownframe.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_UNKNOWNFRAME_H #define TAGLIB_UNKNOWNFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> -#include <taglib/taglib_export.h> +#include "taglib_export.h" +#include "id3v2frame.h" namespace TagLib { @@ -37,7 +37,7 @@ namespace TagLib { /*! * This class represents a frame type not known (or more often simply - * unimplemented) in TagLib. This is here provide a basic API for + * unimplemented) in TagLib. This is here to provide a basic API for * manipulating the binary data of unknown frames and to provide a means * of rendering such \e unknown frames. * @@ -52,9 +52,12 @@ namespace TagLib { public: UnknownFrame(const ByteVector &data); - virtual ~UnknownFrame(); + ~UnknownFrame() override; - virtual String toString() const; + UnknownFrame(const UnknownFrame &) = delete; + UnknownFrame &operator=(const UnknownFrame &) = delete; + + String toString() const override; /*! * Returns the field data (everything but the header) for this frame. @@ -62,18 +65,17 @@ namespace TagLib { ByteVector data() const; protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: UnknownFrame(const ByteVector &data, Header *h); - UnknownFrame(const UnknownFrame &); - UnknownFrame &operator=(const UnknownFrame &); class UnknownFramePrivate; - UnknownFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<UnknownFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/unsynchronizedlyricsframe.h similarity index 88% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/unsynchronizedlyricsframe.h index c6873800d..056893d20 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/unsynchronizedlyricsframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/unsynchronizedlyricsframe.h @@ -28,7 +28,7 @@ #ifndef TAGLIB_UNSYNCHRONIZEDLYRICSFRAME_H #define TAGLIB_UNSYNCHRONIZEDLYRICSFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> +#include "id3v2frame.h" namespace TagLib { @@ -50,21 +50,24 @@ namespace TagLib { explicit UnsynchronizedLyricsFrame(String::Type encoding = String::Latin1); /*! - * Construct a unsynchronized lyrics frame based on the data in \a data. + * Construct an unsynchronized lyrics frame based on the data in \a data. */ explicit UnsynchronizedLyricsFrame(const ByteVector &data); /*! * Destroys this UnsynchronizedLyricsFrame instance. */ - virtual ~UnsynchronizedLyricsFrame(); + ~UnsynchronizedLyricsFrame() override; + + UnsynchronizedLyricsFrame(const UnsynchronizedLyricsFrame &) = delete; + UnsynchronizedLyricsFrame &operator=(const UnsynchronizedLyricsFrame &) = delete; /*! * Returns the text of this unsynchronized lyrics frame. * * \see text() */ - virtual String toString() const; + String toString() const override; /*! * Returns the language encoding as a 3 byte encoding as specified by @@ -95,11 +98,11 @@ namespace TagLib { /*! * Set the language using the 3 byte language code from * <a href="http://en.wikipedia.org/wiki/ISO_639">ISO-639-2</a> to - * \a languageCode. + * \a languageEncoding. * * \see language() */ - void setLanguage(const ByteVector &languageCode); + void setLanguage(const ByteVector &languageEncoding); /*! * Sets the description of the unsynchronized lyrics frame to \a s. @@ -113,7 +116,7 @@ namespace TagLib { * * \see text() */ - virtual void setText(const String &s); + void setText(const String &s) override; /*! * Returns the text encoding that will be used in rendering this frame. @@ -145,12 +148,12 @@ namespace TagLib { * Note that currently the language() field is not supported by the PropertyMap * interface. */ - PropertyMap asProperties() const; + PropertyMap asProperties() const override; /*! * LyricsFrames each have a unique description. This searches for a lyrics * frame with the description \a d and returns a pointer to it. If no - * frame is found that matches the given description null is returned. + * frame is found that matches the given description, null is returned. * * \see description() */ @@ -159,21 +162,20 @@ namespace TagLib { protected: // Reimplementations. - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; private: /*! * The constructor used by the FrameFactory. */ UnsynchronizedLyricsFrame(const ByteVector &data, Header *h); - UnsynchronizedLyricsFrame(const UnsynchronizedLyricsFrame &); - UnsynchronizedLyricsFrame &operator=(const UnsynchronizedLyricsFrame &); class UnsynchronizedLyricsFramePrivate; - UnsynchronizedLyricsFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<UnsynchronizedLyricsFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/urllinkframe.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/urllinkframe.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/urllinkframe.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/urllinkframe.h index 6124f7144..28ee09c05 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/id3v2/frames/urllinkframe.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/urllinkframe.h @@ -29,7 +29,7 @@ #ifndef TAGLIB_URLLINKFRAME_H #define TAGLIB_URLLINKFRAME_H -#include <taglib/mpeg/id3v2/id3v2frame.h> +#include "id3v2frame.h" namespace TagLib { @@ -53,7 +53,10 @@ namespace TagLib { /*! * Destroys this UrlLinkFrame instance. */ - virtual ~UrlLinkFrame(); + ~UrlLinkFrame() override; + + UrlLinkFrame(const UrlLinkFrame &) = delete; + UrlLinkFrame &operator=(const UrlLinkFrame &) = delete; /*! * Returns the URL. @@ -67,13 +70,13 @@ namespace TagLib { // Reimplementations. - virtual void setText(const String &s); - virtual String toString() const; - PropertyMap asProperties() const; + void setText(const String &s) override; + String toString() const override; + PropertyMap asProperties() const override; protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; /*! * The constructor used by the FrameFactory. @@ -81,11 +84,9 @@ namespace TagLib { UrlLinkFrame(const ByteVector &data, Header *h); private: - UrlLinkFrame(const UrlLinkFrame &); - UrlLinkFrame &operator=(const UrlLinkFrame &); - class UrlLinkFramePrivate; - UrlLinkFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<UrlLinkFramePrivate> d; }; //! ID3v2 User defined URL frame @@ -117,11 +118,14 @@ namespace TagLib { /*! * Destroys this UserUrlLinkFrame instance. */ - virtual ~UserUrlLinkFrame(); + ~UserUrlLinkFrame() override; + + UserUrlLinkFrame(const UserUrlLinkFrame &) = delete; + UserUrlLinkFrame &operator=(const UserUrlLinkFrame &) = delete; // Reimplementations. - virtual String toString() const; + String toString() const override; /*! * Returns the text encoding that will be used in rendering this frame. @@ -154,23 +158,23 @@ namespace TagLib { /*! * Parses the UserUrlLinkFrame as PropertyMap. The description() is taken as key, - * and the URL as single value. + * and the URL as a single value. * - if description() is empty, the key will be "URL". * - otherwise, if description() is not a valid key (e.g. containing non-ASCII * characters), the returned map will contain an entry "WXXX/<description>" * in its unsupportedData() list. */ - PropertyMap asProperties() const; + PropertyMap asProperties() const override; /*! * Searches for the user defined url frame with the description \a description * in \a tag. This returns null if no matching frames were found. */ - static UserUrlLinkFrame *find(Tag *tag, const String &description); + static UserUrlLinkFrame *find(const Tag *tag, const String &description); protected: - virtual void parseFields(const ByteVector &data); - virtual ByteVector renderFields() const; + void parseFields(const ByteVector &data) override; + ByteVector renderFields() const override; /*! * The constructor used by the FrameFactory. @@ -178,13 +182,11 @@ namespace TagLib { UserUrlLinkFrame(const ByteVector &data, Header *h); private: - UserUrlLinkFrame(const UserUrlLinkFrame &); - UserUrlLinkFrame &operator=(const UserUrlLinkFrame &); - class UserUrlLinkFramePrivate; - UserUrlLinkFramePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<UserUrlLinkFramePrivate> d; }; - } -} + } // namespace ID3v2 +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/vorbisfile.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/vorbisfile.h index 922086ec4..f06f028bc 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/vorbisfile.h @@ -26,11 +26,10 @@ #ifndef TAGLIB_VORBISFILE_H #define TAGLIB_VORBISFILE_H -#include <taglib/taglib_export.h> -#include <taglib/ogg/oggfile.h> -#include <taglib/ogg/xiphcomment.h> - -#include <taglib/ogg/vorbis/vorbisproperties.h> +#include "taglib_export.h" +#include "oggfile.h" +#include "xiphcomment.h" +#include "vorbisproperties.h" namespace TagLib { @@ -39,6 +38,8 @@ namespace TagLib { * documentation. The typedef below will make this work with the current code. * In the next BIC version of TagLib this will be really moved into the Ogg * namespace. + * Kept for source compatibility, the typedef in vorbisproperties.h was not + * correct in TagLib 1. */ #ifdef DOXYGEN @@ -63,7 +64,7 @@ namespace TagLib { { public: /*! - * Constructs a Vorbis file from \a file. If \a readProperties is true the + * Constructs a Vorbis file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. @@ -72,7 +73,7 @@ namespace TagLib { Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs a Vorbis file from \a stream. If \a readProperties is true the + * Constructs a Vorbis file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is @@ -86,40 +87,43 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the XiphComment for this file. XiphComment implements the tag * interface, so this serves as the reimplementation of * TagLib::File::tag(). */ - virtual Ogg::XiphComment *tag() const; + Ogg::XiphComment *tag() const override; /*! * Implements the unified property interface -- export function. * This forwards directly to XiphComment::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified tag dictionary interface -- import function. * Like properties(), this is a forwarder to the file's XiphComment. */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the Vorbis::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Save the file. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - virtual bool save(); + bool save() override; /*! * Check if the given \a stream can be opened as an Ogg Vorbis file. @@ -130,28 +134,32 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } + } // namespace Vorbis /* * To keep compatibility with the current version put Vorbis in the Ogg namespace * only in the docs and provide a typedef to make it work. In the next BIC * version this will be removed and it will only exist in the Ogg namespace. + * Kept for source compatibility, the typedef in vorbisproperties.h was not + * correct in TagLib 1. */ #ifdef DOXYGEN } #else - namespace Ogg { namespace Vorbis { typedef TagLib::Vorbis::File File; } } + namespace Ogg { + namespace Vorbis { + using File = TagLib::Vorbis::File; + } // namespace Vorbis + } // namespace Ogg #endif -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/vorbisproperties.h similarity index 79% rename from Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/vorbisproperties.h index bbb7cf796..8ac035cb9 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/vorbis/vorbisproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/vorbisproperties.h @@ -26,8 +26,8 @@ #ifndef TAGLIB_VORBISPROPERTIES_H #define TAGLIB_VORBISPROPERTIES_H -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> +#include "taglib_export.h" +#include "audioproperties.h" namespace TagLib { @@ -36,6 +36,8 @@ namespace TagLib { * documentation. The typedef below will make this work with the current code. * In the next BIC version of TagLib this will be really moved into the Ogg * namespace. + * Kept for source compatibility, the typedef in vorbisproperties.h was not + * correct in TagLib 1. */ #ifdef DOXYGEN @@ -65,49 +67,32 @@ namespace TagLib { /*! * Destroys this VorbisProperties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the Vorbis version, currently "0" (as specified by the spec). @@ -133,28 +118,32 @@ namespace TagLib { int bitrateMinimum() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - void read(File *file); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } + } // namespace Vorbis /* * To keep compatibility with the current version put Vorbis in the Ogg namespace * only in the docs and provide a typedef to make it work. In the next BIC * version this will be removed and it will only exist in the Ogg namespace. + * Kept for source compatibility, the typedef in vorbisproperties.h was not + * correct in TagLib 1. */ #ifdef DOXYGEN } #else - namespace Ogg { namespace Vorbis { typedef TagLib::AudioProperties AudioProperties; } } + namespace Ogg { + namespace Vorbis { + using Properties = TagLib::Vorbis::Properties; + } // namespace Vorbis + } // namespace Ogg #endif -} +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/riff/wav/wavfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavfile.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/riff/wav/wavfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavfile.h index a308d19d5..32330e516 100644 --- a/Frameworks/TagLib/taglib/taglib/riff/wav/wavfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavfile.h @@ -26,10 +26,10 @@ #ifndef TAGLIB_WAVFILE_H #define TAGLIB_WAVFILE_H -#include <taglib/riff/rifffile.h> -#include <taglib/mpeg/id3v2/id3v2tag.h> -#include <taglib/riff/wav/infotag.h> -#include <taglib/riff/wav/wavproperties.h> +#include "rifffile.h" +#include "id3v2tag.h" +#include "infotag.h" +#include "wavproperties.h" namespace TagLib { @@ -38,7 +38,7 @@ namespace TagLib { //! An implementation of WAV metadata /*! - * This is implementation of WAV metadata. + * This is an implementation of WAV metadata. * * This supports an ID3v2 tag as well as reading stream from the ID3 RIFF * chunk as well as properties from the file. @@ -70,38 +70,47 @@ namespace TagLib { }; /*! - * Constructs a WAV file from \a file. If \a readProperties is true the + * Constructs a WAV file from \a file. If \a readProperties is \c true the * file's audio properties will also be read. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). */ File(FileName file, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); /*! - * Constructs a WAV file from \a stream. If \a readProperties is true the + * Constructs a WAV file from \a stream. If \a readProperties is \c true the * file's audio properties will also be read. * * \note TagLib will *not* take ownership of the stream, the caller is * responsible for deleting it after the File object. * * \note In the current implementation, \a propertiesStyle is ignored. + * + * If this file contains an ID3v2 tag, the frames will be created using + * \a frameFactory (default if null). */ File(IOStream *stream, bool readProperties = true, - Properties::ReadStyle propertiesStyle = Properties::Average); + Properties::ReadStyle propertiesStyle = Properties::Average, + ID3v2::FrameFactory *frameFactory = nullptr); /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! - * Returns the ID3v2 Tag for this file. - * - * \note This method does not return all the tags for this file for - * backward compatibility. Will be fixed in TagLib 2.0. + * Returns the tag for this file. This will be a RIFF INFO tag, an + * ID3v2 tag or a combination of the two. */ - ID3v2::Tag *tag() const; + TagLib::Tag *tag() const override; /*! * Returns the ID3v2 Tag for this file. @@ -127,7 +136,7 @@ namespace TagLib { /*! * This will strip the tags that match the OR-ed together TagTypes from the - * file. By default it strips all tags. It returns true if the tags are + * file. By default it strips all tags. It returns \c true if the tags are * successfully stripped. * * \note This will update the file immediately. @@ -138,31 +147,26 @@ namespace TagLib { * Implements the unified property interface -- export function. * This method forwards to ID3v2::Tag::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &unsupported) override; /*! * Implements the unified property interface -- import function. * This method forwards to ID3v2::Tag::setProperties(). */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the WAV::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Saves the file. */ - virtual bool save(); - - /*! - * \deprecated - */ - TAGLIB_DEPRECATED bool save(TagTypes tags, bool stripOthers, int id3v2Version = 4); + bool save() override; /*! * Save the file. If \a strip is specified, it is possible to choose if @@ -197,19 +201,17 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); void removeTagChunks(TagTypes tags); friend class Properties; class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } - } -} + } // namespace WAV + } // namespace RIFF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavpackfile.h similarity index 82% rename from Frameworks/TagLib/taglib/taglib/wavpack/wavpackfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavpackfile.h index 83953993b..0b33a647b 100644 --- a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavpackfile.h @@ -30,9 +30,9 @@ #ifndef TAGLIB_WVFILE_H #define TAGLIB_WVFILE_H -#include <taglib/toolkit/tfile.h> -#include <taglib/taglib_export.h> -#include <taglib/wavpack/wavpackproperties.h> +#include "tfile.h" +#include "taglib_export.h" +#include "wavpackproperties.h" namespace TagLib { @@ -44,7 +44,7 @@ namespace TagLib { //! An implementation of WavPack metadata /*! - * This is implementation of WavPack metadata. + * This is an implementation of WavPack metadata. * * This supports ID3v1 and APE (v1 and v2) style comments as well as reading stream * properties from the file. @@ -80,17 +80,17 @@ namespace TagLib { }; /*! - * Constructs a WavPack file from \a file. If \a readProperties is true the + * Constructs a WavPack file from \a file. If \a readProperties is \c true the * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored + * \c false, \a propertiesStyle is ignored */ File(FileName file, bool readProperties = true, Properties::ReadStyle propertiesStyle = Properties::Average); /*! - * Constructs an WavPack file from \a file. If \a readProperties is true the + * Constructs a WavPack file from \a file. If \a readProperties is \c true the * file's audio properties will also be read using \a propertiesStyle. If - * false, \a propertiesStyle is ignored. + * \c false, \a propertiesStyle is ignored. * * \note TagLib will *not* take ownership of the stream, the caller is * responsible for deleting it after the File object. @@ -101,55 +101,58 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; + + File(const File &) = delete; + File &operator=(const File &) = delete; /*! * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag * or a combination of the two. */ - virtual TagLib::Tag *tag() const; + TagLib::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * If the file contains both an APE and an ID3v1 tag, only APE * will be converted to the PropertyMap. */ - PropertyMap properties() const; + PropertyMap properties() const override; - void removeUnsupportedProperties(const StringList &properties); + void removeUnsupportedProperties(const StringList &unsupported) override; /*! * Implements the unified property interface -- import function. * Creates an APE tag if it does not exists and calls setProperties() on * that. Any existing ID3v1 tag will be updated as well. */ - PropertyMap setProperties(const PropertyMap&); + PropertyMap setProperties(const PropertyMap&) override; /*! * Returns the MPC::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - virtual Properties *audioProperties() const; + Properties *audioProperties() const override; /*! * Saves the file. * - * This returns true if the save was successful. + * This returns \c true if the save was successful. */ - virtual bool save(); + bool save() override; /*! * Returns a pointer to the ID3v1 tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid ID3v1 tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid ID3v1 tag. If \a create is \c true it will create * an ID3v1 tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an ID3v1 tag. Use hasID3v1Tag() to check if the file * on disk actually has an ID3v1 tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the WavPack::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -160,15 +163,15 @@ namespace TagLib { /*! * Returns a pointer to the APE tag of the file. * - * If \a create is false (the default) this may return a null pointer - * if there is no valid APE tag. If \a create is true it will create + * If \a create is \c false (the default) this may return a null pointer + * if there is no valid APE tag. If \a create is \c true it will create * an APE tag if one does not exist and returns a valid pointer. * * \note This may return a valid pointer regardless of whether or not the * file on disk has an APE tag. Use hasAPETag() to check if the file * on disk actually has an APE tag. * - * \note The Tag <b>is still</b> owned by the MPEG::File and should not be + * \note The Tag <b>is still</b> owned by the WavPack::File and should not be * deleted by the user. It will be deleted when the file (object) is * destroyed. * @@ -209,15 +212,13 @@ namespace TagLib { static bool isSupported(IOStream *stream); private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace WavPack +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavpackproperties.h similarity index 65% rename from Frameworks/TagLib/taglib/taglib/wavpack/wavpackproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavpackproperties.h index 3e372ba89..d01c1b63f 100644 --- a/Frameworks/TagLib/taglib/taglib/wavpack/wavpackproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavpackproperties.h @@ -30,8 +30,8 @@ #ifndef TAGLIB_WVPROPERTIES_H #define TAGLIB_WVPROPERTIES_H -#include <taglib/taglib_export.h> -#include <taglib/audioproperties.h> +#include "taglib_export.h" +#include "audioproperties.h" namespace TagLib { @@ -39,79 +39,52 @@ namespace TagLib { class File; - static const unsigned int HeaderSize = 32; + static constexpr unsigned int HeaderSize = 32; //! An implementation of audio property reading for WavPack /*! - * This reads the data from an WavPack stream found in the AudioProperties + * This reads the data from a WavPack stream found in the AudioProperties * API. */ class TAGLIB_EXPORT Properties : public AudioProperties { public: - /*! - * Create an instance of WavPack::Properties with the data read from the - * ByteVector \a data. - * - * \deprecated This constructor will be dropped in favor of the one below - * in a future version. - */ - TAGLIB_DEPRECATED Properties(const ByteVector &data, long streamLength, - ReadStyle style = Average); - /*! * Create an instance of WavPack::Properties. */ - Properties(File *file, long streamLength, ReadStyle style = Average); + Properties(File *file, offset_t streamLength, ReadStyle style = Average); /*! * Destroys this WavPack::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. 0 means unknown or custom. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample. @@ -129,21 +102,19 @@ namespace TagLib { unsigned int sampleFrames() const; /*! - * Returns WavPack version. + * Returns the WavPack version. */ int version() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - - void read(File *file, long streamLength); - unsigned int seekFinalIndex(File *file, long streamLength); + void read(File *file, offset_t streamLength); + unsigned int seekFinalIndex(File *file, offset_t streamLength); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace WavPack +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/riff/wav/wavproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavproperties.h similarity index 63% rename from Frameworks/TagLib/taglib/taglib/riff/wav/wavproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavproperties.h index 065ed257a..c62827f24 100644 --- a/Frameworks/TagLib/taglib/taglib/riff/wav/wavproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/wavproperties.h @@ -26,8 +26,7 @@ #ifndef TAGLIB_WAVPROPERTIES_H #define TAGLIB_WAVPROPERTIES_H -#include <taglib/toolkit/taglib.h> -#include <taglib/audioproperties.h> +#include "audioproperties.h" namespace TagLib { @@ -42,29 +41,13 @@ namespace TagLib { //! An implementation of audio property reading for WAV /*! - * This reads the data from an WAV stream found in the AudioProperties + * This reads the data from a WAV stream found in the AudioProperties * API. */ class TAGLIB_EXPORT Properties : public AudioProperties { public: - /*! - * Create an instance of WAV::Properties with the data read from the - * ByteVector \a data. - * - * \deprecated - */ - TAGLIB_DEPRECATED Properties(const ByteVector &data, ReadStyle style); - - /*! - * Create an instance of WAV::Properties with the data read from the - * ByteVector \a data and the length calculated using \a streamLength. - * - * \deprecated - */ - TAGLIB_DEPRECATED Properties(const ByteVector &data, unsigned int streamLength, ReadStyle style); - /*! * Create an instance of WAV::Properties with the data read from the * WAV::File \a file. @@ -74,64 +57,38 @@ namespace TagLib { /*! * Destroys this WAV::Properties instance. */ - virtual ~Properties(); + ~Properties() override; - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \note This method is just an alias of lengthInSeconds(). - * - * \deprecated - */ - TAGLIB_DEPRECATED virtual int length() const; - - /*! - * Returns the length of the file in seconds. The length is rounded down to - * the nearest whole second. - * - * \see lengthInMilliseconds() - */ - // BIC: make virtual - int lengthInSeconds() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; /*! * Returns the length of the file in milliseconds. * * \see lengthInSeconds() */ - // BIC: make virtual - int lengthInMilliseconds() const; + int lengthInMilliseconds() const override; /*! * Returns the average bit rate of the file in kb/s. */ - virtual int bitrate() const; + int bitrate() const override; /*! * Returns the sample rate in Hz. */ - virtual int sampleRate() const; + int sampleRate() const override; /*! * Returns the number of audio channels. */ - virtual int channels() const; + int channels() const override; /*! * Returns the number of bits per audio sample. */ int bitsPerSample() const; - /*! - * Returns the number of bits per audio sample. - * - * \note This method is just an alias of bitsPerSample(). - * - * \deprecated - */ - TAGLIB_DEPRECATED int sampleWidth() const; - /*! * Returns the number of sample frames. */ @@ -148,16 +105,14 @@ namespace TagLib { int format() const; private: - Properties(const Properties &); - Properties &operator=(const Properties &); - void read(File *file); class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } - } -} + } // namespace WAV + } // namespace RIFF +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/mpeg/xingheader.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xingheader.h similarity index 78% rename from Frameworks/TagLib/taglib/taglib/mpeg/xingheader.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xingheader.h index db7b1b2f7..dea6e2d9e 100644 --- a/Frameworks/TagLib/taglib/taglib/mpeg/xingheader.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xingheader.h @@ -26,8 +26,10 @@ #ifndef TAGLIB_XINGHEADER_H #define TAGLIB_XINGHEADER_H -#include <taglib/mpeg/mpegheader.h> -#include <taglib/taglib_export.h> +#include <memory> + +#include "taglib_export.h" +#include "mpegheader.h" namespace TagLib { @@ -35,8 +37,6 @@ namespace TagLib { namespace MPEG { - class File; - //! An implementation of the Xing/VBRI headers /*! @@ -45,8 +45,8 @@ namespace TagLib { * to make it easy to compute the length and quality of a VBR stream. Our * implementation is only concerned with the total size of the stream (so * that we can calculate the total playing time and the average bitrate). - * It uses <a href="http://home.pcisys.net/~melanson/codecs/mp3extensions.txt"> - * this text</a> and the XMMS sources as references. + * It uses <a href="https://multimedia.cx/mp3extensions.txt"> + * mp3extensions.txt</a> and the XMMS sources as references. */ class TAGLIB_EXPORT XingHeader @@ -74,7 +74,7 @@ namespace TagLib { }; /*! - * Parses an Xing/VBRI header based on \a data which contains the entire + * Parses a Xing/VBRI header based on \a data which contains the entire * first MPEG frame. */ XingHeader(const ByteVector &data); @@ -82,10 +82,13 @@ namespace TagLib { /*! * Destroy this XingHeader instance. */ - virtual ~XingHeader(); + ~XingHeader(); + + XingHeader(const XingHeader &) = delete; + XingHeader &operator=(const XingHeader &) = delete; /*! - * Returns true if the data was parsed properly and if there is a valid + * Returns \c true if the data was parsed properly and if there is a valid * Xing/VBRI header present. */ bool isValid() const; @@ -105,25 +108,14 @@ namespace TagLib { */ HeaderType type() const; - /*! - * Returns the offset for the start of this Xing header, given the - * version and channels of the frame - * - * \deprecated Always returns 0. - */ - TAGLIB_DEPRECATED static int xingHeaderOffset(TagLib::MPEG::Header::Version v, - TagLib::MPEG::Header::ChannelMode c); - private: - XingHeader(const XingHeader &); - XingHeader &operator=(const XingHeader &); - void parse(const ByteVector &data); class XingHeaderPrivate; - XingHeaderPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<XingHeaderPrivate> d; }; - } -} + } // namespace MPEG +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/ogg/xiphcomment.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xiphcomment.h similarity index 72% rename from Frameworks/TagLib/taglib/taglib/ogg/xiphcomment.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xiphcomment.h index dec3c1b2f..b6b8d3945 100644 --- a/Frameworks/TagLib/taglib/taglib/ogg/xiphcomment.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xiphcomment.h @@ -26,14 +26,19 @@ #ifndef TAGLIB_VORBISCOMMENT_H #define TAGLIB_VORBISCOMMENT_H -#include <taglib/tag.h> -#include <taglib/toolkit/tlist.h> -#include <taglib/toolkit/tmap.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/toolkit/tstringlist.h> -#include <taglib/toolkit/tbytevector.h> -#include <taglib/flac/flacpicture.h> -#include <taglib/taglib_export.h> +#include "tlist.h" +#include "tmap.h" +#include "tstring.h" +#include "tstringlist.h" +#include "tbytevector.h" +#include "taglib_export.h" +#include "tag.h" +#include "flacpicture.h" + +#ifdef _MSC_VER +// Explained at end of tpropertymap.cpp +extern template class TagLib::Map<TagLib::String, TagLib::StringList>; +#endif namespace TagLib { @@ -45,7 +50,7 @@ namespace TagLib { * * \see XiphComment::fieldListMap() */ - typedef Map<String, StringList> FieldListMap; + using FieldListMap = Map<String, StringList>; //! Ogg Vorbis comment implementation @@ -78,40 +83,28 @@ namespace TagLib { /*! * Destroys this instance of the XiphComment. */ - virtual ~XiphComment(); + ~XiphComment() override; - virtual String title() const; - virtual String albumartist() const; - virtual String artist() const; - virtual String album() const; - virtual String comment() const; - virtual String genre() const; - virtual unsigned int year() const; - virtual unsigned int track() const; - virtual unsigned int disc() const; - virtual String cuesheet() const; - virtual float rgAlbumGain() const; - virtual float rgAlbumPeak() const; - virtual float rgTrackGain() const; - virtual float rgTrackPeak() const; - virtual String soundcheck() const; + XiphComment(const XiphComment &) = delete; + XiphComment &operator=(const XiphComment &) = delete; - virtual void setTitle(const String &s); - virtual void setAlbumArtist(const String &s); - virtual void setArtist(const String &s); - virtual void setAlbum(const String &s); - virtual void setComment(const String &s); - virtual void setGenre(const String &s); - virtual void setYear(unsigned int i); - virtual void setTrack(unsigned int i); - virtual void setDisc(unsigned int i); - virtual void setCuesheet(const String &s); - virtual void setRGAlbumGain(float f); - virtual void setRGAlbumPeak(float f); - virtual void setRGTrackGain(float f); - virtual void setRGTrackPeak(float f); + String title() const override; + String artist() const override; + String album() const override; + String comment() const override; + String genre() const override; + unsigned int year() const override; + unsigned int track() const override; - virtual bool isEmpty() const; + void setTitle(const String &s) override; + void setArtist(const String &s) override; + void setAlbum(const String &s) override; + void setComment(const String &s) override; + void setGenre(const String &s) override; + void setYear(unsigned int i) override; + void setTrack(unsigned int i) override; + + bool isEmpty() const override; /*! * Returns the number of fields present in the comment. @@ -163,7 +156,7 @@ namespace TagLib { * comment is nothing more than a map from tag names to list of values, * as is the dict interface). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified property interface -- import function. @@ -172,7 +165,11 @@ namespace TagLib { * containing '=' or '~') in which case the according values will * be contained in the returned PropertyMap. */ - PropertyMap setProperties(const PropertyMap&); + PropertyMap setProperties(const PropertyMap&) override; + + StringList complexPropertyKeys() const override; + List<VariantMap> complexProperties(const String &key) const override; + bool setComplexProperties(const String &key, const List<VariantMap> &value) override; /*! * Check if the given String is a valid Xiph comment key. @@ -187,22 +184,13 @@ namespace TagLib { /*! * Add the field specified by \a key with the data \a value. If \a replace - * is true, then all of the other fields with the same key will be removed + * is \c true, then all of the other fields with the same key will be removed * first. * * If the field value is empty, the field will be removed. */ void addField(const String &key, const String &value, bool replace = true); - /*! - * Remove the field specified by \a key with the data \a value. If - * \a value is null, all of the fields with the given key will be removed. - * - * \deprecated Using this method may lead to a linkage error. - */ - // BIC: remove and merge with below - TAGLIB_DEPRECATED void removeField(const String &key, const String &value = String()); - /*! * Remove all the fields specified by \a key. * @@ -225,25 +213,20 @@ namespace TagLib { void removeAllFields(); /*! - * Returns true if the field is contained within the comment. + * Returns \c true if the field is contained within the comment. * * \note This is safer than checking for membership in the FieldListMap. */ bool contains(const String &key) const; - /*! - * Renders the comment to a ByteVector suitable for inserting into a file. - */ - ByteVector render() const; // BIC: remove and merge with below - /*! * Renders the comment to a ByteVector suitable for inserting into a file. * - * If \a addFramingBit is true the standard Vorbis comment framing bit will + * If \a addFramingBit is \c true the standard Vorbis comment framing bit will * be appended. However some formats (notably FLAC) do not work with this * in place. */ - ByteVector render(bool addFramingBit) const; + ByteVector render(bool addFramingBit = true) const; /*! @@ -252,8 +235,8 @@ namespace TagLib { List<FLAC::Picture *> pictureList(); /*! - * Removes an picture. If \a del is true the picture's memory - * will be freed; if it is false, it must be deleted by the user. + * Removes a picture. If \a del is \c true the picture's memory + * will be freed; if it is \c false, it must be deleted by the user. */ void removePicture(FLAC::Picture *picture, bool del = true); @@ -278,13 +261,11 @@ namespace TagLib { void parse(const ByteVector &data); private: - XiphComment(const XiphComment &); - XiphComment &operator=(const XiphComment &); - class XiphCommentPrivate; - XiphCommentPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<XiphCommentPrivate> d; }; - } -} + } // namespace Ogg +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/xm/xmfile.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xmfile.h similarity index 76% rename from Frameworks/TagLib/taglib/taglib/xm/xmfile.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xmfile.h index 14d485c81..17cf07a31 100644 --- a/Frameworks/TagLib/taglib/taglib/xm/xmfile.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xmfile.h @@ -26,17 +26,32 @@ #ifndef TAGLIB_XMFILE_H #define TAGLIB_XMFILE_H -#include <taglib/toolkit/tfile.h> -#include <taglib/audioproperties.h> -#include <taglib/taglib_export.h> -#include <taglib/mod/modfilebase.h> -#include <taglib/mod/modtag.h> -#include <taglib/xm/xmproperties.h> +#include "tfile.h" +#include "taglib_export.h" +#include "audioproperties.h" +#include "modfilebase.h" +#include "modtag.h" +#include "xmproperties.h" namespace TagLib { + //! An implementation of Extended Module metadata + + /*! + * This is an implementation of Extended Module metadata. + */ + namespace XM { + //! An implementation of TagLib::File with XM specific methods + + /*! + * This implements and provides an interface for XM files to the + * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing + * the abstract TagLib::File API as well as providing some additional + * information specific to XM files. + */ + class TAGLIB_EXPORT File : public Mod::FileBase { public: /*! @@ -67,27 +82,30 @@ namespace TagLib { /*! * Destroys this instance of the File. */ - virtual ~File(); + ~File() override; - Mod::Tag *tag() const; + File(const File &) = delete; + File &operator=(const File &) = delete; + + Mod::Tag *tag() const override; /*! * Implements the unified property interface -- export function. * Forwards to Mod::Tag::properties(). */ - PropertyMap properties() const; + PropertyMap properties() const override; /*! * Implements the unified property interface -- import function. * Forwards to Mod::Tag::setProperties(). */ - PropertyMap setProperties(const PropertyMap &); + PropertyMap setProperties(const PropertyMap &) override; /*! * Returns the XM::Properties for this file. If no audio properties * were read then this will return a null pointer. */ - XM::Properties *audioProperties() const; + XM::Properties *audioProperties() const override; /*! * Save the file. @@ -95,18 +113,16 @@ namespace TagLib { * * \note Saving Extended Module tags is not supported. */ - bool save(); + bool save() override; private: - File(const File &); - File &operator=(const File &); - void read(bool readProperties); class FilePrivate; - FilePrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<FilePrivate> d; }; - } -} + } // namespace XM +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/taglib/taglib/xm/xmproperties.h b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xmproperties.h similarity index 73% rename from Frameworks/TagLib/taglib/taglib/xm/xmproperties.h rename to ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xmproperties.h index 94d742101..6367b22ea 100644 --- a/Frameworks/TagLib/taglib/taglib/xm/xmproperties.h +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Headers/xmproperties.h @@ -26,39 +26,36 @@ #ifndef TAGLIB_XMPROPERTIES_H #define TAGLIB_XMPROPERTIES_H -#include <taglib/toolkit/taglib.h> -#include <taglib/toolkit/tstring.h> -#include <taglib/audioproperties.h> +#include "tstring.h" +#include "audioproperties.h" namespace TagLib { namespace XM { + //! An implementation of audio property reading for XM class TAGLIB_EXPORT Properties : public AudioProperties { - friend class File; public: /*! Flag bits. */ enum { - LinearFreqTable = 1 // otherwise its the amiga freq. table + LinearFreqTable = 1 // otherwise it is the amiga freq. table }; Properties(AudioProperties::ReadStyle propertiesStyle); - virtual ~Properties(); + ~Properties() override; - int length() const; - int lengthInSeconds() const; - int lengthInMilliseconds() const; - int bitrate() const; - int sampleRate() const; - int channels() const; + Properties(const Properties &) = delete; + Properties &operator=(const Properties &) = delete; + + int channels() const override; unsigned short lengthInPatterns() const; - unsigned short version() const; - unsigned short restartPosition() const; - unsigned short patternCount() const; - unsigned short instrumentCount() const; - unsigned int sampleCount() const; - unsigned short flags() const; - unsigned short tempo() const; - unsigned short bpmSpeed() const; + unsigned short version() const; + unsigned short restartPosition() const; + unsigned short patternCount() const; + unsigned short instrumentCount() const; + unsigned int sampleCount() const; + unsigned short flags() const; + unsigned short tempo() const; + unsigned short bpmSpeed() const; void setChannels(int channels); @@ -73,13 +70,11 @@ namespace TagLib { void setBpmSpeed(unsigned short bpmSpeed); private: - Properties(const Properties&); - Properties &operator=(const Properties&); - class PropertiesPrivate; - PropertiesPrivate *d; + TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE + std::unique_ptr<PropertiesPrivate> d; }; - } -} + } // namespace XM +} // namespace TagLib #endif diff --git a/Frameworks/TagLib/Info.plist b/ThirdParty/Frameworks/tag.framework/Versions/A/Resources/Info.plist similarity index 64% rename from Frameworks/TagLib/Info.plist rename to ThirdParty/Frameworks/tag.framework/Versions/A/Resources/Info.plist index 5c18bd9f9..821ac486b 100644 --- a/Frameworks/TagLib/Info.plist +++ b/ThirdParty/Frameworks/tag.framework/Versions/A/Resources/Info.plist @@ -1,26 +1,28 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> + <string>tag</string> <key>CFBundleIconFile</key> <string></string> <key>CFBundleIdentifier</key> - <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <string></string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> + <string></string> <key>CFBundlePackageType</key> <string>FMWK</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> - <string>1.0</string> - <key>NSPrincipalClass</key> <string></string> + <key>CFBundleShortVersionString</key> + <string></string> + <key>CSResourcesFileMapped</key> + <true/> </dict> </plist> diff --git a/ThirdParty/Frameworks/tag.framework/Versions/A/tag b/ThirdParty/Frameworks/tag.framework/Versions/A/tag new file mode 100755 index 0000000000000000000000000000000000000000..8f49ca61ca3df7ece66bd9caa3385fd1130f4bd4 GIT binary patch literal 8103376 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 ){t~aSFb+!{-S}n2n&~s7enafjG8zL_!Wf!lK`G zD5atOr&A-cm@Y4MsqVC(&QHIJ*2B|(+QiNJmtl^bru!QfxB+F@;o8d|>=bIpPI<1< z5Y_EB>;`qqOgz>YASHKS^9lCgZ6YNIxe*oc;F|Y;a}tbT#fIe~!erTV3^?YImvlR< z4}bVLDoid5=Vm<U66+tzL#N3DSdICVdlK>sY_{oqN;YJr^<>{=-Hri5`xCf2J(h3{ zqOxgI53g&I@vP5LyD8C(j@K&Xule%`oYqLUY@@QuUEZZKP~`%Nhqy$UsVOL`65pG? z{*Ct6+=rpQraX06|IkevU)IM3*!>Fn*rmqMQD=nxL<+1Poxk+3s@qBfk*uGBn}6hZ z!k`my$G;gniuloc`+F3$52GYiZ6el<C9M+}Zc+h{<BSBIAb}Z4`FJc_<M6ot#eUKI z>zvzwH|f2dks14SE>V81DeI!Qj^Ez(ZNKj)8_0>?lt3^30j#~$Vnuv`jZkW;a@mDH z90G2CCaPc5{Okk2CnD8Dd8t$(VSBhM3!`_n?hhI>6d2Xc#O;Iib|}xLM1d=P)suRQ z2j_T$+;fdcrK<hvvi)M3Bs&^X7*lGG`1NT!lDQLJxc`9slI!Dj;6G=(|62S*dRiZ# z|FNH5A|CO{ZT}aKh%pQo4cze!GX&mncYdf#Y9TCCZCvqum)|;N_v(Ms@g=8QLCg_R zeI1MkJ6~2bo+A8GM-Y@Wee}igh<m;Z73ED9Ki)VNFxNwdZT>I(9Uaf>uqQCCOfBg7 zZ%!(IeIGM;@A{z>y!CDWUsb*^-onr><u8rUTXj^g<KvEP{!`=QEIUXKomHg2NgqGg z2Y#Zw{k=fG^qd{0aHrC}Js9dsuPYB{85*Xr9o2qNxy#yo^WQoiFtyr*t2dv!aZt?P zLU}6u?fq{?3z6|=q+=o>ExKhd{<g^i;|k-U=samaZyC+9MdR7>{|)ju@{9i|dA!la z{r}|gwYZlT8-v|CUZPi|KyY{y|9_c0VyuMz5^pahC#`ViQb%gq3i)w|TD<gI?z6l1 zlTdg&<pk7r)-z0hZV|KwDP}%LmRI&TQK3`vFs>zNcW>FQ&15C^OzHI&^>H@pkE}vl za`*~V3;dCqH0*7KByzUd+gY8RFELZwkJLi@Zsv+wb>c<TsDFDN79>`(2rlJq#c&&5 zTTdU2{*u}adDrv4$WS_@^s}L7WJSYCzz!?w4c5XrYPZ+#c|z!J?2v<2`IoDBop&60 z?J>MP0fKH!PhOO8LkkiJPqrkqci<Rqk7ZD+jN$F}+=!T$^tD03TDfKgo^WKYlzoNI zIPT=})wD|oU{$PXfv=Q7D?t97PZaqUbo$&Mgvhr@@|_U*7D*w`BVPxMqR49tyP$<! ztT?AdCKBvu<RBEJA+r%S|5DS~4?&Z&wjphKm$Z{Hy@eVJl1kYb6iMkzgowG&s)NF+ z@)q5Wcx=0{Cf?jeQpLT1T8R&Z^fKE{^Jg+X43O4lLO{TwOmP@q2#Gk{qBWU?FpNSR zQ1!7d5&dDMs-C7*nU#zWFHyBgtCp9lx`$R}Rx&=KMAgHz>Y!3p-y6iPGAkJ$i7|)s z;g>*?Baa~<9JoiFFtKLM|9hk6cO%WQK;Jfia+?Q3xEa>x&vZ#SV;(-w;3v<Nesmyc zo79&Ld@V7kbC5qzUbOsd1S-D)wGmL~lvP}c$8}(w%xJ`?o<&TBoZkbT&>gSKe$7HD z)ETXh8q}jgeObk22~E}ttKt>A#Oha7RBrO^JvJ>{Rq?&Wt1322bh0fn@YR83NUYR^ zRTaC$%U4w#rzJEbn)KP=S!|M(dSpRgEND;s2(;wbYgojuffWr+95>K|skuyuyVnLz zzrcH?T*Ag1P&A(O1W4&;GQ-#`dkbM_I8yA()sT<*bQOU%WCkSlBX<d#i0BF5+=D2a z!-L7d#K=%lIk<Lr65uF}_Fh%7YbKdk;>qwg@GX_rpH@CuPQq#Pq}?W3m9#s~Rj=IS zo!t~1(g>=<gStXN@n<qVDEB>6B0v3rN<?4$#HiTg*g%iiBcS`g9jFpZ*pDR`gj~?K ziRi9WF_ZDY9{N=Vy%w2({>=A7=uDC<_R>rU-FtK|vqTB#TKW-YUZ*?^C2kQY*)V+& z;@?gy$hk>#MnLE$7UU$O)Ze9c1nKz4T}d-aSmh?a)9<4k{W6|@-$Auhnm<85XjDL@ z+7`)uh~21}OE^Wr2gsCVOyTDBmVe;ZO3`{Cx}L-Sm9zDu>&>dd`JQq+X@$JKhU3Gc ziR+0$;eHM3VMZMM#T}#j2bGebIC9h+`Y`5SHFxv;k)b`jUi$|pzv`j&=6~10On((j zb8D97evyALY=0<pNU=XW$X9sn=uN72Py}H9{$+%|TK;M+Px}tb`o7!O@~3F|Vf`-8 z^#+5<`U`&}EkC^9<(EO|`07P};m_CdBl}an-~P!H!NU+>KE2)g%vN0OwcsEuAG@@v zy_P3N@Qb_A_`^6L{Godte@5~TS&|Pg&tC6)eg9;|e`-DT6`%?Ne46!CAO6Yzx7Yha zNHcB>?3YzVQRRkT0ly2^_l3VB<GJL1T2MaFhm%zg`goc(j}^z$9PmgGPqT2PTGClr zfTz{ngrt!$K|IZ^9}MU-p5}vh6+#E@TX7Id#nVhyDC-wbb148~PRUAxeTe)FAOGrj znjJmb+SCZ&R0TiikN?)A1^X%M+P{ybxD3;HnvJXcx^x7XQW#G&^6}F9_i>Y)4s0R# zkeX+Zq}=J}7XG(k@Dy(0e|)Cmm6Z#?{z!a%HBpQ1|BXds@(XNd1$$%JiX$@>JCCoz zf0Y$GZxnAIUyU+l@+LM=O=$eCU=LDY{352d<gVZtLgifCvv`=Fzo$lnZIY9)b;7kS zf;kT5@)Dtzn3qP#0@w<xYpb!-OKr+zM8Gt4z>12iP2-9+YOyg0GWoF<o7O_M0$j8F z7{Sl5ft%G#$u19;4zA|6XpCUN&Ryc~AXkh1(mt|M_AZ1wMv%_1bs;BNd3_af{=gir zep~*o#)jeiAy*y>vP0G~gC!0ENDG6pfNRCDO%^D2==ExTU?Jn^iWLomOc9;~%y4FG z629xYr5lmOu7tz?GS`?z%Vgvw!eLa;4j>pl+GJm1>W=Uv!SOoRhc?-kIiNO`{8Zh{ z?UExhz3gWO_J}+IAHU6udG=fX;z92GwDB>Iaq(y4>-LfP<7*cm>B4+@5US5_vtxHX za3Yi#UuXJ?{TyHKz{>Cht5t$^$aOz)<7*`B%*goaXS`6q<6~~wI%?mJ2;*Z$5&^T5 zqWlQ?wO;n^C4cFMeH+HdRQwI{?Hiv3Q3~dxu>EnAm%teI{{1S9&aCMlIJ3N;%f+I! z!Cb@;k}87lU;IlofOHu=fOYVq@hv}eFrR!;VWO;E&eyN_7P_c7ru!4$a=t1<Z#w$^ zPFAE$$z`b9@Vi5vhD5QWdl4zUQ>z>4ome|=kybQ2<PH|m^P6mbgj`S+IMSd|kNbyC zSPD^Q8Z<3dgTbu;(a{;L7G5ys?^?JOI`q$YcpNIG&1;hk)OXv`GORGr#NG;rS7nZX z3h9#b0^c1Y-dSQRMQTPSHFZxYr!KkrZ0}RxVc5r~Gty;&!6tyVw>g6^@Zl(vF?O6n z6+}~@jc%EXB6$zSyPPgLA2|>Lk^3KjZu0aD<V*3Hjgj0`JH|J_MNi)PZ03r|oG;XD zqHNgndF)9YYU&I#3$83gyAPqTnm6^v#RJ24a6iyM41KuH-|gQX6AFB460Z2CEZZY_ z!%n9{u<y#11K{7>1Hz-UXwuI>BXQl|9_s{RWw|Q|J~GMVu4O{H=889+oi%s`=)>l; zEyOI#K&-hN6WfHq`H5>j5?{h!l<JUgpiYzi4BFg{^98M|ExI8ep;OYFkqteYR5a`u zLF+^M!y{-Z*f-w-DjzWifH)r`02U4+dMypZlzvw{RMyaQQN=7ShkQ3RR>x*FJJ|Sp zE}f(UQtUcca|_P$0dPi^<D!+uL`49VX=kA6CQS=^6h-&YVstYyj_B4obRQy@r3+!L zz_=`cozic`7)He2D8s%z#K}>9V}<F8^xfmP7KWoS+Px=H0TnS}<J{&DRJQKrDBJjj zyqd+L-D{IU+PyUaRL<3N-emWfR<e6PCir}Aw8{5TC-)O;7*+xrX7Ig*?@kRHhJZ3a zcYlm~hYAj;SF!GyL@Xa_t8B=e5rmpjnTL?CeI%)p-Xc3s@uQt`pPtqtZ=f?CY>Pae zL*)`CM~f_A&SLNYRB9%&2%=UASQ-)UW|<DWBM;ZwyR{8HgDPg7WK>MNp;Vj$MfszH z0TQVMIY%!1OW<L{uX^Np(c6iwM!K0BQ;?wbzeQ+UIRqiwcW$MUA_1FH>Pc=Y+y0`) z*yZd63MH*jp$oaGEF&8=#x7$ieGyg<86=;Q^ERTx^+gXerJwLO(|tS;;aAw*u6QVR zxo+4^whni`&JHi4FBpBE4(r$TS(9XTSI})sxCAA9&vyfbqdj+U<OD()jm%VCBhsb< zHd%7NGNgv1M#*a0P}OWz4~pnCSQ$_2ttj$#7$L3@<jFUv>o1F((;7}2yHJemZj_f1 z=Ifc41;{DDL4FkhsR`!+BoLhJ5cD#01!YuGRAI8mb&riyW(C<-D`O?F9eNb;p4$t> zDpdCwjjLZ%8q>228V?^IKsQhDcFRH<tM_+Xl<+iuT<!2M2;b3D9(o;6+KV%_U%zJN z?Zugj_bg_ni!-(9`3E6$Dl<(2H?ln@ZYDUU={`cfnErjZ$}%0|z7W5A71L)i?VD#_ zi>K5{UrJ2<nV20hm6_lUsz}@hqMBgE9p6l_UKF5SC|K>hwN(WR7RN$XkSj5$teicu zD`&q(J0P67f1x+M>hGnsV+N#R?<Et?cRfPRL8kXz@0n{PgCk=f+|f3w05Z38fc4;t z%iJ!(mCIEW#+oP$iFuUMi<l%M{uGLWCTztLQ9r(WdR8+(I1rhS0tM}k{qt9@gIs6y z&|9Jvtk6OBz<bO}>u*;g8LyH-I0=n8t1aYSNQy?SV!w6UhNa@8zfpw>EgtTP23LOv za7SsAabzvUG8@vYoPkiupjSEQU@3gK93L~6(122Jf3xJ6!mKPm=q}mjF1r1r>kr!F z*;4jB%ygN8iyBx@8-L<m{ei-2aZ2iC0@Wx~xE{T|HxcmK3|>a<IEFURzQ@(F7T3G% z$%yYl_x}}2suF*)sd8C<sXtMpSFvEa9ia1D3??n_c>qG#=L(0g{EPtEyKnqXok6om z8}Gm9vww{$ny!Cu*)_GUf0go^mrC`oGBi$M4Uabf3~U=Aw<~~Ju!`P%xBpQU5W!;R z5z&Eq$J5Ml@x2FV?~vH!5@oUVR{#ip$=>3r-{S12O-1<`;MZ^e`J)gRgHvk%qc+lC zEKy*S$2z3?`9Lnpk>4pdfZ${S=s*Orvi}QyD3V*G&aPn!4i2=}R*^~gJBoiH)c9`< z9PfK-a$Xn+Bi4Nw2)GjoV=sS2<+@W|=HQ_ST=I;5bW6<wbC4AJ??d{OiZ6`#b1}vC z8eiPKrpKS>4f*Tig|Q*_|6zP_h!5AWecTtiEBa7kzbmZ&8Tx~DaJOtt{*ovE+n)d# zdOmA>?v;#mQiTxN9}V^w{$=sGBjoPC>7b%ctCU;AALVi$14*gAs-D7!xs%p!d==sw z8E<{>pA`5L{vGj;@BOF7!#B;hib=C*{CS5M=ZgQu<8p%hZ;yYRi0Kacej46D_(n1V zYYUdnjEtJlc2@nTx2koL(OVzWHN*e1Ntsk_%u~ltsfpQC_f+cuy)^dWip2iVnVJd@ z#L6yRJ9o-me{pjuZ)?;R(m2$12ki64*h2;*_E6+S40i;cw>rW^D9a6@BIYTzzW@;H zOD8@eJ9RXw+_b9a>~>~_NP^uEnGY-Nky3yc5i;XS9-6Nv*nxrlwXXfRlWyP+sP4yo zFv#y0aFQ<EkGmAt3YFR~h!I%;@SAbZv&;AoOJ?Rox{<45LSZQBJ?K~AW<jP|k;=+S zFfZT!swQe?2f-Y|dAx}LDg&`;$90j~M{Yl^7W;A4k$pM&01kG=4C0a{9#W3G9ANeK zwjcLvY{Q{kw@d*VYERBw(T(P!TXM*UO$Hy)ieGEtRv2h4s=9}&Ia$|&5=e|!Y2s>{ zmJQRZ5F_`jQKMDUUos=K6|V|bVNrd<{DEb1`?0(<Y+5Tq%pL)kvuLJS{`qT?#_iLM zz~+_f5!&E<aTVeC1tRw9&Or&4kVW>9mG2_POi^O-Q^Ml%087BfzWj%J2O641SLP|y zTE(tz9=b8Al*1}3pZpnP<j?BB04=Jo4`?w*0jvd+p-|^IT2yM{n@nt&ju)>kogJYC z9K_SPczi;$Ghny|wb|n33)pvyr?ddDYs7!`a-#yrMY6n5HZ`$QUcr58jx3YvQJNkb zyX<xL#>0YJR_ncNat$gAu`QL`!gWB=n_ytcl1llc+4m?xmxLDBMGK_$xAM4LlQ&nq zajx`IeU6ejYL%OJ<e%^w;rupx#ih0N>OjU`rL+Lj)qj&r97Q55W$~1`bhLYwaw6QW zu6J`;2HAuJ|JrRs3`u-$YK)bGev0~F>bG7YoEgg0#3<Gx`===MwEi|JwJuE5bW}`K z6NzuX=qfYPktxZ?;{&h;OmNw*fVR;Jlyer*<k8>2(j-yqOMI-PP3!Mux%mK6ixhvS zB9slgKLj>h#ubsHn=D~Pm6EjG7d4~RcsUw$wyokx(ehVnd6NJ05uuV9+CI93OYjbi zX8bUKf2q1+eY=Nh1;lQ#hTYQw$-Wf>Q&RvU#Ied?a8#ckO)pm%AWN#Y3d9)UiP24u zRBECAW_tstj>4e7{U+6VHjw|QMS`kTzUo3v*C6Wn!1yR=uZ}q5PJtx0v=t>r4guUT z3J$yDyr{|c67Y9Yhv2T95cQJ?PZdTStCftLgs!r*+`*5TOS%D6*Zf^_0yJDfd`{GU z9L@c_qV;e;_jkW#XHs;zJqu0td;WUtmr67}=kN)_<@H(wFb&!rxAS>5fK8q!Z|&dw zHT(lttDo~%srw+xex*odWe=#0{Q0Y&^yv3~cg@G>bZ{R;Ww_sc0SRMkgwp<r_1f>g z>VBve$J{*rkkooUQuTnIKc;rGhKua$sJx^&->lDmccrv(6u5ovhNaaqb}$v5KZs5D zNiXv0*DF+dXA_7@d^KhayeGS%?^>z)6Vbo6QvNj91<2}vt~~+LYNtAP;1_HmB-ZgW z*gD6E>g4qhv;uE>(j?Zj*hy9eP2_L0XFx*Og~k0TGCtU+8|Z(rJ~hSGC}i&OcFM&! z`p)@y;F9%^&#OOXwN?IVP`T)RP4JxU?iAFEms~$a`TYdccOk!LuE;8#Xu>N!+vL3) zBfH5HnVYVe@<%nrvmkgYG~2ItHxowM9t!-+uzl}GvfkEwBxm5rtOBxU<yz$CzQr6~ zWlQ8w!<M!YZG`NP4DKZkvZ=%h9Lxe{tgY~DV#P5`*9&o})}6UGQWFucq!|-O$y;iv zxwbyhH794KJ))4_Q1>><q~Nwp#+ntcXEkwBa~#)+?);42ChDNHDHOGs#zet1=Yuh$ zEoETl;oi|og@Zr7>u2~1@B?Bv*d%^56P-hlB_YL(7ckL={h*XX;#o|DuwiL9rxnSh z+apnQHX|T2?7kdLf8YEU=<U=>u<`zD!9DsLwJ}Uu_hT+9lbevt6gka(fG~5EFu&LO zup;fsRwDR1o6`6V%z-l+<<_t0osDQ>TBCga>QFp7<d`QR04KA#e9^%EKXblnbG30E zFKPH5<ne2-NDt%#TcucyFER(g%%r9_$%$Y>Y0-lX@OPYOA#ti=oln7MqmuVDCLz6> zBz;ztfNh$r{NFvA-pq8BJGEEpm0BrHtgD9r<#uwV<@M{0xUfd1d%mBb1=IQ)Wl_{~ zx`Ulk>Skb-PeBFQ0^8u)6b1s)CNu5J3cwkuAg|i%GBiNS-gHRKr5z4wESEXJB4|gE zeM#qk?O8qBrv>t>r??UMeN+m{rt~LQCTcxv)tgwAombnFrZ9GNXnRiNC&%kdEs@sW z12GC9KBZPM85#Qr2*NI81l#|DwvS^^(f0XM+aK$p<E{v_pVr^J+Lu*VJ`O-nIzlQA zANLR$DgX`{PeFN|$;vs>t=hwUT9Y-Rz;Y*+%Qe?I*0D=>DmbOrUQu{g1@L&2Vrc1K zsOfXf(l6Er$NOsSWkA8GHi2m_SYH{Ccgg+CC0VrVEW`NKLA)xcYxaN)9fE$Y^M0Kw zmdBm$n8tfB&;{F*4cP&@rN6CpOq70$c)rDEIGx`3<fXKIG!#b=QDKl);4K&+msPkl ztT1M^mTp36W@7*@VBc6L;noylv+**dE5HpDpzc(9fa3yyBQ!SO?O&+LiWNoiev>)| zM9c2MD5bzqDQS;sFPCw{Pc`Rt(MyRU@sa_3wfuZ752-3B9^z9A`a(65ww=lvm_iQ& zn=*O26{Z0ws(D>%3YFt-2shT;y*if|;+?QYYK_@mdkXLOxri`8AUSBRZTA$}E6U&C zjsq|l#k=J&$_5FG`*k+AZMSaunM;(PYl=7P^6lrK|MC`5D_U=a`6+c;xFUi7n)Jw6 zpFtL~$o5BVA^re%tpb{Kf@82ts+Do6%HKmTl*u&6geMUSV5~1U5_JS50-bG-jLtmy zK0(qox80Q_QK7%SG<_b%eF&aDHyK&F<xQ6;U)GOx(Pskd^+BI;94)=%dwZGo@!6P_ ztz0SlxLS#5PB2^v&jU=*8sjNp*j*f7>D0*x6vKWt6KTJ<k2kZUef%gb*w9{$ak4m` zd@7#&gZyC4P)}o&ZD^0nVXWwb=DR$7^(w7b%^2&JN3SSF-%uXZ9ob8Nxj*!TwSleU z(&Mv_{m98L{MYVB2L11AKehR<|F!r>#s>y#AN#2<{^dWlfAqioRE*)zyq|jD?a+(= z{{7UrEH^u}8;Yb_Zhcp60R9*ux2e%-H{$vEI~Xq|*RyKdMDAmXu5X<^kf%RBdwJ8Z zULRA5{$F{&54K)(LX&?UqPq*Ycedp-@ZZye^Haa?<L+C3T>Gd0l>Yb*1@hCK7mdi9 z+Lg<6eNG9UlV^Y0d@Salp`De2Srfzkfb`e2bIJub)^Y#QP?qgwzWg`Pf8_K3Df(Yw z!@l}|`~UwB+<!DVYQ!h&Uggw;q?XjQSLM`;)bwtNrw3pEdUS7~RgQx(@6GsbEZI9O z==SPa-Z7D`d9zKOj@U2Bai@R27H^8p4~`ss%XAt%elFtdR1Y+_m{}1wQ|_6<1dXMR zmbgx#0TK>4+)uBVY#bt^=NqxdF{w?4hXLm}+lW)Jx^43l82i>Ax*w)utwK0*3O>xm z7HvxJL5w7*%VJ+&=c}xvdr3SSvjda$eG*bhw&YK2SxKFG?{Ok?_zWd-mmDy=l>JTn zEo<woZnEm(YIf~#dX~BN<ZAqWO&WHS!Vwt=^mLJs!v6J^`XkU(h3hBWM-Q44u3yJN zt>HUSj&;Y<*c<Q%zg~tnfn#qBXiRWzQjy>^-4uJB2Y{H+r2hsy9i)pn<wBRaBWGQ# zZWr)n+Vfz*b8<H3GPF>5&IS6lV|DB~9E(wxe!Av`dsTjT4O914ASv1<Q(9z$mO#kx zYtRTr$KMR^V_7bGE+><WJ(xR%D`CeeCTRU<2~7{`VDm3k_dNIi8Zw^%0r+}V6z8Gb z9Qnh{u$?(_=mYeo>24J<N$Dp%S>s~!0+c5i%Jo2bzX;0pau~KfeFy60+sN}M&(V!$ zTkk5$zbQxnD)q7rq5YgW>6(44kuLcaBKI2;?_!!!&`tUoaN;%kV;g478(cAaGVn#k zL0VCF^MT;CTLv_>0~No)2A{*x5^hHck7h2iC18ZKGM5la4>BPv1MF&`L8Q(?y9o$X z{O%Kw_+<26q(u}iY;y}R$LS_Jp#p=lQjUT*DV64dm1Mcy`-6+A^x7XXB%W5NasoF> zlZnVN7=uU%TLJ={iOhqWa)bdv<OE#$xq<P$J1Q=5#Mo;grAs%^L5$0{2#IkNu#@X= z35lTz*P(<b#*64;zEmk3Ige1@VrB%}dpOXOdQ8Hoo3gu@%)gq4;093yuewJOtOYhe z@E^lN1eqisL*hNRG~pwZ@Cc48Mo`Oi5y~OR4EbXxHZMo`$;rvYQ(l%%PU$z2_D5qC z_vxR-J)1OSH;SK#p}gPj!*ON$d8)&d_$jb4xLfJx*dPz?RwA=;$yfkmP(!vtZ*$_A z5as#_T3mmo6d1QB$jpP0ft{TZ@zLgs_6}Y>fKXO($;XsytD@yUkMa%Ev15GM@-U}j z)FwZ`;}`E%T&V8hlPgYGd@|CGMcT;~-(OrYs^jE}Ei$+zO0OvT(yN=`x+1$W%bk>{ zl*Q0_yfVujm0*u}bJj3_bJi$Ls2uzZPIK_ODf`Vkq8{{pybvH#Y5nQ@I7lz*5?+kd ztQGCDDF<wmSq7}|vZNXX#PcWcmFFhVx0J5A;VxB`T{0UdZyOT}kn2<eKLeG(JDsQ! zh6F0%RIRvZ1UdjAOMWgCGA7A9>?L|3(}b&0!V4Khrf?K!nX?JyHDqG$(ATQrFFveY zl|Zvc45OdlI{JsBrG`cP7yDosK{|R=ER%nhbDmSdygsa`5(4>T(!6A19{wovN5ZL> zO7kaU#V`P|w^>$Z;$3Y}t}TYbBtV(tq5OFWq3~xizP&<$ZgWuH#1<1q1TNe6PF{}- zlK`dBLz$yc_!9wN3I+3!gL1P$xvUrplK^Fwhr;{mQ)&K8#&^vfLy=C`tZ8+uzBWr% zH+V2j`WdhqBOzeaZmh}e;ncKwMvwY>$5&-;_zzf%vdRGYQ7c%+L)9nZBNe+jk*Syk z5}Q2ac)w6?IX(KEDQkV%z3^f2nlqQsvQU?IMy6bdLCM>?itUdq+bgm^uwiLe%wQ(2 zx%E!%au&s!<)j5_KyjvSmMPeEh#UaV%6-Vi0q}qf)2ImPFu&~X0XQW*sG>n{`u=@n zj&;{mWaWI+&9yKG6;ya+9<HXuuQ@z}o2^L3E>%gp3(QQ_UCNAPxu!HDrD5zw6=@1f z?iddPjhA6q-StO<l1%&*Lar6gAc!=7;wnUKj}Bjyy#!^k(|{KN7E5JAb|7LG@ifGK z4{r)}yD^478>OzD?jh}<kn|_<iQ{f9XwC|xVl$Qd!3v#t0s1I~{-h>x;|57vbQ*FH zybC<cXV8IEnm;*|NDYb;3Quu`EAE30P_HfB!m@Ss94#zJKLrXt{IrJ}o2A7r)MB$Z z99Rq!2aAn}!fVumleAzXN})5mYSK56q)`O3lBmWUO&-mXwN>+=iaVf02cNi!-ZZD* zhw1nCRi%&9Zz|WyP4;+6HMA+!SjWs69c5($$|}+n><0X(NP}<~I7oK1j&-;z2}#yA z&@q*s8W6@1Vf<vn^ikNNzQom1{8C8fG%<?EEgcpjcb9$}a@Xs(A$P^!qR1_oIb%r_ zxg`N|NcPAran=!$+gg#M-DOlZ<OVBp+XFdOAf9;tfNTP}+U@1Rt90EkhvXR*!Ddk8 zyXVCSW?=y5Z2*$e_)TNKwfGC9Hca2Ou*C~pi@VApkrwYAO1ilIN4_t~Yf<miU?2C= z7Wosxk%~RJShn%Iof870Aa(c-Yr#m|X{wwUfLaurQ)`FU<8yQ@qdU+?0gUFqLQ^@F z*55E1bNfWuxI{C9%DdHKP-%7D4kuEWBw1a5vw98ZFi82BXEA{-#7?#fbL_!X?7_vd z)edWs9oc^WA!?`6apIyfU#`W5?ywf=$;6=^$NjXJ{$w%JJEOGa8FO$K+<|wXQDS4K zpqXaFpJ`<%*D!W)#icIlrTZa}fdg<Wk6nWM@>>6S^e>gxZTk4|oQvM*)+-87;beq* z5Kn4=FgUeY>(InBb!LLlgjAMwWDhAf*0(i9OZct-5iG1YOk{e)^bxS}HZ@{e`dFl! zfwv~gqA$CKVB^(}fNgi?5ZZQT=S|b^B0KMEf2BlI?lucI`Tv5pFbpgKxI~S-SSyF| zN}PUxg~uN>@AmW^xdAm(Y5j?MxW-bukwmKA+L}1Pp&Ocfzg0*?;5Y@n$(07$R8wMm z4;cr30hvE(?*R;hO0)RmLI*ZE7gOst2L}7+q5oa?Z;SkoRnf`T`+J-NCRO*Uy!JNb zz&&19G+#&jr+|Znz~E`m=f_V@BjON#+4o1#E82YIyjP_D`n{)h1lAPZnL3M9DB5pO ziZgz)pZ8bFHJCpN<LM&!DZF;{hHq+GKZ@;_!tz&Z`TpN;d5V^=>^J<qSl*MB=oIaT z2mDw3>7hy0uHSu_y5b5tT)5w!58v*?tm-%Z=fYe~)o$PK^5eDqsD78He?C<Uv!U1f zNGC_-pGIc8N)x_hDdfSw$)3Wij0iSGVRxs|qBGQu)haj7r_K4W4#lR}!-1)3RyLvF zczXsKsVsK_{_%c-j$~{JA<FPuU}nx{4t`;2v?ok*xSm>UY^P!^O#uG}@ac*#&Tdq3 zZ`~UWuUr&A@$vW Q!P?^t)LykYTxWI37v7=<Gb-Ap4rlW(MRG$`1Ldt-0xP>)|4 zva=0@LgAZR67jauewH`T3;A6g(5pR`1q5pJ9z~)$`HrF?XThgQq*o$2>yTa<MLLUK ztep8uJ!-oLQ(vx_Wx+=145n%H3LBztg0jiQ=s4UoS7aJvFE_<rCV86--z>O_J%_ye zmi)rOpEq3m$_6-D!9qp)q2K4p&t@kB0m`Qb+e2F>GwtiXj}`G>?n2foK!r)Zz5N+w ze|F`c{CJ5_Ka<XV?APyl|9@(~=YRY4DxPXTt6W6q+X%nlWoLYrM!pRJV^K@wx+a~t zs&uogNMAd7LZ<CM7XFURFMaQ)2lJufW1BcxY5$FG*Jm+NANa>$2S>PJVERU9dLWwh zdP-x0vR18I7W{<PMLml9@kD(9wTL|ej9Q@kFhyA&O`?}R7S5d?ba#1Hv9i1b^W14T zcXn_EQk)jTs4ha`BtoPev8$p`>)WqXeMEIJlxm@f9}@$8<<I}~{=0{7S2|z^Xz;#I z26SLo^gT+483O&x>(I){6S-}24v>fYxD}|hX(TxqjAex!XXzQFLoFjD_s2-^B%O%< zxJ`#FLfHJ>4<K74uI)iHT07)y!!0Y{{4q9w^7T!W|0%RtXs^s%(M&{CY`BL5*3jP1 zC}|MZIO`kMiY4Esigc`uIXiMh08c%T&{_fjTBSit@#GW$$6D;X2QNxZO)bX?;J}}_ ziSQU-PEXH(CWmMOE49gSw-72G+P1To-GJO7=S|V7AR4ZfyYzNXFkZ{|$#uG}Fgynk z5TuD+S$G@QaW~5*0LaPVX8Q19?glu^bC~me>DegF&TxU|&R*Wb?9^D<^-MI*5ND(l zhB|__g>~(@BL0fNvw%x(Gv)+ju@jZ2DkwWVN#a<X_TieU;lh)FxSV)1YicQtsAi%+ z@Hd48wv8bC=N1-r0p7Z$0@Qcr@v|3yL}FRP-5R48HjG1?e{+WjNTZ(v2%J-ryNST2 z)ss$_?%biLUO7nT$l8;Y@}0<?BcH=5Z4*_x_hwy--bOD`b9Cs!`2pk%A*p9Bp_u6? z6}jd#>V)F)IQnRmEE<nhXdi-!Z8bk0{ci6B2Jx%@iRx1hJIt{v%v@j0=*VAR1o!Rl zJ0C;Zrs<OP*Kd8X8u#mY<O|mqK%c4|D5Yzzzh;xN`@zJua>r$qSlwBz4D`3X?~SsJ zrXuGAy@x7OdEP;Lof)C>nXb7kW$s)seCUUuA1%bc|IYIV4qK#Phk8<1JYCl*M?)8S z&f$FdLaopx15k5mY(8s?48qgY{zdTUL*N?bgQvaa@YN1{PEA(#7`F_2AZT?)BcQ=` zj|=zCdEAAPYO|}6oPQ|4MfN-gbYR0D-UD<}@Z8Q^Qg71Y)LjQm-@Gd~nV>!GU=<4C z*FQkxx=4=J*%@H`=wzKz%`cn=Aw@aE;atT5s%G^m+)OW;ZyQ!j1V`G8IhlYt6iwXk z1hFHZJ7glR=b}pC4*C!Ity(_TC3{(hT&{l+5f0=*r%rha*IEZlfh`T4E*Z5q>Y93N z&6P8i7BX*K)*}nJC-I!SH8BI(!>mz+@4DsbPa2F9$kQXqK%O4x0cgt86$=8+7Rb}a zSfhL5b;>@(h1~cZY6kLj&+peEPXpg8DNhf!1+7NpX~*_;$<wQ6J9+xeT}qnuk*Ddb z!XB)If9TW6(@ALFlLYZ!iUTC#){{!g)4KUn(?cy6@Mq}kfInLUN9E6|-v*Q_;LmAL zwH}#H`4#kn_HHxO4EQq~bnbJ!pSY?de@5OHv>M^hC6BF(KL?)W_%oE~tlxO=YIQw0 zj5_F3jrYgSjPhqT0dfJm;SWD0f9C25kbpm{E(-W_{y!DjPWcX8tHy;wef)<hQT}{@ zai;t^6Ey?={Pf;+@aNI)lKi;<+TFDp;m_-ju8Ti6Pj&n`o#?C|f5!SAEZ~^_RQ%Zi z&3lm*dE-vUpOdl4UqT<Rd;I+Ky}a@BQbWL>7v6RJxht?F3;DAPW&w{3W=|qR?eGk0 z2K;#*Q%0ZTXS<ap`ST*QWifvadSqSv8FYr@&l4E->&c&atim2tpa-9hKZ&12`7>T| z!1!4@xg>uYR!qf&*sT*IEzMJShoWh-W>`Zzr2}r%LCXL&tfy`Z=wi351lG&7(4iqW zp5%rF`*HwkE{!eV51fMnRU2bBXtAc)4Z)Pk4LU^Z;^Bg?+2q=aX;<WG=w~ep00S7& z3m~m>CPKoJu`4wr6}ytPPznCAdCAyEt5GuFhG~_|JBo|QUO*}p`v|k~)Nl>gyZut` z`*0Be^oJkCO~+W1*lG9g`wc#*&%Snizxc82ojiUF`FX&PMbIh$*(q1f_YJsPZvuV{ zgU<9#cgntOn*6vMH3NR!3njlE{MZP^6=WViUO|x9dhw&$kQbScp}ijbn2zGwhm{<& z{m@^<{8;EmyYgcv0wh0fJ+>Eq)CNYR9l*?BSp4255m<V-%HUb~3P1u#hRa?AoOZ)q z3XjOX_{UQp_f4`)-mQ^ATmtnEs&~n@#3A25FmpvKz%;@I5iYWLeHQ)4T(&eaa<gLA zCX_GO{=lGHmJiY&B40qDPB6f*O<b0{)fT;tx>7lRrI#&T=dvznf~IUux@#r$nB5J8 z1?+S#iM{~@(P+JOD;2B9517Xw-|_!&2vCV^OTfCkA0g#d1*2IF=~hYXhW;!@$mwE4 zoSp%wZmfQpU7&bAj{<(V-*cO}w6Dxq*(R+K^l7ZG(;U`Oo4$-QI_z2i3L`HS(R<%U z4wlpC8rOV!i4dzGbB;f*z3q?L^M$%yoSMt!J#t%QG&~fp=PnNfPfu!*Rik_ci#?C= zNNDom6lmf-3y{cLCqds?#A>sz)6P0WSZC%Ea$c9@87V&|I6qt)h(aijzn!6KA?xJv z#ue;dp*-FJhk~Kc+aB&@nbPw33#;BGR~%g=j}0qIwZG*BdF^jovi)82+TXqR_BZ$K zf3CmnfAO5W_HTTvWdE@+kMy5qdg;GaNB_Uq&;IXxeqQ_AmTZ65y!LnRz5UI7`=2Y- z{$%n$JP+Q|FylR((w<0>N!Og42oPz8V*2HqN(gxN5KHwWibVR4EV`4*{0Iru(Ur`( z+~DnG@G^i^hvXEFp>zHnz&Kcxpp>;>o`z1G)M{GqAl!)HTWOUz5n#am*9kN_7T8?g zSa9vP%5Yz2DC=MkmwcM61EEXS9$DzGj>scaB-PJNZ+g8J%Q&T$<;akuhjLuoxRCRY z3Ma>`&>-nW9A+_#>bU`J7w^aR$&c^ZYMsrKA43e3@nc`;6;G+Gd<mbW`7ww&jvqq| z9{I6ILVldNd9VDq7w!Y!N~_?dWaGyIeDsqavwWTNS*L&>XB?5wkC`hFZdC?FT1~B) z#1v(ho%!j@lx{6Dm&R6>N&F)9f%3Nu8_0@!ZG|D6vMVf-@Tl;3_*m#b<THHM=kps= z5GGyZf6nr&BKiDAKExB#8ZYlU3T+fUbrMV`>PzQr_5(wuG6IU<0M&-3+610vpkiJg znPor7RL*kq<lXWJH>Bn!hWQNhpi=s&+q66B7(<1#HfE$Jw>z|BP5K#NMLQzyZ+M4C z>1JHursZ;{D5-6N)A4kBVFI3^2EPZtayPd`;JHih_h)>{JKPfB?SSe1mh$%i>q0%| z#73NVsIQncR~yAI7m4Wn)QvN6dyI>hb4hb8iH>gs{o0>urNilv%ErXTVYm1hbjz-e zaF&Nv_`>HM;jDW=0UZYp=3r~g9jk4aXr-sklQ)x)p1jvr_!^pBBlx9TA*=>rQ5ox{ z7czcJwmj7{#}%B!r@9pxXDXN?GALu2$xvAB(9d4ej}GBYHHPDj^wN{*$00Ab3ra$+ z2du__6^UVrzoIKo<ERP9qk&N~mvD?wp;_MDnn(NZ@DlS)CG|a|&U9P*YiN(_Gjog= z`4jE^PhHQ+>DWbqAthfun18XaWoAx~e1{3N9-MPN&mUfe_N@MBSHD63M(TgAulj~> z^!($aC?0uGDQ|y2y8ku$5X1NE@%Y<o{{ni*Xc~P*`w?OO)}Jx|!(9nKGu7Jg=SKth zq?3#{Qo!}^15)zs_hNeq%F68{bN6^J%tGKz77P{{VLxb5XQ8gT<nhG&;eZ)sVwjcX zNJV)V>hMqFK`&WF7bK0k_mPu(h|;c>O-X+YBUhlG<GM#h{X9{>!sUhGmpF>aCNZ5- zbw0#5J@}UkRF6QH?spkJ<u<KK{kq?U{QZ0T4JC=Raj~|FSqML*sAYg_D{yX=gU+J{ zi9uW9$M@_<GfE(VN`MdXEPurhT`X@whdJ_djF83zV})`c0te$9c^jpgG%Zjm2U%kP z2T;1#2555wXuc7>hY3072RYh~J^ON10zJi~6||L_%WpIZRP3di6E6r4O-!avIRSuN zgK`AFgO;dr(9&iFEvY6NiF0$VJEm;5W~qzWKc|Trld)O33FY|-+WGD*ijFDB$&Dze z3!D_cM^M`1cQ0$M*{BevVem_4{uP;q7y0J)eseo35$x5HXOHnZ6c>~tUB0c?U?r+U zqUks2SWRJcdhT4PHzbXUl;Ss&BBdr+sj5gRexsDm=4pGuJiU;=q!A5cKKEst^fQo$ z!v<)-30*ET6f1pEC}VyD><DX|e`KC36-m0qlFBt{VI}{h7xkd33?1Of;1X`%fD>MY zZvyX&;gi_h48}N;>WLDmx`swUxi6X0Pc;h8Ls2Je+Q?NGQuH_SC2<<l!KB6SV0x@L zyU3)Y9ag#B2`VZ|?+wmR@Ey7FC4gGSOxKa0BLUw^xWVYZwv($z%ki|c=Mvrgm0H9< za;EXDCs^U768r{nB~of{E5*HThj>Ewz3rqQ+S9`6g;|1ps{Va&cBL=dq@Mw2zo%5v z3i3QkqNS`a3Zy8MU@()A)1|)_@{hE`ziGVz1on|_%3^@9)N_pUailIyEW^KLa`R7v zampK_5*<iI8~h`Cep^MlD{MQ#Z<NYJN_{j@OLay{@f)SuSSr0p3#S+Im%R2mJN~pU z+oYdC$FsE5tb)9Sl5EKrMUVN7q*iO3f8?K5swI-N!5dn!*^-ze3`TEEJnTU==_gxd zsJ!Er%^9hM25K&=%aP}LV|29IkY<dk;`$jAj2BB2vr)KAcGerh60N=&Wb-?2FlEYN z!+^vBpWBq?r`<iDxD%hwQ<Na*oaWK{z><k(UkB;@_7Fz`BIq$M%wEWEP_U8MzmH+4 zoihXnpqdiJWiJ8W8WUIh%1!#&sHkYICjD$oT!j*=wTs^ItfrrX^4<}Mp42h{7eAn4 z0;a@ayf!j7Y=oad$wR}w`aTVUOW1_<PJ)RH@ZNEl3LJ7dZPng!N+#;jjK|@3My5uO z1SE;ypxktz2x{?<oNku>^sv-iegiKD>nM~mFF@^E!5Ft*9%d~}4eKWOjTWY`h14Sc zu`A}5Z1J(CM~Y6dqEoG?l5NGel(Ul~rT7hilUWMWzy4XsUo!Ioj;Z5)*(UuAXncaw z*wZCWC{|t0Lp?y8=qtukbNP)PYble#F^|i);c+mQ02Ie38<*2j+fv6vtAzRC7fNPW z^5@Ha$(7Kyrg#RdR{ayMBjPMMdm79W_juSf--SDaI{;@fF=d9_%q2ANba9~-j)+t^ z%~$w_RzRpo>p@(;=h^?&f&I_@>xP~UDlQ(b1cJ3Y1S$Ki#jlD>hTvbjOI9=0bu6gb zsSgy&g4ZeG!0n(dpjcurXrG&6FX+<`Kw9MOb0Lz^u%s*^=``m#=4=YEkryDU)&G-~ zwXuAEL&FN<3p19-`uP{jsI&LtuwZaUx6I}@oHsBzMUJ)%xl8}T=ms8fJX9#}AfUsq zP|#9|^9&BYY!!k1!hV2VwEmb399k^?q%}lMP5w6Zd0hD&^+L6&uWHRQ%B()f3-{gc zaMnUjI0RZJ*6t{#?@ps3uY?iXLLb+|dG(U4w~N**zJ)`@J6*HiiRv2Ue#OOq4#8o; zj99%Y;G_+LBpq@E^GB1fPPvdZxp4&vTJ#ha{W5aGWiKTIByW)qzs-)q?)UDy77<Ot zN@cGD=}Y7P^4Ci<SK!1T+Fdjc(r*4E4)=hN8e^u8`xYeg0t?x`8-vs@RL))FyOyq* zaDw(2@m6Y=U5yGx)C50+;eR!a;dD*Sb6DGOVX^(BfEG2?K5^|t^u-PU8=X=M8;KVk z{+maLH%A7ui)pN9=wHE>jC>b-LDhQSJVq+NkzcR*+gd(VtOIRY*LhxWI|LRU(`nk> ze=gP7xxQeNeg^%x8?HIvQ!kIA7#f`7%f(ZRNG!C=B;-t`kwYmu?@#<~(wDNu&8y=% z=bhr~HtA>3#$Ig0fg^yi1fbi+rhQTd8`~;u$t^$LZSp)x&DHeO!iknWg@~lnx=1-5 z4O{<RwM#E!f9z7-ZumcOR?cIU($9t-D8~jfTaQvm_Uz|&b9{St{ewJ<5VFR^1Yf&J zKiQ{aAgaDiLcnQ_lc9VX6NiLl`C0K$rlDtT#Vj2Y?oNr-GER#g92VuL7EM+pDgn9; zAlD`n2eQN%jtYMrg-((<J9yjAuy2~E^$=3}=_;T+?jT{^Wa7KpyG6D5Bh#L8I5#X} zGVaS=fDw~QyE3%dAurmSXQeF+o^x)qg)Cq?dT2K6Jwc-ymunKldjVffxcFJcU6%u2 zI}7Jf=CZN1cymQxr*_T#o@sJWq(#RRU8!w~^DCazn(+3SNO+G_aZ09xQH1)iMl@lI zLHQ*h;dA8Ib*TGc#NgDrnSunMH<>6Ma4GtUw;u9aI;Jo|&ss*C9$Hu;y1r(Mo<1i$ z6Vhi(cIz2T!O?CxLdpA#ow<jZ=|x;g%Gecd;)epd>sYEQbyh-0ztkBrryD}xh%8$U z3tuxO2&9+kpSdh0r`Lv~NE4QBx`Br(_X8$csAbEaAi$(C@pUhHP5Q|((F2w^M%C<Q zC}mL!C{2i<)M+Rwr~~j=lxM9&i8bQsxhy4JUk_2zgs&P(EF(J+rW*87$|rOVu(gD; zwglz1cd|*?yBD7Zs0sb3sYu*uH5G{)S#vYiOxGOredR(1$f3(eF$V;p(wnMeuK6O4 zSxDtdQg440(%hyrKjZ1aXPm*>HD}`w_P65|n5oi>TG`PH%ZrG_Hb5lJzI*?WNSd&z z;m0zv0k8l9Iwhucu`lOEh^mtG(wk8Fj<?T3Mc|vmPcC6N&~b&stOPx^)p?LE)YMil zH7E+bJ_7xx5$K}`eKSILih5ZiNf}94%7h(};3Nd|)8S`&Yj+#QwsH#XJQ#2`)oS?l z2!A=Rd#4OSd%S!|BOMYN)$dAniu@6PwWN_p*5qgm=-ngOL8mRDrZ7n-FK8a@oBPMX z_%MI2w>KCUj39vIq%15JeA~4n&Z>Yp(o6tf0N23>euK#?zPCx4%tl;uW8ybRF+tGJ zV7jz>njPb6p8EqN=b+`mH1E@&VEXPsIyYE510Nh;(0wHMWzog+;wkJnEd7Ss6?1&s z=r+IO+~;9_v*puFaUyK@m*~C^FI&O`0Q1(+qTu4(q0i3%{a1BvrM^Wm&}6zVho<<A zrs_eidYTmcnXdWhC>=di3m83LcrswSO(eN8KL}uLXbtr{Vi2$fEP-l@Y|QI0#Cvg$ znXGxXee>0ChU3Hrq`GZwLfhxBVSCKPbbfUMtg$>>NYR~a=ziVMEoa$h<@6`Q>OCkR z`$W*S8hViq&}9vvtEH~;L(!qjX%bp_1pdg$;DIB)u5gjAv*^^Biq=tR#bqz#H#$3= z)t)&S0|29e!%E9%PDA;$wl42Mli*w17W*bT^5P$~JUcFPtUM_vODugNzuT;QHNWq$ zZ&F^GS;jay(MYrZk;=&q`~qnvBHts_h9ubrmmGM^t;V7*tvHu8KpHJ|zSnAwG@^Ot zi96ME8GT_@8EN=v#Y+1oEE#0@xAMECKE#6w<}tVt6Ntx-si3lw@#sr}^qN1Ns{J7b z^6Y93+QaavwVL!Zka{p3^sT9B=X$`D_n9G}8O?xhxa{qCo10QF-RIOx7oE`57Zy#J zTxeS?C%2;|mKG-5R+s>@CcnxVg$ds&OsFYLC@~SJz#WD-Brk9c8-@aRu6?V(o!&u0 z*)?(7Sa}t=!!2C}ZoHLOfg5MvDsX$COzxOMx}8usd-n%l6`q#|D~>8W&)K&MPkTGs zLD)w=q5e@o2G8fuUyRZ)=FqL01*e1p^K00tjfroC0>jThV7_7%-dhq1Of6h0P9ky6 z&IwGzUS42ajYlFiHZ4^n7Suo!9-xWjPi89dRi6J2SwR<6=C6Y4z?6#pu~mMS-IUkq zI#2g~k)o$l%PdpmG3D%mNwG0e7xs~#?Bo7n(<pYw*L2pY_2u9a<9A@5)V%#DX0t3P zuKo8!XqKn<A^Z{sXB2+39BS~ZBk=hh!oQC2>x<zp(qRh>X<zG3Jjl>2xBBGkm^>bR zq1UQCaR-0`NLg-U{9`}yLDJzo&0}18u|)B4d(<A_EtO80f|6?P1g@&k=zyW|?XSXH zh1cxs3EICerM?XKs^kUwl8XFCRe`U={8=Kg8jzg(!}rHgL6__0aXPpDz~8~68F}{` zhyE~;!M^^_3hLiKsYLzC0KW-gaXJ2o&_h<q1MTj-ZV=yZE;w_~;9GZlyQKwwV9L;; zO4^!Je#kLJZ`=&t`uV}5Y##>SX5S6ASm3|gd<lrE`(REVb|zy_vYNb)3b`4Ch23NA zIgJ@QA{H!xj9A<{tRMA8wxN}Ia`J0hnu+t|mtUdq#+pqk@d6UyG|K@O0xCI#Hriw^ zk(#-r9=~Ba=3~$%=NihLa?Tj%z{>YuMdBIIe77Va0cZs0Uk?IU<DGnkboT)Rz1Eir ztWqE!!Fk|rh1z&3?FfcupotgkM;1Sj0JkO_O9-`H8oLiNe>MKQiZ{I?>^3&n?WA0< zo!;+|Io#GaPs^5@pi#KvVHMD<qj9hule{+y!B%SZ1te|+BNyue1&%6^6wM8g?&Y4O z7C8)v1Z5^hY#z`V0CaEy5w9(7Pb?F>C`Fk7j}tzDqy37_b*}|q1u+^7d@VYbZpz=F z;%c;(pWY_VEsnU3gOja}lPx%FoZFfGjwGxGF8NS8qz=#(g;GsSMH89{TDQn)dj#u= zDE}#!TRoz3SsAdqz~5={IyQLxcz*-n$V0ikifEc6`?ABy7jW9e>;&iKt0-r>c(KEc zS($J3vvOKcU*tmlM$AtT_miiOyuP4XIdR*9v5u(;|BL7s6+W~pGS1`r2^MC+RgNfX zr(k~})GtFvS(SG`Z+|~L34aUZ-Oh6wef;@igmQ9-%ZGG6l1{4-r4`J^DkF55vkd5h zU=&^f%?l7_WNdfpk?G7;D9p{s7{ABOa<ci)6pxAF@OQDPS?PgVLd`BYcem31>r(vO zYIn!azkUg|9Y3$%K^v(mxbLJ;ewIDVai|_zIRM(r?@~Yq=kbs8$@vCe9{pkO{PXdd ze#=Dff~KX0UUkdCFu)pmhE~w2T9&IB#GCR~;1hp@e=v+$7GfB=-)zqS#Y&lXDqWFr zlu14^CbRc5u(I)8(Ev{4n8ymZHt|!NdI>zkF?LO8$PLAT{i`xo8s<0(1^iqvP)XjM znzW+fk@7LCjfH2N#1kj4Hq3Yxx8|vt3xEG{I=gg2m5l`i=%rsSQk?lqep?sLF`cpi zIXTQa;790Y0{1&*E^`h*PAc~5=-7$|DQ5sFsFRwu0w9;3&xU!`o4Xy1blc2zW=}MP zo-}~B*4=6(Xm?jmw(c@vblrozpTJ@LvijJ#Wu!|zG_m|a#aiv~HHU^+x5)d*$z4y2 zCLik-d6_wB<fQ5{OJg_aH9Q+MCU!z|6&D`|bjD<6&d6}<&Lz%17~dQsMpslr@0)?d z2vm{!<1w$K^c&Cy2;w8)C)g2Ls`Z-m(;&G7w$zx|3jeM~g?we&EM?#49yoIYzM=(A zxO3$BvjRl$yV2apYjOX)LS_+lReU@HJp|6I)F=xOf)sZTLhJnhAP8+65nP+Z%^ih` zfPZdK(Joj>+cv?WfAi_?hGAPZVosVPr|sg`?ar*e=m9otQ{>tD4b0!11_-N&QiL6) zx<7ycQ*a*T70ex0kf0s=GsAcKv+Pl8U+xdldQrcD*5O2Jrc$cr{$q3%a};Tk^uFbb zSu&-+<f=mg0W*i;Tx90O!*-abn;>L5Gj{}NgoX`_J=l;LG7zIWwgMV~S3bui_ZNms zg%PfprVky(E!)6egu@qPFsF{jhnuMpC?x1?+eG3f@w~&8%~R2Kd+b%z!~}s^bun&e zaMoTIhF6!2ggSO6ipdBZRN7@mNFsmruA0w2_<SP?0=hM_Z(5t|i|M2>ailNOq@RJf z-pRJ9A7Y$!N`|SoqN!Gyr1>tuaf<zD#z1RE?Rm1(g&?5z!}gx%$w@da>Qm;)vZHv- z*Q-j*SGBzaKxlsMJKCdAUFF(1gd(D+EzAXk-1W?HHWvvt2cycSkxIV%uo-3uM+dXZ zSmsA8qv3uQ;zjz8#ke)4t;J=^@!W@_n)B7i;ya}&sfAST1D48(rJ!#bVqi|2-A*il z10OKvdzuYPE76%oIckb8<kSF0r^r{5o@9|O{x+{_z3dmkf^G@w0@SXT_Zod|ZkC>W zBqWS#=ve!}eyx3oOyGwLX~(h-TnjA%4hp+FGeZBo^DH)O(83_!!iNaL(O#{x50M-{ zc=~YE4#D}ZYS<}-_D)uwLjjb`x<yZyT(%{7Z?@rgzDRE4K|<JH=bXv!SQds9BN+<! z*EN<r@;;OMO}=aCb(Qz=<#d+gS|1Qq<bY!%QOf(<IO&!}NJWu1D(<b8FGC!Iku(G) zG;(Ase3%&Vf}r1`e69tI;tD%hPOG(>7moq@;Ib5N^LmH<xR_MT+Lvu(xTF8DP^;xl z{4Q?x3qi9i){rTW<Mx-_y~Qn;qF=;56HEgo?A1!;AMLSgG(S^iHm&V9MC+%D>$|t7 z8)Iv5qu!d<0S)h0HO5v~T#6M~8SeO7)6jEa#SIxGHO2G^>Wl`f%tCHppIiG;d!F&s z5xX(Z9xs%KJpAtIyMN=*XtBLs-2Ud+53+K_@g6>Y$JRc4ACX<b^M~d77kUZg?2^`F zkVx_8t7KnAmdQ=&2M?DYtA)Ge*)PLL?|pqelr0slH$wiE&aVPOS&Q$%ei4Rhdd3>b z5ESvl8;JJaR<Klq@aFMnGAcD&eb{_%sGCou)imQT3|K2C_cD&@XYtn$lrDKyQ{73V zb5+q3AYVsslfk2*C+I4<P%|(MS@2CnOKG-RU(`HzR)I#P?^haKQHnlQK)O3vZ(@f` zzRIR-p!TM3aOG%e{bKT_>q${}Z~;HOe&Q3|$-3@%du=7UPYu^yQeT-oK|er+GFmrO zr5Y>LgGGIyA(9)JHXUCcPwf>?ZPi*P%n$b(si|06-qC7+=PszMCk}<{FO|*l^p$8I zipM(+iI$MJe0oy0($m(;9@ca=#PHm5IfRLN!&z2e`1Z;%PrgikqvQVoR#Tixjla)S zUN~H%{RP2QB^?;hhy4RHTzsBxt|Aogm}(kiysS<1vNkR_WuI$$*2Yht(OvxzN57oT zpU&M8!ZUoSUrUWow$(Pt{x?`9q;ULKtNdcshQFP>Q3CI&qaEG^mmWNM20USE18qch zq6iM-fE`nTkBvaaG+x0@^W%L6gX*0W%VoySe#u~3$&EO{D%I=)PE3(Rxz<BDmb9QB zW7{wGs;>h2!S4Z^c%A&DKBcZ4AC%3P$0)oL_eA^akPp)P{6W6m()wZ@`J}tF(-Py7 z`DAQuSfd5{G34)w^eq+W1Mgq4`9fqP!cz{ckq>densn5T?{5u>+yYs0CGH0?%H)Sk z2-H<C^Mj*Lk$ea3>+K7sx3(iA)d>q>*0Wq{e!;a<Jl-gu@W3I<^CLPwD3g5ei@S0% zk`$s?Y)<$A!iDl2(yP>Xh|cGqF5mF8y9Q|U`T0#lXV(Z9gN9s09~xcyYab~6dXYcK zOo2YB28}{}LVelLUM^Ud1Ot>QmCkX6Ns&hC3cb(MkKnA-6Kl@bxW7Vf(jRpgo#p5W ztUk`Ucb=fP?-ts_QF@-wdcDXe<;VLg>4$_5(!ZaqF254`O#88hFwy)rcx=;P=i3jx z$&Vio?a!$$6VVVEr#xo?XrPZNFUFrwBM)f5fFGg!`u>t9^v{mQgOy5T8VSAN<9Hbv z51~9yVErQchWV#+y!W23{Y(!|pPQ%BWd}MasDWOGk0&5;$PXv)lrfCG`P@6@Al$SE zA5PI+x?QO1!A<h(qRCEN`qn2(7dM`rK~#D?oBru8p?|{ue;WQp<@euQpY)e@%Ck<k zOH0nz-u~DAs!qk|ozabpZ8_zd^w?tVkEYNeTKqk=T;TCj@sb9X4E1lPw%5>JCAV8f zmmBw3Aam0G?v9>&oGT!xHZ5Go!ol!ga9rQ~<b3!9=hl>$A+OH^{^)py@6i>=&-eVD z-Ag{<zYyd_=iB1(=Jm^mR=zj=Qj-3~`Xs==Wcl@wA02;mEIm4zbb>JKbE_vt;1666 zcqQ>E#=nq05Ee|!r+1INUyaHmuI_QZD^-phyN`Y!vE9Y@-75d+qhOiKpZ2;aUmr*D zFRiZ%@xlD>=7X(E@T<T5S)3gdPw!c4eY*InqCTxWX5I2T&f13_3grv!7wGp;9!8fg zPkY8cncQAWB9{?j!TQMAOZr;MEV?sn98WKoJ?90aEw-2b_4ZcSpFZ_pfNv#qkp{F< zi>1!3jHiw)mnw#&n8{LFe{=knf?rJEP(C<^_wgRU$fK2|h3$p){rv0Y%e7yi52`UP z&3^LbxyV5sQF-KY_bbL|SVAS&^Ilh{upUnhfz=d=2PwAK0($FOt8l%Tr~h@%{lESF zcHO(7#W2h43y?qJUnv~lg}<Zvq?G(b@|}Ji;rvaIPAc2i;UqB0jM(GQIlahZ1fC4- z+n(x8o;m&l`_1(S)1nGbk^I<r?#}Zc9R_pC)=hXhAPq#f)rl1&u$28ud57F#I(du5 zblz8IG~O36wc_fz{!iBO^jE7H!d-t|rnSjvnsj!LMn-<}9)D=GK*kam%N5(|3ao?3 z$qZ`^{s48+bjiL*@E6&|mbo2I`X*W3{BL^Cg|^npYVsHD7;oCgRYA!|<UIVwJIk?U zO|fNxquMFQEL!c!*$=?`gn*Hv+E#sfA%F3djiU(w_sDhwy$F=jryT!AfBMdoSoWAt z2F|S+S?IcNSr0k|JIZL0I}BOu$5iPOW-JgUq8c`8!RV}?wWkEKIrz!Yeg3X3C)INE z)kuToMZWH%-B-Rsw}kjReMJ37J+xe@67g6^#*fLX@&AEUV40faJ@T?OOxEYkXA$|< z;c*{P&@$d0BRwMeQ1!m23HpJ7yxb^)L{I`;<9g9!hko?xzd)n_+A8$_SCwdw?R3le z)(+aBFBh>jk#?X(dZm~8i)}LMWxPfD$FYOu*hSdR@_o<=qPAeZ?vK78z6JCy)MuWy zv=KO8*kn<Un$})kK12sa#to>rGNZVan13St{FmsXq#rw6RMde^I+=y|d3{CxOaRgl zYOWdR2<efZsl!R-IgdXcrqa4c4q&}r`BUk~u58^+6;!RDd2@&x>IL!)`H8|;c~z7= zJ(Qi{dKU1b<)I(?T7L#*d!+~QHF@&mmGJgl>!k_kM#gJUmi%8I{%XI#ld<yC<**Oc zRZQ{m0#`y_M=O6AD^(@fy6`m58=u5y{pPFMu)m5^2K9l6UOLw;r*soJIFT;nN6O#1 zxy9GVFc`e9>(F#;nVc}vCb-5)8i*#Jqhi3K;sYu$dYkpOCLP~Fd?!4K)HdAetm{0~ znnN06ETOh}m)$?MR;X>j2mb+JtW|II<<AB@4U_m0X@J*4P@@aN-FavVNOP-uDQoJb zOcrUu8a}=g*#if$9$V5Q!SU4G>D1!M#j-PJ7D6av5o=IifR;V9j$VM*i0BT+bjUbO zv!_pVuXxe|Ia1SN-A$8v5GB$K45>it@wZt2jN|aa1Vnz`urV66F_gzoyI%|Zz>w6v zV9srrE)UbOq<3U>$>$7P&Tw6r;Wh>Ny(_Ro^nC?4&5=+Ik5tJk??(ca5QR%>A&2kn zxS0=ZVQ2|bmGWIVGoE!e1t#Ul!k{FLdUBjdb5|-9V0IE<+q4RZI<02&+p7!On_i9v zvA6G<*PUwDs7|k4?&w>zRRGm;J-Ha0HFTo|Iu)l;%*21V3raN&5c?5gwf&Y%UI);Z z9uv`Gdt&B_IRFBZ&#}Y$CMl5#6|ZhUdO;>A(7*nJEyOyP#-65tb=r34l^V|$gSbt@ z7R(HY;ta+V|CY%ny^Sb5M_$wfG=#U40cD<yqcl4Cc-TNUdsk00s?6go3c=4p@Vn&H z;i21Sj%<UvOKZy!h5R%Q7CsG=Mk&JB05;|~YFd-AJ9NJ#hZt4Okr)TB3on|vguRCc zkbyrx9H=3oh3m6w^rr{%*{%LydxQkPHA(^d-KbA^Fqz!iS?54Ct+3?@<W-WA<??Y3 z#Dhes6mF-LuvB|PQwa<}C~lqdye8FwMvy`jxl(_RRX7NWxaIGvsJi4w*mH}gpips8 zRrM-tnG*IxrQ*-^!wWig{V??QQ<cxhUy&mfDE(?g2KVFfchE^JQS{-_(BBZ9&nK{K zfj!~#&0p37f#{Y4HuU9+<<a{KJiXl<rS=rxlQslOxBsENj9M_?TK}W%52OV2I-gfH zg7U_3My}({L{2%=x|?DvIYq+%Xw@-I6a6B8vC*>>{u6?VQT(fYYhJ$GaMMQfM!;Xb z0JZOSun#PuZ$H!l=DX(k8}eVz!x!-<#8*42bEC*VD>*q8?C%~u1EP2OjP9|vzl-v8 zq7>UJBv>!@Cn?)@#r6mD|AUI<wTSjKJ77~L%bV&}*1s~KF<#QX3&*GSfzvePj4Ivq zN#H7+7pJRm7RRigufqO&e+rnb@>bgaQe58em)I0y8(NSUkzLS=Cy=vuye{$fbg}=% z`V!=C7EeNr99+&f?273XkKRv7{3GgGm68tQ4q($Ey0%kGC1T&H|AxAadp^1_#&+AJ zmEQiMN-04vl#k5UG^b(I^kTo(0(PW)V0(%DCa0RL1M4MuIR#R2El(fF#h9`^<7!nq zqm0E(GLm2Jx?Bt69i)$kGWaErpOreE`jWq>{pj@*<%au^h5jw_tM~GiMdc&#Wb`XK zK1%ANPk~>*{cpdpjg>Cb;oyzZJS*pGI%Xu!7Bd94$rcn)&N1CIBGiZy8E#T*vq`aj zs}A%PWi%O+)tH7WW{p))-e^MGU^)%I*I!qgA?qi0idmP;8RjN)$7bCzGHeK9EETS8 z>nvscU|Xl_z=H8xIGzgEe?DKwwo@iL=Ac%jX-KG2BIC0cetY>Y;3xF~NUEez()?G& zlMNXRJ-$BiWXFA=L#ovLGU5Ndc(M`j&ru+4j1<R{F~3AS*=Aa;Kk;NZgzP5d;`taa z6}r5rJwSOfeaRt2+4}!OJlXLZm#{b9{Ar%OvGufnxxIn;lllzvz0%s^$qqk9=Orv= z22VaRFZcjO`yEeKGsv%3oc6K_Ox7Jwwh3uL$K|uDF%}EgBb7kH*$AAQVCVd+<H_1L zMf<(l$JRdQuNSy}E3zm1olm-l@nl<W<{RyGK0jqhSR~X>950{)X#$e1JD%)M*x_`6 zAU4BX$pl;1l(OgZ=v`vIckSz3sB$E_xWmK<r2>PD&UE}2G?33v#XYkB5?%k8OfsIV z3X`imNt2vn;rxGY0g?|dYJWKUwP3yq_@ne6KbH6HK=^6=z(*4>)Xj(M0k4nwG33u) zXu_ES8t8{OFWk+5X48C{WYW9xwV*&?v@hSc<o<py@5LKGO0B=HVLJ*ns&5PE!7^~| zx%l1gcyc3+S7(~q_ui2icb?3G@mb8z0DejO6qm17d5+@m_jj+kQ}q)3Vb&3|&`R;& z<ZvDQ?+qU{`NQ!Q!JpBxy^nXw6IAAI-^o*%@|cg;`Wj6UQ!7#WyYb`3?|3UMg1*8c z<#Tas<ke5yn|;PT^5W@z`i_r?uJ`-$mwWlP@}DVQtK|B@!|%=B|LplDFQ)&xWIjZL z8+-|hh#EGCj;AB%Ar)*YCC+yITP=Teg+%X8i+FkTG|qmO+bx^ZZvoGgAGfrYI-Ozz zEOlk#FD@)N@qPce;zF!7oNezTGDq%RGX5cyuhHrsfs@v49|gkF%lhsb^Dj$7u<u>0 zzd62?w^#$EFlM=C;hNZgGR5`5me&R2Il>?Cx6<O_REUf1xzhXZCf`mTl|LXI$nWO{ zOoBWg0={Iq5bnZ~mOPTbSt3gMrO;bU=|g`Jzryuv1b_K(N9g+A$FH3KtlC$-&KHD# zwc&s=`Th6fhw^7_SiaM5+$B-(Me%wv<Ud>hu5Ph@ApAoAj4Qw1{-@s7cQ5Q+s{IhZ zQu-AAE6|rAzYSkV7g)VGJ1~s*x?*Zkyw_ShLrm!{rcWU}$glHH>3mcm55@CIVSU3V zh^O1I7?-nwOHuq6?7eX%_*2~fkY1xpm)9}ql+CA!H(PS17t=oIWxfgY6(i}h*<)dU zO7TA!U(Wt(m|im8Os_z)xv$iGt@hD+&&R1Ch^=_M*nE(cWy%9ww0oJeXtJ^=lQ6S3 zEG@_EiudTLcFp&P_iXrssk<9+9b6Ip>&J8N@j=yr{o>{%I&k&=I9!;!@4L`$s{YW# zgdy5+mrW(uEu|Cj2$v``G;+IWd!tA{n|ynITYMtU)}l*P?1)dil4cXy%#nX%GWv-x z77$aXh5k@1^3<P`4Z4z^u~JrWi%O@|Nw9OKt(0R7NESd~ig|q)>A%VZW=o7$Mh{)X z{R<xR<&TH>gCCDs5CZo7?7(lKd`txr^9-Nn03WIro_ohVOtuMkh9TD?SLsF?qkcqA z1A;aQ^Wgh~w#C+pKD5eVE44EK%vhCHd1VzC!%|0RMywg=Ol4@ity(ko&}FCWW%V-h zHHd4k<F8x&!)j>&jlS0_wdh1x9(%v)=Y0BPwRN%IJ^01(c?KnlV`YvrT`RCfY`tT= z)~0-Dmmkx#n;L<G4!t0EzZV*hbSAqV>6Pft{|P!;H<>8IJ){I&VH_B8$Q$UZ=WkUW z6DZ?eAJ1Kj@&)=hx}FQ>1JDGnG*`B?|JvCLgzf3)CeT9p2=TG;CUW*Jx~7A0x5K;v z0JmPS1!H0T%Ah~4FY9P;Vpv|~I|CAR%hT)+?DEb3sWi*z0CDzZw~R3hGOI;(|IFT< z&7v6Y`$ukL>|y0)Q|#d&kPcUt*$}zds<%3BBT4~*8geO?3Yucc980)Yzyv;bgZaQS zp0m7yOm0Vvpnm{yqV6kn%1>U)^LO?!pQ-&<d>*fm{#iNPKkz}}VXeZmOkeS6nzWE^ zYj^8y{wIHI9@BWVFodudc?iqv`G$U#?=c(MWLX{sdcDO1Mdv%j_Vh6766ja1#@|x& zTQFZh61j<`+jo)qB!Jh)eqp}77Sg-W9(40_fjwAU-tX5<xIuLcq!I&iz0Nm*ADmpK zasqYnSe$^2044ob{T<JwmzD*%Qt@_1FO!G2BJq=#tGs(0LVF+&9<&+uQu`I37sdB* z(^b95TS#B0e^ll0JRihA&_T2|WaHD+a#IFH_FJO;^?Nhuq3wApr6Wtzz+yCgT+qLy zuB=cQ;zsR+KXsxYD0wC4tEquLqdd9z4q2<T)yJ_jD9~)P?B}V7c;z7PuY}w~ePL>! zBvKuWXoeIaxCMfdk)y4YtRgVRv*=`-m9lO>C9%{jEyc$@@nb%Jr0^qe`ehi4X5;D; zBG4-LW!>~!WDjxtn>~4c$#{s6Uw-^xJje}<w@N;Orn5@2<hMb(N)y4&U?G5{5FK)d z8K5aht5aQ3`-I<}H~+tD@?+Ca$?_)i5qy+oscQTI_bTOgMinSii#DhSMBBgDzH+Se zdOtyNfBk&D9lRADqW5<N@Zz8&dc5xY3PO6TzAai`=hH)V4?30Pr3JVWz|JQz&LRt^ zM5Uu?IDWl;jE={?{aImubv}ol!l01ZZ=<h;@f=M!WW;!m5f;z!0Dl(QFJb>mt$#?b zw%hH08|w%wv@b$@Jbyj?`>U_}D$n*w8-*R{Op{Oxm{=D+kZP#^%Xh}WGJ!6szd_5A z>od=vaQ#tw{YSI8)cjcD{0v8$UoQ=NoowSEz<OzGT`6#J!a?fROFMFKaZA09qrEsB ztbgN8Zdef=|DY!Z{X{p?IpU!jRg)f!IUHFS8FZmJVd-T)-x@F@QN?-j@1z$OXZLBl z@aG1)s?Z)b`LVerE9bJid^qN^(bn;-9Qa3~PEWB&i%W!J7CV2*)Kwiy{r=j&KY)66 z%<9!26Y`reo_Xud?VB--z_ZV~-rSX!q<xn4=J{A;Ku&DEc|Cv7Mt%)fI6&Qe#`Wd` zUI)gzQ~&Jl1>+#fUvGY-Iquom%dInR3T%}xz6u(1y?K>p#F|0ysp0A@SZ|(d^)j;b zFaOr{=J7{?X^cNg4<5O9>GkHW4@TFU-@-3ekcHaKaJ@MW3kqA2XsnfAfb_oJ{H}+z z#R|}b>&?G*^=rL(rpf6#>|N7u|GM?2%?JITkJh(*ZD5btnD2<%lijkVSxZnySat4g z=1_;zh)9G7X#~g^WdOMvjUIb1W8+HBUPh5BoF9tu?K@r+`0{)PEF|nd11rq!u;Xs9 zplB>`F+njH@%mYjkn~zrQ=IY{gsx%JU9y5zxSqHPMFA+I_88X34F(IciOjDhAceQm z+P6@?BK)h={vvfAz<w?j5n2$f+oS=a(7dX*ojwlBZ;c5#ul&)a%GZYc0VJ;Dopo+; z>mACNdUg=&!W%h%>9Cr%5{B|WWVZDj+6Tub(EH$GTHt$)=FzK#S3{sqPPc*4C0Do) zRLIIg{o$h6medxU--10*;Ey+cQkJ;IeI(n^iP+W;#r_%0ORy(+eoOs(z1u_T577SP z!3)|eX)ieY5;*$ys{?v^`w08JQo%_?l|Km4$9}J~e<JYKw|$mJe?kAZ^fn|;%qk+i ztoMK~?JdeV4zf_*Exr(f%-?v<T-S?wW<ckj9{HS2Ih4EV0)DCeRB*m&`9_{cT(A|6 zPsm@iecIBz-&gHi3SU+phr13R867_iz(?@wE#L;_tq~_gZ1>W46A~2h|N8Sg7%?=} z-T57Y#i<xQ9AO)Gtvr(e$gPlS49vQWeBN4U19<$$##)xf<^vJ@)Z;vy9pnBw^-1ty z;(p8xSc%7a@WhR+;M?#ym7mPsyOWy0wQC1)QgbyIhk3sLv@7*hma^t}n5R)r&}!3K z@T1;c)ha*HG<|Fb$y~M0mnKciKg?4=??QRSdrRy_lm$3~ijZ}%pCX~S%4SOyqYMa? zL2DgS{kY<aX2FY_@S}0Dy$c+hU6H6&!dT6Xw5BIUXGn~0xr5<G?q+*;vMKq9tbPo@ zVzZlKvje~3nh+jn3t5e|$ze1B^*FDRrB$wH0#B=?r?tvv5sdWu`ig|@ej8F}p$%Yi zl(D5vzDZ1=-M(NLX}T`$J7pQsQ4n?yet=X=kpea<3tQ_iuBbT)l<OarnV#Hlbxy0J z9JwsWk2@0dbIo(|pbLObnGbsdJ?qK+G|ZID62*9;VcacKRg>FeO%BuDfN6l;7Ft(n zH4luOXYLN0FRZy_tXcL^sC*U^FE8*I+4nfGdF?dsX?_wvJX`JB@WcTjCuBE6X{?Dk zIm?G+SX-Vo%q?r7CWEshQK96G;u8p!SB`$b=5@y>F|vrDptPf!?bFmXhZN1)0PV@u zh6tilNS=fp5SpeW=yu37LqdHYjvdOhE@K-0ICbgomo3y+!TTD`wuRGJpzXUQVP<l6 zY3yZ)_l&HO{_DD^;Y(n^3L^;B=HXD)QA|$ZBHYv@@~K&7YXUf+(h_Tt*R`S@x;xET z;I0$uH*e9YZQGZ<jYJ^NqK+M=dKrhQUM@IH1<b=uAldLq*dMmuLCu~ghz}%U=8}3) zOMU7Y`NC5X`?XSg%=PmGj_soJ)Gl9b35<uaGJHPQPjrc3=yHvTi70a4OcmfE0}9&A z8n-`U1HA{eIL*K&_VX*t!%pFx4w2cZ#TIAyfwGueu?<Iq02T7=A;Q-f`Ahde0cTD! zX8tmF#H?F}Q7h;kVuq?kaxXxh^-keP@pMpp6BB%Z&EUM2FAm_Y`C@#%J>cz;muXBD z*&|{9tUUUOZvE@*{ptw)Ku5+(PwSRFjt1VePq4kg1o(F=<q(`!bbZ&LALcvR5rn<U z2ghn9k@ue%T4w$2-+5)@ohi*~42K@shI9+;l+a&RIA3}HjPai=?|VNjkQI(=4E4hE z1P0IWN!<qlP{%`$^yYsr)&9TCpML*$Ak0o6{%ic{6T|Vzaf%t1@;Dj_2lCPe$<NBF zMI;>TC-@^Ub>JM&!;!fNQSmr(80+EC$n9=?&Z2k+0KwFP&*1O2f+OTk*?}c!0-_4$ z5ib=JVb<yYdbc0Vk|W4&S+JOcnR*s#9y(X=8*~Xh^2*%~Ve{_OcI%dr3{`{`Fz6nw z+6hsRHh3v?SOA1Y7jLM!s+4GH7S0bo{#^B$&c9ux7aHJL%gTM!nKWvDLTcbY1uv}& zm|PZTpq{(Tg9B5QDDF4a+&W-XPGsbps-;-~>U1%XE|;%sk+Ez`e(~o|sK}@{VV<)~ zXKvQB*6X86;L+niL+;1Q%{TR-pL-jB)c-nuY5w#tzE9UzSPB%Z*Bm~8H@eKnvym>g zACTT}H-_xv3D@_Bm0`j>@_VSC-mhN&)NH1CTU^|>X01H>_o0}t3i*-V@8cu1e$47` zW%X;V{wtcd#Wz{Mp;Uc27g}EK!ap{jv{eByPG5e1LG=MxOICxd>6(Aw%3>J<VF!t! zMQyUHM=gIoG3+mv=Z+Rpc+~$G9s$gUD^X0Idj*1s4JxeD5I?R-mjYpkgUCPtqD(3C zx6~inH0Hn(@)@>&I%hD4Vc4H)?TFW}T)Upga<+Eu&Wq=!bQR7Cm#FOrtX_M}9DIf2 zb!rG-#Ty0;2H)`?;vs|BJ;ImZ@eEDu9zNTG^T%bmDg)T9dm4~{Kf$&|l@^{je;j$K zx_LS*x*y_!NEEmyC~&Q`Xn|{!@nLM`A<_*ct_Vsr3-L|WHERGVO7O58N=!wGB<>={ zxD|Pn>sNd{#7RnC<1Z>ZE|+-{YdFsv0HMa%EyDYFn(A)RV`zi5&X-u{cUA}5NY{xS zl4Szw@Uo#>Wdp5stJcCba%ky`taZNCYD29IQrqNqSF15LU!FpVrn>oBXG3stYH#{6 z<o7uGkBazh`JUgLPu~sV!l`fz`4_^wrlkCY`Os1&<SWdl{6ptCjEcvH`n!CAz`qjK zC;X<`!I3SAb>rJqJE-5~IX;?dH(XbF_eKB@m#+a&dzxZv@F0Nf#@cnOohWE0iC!P{ z{1CFw=xZyRr>~PZO##rU*n5oqewGF6x^2g%5{!@PkB~lm1vynatN<SMi`qNXCBpZG zSJw{4flscE(1yrQtr`uyA(#?58ebjIk&JzmQzMi`zU_;Al!|=>_|!Cg;JYo06JL)@ zF}_jxdyW%vK(Ipj1OC*F5~`7D-59YN@1fSaZ7DnZ$-l3qZ|U$f`up)@dNKvmS%&UT z0P1h`QY?-A1LJiCXu-{u5g!D51PTGxO;!#V5<XZ0|K%zz+wl<Jhz26JydF&KzDkEw zMyhnk#jIkU57`idEj4u*TFapFl;X-6d9FNcFC(!?<;Oo_<#H+qR32SixlOK$RBn@U zL$(!;9j?x$(L5gXRmlYa2CSHlQPr3jj}KFMtJGmVH;x2QiB1T$T$;2<+};<9r{=16 zA~~rU8|^I>_jWhDPVZH-9LP5Ci1tIO3ibWZ<lIpPtJ=fD4IY}5(kG_@VGeja57p-2 z(dZ2T0oOIyb5;sU^`kvkJ9mVEs`8-hT`Qoa8L7F<fC{Y#(8d6*db`hrZ+j0Se#u0+ zuMbrCP35ny5>WP;R||P+4;t^iQNS7VEVXn)26W!gcYMrbJiLf6dXJBMxM5g(Dq57& zP#f}xHTyrXW?zB<nY){#GP2u|vvVJ|fDfL*8-t3un+uA9P#v-rbDD~CGV<|C<V-Ej zX_Mv5(O|tu!;ToTl$m=MRkK%zZ)2vpZdCSV9uh!L9dO|zRF-#v=3xSTV9`)KNagi^ zHAW^TSB~+lAEeMr7@tr)UGF<}m9X)S+JhmBxz7<H+SxEijOd?GiO`ASeAG@Klv=-S zhv~OZeM3hmok{eKWBeaJh&-Xjz@<sF@>2L~O0Y=3tNmPuVgqR2Z}$yo_nxwfx&69N z?Jai7&5j3}{g^-3sQo0XV{4$k-Ig^l<WZQi_|S4J3*18o+%n?s{yU%ukYEn*7PA-% z^=qXPo%a1u_A|eIoUgU~sJ`wie#L27G}jY{_iF80^a&`qm3ZItA?<_0_LZK1)lN7i z?0t_P@gG;BzR!>1e?U;K7$4W3HMg{O(14}2gK<&OhGi~ptsSqX8zO%GtBMFM76fpm z{2%t-1-#Cx=oe3E3xQI1K+t|767H0Oq(G%ulpx&@gh07Ot^&#(ywndPC`3}yKz4Rh zBG(ECK@p?yN#q(3%5JI6<|Z4c5Tx48MVKvtZfR))RC0d5nYG^c-M6%Qe9rkl|L6Ef zv)^@@H8X40teIIi-oHW9(T7qnThb|8KDO-nsjz-=yvXqb)uZ!gUC^E{?_)X^U%?RB z+X#fYURFMp7vQNzMgQOZu{uKMZc3if)@fWefl^2lNB>tiUYvXc_D}J*mp2_x)(tS& z!u~5Q&;ED%rdc{0E$q<n!fR0Hc|kx9SQV(8LVQMB|12jzY@hwFvg2fc+JQR)%k8&v z_(G3-{c+$D{a@jJAnFg~7LQ+xk7P{0L(R7gKUR-ovg&zonf|Tn{n+uT*yKa&@Lw(d ztBFnCL_QBKV*`j0blw|(08+pUge+ZfGV3SGJYGPQ>j;sq<tYzxdMVQX?2p5tj!N;H zRc1V;4X>2YI0DeL_5l{j<Q&q-6@TEa>(N*hbZGMKL0!%4mxHWSzm=+$qnG+pZA)gU z6O9%kM;4}PdDx#l4-ogc_%!_==wIT03648Zp_lO&fFth1Cxc4#cV+!T{{!WV^vmoH z;1)^=?d7)!9*KR%mR{MOHL;D=v87+s6y)u_jxF`)IfB>3-@;^dxY5@uX7jc54pd<d z1~JO79@#?Kj3*kk`Xu=VHtH%@OAMCWSsv716not6O1sfQZnUT$IL@=08+Lh5<C4Wb zg&TCga45bss9#|0Am_8p*_hyMD-*ZrE-*p|Wt00Yx>4%S)mGvcqw3g(&>4S=9%Wi? z4%l7bzlHr{;XlmX5aL^nOpMB<{yc}%NX6s79v$Q46;f#(XJhQDXCq^55IoAuxsg$Y z6c~(e#<U+YAiBOxc;`UEpjzDcKF5IK_G`3J%HJ!n$|}icbp9P1jKk9TH>y9k3E~o= z{*30Ak2e(aGfTpuOtBxuq>ND<5jrRO<CmJMhNE)0Jbh98!9za?OXgRPU$p$|<ckg3 za^(wcyda+NPZ+d5o-jSEK1w{{Db}c;zP|Vc`>Qa%a5XB@Uw5I1O80?Yz+!=h@%B6U zoi)V(X?2Q&B76XfLv)a*XBFj<11TOD@rCh&iuKpQ7Z2-Ck^@#$tPkbH!KO+I@jI)C zv))e0<mp?;U7C!^#3`9|TWMes@pEQqVy%1<Vr~eQx9@D3QsguP28wMSIO<I8V@gnw z{+<<K3YBQT?1;K%U^>wpL~=^@fSv*k{W8{IrvjW(p#mF}o#7E`vE}fMJT0?7)aE(2 zIJL$DQ;_dLdH+!@pOKk;I)aPkoBS{2UmF2q%zGT^`G9}l(qzxSTDkNw1uSxG1d+Es zP(;9o^8BMyw_^c(*(#`Bt2$~cLs;aa;gG<q0=UKeEye$F)(h~L`vNcq|Jo%E@0)^* zNwQZ(_;t!3lP%2uL7i&3<TT?fUSUqeSIZH|N+PH|*q*X$YIO#K!7`F=lZ|4Re-~;a z*G}C*YvywSpjugi$%R`v8hqxMNak(GWDWFzh^+N2sg>ExK*uDT7%RlI0atZ8AhZb{ zf?n+|#6?T@1$8FrUFu^QR9ubFBIKMdLXo@%{G^G<Wi0M~OySbfV6(|yXawUJ0Ym1? zGUVY=W8L+KW43>Srw&v#D~GHcR$2LCy&Lu=`it#l%ju7GJd+mak6PIS_xP64AM76t zAc%08_(4Bl=!TvBjI|<%;0Gz$#V1_HX58rC9zz680^CxW2zN5Ksg)X(%f6_MXN_mk z`H1aP_vA^3913U@f}tWI7;-{zIRNHvHmF(ouSnaE-D^Uiiy&;5@9^fDebIN{57E37 zMH7prrrJJ$ake7XUh4}z5h>JkH^pN>uKNa0XRhdsub?S6qPt?qR=GJSJW1-ZypEpP z;{c1V14mu}hL8mI^qiqSHWsK1xDal?8&!VdRfym4gjm}#EYvmakQKNxhKs~@BQ?yk zE5AfO+WpiwJ+qOsof&%l8FF%`YUHsf+SSIKuQ3O0Onp9a-6@bL97g{=){v6+q1)H; z3yHkkj$|r76t;6Q`@HANaVpXqj`jI-`S1WmMq_dFc@i>d`|F%ezvNW33y374U;Y^u zHnUd)qw+O7L8;Eb`6m<J{WOLXi`y1gw=EunYrj#uPwv*qOQUAV_|t9KF%}lG_@w-U zL)6~VPBuUN+`DaWj+I90085j9tYYV*$8q+reFA2+1{bPaBcJ+nh-53qYF|T_UKjol z=f3#Vlx%%+5Oq|8xb<PgKda=+(6UCHYokls(2Yj`vp|0KkT1Y@)9-#z+0ZI4ejT%> zwJyJT1x0>N1{K=U{gRo1oL>~><PyaR)Fjcm1rK<;Xy*di$G3e_r0vhMZK^xZqi6KQ zAMu|=HpsRUy$^vx?7}|z5WK=pCrU6TN~Q=?FyLj^UzfM<=L}_8JD~!jTBiM68jRrp zz_`~9pG)H_tK{5eglECg1N79O{*FCRKOKFZXulM7Wk+NryZAF%lSn6?>l#Ph4t%n* z8|oMI$_+50I@(V|SxxTLpMfUc8@Qp}F$3`oyE}Iqy0(Cy&le}$zyycjO*rSQ%JErB zluNvVr{|qI+(lJLxB!62t~z?$%fVpt`Dd&{+4csH9b})sk(V+dn~WLF$e|LTGq!eR zn39t7US`AGK5NHJZ13E`%?h?Y1Z!Iju@4l5`%xJFxbb)}A7Xp@Z>jLwr$?&sH;VTX zTQuJ*!><g3o%{JBo%%Ci=WXn2V2UM(6^x_fliz8X^G(Hw-mB}K`}rGrJw|9feMeWE zg!afMB81|+>7ax35)jaWx&0Nl0#%oi6HqR<irrB-qI%@Z%y~J|QGZ$KNvFJLWzWsL zyxY`f40=#Y(Evv&2-rpMIz$6(Wf?|NqJ1Y%Tk?MXL}Bh%Oh4u6O4<mZX4uEWU?KVC zOVF;m<E0xFZYZtLEgMBDbj$Zqp~3avqyW8Y0OPguYvLs>cF3Z4d?L3;??V9C8jWt6 z^e3MY;MXeGL`t{Hcxz6VB*>>`pBo)G=dz~@S-wD?dJ(|SF3std-!bQi(wq*tfjJzO zMbKKMg*lU$!+!WKzSdym#@e?-QVuqgr612ypXHYkB!?gY<L+Gc$($uw<j_mE`D=I0 zgZ4V_cE2Cb`=9j3p@Rc&ZDvtC$@@zT3fvo%E9Z~Xz8QvgR=$?n?#T2;4L(W6s zit1C9F3q2Fp9T5==TmECm)`{`@xi6_(}@ub3eO&f?)>x2*=V9PqH6&=BXg(ekG!<~ zf;xJ1|7Dc;`zb?fc|}v@`aYiS0yjRM316nz-UBau4AuCej>|TV?*A8mS9$U0Z)ytp zS6euD(lNja+1xFSc_Qd-_PfZEN1)FwRuJ-EWifK!X7P7a{wEMpNj$VBBG1^cg)6RK z_^k;TrC45kKKQ7XP4@{Q_;^Q9-^)h<eU<Quj<?a{NA)3pRJJm-HsMli0`xfQF!w?B zcpbw9pI1~7x^pk3TgD{W@{hrogWm`eU6oo~%NXR)WNyrN9yVQftT4h<9}Y{Yc+2er z&uOD+dB?`S$k452;_Vwwujv<Go=W5z#{KmC5nPHZ_~Bf#-Ay#I@)Ijzq0+fl0->0t zq8_xlwHAM1e<*CObwDXY+;lmm8h?<3Kcn9-;pzwLJ?_4K#?PQG;6#t467ePAuTZVC zd(0r%>p;h*AHbr+!htG9I0MP}67H=@=_GJ|hK_WqkoCbL{}IR~<&wN5x?XPbVX<PI zSHVF=w4O;Uo|-x+L9ltX{N-~uWAt=Q`}=e1fr-oyG&738V34WLTfufk@M%L3t_cR? z&r%)nrvOSMjaq~$kKspW{3#z>jEG7WcP<s!?M%?hNniPL{-Ddb=x5O2Me&Au?$WVd z(!Dtec8E%Tnqn(wT}KLOzm0$IpA*rA90(kQ8R0$$Kii~b-Y+(SqdTApo$-Ods)IqH z0Add`uf!e|0lii$H-$NF)>krWttb$REY92qkKC^dkZwlJQ`aj}Sy>4-7sg8|&j0}7 z;+{dQcg+G&8QYKUfLU#E3R~~0FJAN7y(XZ?t$9sH3M94Cn%8Yu>H<E9>jMp4kDD`; zM{~s?W#G{#LpNyQJ|Nah7RrQ82)wZu5RlkVtBGqiMq=B=wN<fs(1e8Er|ExXx-R+5 zu7#O)>(4f-lHVNrA;xBNA9haS#HWgXkGy|_N@S0Uz@&`>i`l`so^aH^pxG+&1C-FB zkJ^u{9QRD5*>l3;@_Uv*MC0|7*lY`$1t|*@J1o$Xlm#GTw{ojHS^4;B@b*RZe!z>m zYXe?%D}WJnG5~ZtUesvf-<ha40?xZK!V7qV7sDKrr!+f-4p#^8F&cOB8LZ$nxFdfF z9IQ#iTjl2pyrqM@!nF)F^6FH7fn*Z<l*|@3-{;CI9PIgwHP-6IP#?{>AK|{-){X#0 zPv7gYE~$}^ulE$0t;i1EUEA$a+mYoM;79T&6>se0p2zL0zK1~-ojZ9SK@^;EAyp0d zHmYW75YnALv+X^0o=%psxHG<$yc#)Uub|VfJArm<@=-#9x&G^s&9puI{DgI^9CE&O z>X9$8pmnNk4I`@OD)g@16pBizkuXcsAxQ0Y$daR<ca?GKNK+C|G>l0jR~<kC+D<DF z0*h$!6l~6MhuB!+pUT=UdYxcYZd>gG+tC+s4CM1zAjr*+@J*JmqDo2EC!Ca6Urqs^ zZL>~OwEVSNp6vfGS6q9gMcW5S@pNuxG~>(w{yZlbHX@JE3iUNwW1_1ecVJ*@3KD|8 zm0E+rQGH1?y;@;_Ey?;?Fk=#lCo}RIZM$E;DLG?j?}kDDo1d!Iv*r=JGx%1u)>pk> z)4TM0Y{PEQUg?I(=nIe)b4_!{9KfBd;Nbbwu}91R`T&2M(z3&55!BBjJXIJCD3Frt zn8}sg<@_;c3H6<7<w5x-G+c>&5B^{_p+9s9m{e*H7QYwe=O4^H*n<f3fOB3(j^rwZ zTP&Z8CIf$Jee>5Ju2QCP{@QzO;r#U^V21P8(>HI}{IwO9hqTrP&R?ss?p!>7Rdp*; zS=kF}qj3J(Kz@82tY#O@=K;ULcNiMu_gn*_^|k<=xaBNcQqRk!WQ;9~hW35be!o*i zs`7iXfFHg;a6Lo!&e$*LpAa7k_NUQts@*ED#|HB93buNcu4iMMaHiw@E?U$~*SwCK zexe+#S=7n&kErnI;{+Ruiv3T+&)dJm@j?PoiLX-&=-71tQW4)-K%(F9Nd@?rE1So6 z8oKtIN;JK!o%ss}3=$jp6Y+3tQD{hRj1iR?nN`a_@{7eLv8Kh&vMOl8mt{FKTW7&8 zE}^Hy_#jQUve%6!?3Y)_Hm)vT;QP(*Cn{V2w1WCm*I4C!g3953(!&1UHK^B6)?bUt zo8F(1^sF}jVa`xW`4lYi^vmi68|exXw0l)<7IV9%bu9G@9W8y(Y`5*CZ0?i(`=U!6 z4<ngtE4kWn<b6Tx59=|=&3&3VSOi7~-9^;ZH-43kSR&8MkdMhtM!NfuOe=S>%T@{e z0=*%#S+<X+f6lz5e%yLk0}NMO1H|_AaG{SMhMKLCG?LkpT;+a1%FS5(tL_$uvB+D_ z43`Ot3s+R2-m&rfsmVB4hAapz;+6A5%G1*NIA}YY%@tCemb00&y-h>?O2PNpl2Nc% zl!8+f1A?E8`5c{~ZBe+s!W`W6hH(?<Q*!V($_vW<3Y&nLcpVdqIGA$T+Wu<pTVPzg z>s!(0|Dwsf9(o@9?yzz9J_69vso3n%KHd93d$c;|yFn(H(}0o0`vHM>r<LkvDS-5S zyo%)LN)-oms~iji&eQ5`&!e=e9qot6!qW8nEy(^>jA~e$4b?IL?<s(-jcy&%(aJVC zl|J_ehJe2xWnWT1X=0nXM|}UR8xyE)Xhdm5)r=@02$rElzm_nIb1Vb}!cxv0Psw)| zq1$&S+u8on+Wskp?ekOHr&+4dVfTX(UHZ+#Fs!-@0l~HpJ7iy$V*kzK0P&2IZ9Vd2 zmzuT;b7M`mbqkf<S=I79o<t4m{Y@u+?f3nn@Sb71*1!>-h#h&qreCLaWD+cx{G1;$ z+TQiP+CUY^GP*8jn%iKkoyDc!U;%c{k`&r?CeCH^OXh1TecjK)fJR&plW@z6b9XR& zG5ervwq+xxfmQwTiaMFJdNV{IP+=ogG>k=qCaW+s98{RPMoa&Fm74E3kti``GKQAl zm@hV4?5F9R>`Z?~^s8cV1A(%0er8+Z{ggd3u%`<3x9+!4Wl&V1-pAwWK|iFFv{Mb? zuZ3pKaY^=0KzBR8JA-K}&lkQqBPVNI`~$PR8zI=%iEC%%U}$y}Ndq_Y_cLB=F-RbL z5G11+tLCjI9&H_hvU%A~eQj>^T`FVMSw-SkU82m<6mKRJ+G7Df<WAz{Oq??O+TeKq zH5_&o?TI>NqD5fvDDEaIr2~gnLo{%#`%qP~=*mebHYn3S;L&5)Lj#A>;D;0+x|<ek z8>oZGENV#nu_5uKOwDiRd5p4c0}b{*kKf2U==rM~dGA}JF!ORvvK)UyeylIP+ts`l z?!+41KWROzL_-{8*0QxD&fchv3Jqu(rp-mG$lD8$<*0pX{Bc62<;e)=+6>ArWRnu6 z@O5tpgl>Rb!5}VPe?Y!&!3p~_#D}<yvYs*Th5xsnfq~eV#q?SH9%en5t&=<=OvmxJ z#e~bPZ-w%7ffX!>=STF{|L%ImYAjy?4~P>&puWG=H~o*UXEey;Y8${}#UPZgy`wst zACu(7RTx@MgLwTJ(qC>o72_A>$G=kE`!|f}j=uh};qssPKPCUi&>-^?ROs*c35W6c za_4Cx{9@Fj%=<o}J~5p;X!oyi$s-9F=1k=_VCs7A|5xQ5!5A|g;F;j!*-HLyu{;%j z`|~Wu3lSblg^~pm$cwyi>xNUN%9rBt6ydi_VOf=S;1<{y^-+DFXnez|@D#Q%%FCBv zh{6Ow*ka>1qp_N_-Y4P>=~OU9^a8G*T4*aoyc@r&4WlG<^kl7hIw|?_kF=>l`JcJ8 z=)68K`m<)w<caEI+zlX)W06hm7`+cdlP>L12qO0)><Fy0z)EDPen4V;4;0F)zyB?? zlfXvUOzjsNqw{iIJB(lMrQ|e-Z~$;<eHivhm2A_hW^t=r4MQXmpJ#+KVsP92T*#US z>!__|IUJ`i(85r$wP1ADv~NDB4syS2jH1W_h5nknKH2+j&qa4Tp1UPZ<AIHRvI847 zKg4x`3qb=6cX91NnB1fHUkaSQdUF;|?uT=Uu#(a1!rMm4(U&p9;@y83N8cy#J(Bv< zmauvyeIGD87sUHcOmnr5B>$E<Tf%9M<`k@hxuSj2hN6nzk67og<c$*vSEN@?XU-Dj z82^r8i(S)BdO(@B0Jv)a{dsBF3K<qoms4){t{u1GoQj;>4@+S$keSRmS9?VL#bkVW zqJ5^04Y&nYfP`e1e%h*q-eQi7ZzE&Q#WnL_*~I2;O@#bKhEU<%U|O!GDDf#ZXU!+2 z$1w#E+Af|{6}#fqNJ-{wp*gsDc|PqT512V?BY4(Ndaoh2d+NPd%|v;9^Q!k^CoXy~ zwuQ#`F`Ly0?`ub<B^Yw=#ddF~elK<^3&y*VIsO){c>+K7NF~}2@N_eTpX}04M|U+_ ziwm3kUeMgB3T5I61_fXVM14DAaF_z&XQE*oV$m5;<5mb?Y^Cv9X1_@|-(JA@qMMBi z$3F(7IWb;8Ig>Qm_=ZeV|2+sNmd4*yznT8j`0J~M@z-WQ(APCXe`xa&dnBqq|E2ir zr*87lD#nA!F~(n$zS;Hg=MwTKC|us3#0`SD^J1K%V^n^t%-o>mIX}V78@+uke~y;- z_gJhSKIbO}f;JRB-K%8%RvTRYCB)p4^^-;^KMVa21qk=@BW&zSEW-2GRefXHKG?V; z{zB|>Y^4TI)u2d0!#wpn+a7>AX}JJuSZ6=n)5S-#<$N49>4-nCI=3_aJTI?#p)>vh z-ulsFeeIYA+!pyR>=n2f)uYe<OhfKK9HtY3a@Y+KC_S!bmaBgXX8{+1u&vxs;m2dU zN$kNCZX>aqM-Xuaii2`diyK}=@?UO$I#yx17aTgL%I*qy?Z?5q0EfJ#`{6y1B?tVF zskjyM@q0MEEl{$P@da(ed&Jt#A^}~~*7YgB(!lIdOtgLmOv|&kgvvNA&mnIBJ3UY- z_an6H^*!SUIZR3g378tvax0;o&m6E4d)!}?zdTJW<~l6qV$TR-?rpL!12tFF5*-l5 zq}0=h-m)p#40LIE!^>vA{)cs4`qYa<1p6h6U3plUcEDTPh9?Ci9&aS}g2X>#!OTE) z;imW@tSp9K?;_8WsLP>lN>dUS0G%k!AgWg$A+#Se2UGRJErBqaSo_DSs<RXAKc<i% zg+z6noz(9I7Ln9pn1#|yb}>N7OJ!IelN#$k_!J0H<0YuB74FswG-@nR*zfOxy22X# z@1h3zjRu22=6AI|KNAgGX@gKkZ150m@LRrmvYkH@@!Q*4ZbvYTg*;a-COJeEb0uqT zt~JjLYw~9z-lJt0UO^dolH{E3%a9uuXida#PNESR6T3U!Gd6y+Su9HG5`^56T{K`4 z4U^C~AZfcY;V%6lvJrno_PzH@{!W+m7Jo39wF~Ug*aRrJVtX+~a8WnMpZ8F^3gbs7 z{D-+TEgv+iT}8G_3x;z<e%ppW6NuQ}zYRvwMH501OH1OWP{h)L@K3<Zt7$h!MeOFH z1aL7eClcD_%)uz~B6jT)<Y`HdrP^9jMLo8stEuDf>rbm>Vtay@Ox;lp;bhX;iTFb0 z{vimf!c6*3jAoK`e}7f$xT@SY$T!>Cp#>R#MZp7DuxpQ^Ox%RW%t2^@*gWndjXf4$ z_@y3}bu!goRg3-Iu&}_A{;Hiqu8EhgyPi^nDYI@Yc!Ze*;igzADpw;2o77v8Y&7X( zh7`Z^(qvU2qEYlu)jBG&8hMw6p8_tZGfnGI{GzRTGx|PgsF8HCu|IbAqGaQJ*!yPJ zFw+*8pde2`O$aWvnT}CYWd}kTJ9uWlKde5_f(u>p()g|H<X-vI{}AQleDldJ{^Wf3 z*^c&O@iTV0&OKez*50W?*CTU#9rFN#Hx~6G$kro2eh_nA`!OC)r~br@r$9RO-;Va9 zk-Y}BVg*xQkK6{3othi$I-AcP?wZzVt#*J>^Qyy6>yTTpfMo=7OM4IUyxzElHKU>q z-~|cgFxU=-a+ehq1aTb_XR|ha;ju{$Q{dA2gv!d1o?O?{5N;+xRvPd}W#w!hXzSu9 z6k(`cdgXt9MFKJJ-_9SwA_e>8YM+(h4{Db*Y)#cJ#rh>`Z)$v_#2z+#IT}AYmShG7 zR-wLf@q_^s0Y~epdW)`ZaW6s*)N=+w9%n}eX1#q`8!Efe<FA`9{67_c+8Y>x;5xNf zOX*eKRER&7#+L*C<Nx3Bs7=W;ZX<8OiW!*4uxlB6zc~I>{2i4~OfF9D!gx(kK8P;` z{PpVxMe$_HS2ntTq^o7EWR6s9vrt8AWk>z+t3hzi=Az*;@RK@5%kPhgj+fEnt)=5@ z>`9)^%KlCiep`S?x$>v`@swy9LWjV$#S&W{ZcJOt5N0>f%6>}8x7B9EZZNtot@hEc zAG%(p`y6?}$YOZ`RaAB6e#6R9Re38C0C%jv{~vI1vnR^Ldlb}e_R*^!Gx&k~(-9&< zcxbU4j&Fn8NVr|oHn}6PQ=Wxsu6a;-X?gYPP<f~2b>`{Tya*~<?g{2lY^-YAlGD|F zNlAv5J{9BLvy0br>pZ{gjvg?KVZFOy3gCw1EMTExJgYYcx2a;#HO<Cs?16FB3|o=K zJPJPX^YFAAmt$>2Z$;Bf%d@$Z^%Yc!={qOCaI?#gkEs05I00=}(9dX9PCl_Tf6h=h zF=jIqned2>$nsApDM*aBB6cpiV^e*#VW|Q;K?&0FQh^=?Xd09;;1xc)jhTF8QNxr3 ztv0AUi4B!VOM&+sNhx`GI>A^(3c>gD(V}&*A!Tt{-jskdxw;yRTWH&1_pxo9_3za7 zD1`WL6K?Pr$=JpWdPk3-oD+#@KmDaj$^xu6_R8Z}19TY(%-xTzcHtMS3<4jP9}_iB zmcK-bY{aJKEFoH96q$(Wee_<$H9<phPSBVDAPeMlf+e)$3GKdwdmX^qB`t@3hqMgH z@ei)W+wiR@<=1~|edqY`3AZuXG$h+{O<MJ4Vfh*@PZG-Sr;Ow`DTFfmPlchVy=Q{B zR$+Sqevo6-gXmlM0`KX82=EdK&4S^pHnl1GKtIblhrm2s+>hZ_^$?ALwhyafGZ%41 z*V8|%n11S~S@5Z#M{so!tpxnqC^nZX9QZXZ)_yd8q2ZJ~gy;rPGM%-KV_MIsLV?BT zN`yKq**GNYP)j=`hjZm986GjnsYTN@?YY|meZ&23UTV_vy@JhD7c#G`zB!ROjMby# zW;s>k_FLkey>DsAq|kow>n+}fi1PRMfEM8|of|ii2K>eSR6+j~_2<u6yF`A1_cQ{1 zfDmU}%NsDM*C_lJxVUXc@MqVwTYs+n$e@RK81-=5!nQ!Z*%c0{jGT$&+&5LR8%xtZ zM*mgj9L*daVL9S!w0Yx;V-Lm`e`(}nx>lQ_ou%>Dt8(Yzho*l#5=kFpXFR*6oo0yi z0TCW@UCeH0r0C^&AtHV93X*d#6Lr_O4v{`t#GEv8tV?x6sC#sR{fG;9v7Dmx@%G($ z&_cX1vLpUFT5<Xxs6zkK6@Xk}PabcMZ~GR%NZV`-HPCj)n)vIGS?C{7({hLW5Xl-n zV+4$VdS%V7oEAE;<BYq{LGvAO(u3SV&7B+UN8{!{ojH1QS8(Q-v!oTZRI<{t>b%kS zXS@xuh6EIi|C&I5-1)h3`GGu@jQ1(Vc0b-L$m8kd#&avYn9Ae%7|;Y3q$CHA6hm0e z1Ayt1-P>&naQ)VVdB9#_;eeh(@j_KxTR{M226X(EU_j4@MlmQfAbRjLPx$q7=9L}L z9n5h9+S?A-A`RGP<-&8z@xL<v-gXt8zO2B%p#BDp=eD8Q<@jBLyG6in46&m;Z@bnO z@pf@r1>VYg=q+RHoyCmpK>`57!27ZXysrW722b+9Wr3V$fP0L=NnB8zY+iueZaEJ{ z4Y0HDhHefz=pFQZ*d-$!(GD7e@J#s*dW*H97T#>9cHgBav6r4XyKsHCp8UdoJ-#@| zLCMJbtGIikttB5!H~C<?$z!^Kr9kma%UA8X816IZYF=%Dk~=6NC{QSb!t<MMRyo*c z%s_E%8lf>G+eB#0$hORj3L#-YxnyK4bDR*?yRjcL@<iS}3qly34|IHo^d*~D<MnA7 zvDpB+pxB?Ocl*6@n|hQbe|%3_0tuSt$v@m(SOXu)Xn%6Gr~M}^;|8G8egzW1QOF5G zWyZbDi>sfEgaT<e@g|#Zz^N5p1eF8-z$&Sijf|{fURh4P%$%q+cy?vkbM!_ZJG0o{ zuPLD)8|1;V*uuQL9B|FsD~0y7AEJ;U^C<BiEAQ{13-$E{T)cTj(e8}D5(K8U13z-= zZ1GTKL}|$kVt)#zOB=b)Gt0;edNT|!-vHPj04!8w%Gkk_Ykvw8D}J9#z=Lrxm+_zj z4+Y9@sHz#c-)e_&;0ACnF}N6>fbuzm+Z)0?K;ho(;ZiC0BoX;0+@1igv&Ay9r$OUP zmzT^9iluiIkn%3z`*1Y$0kuU(GCub?SdP@?-z8V@U*sQ@!1-E;A%D2-3NpZN*wHa) z1peLhGAgm?0)*Za-r(-H81^n@XxvjLJoHU}U&Fs-4_)=s0()o%#2>gVkYli<WNhMa zJ&vQItUdHa<^=Z8rO<)@rag3&A<_rsMSJKTvYz_&2|RV`5$Ths*hyvWq2DoQz4j34 zt7H$+(I3Sg>VXAW#vVEk$wl_in=nEu+e2y1-9UTj_0!AE$EpwQ47!?Nc`)qN3m`Qv zf?3fX_k-K{W4sTt)Siy|=a*16OYE)F(Mf&oC4|O)PCi6Nk6L3K<YNysu55dCOd{R2 zRXucF76nrBJ#v=@QOC79j?%tUvvS9E97lIq0v~jOlaq|!rK9qEhMGBu2uS8ZDZ_^A z2TC+uoTdqmw|`r+v6Oq)X;g{z=8r+YsU`ntA5~uhxVHD}FGE{-!qw~c6jGD%A^b|K zl9X|=D-Yj<Em}g?#5BLo7&ixTg^?@<Bx@{<zm2_AjHM*C1wDt@mJGgSfLJBkdr{Vr zs4d~t0h92g02svUhcFx8wJD1t+Q1JSY~@FAj!_n#_i=b*o*F?stuX2QkM(*uEQ{RN zfkPDVW)q7Wa8DQ_BiRl+(XbWD<nE)jZ8%0bC;K5pkoz+xV^D&31Kx(;q;{MYl}XIL z6WIa1_u?%fggpX!7rnU=1hBg^C?ap5*IaQ>&?Ebj6yG!+-FX9J4J_%2u!O%+mP)k8 zjH{+@IptJUg}gG?vCcX%*{-+f!mO5`8mR8DNIQQ6R7Zm?#B|765AzgJ*gMU4c%^(F zB`YFE$@sD$XtOJ&h8qL!xmc~rR(#;UXwXJi!$A8u+&Sc=blQ#AP@}r5jr3(!8NYQP z#CFThYQL)P3d*W?gT9fq9y?^tMxV)x$drA6gf^l7ERElbuDTapbtx#wT~I_u?(pJ- zNks|1;UBSK*UoqFJGVtq!CWm8<bEuwTI-tcMB|@bXq)@C9CKxe30GNyj*a%yKmhK~ zgFyKXSOmTB{VGb#sU1P8{CqxsC)ztA-ADi!Buv7CD|$l5AJlo$<XfK$SvrQL>;O+; z`o{pMi%xEL+mRGvx7Ere-NXUy&UAM@TF(*Eb^mlS{phnJgAItXPnj>h$iUqx?fc>* zssHXgf@}^wca@nNeTrR2wUt>kTwSq*hx{Et&NUMUKU5;SJby9|tlbwOpry*wF>CBk z;aL3^3yo+X*mP6-J^)uGJ52!oegKSF1Kz)OMUW!9px3~J)>7Ux3B2EpI3?O^4K@Ce zjj&M%Ns}T;M;Uv0ngbMRPS^eXlJN)_1;(P|CG+JJWRRDe<0Gm6dOlf`o|F6{Cs{7! zcDXXHW!V9cEAld)1e*lId#UmVyd;~7^j<9s-K#pl@p1wRRmtF{0p}7+m6zAI2PyJr z)B;~FF6AYYz{@HCL4jd@B_HJ<d4PevL^~HSe9~BBuP~|WQO)VPpI`FO8Kt~rzSNv) zynF*6$#(u5a>^R@+~gOz$ugeb<x04g<wZ1Ek(VDNz^0oq0G76sKj5YQDU{1)EOd?z zqG>nJSN)hl;|Q|P#vh2|<2j|BU-DA0PT%z?OUa9t*~i}}wE>b|q!7{CKvWC<4+^?1 zq&CGP{EZG&|8h`nIG$>JKz`N3cy-l5!+4Po2GCy+0-6fbdosYU_x#S=b?7P=ft*<o z@6JZo-)t!>FGFvVELuQI<ro;~n4QI{7x=ezh3Av`_IYy#E?WaGTeeflZRYG{<VHeF z_$w&~Wp`yNCaEXBLGZBEFAht{JpQ&--l#ua>rFOPKwBE_hCh7}#Te#834La7qO5FV zz~zh~1x()?|0`#2G7<r!3jXP?M3Ii_U;n1K%MX~~UrBb2%|%)PKM`6q+~m`rCC`V) z#OCkAigb3ab&!_7O^7@$EHdjI{KhJke(Zxtr2e?^Ek(4J;dy5dT722#mzDk4r>>JO z;qL@q;w3iPTLpMhe9pav;!}dJ!jq5QFcPoPQI5{G+m1!JHx2NHJ#!1{m)P@i@aIw7 zS@Wg*WqE5a>Dv1w!H1}piH}<Ow+}8ZxBmV+2LnU<?{ls(?$U`gro1hnr`F@A{r?ha zLI0ylRyI@ZsaFw6!=mg)4P%zd#(QljJh|!h3jDoCksO7;M*qpK{)X}^xxxHW7s&Zn zvidcm$#o@!3Etv|$ydV}SOtU0;dF@KA5srKY5ia^lOEH^0m`=&0Hx)5HB{_QV)+|$ zbO{p@=9}qb3C3Uelt{8^kjK~#OTa%M33}|bbU%v6cV-md{r*jSkBZ{ELloa><?yYl zfNyWS2;U%{(QPVrK_Rzv<8cqSB+JCpxaBDe{*n_t;DjWbvhp>^MsSYgGM5QO#}n?G z!C3O=PV|6#b5F8y9x^8{!q`m<Za{VZCxQ_Ok)|b$$h@fs=6?|amAj2F-F%cv#2?8; z-3lfss2GdhsLi91rYu&{agf`u*E)@(jr7VHkw$vuPv{XIvEZUMG~L&LlaD(k8|NnD zt-Sv&o2yo(V>Y8}75)+G=5|7>+<t9)q%j1^pKjR`tw1R)h_1nO%cnIJ0(kZ;1|Q1k z_u1%yUh9lL-x&}kz2-){qu;`P82D@mp*z8LR=EYA48Gis#i+|oA!7Fho-mcwe*uzT zcctZl6&yWF;ff=WhN|p|4BA;B%RxCSpl27zRpck?P|;^(<Ro|~(FiJ7V#jL!#vC}H zB()DC!NTcjx$-DSUdjAbqeOAOo1&-;*n4di_3<o}&tuLOw1B_rzl(ow1wE0LYtTGN zPlNO;$bY@F;|xU#J^Fq9(ah7$nDPOw4>r+Nrg!@&#`51NflcyCFLuQ1#p*084`soH zDBW%We^72^&L>bWIQH*Xa5IuTk^vIGULDfw-tQ@zKkAepX4F7WIeX!|aOyf1^^IAx z2+N8qW9>T|HCb7M-UJt*fuQ|z{NTw$m_RM85nqWrkZ9GU&=+-TKor{#v&aFHuT0Q1 z_jxc@Vl0N-sP0SQZx)TE!HgAh^C2o9WEl$J$=hUO`iQRh3VG!OHNG-va#rbjL2b~8 z*&HGlasi0w?{4VZ<h8AS=yMffey}&^3ilV(6u?77Om-w<73HU1%iCTA5`xws(Wm`c zaZrUWUjcKyu;U)nzcMShPQa<2tQ|2E`K4yVPP+XF74c&Jme31+;r(QdVTBaU4D7Ml zz^A8J`C32p>K*0xy{xGA$Vac}4=9ItpZpe<HR4x>w#M}O5z|{L2fz?_iC7oKO_tzv zM*3*tS|H5UhwzaCGr$mRyIBk+9=MS6DQVQcpFQ4UUyro4Jo1g$Jj@(eXn5pDv8#07 zC#C>7p9m!elFg5_EybSEulX>>bQ4xk74DgkZ=-*6ZsoQ|_6n*>cTf-2f__NLBfu(m z0@N-qezv=pH+6ueR)vL^2|A6Fm8}mqjZ?lqO!o3}&JK154_rY1DkTJQD!Kz4k=#UU zATI~H6deg_Mtgh0<d6F60?H7KR@ys$%<15si-e$mBjq`T@HogQ@39B-ab8s(qKxPZ zE+2|~wkgs}Z&Fz!2UmN%VP;eYpV$M1LU=R&`(K3$;xU}%$(H4E0KS6${fw)rFw@6H zVD<uO2eaE?rtq1PPa4cx5A*3{%hU4iVG)=#S}}(%%5F9`{`B~&oqE=xWnIs-*U=YY z6^)J+<HPX<u?L%<mW61+3-5x4<g`;;aO|yX>z9x$X%^>mU`~Ge`SSR6NX(4`@)5Y_ zMd5Y>?s7Rh0=FA*H#WGJ5$<e*+g$+nON4tD2*`b#RDfNdjFNUN5{-y;XGDnT(8fN1 z=I}&xps}A`szhwb#>QG>9R-bL07DN~X)QG7G;9x)M30=>z!tcjL5FTOSEaL*>fm7{ z4o7VXyi0`QrT$Aj^hw${ol@1usRjC-MjTZUCck@3qfq&YH2DST(1zKK+|X$+vgD|j zTK1x5PVIXJ(Qi~ZP$X&rb0U(f4lQ0UtqYLgnAz_o8#9-204MlD4m|e(v<K0n8-p9) zAEr4WXDhdPlWI#I7edWp+9UMx^&yr0G1a}~A5v+|PE9q;XcQ)0VIw%6<()OxrjXRx z_!3x`=dH=rn6mOyQ)|XxPJJ;pcYDA@%{eWD_|eLw`JB<2fRTDx>}FJdv9s~TNOga+ zYsBA;@H-PB6+8z!8eUX#AsP?-X(C@9UM$UQ0+jO#jFI3vp0qsk0$2;JLp}^jEU4Im ziVXvcfzgQk+OpYknDglZ#jzfWf3po!2r)G#u}JRYx_J_c-~5tdeMo#U3?rL6=?|@> zn}`)8KuybHhy;FM>QIYokj+?g(3O9nW-Q|hy#t}QCJX25^6gy~ZSR=T+H0!NUKi7q z#KQJW-b~*QioU0y7E(Mfo9SB_poP&B%02=af#x=AsdPNmf?w!Ny)fDo@ij+9l;)S% zCEU{W4pMPdQCG`bat}}o^zEi7pa$uu@xzn_i~kkHbH7HX7Tg`>0yeEE>g~rudfw8t z3|f4k=Zkq8ME{%gJbq+3dbSPe*=Pgk`NW3OGYkCeH~rK{QN-30>^TA7KobOUORh@k z2HxfrRMka)!l)oOSU?VfWes7ZqXA3PYu3Oh-$Ao63vPO_U$1W)DsE3jA9^ro@s6(- zv^c(?#b+BwZLv?Y(c%qXspRiae*F7=_z8c6;XS&VQ=Vt{4K$q5yxQ&~(%vuLZxhO& zjm9kMW@W`^!4hu5Ui2!$Jka-;9D)c~LHx5O(!TUR7dCk_gb$2_#ZpjS@iitvU+;<; z4#0KD$Y=C}%b?N#Un?|Y5Ty#@A9ZXmsDF_eo~W-X1gZqG|4k+)8`0so1-)Va=kQ`_ ztQ`u09X~8*PSGZ5xaQ?}e!zldAd+`HeR^M5p=v^*l6$I?^AAR^zmGE7J|{f62J7tm zjzlc90(yyWUdK1vJLm6Y5H)LK7N^oU&)~tX8pRDeI2UT;*I{Dd16{!w-{11HkjRF% zMR*>lF`KmRNw`(BCW$?;DR`#u7OOg-UdUZnssN~mqVeRK5_%3srONaal$U{Lt;5NO z31~6G1;?)_{UUFDS(y*|)#|YRx(6FONE$CTFQ8#>rJKsMQI0?j9#Qgh)k;_bI61C^ z7c0Ns?!}vB5tkXn(t`e8$J&uX``Y`%#Cyk4=`D~~@Ji&9x}<^5eDaT!GZ!3vR6oqW z{GD#Pf<%_lx25nN7YD`-K>6<oD2>-rxNY#3&L0K+q4Ibo>`OQB%EW)zAHn#+@2nh* z_6Ooa;5B3lGx8aYL$QV9s>#v0Q>_QsUzTB~O61vR5Y=j4PUh}}A_(`;IKbO24|CMB zb1TIMlzzRRkZ80Bl(W1;!!#hWaK0@rFV}Ka09?mCh1iiOam57B4GzeS*0$r7Uk?iR z)1j6&DMvdHu?Mip5HQAsFuqm*V|4yOCu*cbm3>xz|0EHE<;2}C-@(MKKi=2Q^oCt& z|3&(v5FTcymrW21A~do=Y%7FVw4PBa5Bh#o#rQ?V_T_DkZBNfF<O>NKU)Xv{{H-#) z3t)i;@Q(EG?g#JD_b|jQpj2#6`t>#J2SqXCIPjSId~6}k#tqPp^*DY=cZN8AqX1^1 zJSl!Ee+Ep&Xqo&~MPM1MT>_}bBprbLg$KJ?0oaIs16Gg$kDX2az)*hubOg*P9?avK z8c<x+e--%$csX^5oP=%e;axZ?yqbdXPJQ>n7a>R$<)J`7$y-l=0zW_hnIEd}mI^%? zuk3XZ$=j2q?Y)lns7!87`3kfNygs(}jCXn5^NU-6<~pSZmR?*fw|~4=QP7RFn9qTY zS!{vAD45UcLGNh(smvTuD(K{hJcva|g|;Ey>1Izwz0-9%+zY(Ze@us!R@9%ffKQ*< zqy0fwMEqsBZ>b6ieAAW;`nVZj9et?R)tr$}dK_6o+L0e3OUob!8>Y$|t7$~eb9)vg zXvHH4*!k9d@@2!mAA>*Vy}HiYCGD-koIl{vrNR`R)hb0^`>9UH_a;x3j5*aXiDH z7WGQltvWEuThtlN22~I4H>!Ob8DE%+F!esR9ZANt$dC7G@xetp^eAjTx!MGrR%5BY z1wBo9(1em)$pnZQ@ocQ^PO{9eK<@=?5Mi3rvK*U6aJ|YI$YlIUHXEOM$!!_s);@;E z{;-i^l2INDK5)4~q8g=l9vNFzHNI-OE6;T#md6Fm#GIkxwD2HWvhfj|ui3?#(4g9V zuBhJsVu93@;EWTB-iM-x+7tyMpux;2M;H43stx-K#_ofNR|I_ejeeMYjVBlu4R3_r zCzqo3pw+jTGAp0vBE7DE!XNBJ{lF&uyfO^Ba*0A6@D@Z@^N{?6NvNeq%9)>=>`UVs zJs^bAf)vbW7=vd-OXGC_tx74A{h?(H#c;hNkVoGjQB{$|@@&U6cAT(R8DD6V@v$q1 zwP}2HO&r76q~8LXTY-$ns_~D^!D1PZ0_W1W;T9=X@<(=)h9Ra+IZvZ*%aI~oC~4uk zMqh_hQcC+FSrvPrPL`pZAHYbTw)|YJ{tl}j$x0dqiA1iqL1OM?B11nwR%2;Pks;vz zB-r_U1R{ptw4WQqw+V3_OLOc+W8qIAQQs=&j#xjyvvSP79M@cFoQVGpiu^~*$=gfd zLO#*Vv)RzUn*fJlIU1(DlQh-!t-#atJ#_;`u=07~dcwn4LysWXOfxcBrKi>0MJDUe zCsn!NhCpP(rW%MZV-r?<y8LM$c57xJ{xnk=dm_u*xX0I)gz?oi@gvsoy^EWsz@Dny zUzn(*Fv8NbOfFDZPv@|xQ<!mr%h<CxBknS`D$dy3GTK_6#<3LD5iQGP1`>lo@)cA` zwk*S{zD#!MJ2I(p8A!|OS#0p58crQ{{8j^JWZGZ>t>gHc(um)>p1@4?Yt>Px#v$e4 z9<2JWKmG~y;b-t4x5FKQ|IWgHW%OT->IXW)H*E}XY6nEef0+LY7x_!`3+-vVqP13@ z3rd#i+YsIijI}cGh>!CJ=nG5>N&)%N@efKy@vl{R1BYS@r^~}rC&0sA2|It~ms-KS zSQl0?!A}!9jyYy68Xn&^ys^Jo$K>X~Aa7jT@F#*isPrm*GTZ8nZ5#evkQeDM?MJ(z ztek$$uXj9bhj!dxAsz44A?*DCOcn}_6O#aZseQYC_~#bFzd8!v4;MKBsh9@!4$8Uo z?sXr-I<q%`O0s&<s~gXGb%ecd1DgSi?15uA#S|k7SG;V0)@_h}c(@SX*Y=9=Bfz&8 zspar(vC4><EXr=aGpBR}4g!p)%eAP7A&FJ(McIva9>G$oryu~`sGtYi5X+A_R$#$m zU2X>tx;lWj9u5@yHyfrO@pyH}<LUC+=gZQM)N=G^Jd&V)OVGa^N@W6kK|ku@EkdQA z{25z@eg$1hzpge=6aW%WtgCjXz#gO^pB{~+AMQzPm$kJl3s}1BUu7xOUa`GhlW18t zH8rON>(@0H`ya)wghc@*yiU$SgS@lwqt5t85l<v)ubV2G(=yzOI<Yoxyl-n+jdPfr z;uj<7y3r+f9KKMf3JNGFgd>_kAudqoxVw{us>Xzc#zqR!6jwVT{D*-%AH8zJrO>~w z?-)jaE4DCh`-8z=?v0!aNI^W`^q=l$X~f(z#tv+cDV=h4_i5N;zuLp*EvFz=(b?ov zqRa}~tMNFsjL6}D!7d-(xNUf&Nc=YN_k7<}4RSNdN3qM<H|(nw;N<lPdj@?|6mK<q zH1GDKLd?1*?$HIis%;VG7tEi*^__+M!hHnDr;S1%2Cl+IXivqoYvNY_PW_j#@t8_M zzHkWaE;l(w_`$Zi#xMEC=2d0;&v2o=G;!K#0r~~|TLXMYeZRre17Ftgxg%Z{p9uXj zIZ|Y1ATMEi@NUbT7ppCt??HjcZ45oo$nKiBCK-^?*|@d?cfq-sXJI_R<NKE1o3mzS zS$vIu*PUL8e^Gk2DUUCC9EmT=>VF2velJ8e*|?fFL6-VI0Y6k;uJrgGG8(?CPTLTC zFCf>7>?xH^$^&gc1oo?o#&eKgL7ocufjOcRL74-p^tuQPMBiE~q&~FQEmoCBld#;` zVuAk`&@XCF2bb5D^)GcOC9ur?td1+J7X?i9<wJPtV#CX78yIKhZPb?0Ul^;5r|Fm# zwt>YM`4*b!Y<dgH(pla5+GUy7u;yO<Tt~HV*AJ3j{TSESVG-W?)Y>Qi01Gsh;zNtZ zbI6Ye$M1i;d{O=6_}@IdIcB+GsO({GgZEAkn)bH6+M+P#oWdx!52()_KOiUIwW^;L z6lz^E0n0tf740jl?=M@z#sT=<Z^0XS)84=1`ZYahE`aR~iy2ITwHEOQ3+wx$j(@cj zS<k<=p}GLyNPFRXC>q)e;X@~vkw5mmttS=tPgLG3^j`ry@~*9Aczo<?3qERQL|^;+ zYP^2>70iafd)tx%LQGyoDp?=y-`Y<3&(6SqDsW!DBJ;1V=?~lc78a)guS)EdfM3Lc zQ4fvL1v6TqJVa%I_db}yXr(y0{yH7-dMw`98-TXe?>>8z=^7)ePt>T!y2<lMP$L9! zr$Kpx**v<6sDfOib|(RHeY9Ubf?cPj^x|IbBPuw}o3?$sgL0bHOUqw()R1T>AE7>& zfetL~-&!CIy1+Z<waY$)WrMoJA9Ul5cX5HW{9hrzOkPZ$PDVhWxV@l$1MmVr-EEN6 zIThg50lz`xZzkZci|5L@Fad!#h7(K_yiBcus6(q8lKV9zKiyZQ`C;%Dg|)OihvU5{ z%Pln+c!mBP@S<E$j`3p4@oYe4!^>NcFUcS;Ivxx8$^E}w%_H{Sl7>tnzX@V^QMG(k zdtRM4eWT1zjs@ez+VlFE@_I0<RghOdUjNPV{=5Y`*XRW=bO?p=MEXoW>G&bvF&`a` zP?y(_SW>=%@e?^8r+*qQfOIW{;a(*-@l$Dx@+;(L1^v>{KmYaV{Qp>$kYahO13oHm z_?yuH=nJ=^9quvc8b7Ix)=~;>@bS}0C_+^{BC~-{4*yXcGIF*5@qua?9+7%o#=`@( zA}S<4-Y2}-1xJ)k>|79#iE^`t(uK$q;EEhmi?LXYuhARrpJQ#jxdBzayqCvAgR+J4 z7=^d<{%C(a@&R~q_&6^|<@;kj`Q&@#{ns!0MvLr=uzyb^UlgxsdnQk$kCyHxv@!LN z+FJRDvjCUBI1s;VhPTMp5G_~2RzsE<8C3O^^id$MCGs82M>^M=-eSa%LT%cFdq;G6 z-8E3yKTe;aZQmb8kM&2MG)-Oea2+7Z5#$iX!p%2j;ra2){wX&eBKgXHZbAc4EaZVl z>R~zt*ZcV?<o^_wE#ZHd&-*t^^9%Y1gU8-<<L(|mfJ8@Kqd^B%+#2xRv-NV`GV?>o zA8)UC`(~Q}LMR_j*F^YR2fD34eSL1sL=1_17?dv<5U6!GKa)P~SM&qp3$g^OZQ<}J zJ3dVg*2Dj@{R7;9Ylwd!Unbuh%)h<P`oF}#H{Zvg3+=_oeD3)-7mIc4;h)Z*audgI zWqH$n=^Ee64c(!NmZpz%)aT_8nm$^+GC$>|4^2nNml-H<ieu*FP<1<bTyaJvewzG8 z_2+2zpdWv3e3#KD;dok){3!h#wlj8C#gLbC`J;IJ{_Eofrf+1t6xWArL$xi+j&11L zH}$Yi%wPH0TDJtQvopu<-QOIYU(`=-ykg!8<-J(`IaX<k4`AeBgt|voS;Olmr(gbK z`ga5Q@7mL+P3PMAB&vyvY8sNqSBu`|V6s=J?|uJQ($B^82jzqIxZi?NIIsonVZX(` zW)`{WzeFE}{YO3~I4v>GxGCLG{dHKi1p#y?hl7klfc*D}!Bu8H(EdYT@A%{gZk(2z zKVAQ*{=)ljz`WF7JDT(Wwa{NX&84WYsZ{y-G3=iUP-cDclYoDaw;6<45+4cSIeIV^ zj*$ad)+>)P_Vg(IM|lm#kCWfvyHKAaJ_@s>lpotW>O+2Tz6@-N3j8=(O`Lj07a$C! z{F;IM&Z-P{o~9gW<@zh+htBut-_i8h`smx_o&OwtZv)n7{r42}UA#)?^D_NcjIVw- zLdRe|msfTmq_;(qN2P53KRYpuYsfx6JBj}mrK&Z(z&<Um4=`JFB2>NxV=IK}Q`h3Y z)-^@*`z+Pt-hbv<#Di%^(XZGH?nEFQ`>6CH^-PxyaY%W8KZB37bXradQHeD7)$lyE zT8win`jOR-`^+rPaLX|EEu*m5eeJX@e-#4nmmBq?vA-d?MMDCL?PzEUybYN=3^D@$ z8|Bq<yT&*3A%7$Wmd5|ejUs=QC-J=|z5>fJwTe6(W?p+c*Trd|WN^><`zYk)+~BoY z3>WkRQ_`;nHQnv~S=%{Jxc`z=*<Nrtigk47L}9!J{Zqtm(?^_tz5VCy$4iL*DE{S5 zmR~SmMfD5y(P;Add$mle8lIDe=d!^FES?`i{GekrzU2J7_1gO<m&LCT9{dST9E{IC zLUm9!KKpa#j2fRMj7~^Ge7K`>JX-aUj>j<-<HsC7=!+8l81@h5s%9}y?a$Yi*cpeO zRD2&gWRrZW;Qwe|L_eE8hAc3CrLhPbBqJtUIA6^lDirDu6xT2Q_VDOZaj*7UW?yDu zT8in@=x)exLzpu&FFvuteJ6_F|CRV8<p+JB^x(XOvzMW7vhtfH9Dv-F2dQ%RiyXp9 zsDQ2lec3itALu*oFG@5H9$|~ygQ^?syxu?@);M-Q&gY0~Ysp}{jx$UK2|M=#9ce@h zyK=SR0ge=WdOQ&P1X_B6J!2&n$>FTUoqRmZt)@>Ciob^QGSBfCgEirs)=AG7ber!& zvg*V6wS*o;icJT#5GRb%0LcIi*p~=x;mon1s3A8ao{3?#(-mOpU)zVS+b?mB^M=;_ zw$>%LFfB~Mg(YoE@orMn5;>n4I5-CMaHi6;81Y3k$R%;@b?x7#jQkH0xGUHfGb-H4 ze1J${>Wt@er?dZQY1(PS()ey&LI2~>qX!AjqlqfLKf_waHibG}<oF4Z!8S8bxJrR* zrOpBdU;dhNIEwXYaeG;`=hn=%x$Ov>;te%JsgX00fL$5dmTjQ1ojb0fKQ(cP&J5!B zwV+4WFEO1A#NQxHJLv$R!+4Zf3Ha@9>X}i67vrb(sRK*qqsxLy(e`E)@XwDQE*Nlc zrb-nI1J9`xckh97U{(e)FAY<0%nHKZ<~lCZFcz6)Ej>AvM=kBfR@c5)+DJm}uFWq$ zqHFx8Fv-YmEF0c7fVBq>D;4r9CL0_-!Z1Gntr0fMy7ipniuHTQFF!y2f-S0wE@#h@ zU&8@^aS{vq2E1x{3GoQfg8iGjpl=*3b{5qJ4lkih{H4RNWS1DXlcd-L_b?`!I6_ls z4hXWj!v4g5iA3`-<Yfky5Z!sWGWG}hn!=_6hpiFVi9!25F!drM9~aHA>0oN|kwowR zMrmUq^fr5W#+Yyctw8^}`=^uf8n7h`G|>4?8K~hj*pfOTL1RxhX5(I0niKjs1`b%- zDRkOzP?TzcVRtlNOKHGUmp@0z+&B0SaP?t5U^*i{7;D!BL@kV)_xZfa_gPTah{#A@ z9co+AvuZCQp&JP`;7&$(Jt#g<0vA5Rpgj-Y0he@(r4wVAQ>uTmxi-^3AT8dbLXQgu z@OObLu)rvALdsHo$n9~tJ^1d$cL?qZ<9=A6JWV~MTYXlg$-l-8X5twCD#Eb)gh<u` zc};=Zvo^`*R#J8ql1NzzJxV1#x7_Wvi6ajg<-z}M)Sw6!>Ju*ykcD#c8GY}gMBiLO zv`XyX+Jf;z&5o%vxj)4$IdvrCH)c__m5zsCKM(brAFrdWKY9GsHn+BdScT}X2HkSu z^{+2qnO+JyaE3j2$=}tKtBJ;&yg#n^X?!G$vUyn<IZ7>yf6qBBJg=~Pi$I$f^FQhj z%vix{mHqK;kiQ;(9Qp*xM7Kby?^&#GTz?kt|NhAqANxrd{SsN9thk@+mGb+!g7V8Z zeE-+ki9A^jzZp(&%P=m+SR=ZlaeeVHea}k^Md!PE>h46#P_ku6t{QK9-j0E!+UEO< zutY|mUvCmgbMt)@?@d5H6-T-uIc?|t5g+c_`a4LL%UGJp(arZqAW`>)q6Lh7AkV21 z+GiiMh7Sl2{_|H_WaW`@*fh6Y5D%*@q8GG_)Y(lK+;H`!bAk<5XD1uioE>bqiL5WE ze4--muhT(}A6IOrGN!^hm*j-|fx5>3amI%1U%Hb>l<*Vd+4Iv;3yFsxemKaAP+MU< z`}=4V#GIC)Rv;E@+YSHX=t4*Q225r=G*fdrE`jE;X&%no2Oph{H*{3zIN_p_?ZZ6T zDlL+YC#LYTBYvH${K9EknUnOOtieZT<8`<~6-QRH2Tp9&qSw2ky;c;)2?8TeY0>M^ zPNQo_w{j*>1C<xa<`c78`D$1B0;_B%d**B9tF;}V6gG8@EBz%aox*2IPS?`c6k&C( zE4rl>?Z;=oOw*#*0;_vGB3n+(D<bn<`Pc9`E4YQ}5l_~P*YfinBAbVZT;)pNXQg}b z*()#MqqFg<Qnb5W=_{;s4?cV3*IK%}2<@M^q9<F?1^8SbKh~l@0op({nA15pY&^_a z(u#B_{lfWYeg0kB<*21{M>8e3tN;U*#tUrIASs0;T;l?JWA0&ENA)j8W>ZS|{(#<` z)Xo(-El7VZ@S=uw%fDi-nPwcM^nMLXb#5MVy{A$dFSU3ud>XW2IO|~I@<!&cwf_7~ zIKMpl*>K4E`DwlUa1;I@ED%HqOYHDsu8>h_a3vp`Td!CJT!H<)cpdFiz2BgKJE&C1 z9U7RqduS<@@}aOlp~$f}b56@@45g~r&-|vWK>r2#tpHg*UwK^lyb<(~v(ITCXnd+U zFU~9D+I=<D6a34i*zbbfo!&rk`ZuUcv84VIGzUpSC8Q+q2V$m5opCDuuaLgz{x_{b zR|)Dj26FKO)-jYAjS*Z#Bzte79bCsLHPHXFskfn1(G36MPDwcRv6`yb<akCp?gfwO z8$mxIZ-H!LaJ!M1l1{rwU;#dQL{ALR{Pef5ZB8MFR&e5nH!k&>O&Y8<vK?+Lz+IQP zfGyaJ{|GnZ&rqRI5lO|`oS%!19?5MV&AGzm0GnW2BYr|pt^<Q-oA34ZA#|zB@r$$~ zOaS#f@D`ACe3Ba>Qk+W|O2<4PCs~u|4p^+ZCS1aQ_8<8UGpTI<1o>1o`oCg)Lis6< z=T2brMfR+hm#BT|qy!T)+bD!z_+F2h%(ya|GgDQyUnS-jx9WAoAJoq3j6WE7DPPwP z*DC$;@>r)x)XgC2*m72nmoo?CU1a&r#*H>R_W}8~;o86>$iq=*WTq$T5cYs~JxFX- z5vQn+fo)@NaE7ocl=54^?}*>3_`$n{ls0ytUr@8Tw=;e#`mldyY++jH-{XGtizzZd z0fWGt89Kk5`CbH^fVfMvK$MP!^jG9L6w=zc6IsGpTa})_9F*U0jDf`!kNZBQKcbBJ z)0U3S@-xkZuz2Uk5G4111OPc)!HEH52Q}H2d<zu}4PapnjC{Bm@WJ~(Gs~|}J9*=> zB9_T2$-~SJu-T3JNEEXp{%m0=4f+6~v`1A0s94ZJn4`!_68j4GH|oYs1W;zgQ?dDW zVzCj~NYRr0*4=zFUP*v93ZV3%vA(L<{AorUhM5Kw`sC*XJR{!c)=CEAG&exM+P1^F zJ%Nw0uC1jX^&isA=Kk2irf1Q|P)GI@Mv`FcAtbA-k|4KRG9`o?Cb-LVs!`HvP;o~t zTJMj|)x9)Dtq;UI(0rAtBiC8oxD=QT%lBY|=59hZO5xusO*{pO$#_S5%AWAF4n2=B zv<M?LF4{^Hs)QwASW}-|#XhLalFx+T+$O+xt<$szL47E6=(=v{AKq;A_t2yMF5bMS z9)c-P1y-nEoV<nVuP8t8CpnwN^YRj4!QDYuCi}X9wA_J&U_5S%6yTR%Sj(*6BTFBt z!O_Ym5*;kA6<hf$wlL*zDu@qxeQVd{`9To%$7&$?{=9~s|HN1isjEOAwA>`8zzgY* z`rk$R8wzY>*6Ch>2lH)hM}`>Ci@`}zPzz;&XOI>)t+aTyQ}{u7#h1l|g2l0a;hmND zD>%s7<H?3e2#jH_gYlHWZ_MkUp#=X@d~DP1yNGtZBWGuHf`k-0B(EH!Mnnbw%Jai) zp}cIeBC-VR)=l#=2e&ap93uNAF4ODc)%t<W#7hFaJzML!r8Lo;p`8*=JUc5_!c{5c zgXToFK_S0h|1x8+e!oq~PdC4+i|XxNFF(op-OBa%`r@PgP%0yZ@tMf`g5V*iUSNl- z7>@lInjF5o@NgfPk#XvvC8HP3d<Ur=@c~Oj9r^C&6L3~<z~sK37EXAipFrhE6ac`i zys{dDyOdtU5;om_VwEiWCmIfhbBR3Qd>zE41?T>7|4qv<4q1WOv4#H_nKeBaa}~!E z!WlSHEfZ8kz*rCw{7>Trfj!b~ArB~P8w)f|uv5KCnxVMDd)akTz%3<@_0V3tUD<(4 z!R^%PNNldIut78<SETpL<-Z6ff4w5TU+MwWv$9|AY1b>#^#&;?PR){RT0XK^j@NeP zxpwAp9pxIGD8gwu_W(%p+;?~N^~<S%sZX1zc-n*DJd_-tD=z>Y7&Qj736I_C6Me8> zkUyE1c=t*MOV);;-5lR5B+O&nD^-9V?&D{;qTDs!y)rl#a5Q2~E&n4TYFD;XWkP0{ zdZwmg{=WCU&C1-j8jg>XS+HFE#r2qtap)KLJKuhv(v0z2WUmJLpYcoBR;BQQ_8<v) ze?AEQ(m;)@XFu;vn~n-keqUWKKcY`a2lo>c`fD|!o~05}GT(W6qVwa}Pxy99=f`s8 zFQh;P1F%>h*KuaRXmGfxw#b0BNTa2o^C*NC3m;tUbNin&$}hc-${pzl<`2+Y1g{J9 zJ_{Gx`l@ihiR$m7^575J8W!CTQPRKUCvc<brZ{F{rbw{Lng!Ow{=5Lu7CCN}ii+ka zJ;v!W`aaS>D{FvnS^4_c`1KdaJm7#|cKcWHe6ROw7SWIUJ!R!ih*QC+#>NvzXG(F` z<#@h1igh){@NQ5%aiKgvzR1S-<5f*<>30`A=4C5GqaSF@!aNhzr=X``d=1K2+slCv z%Rmh>GqR;mpyZx~O-80Dlq3xCj8{&=V;TOehP_V@zgK?$ZrS-kCT!;AIEoLOgo%Rj zd%+Zh`AYPG<wwWEKBLHYp#LG>h`~1T+80WCw`^<My1E^e3uF&Xa5BYttr_zg#Hq(A z%6N~B2;>}QIi_OKFCECCyElliM@p_a=|h~tzf!Ap#;**lO`SXFeQkO2hcHLV`HcOL z*#0E2q>_GRp69ez(mCuVF>IKB@?{v;g!djA)a0Bw8IieTN9xpwkEeilKt;ViC-4lx zl?8IL#nQXwzwJjx#=HZKU10Bedn>|B2n8^fE>?1*wH2+F*gxR9so7N~PPk9ls;EKa z^v9f`KE)Von7TyKt<qo`#gF&}I&c5whiH#zpULrErkfVXbjxY=9oSmXP0MSCM>^WU z3gca;{tP<nZK6Tu{td;@S+jjPOsD*fraR=JyL^AptD-xFmjvt(;&&eUh}F&wtHDuB z>Ng7Z%gr2-iFR)PaOml8<T0X!@r<|Yzo;0V=8JT;^JjqJRAOk0y&`*gO#Hp$;9n>P zQrCiJ4nPGjJ%jQk05_rG^JL*<zo`Q&>n<ggh<wah!amX2JR|S^T}8s%uMv3wE;@(E zUm!L35ZPT>#{<#TI_dqU4y+86s$0*g4SF~_zh9#;%FXYyipr<t+tyx69^Q`daS3-@ zs#=-+YbL<`0|N4>BBM(z0`6vIxs}HKsQ*v_!UP9{U>ra6zA0VRg3L7`qY)?F4#Imy z&(nz3W63G*0WftMSue!;;^`rNI(PPh;=Ia6*R(x85j<$z4<qyZOUPj?^CKpJPS45* zfo|nHGDPzD-+B39{&}oG1%JBM1pJcIsW$hyzE9h6)vVO{io0q>cmccQXpB{~H`o{c z>=CzincS!{ri)XxcM#7H`>)6!_2+fqTSfJIUBDk-zTiC3E)+kVS=|0X*aG06ooAqn zRA|3IrxeX+#3yUYL$s-`mbH@KStTP&nrwe|Acn>Ijs4eS^?L(UsoHVPp$+ZF4OpN2 zoj<^hZw3sa!q{mSrXnE4^TiMHgK=mV`8m<1Xv9A?1B1P!2UY9bYW33c<F|^&TMZBa zPavx0{7H+?Yd*@^`OJNAHVhT8=r{h{Jqr&1pa`cdoX_0NDFc?1tMR2jK2QSfeC97P z=Xoip3*AAfd_L1ddFKPC5AJyrv=sJVIeYbZJT45jU|J|ApS3_5dWJS4?La;6SBnmi zQ#Mk6^gnyv@1@Dg3Qk<r0(-?F7Fo|=e+&bc^`0NB&|gN6*PVy%5q1Qen}M2v_-eF@ zsfc&HH?0ynTfQ4GvM7ERem)v+2>Ij3m)X<sk`4V08IP*2U%^|HAPn}3RYb2>&=;f0 z<LLYW?~2B6P+s@S^M)Ri1#hp{Mf#uf&7d61GF($hR$<(ED<SL7uQX;gIKzFDek=T- z)UyiXg7gop38Su9zj*m%|6X7PA(v5o7T_!E^<Q-!K(As~sNSUnq(z?Ll;WMg68@@e zMfP78e|!9FJU|X%q3c%M4H-W=KY?F}*KN@Grp?YTSx+>51LcUW;L4vHnq4g`<x)<# z+AU3ai0?|1KReqCX8Zn}jY<oweos)JqKkPB-@T@Dk1}Ar@&jj6u;<Q4huB!)oOqW_ z@O@~rPY&E(8wX%U-23F!A#j<c4$+Kw4_H1s)M6=n2QMSLTD_EP{91+iu@*?>&Htnx z1{#jv7+2-=ReeEuMB-GgZ#`YdRvJ2a*{;Pp8JZe8dHD{ZDoD%6_yT2VIZMgZ+x$V$ zEAn3}L%m!dQiMp*a_<L&k74Xi#_i}JHPMTqqw|?pL96c%(udAepA@n|-9}y8B=QvX zc!@t=S5zKlIR;^XVRr&|b7=_Gg%1!RAqbAONPF5A+GK3R;v;A;(5I#Ps;E3&)V<&@ zqcZ$#+L}7h(0Wnu!s&0c9?{>Rw+NomTd95YXHj`RyRjGd`Ew2T2c(cB^CMv&#Drmr z!PwldFoh;6w-DWk=~d;|gjk10s)n_5xT=`+q<qim`rMyc9+z5@h3sn1)u*l~un(Mm zfGRX;EY@e5--tdPgJVh6*gY~1OP~e(2>a962joF7t<U5~YOca!z{kf^!EpZg!#3nR z+#eU=D4yRd^H<NGmB<t5ck<_CPcAfyYs!x=D^LCWdpvXxEKn}0pZ)z_jHPIVnQ|uk zL*&6f!9&J4d?u}*<hGzS_Q;VbV=tej_>3j#74_?^VC-P;G}?0KH8?$~Sf=q8hAG!H zsW53L;+TQG2iPwcs9OlRCG&l-W-b`u{OLJEJ@{GN1WFGAREO)TVL2W2pm)sCS+&J* z=rs;-oo*nWAw-st@msS0=x;BAW?Ibs$#=j`12|%e0j2wFGANRk|5DSI_Fzi>sr5jH z-{C}32=EOw7qop5KFY;Ho@Db}wKdOLD_+8i>d=~pZ3xLE#U>gp(Vf6DPmNRF<^m|V z>WpolYi;+-UdIH=Go&GR7DtuSg?)+mU1+UOX0P=Ml#tYh=s`xm+({-XXSgLA`;f2w zn=jec(t~3WwICwL)nt8=EDBh*C(xag$mSlP)-BH{b#SM_ryL?XBeD(4GzHalnF$Lv zTp*sMHMx-+*jp4qK1+I&U5qF+jD=dQMkbe8dr(%DL7yD`3OjB<zOfT5!U>#>%8ma( zw{za7sG$z{r$6~8AMOK!Qbr2(1!a~SKG2x^pYz}ADC0%*KjLh7WEHP->0+75JtZhF zkFL>iHwb=a5{pGw7HR+xnM~72lFp}rolxwb)q4HlgL$sjp3v?XF*;kc5=9?h;CkZ+ zx-bdFg3Vb}1go$T+ZkWQ_1cX5?$5*t1lqta6Yt8Fg&|)&jC)ST=)r}K_<Igus<ZJu zD3aI%PvG3hTpHcUmeq13$|mBgK_{k$=G706L%K{>Eg!U8roRwh>ByX&_(wzHL)}aR z63$LEt|1NYb9-!O{CyDd;6F&m%9o>bc>P6w0sjgx<OdB=8o(67djK@74r$=_x7dR% zYviXW?Di>>iZu^o#k@++&~RZuMKS*>wq1<>Ugh!kywCcMC-GRwZqB>6S~K#|pi-VK z*Z(S?<zdJV4~-K4u7CTrv+><R;#G7XL17GDj2Vb3)->!chqE=92~F;%zY_lz{b%ww z3jQ-j!5{sHQOM!fGQ29bMSS(DSWSGjzE2SfZJ|9=5dR44@K;{i4}l;;)rZ2Fm)|i> zDPy<hO*rRSJlqe9h&=sA@p(T^eEKmhRYg(yTsf3JPzxlGwDRL6!msy8@q6G`zB0dx z^;cMjzwo}J;%EG_gGQKV`jDudVzMA63nv+RP8PiW`48j6_X8vR3Q*d%EJ_2kOG8~+ zG9P&V5%!adG%Ss;s-lL{XoIuYX?pqouZJL}jHa|7kyK5Oaci+m$YUhJu~wOd%E!K& zI*Ms*VU64b%$=pnSKwhoJcJbFrZIS&J?ke?x-W7MTpKD(`Qft7s(kx3+9>V48PuL7 z_FfIgn<{#!dDI>bh$$a08=amRM4<vbPaRxLPYx-g(DND=!jzt0zYw9P7+*|H*qyUV z_6W$s6bME|=35Lv*yNnB-Qhz!FAm2cd^932ub@NF9Ou<6_=*cyw?d~5d4Cmd5C>4P zy*>-v>$m<(Mf(>sXx938SCZj*lBObN4<~EzFRo0NCD_L5yBWDKq@IV@gUl2<YnECn z5FB$z^-<KPEPg*IS3h4dKB)Z-z%*9O^e&Z$ZAQsgewi;T_Xf*O<>;^VL<f(?lgn8U zl9%&zzNUJG4a`-#M%<4^E}P{*aQ_BBUt(;cGC#kMJ)wpCy!@b1`FRQ9q2J{z&z0e4 z34O*DEa4?V&06CPtf+v$h5K``J&~%K(*#(sR-8Ku4dLXo9{fvH)DLgJ9ibIUAgUiO zsSgQ77WBhUk%BUn^uyHzM*VPNCNiE1@zu>uQ^TQD(mzpt02tK;DH{@Q`F0%}9e<<K zH=%^S22+68gMQ};#q>RN;HdQ7gS9rL?}yKZ^ac2WF`;Ch<ye6y>H-4F$9qS||8O?x zWl{Sl#Q*K%i}C+}uN_wIpZBoFr1(Gd#}I$h-_h~7W2ARV$4{v5%j@qj|4u}5O*usS zE0Q0y6V0!SjCaRU?}@-~%St<s75Ep}ILB$~t%MasJ)-cey(oPb?(Oj^ryt7nCj}5j z##3rnLwEDz7B<KqJ6p?HuXBp^x51+zBTgyj5MipWFJshl>6q@SCOk^Z0KQ@qGMGRm zC%tMev}AGX6E5I5iCHi`M|qj7w7-m>);`uRT`PO-4^Z@#=Jyx^S-A^8h|vW;VTvpJ z0@gT)+2O21e+iov<r5AwPGoS3d8dx<-5-?IA6N$^XJL8+rOWhjN@W}9Cl8tWF6{K2 zo{}LG`}E2j$J&FfjL4HL18gWoZgwoC&-$11(IsfO?c%LQeUBcNhziwc@i;%1V`>}A zW5|W;$%XxS5qiI%8`lh5H_lhFaNYPS6Tvy_M%z$0S~o`Jw;pnX`I)L^FfufBV=uuY z=6E$&gk?YQmCEJ~y`LP-Ws*o8lJ6sTN_>cOCRmLES#etxXe($TakI^N+I1Q`g#D+} zXJ!427QoA9tZz)$9>N?|Zajtk^9njSS-+L3gus4P`HbA3ua{5cWg+;NScLhAmpyQ& z1ez0BKskXZ)=@+ln+8+F-M2Id?vBM9op`fV^YJze*FqU&Mj#Ep@B<t1->_Y*73GQi z2D5c@k};VhHznJ`w?>mGG?|sz{P4EkSo`1<nU}BGM|viXY|g|Cj>N30t0b-|NH(Tr z;0Y*Uf4NABed5ojvS+cS&K=H}iFZq8CK@xY1M`x?+7{Z!a)tW7S-IO1QaC@5!fF;z z<>8T9$Zra9Zrn#4JxO&a)d<RAtbY;ZFdontLv3_wv1f)_c4Q3qyWx=<&_TkG+uRph zn340J*$ix5m)i(H>{gg4=pk#D<`{T!l12ovrk=zOIS%s^xhlX54RBb(){*wJB0Wgy zg=qH38mxu{TWYR1^m<XJ8|Y>6w*w`+<#eE@{W}+*9da~2p@@?4xv_<Om6$$tl@>gn zIV^Id`+-IV<s0}28c~DMnumUZ%}VmPPb>Em$e`(;GvFX`i&q*1<n}}|-bBK`BRp?5 zXGtpx2lf`_IZsi*-$8jxpBf&JtI#79+#9fVi%g7UNYRtXRFweO*#B}Vw)Hcx&;|MH z!aCMXS{6oyYCmuPMd4@UN(X;02Y)|<p8=pjIX?n_P%b5WF3GUzqcm$P?I^roTHJJP zLDPl)PH4~JVZ%hD-@%8dj}1y|K;K&h5(wyHJ(HsWZR<#&6z%ks4gwCs;`y>({jWU5 zADb-`jadl)a_|Ivfvy>V%?1K85C(4FrgUctrMnBAp)W}JTXNV>xr>mBI!-Vbaq-TE zPg+^sx_v|-;M-An((>WQ2-_~iQIp2EC{#{RSOfDn5TT%a4u!pp5Y4pQ&UHdwK^Bpb zO5^?5hB-sMY>sPfiRNsgX}K=b=}7EQGOqY4^AYxzJ2B->i7&UCII?oH&A=U$`_{>6 za7l0bnJaC`(7^ztFW&^U2jaN?z@te>TZ}c3;6VyHCN14e;Mh-K=M(x#R+<{?K>~&^ z624<4x{<J8CicqH)}l7F#gaa#wtgJT>p3FX*n33R*Sil(ZqtzX>`slzldF$NoU&8( z%*1g!)g)%_G)bOWLIuKSm=KRP-2qud7wzWhd>pgTl=!klJ2t%Ov?;$s3MkS9Qo0(G z1jZdXcXHwUJZFe2DarV5$#^X;z^Os7zMfEwzmO{I9)nCBfzHQeF&xx`DgbwXjU0K@ z%7Q6f&1t!bX;h4Q%*^T3TIf_e?N*>u?=_v;51k6D9H6uZ!8+BgV2>^cEx_L_K=!Dh zT!4}@JF75D)B<5}lZp~Wn^3H=CysfFSNDtzn8H0;74B|W=7=g>-Z=qMRj#p$rdoj8 zUz@rCtDoe_Tr}g>EE*Em>0ZgMN4aWY8hE_cX}6uKI8O;>+0b=AKjlL(AW)NTg$S_Q zPtbnh(uwVnq{oqHZ?M!1e$L|0u18r;+5v>By8Qr4WHFhotVNG9(dq1C$TwH1hB$XU zs%6LVck+Ji8ke*^k^;osumsl7nQy`82=w<40o;$x-AI^BN5$N0&{L7IIcEt)CeYur zR94isK&WI_u3<uNKgMgJX+m)<T#nm0@c~M?7ZC|ZGl7#N#*?gm7e(<w&5lEyf74G) zfE<!fClA{SX7Xgtj~VGSIC;PsR!OmQ#<L36f9oUoq~r!d13r62@p+F25Tf`jVuIN! zX*tsnNCO|=@D}A8R-3OxAESL>*er>rH@r4Bsm`DY#9P*kjLe8Hx5L_+G8QS+*|b38 z%ct-V%pmM8T-2rf0OraHXs0W8(ZPxWX|4H$%S$7#jfR^k@=fuJPnG51-jc42%;xmf z_=dS0DXsf;B;g16yp)4%4E`NVES4o$g5w4sUS@@-%=~L-p#@e<Zw=^$#m69;*|$@l zIH(_jG?I8ya*!Ndj&U|@IeWLRpg#9L8n;B=28PC$ysRJrP2>^sn`QE1--@(H+9)?a z)^%j+JFxzQ6Iyux%I>Ja*Pv|vo-$xi?lmsa#t_+<ipd05&{CE`BE-qohy|+E)<-kp zd9e_G1d*vLA*!@T^70hMRxs)i-Np!o*R?hF8(@4xWg)1n#@DB{{dku5$ga>b|M(1- z^H;dbI5g=NRLk84wwiSlwqFZk$ooA0W@SHh9`WNAJ`4=OKLjCg{yh>xq1+>pbCBr` zDUoX~R6~kGinbH{lBhpL`aJwWc`5Ih_GJhEO-z`C|1R6{hT8TK__z;-@GT4c)hsil zL?#tBUD|(hhIkQ$qTucOV2Z$CN}~_;*`@~T!>l~uQ@&s+cuqlH!(2?}-c1JJ`+1wr z`#Kx%#z8%X_A^`s<H?&FT^5CG>hrvhtV%wK2nys7V+%8|6N5f2{VgjkQjb>cjDJ@4 z<!|V&UfMu&4U0axg^H2O^;`4D8I8-sqx)HTj$E~i(6X}Hy08N%bi+AYEc@B&8iXs} zqbAGE03`A>$|allyAMTs#w<2$&r(zzww=`I3u&9M=^IhQoUp9S=Wm<E2<$R`Vt(N~ zHaV@T2dY{p<yN-oZ40a?vDxdKslk?8eamkvc-Qg`0Ax`oKAN7vwGr-h;3DIS5a3QP zH{^R2tM3zQFs>@u&Y#eBZ7pf={#RrsCxYkn=I3@!$~Ipq5A++XeOg(ov#$KgN}gU+ zlHWlm=u9jv=z~Q2abdyxZGzTWIjI>_zzBB89WP?z!!atCwhWN++wU5NfYBMuA)32e z<D7}3XzI)ypjn4psj`yO!;+6O9n(0I8qPq&i&RCYaZA7%@CSeaoMZINWX_Uf(wHf< z$p?V|42s=CK>9o6$|MB~1@U#A8QW{al1RK5!kK8_Doned`3=cOSuLp<%7NSe<RYVo zYK0nKA=$;B9wXQ}iS}v*01^AF7Tr87%AZNiC;rQGIbDi|G<V@LuJ2I4kcsc}7Pll# zZD=QIs5wih5_BCVCEGp3vstYamT<i?IIpfM@!B`Zk^$L+Jm&mC4R{$7A^6aOJ_e%s zehWpoUNtLFKG9kHC^ZsVu&r&m9E{%_@XIma3yj>~P+mFxZqE{Ye-&)l+LeBqhWQ&f zxl0{GSIf=m?*mOj(>eVc3PFcqznTOnwnV}F(WuE__~5|R5*+TB3Cm&X6Vi;3PcZAi zt^sVA5~#OMkJi|@GH($3^xDt|5!+4|xC;4c`k%_z=!aSW6?db1f>wg5ks9<IBO3Qf zYR6%s-H{X_+{SvJHnd^cWN}yO*yb#h!@<7BhdBs@w^BeE%0EakP$!&L3dY{<Sb78| zoUBb8)Y*^hA25HI8)f|ZDdt5Dk_|~hPtAk5Lo*KADmM3eYd9-o4Archs|5z6hC|q7 zB_+o)5g(i}VW7^m&y*RcV-MO&BWNFcSUWoq&$t92nvoi-lL^HQcEu{$-!-G?EtkK) zPWqQ88nyz3S!Z$;+gpA=V01U&BIA-Img1^kEWWOll^R=s;FQegwUB4yoW)M^a>lEq z4;{=H)EZv!!yher(@zM&#+R>KDIQ#Uo+>M6aF%3aoKJX_RokaLZ@Bh41#U>q5%4p1 z)KpjI3b(5&%eUFa!kYREi=YI9fiO`D<DqJQ(*Clz{h;^9Q5%fZHa}x+LVUGN<X}ti z38#kbS~=e?%2~T-McOU3Pi+4|9_`}4{iOdiCDlu2O__L2jq*QYFH74FN)!v1#5awf z2A}rb0Q(Bc?7Qq={N2x}GNtw#WKu}!Es1Q-4SV4zA<xReCq4>aE-6L63_hk0e7tTy zhmXB?IUv6>ZO`G!ec2&C+5g4fmB7bURsEE<G^Jo7h#-hWSxZ?`p;9PI6vhVIKou%z z5h@@ci_{MTRS0cK1DOsfm9<KNe1Z~XF~}Cdwo{g75R?cg(Si(%a6>B{KcEd1$@l-C zbMM>cO_HH06pcSi-n_e=?VfY)x#!($E-VK;&JFCzvdFoC-)4~yD#+~nw^e|Te1-di zsPeI@x6@_`Iv@cge+hrTr-VqO8w@@*Yp%By65`smo9Fxr88e%OSp3M8e%gFrej<&P ziudWjnzPfK%4W<h3a>e<y!CH|gU_slFcEJ^7#9IKv)yN%$WnFcVijy4*t6EH!C6~z z{2+aSE4m=g`srcT+*l!fQ+g4ALElUG!tWL&6Z<Fgvj+0_#ZrC~F<Nq?>4b*tqtMfw z8HM-v=+inXQFxztr$~6W5RUrreh+=ez^muwIsRtM`Kl;!FXi8rzn3s42?U!j3XMBE zmcNT_h40u3|Mn|%m}VAov&OCAJI(bhk7Z=o-nsKUxct=<JrZljKAQZa=33rzj|5^d zR~NW^0YCoACa;>8u}kM?RlZ`sVMj*dD_&CG)v~z$hbTlns}O_&Q{VmvZ9iUjCLiUg z-Ip8!z6sUDJAi6r)PgmiKutVkh$KC->M>K13;rsB%$QODNqfJqv_|dk3sq}OYFH`c zb4}tOxT1sl6-Ld}0$f&RA_Prrf+x^g+Y=|Betr_sl?)}CujO7k>fE~>iDKouLeA2n zeMUH(UC5a}(gnmh`Jhc=%$P4}Kh#_PdQ|s&!pCv3ljnt&x`aYLAn+ABE>JpNd^9Q1 zG;Yx=qv)AKi0T^Qc>JnLh}dYBbqukB&w%tpcnzNjO-i~Xif5C3((2`B%+FAv>v!yu zte`)D!1@^Bj_d}(fo(Mh;}jFk#zs=pZR`wb>&@~vm1u@d%9hnrx#)!{5|k68Z-$_& zW-xlT9tFnAdg9w`xrIy4x2DF%ctaD-*t{ExC{WqG0H$W)Q`u38+axg@tu*t!S(3F= zd@Y=v^YCnpYTf7T?R1|*`k{CEzw0-fl`MpGU;-4B|4$bw|C<0mEB`M><o{5B8ZZB- zSy28z0U&vePZu`el}9sZrVw#C6*B-OFX|M)rVaCgUo>+7vNS*tqXd`#yvQH8yXQSS z4}AH9y_fm!C1L{zoc|t_{{?q?B#NCsc0Y(xo3CGvMq`}(tQ3x&KYfm09_}LQKlaYw z=Ud(6EvVmyZC@mROTk~&TAu<NH2=Zsw*Y_Bb_PSGVN$IYi>&)4dHSu2Kyt0&@pr-V z%HL}6m(t|(7rk|wWpMta0r`t@f~yBu@_>Hn2Y-L}Ye%AZ{`AV<SzcpD-#+;{*=rI% z9+X*kF#hWDBQZte<ZlY<!<&)y9PJ6{4tmc50fjSZaHhU%m{=dgFR3*bz93o?M62Uh z|35(9D%!M})MLKZ>@-byU3P4mN!ssriN3XJ6KiC~COXZTsL_RmwNA<Bo>P{IP0E-% zkeU=u>&}?J@m(UrgmL@_{ql*nX^N;XtgC-1ACHCg*MQLD95@h#=+T%B(c_c@Ej=#4 z{a5Nf5!*Vv_UM7_8wj9(poP$58ftV+boBVcvmtuifT(aFO?nin@e8JQzV3}AA8Qek zfXr4um#-&1+C)B11h<49Z6Y6~LHU^Zyho2#$j31U2t8WOnU4nPaW-Cq9!yH_?m9M( z9+Oa`%La1srOgVZhn>=Ca~W2RPC_)|fc3zucu65<lDziKCx)?|jQsl-G;sq>kE6h? zLi9NO?;&~|ju0Mb*lMO_g7o+nUVHRF7Dc{%OhApUNlrd)|67C}7s6)<NQg(0r}4gb zlDzhF$cU$ZV&&tn>E}AF5eoSSb5>;qpy7A?4M%~bI1rQ%Ju2+j>0KDpbqSa;W57Yu zNH#s|yEd~rU-vD?o%@_ni4ya<{edXDrEk`1_QNNB{;w~f?60q{sO#wZoNTe{9BRSY zc2ap8Hr<~kO^MgtPAVtLMSlgkbn8_+OX)6as_8g^Zz{mu57*pPo|>BcargxC0UnNU ztbH9vPmeT5LHA(*{AkDBN%FGP9O%E?#J(J1cJW{0id3n&sVVng4zn+Zn|08NW%njt z-(@yX<sO?Z18(BG`s}P_+0wFmYgUiUBomA9DhF?GJYM_@AGuamkIdll|M0lGKE8p+ z3VnPNkK5|wTX-zj$2E8?)yK8?13oRNuUmxOaPc(j>lWaVJBFm~?5<zpX-?guo>_pf z0n0+F{o&7&L2@)Kcy!S?k4Ji1Y||qioAkwHsG*#i$quZxQ%-4(GuX#G7V=mg{VcE= z=e#aV<BP52vgdDSK)<?a_;&kmUh>yrjelR3s#`Rt{lTT=WOl`P^BP14(5^|`g!K#M zeZ|?c|C*(2aPfj4cwBLI$BM;=3yX(u)~Pbe4*<CtL#?yob}5|ma27vkMv!imY`{$G z=^BAI_8CIUSNNr2_~A>R33s(Q>!u_~Z?5~<W+i6VC74rj_BLMs_Bp?fv;+1szaD$0 zxB0cz-@N(tAWj(bXVlXVd5pts`wPmHYjSLHh-)amk4>Lsm@+cIKJ%Ai=hsI_^f&u! zQ1t6R?~zaC_=*QT3hIj=qekzde-8WThv@IPU%cqAKB_p;FZ**?Ue`nPAAUOARZ#Ss zZ-nTNd4Lwy`5P6qCw_iv*4+FgB!!WNQGcMww40lr(ihN4#;kc<egrpSq+El%m{8I6 zOBMRJ{wx2&(|YJ>%mcf>a37x$#CsX@eeOt1QptnRWd^FA&Y|5-%QS_9i-8Vv5gGzY zFQ8%`xWAV~h`@eB{`@`~nuC|ELaBKs)b~H~;U7wv(|{ri0F3!228Q;8X3A1)`B)q% zItN(%Oesph0k1}d%womHN8lZ7jTOw~@cC6N{8J+IPn)d>jw9-(3LDYsFrxvJLu&_l zX3Ad{7V%m0oK_Tgk$C-}`3m3#8|&*{wh6iNv`F(%+%17=^JlbUAcmxRl+WPy??9(3 z@)B0y0mjHr0AGHrj<pZJ-w1Fk<nL&F66O<L4s-wPQcJcPYIAas-!Z@UB*&O`1cOA? z`UleO4z{^d?a)!+!?ErDh{{_jS2JdF`~o*AGgy-XvQG2GMfvNS3J(bH`x*DW#iQ)N zeiX1bd*e31J)CtCS(0s&y!jN`Pogsiu|qrg?&!OZ1$umz9kIug!#zgmRT#bpWU5>E z=DXgu4)>M^Uw~iSx2i?{JbYq1v10f;1N3QAe!;SPOXD1#TbCzRmzb+Mh*Vu$a`})o zaBRl4>rZnb0RfZMQi?Cj?-7~o22)?xio|Yson|VUQ|4}l%++6I%S_o5(s-e3ybwq3 z%^OyV8v<bVo><mBtUg;-eR2lQO=9oOOXh7}Dl9?Vw*Em}12Z+-2;VR9gjcDeKqbH+ zr!aSPok90RQs@E#^(goyC+!2#A#3ojtbsa^^~~+UOL#kaa1h1o#h*aD!ur)aZ?rjv zgytK-5}!!m+AU6F5U=|YfdcoZP~4CZ>+o;I4{lUs%`W6Rf|jmiA!*z;3}8)2tSY-y zt`a~*1_4a&TOGXrUYnPgWpL>6;^5h+Ro1X0{@XP&;QiZ(Le~5hQ?KhHmPij(L!^s0 z_e2+b>vu7nT`Z>?6Bz1o*5mgFsE12scVWagnYb#{R}1TWUdK))t}45C<g&Mi)xR)w zWJXTfhemKLOgECJz@uuD`tF0v=2m*6Rc#_*eT!YainkH4_VFt!{QI#YlTA?(60s~h zOw;+LZ|Q1F)>y=Ll*9!B)h6{Xl=TMHP=V@F;Ap`dDqXdYL08O`jX?DizoLSF11s+C zpc=X?yD4vRP>i*!3t2<+=K$4ZfU5q5Lt{be(!7LK^#-V|>e`Fk3BS_aT8NO{9>JEq zt-K8Tc{rQ{av_UmU31RlY@oE=M;*x6Il2U*O;Uh-@8lmxb61oy`}FfxMPpht!xUxB z6%X4t?TOz3!4h}wRI{mmFkB*IoSeZJTsOFTNzhS;x%wJi0EFk0r+}bY<>RQxeADwb zF<Yp3p|(Q$Ds8GE;7qf)Tx1;aj%Q>R*R_Id%M&ZHVY8|y^V?g0^{Zc1m;HKK^)geD zTvq?Wd&x}G4@!ms*W&;`pi7%`Xrz##X6eF|F)n<tN!vhdl8I(FKQZwWnKo?M>-_8y zI%2b8Ny)PAO>jGzYOx#la9Ru|%}s%fOaWG{&q6?kA>xi7M+}iE1L4%Br}WyiYKVyZ zCbsP+%ii8prkl3iz4x|0d_AKJ!v~ofO4LQBhEf2xP-O}>1eEE8%fb86kOz^rxw&{k zTvK2mG#XNN$yt7*-bnJ*0-b<KAfQJQu^+n>sM~dL-dIxqt=$V!g5C(es)qrp$t*89 z7^6krK*V51R{Cb7)tm~AuV*haq_z7}nF?(%D$}jc(sX4w-c}((t-cD5p`2L??@seS zxW_!R)SPl0j*`PtpqH;S{rDXx2>U9We^TjBA`F0jA^*l)&Uxcp(HHfH*e57}PIKpD zYyE7dF{C4P$(Y9lFm7FNP~0<7X?Amkd!w-H0g)Sk)7$r!{`Wu95l(Q`dx$T)8X)Oe z06u;$-$UZ_jL}cc0hR%~FE|CASYv{>1?TA_<(K=WQ|Xs8hpr|qxF|7l9Hsh_aq$ke z2i*xfu7*s*$S}cYpNY{N<3Rioez?s+fq&QC>;469Th_W19)xw0FuMGscX`FZQw~@* zSpTWvXY9N=oQCeQC5diHMCR()Z5}hAglC!*?5XQ^Oqkw!-)kANG&CN2YLfS;zK1Qy z_fB1wE|oiAL;kgse`!K=!~OC8U2lKV?atftI1Zxd=F1!C;~5?GuMcAYSu4i$FXsV; z&L>GCPsJU$g6#?V7pA?6`31;PeUsU2vY5B~5tSIPL+xFsH#FB%O?9uDPHB#E$~`0% z{l2R507nDeRDw_;depC)fld}^e+xtXX(~Q6T3xe#xpSR%-fSM^LsCvp#Xwo}Bz~*; z<M#iXQVQ#c4~)#EU>+VY08gxJF}K5I2BaA?UkZ57bnqO`wq)XNDLzNrwV8|N%M#9C z|CbApP$@W{&C$8Q{Kq^(TAn$KeHDm@IC(&#OPqYU`+{XY^5a;{N%kpdPoq;I{rcm3 z{Z#|b8k}3Ld<08#1^TZ9K42uK7(ei_q6B`*+W2&SEXABJW-28|sQQ?QIlF&#YMa&) zoOj0v&8sjnulhy?-<wJ^^k<VhXM-g!z67|aj`6R)eOq%MYl^G}^of?6m0p>TUr4`7 z{0OUE99Fsyna+eyQE-IteB3|Dmo^fU1VNMs5&2Vig86)hv01_SvtIR$#Ha)Kf)+9* zeEACKZ_+_+pn2m47gRE`b;kvfd8ZUg{mi;t<r40Tn=vEtGa?U~-zfBU=PyIhe0q`> zZBzAs!$m^E{%`a?RLURn_~Z=PX`5j@eu309yz+I#80*uZ%?Pp;Rj^bBTey?pT-LPt zDG5t&_Ft0Ir)S8*$Ha_#%IpLTwW`KX0<N6%=jq)fJ0RC`Y|m}3w=GB;u7{tTm$x2v z_y_qb`Tc$H*U9IxI(I=cC!aolsPw3$#JxZa2MMXrd0F%Cn*mRO`R?GM{@5P2M&-=s zM-k;9GQJO1&o^f_#h#$+Y%VC1Ki|xX>-{QGc_R+61A6`r7nV4*e#N_V4kd|kTXTpG zWXxNHT5G5ubhn~WQ9!?h=1ZRZ>wKo1Qvrd7jOUTD;<!j?lyf>;h@PTL0_Rh^{>X2i zKj=4M5TvBUWu1Rw0glRhn7;wuy7_~4L4HjK-2l5CPwCiF-Oh=QjIoKFnP3cVvT>Ju zVa1B%@#oDV7T`8d&^m2&nI^{uWXx}*NnNg_?2?I6NxqcDeI*b^H=A0}R7B2P<=%#_ z$nq@NR9J~FBx00^UE7T|gZA$bH6H5qx0!1%)zxplKT?<;+sD`+p+8xf^~hpXn3%$9 zHVLsa-~aI&QvV@dc(RUT4P=yGRiXOyO?1FcGl}g){dbDa9I3R#`5^)Y*8E*kgN{Vb zTyI}0?3~KPfhG@sXi!EV0DuXf$e1UkDz4v<4;xBF8UCH`L~}*#%XAMu$|G;YOY&;q zsazLym{*5cg6LL2C;CrgNPg#!t%DOS_f3@mnrOy|X>;;{@;zR&`ZUH2flni1VP%6M zXgM@Djov!DZs*LkiqlF(hj{|ycHyg73PXokMkw48u+7ZF&a%xfu=8tqRq2pk=eOuH z7$v8IeEm`x#$WVIr%)VuXb=YI?UPQFl~iSn{c&@P`k@{5x#t_n_g&BR0Z@}Z{qG~h zR&b39|0#(hXT#%F2tI-@Z3FhhYOjS}h4M0c$O{Mw61-vljCmX3E0km%W3tS+5X-=J z6aK)Q?5I4ezHB=9mk*38!TrDp?1l3?IX=V?N`$Hz+Xcp+$3i8S#b{Kf)C^qJLRUro zZS9|W3QEarqhcGdZ@rgWexO@t554+&-+|cGpnmkqWxV~#bKn0l+}8~1Q}*AUhQ#7l zNm(8hpbzOk%InJ?&&sO@UmLr^|7LmluB2c0Qm$^yYcz;hM~L$adSdNLeQUWzXL8(q z_j2=e>jgI=H2N=Ar;lkTQx2ggvqWF!%+!ljgU0hS=zqwLQ9=Jh-~)fbLYXV%an5X? z;@A+a)E1KoQvEW}wNyDAC!emp^B@0o6;ajoKQ=xt5&!Z2_twzBBU9zo5?x{$zEQEs z=kJ*_WST-&e0m4{mHzM}YM+UtGi1}0pOD#L|2{oLe+KIR?{&aQfDP97<Sq8T3@g9l z8%P{V=D19Co<}d|P~#P!hw@t0YQc6kAPegUfrZno#>^Yp2qh8Lm(?jAXbp-pt`X*s zg-`vRHPEYN4R#ALXFi2t0-9W8gqq^xkFM!){7`y${t_rK9uc{(qNUFJ@%BCv0yo~C zzoyUY)`=mIYT~y7#F6k|Aynhdk<tNWz7}XdXf8TSm@Ukhi?V!wlHW^7wx5c!!Uy_- z7P0)myu*FSG7KpUaQS_UDucj&e5L4Dr-LQrR|UpU^nnKNTAaJDbb<)qXu$}P1**cH zC#V@sVqf>Q`f~H<A3Mvq6gmJM06j7s%#oETX?sum8r+ua+biXdH-9kqdYi9So;>~s z=7Z=vx`B$K<Dcb!KlN9jKl9j|z0N<<7fZ39XG2Rddww8D|H=ZHE)eJtf2=&It}$!> zk8}bVkIdo0E(9(_OI3=V?V7c`(Dy{e(a+(h^v3<kMbgW)r(ea-s_uKsZurQrN4bLW zX3=Ah#M#@z`bGSch<+izG4}%ej<$zrLsq$a(zIWdp3D4X&l;P*<<aj@fh9KnC-P7G zHo>EXFQ2{4FC&3(!8TN%@LJyq;UHO$P$xy=F{+Pjd|z`>sWlMapF2dt3Y42Tcq95~ zz1MHO&kv8^9=zo?+e8dm>iqKR)Ul<ef**^iUW&KJz4#BY^TX)_J)Cv5kv(nj#~L6i zlCvI?DG?nnDj&YRv-UD#?<zh0=j<KhbK(PVIQq+<*KsR_BjNF^J`$dL_bQRyRnC6p zBKUdqmSs%-{PW>af8-;2-_@2%JY&YWho`a81sMVP1NtyJzoWlB`75BmgXPma?c>kK zV0n@Lk~<GtJs^96rR5ipaQ4NMw?KV4l?Rq=wBW8*5GR-ptyu*J2QG{k<HrOK%aeoG z$v@?=H+vZL@6<<u-KM#RqXBorx>jO<Whc>U8dQR&*~9ZbJ$ViE7rAdkT3YQq8+bW= z=E<w8FVhF-JmciPAsMd5ur!0AL?Fl|DR`S5AO|-)FtL37$o@JC?RS`0#awpCdLD#C z*8{iTajSOTY@XypV87!eV5|0+k(^<MrFOsLTK)*^cPyR_A!n@{q@dt_$1H8vX6Dyo z855LO%2N*O5qO1>{fBt{Rh3uY#f!(hDa(yCoRkt~cE`kvt6y{Gn}Loq@C(SK%`zcC zI9~iuM68@sQiZ+iKxjBVUVNeJ?K!j*J^HgB0N1Fzd-Ep{KlF4qBp7#)U+yW6nE4Xd z9`aBBwGw~eftDL=Y&g}^$N0hZQDJ&V<BysC#2-JsN~jCi5UHR&15G$TAj}$B1hO6G z9mLczB|u@j|L5apVKWZ}u*ugSQ$qGk)*TW9YZb8^Awb~EeTJd#UkQln>#~S@PEvSU z0ZZ0wiAu_9IVZ@2E^AH#bW#$EeWu-UKHvB!8rs-rhZ%!kGR~Ly;Jz?Qo9q6^&wqBZ zF8qSF(hu-w0~)7arWe4cg|TJ9X)7Fp1X{M3d9UL^<}HZK;2-GuWg-?ywCj*&2eDb` zHdc#A#(Y+LOq<;I32JCP7DHdmSMpTW)3U3_WBbHm0zJ9QCx_qKSR<BE5^q-0wgJ#I z=8~Srph>|HS)2}eI{`0nz6^AO#-mKTqKEO&@BR9N=pk1FhXNh(Imse`Ize>Gk5Yy7 ztuJ5ne{_FE@F9K8Eeb`z-jxeK=+8|+(i0#or}p;ObAEqLUiW1^EGVr=VP<-6dCPCP z7!1+Z??297JNwA-A0u{o<5z~{#lk>wFtWa2nx!aKXolGRakf|b>gkIRBhq?mr)!^! zqo$Al`nI1DH@@kS9X#e6@t9}+#TP*;TMI?Eo<I*AC!hh+g$z73)!k>d+fmrxhDK>r zA|`F7R)qx9N8H@BIh-w%iDopx-UyCJw);U*JZFge8>>H+UW{buoJ9T$NAV>tPkw^_ z&ABRLkfXxu9oBdLxr<-L>1XGUYrF_TPY=lYLVylW8X@xel`pRr|2TQ=zBf-^1MOwX zV-zgpB#r_Z-K~Prk(w-%{;1<d|A|hK$baa2Q_AzY&&J7f@BO#4O|Sh2+GC6nw_tH8 z!5u6d-}wc9XpmAOLts-Zf4gmbG-oc=jS(P;&VHmnsD<f?WlfS%AL}DJ{XOOI#x#y+ zF1KP$Hev?WWE&ID*dxcOtBh%4TPQ%AvaLHZq2s}R3^}Q<!}>FHLhS{3i#8HEG3MI) zr56?XCM32qUF`}~@ebbt=Su)^o0*IUq+a6m<!2C~b*C@0g)t=nhKGE726a?zom^Wk zt-j9Pzn`HvdJ33Z4-io*Tl|waS`N)}M)F&*XdUr$x43up!~EIJZE0|0c02vy)AtCx za9>`KS8?;D($gQD@$NjFeKNxLPN)Eo8-0IFK96O{K{hU65~A{mevp5NYq0Mk#VFLe zz>nzbF#M;nu9L5C>W={YH?Q@+94Q2Us6WAl^PO;z(=v%f!jyi5QPhmkTIdeC`1Z)- z1tO5kAYT$5j<GkYkI)zPB%XT2hf<7NsD2)NHfIm_v$uoBoa6!coV^O_JFe#nfA19P z->h9OeB*q}nb+ipx2eD*XZ4#Y($dM(43R%K9xhZiSIXHpH7ybYKBAOCV4m=Gv0b9$ zeQnOX2cWusDilVODm^Zzg{(AB-HSN||4Q~hAqGR1n+23id6igb?vnD_g`(rQCgUNw zb<Jj-R%(|1_lB-;J|)de+C1*P;fDO*;Ut8dO1pKMHV?CeAFP6|ut6BM%^Y|7W=_9^ z=!J2!W+#O=t8xh3w!}GkXqE*a#x!V_lM}x@eK*~wpY@w{@3_<4Draedzv8pQf6zT- zQnRCMu6TdU@g0UwnotC?Vi~yGr>UQXcIKfUIp-P3P?BK?WZyW0>e;S4MFDEUjrBx3 z&9xZQ?HhNRBq4D7#%c4l(_+?BRe&E#mbRFG0mEH9`$Y^AVCOkHmyA?CXG}MX2<K8+ z@iDT`f3R17>f#>$#Wr3*T)Xu;6;}8Yf78vxKaf=S_e)p@?YR$H6%!v3`>p;Zss$Dm zPtlCXoQczCQzHCG<9qXRXf5j1PIKunp=77v#goV>mT5BsG6Qhh@T1e*w4Lw(HetCr z^oJ21bXp#CcHI-8zx`sS(;SQbefl54(cD6&!#w$&Jo<b0Yjj(aiNBanQ$%#|@T#2u z#wm>HRI{);HKUYdG|wv@5SmKPAITR$B`74R&}x=Q1>BsD1FV33CzzDRf%qAGXWTkD zRXRDj`Oa!^4&S-de3q5Tak@cF&2H7!7?VRoEVx}pwYt32-0jNLR`6xHxzWBfUl)KA zn8Z*(2ar?z3Ivp_bIk-w_Q!rp&Ch=$B88!r<JM(7&v|$@*phEw%%ooOv7G**YT9X* zEQw?NL+9^d@Z}sNe?45`%a2C#Ts+NcfVg-B5aIl>GRl1NUw<S2{7yp>yF;hYgs}!$ zRiI}-o;AfA-(O!*C?Lm3+-pxTg%?ESS{AO#rTkIPRHO!OnWMwB-Am}&SAIh_uH=I* zbIq~Ob8eHVX~<Is42N{^FZs~{m>@ws704#jOf2_vYY1_hp4W%V71%-~8^&`k2JqJ3 zKK-Kpx5Nyrw|BT#A0v>?_{V%x#fNJ|XP?65w-6WcD_nX0crKbc4QHyL<1C#4Fvl34 z$DoSCi(mTk02tu==jW3I$1ly>|ML6=k)=3&<h3`cEa1sof9At)<;d+9iFCx!%UF7f z%i+o$K5^?Auy&-~H3vP2EO*bt{PXZZ4V>*4<NwTn20;PVxGJ9=lVyoqm%+I(*|O1z zR{ZV2-{vxS-lMtdl=HLOAhOLEwFOFO0dD13DEE7bz=eYiGeZ7YtUrW3GNofay*>D= zxaS{VF1muIrv$?r$UO)Hbn%9>fZOe&nPS_!`_-9cf+^4GgLGGrAdTxg90?X!63oWm zblK<z<Yhn*?OHokGaDpmEZbdQC$nWA=lY`A;Ec2qG-w6U01*Gd)1LEiGhPSv!wije z!zU6p<NyNzmn%d7Ik{TXfxmp$iNAoe2J;zMak>M~WKFAGX@DjDunlsa3C)jqQ~COG z<AP_-swwm$lZ!JFrC8j-KYH&<THZiMhX_ViCqNN$U&3x6SOS77Zd(f|gfiYiQ-iBy zKm^*_o5W9Tkp5s*tCLNq3xlafo0QjJLDC+C11=<+rb`77ziGTYRpC)Df=MmbH*%kd znMs3buP#YmJw@tXt-VXnlT&i+`s9@M*i<*Wy6K)-tkxu_tWQprPfmU!VA&VL<q%;? zHf$@s5l=ak9B*giu~gqS;;~#F<tXy%ls%aIYAu&z$IVv+Iv5YdJ=wH7TO_Zpl!nC4 zkjAo(ZOF-^oI}&8j|(wIRvs5?y?eCI)mq-fGV^6|87%u6x>-GWHJ8^wREBH1nlJ75 zAq~RcIS-TRvGdjYeg&Qo=Y2l!F*$_ym>e{Gh@`$jGvUW&vtfaNH-n^L^G8;ajT}f1 zZz)3j6q{D9<}E338#(#&Ws2BxNx<g>rqP|6!>sIv62Uz{oT$3wMvsW60x>TXAr_sB z@jr<K)^+gGg{9^t{F+y@w6PS@nKQ%H=jt&0E~@J;VGWHukmIEpa#ETsC3u1t6lBz& zsRVpLxz<1zQJ=FZ{=wH+!BOcUgcWvWUOX2f#_7Z55Kv?42i$MNPk%vcyWI8GpHtj; zsN4ZMblP##_)9y|>iB|A@LbbYDBh^(<l!^D=>F>kPgpDed)@??js-El*a;_aPUp@R z&NIJhO;6nZi#hFW3NWn<So2N!LFY?865;Vw`Rnm=z}szXW^s4){@j3lL$@F<{?(^B zL@rkTz4~ytC7>Z6@_F$Nv<dS+%zN!0b_n$f`&-Um8AZvD_;(y%=N(9Zc_#5y91B)1 zDSWc5puxqPDel#_L3y(91Z0CU5riuWzmDg|5{nL|3EDCKK>eyp(i`kSJFrMsgd{4n z_V(9Fo-<RBwnP?!&Yg6QF;yiVhzA$;#mY$n|5!l2h$FB-2uuvh#+%KI0av;BgYZ|z z<0nuuLdc)>%Lz}rKmf5zVeZ7{<5dX!!S&Bp9v|}kAH^4VaJ>RFWf1}=fg(BKi{)i= z4^)(Ke+9GIWTlYhtV9Apxuo#TEH@XAk_B=nmuy>};TFhuQ`LA_zjvceKnwH7`E$<S zAEB_8$N2ju)hQjK%#&A#Yd{`nxOb2d;3Rx(Hc#N>8XE0r3`@U^799?nPR031IC7)w z21UBr%#>zau!6y(Ze|~{dKFqBj+Nn#p}a~gFe~K*Vz_mT)q{o%A1CV;ntgE*2P!Ru zJm?r-L-#J0)eJ4%W=e8y$CQ!fEwOzVie=&Wf!o-f>1Mr9EUVRAHkEsfo;*zn<4>iF zi`M*@M~Auc4Z;IOJ^{yPxVTfBxsa)Z;`<<;@avJn(pIok$WnuVnSgBJMr(~db%f$h z8D5vcc*Kbq!^J&1%vU+0i+kXl(PI$z2<nfV${%EqH#Uj9a>8m%C$gR__wXZcK~lFK zhg{^#x6?QN{HOHH1_Ofg4{Tu^cz+{%&wdz+T}I`V^J^o47y9Bpafql$g<b?WhF%sw z>K9JRFoL1_{X6e_StHNn!I<v6Z%Q<dFuZNvDEwhof}Hn#|I6=D@Egsae&8M8hFIZK zcztSn0uke`r`gVCf_S^<ccHvX6&*C*RF0K@-1m_aDa2@;$fB=1&`o=y8NER*ChTe7 z=it}+pZ2}=PjGJNy>dvj9Qd7FhJ&i_7@5I$<9EndIuDxVY8QM+eusCK^_+)i0|JRS zr_C#0h0N#6XaDH^)k`Dv#&MUV_d&@Jy}$C3rT4eb4buB$zHU!+qfJRy2U|ud{zcU2 zdWa=-OJ2Gpmg3JQJc^^Y7WS4;^Y7yA`qTV>uN9g@i!Q8wDqB5@!A|@mXC1X=tB@-& zC(I#g&zxf8`+@mS=NM<-Cvx*j@!#&o(s?!Vvr+bRJpEa@;_UJjb-85SsugGFQn;~N zj>7!-S(}yEGbAg6_Q%<;7<(J5kDPzu>cgKgcl|}?BupxZ{|o-$);etI9?Frdxl?P< zoaM~TTEno0&F2S5R-Xp&eP8hm+urMM&Z;zli2vk2S@ZJYn19O?&*S_gEHk`dB$a8c z!PP=I5+~6BX-eEIb_1t);cC^fX<n|{n7F)bF3(VD9l{i%#>D)xxw|XE3lIiPCgz&Y zz_Q^+W!rRas-_W#r(jp%#x!crOUy?X^AeYP%ONiMaGl7QL?=&%xcEELS#1u%Zrl@% zjdL2%iS^FVa;-+wdn`mnMv(HgvrvAnpsYJ78CbNgCu9ZSzmTerv+6x8;VHWFe;Dq# z)x39<-!bl^W9{uC9ZSo(EIC_Y58V6qEkNoHRzi$OFPG)TU62zxYW8YV=9<WDslYrb z*SDFS*ivqmQ@m35oZdsBTFj_}UOAV#`UiL(@*r4bZkFoD<F^vJfsbHQ*D<gy*sak^ z+C=moy_h{8=T|)jk9xu{*iz59FY5uKDi*NqWIUK3OS>svyQ}%OTJKCvHSs;_j%LzH zi~0GSFd<vaJxBV4Y%x<WiYH`?nZS~r0RsdQCmcNQpK!3i<&!K#04<FgqLdfd{92f# z>dD@Ip!yf^EnK`6^Vs({-F#=c>?h~NZ@u>P6U;V_B>Z?!=Cf_!=^L-UNx}Jr&r@)` zb+O-TdhNw8;V|kyVemf2!_A|;jyLMp@B#DSslYh&Dd|(-uVe+~Ts|Te^8nyW<gVM0 zi~3IruWL{LtsV<S9Vg#DI(i4|pR3&$)~|p~;yQ$l^TYqfn2H}3BMbF}X@vYV%O7~N zfO{UDDVt90@dx-u`eWGSD22Hq-`~owuWo<0ndXrtC{Ls(;0>(5_|25N_cBZS=JI0+ zwlQs!B!nj=f{#)<=uhYK=NugOhRQbB5*)uW55L~%^+g>V^pdk-z_2KPr^NKvW}f)f z+dcD;dx8slRDEH;NqLb0Qh1)4!R+ra+X$Rku<*wXUje3k__n;QYqK}*<jh$tNg+P# zww&C4$DCEIoN@3!H7vdWk4g<$4ay34p&XU+9K;CXvCu4mdI6Q2t+Grs;|Fc=LUV<d z%yuQSQIZBg$bdoq!LxV2-P71G3rv;rdGhEPqm=}MJIqt>!7NHjaNqWG&kPCz{o;`e zJY9z&b?w!vUv~ao&}g9Mw#~SJl;5b>X4cdYYB2(~Tnz&KBrZIg5R*JmAUx4^F|UD- z9)x36H8qM*&AQx<qc#e_IVX`@*(N&^#XQhR$0A<0qjUMy#h7c}p)!r;Hnahc7C_~a zC!%sY%-_EZKR76V6~6q-`Y&gmqD|FcM7Icu2)L8)=^jVv3=I)7*m&BD(BdFY76iab z64BBF?t0tD_ZNz9&ip~Efs0bD(`*^6Ca$%LW-DrRV7Rs=6=-W7s};7jf?#dtJ#14u zVsx1F`S=xM-8;-LSfbysi0UDCjH$wikboBYaCf68c{vR)yY>Z(EYj13WEpd7!q0bh z`jEO8Cz~O{yhilBf+EVAF{TCcW8#l49^%3fP+`=&&|yJ-KpzBWjOh4IBS#M~8Ddv$ z1dmhVo77!o6_;xoau4eRl#7aV^E2>$2=LFD^LO;}lfY|eHyhjlP=WYqPV{4aohd21 zj3)<KZ25b>P@P?U`ZuI0Rh+~>P1gzvex!PnSN)%j@4D(ZkPl%ysZK1ECQjZcpIKEV zG$kNAj#^2#2>&2ywQH@tb-FdW{-(S(yFEHbTIvv-kE>JtO6{!G+|LJa?<5aJPP8}W zt>mJ#nM;2u1EWL6W!lV8swmc)F9n$Vp^Ws5#$!6oIod8`PB<(w|H=UfZ8`GK6!(b# zL3xmJ{Oyo$&bE3`z6-(j#_*X}M86Bctim}$RkvE@fQ~!NN%$oXj|wV0t>z{3oaY|f z7@@k?21immdj}f%FU?u5mp@=xfbNht^d;aDmNz#)g8srI-$Z?x8gc$b1@KY}0UF>L z7g*n40ZN#IPO!uD9zP}hAiD4e<LT#>qaMC@ZD5Wc24X@Y{4WbwAb#i7@2kH8<%*B> z&CL1m;dHiWHfMQzg6FM4W@_Jr@_55A0P2(nCLP7^=y?oKyZD$-pY_lmnA$n>z`G(h z(6@>=bV!W<K>T}?$KL4!UPSbbSN}izd&!ZcDJRA4D(&DUr9JAOiL3^`hmQV^n?F|m zp%?P|3+Zz)aPYagJ<*@<2VcWS)y@EU{&pq!kBN^d2}4fsIF*~~R-4H;i5BUE-ouO9 z)hhp*F$Ga_`g#T$E!6hSUVDnJ+VU3FxjSlSE#}L7&~Nq38Qxr=(|Mtk$bMt1DZ5z) zN5|B=ttM41dbh)TQVJ5yz+(odk18x1%j_^~bsWV14vvlgDgAO{->4R70(;jtRY1zG zk9}j2>sh~(xs`!Ve)+PfPKKt2PQLBuzADI=KjIhUC1b`3n)<C?Q{4*lRk+qpAyoMo zAt3Xt)5{$WO};cwdp#kNf-bY>or8d@<40lraRBvrpZ*7ELieszH=U~RH?Vv|<`27| zCJBreS+BYES3!R#QXh8Cl+6}B&2?d^I5--2QK@u`N2|XvdO&{z-$;MGj}LxE>La($ z?DLK|g*kH`F;t&6XOj8@QvfuO-J37*jV3B&&5vMSg>}k5nHp&!Sl92xt;C+c6;Sc& zH-l5)c9Y0z+Ui3lg!}`m9}r9IMV}zKC^bYjaF@L>6yK+W=uzoSLUpPEJn&^wX^N+T z==TI!bHcrlN4~xK1_~yYLw1E3weN-LJ1K|$^5m)9AD?y_cIaFcn(}ykruAvhS8{VN zKmHNDZxH<(vjapP^uwL7Ya0`5O!hh~cWc(*0$OBY2uPlM=EHL`SBM4u6Ca*<{{r;L z_fN~Gi&&_CdNPs+WD+SLq5U4G?}=}UGLna{jPLH3f!AO@5h7on|5XWiI^*>Bg#rf3 zoc>;MvA~tZn3zIt{szZOVK^+h0@R7xGYkJf!1wG4LNgz}?SDC7@W~vfPsZ3$@AkAH z{SJ!4_ZWA*^6a0`&l^wVJw(Cid<xfJ5BL^+D?+~&cMk}BdGn2HE?JN2oQcSDLHfOW zd<4Ep55&S39S>8Qc{w?Arbox%dRgelTNdfGDub<ms|qGc?}G3hABAs1Iu<_aGjBZJ zzKHv#J;?IsM-}U<JcxgmcKR3ZGuWTmx?MI6`8s39V{WVQpeo*jMR}*Yik2?ZR-NW! z<3jdA_qXEb|Fj7GA6s4!zmWV&NTd(_7+mkY&-wN2HzV-f`iK6(*LyrVJij;}-zR(r zMd4fd^hO2WqHjd#mwI-ig74kqqVT=EQNee76uy<KHY)gjcWi`yw<5K5pzTlJ^CN#g zy@X7XzWk@4e!zZbz@v!jXYHT<P`tn8m#_Gt8#m7$&=i<ky>a5px2Ge8c+0*ahbjzD zU;cN<e}iXMz<(2XE&x34f;#`MyzqFgKT9uz=(SxQYkbgUsKU18#b+5qyyf4-39A!1 z7G&<{1U1HK=VEh{(qfjEV5yME>Sj<+mn7gxWH(SlZV{Z92z~1t@(-PTFwbzy&VI`j z&oBDNIn>7*67a1J!&gxdKAb*{@3(otBTxy$@9vwx9TOlo11<Udb@bc6NcbjFmVNqd zaQLp3b0PFZ<^Is`+Aw^D`K#F{-MT4~M?sg41W9mde)0TW%QLx(;P0y+Fnq@r3E%!b zA^tL3Ay2+!e!#IS(Yw24$0Cn{?ka0{{Wir={uiCkm5~2De@sKUIkQlf;4IfP&us~h zx1=c8Ux%*m(9F7)uD|O3p(h^@WX<o}kai|oFb_RU)(*1=$^nfH1z3I4D?S;9O*DH7 z%S@yBoa=$l=|$o5tMS-y>II(z_a}74;M2`71O^bF#-i|f?d!ec^HZe%6o=351B_2g zQTY4{AAt78pLehYSR6jbbq_3mGDYDt?@FxJdXcxEvbUn-t#R$Z;xoQ%NYI=WQg>D# z{PYjqz4GT*PcbMPnLp*865{fk{^LD+Z|0qH0zV}ZAIPu&W7IFke>|<o`Ue+Tf2$(v zKektI@WcP<7LOvNs}X{wew@pusvn&JiQ11|+wZxa?O)k*{l@>zdbYo4J=>4(yFKj{ z7(jyaFJiTn(W78!8<({XS+fi&QLD=ub`isin9HVbVg_mgQqH{nhBqAzqH9cGo|jnd zd~gI!VWDIA<&S4>*<2=|I=?@aAI#gA@6F=Re<8d%&tJZl5GXjt%#$B%FBf$9H)VfO zq0gCWY{+;CMkDbS*MSe|5-*Y7_Yu+oyv?bg2EOy+>6_!wgn3~-0e_#E#rlInyPM!s z_w)Q4-~!Y^Z;2O5a!BEPm%RN6e1?O@$Y=mxE*b?w^5HFc>y%Kh^mqHAz<eKmT*EDR zB>YJH$9H@~`pJE-?6ELsJ|W-bEW_8d^7U)I*}Ux1W059<Y%qDzw8aVhb@H$|*m~)K zc%g06xHrFn>nKKJY1uVK>H>yo_yt}fK}HrdqKrjnCJa*Io5p=*62B%GehB_REUU{9 zSTvtU2d^>jl<YfDJ8+9Tr71>(0!dYxlQ0*$mbkimYhCzmb)8uK1?qO9?m?`3g{%8H zt&7dJx(?LUgDa%p4xDFVwr1t;xXN2=<qRrk!j&_u{Q4MF9`7obYUMO4r%_qX@l=%4 zbg)eeYj5UizXNPRpf=QQLv1~~hHx<7i<HO?vy>>=PinTJW-Ds8sr+{@nT7{*E{-At zy;{wtyFt6@Nj|OSg<a)GGlZxGg5PW|J7%q)oOZhQ&}yF4Y71?(h2}fKY948t#`RS5 zz7Ztxf&9=b`h7JMs82zI>eOQSmKxHQAX0pPA>MaMq!<)fLUm#uy$lY~D2LP}CDsBU zwE#$+CLl@Q`js}mY~u&!N%>kEk>fL$&^=$Qh4=6iZnHbOaPi~W=CxM%_Z93$cOB(+ zU`<kIPv-Y5znaH0UCQ%zC}Jaou$tyrFL~{NWKT&51kgg>PXK5P%gjhqx(kVFQ{na1 zOFPS};~2PTl9c!ArhE9yj7bHu0e>&pX_E)F3G>kXCj4c(=LMPsh=1`!5dX1#JmND2 z(l#}xU>L5anj{Gx<myBr$aT<SA(vE5-NTpWZLrUhODdbTU!#sfZ6>3iu3ZUJ4E3~n z64kqo*+gh(S-NH(SUO%`<xHnYbOY8Uh<M4#0w5>CvLv=8=ObtUa<Yn<rG%(tb^Gd6 zeYHDZH7%AB{qWx01_k2j`X4DdrI!P=Nkym$f0-W!n*_+Y@0UT&3-|WODTg)aXy)f= z17PG8#Q7T87#Bdy{V3`>T7Y#Dy%ygEbseDck~7~>^tWY|dO64d=zr2l(*=OpEJp)$ z&no7BJ}076E<Nh2qxDrOUo|b3lBRq3%N)F@+n>I7EBeyQp4y}&)P%pxX2B)_^!G~u z{kpw8^xIULIGXt+QAjP8S3v)KA(CkLZH_^!iGHhepjB4%!eV&^QN-7u=388PDGKJ> z0Ho_v1dw7-M>;HN1mW;df^=OyJprT6Bm{eIzgY=V?|RbsHw4t*3;(`>f0y9jUHJC` z{*6K$A&Y;fARKZRLQ1~@EV5pA@k@M<UO#i&9(yX0-WWt%)FnYDWRRw+wiVk18y(I^ zRev3D%K5m?_wnP8zJJ9aM6xEU`cTd($eC+}G0ftH#fHZVw<8Pf+i4C#f$I$JMwyrI z=8rdl1gh`uDf1mA3>(ewtnmChZ+tNs;$U+)iSN3h;AMyGz2v${RyxfnbJxQDoOiyA zx{z*&CSeV1_I(#_UUEN;hna(oI9Mv!er4O)!zeh^jx&VO9K`!($ehE{r0Q9w?3^gI zRbATeg_8J+S=#n=DD?i>GqW+E%MT3G-}9lM%O}Yg%+^7I#33>OcmH`((1YeZXnaSM z5dC}Uk9JzJf7qWIZNESCUu1u0(lK)Vi4Vm{i-qqqC@iwS>-hbS>u)}P1o}G?zl-c| zB|KxVzrXWGpuZdNyU6~gAz#Vs?@0a#^!G9RF0#Lsn7dwof9H=te>dQFk^Nl<hs*14 zK7R!II}*Q(?C(rConC(@@JFD(&)|2F{oM-p(d+L9{s{DU0)7|S-ve6(`n!Wa0{wjt zzl-e;(OVC`JNP5mAAT3v--?Pre}CkUK!5Y`JElKxtqZ@Ad7yqmnCc5_4+87Eije+< zp2rLn-DyVe;Ky;GH*Nga*U#&qg!1>hBK^r4ENj0{qb?fn^}jvZI}~jHdHOe)->N}w zAHH>;j)N~UzT#5N%eHCiBIDWnqCMp<-=hWUMA!GNL!{8RSJr;?i=O|2ArJJu(b4nH zSon&gr;|V76+ZR02qV}qZzQtu%I<v>AF5h=4x&Zr>)qeYwFvp88+`u$UNQ8(bi3Z^ zz4Akr-<nwX){EZoH$dtMLjoiY`!g=zxe$H(DldlqTYPHcrvFph#=*C7(|;iObM7{A z`1|_(!=4`p#KN~;{Gmh6z-MrVgw_Ln(RV|a7c;+pyY<G+zge;H{b%#9FZn2jzt3;A zar5`mSoqe9zYGdv9d1r7+q(odtn9jF6&dSsx%~+C5C61)f6y2GKkV{i`2UZOZ`}N^ zjfJl`{wqH`|C@Zp`oNece*0c9`z-u@&qtX5eaT-j^6^+%@A5H$f!4h5Nh18&fa|k^ zW8sU8U)=i4laGV92;m-)50xjzERUUl&6s-m2ut^1zswi95h$nUU$e!(gMt>npZL+$ zH+{)lU**Nf;}^p`$y?uk*#6`#n}=k^!Z$GTc+@F9K{1NR<A1OG45WPBxLF+k{PoHM z+{FA4_1)32@C}T7-8v$Kdqlo`efR1~{FX7G@BYFU0e#1O??4bLU*A=E@j&X&``BEs zHO!e`Nnbox{lT&6>I43SE5OPcCNPS^s;kbDs#LSxrtEC_k;RXkc~VO{1r9lscWS5E z0qxMiyu>pOoGJ+jMdKAdJQ`C1t_&l}o(+0LIt9<{*4u&bduoT|cLe&3tna3H`1$>@ zeTR{FrhaFfL#JuH#CPLFPcI7MNUeC;YW}1z+wcQJ;x<kmN#9iSs^q)6p{K;hw}=nA zM?QQKcZTpJUz`$-Eiq$8flS_p?ld7QHqAIT&k=7@BH~+eY!}Vu4}3k2!8^E{GXu5R z)TaEDbXDMmO9aT7IjqihGx5;H?@XB&6iE01=_CHN(3iY4<}iZdj(L=Xdp{nh^IPRl z<Fn9pz~#^r<MpAnC$2k?D9Z1OkF<Z^m%iK3<;B?Rsl!7$CC^?z!2P)oQJ<E@!bkZC z$lLq$AGaSG!o8qAZKv!9_36EQ@&5Ix?1wvjI#2p4q)#PH1Y7hNt=k}zm~&9|>4W+M zsz<Wx@Dloz2}OPDQ@j6D@H_$c{Sn7}K)|yi;N=5Wh3T*BhhFvZUFgRtMJSqxJ}&p> z`y|?LU(ax_KW2ZxuYX;?>vxlea>O8Zfh|H#-?2X_HxoY3wL<j#$0;%RZXEXFR^U?D zUi_1o(lk=<XZa&wFPibY7klvntFv7v9*VXXCv)BD^ATHnL3^R}cKNu>4ZRYB^e3M* zXkT`GI^Mo`^2`0t@#b_Qf=~Qr^RKWrVsE_pP^uRo$XUd5QQPKMI9<cM3W*)(Lb2ll z@~QGP#v9bf-;Ia6+*Q0I@ObcJ{*5Z!9&J^A`?jZczQCUARdk{A-3dg@d{q6)IYa(n zC)^P)58n`du-_biUl+!P2eUo<VPYO|!*PdjU_jKo`KIzg{j-t@Rbbvu(k_uxe}<l) zG-A>2heq!6we<Dqv!U(ne|!JM_!}$V9qHKtD1|(K<4mR~<;g=ujQ-s)`2;_Sg)cJx z`}8-ie>;SGL4V_!GrPIoqS4Qp-}8t18U`n@28rkA%T;;w;hZ^N=SoJ}pTQq;n_%2} zZP5&GsBW`Vf2e<PvHs|kvE6#@V06~Ee-YGQx`c76!`WLOUVr_CVS8E69UVYD-hU8% z+oye>w#P@yzEAspAj36pJ@`+Q`u3ea0`|R+_23JvF7_P{McenARK`Gb(ccmK9+@vT zo{wy=u=slC&H446y?N??-|J~yHa6|P%|WJNNf*+m=)s5=N2??`wV!&t2j|!azsV6` zLiQWBM`TODg<Tk2Z-)Ib(qHYf^*3Vpx#7xtvmctv>U4vu#QSI?G}wax%7bSAe<5LC zViHcj`2NF+SbO4^U&j>IJbUApPm5ju`sLd*#k809EBYwEjwz+Rw4a7(PJa3HpuS(i zPrJ;;-=s5zIe}vn?}zhUVwx}GcMNd;)sz^sntkcI6CV{Z_f(J4Mr;X3X@49?a&S37 zBg0NiX6?w5E*!7HUm5eYBi8oF)plh|5=-m5KUda(uS9e<HjUeA7o@>g!BrFYtZOVw z>>+pd+N2KiLw3iEZ_ePdCACY<6W?$R@Yah|Wy~!Ystd7nYO`*|?q*a48K%ntd97xL zRU>iT(&1kIv(JwevGnrGuOr%d^q!JW&(Cv2)f$vKW4?V2$mueR@4i-kFm9)*?B}j| z*N@xD0-vh&4|vN%ES@GN$P|BlC(vnIIqo6RwzLvhn=>%uP}<g*cnWNI%51qQzkf)i zm*Vpge2<}}X`KI!(#Os3glp~S>NhAcbu7lo3{B&n;?M8t&s6Qxb6#Pvz#P41q^{vk z0U%vRS(2jq)2x1|R#yst={TXV1}vlc(Wl=urUd8F&oAE|;uBx4`r`uL!v%<W^zIX^ z>#q^94hha*tv{*X^~L_16@86=5-n!Cxe~@GJa$x`?D)3+P2Uwu>+Bt1jn>!k*VWnn z&(putI8JZ$0-FFw+`4AU=e_g8efo|?JS@Mz3X$LXx^8@0qvxE%4V;3mz0kmp90x)u z=c|SXgnE!KKoHL7BPyaMzfj~?nxs|xST3+;vmno3U)M&l!BsE4exKpP50Q(3-!EVH zXA#2)eK#zAuT~buZ+pdWlYzqT0$v=HCl4DIzY)FQH{m|v-_U`=Z~JFHc>H$Tr!fDf z-7EMF8z}r%d<ghW+`BM-7u+NG4Ie1{9_akw`FGl0h4H)YZozNU0mJXFA3T1S?pYYW z2ksL5Mhp~wEB;mpKe1=96IpZqDmX9npYbi@1=PnOweK5btNt@%2!3Ea6^M7CKVx>& z{<t-YbEh9;=lH&iF$>(zDJLg|`pk<Ty8h&RFzkskHh86czwOqR(fH(s)tArgQJ7z& zcu`1wcj-X!>pC8H^8wp~wWAB;H|9>kZ{$GXx9-_E{M6oi@&6IkLubOt#uEMHO7o2_ z3XqEmLs(+urBM5_C6#70cOLp`U)9*%n0OD8)`OMEd!`m`uoJF~h#L<fW%;bL?p^Z} z)YVhx;H2c`57Ez;^Dcl)s;qkG4^2;p?@a~$Tk#i{%*On?zZL&6KMuiNz~5Se<zmVG zUt#@k_p3fv5n6w2FZC<zdAp5?wL&^51oKt!0ggI6!Bp!44p@N~o<GUV4NmbT6)YNu zqDDE>q-@Ef$wpR}hVs-{v!-lG&02kp)#DoVEJOZtaC})Et~L0U&w7fH{FGqbMEAU! zwR(BvY}60=r}jK*o?pFnps##+0&}HqqB~XdCO0o)<3p??SEmbyv#E)t$;2vdjqJ|O zdHhDrn>*FyMpc*MV(V05m14=!BJk5!_s6UMSI<t;gewXM|Ay6XYj^2o{@*V1f3ty_ z|6~3hH~%**e%thd-=y0Fzfl8)-*x|p!;kt&*N+#xjB?-nL1pC2gT~9X{$u^BzhUY3 z%ua>nV-yZlh5g%npy+qOYrWHN-LcVicRu~{_xq-U{>^&kRtu+_9Q_o&?@1;t(zx#D z0~WbY;;*iKd6U!2@)oDiATndl7tLw!9LIf6*S;)Kl}>Y!s?-)tbw;La#4F?Odpc3u zWz6^fIx>9Un!ny%iQt`@ouED>e{=5qCwNoF?90AnMP3m9>Qt2#uRQ(b%i}Z{gy?vd ze$}aJ)WiO5dsR8mr%ubMxaRd&3HUmdz8xNYv6Um2`fdAJwq;TrW9}pH2cF@?Qe5p_ zo!X`q@h_C;T~*g<KHCCG;Em{V6F~v{hq%$UW&{TipDE9tnh9Q6VS4iXFJ8v7k08mz zz#N3QoSU{4oW#3qbrJ+onn(O!(8&rF?LCdaVQeNa<@3kwhk5=^arI3!Uj<`>FH!td z$ORtR>oDe@U64~jMUEP~gnKCFouhF{&6#z%@#0FDF~|7V|HQ>p<Ki{Mz3qyfkKq4@ ziG)Psg_IA`XZWl4m7P3Q?#4kT%JAF)(YtXFMg==&06ZIgLiG6x5|kO4Z%epT?<>0< zGf%6CkhmFV3f@<?$n~-VX~8h=i+{#kjKZ7G&!dO*%}>&r@;K3}8<xi)zn8s^@%xYu z^k-HupDAxWpz!shoOCzs8t2WKU2|^GSovjtZyCRe&wuJ4@lWyBm=WwxayHhQbv$dA zOFJTdhz?}TpFa(#wTA9JT*Vijy6T<YdGf96L5z<@079b}F6Z(;xJr<9rp!-ofG|G= z_Q3sGu0Q2RjySpd<(|c!h=_&FZ^4qc@cbpc;^u>!-vd#;y*CL&2xytAKTUHST7Od> zlrDwg`EM?#{5t*P?iWsE+pD;N?Bp`2Kl`Gm*Pr7*<fQ-Y0ZT+*`}27ewOir&E_gHz zU%X#PWtvBD%#%!uFVhuKwGxCUJbx!@ZDa1}_9yc3&-<#>26~?V)S4bje{{X#<U6R( zddmk3*T;EsN_03UVf{D|^QEx-i~e%_!q`Fj1nBR<_Fq{}`EvJf=gjv4#0cq|usj`$ zm@ESU+ps#EQ-o30ny=x9m}YCj69&@__JPuE<!jb9y~`KnVGO=aiOz>Pt0bU6wN4Ri z!oA2%<K7wT4&B=PHPPWXUzD*_u|kceo^~`<0{byr?MTB+HC8xpU5fPZF4RsXW+Oy1 z=V6Ya+CN|Z6@QU`u}Rz!&Y8=lBRx;_XtmqGG;aRHw_h4)FYp$yXCeC)7{6>7an$jj zdLQG@3ba3r&&7_f$A7^dFE>xUkM>Ig?dvrUqbT}a&fE-(|IwPKQB?a`%+0Xv57Ru2 zqS`;t+zs3QCe7n0s{M)F%(v}#;&YMo?}74j?H}TEk?oi2@m|8edfnGA3jRZ}OmyQ9 z<#WODRo@2f$4*<KKAf9T{2Q@<`Tkpe`+YrC6*u2}{Z4->u7ALSsjBu!d<9wShV4@j z-hmv??RQXzSo;OK`}SvJgXcdD-v2gy2JwxaH%@yTS|5F+=U-p^-O%L&sjtqA(bogH zo>(yzyNeNfv!UtpVfX)0;?K$_{`>gTmwbGb_&4GI2KlFcu<y_PC-L`!|B)4aB%ac{ zJ?#ts|Mv2MoZq-1C2zemkoMEAS0eoP*IOI3-0la|&n!irGZw5^eR6wXW~uqamt-3Y zU~xH^x8E=*pCV%g)|=}){{~WiH@N?ITHN=4gYvN<<)bh8ipozk{^J6_+z*U9&)n&^ zLi-7554{kz#~Mu5^90bZe$%Vpr%N2muOEd+@d>tv62i9RnYr=zGe6IKa>5#WkB9Wc zI9GiMH}PD4m#;4i#HT{=+VQK~(KmEndld&M$<G%XxcyQezFzgYr;p2_k0oCZA+74v z`Q_EAV@u5fe!8!FQ{nyD;`wFa@y5&7{|EJ||7T#mzfkj4n(^qf4&S-qcgqr3%@Q+< zxvDAL()0^HF!vFOH)o(kw>0=o+~ZPWPk=h{IjN71d2ws2nU%&y1Z$lt1&L;0Kf})p z!be=clj4cmE^WSk4{{L-+bhY3CP4v4@B7nL63=k;lXaP~X~g7L?<+YM_`GlUh1-TU z5K$eO7|6MJ7wLI+!v^2@edc*VC}SD~O}UO15U()bf5_h~tnx9+CKJzgNp2+)HC!?V zUz(j=Pd{&$&6%t@<8I*U;;YoRJ`*r+z4`a&KcIeO{?)IV9<DF>EiI%Apv$1FRr7Da zJG^W)rv`YIF`1WuRVYKtaw21HXAw{Mdi*YaQ0RS+tnyZD{MXhu*XmvjoRNHdEv~{( zCA_C1roa1^-q+*wrQ>Jc{3ktgp?tC4<z=w`z|yBOM1SVSk!SkNU7`~kp-jVu3|98) zpAPbyaoY9Qhu&P^;-JQ)MoLb%Z_l0mar3oMenN2mTY0eyjCgxCSfA%+#qlp+pY~2q z&L_1G)R!<;PQQ21P?#5g>zgA?DQNJHkoEZslg{yhlX>fQHL!8~f^1+t6u;i^?Gt^< zwc1_IoN%QkKG?+3oVorA41|v*&=vkoRriz^sy@v54xdo6FT0b~+p0}-_JH)z@eBJ` zy_Ku}rnANGxik+$@|%$3U=uDv{%-H%S^s-^q5Oxw?mv5`+@)g7$<W&O_x`i87fHQ_ z(+M-V)%*QtNYQ8pRYky}{H*lk#XnC5IvD(2`GRmLOAf`}f2LYFl3!Q2zfl6SoWW<z z>zY78ZJ*^q6nAJ61Vpmm{Y?t?_eV{L@cNstNfE{LcWbCWO_1>W(<F&v`Wr(J$(?%e zx+Y9`{oSES6UFrRSg^mnM{<^kwG{fju1OTd^q11_C6vGOHKD?TPwrQ<>Ev@EJKpy} zh536XzvpoHer)qFe1F7jEmB?{cqP!^5>2@9;JZkZE{ef-j0yBNpN9(s=y#+ZHc(7| z4|E0ky9jHzV1I}3caij48R&05w0y9?Bl)|y{#N`m(BBPA4h!IWf+mYa@%3y+fp`JS zu~vpAar&70G=4pD^@DNi5$aR)0o!mZgbFB?2lF>#;{)&qpZksL3(7epkN)_<^#OrI z-}H%M>gW3H?^}P!!`JG2?{_}Dz|F=(ZeQkL&i9{){{uzf|JI$ZuQ+^sdruQD{=vZF z4|2k$+Dpjvn?V<kA^k)47Bu(qErwq8i~;1WUwwHghF*`gy1qVCdd2w9z0=FBUul1> zfAhZSdB9Rf1D_wxe=k=4=KR|A^`Ax0fu#2niye*DpWfTt;rjYe>0O-~X^$lJ;yddn zzkSiWukvE_N#b{ohU?FdrrTU!gZv2U_krZsb@w|OuRp(D`jzYJL**Cl;~MgRWgq9t zE9fs3wwHa;^TRGLX8!%D&G8_fpN|#c|9t9~uCEW4pN`(a_~KK0NS+RTOZ+dop8jz4 zql34Q|FFL0#qj@`dmYc#pZ`1F;`;jV`CtFb|6cz0B|pW;$6{=2_2%yvqaTL<-1YV0 z%g4FP2j%1a>YrldXMz_KSbzOe|Fexpejb{HxQ)gx{_E^ZU;1Tz%Zrh(7rZrZynNjn zn=eTFAB=~=*F*ejbo0g|Uv~effd8WLmW^jW&Znp5=wP#`1~lcmRG*G0#bG0*)uGHr zR6=IsSGJSP773tiB<t7pmEVoMeKGUvQg2NiKfj8x|4%I1c;?rY`{UfDLH!*Yzx=S} zH(x$yKwmHHGr#Rdo)yddw&i??&2L*JB{sip7SGO2v183|yYVNGPv*B>A_a+N2*?aS z8_dgZJ5AfA&3W@TXntGS7G8eaqJNEo8=i*VAHkDpKn~4s`*d3{zwHqG0zw({b3xP3 zZ@U&V&t+p(`4|<>Z#&%e^ayPtH?QY4^(((^-7nl659*8QVSC$Ge%mED#8$!O$^7Pb zz$!k!?GG$se%q?c`p9py_7wYAh2jC~4+Qt89K~RpnBv;}=fV6n5L<nv-u)B$1G#?h z-#L8~jNc4w|CJ$lV)ECJ(a2>kc3LSO1>!{;4!(_zULS3EJlQLlAJ;#7a@4OyyR?|| z_z-JP7D<V<C;PNYeb1g8b)~f@Uyy==_GBAvmo~dLZcux&bW_isOkNppPaend$g1{e zMqcM($$Xe9X!`b~=9(hy$(ydH+Mil`a^R)?vL|<XYqIsQCtrBVVMTkgP>#$Go@nXi zOV>HezUYz-Z%?K?F=$WzQ|$>7<p%8uXb?C*d}HzlHZJ=Xu~#ws`Tet3H_8dKT>tPP z)?TfW61V>OW!PTb2q#+CKT=T8UY(}xu>P5|LG4u;zA2;m!S_9jUXHg{pT=>`zP&nx zhd0amN6_@`)lHWdX|E1<Jv~AjF6*D!{jyghXy5Ykqox<R{=t=hf%OlKZ-Mm>i)8&X zYs1^C=FFhI0<r%i*FQ+a9<*13_6i~SjX=H!${t?+zoH#m%)NYwwTI72iM5C4{7mY5 z>$l4rtUWwW3JTi8W3^q{ocf~;Y7cw5-*WcwvghLM;pR6x%Rw`^H-3Sm8FRIu>D$9v zEHqtot6%ZJ{ajD?&_|#>{Lv5lWe@*)#Q@mD^B!?nasAdw;~sAh7qf`=@Y$Ig-X1Pk zHfRqw3Vl(0{IJh>AitL%j0f8FTSOnv8#()hA>r=}`nNvmxlU$hi`jJ%9%A+JWGS)w z_<8;a?9cST$(8lVD^gHUAGd3}wE4>qHmE*6=M7IEzxzzQKECh<r@5$xZ@@1glrh5v zO<y0cytqhxe6#Cm7lhH!W!AiQZol;LQP{>=@Ab(mOC46!$JI9ht9X697mKKmCj+`( z&mS0o{h5;A4eDbM`#*Ahf)6_f_3_~PWaC($6z^{o7jKN%+nDbY`e$!1ze=<()<1lR zwYSeoiCh0%E%p8N51eSRx93SgL3?|ww!`}8><wyfdsce(_Ogz6d%O9y&N9jR2fxJL zUM*<)_IA<*McUi_Tu=AV2a)y9S^cuNzvdcpedB@Wd08H^{-GNcZ*Lc?hlTaenH#{~ zDjtLT;~RSZZ}|TET>sc3V+Qjfs+0ey-thb=&OQvn)7N=%>rc;f9~C8w)UP;w*FXDP zCU<;eKkf^Bh_%1RONq6=tF^vof6Kma?e7{XC}@A5(ROL`%6B%X{hjr)XMZ<;G~WJR zc6reL-hp3Yf43Giefzr_%fX`Jk9WJC#?dFC{e9<@e%arnFB$;*y9Nn5{(jtXbSC2M z@4+nMdiQuhH{k2tLHqlkl20&bf4w!%M>1Zq{`O^H^IHeuDVCmht@<~W_<Gs*eHujD zx0tW<A=bWMC?(dumt7+DJ^Q}TcddQ@q!bji?`w6OwAu884Qk(SeAct?doGK&@3&p* zEFss|f5b1b@8bkb-@dQK^0O%W{<Q09>I`e&xBFJV?EAFy2Ee|55(!PdeV=(5u!^_u z-(nH%`-R63+V_npzkg%Xe|_3_o^TEs8(d!xuCG6e`!yTeeEZ<x+37pIogdM^_`vE5 z#hSF3PuAff)_*uiO056z1b+nf!>Y{=;9SprHS7pSDYz<x@AP|8U~dp8v3_E#7}P zYnHRL^dIKqm-r8FkrMJ1CQrOyVeUM+NdMs~*VERgTmRv2$Mnm8*!p_|;6MDO*<r=_ z{P?**Cf<M8fkpHm4gz$8@d4a#@X_3_-q8A{Pyb=$p#K0041QlSIDcZ}^Ba18Zv6dU zdBOVoCrAB2tQEe0<wLB0vPep-f3i=l)c4{WM;&MVlP^d?LH}eMZHMn)Yc{BVvh*>} zKbhPb@1Hz=p0niiPhQ6_@lU1-ntps^hiOInCvUo*YEQKO$$^vm<)6&KmX5}$*5~`z zg$^tFCkrnCR`LEx9gFCnESfavpA5z~3dTqK^iOb6!C-u2&_5aU@8k0aHh%x1*!`4^ zt^Q8$41oW0rdUJxKYWPyf273uKW9mO-~Tzv`9D%n*#FUX@P7{9u>Q}3zW;Me0srT0 z=P8K)gJ0_Z2%5hCGx}@A`aiCx+OIqR=dgbHKTX(ZS%3e>%SsXdN3Zyv?w^C@pZ~!k z@qfOw0sJ4gBZf^!NRye88vI@X#QrG8zx(um?6n|+`#XdCJ0C^)9`sK(Hh*SggXi2^ zU?~f(5Bs_Q^=+}X*#9~S53&B$K~m!OzxX4#|CO-*)nBBbpnr9rw!{9{fg9AnI`Oxj zf3@oRc>n6GQ-c20eEbss>Mc?tu>bW?b&>wnRj#M45kf<kS@X98`sH8kcJu)FSARkJ zkDos?{<}aXKEAXAi)8-`&<*(hSH!={%^CEsK<tmA{pr)c!o`(?@uk7|(qMdPFupYS zeHQPoDAqr`vU6=O{u}-OZtQ=+cHoNEBrgE(?|lwGYJ(GGKX~=-b10Yoc%P+R7?+3d zr|YX+;i<3dE-9Nkj;fzsO{vz~%6WEK*N*P(fqY0Na_S85N>qT~#bL*$<q=P450nH* z24dQO_*PHZj<Z={&#UYUo<R9&;_MWOPoO=aDR94T1mCKG!uOe(?;qb=PyN8~tsE$P zUp@c*<9p@@hi}C|;k)*{_mA(S4-Vh*fx>shM+4uIfx>s2+V{`j4^W<S69-5?@AiZD zkMFt<PM%u_iog4x`~LC0^@FoV%>#w+#Q%B!_+D`O2WF32Ck>E1AN&3HkMEfpTq)>p zjEVIpe1Bs_ALa4>S*-sxd!XnsamM?n$GS7#5C4fzR__xs;+i(qtu<+q2BEX+rrNdY zPkUZs^uEgJXw<CjTckZ*<)*q$Jhv|4*@5Ot?X1<@&j&b}PvWnOk#(Av<!z!3<F%Rd zc}HD}9dd`Y%{)<wm>haD7fC^)B^*u5Bohxy@rl|Fd1|{L))&kV^ZC7Ui$eZoE|lN2 zFZ(JG&*fTx>wr`h#E!=y<lT?L@vv5?%b97L<d5gIuSPwrBigIVfj*t^T!H>7(I1G( zrALQH-{e%YJn?FY*%rYcjMd5Zybp<7N=_`TPVHZv+NM>@QE|u`{3~l1DI<ZH->0TX zp+EWTs(`=G%azOs4j?|cyAK+0lLlCHOz_Hr^sW&6-Tg3>t)|)@vyTp)^&vbT_ucVj zav9!baV1{4rFq$obMZd1{s`XhcNm)qOoiwVVsX7jIBRpJi2BAJ_5$WAzQ7fHiQ*UN zUl&zomoGq01r<|$K&I>xF2u}_nz8;nvo1G&3BPeOxALc54jvxCuh4psv~Ig%=Og(4 zVIm>X`<p2rB5(NHF*coCZeIFdiM``itl<kTjmF+Pg&i{hk6jhwj;||7&=elt{x{?T zGq0)cC37}ro>mbd0dh&mUyVs7Uhdjj8$c}mmu8Xc<@#};MXJu2lRk&J7=>5mC&-_p zb-vjN6<?pcq&!aa>W1Yp*x#er+UQF@Nbl=#(~;H-^4FK|KFUdV)850Ggoj@o<OYqE zUyipI=~7^QOZ<``*$DP099V1Cy(@iVbq>T2(SeNlGep$ZxF5tQF<0@0r>=UZcb<If z`8k*;65CL{wG$aBfevaD%uUWuZ-6j=tUiNeI(}3D4>vz@#A)oB`zr|N@uU#NqWAcW zPycxP>y-=rpE+6XMaY3hrN(AjLXh(IQ%L_l`YTYb_&EOT4@}&|A!Ewh6K~=bY*g)= z)lF01FkkR02*qgb&OMzrJwKi@f$a*&1LYY?9`q6&23u&%G_8-6nOJ!hdfc)b<)_^| zzq`sMjDoq+zI%-CL`R`--az^=r(Bqy^{Xm9{<-n>j<B3L^KYV8I?a{}NM)=(B7anl z-VeR=^)35TdozjJDUV)Wxs2O1{Q8SSD$fkpS(G!Ij&;*7MxQ(WUb;@`X3Xo|Bo<ZS zT66puUlrPfr5jIut4GX#9{m)apgywl-m8Ao`nj0->ETyEKD~080#W-_zsf7`tNr^d zuXOyu-%fK2M56_+Mgv7e920mW2tk^U?MiwwdP?cw-%9f<Tgkk@hj#pjjbKqHBuv@d zgXI@g>y<l8(+)T9I#H*?Dkk(*B?G|HXU$LG{7J2@d!Q~u)~nsDIz?C(m3N;$4}2Em z)Q>MIyDGi&kg|Kzc7lZTxu@FzWeRghd_ibS_sBOErc#+61>}SB2JK-^Ba$N1ar(1c z%R{;t1o_!c0F>T2jQ#KT5UrXsbxJM}wl=4RA*Fp6(idjMd*Y9Xx{UEh1ith0;8S`z zdA+niIq)-f{7C=4eQ^2(0E>R>3*I<=BDx_#AI;Iv=jVzp$$O2A@0S<o4}AsoYZP9< zif=WSy)yiMaq2#K{ac=(S=~^7Qc&MV+xz-_`xyS@;}dO<@iBYO%#GLauUV8g{?O3) zKE8Im5Irzn2wywCn~d#MM6!ey$JsB1XW;w=AHFz#c>2rwC-pPSvG4J5Qce`f`Q_EA zV@u6~_c(Q9?OE^rNAdT@TTg!>vR~1B&;Z3tcALH)@qyzVk$m}f{7!+#@%GG@KWigp zO=b6(=mJ6IVFK4LFEu~9!C&Cm{Vw(|x`J!w5;Xu+kg7T5N_1!}yh&PhnWrx+#lARu zN*l8i1VwC1)9~^OVC>}{V8}sj&Wwj(1l2w*P;iYhUYi=zzO_w%${Vi=<7Fc2?WJ6# zYb*k(S+W*~5yE&gN4W7)wRnRs%C5m1AjGA06>^)S0L)@MgHG_59RTt6$l=RD-tdLH zK)eC8C7oeen}+}Mhaib}J#x9RYqgv?2=1|G(qi<z8H2g56@2*!&W9A2Aieuv{(9(| zeSoN~99Yj&9-4;#dGclj<!uJ=Xj2-eJ=Tk<pp+ys)%A6zq^#j%ssh?f!=dl>bls%C zG7O5)ZlPhbxm8~_qg9K!L4MS>fKqL#DW$0zV{Wa6ePGb(q$A$zNha=g{zWF0xI2ll z6AQ%zo+2%47FG|1k%yu8<0-qNq-#4J1t9BMxHFk}+EgR})V8+7Y{_5vLBU9aC^J+r z%$K$*xIU)+97TR$(x_f@_KorhUejiZPNdl7%#Df*245vW|5}%eD69gmtEz`Uq`8tC z(KBVbt^u-)Q_TOY!q_Q|e&jWpQJO+WLlA>QgVQmBR`>=hV0AGT2+7MN@qrstB?XM+ zq^pO1kq%i#!0P<6RK(!R(P8pIGih&;|4w$#fEF7Mm0@c-9D#u_rjElG;97hs1j!m8 zA$X@{fLkVlb?NFcj36ZdWL;-TS<_f0HEK&#F=ytW7UpXknxs*C$a2I<9;_ZS732Ya zm0fqSfwY}(B?-L?snCF{fT5h-N(va?p)y(r0O1hL0?21%2y{;(G$$WbibGm~;O97j zLAG}e6Ka4&AP<C63WwXm=lsGB6t;Q*KxAuMt1Y}^rgoSu_HxS+LPu{THDc_OJyWWQ z9@UaGtpFLPL#apg%ajm3Rd1jbCf86wCo9h+riA4Z86(sYyfT!Trju1>(&nf3!IEFO zIZk3o?Pd!fpH5)}DY30B%za5Hfk{K!Vo0F%g*_=6kcpufTgE3g^4uzvS|KaB8c>Ez zp~vlUrT*b5h3pq~K{uLoOCQ&=53u4KNH8S9DyZ2&MEx7o9jo4de19l!9U`lP`11Ny zRgS*NsjC1!rfMQf*-w~;blKe9Fp#JM$WFZ(Qa0DKSn^_%vbi;^aSr|im_Zm(dOG`7 z$lA09#HlXrVzodGrTuTUhBuSCIGon9(wqf#a{x&NGpY3<jG(5>x@bHb_yW;bdm!|j zC_P{arb?=yeRB4ULa-IvFvU5MOD-S#q}l0M2tyz39sizr2W_RU(+|pD*FWv$VMMx* z{(|+7?zMh}<EO|F;#r(w=FkZgU`!b6A!ED>m5Atk3%75=>};C4+R%Seli-DkCVxG4 zed@Q5u9x7;5KoL7<WHpsudDCkH{$<8m7C9N!%6`-3@_)3vn^hpQy`uOAES^wNbDKj zkEOlij}MRPnocA1rb&Tq!?dt6o;4HLHU$L_w@{4yTo-3HRV=bu@yF;83Vl>wgZ|2y zTCqG#AC(ut;^JwMa-ZHh_e^y?Q>`TCMaRwNTp4rsuFzM?cAx&FA0|C$r1(dF2jR2) zi;VBXx8fi-FZ}-dYVVDgzrO&#>$@{X0pv7>7=hVaYDNYq<kolo_^Ci?jK7HfK2=nI z>tgx?yk(;T`X%OfA$jB8B<9i@i6^_c1Y%OXmmD3+cUPHq^Fb^m;;BW<A5%uyId^td zBr3o4kmScntP>iw9k01gj>_YI?R*i@;(Te^$(ts!z|7Y-vGc`~-zra^(U>-Ek@y~D zm>MEoN;|fcUbfkfgSe#`9JAUS?8+pl50win%rGlEsBM-fRt$mU;B2+2E6ixL#T2d* ze;mc?!Do|+XU$)*cSXx-t{=hAGkp0cJZW8@z;0S~3DMFu;;n2J00g3us-&SPySKdl z#UbW2tXnKhwSW`Hi(HL2sE{cD$B_<>tpNuK7^a`wzj5}gY53M>hvxY5#A<F%sMQgs zSc~E2d++$H_-ya^T#G&RFg}lPm%T7P7qLUqHL+<tKA!%8emUZ-5H5Y`D^gPIzR#~1 zeG<|)0evbOaT`iRYP@*R<*u{9`ZZABJOHJTzdoygP-Im;j3*xwtAYzwPSol2rZ$xy zuzr>uHeTZTcl_j{0~CR?WZn909Z-&cl^6srAygb!CB8gjB*>l}6BYD}b&gvB_GHlw zbXWm->L2{OQ?B#iFCHGwkKW;l=<g6suqY&!<6X#}ZkW%1-OnmW9~!}(xd0P)1c0zN zkZ9WgNTK+Dlt1j?B`#_xGl7*C?2y=pIjcG-Q8W`wiAYWbY2m?>H_5t25xJXXTMOF` zb3Y@(2c7w+@eD}JHOXNmCCO!}#9XEnU|wO9B!PV?Y;7EY67<q2aAG0do_L(^+Y=f7 zG1FZ!7wFg-fi|qeD>Gi+*ES}({%u0&;~65)hb3Qluct9lFLQZbqJF;~?&9o#A=?uz z$YUw#nm3eqsD^A!CT{Cmh!^#BkC&8PMik9+_?c|D5Ti>UDS4cbc)V=>oh)7=#WVe4 zKBj6OADu}iZU%@ZRdX`|8T;fH+fdSDn!X5t8qRkO=E)<0k{tKr(5K>Gn+9^t=-sLz zs`&=wxAd4vGUN=`Lv>1Cr<(W%3-r;M>XU08*L8X~u;gZX*UiAyb_8Sp%W;I^G}psC zc_a+KW?lRP0Wu&!GoH+|Xqs%8?kcC`aY6z?mN_h5EX4@HI{NT2Rg)nBnn8fhR84b; z0GCy9@M*5WJbCm8z}QoO05^JYTM2OpJq5HZLNt0L@NbE!*<pXkSi>={`;<IZFN7Ld z2=99#u-Y>`#6jK=x=3eLk8Wq7Pk_^D&fAYrAMLuGCy#`B8hUepAPL0><SIyBvSG4o zk&;LH+?Pdge858`g5zodRM9iLFe21Y?RUq=Wa4pwu5({PH_;W&lSe{Fw=M*oc@Ckg zWCH_R@;)Vxa5xP2`;!d^`2~DLEMcfP7#-$mDIf33!P>@D1Ap2{x4@i)1+WeVGQc=5 zFeN9u2w_v*0`p=eex3R*W@cc%fn*Czh9wevM@w@*ex(vE;W$E<L`GSB9V_o8w5e+} zi|qs8;f(nne_A?1iF8-bd6?5!JfT+8@?L2P>|~z5(N+QlQeZtL%IukLs|%r$k8`GK zE;{!7xe8~bBt8OrMHSlYn$_k~44a^JwOW=uf2Um9YdoOToaP#$#gv%w=B#SP(7o#4 zo!JGqeSQ7=Rfq}o??`ejR{!3C$pDUYm`z7ZB&*T<Q{s3HGkw0xGbTv}^C^pvHB&=4 zWz7|AoNNecCO)HTwoA6QEZcb&OV<}r*~~`g$p)N_<AjlqkU5DH((a40LFdL?{dvkQ z6`+-8DM~f*jSEY**dl}=CnQ?S=6^yUV`L3)pcfIF>?)Uc_{}k(P4LqxoEFH>-hjyV zQVT0IwH4H8HjSXAlk5&icC*=ax-Z$yrWDPDY)3&h8yik^P|lM_Pq|5S<UI};po9$2 zz8AXNNtBJu_YSAdXupyT$GHwu@>ocnWq`ohFuOh(hC=I!I=hO>Q3JwMXSeJ_IFEJR z&XdPDb>;!`$XEh0#kEMuV^p0HfK`~_3V^51bZ|)_`X<GR!ZO^4ljgpbP46twR7iXC zo*<D`0v+ZW{u0+gCpo8sO!BmO=$%rmD5C3$@cbI_mOr1T$IP$b`h)9hiO<_f{n(qf zE&U>tF|@;(y}QnA`+Zr3(+6I@6BWYc(Y9z;sqJF@F{clXb?s2!a|z*$`TN&l{B{e} zuW~MAsJ_Cdu`6Tl1791LjZLpvHl#7J);c3w>C`Zy%KrRDPtUxnktm&)SnGO(Q|jVj zI==JoiR(>h5%eEVS2|nzlvg$8NTQuNAS9w2-8LrH$XMUyST$>S2YK~KZI#E*ipCB{ zVRo^aT|kU-^Af8GU57cG&}$qkPv7Idzc9RL*js!xZ!8!Vh7psc^J-QLn5E0BMh*$` z!{<K%b1T)D_~@Qr9E^`b1Ak=VqgQ<#D}9wKe?7(pYHYkGCVwYBK5FNqY^>zgRFz^6 zWoMax47HR%iDMeVd7LZBpfHG{a!OUv+O>AbA5r;+?74WL%zjJ?8{f0=dj89dJQ)W{ zN!)CB*=wS)TM)PS)bWU0*t7(E20^Jd*E{cZO=2}1&Z7u(Q(bQC8Z%Vffkd;lMs+Qi z+vR32zU7)AS=#kER<@>)(W$QeX#s;Tb`X<joBkhvh)45Dp^SaK0<V`>Rg`p%v19A! z8FN`1UVnJ_JNPz*U2o=S*baWmckH);-hlVIUOH$OjdZPcw!n5)y8t+1$zgW9<loLQ z7}vSyW<))M5L}zt^){~n*%R9WU~S6N>9#{7wl^PV>;0lcklld*5!k1BrNOp&4i8=S zuJjq!t^JfB1zuHl39qtd=^Jo#cbtu`T|A`<%!CI7p3<KuZ)<Z)xe_r?d@K+P>!c1f z$H855sNxOAKM!vp;n<Ih&;MW_bkn|!f%E-q>f5lsrve>6uLhCsagBSCZo@CaADEx& zvP90@&F*xoD{NmV&)31N%a2d_@_y^Za_?72-krW@`&+T+p`H8l7xq3*{)6`9X)as} z+mk8UK3V%F&Cwem2B%Nj)VwMzNdv>b9T%KFkdtvY@3C2lnE>tyvDYNtzzjMPJW18P zi3#*G6}mRd34~`kfmVqJRnr!oK!#s1tUzNof#k(9zTn0(o8HN$!3m_Ve~Q;Kf%ed$ zb^h$Eqql}f|DKNCs`E$Ni%%!>r-q|7jeBXd%mnz3<~=Y&d*G^~94>|bYs-3+NuG(7 zc0vqk?=anLWrci-2zka}0Zz{`Z6>`U561j02U&CSLHSNc;@2wQt49Uoy8}X;!yG`& z07oj!fIn&RvtjG`c!Me#PtGw}0^##(*%!mSCvfbb{7}A=b?=h->r!>^&Z}7mLfj7i zg7G)uj}z^7_F$vAvq3I5Kg;vwCsq6Ayu=&o&0HhVG-d*Z{7aQGATzw~>ndC+d@WT~ z)zbm5N-%?46<U7)dRP(&!_AcE)Od3cV33-Y5VrUcDaMR`_GJnUw_~{jb<ud6AYRbF zHqUS7W9aNnaQ;nzujwcdQw}}`zCYPD&{@2F6J(yTd++o+SMoU$FQ2oDv_{tpRYaQc zC@Ro;=MV`P1A6gQq}EhcZW@=^P2{)}g$p3dpPvoIl0vxR2rMF%TKt4>lD=MOp8OQn zBtvD|sK|6MKEo=zqe|Brb{fj^T4-)$lMWW7Ad<;Mqj?TLBq^m4t6IiKsiQG!i+PF< z68J>b35j&sC8gRBVvqAL@XUG(mnW8%Anpiwx7<$F@M?GOVTM7fb|G2*4V~Jvy*3zq zHaclVMh@DYfi<TTp(}i1w-f{+5H2MQB=pfUTkMF++uN~C&u45?^w^Bp%WM?L{OvG% z{*xxDO5{Bz-ZBM5hNmL|<TjrZ$FS$7al@4pSyUo~Ef)zVTFp{#0ykk&F5_#gI?<-2 z>)UK;A!YI!7?CwMqDI$OS%L&P8Ra;6Vl)HUMvo@{ct8A;5=}Y^S4eY_%1WA&ga9-a z)<6@H9%kvFn@&@`s?^Qr3V^B-2As?@pbNP~1kLY1D||5$I7`)ZtG-=6LZ%JoS*-n> z9_SDKTIfYuCljBhap|2!TC<i$bL%XPuER1}IZX;&kJnw-#L=dnB^L*2Gv3o2c8E)L z2%uiq0ycbBhiEb514E?Ef$V7C{2|h&f+Z5?Bl)R?KEo)LZZf#<Z>C#fu6vCF6Hm`$ zA$1--e^e1i&-vJhQ@s^K&pE5o0$)H0xFvpaF=Ji61b&Sbo5r>6q&BTOxtKvMV87Fa zB(VH4`{SEYN8=8207|;XAWZM%FQeb{c9<PmvJ*>E{xCk7?O6Y#W3^%|hPN=*eHX}B z{AC`)0>X{eYW{$duBCLUt*qOzTFqT7xsN3jx~ZTTB5VK8-kZSJSycVwDQ#&=fuyWK zwy?LXK?qa|5~LR{O0|lG%4S*1Dpd%SC75y>$j$AA2vi~nL{JEe5Uhc)6mFq5(XvGG zl^`e=C~&S+2#ckx{e8dZ%skI?mxNT`_x->AKl-s`?ks1{oH=vOnKNhRnH<YjG)?4? zJOc1H1x)R5@&`V-S-$nAVe7=@!)$FLP5nfQ!LwKclx&*gTz1aCr>;IaxwPV)Tr8;t z_S>P<#RCZ7Kk;#$nVQ^_kYUmZQLpa84sG~-_Fz$ylVcqfm(%|z^R3QEb@_GVp4DEs z5~pVEkfhxZg{KVW9;8I8d}$Lnpb=A>ZfFMWmu=)^niAb89}o|Xsc_?v3jQLGVNB-6 z&K?7q1XH6~UQ-PfI`Bb<IENIQm#UxVdU}VRZQzW_0k$J!?O^eC9Ft+zIw}&eDBaoV zG}onVd?M4I>t@wR2I0#|)HN0_?B^LnE{(lrR|D}@*GHmZ9`;9iMpZ}PB-2`3(j_<r zqfn$%nuJhesA!wfwv82a{Qvl>r{Y62<cQE8sxZ$4^jjw8F3A8e);@C{U=H^kD_<|U zp9u81iC7;3!z=rN5_d9dYIUH*+c2AF&rz}1Ci9>@jo8%Cmm@oOp6bO=xdD}aIg2GH zk=wrVA?K?Xqw_(f8BHS`m#QJHs_DiJKErY4-5|>9M8n<Ku$K`ium0nJqL|#sC#P)c zd}ZnSPI(yJVB-B=GuDbz$yDraB`bn_v5AXi_&e6jF6ENVF$=NzHU+Wf)YSQ~8WJ$9 zT(411N!8!&(7YTTYi*KefIEYwQ}*2y#or5HFvPf!Q5@#Sz3X|rQ@#ls!{Ko^*tZ*) zcIQ@_-OlklD5v?QLiC@)TFW;SM!v==AJo27dcE-uy^+=44+*mv#`qBS;RC3zJD&y7 zJ8)6^eYV%H{``gxjzV7Ab*q4vRR5i?yafG+y-LVS`yo4TCl=U&)huC5l}66~ydZM+ z=X&C`Es7lxk%7oro>u3!$A54Nj{lbBPPR1osw~F?W8_0lm*pJ8-?gP83F<eH;V-Fo z41Wz)uSc?579cyf51M&7;gIZ>i&;V}z_p!9?F$ENjv*gY(|cvx)#cQzvz=jg#H*h_ zU;7#aS%d>Pv(1N|uQ8unpZ20Hez((BOrLpMF_l^D$8UQda+x!bX(1<aCX=xhiG~$e zp^k1nTLhC!*Upslly2Q}%&3rV{c;?#ORbrHIhZARo7O(r_Z26;2H|J#FQ?PxV3ORN z9<W$S^MACy?lcCiUtK^Sg!D3q6+Q4~6P=1RqK9(WcwqBC!c3*m-m1)NPyF;aV9@^7 zw0=z<e8&2u>)(d!>@9iWArfA9=~>L-fV6y|%Ag+-B#R3J^7@;~L^X7`+kOK6rTp;@ z;ctIr;(z?@SQ}G8%JP4Qc;xMIoM+4#@wag8|7-qs<5$WK`V6=<Z0&h}Qczyfe;)N` zoSySCEviq3ZXe(u_<yG9dPt9+$~ebV8C54v7jbe_dsbB-mooD70xk|%66uYPvwV@i zA=JtQyKQP=8dhR8NvLK;ZaW9<XwKZogzZ?Jfk?q`PoG3GP*>#pzR_t+@FkU5e<>}` z=B{WZ1u-o5a6~Hhz8>Pk-}(Y9B1Ri@(k{`5PC#||wqz}YsKqNDtwCRXXxb*@Z^4VD z^icrOhiU-u!9DRG*%_J+^^^4or~<rY+o2hc@=*p-!8CppvV1<v2=#6&4$UVPYt)vn z(PA|kJ%C27p}Rg(=*+V|U7ec#a~M)nEZS>IDy@ZxHB4gF0N>hIH(7^|ji%v_d=gkV zwK}@>Oitb;GnP09nQ#s=vhDZW9PIf<IV^zp6PXdo*!#KP(?D{h@8*5I=m7vTw42v( zuur<k`>=>}V>$G>OGtFp!rk)J3*0SF3HYhHxwrZE@#IGqn`f%BdFtEEv9~~Bo|0BP z+E?-D)VJie<y4g#sYu_0@jvWqnytx2jL<kN`O)FY1<gp!%h=7Hiiu4b{H&Om?$bXD zvij%70sZrfG8n%V6MtE$f4Zvm&!QUqIXs!}MwP>pO`Z4?Po_Kc&w_UTNsS&~>3JWT zeUa|}l3ml#E}jN{>2#~sj)SmMvAp8tJ$0kVB|T-8Bu9D?_lVdyT8pXKM;nnXy(^*W zHTa595{np-RaSAO`khlczIa-9m(cmsF!i~03Cv35?O9~}(Q_&cF*s}JlWWrcQcWZY zZC8-$xF_U=e?<Kiv%%3F;T&}8@`n2MbD;XIdui<NWslO0SMexr&n$igz4gSh_zh{) zkS(v6cQuo`tnm)S&%XOHh&H_q+~4k*w+*7a9q|cRLAX;!=lR2^6*z9_-9`J3me^a( zvFjdHIkyWyor?UHsn<1^d#_%HXTe_hDKMK1Cv4A~<y0$pTtCxL!I8;-%h!!f9g zNblrv#zrt0onhE3`#ld~;pJ&H2r!_*qM>Tf%Do)1UC>j3?gV|2{X=<)yXTu$TpiqE zE3o%#03VAJjDx*Bs^cIg(eOT^?GD69RT{k*Pap8of#b^j`&_Bmi<rx_b4O(nHHoKg zMlV8*cxvxnaKl&505{;Uhy(=t)vm0>qW^>Jf@~}pc+nYZY~w?R-CVZ*x7i~DJ+T$Y zG;1GD`U7UN`(@-(3PfS|YW2a&LH8@r{g++$vhj7FhO-Edj{*5ar%UG^TL={(D{?mi zU{CB5>**6CA%EEaN}LyD<vDmxbX44Y^4Q1N$=v)J%Wb>h0T{{h=Ra!Y0XhA-@-jc4 zq&Iku^zJ9U?ZQIhT?i9@Pas=yRHkC$n0U{jTrXwvMMR-Hw&mSOuxcH0K+1k2r6S}6 zp>{lx&}ab;{E16zo({;zkFZk|u9D43&jNpc<h~;7D6X_&Zw3ft;22XcQ}@g6XzXyp z9FQ7!vkJEPK3D6Cc}!y&k3YNsko{#Kh~?O^s6$=`eN4>vFPA^7G!@wxL!*Q8^X>hG zRY2@>>~GRz+-4l3uj=QE>ko9GYftF`2N>wF^=knyL-<GaM`b|YWt;eZi_1Mc!b(sY z4uW40uNXz4QKsFaRA_Y5(JVKIQDG_|`+;r0bp4rJRVoItPs<ZlK0BOC4MOBBQX)bR z_e%Zjm56vd$5(05WFRKLPHjiwc`2%)D{2xq)#jqqa~I6`m0C{Q3_pHmKj0_8Vg9wr zPfLgXT>ysiY}1WS+U3D3LW8Z*f(#K-_+C(tb^dV*>L|NJnJVhoQ!Z0~UZjS>XIrio zAf~jH2UMFoUo8AE^s(&~VzJ0nCL(q}%X-vUWi|noIH7HoBU!Rd1miwgc+N_rS?&tc zi=8M|>!ew3=kX<wkt_Qg-*5SB)Ltp&&(lztcCsnZrHtv2Mn+DUFRepH{E=J{3l6AJ z6(OAnZ;+P(8wnr!p)rsgGdZDKQlJHNp-xFl?7DylYK>q3gP^{2eZO=AjMmB>$|6VQ zUjH`d5hsHLhxkTpaE<lb>}Ffz8bwlXIFed6ZMZ5lb@#2KzOP;x^M}&*b#%Y63lvT9 z`nL6&w;nBEfxfXp<%`Jz6MQ4>#CJgc_B7_m3DjVJ9m<1;u{L~h#NNaN4VZrCUz{|Z zi?Lv`vU2n`FzeOvB69ri0XsZ6gV4#7=TZExfryMa_zL8Iwf0BFnZ!<obVFZw->h2u zl6|)0-{62wg<GEfs6jguMxpZ<aWlU+oK?R=v&l^cPle^Sst0j7ALrn&zoddQ3qrsM zC_&$8`S6vQAvFSK&d5T9KLBTDW~2@sd$vK2<G_7_Tyo7TCxl#6w1eXskql}8WS>0t z3|ChpnA4x15g*Wsr#&iJA+(UTh1D%P87|E1mX1DMJ{gCPJLx3+nF>ER@^mZ0c@F#K zAm4qRcArP@q5Hob0Utoz`p?+HF42E>rcxcYpdPsv_P<z*G5pNaMfQU6i;f=#MbB0t zOD-e3^OhOiOKB+3Gqy&d9qfkuSr^PFOH>``TxOBqD{stI{4;>jD_a5o=Ge1-xo2e} z@M?)Y>zTO@LeZff989lmsQ1fgpk8Xd))e&L2XYO_4JL6gsrYe;{^03Lp9U=3V-r;L z7~6Dv-_YZr&a)_gg!JKME=2G_1d1GZ`pVD>{Svr|CGs8Q^5z}Slb?cZM-e&}g-c_r z%W^R394E8tO{kjtB_syQMzq9&1+5D*+W*k>y`nKf-;F?`kho7CuRM_fPn06;FSQuF zd-s#%i9nu_A8q~Hd}7h*x*#b<4yHU&p1_ao?FV;PpbX^v#M2^F`HE2`D+ePNZ8$M~ za;p94)gKq~2UohWO|O(wgpztcL`m-F{FQ=Dp<M0c;n4WqN;&26n`b{l{F1XG_^F0s zU$-JRz;CJjF#Mk9j|hI?mW-Ud%Hj9|N^|XsqdT-e-A<^mTEQl?nP)JA%NH;A{WPod z;YJhe|7L>T*kf|(v<IXQLhJKH61bQ46oWY!qRD4s@Mbn$mU16Nlb`xN`TeolRXYeb zGh9=>{;>U5T8!0s-|w)d3iL+_`UdMcBb!?1CY!%)^3d%FNXi-3ac{mH3KsL1tmA%} zgpNz;H#zhRUj7WovZq3I8|u@c@w>nxFATpemMJqt@asNC2{RaeKha{WiMHQ5`~v%Y zAXE|lY#!Tb3P%ikH;8ro=+__X+Yi`O>bvig4Nr-1-GjC&`eirdq750XSEktyh)Mi7 zi9b^2v{7#-)ZjD9NItJq?!Zz<>kf3%iKW*ejFo9#+&O|56`H;armSev4Lpw$|DZ-L z19mIHG~KcS7+R%*dpLot`W9MvcIuaRPX?p!ri|{5{&ry6F13b5oBr6uezXFmHlWlh zo1<A^MDm1=B~puAVBU;2%`(G&H0qBt^@rV}VlZB+zESjknO&Vi9g+K<;<%d_?-5UH zh)F!%rO_XY&_O_e<COqAXrC5{@-)-1wUh>3bX&@6K)AVyRa^AG0j>cVzJ^Ag3~llz z-X6|v#h%^daE0UhD;SOs=78@5d3cYJb#(85h5vo@!|+F_Iw$7mF0m~@DScKM2m#ul z+&`X#HR070jMjqnYW2Cly}{OwJmLO6jF5ONL~RnTpJMnMVh^%+w1>!f!rT>g$~=o! zaqB`U)l^0bggOEXqlsdh4-ZKH5nNyT8*^-nqZ0ZBbt+NEXqnP9%5A;;Raa>fU8KI8 zX_RNcFc98g|GpErNqyT_Y0+dbU%w@aG{c@pHFQO%s|Uq2Ky`zAx+SOO*bMQ<C-%eS zXnNxVM({L213=`y`EF+d?E~4|)K4Jk+7)k&Wfl5g;qKc1sGw4pRnVZMcv=H=WKq8_ zMo0&klq`ob<<-ThplsuNR}-i%nP!<3c5D<+*SE>5O+js}pMM+)5;IC<g(kF5$y%D2 z$saAPEZ%FC`(+OdR!NdG&vF>ck=qYv<lgMkBahQ{sYGfVUYM~*VMf$5@2uW7`I>d! zEMGB<bm;q7S~1<((u(O;Nayb5M5Y#zopd2>#uy50Dz*cQG&k|?x{jemlbrr<2XZRX z>Q%-xB%69|()RtkPFj^s+7;71EmK`qVbKJe7*>$-=X`Oxc6XhaMU$+Uwd8b0j$!PW zu#G?XRN=<8xQn&qq84AAa<kXPV%c_{&rdJXj6Hz`7)cxLU}=TFnWYt#^@!<tg@o2X zxQKb5)6ID_1J1C#=|n%;=b~?iecoqj?eiCw);@oNbdFw6EN1wzd2huz{ki<*B34bA z0GPXkf`MKP9jY9!WiarLdpzHN(W>}Rl<D?>>LDxB-ozB8Vy#XH^vjz)s?YK~6Mb>| zxE`|-?>m6v;A-|hiwBN_V2E8|Y!SO65DE9NSNg4%q5_y<4(7pTF6FQ3QVMj+pR^pS zoIi5*!<5@Sy=1x)4-)JL*bWxomz>_NLz?=Q>mkoC)N3|ZR-Q(zMJ@;_SJZAmZwklh zRt*Tt%Ju<xQtHQy(TE&q^~xuiJbS$cvKTTr*uQ2G6ekr;?h0rY)LNB0kkp{}8e3Z_ z!vx`nsjBDf5)-Sz*$myaR5NTZzu#ikgcuL~1-d=T+rL(-E}*Vr^I4#R=^XE0wQ}#j zV4Z_mN8KI+a{E(YDb-QFes!o@xDQb~U_e%DXsDho=nkn+pHcr!<|v1u?=%8e>kY1d z3GdA(J#JC|Za#iP#8aGA{-1aXu+P6uJjEaT!R>aBDV%TGIS^dI`ETLxsQ;0NQG@ZH z^3(51@l*c#puIPAJW+)IRG`96o;naujn#`sOdVEk&pXb6n3(6p04mKXmp>m|^j`Dl z;a@!7{QhyK&*Md+z2fhYtI}_~nAqx2@(jrJs+fCN8}CPBcl-n-Z0v1!GdU9wKO$d> z`>zS*gN`3Yr0q}TE-HM!5lXrFWq#z9i5-5ePAf<^IwXOP|6ktzlk>9+t&c(E2g~mo zx;&m9eGs0i9{ziK7k@6iceY&<cyE?~2m0l`e^uf)&yT?=a92^-L*$Nr<*;#O?nQyo zU;ZjkNREC6S;O#`%Nsfe@LHtTJ4=yY4E`=Rs#4kxcAf|NVqOPCPe|yqJLJD~H4e7l zQGJ4WPaW{-Yq%<yp_|b}dg=2*&fg8hZSeWUMq|+T1>4v9&-;R=vPJafk@xNoF`sfK zIcjivui1N?W0gJO0oaYsTocnJ_^D7{1iziXKYhU2ha%LVj7K`@12)q?wMQch7X4iv z@2{2>@M(tells27lNyv4!CSyS9(3-C8m_wJB5rSOe@sg{kWuM|Mtl!xHjtOYi8y{^ zBl-HfW6LaaLuBgp^|Lv?bnUY!i95$eQa3`_Y5pM&?zRn%yx#8(S*s<lSt0wE(-Ae2 z`!L+krB6d{vgu@E<f`9~>bcihMa8BICNdlT=;hjv+WKE!@hMu4LQ6GKQ<~J!dTk<G z<xn?SYS)eds_R2uco|(`SY|BuXs8k26AH@TWEZ@)>$+f)w^sD&C10ycYe`V6i^;i5 zBY;4mzRz4&J+bykiOdnjvdAHjO4pGldS?L6Do&DI0&j7$>BXQUP1?gxiADRP`e*i> zv;9E)InRIX$ET)f?Z+n-O>}kzZ4SZ@b|KsNL#y2G%(6{eWQuaTD=X>7JDNR?+38vt zP}bn44I_T^5I17bN%wJ2{V8M&&3F<uz%|Mk)8KnnBKI_HkM;mqmb<Pb5+2-@g#RN& z-DY#Qzj3zc=&;#RpGPXzJ`u+qS_4QO_NnVet0WrQp;tzsg${q)z(s9H#nT$XCd)mW zgt+;+|LtoSf;n7d5z;w^{QJVYBZciOG!53I>u>H7u1npXat%n&LI#uN{ZIA3zwf4d zWLv+}P(N6|bmUvaowRp@KX|s&DI;bRuZH$VIguFmeP4IuMrH<j1TNX>?efBfJ~w4+ z=43*M+zaZO!mh{~oroh<n&DR;JzfCNDAxx7Z1MW;z7pv!i`r<hU^Yj2deFf2xatA+ zNM3i7rfhEkfigMhG-bn2^PF$NOhVc^faEG)Iz@+^m3mE>Q}uMq?30<6Xq2NYk&&-k zqFrK^=#>4LuuE>(&}Kln@Mxkf8M`+30J6LzN;7UO%t#bwoL-or&uln%h{E_{VU4JN zgf+lUI^r7-b_2Xt6E?tR%j}aMTB1?Tw?szHwnV#}Y>7@eh6!9WmZR^(v5M_yo&HIc z!56){Y_SyDGm-MuWhlp2QS$t|VL6J`0xPy}(hZ+H2!RepOg=4$NkT*%gWb?oDSNA$ zyp15h<n)0gBI{rnAvicSeE?sL@b9fw6A3$?$*&t*m74ng+?R>U;+HGYXznYTex-cu z@9~bC{Tlmwe%mEDU$4`(WX_*Hx&1zHe5$@L`S_lhgCOg16l%{CzV%CL$J#evqL71{ zKi*3PRsoNTfB0+q>ySeT%mxk^=#x~QH)fh+%d}M+TCss#g+xninRlDlg{-FUsYLyi z%+SWi_{QI2g6BFvy0`dzY-V$xmkxC5zl~319&WB~TCnglV=J`h?HncDRO{WgDNT51 z1!rIk!>g^&!}+aQ7FnHoQC!Zzx1I2-!z6*ap2H}f3;=eb6x$n|v|feLyJ~P{kMF|P zD|WkPw8U-?ykIfZ!a%w!?yrA4@%jjP-nYuT8L3X+YO9*@3y_&Ib~Ji%H+N=In4+&( z2ge4_+IjcrfqWr9a=v@*JToBFV`>2X5Ql0sB3*1GkCk!P<~N8TawEakjptvlA_s#- zd|}BaRdyv9o&~)JmMOG9=dQ?NAo)+K=++`5XWgOgFhZUv!w;1j%YLR}%J@JAzlea$ z^O>38-g*9SJV}s`LAA@#T9&B>gjNgdyc<43G;imu;a{8Vt1x+~u@2ktSf}98c-DZQ zkhdK1Y+kBdw%yP<{*cjz!dAQJK5j!p5VpuPTtK7ad(NKpUiQfBv$%=XkD1U0BceD6 z1K_F6z`WAOD!2LB69ihyNFbNnR~=`F$y@Y`VEBy+V7>upBwPTg(##8(nV3_B;cH|k z%XIj5&M-rZNdY|wG$Pzi4{gd0Kg`pLV%0|zwF`f#7UQ2*C8xj%kppGXM3oj=QvN<l z2`1$m0A*G3c7Hr?JbR%ZfAbpSfg6^n%amWO4v!fRRLj<omOByEO@>SK)XCF`OX9k4 zapQheaVopZSTCWYqJFed{eG#AiWM-N8TN;^fgHi=reGQDkyu(MGY|MU7?j!%sYQf@ zncQbQkWTAx-GQJTtmq7#fIe~yXx=$G%LiC(4wV`JFjNj9DsJKE%c3%Kudu&KL@lM) z2+-fs%8-Iu;*_EG_s(xnxC8oI8T$b5Xl)Sfxq&?^vEs4-OIzPDUptOtHGLl0k@P6V zPx-?|&?_b7K<0B0sk$nVYXWg1m+qucdAVJ)b~$J!Rz+X#2qg$6?}B@kyw#}hn8J1R z7DNwb9}QU+_YF(LT=vT?FTi^GIzj3yQ}h7g`!aWbB@iqQ=Jg7b{4fbZv{yb_g#ZIS zB6ZM*n&_7qfCS?t3s@@dM6QI?h@6K;{bi|B&|}g5w(z~AsD6NMfU_$FjRCJZbyJ_* z#)Ey`&N_e8v}Q<8iY$0H5C%dW^Tw1=!GOY0Fn#T4MRKP{PajVQ%@|vyd}IqQe%kE; zIpw{3s2v{DjF#AAh1wwl?eGS*!^8fTa-MeR#}gsBY5+ukz|6Rpnerz00+?SCVVaUF zBRk!qi1o{n9jYA)<+H_~0}ckrXe=A3>4)#a9q8GdXTzo+esNGR7N;McK+X{QVO@fu zet7owV*P;o2Sd@9dt$^Gwt(brhI-{>ZeT)(L!rJKjy-UYPM6vPKjw{@VcG*nUps7j z;D@Wi1=KAg5Lh-Gd*HXeRo;vbZV!A2e~F)QZx7TOEB49Bx9N-*(q~QALqP2{Sr6Hp zg7pwvzj!^&4Ws8Fb6&k`c<bS=4;)SNs5AI_;P;w5b^LnR^k%mn4uSeD;jj89_;Gna zp_1@us;mP4V}a3d9=*eQWH?%$DkG$p?`>#QBxz>bgz&s0D&IgRSD|D%;YYsz_ZU{4 z6NVB0eFUEB0|r5=ej9Xu65ub(PT)FsP=k26YV?~m`5`(~J6g1OyKbV)gHF}U)iP-v z$^w6EI0U_-=ac6Wh-$)W6}Cr=^Fu4OpQ-^8{e};^4Fxx8Y<AstCOlE8<Tn}e_IsdL zk?~4B`VuGIaKgi7d#*I)@gO9eC%Wy|=B{XGZ~WGPirCfwC5pCWJzl{=n9c}JeY$q% z#k$$*hX>=Fy}bj19~s~dqYH{Ja<aZR1j^;K2IM?cZHZkTsF8KeifGgM#Ut|$&$xU_ zgFEl&9Z@d9@q0$=kBQV@Z1rh5I_2eWt8{~y8O%ku%tB{_-&VPVV^7z9E2HCT$GEQB zD}P*wS-aQg@HWZqERQM4A^|VQ6=dkRFJaY#i%Z(&M3ziMiJ~3GPK;$`hPl0S4>yzu zcbL1R9eJuNo8<+~#ZGGHpFuX5zo7VjR<E4<C#nIOE#-0r)2fJLxIYjn_}+7>E1))~ zLxt&)TtD9H!S=ywi|iVyU1zo7IKufl97yuRjaLQ{V0EGY+r1w^&Otrfh|5WcD+^}- z%N!$j+zpI2OVuF#hWzaKNDWefLCysM(5#>9z+5vpI*5!jJzFSmIHCbb!Nl`)cnMPk z3j%@;|5TQE`c;DCt^P5?s6Tf_HFpfjMK#KZ5SmSsG!<RQ48m=yV|H*gU{M@DW$Y20 zS51TMURX4?OwLDGHNJ;{Qe_5w4*|)5TD#bWh@CBsEi04Lz835R7ikAv>+k6|?=o?W z4@?h*bq_QvFqq(h(wasZ<+?EBGApl+lrxR;PD}^95O_QX7CjaYUaRtWF&W_X9d2p( z@+$m=?5fh&Lsv`#6n3!u$I^1<=&6N9hT&v_8R^<H%Asn~8!sF)4tKzli{(!bD&A!T zRzp5<)}tC2vvhM7S#+Pll*H9>1Q@bDs)L<0jn3QQGods2C)`f(0@muUdcvh^FMLFo zdn1;6#~yxhr|R3|Y1_2k3h#r#a|bIfVszOV?x`O_1d$r!&W*a`&DbU>0`Aac?%B9m z@1WH_gE^<q_AK;;L6>RoJ}7Xf0tC1Plgn_p<KgLkGHvl<>ztm4K-UZ^p7a7%ky~yG zanOuU&r%!|;5)msYjY~Urs>+t9wrg=C;)V5N2Vj8(xIFnQxP<(w5u-7Pn?#I#souy zRb=xB8k%vwp`i`WFf>?SjyE*M7#ci60velzXh7C(eilEZ@rk#^Qe8{}XPzmD+!&5m zkP%Po0fW3gD<3&R28~!nE-h#y&!4F@Qh-nGrZi%GS*+>WS-nc5USt8eOOWYk1mr$b z<W_~qF$v_lwf%|tNDu;$(6SGI8X~S4-!>#zN8;A;`#sumhjlzMujALW<M+dknMB8J z+P<J;LO{n_))?tnGhP5cqao|aGrKBtUS=IPTgNTP3`e{x*Z~K4VaH6O{Tyw7LjH&e z0Uc}Em`KN(aiVq1I&!3SyrFe`nsq!ruj3<h#4Ey%nMB7kw0%Lxgn*8<?8+NLQfo#I z3kVHaNB*)4MhrKI)<^XDQ6ZL)7mpnZd2x)2`iRKkCvNhD(r}_FX`jeBu4ksVTSi(# zA{-4Aazb+`D(Hp-Gp=jRVCo95;Aq?mA4#x3`e(rEid_Qo0F<uS?wu8^uGqVg&h7Wl zfECjFYy;cR^a%!b71PrR_SHgZA3b%U_y<DWti6*#>1BFzw!C8)E!$Z8?+^@t(!uo0 z6VdXVVYHmX+6%2^Gt;-T<#1+b25VnvErBz}kCvGARyjEa);b8C+tQ*I{TZmLzjBwX zQcXXir|H{hglxFpmW5%p<W@PD0PLk$WncLsGY&;vYlQ@rUcY=a0S~Y!AU===`^j~( zGb^OJ>HsY6RsftBa?I7xqwD*|i_q8~kxpXGxl3sJs4a?fnIFUBtsej?+P??()HvA5 z-v0W=0Ze0Kg?oWeog!OJCk|?iRhO_IX}>K)(57#HU}5{eBCMojd)jj_%jlTFUpl`= zqN~B~D+K#Znue2P#(~<U%&x;<+j8cQPxs2KTW*1Kh39W`S5%H92$+;Kfq4Z`ufsL< zQf8Ss*a!2m4?pFjI9MX3X&44iE`&Ka>)SL3;Z-!j+oH+9>}ph-c@bd=w&{+8;CTXR zY1(zm%Mf`mi83AlOd_UH-l^peTX}b+oN1JIU}|9g;cC#rZ}RfQ1HMX&CIcKk7>n`o zQ2P;7LsuQX9=c*0pxVt1{TNQeP@z4nu!w0%%m^^oLbPZDmD*6Zl>kz)b|l-F1XX^e zs*pkyI(XF%U`lW(O_!OJfjxLL-7->L)`9^uc2JN`Yn2_ZcUnL{>h4T8`6SQ{sYTi= zZy<ems>h5A_2S>?ifxo%our~eq1|R_73$Xm8;5vfh<LLhUS){a7~%&;5U(cU>qii` z7J32z+}R?YPHU|*ev*f~od~46>Ih**WCYs1i;uYWq+k#hiSgd{9EXCJH(($jt-xQf zH2afhSjXmIb~uzdHk2dp(>WM`6u=yuhpK)KvMP_h6V8FPSX8ECSilw-iq^WhEq^GL zTBVCMCGDpOt3kU@cd=N$6B&wTOt7J7qb&@51zu@s_9vslq09`2a+(e0x=tNRrw!$f z?ZTn7v+W#+ZO=~DVo^rNuz)Qv6s`5g>+*-vr)6ENDUbUZ1C^OCv1=Gofs2d=IMu}@ z#!1}dv=hR)(%OdtBeYadlVRE*tzGV6X<{MUv5w7ETw&>YnZ{(gb|E&EXw-;`n5*7x z!vW4_+v|=B2WTx8wIUyE#}*i%)_M=pUCF?2b^{u#$VZq!M5CY^ElPDUiGdIY+4{tA zAX@v<nTouE`+=p|gPaPC9P%~VUXh=~WV-ef+Z#<oMIb*ef_xp@{`trdd26u<kcm87 z0C}yoPXY3*A_pk)Fe^RsOagi0Adg38L2EDmt|G7Cx-88e<c@6u<g2v3B45p9y7mx5 zz8V#Q{MS*{uaZi(-7<o_wQ#oQ0=5A1TI<3E`IN6=(?;-HvS}l9<0#K0kS7lEn+Wn+ zdz2xp;8q=P%bieGpjSuvGHtKOmou5Jy~g%o1Na5xe}t+Y`7Aq`IX$GjwOCZ9STA4; zAg{F^xi%kpR*@$#9oWV3B!Ge&yEq0>rWO$g>6jU^jn+QY5LR%LEzKTek7^>Xnh#pE zO%BA-oWgTxLLcpVIIJLck^7=vt2Vp67Z+-BUDU}b)jr<TX1<Jv2T{LM8qKxmU!6s+ z&7;@XG-G4*5^WNvx;XqXph&Ymahwu;CMDPfmY&V@nOlRZJF9sR!7X}2OMyqNOU;Pd z!py*eoJM$?10K?KOjlSx)l84HbPdxVY=u7Wk8E2M;y=}=3gFuT4}GctzTsFMXO^>k zm8A!mPO#6f{I~SkM|gW#pBbiivVPi`-rUliOjoear(rKgrzOu&AB>c(Y~FW_4rMme zODx^UboZ73d%-^gb|#x&XrSttKHJjMm_C7EtN$6WHEh1EfvRMB6H8Y!y$-?twtzQ> zMT9aoUj~x|bE|9bF-z;(Tet<l{(uWhAFc>ip~O?u5#M(?PRE))_UpSvlX`u*r|Cs3 zU5v6U$GwOBM1tlc?)?F3N^9hAPI%&@?q9bP>65+KKcCnQyuNdn(8|`WNUv<sqFWK~ z&z+|Bzny0xBnbY|XJ3QBaghoyrD>D$q}bjrllvou_gi7;xjqcN28QorhWUWpid=PU z;xfK^HMeI8-R9}q>)zw7;El8I@>xr`G)FRu27cKbtabHP1}~p6u8a35j`m;=55OYa zh$SQ%z{0S{=TxxYa2SsYF@`wDK7(i9IDlElu+Jhh%OTp^mUOlM0g!X+KpbF8gM-HW z_iU>3_DiJKt;+*?xeh=PY}vXH0R#xTUBlMQowrs7^k&;xLEA}k%(CM581O!V3I=nz zV<V)J<eOJUe9K2FL2AFdgoX@{<}}zGTIu7>R0pgguU6dY^a-oT_%D2_#{#*Jz%*V0 z@ZeQT-$T3HJ1l|Lp-}va>(2GGi}jR2PXmBW{bxP#m;B<6u&0dNjuIX~<XVe+%1Dwu zT@mT28EG;QcCWs7Wy!i%O$X|nXdscGFFXF*o+L~yVg^nCfz7SiF~0GhE0bL>606k! zkXpbbPYLO?PcF)`;K-vubQ`Dk^ru${t&3&02I^$t-+(0$B6;zCdH1I-Y^dTE%&%*j zZ0ge%b}O1Qn^r(-)8g&uc;fN8M@IpM{NhY7mqK$*Q`Uw%PPUuQc5d~ZfTar7#Ib<w z5LjLtDX+Eib|8lBD4ufbT`#f#x1qp9iEOJBo}}xdGO=n@Mbq^*nhqJGMd(D|Rkd{l z7#vrI19D3#?Ee0j1N6Y`9l)*?tEp8UNh+#tV~Q9{y4(s_t6OGZmz?|Yx(dHn31*sI z<6RcE!@9VTg^7kvtY-~kBK{`=BYWL;^)%qWc16=9Ly_F6M5`{ssu@@{BTlJP_A|^H z@xW=P(w!jR2FTnmh=KK0T>$WzY&c9F@8p^>JokFRNu9c`g3fPc-2~5*>^#+dnq>x; zf3m3?ow)hdG_p=3+OF1)R;x2oi)qxF$y#<O61Rt9<uKgrZEm{P*KN^cAaM0767Ce` z8>k5w?Y=6U4NN0zhIa1$)WlP3Ye<=yNWr7QW-wj<Ag?6+)Wb-1F$t77wGUBGN%I|k zX}Avr<G!MPu%U8wA6ybaOHDR6T@|)RDBZ`ef{yTE_*%e`>6SFBHJ3YbW9;ltZiE-u ztwIZUbldl)NWNBl|JQ1AsmUjnCc)(_+@Dkcx!Z_FB+@GP%2+U1G$U$4nq0I?{%sN1 z^O4SVuw}S9AysArxU~KiJz$2}QL1hxMmdMs7cyIe?)VcPu^IYxXuFSNUqnaMMwU5V z+Z56!sqg*T*i%}XN;jhpK4pV%ODAL$+R&*TPw0yWWffOdlAC)plTQ@qmWSLer(8iC znoa`%2Qtlc{GoBr-8%b#b)LI5p6rc(@V9ufPp|JRjxWv~7+<_<ZT;0mBN>n<;13}K zP0dMnF-Lx4FU-sgVK*^tr<$&5HJhSs*pxYP&!YE<){IC~rXx-5qwn#_ibKVfG!UX= z#7}INln&`dRRC!m`uc4l+b|b=mtgogo|K7n#q`p$xgpE3s_gvRu<aaXB=6^J9PS&Y zx|lS)MsVNHN>D(z1nol3kcJmI8WW@`e9PTkk+O$NWOb9D4ma^zX;*RIm1~J__aKL# z8Zw@7$L7=vTPl3r()(^k#=&{`$KuakK=&4S4A(;-%O2?Bi1sh)hB?u0YVcd(+)p^E zwEiB6pk@R%=Y3;c!?!NyF|v&n^nTUOyeEX6*zvj=ZEw@O395Em)#|Y7BBoWQG*Wuw z`+}to+3x@p$IYRt8fQa>wVT%U9GQ%PKLcn_9eRuQzF*Pdd{-rVPunH0%@1%J=8#P) z$rab|R-i(16@QSgARrXV07fomr$9mnR96lbENAw~E*qc_vdye`Dqab(r!4n+qJS|* zL+nIOc^&OidhV;2`-C0_OgSwax&lTSe5OtIXob{al_q<1%aVOwJ7*f5&xnt}3-0*i zc=76m>~a+fqcl!wj&|9{cI2`)g=15oa!yNjIS9x!_4`WaYNfRPc5@Qt)NixcICVa! z$04zvBJpGq63kH~ASn%r4GWRb5<?>6E4|gvp{Dh>=i@EeT|^D|iNEC@Oz^Mhh;X>f z{S^s<i6|fla}<{j-^~@)jsE6Eg0pCoMHq1w%k4VE;rT_FzBWLSm_pDrR0+AJo!Prv zcA0Wb7qbxkUnw8V&BsY+Wvyu4I?hG2$M22j*l>aVc4%?_C))gTN`Ip@oZQmJt-kS{ z)>wZBjb~b8lRC|;VRKn%(w|)fx6#A>mciBEDaaVbrYcIdnn+_TV-UfnzKZ!hb<}@( z@&HokDOlea`5biOxLDI>@*Wk^9#wC#s<XqY=4Gd46G)+Rd?{XZMv_+8ctDA+5G8&S z?u|MU>`MNMO#T@x@`RgR1<f(x5{F%GYFL*}W&Jv&jP=E?mGoW=2rv~rE*=^uZe4|* zW*MclE5h)eP?uWMjIdD`(_n5AQkIVoE|A!)r!9=-@bf+8T*cH~SQZx%&-^u`P`<~) zOT$4ZEiU{obW@rgj%QIw3)!mC_ZA`8msqK%u8Q-mgr?&Icr!yjxl`@FIZO{A?Ju)x z;Y*RiXIY3Xe$+q0UAFp1`sI^3&=^|>?{((y*B|&JFwosuoxE`Orv>l2m5N`j*27Jl z&*HDh?U!Ivz~K3<b|T#@=<vj?ndT`e{yB$1LI2V7*=zP4>U=i8zkPjw_v{$<x9#Wm zM@(?OJ7*hhC9T`yZ>jU$#EKd{JI2^_SckHkL<VAt7wO=Q;HTP8<ZUawHH9r%Rz?H+ z$Y5&<{VO3nJq!k^-rFI7*$0?_3z+L0%s%?m02l8)7QxkU<bwC@Kkqym@#1;@9nRT% z7r8k*gNWFiq00ez2!R2ZGqE{y{+;Tg_+rLWb3tDG2eLSS=oL5Ig7~00wo;2`T9IHS zwIC}sR$UtwgnanL=zj3~5vAjqD+o|gtwuL``OBca%faYOI(+N&zU4r&eg&P7Z#oZF z-^$pVxWTlEF5rf~RQ(D$>jk(~)Mit6KHO`}J(9V61M4JI)vwDfvD55#TG0_O&@ky< zS^u+-yxfIf4qtOi)i03?+1LSE&jZpcNRhiRygw?}0h)S6-5ROW#hR6G)N`>mqVIzE z>{ja-hvYuGL0y0C8lQdNR62d!hXj}RfmFJEhaV8rBR6x+!0X~fxjH$(yC}KPO7h-H z%Q%+I$X$QMwzb4tY0m&TR+5KMfhx#LFKl?3Mqk|+7XG1Ib0H|1r?8#53E(L``>*OL zz5g%HQ~LZ>#8Q0;xd~bmL6%Ms>*dm2G05BnDAAzL(;}TRjZWcjQa{V4zBL^k`#}2X zz{CG2?z;nb%UTz$i(;@_WzpfJDWVc0G1z@_@45N&lUU)tS5K*-_j^IuRhT6BaIr*Y zJVVSV72}Q(x!U{XTevrgityTDj#zPzu%hh2Lf&>VdDAD4e`NX?XI^C*H?B?DY}M0I z_*t~-#Y*m#&(2p68GVy)9)uoxQ+@%BBCh35^M@H@sBgIV{uShx3uZBykM9!@IJjJP zHff3hl*{)vV;@)w7?F&R6g06webmz_QnM=DYVf8SGFJgBY6u9;AfCON9FF_uT7-xp ze%~p(mSPQ|%|0NXF!WEK@<Xpyalq&fS@ql)ELt=eRovjoNP`i8qz!s}gAv*Q(q4Oj zRdJ({R$jwZO?HZ`7MHcbWMp{>mLDG!#1nxDh~-i2R4s%X^FNqbpbyD3tiO}h2a}bq zkMDy4cNGH4XKE^F%fCOldiBb>(;(!OO<KlsBxXr`>w*aXd_OGEc3o%(4AJBKmpOWz zVYI8~U1XhGV1XD6R^`4AYef=l;Y}Oc_c8k{X6q)21{0h?mF8mMo|3FAAKw5w1ziBI z1)AwV<7@#RqRPsfXAwZtD(o0tHBEz02DJT~Kchhe1@;OOxhDxIVyNYP?JMy8Kj7Qk z!#0<4L!7R?|7IOvuS~SkjLZyCQ<9N4uuyw}S4NI7yapn8G41d|xk2fbud<K5hk;i{ zw)Sl{VVl<(+n#6`z|MXqo2P4kcbB5r37QM~f+_uJnN9|O$@m|65-|{K!x6zWfk|Jh zN7?*Hu)L#1r@RRWxr<ri2v3oa$iUr(zZRvI<+#X)H~$Walt%98&e^x99{?)fn$5y4 z8lsqw4&c~_b`N2fQ6{&Y!7>Yd+4<+(R=$Wboll(hAxVGzyg4??N*g7=uDTVGLoPK- zo7A+118kEo+R)h_1~`fXWX+z~wOq%!_3537a>5}684B|6t3O$t+m$6i8DO5m<`&%6 z>#>9KV!EYl`yV#Pu5pz*tWqXYiD`W2?he@Vt1A}7u4c`LumdU6cPa3q#zv2F)Q^Ns zl%rCb!_VuHymh|?l}s<lx={JeO%MC}Et(9R;EjM>@o4NC6;J2l2bg2MJINg0JGcBZ z3=9Q6OWwOOAfDEdcTpp5Gl+pN!F{zn`aP}N!|>q3ftH5}_#+f18s_7h)#(5e$e709 z$H<C#4y}jpP_(FxF`-i<XfaEUji99&$K;{4TOnHe7Ne!jwkP0|SZFMmip}R@wRpgt zP{k8tCVRaN>kF<8Pu-LzC&%Vj%$tWHfS8jF>uHAdb)SaBWR~2P4gqS$FHj>S<^?|} zAZER8Mnhueep!$KOcl;??5UN7J^BH2VB;nl=ULlP$h$R1eyQy7{8A@--^>uvg?>aW znhf|Q#Zg6C{%L8@GVV@Y7C!Bkni;lLm(x~g>hJ*3nrS`VLui#!G4qYU6QC7QKMv~T z&bQuJKe_^?y9rj;LhM07;7Xh+V9=9{!22Nl$4?NmBsM=Jux3nQjS{XaE!>HPM+0!~ z=OB?S44j{Bh95SXucBvQ*B%)S)3W~V;Ru+4IyLAXgVjHdG;OHW+;p>V+@i^Vwlz9h zYv%}XgAu?WhO;gY;H&7lUvU=GwMX8r1gJIw)FM>E6M$JVB^44tGY&=#NF&9|j+64v zF<Xhfo@17xl0q24KK4fMxeI}xQ3?JWH4IKfj*)6>;0Q7_`_Y0HOjkTw5AkR7-V3*l zA?rTU=!UJ+W7YHKJ(Iw&A4U(_$XX`!s0rtvyBV#jNOm&y<RzR2GmhP%*tgD#TI*QZ zP)~3`j#S%qU}fxTh#nlMQuI^g=Ag`&#(&9TGfB?h{6wvU4tWHLRP5Sh(>x4{F(zBF z1*@hsOFt5RlF!S*hftQ==tH370A1n%or{EB<n&sQ=;#TUj^o@XI3Z~}0yBfmpHj>~ z(NY*?*hJ87a~_#9X2IGTR}??N`_V_8skZfiJdI7M5eM(Ta9?iTieme`4#r@{?Ml@y zq-zBaLD(EmzKnD1cCFZ_GAte&{8XjAq7?s%BMC}Sio1iSKCIgwoWr@tbo%@R>%R4+ zxr$#_Zaa05`{|Y5IF)gcAzU@F4Bs@UxIbg#DDp=|{Xqv~CW7G>_&dCP9j$-FHbd2) z77)e91gWXRuPK&;U*LbUuPWj%Ig_keO_IU{TpUk69Z&vFw*8%L>rpfbMZGfje%%xF zA%o=am+BvR>xEk&?)LcQ6-Fi48eneEp)>Fs;{MQ?{JZqf(=f`OxCMRGp6(bQ1Ls=+ z&YTf`05KYVs2R>*f!(7?9A*mDGiI<~mi(CJAh5jQ*NSCE)-wD>-Z>eQR(O9LsA3<6 z_f8SW;piT{Pg~0WBXaL)$_LKpBh?%7E2t|QUmk&TZrd68c&v~gQgqWP8%N=X<$3~I zRL;rB8h^u`1XR-vA4tXqn}v=3fxUlBuC|T~#y1m<+O0h-RkSDT(Ce0L=rr12W57D) zAtsVN@(292d83zOx#qh26&eeu4><8|ez%<cJ<x%*E~Ttz07<D&==95XwHTA~y_0kb zra1qO=V#LYYYYG@IsO5?Ov3#)Zji`cgk@ueOE7=`sdLGFbzP-B=T=Z|{Q(YSjb3jn z=r3rG6T9Tp0e|+u?ZF`MYCuR36LbyVXQBLA8hfKmswzkodP*rWaom7eN*-DsPwg8| zZQ5z&sEBU|yaD|*)+VA~#%nWu(F?ADs6Q-1FD#xanZ=qqhGKrZAt;OTTQ%?v=}F#7 z*CW2zy3U3eUQq78Z;QMvHbIq+<^}u(Iyt7Ie4!h4P36}b)GzwJI{L=E6pqiBT=7xO zDe?sTRuC6DJbW$pa+(72(O(dwaAw26B>i%-?DALqRKAMBv+<EXORZ0iz5D9z599ww zDTn0qqx#dyx1@PPAB5^sIq4<zLy4FkJ?Xb_0tSzbR4FTQI%WgCKyu2}HaUIrp`QIP z-tAR62rJL3sQ)M`3(XZkwu=hLpL!@;k`_F(c;&lTi-q_W&*u@g-rRyJU7xfjKOP#? z&F9CczWO1YEylB@&R0TuzcAACcIo-}oO1Gc_}<EnfuFo2|8jnp{lMcD?T_n4^#lIm z`;gR-8gcl6Fy@zZ)PaAQ1tjW!A#Byvu!xmwnGuMqq3K=3-~Rl9enJb|9gyufk?;)K zTBVblPE^LF7SmI4kG#k4;n{qUC*jz8s2ULE#S0x<K$k@j9(2A-u7{|6QhV-a`u+y| zEbx(n5N_g&?4QBbR|MW5{pHUO4vm6^!-=WviM@|3=qPwp)6?G*95V&W1{9;Zd+!(T zulDbEM*Ex0b_Mz&N<V&dj(o31CGL;vUTARnq5OC#VWLkbZ!rO5WG|Pux&Eb$LN=dQ z)F(;v>0dmb;d&WNK7n_@8h$<2C_i)lJ^s{Rl-qZ0s&i%EcSP?{Jw^J}=wte`RDV(W zl`04RfErz25&S9Lis&7blYS7HqnG4~O!>{ny72G<K1~s$SrmRge;jJHMebRJW^N%5 zz?k!*)bYeix4yrctEtew@Z*chGq+xbl#gz`l~~`w_y*zcpj`Q9%<&#oY7{Q2{|dO2 ze6<ts&bJrpbiPe~^sOwz22veA`d+A>>)K@Aqs&L40;&0X`vKEHpS#IQ9pZ5VH^6}` zr62lwjndVp=fFYWYkwg?7dnspY@3ey*5EM2I_L1#t8)O@UZLFdo9?#;rMJolDDBex zVM936u*QPaLzN-s!|Fdg?D_x+{qQF1m*h{t!<tRaMvN=!DL;fbl+-uF<sYthtxKC0 z_9&kU&YxfMhmFVN2d#rua+RthPlxDw2>3~`)207GZslKFI3?&`WBfxrVCLTr8jum1 zNDDP=Va-A@$xW&ljekH5@KKH2=_<*~O!VMCYy?X2i%at?fC$|7Dzo{@rIo9-+=mP* zHjIoXEc}aDgN;vc+@I?Tn8;Z_J+f=NF4=r}>DMdg?_>6pm{eAAZS*KAe?J(~8$Ch> za~jFnKFJ)16J}y?`9Qru9}fp@wDs~gr2k|bYZmiUwbI-1hteCv2RZT2UbV!176Ro_ zB8<r+;fK&Q`xnbZ&H4c|JRHA5qLrL~#c#||_+1HoP?FzmJv{uSA<Gs1b%Vh7@{s%# zrH|8Zw26(pgV;-)&x?b$(eZ`!^ZL!}XIFnPdX$vE4j<rR^M~Jq>#q{{6xT1r58Q;Q zU7Q^mPw!p#5F=RSmFM1f5>l-RuF-GYIJ7<@Jxb}@DF5$5d$njj3-Q6+(n$t;M&(I? zJyS@JVtdHObLPM#8_OoeV@dpU`1V#Y{lfLLOKE!Rnsvg)g#>d26x`Rsx~5dogWq}U z5t1(KIpy-le%%HR#(zdH)2A3K<k!DukB8$Ka{dB*E8$6Iup7IMr!J_Br;aL@8n}3E zYKK@arQjFS*Nso*eO6{EjaQARxYBzF#144*jx*Jr2))lLjd(|nbl2Rk8%Da=XmB`x zkK-T6RJXi~@Xe>M&5wmGQSf4Z_TB_y2O=@NQYcPyU>(^uC@K$XsJF~NlMO^`y5ViP z<nN%Fs<7#>E9>93@9WrJs^+*Syu4=nPzT#(Lpsp1vWy!$|NX4D_=CCl3?;zAC~^jL zp+1@ocx{GHdjOiEieIw8r>)H=w|a#l*C9I+OE|FU_&Nhrw4w3>>ET*}s2_fb@g*A! z0MjqmDgSje)B<b0t_87npffx4t7ek1N3^)d+GXTV-x$Q7&G{I}^S=$fKdj5E4{x#h zJkEJqeI5uX7(Jys&wxjDctYUwxa957F6@<?@CzgBmC-s(dkHk%@Pd5fIBx-)hu*n3 z=$-d|575yZ!|JmCxremFiK;5I^0%*JtbTquKAYb{eeo9@Qy4=<`Khozm=aS1SDUMw zZ%=snJ6wA&Do<%c(C4t>)w(a^b{6JG{eWx`cJ{CDPo@RqH<^|J)d%Dmb^*Qf4ycWc zj4qHrGn1uz(#zwm5q?t^KYVy-znuF3<K`YyPK~~weI%Q6iCl&XXwm7GEkDbSlb8Jg zM{_)jXC;Y>mUXk*vpndrnbnB6FW|H){{i7XS$}Gtf4Nw`RqA-XeYP)=SDjeQ4@Up2 zyc%K5EUlWJ*a{2<q)@@JLbmmo8@G^dH!m1UUxQ~r#WRg?P`KVsAIzS#`VSAQeoZ)^ z%0K<wH)uRh@=x;gbWEq3li;f}c|NUPLYmt6mJP47pYJkdw|{T}!V9r@1a=)58D!#M z_?bO8h<@Sl0{bb---YYVwJ)&Gs)O<P`t(_I8GO99t_%JUS)UW)jFkd?gS8jwpYsoT zQkndJyk9%>T`q&q+po>e8-H>thRglk`?`d<=&&a6WhL-NnJ^3h#qH9ltkQ#33sp5; zgdcZus|^d4?@ghd9BsAaG6KVgcuaX@@ivnev8**uYvEcjf85R=e3>^-opdH+cWZI8 z7DFFhahOvlMfyEhe=?bpeHivA=35TbPhmcet}*_p*b03UqOj7o#N%}#`mcJjfECEH zV5Oq|$xj1$`s}@cbxQH~ApA%EsR26JZ&k{DMimGLdmW$=5Y65U?43c+ql)2s`}-j3 zD+ke^mj&?RpyRO4r$TzG{3uE9kRH0WxYgt#6^?*3mRQeCvUx{99-n_zzi}Nx9?62E zD3}V)XO3P1qv6bkfhs$nN%3a^J$(OM6NAa0?mO*&>!<)Lw8sXg|8V7zpRZE&^K1+H z64Zxd92!>-LOwqE^}%CcW&Kv|aZeP+OOzaMK#!sK3w;BA=@qRH<Cmzta)hmqN+n-W z{g8g9FM%&)^LN?C&PKpUkV4ok$VE?u6X@c9{dlPY{R&0{P|1InmmK1DbDFeEp58vs zYYz_MdgRgs3{rrgEQgLWF7G1z!}W0kWlYKS0Z14E$2Y|HtM5*i^go64@%n2hezEgH z>(AHs{(0SxLti5vRCS#x<kI|;M^A2l1A0>zM(x>P{A#C<3Fg|{Lp6c^vH9&6<p<q3 zg#?E&Xx|f0K|xXWHVF2qE>NRi>Il~DV!j>4eyI64Gr*-JzH9b9RJECTK37YqOl$;K zx`~qrJ;+Z{d!_Jqu)YS7H<5DHGYD{z_x_^lmG1gF+3`G$PT`M9^5Ks(LWMu7<=ESK zA4ku8N{@Fi`4+|3`X{dr$hZ&CZ+OXIkoC*?xBABntA5DOPIg;x-u8~Hi1)kZE^P49 z8^3s`yV<h(ST#Dc;f6iyZ4qcpT*p`t_+zQC|6Bd#PIgB4->qfJ8}I=H&Eyf@A*>Q& zi1jp#`g!-~s7DdRVRXvkFaD`FyC3s|G(6f@<dir1<WWt~+{T<iY|+2q%IN0Z{Hvg$ z`5IQquijuIj6jX@0(#Y{tirz09$)2OY_PE`{T|?VFwKA$a8TWwL0^c^S*g6zt3STQ zAKdieDh=McF?oZ-8rdvBQuhRGxT7{SBlZg+UUg1idHJlej8fg`Uf@p;<g^pnT!X+{ z6=eQ=Bv#B+eof-eMDVz5K;v#;-EHwf`YiyRfDUAK$W~^>c5;*B#@3134KGPO8CUNO zkxaNdw2@^H2U2)ufxM(V95DM)=?7@q4d|(J+Fy8{!LT5X+RqoahmBXfzuM{Z5FW>q zoJx}(Mmx4N%YG9%bc^ZwQscdkHDpT$HuD4x-0>qVEaNPbotqfllB1i(Z>14WiR!tZ z=`LE)jv$nOo>Xn}Kr2CYLQp0MJsbkoXeggTT3|kGlm+yv1iVmx(l#JsPS6$U<Dl*! z@m4CU!U3SKLjJJ+l+WNSyyA88HTL6VO)p#{`@@L5mSuQYEE1#X=7;nEu{Z{-$?FjL zs}r3b{o*em=G;eu7#VG}R{K<II8VhuGPXiGt=WK_vp+&#w{Apr?~msEV-f+LliRTB zu{xAVLhWG}x0<auDpN7>&>H-!#=pvniDTqSc$}OR<<1?8^QXuGmpR8{5ehpHBGtl* z$wa}~1JUu1BX<<pKg2JbKj13YY@sv&8;<V(c|ZeH>z4@t;jq%xgj0Ep##06ci}&9M z13SHW5Y3bYJmuwhF0pPzCM&{5FMNMQ7jkq7y61MlsSo0ce_~a2MZ#Q7wHsYHmL4b2 z)ra3d@TA^e&{+Cq$9iNL!1xqO^kuUTM*)F|n~4DAUX<nrP|_3Y#fXTZKv>v8+bb>9 z>G}|*i>l|*-y;|Z9##QGlI5vbFC)2mJ2BGkPPD^&mO&vBBV$VvnW|*d-nvpTq}TBn zL2_|QGZ?t$Mt1rf9a$$vMw;Wk$zPV~$oNa%IVK!gr@V&}9og2!BZH?HrMXR50yhfp z@lM49oAd?PBgwaYk7Mg%SUs}a^`?)Ec;3hG+o<UjlP49r-hhYrYL^u&d?kK3=zBzu zSDSV?lVRygM#g#z$#FxH<hVAU9M>i?8zq~z@Z@+7=#U)DAURq%7wOugFHmwc0_#eY zfE-W%PRYSv^2*U6IT~d-N|YS-QhDf4G=9vV`F80dAR>O&8HjQIJKbaXRT|}LRLMQ7 zjx$F>ekJ)d;%wifmzifP70a1r-$*e+c0cE76d`0{B>NyCtK#Xd*&IRpo4%g=!phc) zm3^<}+0!-9zXU}O!#f~x&zSG)i3}!cJHSt+`7;@x5KudhGb^JFc_C3}_-`0uD$SqC z_^zcJK6gc=$4`92`?Mi{CgU}w8{QOcSVlULr{-uw{!GUAF5U1HG)y*~j4DAn5+gMy z*))ofsKjnM%NU0lWSpNE<7`t;#?c!|m@5H>;GL^`m3R0{ZkrMCj@?`O1qzjYEJ!B8 zKG8?U=%02oE$0%Pd&h03)4)U>>^qN%4D?q~F_%*5Vtkb5u+TKlKkk9Ujj?{*oGOW? ztM4iDz~LnM121d<3`fSMa^Ea{wQ)q=g&BvUR%k_q!Y4E+Xd$pEiXW^kFZ27sO4SF@ zhw>(myo&UNmHYiN_5DI#Dly$#r0*m82XJBcjIO^4DkTVstrR?@#Tgusvv3L+sPHL) z{tWS1qwnu+G7aj`AwQ3_3jB55xFd;y7mqiE4H!2KHWVxO-;dMJpQ{#kPXKtGskTa^ zzEbe<cR6!-pP!t46NZ(lfndp+4q5+bKWF}h0PGGfyu@en*yPPqBJGb?mhh*ry(Ugh z|6?E~aB_AR<U+Cumv@aBQe8}<$Bgy()9-lTL5~?36X`J{7iy0-Hhus$cX80f4dXei z5xR{NOChTox($t2o(<9HmhBad(?T?uMCDFHW8-2pI;An_h!=d{Jy}_vk`S7uTTTp0 zJvFBRjnwQ3fZAbDAHxec&JgkFcgW5`JJge(DpWU)3I(t$0JIx`ON#-tOYR~Ml`8F+ zC;;3k1O}YYHUn@#F@QGdhyZAlFGK;P6~NvA&}slaIm&ky%ulP#iU4Sp=TC}o#Nj-6 zR<$unI<cNjC@K+BT_#8xnho^Nia|Hax)IRLa%mLwJB%E0Sm<O=lD}T)u;bGaK)PEF zXA6EE_+TXT;f1ChAwqH+tHEY+QeTscKKvY9R9_#Ba%&e>U52ITC8ev1?~$H}s`nL? z<TTRA3Dw}rcQ>mx6jTM09dZ*(PAV>Gmw7BXthl62&S1$N#U-sWjU{T%=3~$-`=CV0 zvzsM)Wqa0zZ3|hVtSK9^#62AnKDJ?HADo~w+%Nmo401jn$UhY;jBgD@6y2Sr_ec7^ zM8hgP6`?^ekVosY;nV@T?&yLF<7KKLm$SA%!4}VpHHd0Tv3`cIStOczc$*hdb7DWN z+n|#D6JEHV2z*EYmQrBc*sBpKcfA5&3Mkxf+WFz2_{8(@sghNX{0sPeOuYr8*x6#T zc}aZo>EDAksk#YHN2~$;uVh2eKknNW=^rKdEQP=8n#14S!}o1V!ylvYYt|h8(}<^5 z{C(Tf@NZ|ey1myN{`Wk5-`2w)l0PS*Rmh){q~mBVr+<<^-=u#u;D<?aCLYSeK=S+{ z5qrk`;chh*+AC4}=n2XKGb&1~*BV_f&iCF!|2!%q5QIDNpFBwR#{QOD1-d7ik>S){ zLx0bq6Ii?FP`*=#KXg*y597B8Vv?K@r~wy5YeJeH3%@tVN((dP4qe{pxZM&1ax=cr zneWfYU*AKVmt1n*f6hyw1K_fw(EY!EUb1|OTFhYg|Izc3Niy;n)p^t~RkF{+%HsS{ zE))5qKtBcYx8!*!bq#!h$6<{*e_manf8di&PF;@m19jApN!2fx<kspV%U~OF$kkEL zR<Ga-z24uZj`0CFl11nXvh|i1jHYIe^KSL}6~s(=0DEurn33JL(ysdDxCvZAp?u(a z?~D2axrpW5gHauNQT>F@A4oqSZc|sIyiEQIZ<Aa3&L6l!9chF512-l_?yFwhDdG?G z`x&RA)ol;Au705mb!Qw$2ipb}iNnz+{4O7!qJEct;M|Ih^LI=hwaV<nf?YG5XFs4+ zx`qCcyiG4kX0YT(C~<Bz-NLU0$54J^q|af3NC&RBSr;g;wB@_emMoTalTDX!zd$SH zL=Zid)}M%S!Lb7TPm5)2B0DCL8Ig?HhU@@Vn%W5Hs8OjkMkTUaYmIpdW^=7EFBxAK zrHO0>Uxw9d(IGnh=R0&*)EPJ=z=GWf@ve@KL%3!#)~w*3BtcSBo7p4II;u4D0cPrZ zS(m><60?j$xEc8x3wxyt!n5pVh0)OVUd5$#RTUG~YkpuXF1Vk#_*A6lYx>y56%%?- zt=Ks8ZpDnn?^aZ<H??_e*}E0rL3(_X?!*Yb4scLt8R+xfik;)-?^YboTCon4j9y!t z&ESt+Gs&j&JZ;xT%T!u_l5*wm#w&J?2|If63g6N33Szw{G=o?W!W<7_35<Tc9)X|9 z_$W@UybCRzn%bLKTnSIjWv440>IdMPgdyDyKM3Esc(9UOU#|Mx(dc6C9#UN_HIuDc zdf~^iRlyD0ok!x=7YHt&58I`cC1Y6<8sJcKi?`Qc!iaw$s^8z_S}xM>)urT%JMvFW zT`u)@+lFGaq<vhe?M*1rAM(p|zCQ%7KT+qykG~lfu$c`}`4P02HS&k7eV~U{aGn^z zQ$A!o&@lEFKyZ~z9>w|aIC^_6A6^eeld2mPnm?uYD}<;0U#In<FZG;!Q2RQlKTGSc zJM8-VYW>P#*B^uWIMl`B^#~Q7N0A@0gYBPs={^bePt{UBjq+ni`!t~6u<gr}$k&77 z7r-;yvgc6D8qLIV`@`2}@QbUBPj}GA31A3U*lj9MRjB{0{ddNH>^~|1Fvq`#{kNY= zi2phJk6bn8o1UwR<i#-UyMUh|JD+ck%Fc383GaB;+k-*<LGF_U<$#x5BY1D>QZa9e zx9?z&;<Le_ye|A5(Jydyet_WJm3m%oN=#9QZj-uMLHt0TzEQdNPsEqm{RNHZFr;x* ztM;-#Z?_0M>a2YEhVs1qKm`B)f5($4EAe3IseOZGQ9_>w`;YMcAmn>=KQfK_p8mKn z+^<(^=*#5=>h$PSE{|?R`lJaHWZZyqb>RJ)nh{XC<$08)rv4f&yCGAkM-T=hPjE_8 z^%*mY%4OjXy-}3+*3#fNXl_ve@a*Q)4-7v;$L8gJ{nVi6zUY2M4YMcq0afz%D`Vs$ z*oqEyw?{Gib<jP^_X&lz&ZMwEj#T3@<l~|33psOe`z%856rb9~R_<)7V&~0i#DM+y zg8tAi?XlnByL2Vbr=B#!4$jla`i`uJHM7Ug$B~;?uk(mbF+Mch-{84LM7tNRPuG93 zzxN(CTw{N)z41nSMo*q(#-X2UuY~f6HeA%-yNen>-oIKdn>VQJFYu?aJ^JGw6zuHw zrQiuQ2gTM&fKTrspNmg0pToAF4hHduZ9f66av49xYq8?_$fw5;{;^|E_>X<`?_?h> z*)vcCdHUVteWCmh?jMHyh~wp8$$NVtB0rR~-r#~$GvJ@Kk7`VQ*00+0w+G?NU<@`y z<d!{N{F4n;-Xa9C_Ka_jEtA9GU1^TJYBHNaho_<Yme{L4N)A?n-%1Mtx(G~SDiWX= z=WVPfR{8cqVugL50L$6E7oTK+K9@D03#lKF9o7p}->-g{ulgA56R18pd~;qi?9q&t zSWoagNsMHKZmhV!{_Vu;Bjk_1Rc;rSxUIixyK1Z27tNIAP#gYMVVwp*^h)FUwoj9L zH!AdZlb!%T`P5I+J~jzJ<%vB&$$b46#O`4mrLK568kg4c_2FsA0l)NPib-4D8Akl? zClD(2;RK+e_8Gn>itb8$q9P-otgDqXK&)GZ<z#gTPVEK+Wa0u5708avOw7Tp^7;Bc z0?W*tXqR=gEK>ytZT6hzirp1vJ90YluS4EY9o*2V_60v!bpM_H?Sj<w4)oM!H`Bg* z;g~XWy&xFZlUwxNMu5y656eK&B1+d7%nUB*Rmz_#f>E?8!u47@wbe#}ofBG|z&yU} zF@K`^fczNj`R9YRl*7=EG1y49)sbig45S(V8s!VtakCAkQoh=OFD`(*Ky7-XJFUe7 z($~z<=P)x!o<<769<O;7f&BP8X_|VgGy2h}Y4i;cy~k;Yq|*A^Xm4oWsrdk)UvHGj zUvrId4N7zHLBJ8cC{>RZ0bQsKID4$3*}EK6jv9d@?<ng^e<#a5#T)Y|zWHvTIB&29 z6yJuelnK&$j}l1Qv^9ewD`Owv(V&IV`tNYMl-~HbK?vs0I*S-jtUos;TCiB_E0d}F z%`utWp$+OPwS_&x0N406n}BYF0T2L=4+Ycf%j@y_BK`D!*@lrv9>~cAqDRJvzNqgL zeQ%9d-(O&@xl6b}bS>fi&&r|vd6R*GH@SemkN?&0sbF~*$ScUIme|{=sbb$@*(z}B z75L9SPu@)*8_2uIFUps9*8`>_0*votL6+gjyXC&sFy$Qs0So0_t09$@$FTeg{5!*= z$7eL|oH;#@6Y1%R$u|2Pe`!xIx-j3KK1HoU$hdWhgQ~j!4tsjXogqiu)_)LuxWe?l zBO-8J$Jo&o>aPHQNx?T(?BA@$xUz%UtKI4@^!9U=^qxmiG7Nv8KQAVZcqraExT{oS zzFHq#94dkDG~m;1_+TM9``PxI1NhwwDRv@e$8PcLz!Y>RGN&>LGaq{+epD6<YW1{g z{*k@*H;y$Caf&rT7rrj*an<VXvY38F%8Fy+ljF9CtN48*NO65GxlcCOz|WgokEOql z^xeGnd#<!a`NVkNIE-fr=1)cQPC>hxlK!QL{pH^Ka9rf<x4A1aN++-~_axke&)Xn! zZDSfs)3w`tZ7lw9-Wxh`PPXSwD(O2VzPn%H4DkCZvNg1{dK76NhD@=k?26LdrYyns z9ussoQP<BRyv$B4^Ex*kJiOLQ!AGm;aaXJZ-iJFT)A!p%^S82{6pVw}mB8>ESYh@l z55f&TSU1Crvu@eiB_NtR6z*TuH82&r9fpPBGEQ;f)gUM_#>?StIu?Ox+vRC^&P}#4 zWUTT4xFk*`KKY~Wm6iLWMD-I}l2y)QPc{OL#q#;bnsY)&Aoq?(C13Itmf$ObST}(@ zB?a-_I7h*k%xqxh0%k&;L@AhY#oGV-D(PWtq|b^H@GqLJI&Sx9zI&e#XsMoSQy87B zoSNDO*Kf{GgWOQTOfFX5ug6GRtX3;)0i>Vf_c$D^HbioQu8s2S%X*7Yse{uoo}|e) zw5gdl@DISkk^MDG$=`@o4J#*JE=Qry0Je6zF{>GQ8`&ps{hx3k!wGrF7t~GZPqlLb z^W@JKeT4xGW}b9wjkKC4Bf%(Omb?Qw7r2*^)%#)EcP81{|I1%y|HtO{&!72r*3kxC z?JV9fW7GQy=t)OB9pK)qrN#>vNWdgpdgMti{kntJUR$&Elhww%)5_&U+YJ~yzJ`b? zN3VUO@Sb8mXH&2I*&P*5YM16Or~~$x0erNTpXSshqy7EZH|r@w4M0Yd%b4e$veF5F zkQmVtbC;FoF3F%@wQ%~SqP$37gGY+KCuLuI+Sc$D?PN=KqGnW;ieFwAl#a9A_oVCt zRQyH&#$*jvtO^?Jxl(IigxV~|DymQ-<8Eh@GbqKh#lD))n5m-ut735-fhzZv{{B-$ z9&7zsS|5wCp!$@+-l)U)u})U05gE~cwhh>PTWAQ3TFd*OwjjrAR3rOO1T3fwH)*H< zmU>TRFyFc?`H6r>wgE`&+$6C!H^7DVLpA3^?`ZOl8l76)&^?2obCM40S{8Cs!OV|b zrtGN+Zzkm1V}U-CW7y7_IN|ui^2waNLCU>-!5#Q;-+QM0*24o(enUWy3-MQlET*Ok z9I@DaKj4+ql`rVBs}T*0F|)3OzdSO(pQn$9Iv=V2`v2MUk;wdm4~FvpP5qDm59?rR z7V7WcAwF)&mTGK5v_<wST<dz?^WWhA<9g!?8cF?6Ym@PDJI?aPzqgN7zA*lxls~Z$ zpU+!wgVm49i=poGM&Em)mv0DuKkKXiTl{_^3FsfR%9qbk*^J{6|Mp6$`?9o(OT6b? z6UukWc?7u~VOq1FdqtJ^dMD`r_<I@fotQ$>C!9eo@-_cgOs}E&+vJ^jctsASwxFI< zS_}x|ZKBV+SU;ivJj$QDu&!zj;FhP~O`jIWb3XVFRXiEE8D2j<>RTBsp0fjR&BQg` z9@&lfh-mC(!i|~WQZ>nxk>lUjuKFeY*_ga|PL3ZUjH-TstnpYi`jA^0yhXbse1HGg zFR0xhvK=fAz|3NwB(jhGKvO>h`ShQ=f=_!9u9_4<yr$WkJ+Ul0BQS7seHQz=>sEgT z`twyVy%k*pl0H<8D)QEcEYOdE$q)9TxxGKilolyX>b+{+?5Arl-Cwt}-2iy%RX*aJ zcYx+>?Y9X0brH&XV!wuSu`G81jT1*X-aO3RT95&Zx+P9%NtUE*WwLhCA&K2#!UG2P z0yvte?~u9JE;cvq;Sp@n<le}_cAB?sI^;35Y0;m-xxn`nLhbtomfu{w^U4tSHhE;L z5cf8D6lEUwhiULdaMvD=BUXPcE@_hl!7gD5@YT=Ap|3}AJuBHX!K0kgByKxv9XOK8 zQ0IEBvwc{HNp1!ShtE==&iPuWI;_JaKdZ<(jLt%xZ)u$^!a7W13z&*EW7|0Q^|G?Y zG4aKpZ5mG>@a#1>=79~2puS{mo_*+$ca!kpFnskJ+pCdyv;>d)fD~&XJJ*THOf+0u zRdE^JwR0P;Ei1#(!R0gY15@_Qew;GBxdb%6mJY~kmzj><GN7<!d<Qi=k&mPgI*-U! zr<PF8*KX&zr*AQi9nfK;IzLVY|0}j)cOA*yDZTZW48Dpu{)5jv2iZr`S`lE8Y^n+= z#N=dcRgw6<4dwtF40n?l%%$_g!7xkGAgbd^yS+OfHT+<1CWy#ja`zTwfJzGGD1yBj zg^31?uBn>U-1pb+hS8sF+9<@4Nu4CpVIS1YqXQ}8oBl|fRt8PeOr~P<p2exxJm83` zLEQzr@b>tx@qxIeXF*CGl3oS&z|KR3+&`4cAUjw^$v&B4hdhT2^4wp+bEhVourqd4 zv1{k2rZlT9*;I}aSS*z?1uG+!)}QWbI<~(o*aZc1=TxqRKNa)wU<TxtzNw&v>sw(Z z3$NsQ@uc30h*(9?Bat16h;6*4oy;(_dhW|**^y=O#UHL0pV(`k)>UX3@RQwScTJP= zjX<AdQ*dSdCas}AJ(lGPzuaCdqO=+5hxC0^Zb|D;tIQ99#jEg6qPv04;T^6JN1;tJ zzJ<qldUN8HQQcfx`a!zHM`abU#mT1NuKuRlh(AZh*VV{#%mGw_&Oww68kk$WXaQKK zN$#1b)0}J?0IY(q0WvEgYgNp97Cr!D0NQl9C3Fd3j^+DkoI5%sw9@brV4aw=#p;Tt zz1WGHE9w@8)9j9k^0aMQfey4y9Boo*{tRiL1$!7Uh?2iWfRSt)YYDs>SN0W@d>kT_ zs@sBr=LmAIT<@&!__*`&P5r*(XHb^`?wVn!Mq}L7-@`EXt+nwC_nUF*%RPws0Fg@T zPsb6FVE4CY_)d@au-1E4^L)HJUlY)wPEk1g$$0m<OQ^urd($W1TnXD@++h3r)L4+T zX#ZXvRsQ}yi<<?;oBtOdX!6EGk^L62uK<VVF~6Lde;yOWn_u##-)ThlH<9*h7T@$^ z9L4#;%)`V6_FUkvP-3k~y!j2J59~^FE|m5!^<eq^yT_ZS>Nav?EVjoZ^P%+P{rr}? zDj%?6!D&O#`*zgFVj2{_H#F(H;{Isy%WL6`I(lC?n7>DN!lcTM5MTzaaDVzJJ%h4# ze!0anC@Urz8HOjZ_-q<uD-sR;)fMw;h9C<?IJ8gKKC!17iG6bX_8R$xYMD<^Mw_Wu zk~q~+c?OZx8c#K#1wQkcp4uy`AyQGT(Usy35W8TTCIaFy*CkA#QwX>^VA>P=1ph6| z?MDQhYR}*q^}K7}%upx?dMNuKk=sC#=B}r{AG&e_b`IknH9O(3pADWgBmDHY)CgyW z{Cy{yD3>6qIHokIM)+<aHa)SsAw9}+C*Z$PqzG9a-VR+~#}fSVcIZA|A=vOy2(y%M zh{HNiEY#&2XdOD~UDr$|V?WnA&JKO+Aj09Z0<I2|$ymGAadznMw9d@14wK2)PqmJ- z8*ZDTcEj<$5)1~WaiObiZbO^d0(C$OKUDW$MP-wUbtJOt!*1FhKNAfdFi06$Ft?#Y z4bp^Jr|o5BYeA)$p1d2AP?n>QKGDz)3u;HCQn8<g>Xe?zRP5&?W9`Y<C!VsraEmnl zt7Mc@x1}Dv+d?)9^ymyAu3y!~OC`>bLOkN?9LNC6P}wIH`y?8YfPLeDiTpZ$K3-$z zqXW&cw=3?Cy`5OKQ^h<+S=f*D{r7*38Q<pY(pCJ}4w#OZ^u(4E(^PCZtRQ}6C%x3w z;Pu8o<M6Mg3;|tif{et{5wa9{75A6@9+u&Y+6=evmZPs%cW4A4H8YO&5Z59^XM9=z z=R}}iVvrVR$LgbpK@TS*AH0bVPF37LcJa&ON8pjG7o)wQTjUhM-Vm@o1)6RE4#X;v zJ&+V>N)fq+7e`ez%|*(MM?S38!Eh;uBV2Boi?ik9VmMz4i`J6g`l3oJvL5O<>Lz|I zIe;=!ZnCP0><<@btE@KSw7@92GYvJ&)cO@ohuIIq6TiQN-@p^ri#w|%-Q}AA#))_i z9X^*>wROc+WKsSgKr*r|s@RJoW6Swc8bf6x9HhRhLU}suc-E5uKNRr!{shW*$aV|& z@2MMws%7rvsi%%e;uoa^{!kE<Ev>6UatkI)`iIuU|F_TomjCZR@8^QCSFPFmxnnWI zXeII&oN9r4ygP7>{egjfFtmR<um@+VF<^1y-EtlF4p5!l$;W;8s>rMG!Y+;VKt9(_ z-$c!UtbAh&uldtZyJ`Bq?2F%rY(qi$Yg=Daf4yfW@gWxC!ixC^ae(RCi*{BBy|SK% z0MLBkhERGvlrn{Kw_BxmQ()Yf0hpH9!tF;i$MF13kAH?!2}i?XR{#W@tZZiqkuM+- z9OLGFH<{<)xr2$3vothgVnIf!UY2ei4m>N}_(k01UM6_I=Pi6QKF@yty!f=&?)#7} zd$BcGXS(;HR$)^5qy_jW30N+Vy#3j*;?wAT&{nx!BIBX{$yGB$-!wHBD>LOh=<UMz zwDvYdDl1!KIQjdfYM_>l`dcZkWUo<Cf2(G#U=}(0R_J&nvNXx$e*H0ozqJwI@<W*F z>3gNYDX^U`CuZr|y(TzDT)J5}AIgZbWCDY#uTm1U#IAxPA$Fzm#ken!9j*)<mRFG) z>DqU8QcxKH|M0@V2?dw)xOJTIh1MBa?;?#UYQ^FED=;G!d{68VDABUqSo}ASlh!H7 z(Ed|Ib%32lm`-8e$A16Bl9UeAJ>7Nvbst(ksMLYw(J2Cj;W?re8;~k_UCm{FiK0W! z7>hs^dS~xL!oo`Jop_k*_Dza*)N7M%;Q-Eu((a((as_JO`xdAHNbS<Ys?jUmTqr2% zlton-&9+KH{JIyvKn?t4JCU358-`dTeq-;=oHTQ|LY{n`7Fmh-{D;XJ#ryB!#Y4g; z?6%=+7#|wDH&}ly-^^cs>(IEw2*|y?vOh%QaN<Mv_N|7w{^)!vTz}OI-1@uuwW9Sm zJbDZ}KD23C)E`kLL44>>uLTaa*Drluv}X6;;o0<)JC8K=_IRMLl%461z`2cFH4?1s zJ1<>d#;GXrrk3|dREP2jn^<>l!vh+wmTv4I2)>=*HToYxm20n_R;gQFe>j%cUk!lt zo4m^g@O*qHVRB<en1>ro)Xfjn%win4Y~b<BAMZ}q7|4~E)YlPzgM1BM=VJd$og!uD ze|<X0XTeZJ=;2Wx>qli(4e;v7pOJx4TdiMOEi89@Z)&s(jscm&gs+iuaL!!|nHUsS zG5WGMd6UzZ$k!Hrq?J?kOR)d%l{2po#g)j78|ivSy!g!@2G2g%K^QpUN8O`>;XJFD zm4&ZBbr#q=xX;2qef*G{Pm3*j>{B?*d~6Z69T>=I=Y8Z?Y&|z3y>jX}jtFmr`(Pr> zk10Rl?TB*-gGy>2?YxBlZt(sOEa)FfEmdO=0M3T*#Yql_2mJ#>;PJ*M4v%|YF0db} z1E!--NYA%1l{YIda6*<!g2I}c)Ze*G8KH^Ki)Y$}?TX}Wz@Nk3?`%h9XKS?t{Q`Ix z$AIi)493;?uYRu_oIB|K?Z%1!{_#nVO!&`!4SYQ{`)?ATwEc%z!d`_;ar({e_px_3 z`Cs@uD&NOZ_YJ-txqfun>_t;Y*ZXP+VAmk<Zw2eEq&`{G{s*i7KM<ev<PQH^{QjT# zq{w?{QT;NY`bC|R|9<gF$>}SwDxf0qY(xDD+4A?QQMs@F;vwFy=i=zo`#6DJuXaNx zmY(J0#U<&c*}XH@=j{gFG@oOtwpW%uqupfXAJ5ZzDYjooUx+ZOZjjf<Cyiv}RDOKY zBNj|0vKL(U7)chGi5#LohS)E=?==8EPljnCxbHP+5E2XoeWDzj+ryLGQ`m#$1MBm2 z;oC4ib<`<MCRWu|Bu=3aO4n|>nYn4uZuuGErWp4{J_<rTU|p?3Sx<~FjFsi~pg9pS z?s7E+8L;+1FGAY{B|WhW-I{zi1BNB~`2_p+NK_P1t)p?wGwSi6b}GF;erg;+M!)rt z!5t`<2w-$8j7ff6Q5a95&s3U4ddy$cv_YHhU8?ET+LT2&RS$bD?*2;(qox#$uPY1| z;Wk1DBf$JKJ&xM7RMQQ$DU0-JJ&$>D_YWzI38i2>1M@SLW>F%C?=jU?sRFt1DzHSd zi6KsIJ!l%N+O6e>U9II+k#eR{-iedDZXEI)NykB=p%clkF^LNqa?;nKmXb}CkycEj zRR_vD<zOo>kCZcw@^*mgKyb<}YEkkOX}+GXMOa~N3?wmUT{!$3SSf`zy8tfT8;OQC zWb09#i$LI8d3bBDa=q?JK73$&6Th#ZT=g)HMj5lf3<fK#>mTIfQ6}EQe}PAsO=S@@ znMPO5J+XOUT^u~jTdN{*F;WyFsp<3LX}cZta#OGqvW&)Y<Za#Qvtde;Nk;G^<^`cM z1nL`~JccJ=^Xy^7T$^?oy6b$cFQZoO|FQQjaCS~t|M;XyWa2jC){aYSs_wKV7)ga1 z<;Zavg2uHpXi-rVaf^_2GBT6nFz$n>LCX+o&@e*cgvd+?rnEI0m*ZCJ5Hc=JMx*lo ze%IRjd7g8dnRwg&-@d>0Q<>-N>)LCtwf0(Tuf6y4iUQ>m23I^elA}B-)?_yT22mj| zVrDEV#4&`sMzDdXxlSwbzQW^Kv3#A2trd5TAY)e)TS;w%KM_`uIhun`R#$FBF`>_7 zfP?3p97qa#Ib+fCKv-BpCrfDPQAAL<24og9SE6Cx`rg+1Q9uD&|8b;sCdq_I>zZ&{ zk=8Y{mYKH@><Bfr1A%oH48eBPX*oH+)*Ob#jLpf>_gWo+m2F>BN}L_F8!^x89Lv|) zL%;LFQfkp)BI&|XAT!Y_PzTHN+@b0!bI(CA<wT}n0g&5XvdzmWES$F=l?b->qy8DL zH@X=3^-xK3sXW)qiL~343$}-Pj8FO752F5{$omklcB+1BArAW%fM>P*LCZh%t>yUZ zxJ372^u0=Ts}r9xi}?6&e2T~4fbI8_KwM@<<m)d^|L-6HVj~j5mw%v>@Xx<?zw+^o z|6TULfA=fNZ(ni0^1JUVBmdj>E31sYalcM#Z^Tdg`*pzk7UC(pE(Sonv^`mUP#L1H z-`OeWlAXaN+z0COlAZJ_-Ru$B{P|q}`}lnS`#}icR*A)%0O*FC|1@_|p+qIuS$B7e z)A^8UIAoQ=A0FJFoQA%{5E>MMZ4hhAY>FT9_c=Jg4K2y(Vyf1(xgR)VnSj=%QB)JV zg?m>%ryc7Aw<hk=gc-5Bf*r1yb}_l#U)A%9ua&hmp~nR(t!T<?@Jy8NgWvtu#CVON zY?nVR<k(<E4S7xtp6vLBBL3PMv@T`XM~?by)n6)q!ppI4B+ga(DN-=lVlLaq-_!ZU zyNQ_STzkvz3&`F-RGSd@_22?l0FDu2VrW%7rlwUbRb3?FJTnvTWTM^#efg6fB}fO+ zwa5(3OI4zUCUZgWVX(At*6?4moT6>w7G*t^9BY#!ECHG?RQ<%bws@jc9vtyEuWyfQ zM(^BH{PhTf4xe`n2MF-ruQm2>AcqbaoLEkb>!mkP6A2~5#Niri2oHGUCLlj`LdW*? z*k#L{W-56~#x4lPK1CaNLibK;r?|0KXyQG(0e3+K)b8uE#%{`6LbEx1y&A_busiyJ zMs=#HsqSqiy#`2rtX;Sx@*MnFycdEy*W6@ZcNVK8^t^zbUB0;rAiKD9&5Szg7h)qU zbCc@3m@VSq3!311m3PjiIwt`+w)<(efGfW^D1W(bXmZxs&hOQfheZV5${15(yZ4M2 zsQqg+lNC!^b!dc_o5t^|Pt@x8Vdv1ta#U>gI8C3ezuDDbz4zh#XO(-b$=$Q7QccyW zTWESxfAbVS0-?-C=+2b6dEwzW=)~J<b81AwhEUsn4!Ea8E>#I+$LbMmiF;1Fh4=3` z<U80Og=I;O#A6lkrgzERC;^GuB|Y}hDKGyWT61*&m&Ao4oidj>pj2J~l)@hs4<a8y zOU#OYAnT|;Cll7=gk|5?iuk2I<SAsS-2rqE<fL6Wa$a!2-RZ+)8!&RRIQ$*hmScFx zd;5k08S?^xT$OTYPYzA)8g&N2Jp?DqRe(Rhj2!+vrRfuzFeCOvt~5<Sn!d-2&l0%F zK?`L`Q;j64M1x>0Ko&X6_5o}sFHOfPx>7QIz5>=Q4?{Xp{TkT*R}I>iC$MFeFHh^k zS$6XD4o+rqd3rjV;TG5~3PP?tuj~uIz%5TB%mB*W40Xy+)nW_+m~z`2$ohHP6U2(H zpU>|+@bz=fLjztv5Ai24F!FXeVe!D$&l`QMtQjx9etr&5y`OQveqN_z1CK3uy5Rb` zn*4BQfbG@chnjf-KTIBx&ks|52m_Y~*#|;qAp9^17Ut^k!xHijL>+~K=ZEtRux_~% zD^@{%SZ#W=113f3F_2G?BD8;xt0KWsQyZqjxZ19D!8;yvfiv6YjN02l{nb04vHW## zofC%BfP;K{T6@=ch&rsf)^P#(5cZ!?K6kAK@ikbkz5iJPL22<2<rWX&;vni4R!Z}B zlm&j{xFG(mKfnLOl`gz5t5SvSL)-hIv4LFv9}6Jb%^#i$;PLSkU+KQA!5=FzcbXRQ zGZK{E@{=8gkuoaFgQxI)SGSU_bY-l}zAx*og?@03-zp0zn`xc9W7!6g%lX5`JsN6= zE!V6X%ff`rpMj*raDSuLmDW70DcdiM><?<iVF6sD3hwVk%F8TlDCYV@BIiFy1H4ab z*N!hWOa!_>Nk*MraQ}Zz-T!G6;C)(e9_H@T>U}G4=)pbpcO>h5T6zIvWT}IKkd{}G zn|V}yGJ2mDWGwgxk(|@cHZ_j7K|SKe6TJ;e??>SblDNJOQDpjf(rv_8`j^}Ub)E=L zH`<z@ZH4z?-Fyl3XV(q}(k#!|#wk?pno>+itKfAUD}fucu#Q1VkC)4DpgMVF!1}tH z#Z=S0+zvTI{rTPBzCfJowLw7~k>zDcu_+4mc;B#kc&Eg7*c)u)boYHV54!u{ICRc< zMV5Ny!s~E;9&bWsCQ*N<vQ@+0!ow;Yl^s~o3z}3}CbBXrtCFTXLvdu)jo8o&o+()B zDV8!5=fP<DER%GwhlrkfRq0v&8cm<Azlly>L;A!5<vGL8+14QK1|I+LIG1C>1~L5b zn#~_-`gP;g000v7il&O7+IM_4OfQN6Rsg~G6M4rN+7DDUPWo;-H>9c$UDrtbHWR_U zQL1`A3Rz0ENVRmn9Zhd#x{mRz3ef!`tks#_eY?ReZ4cTK-Yyrq4-76)-hZY|nDWk7 zhtL`zx{}~)3>ApPjwatb&R^H2MuKcM$I~6dO^;uOX*-!+XY*A`_GQiqQK&!RIZ~s~ zoucV~VY(ZQ{Nt&}jHQ^<QBy(mDhcP@c*Xrt)lj?Tn{(*_3H`m56xw><xrHO)ihOrg zXxbLmx#)x)$1Y5Qs$kX|tlGCIe&5xOVFh>J)eMvd{Jih#5S=hgbIyHN=W99__rmh> zW#}Y^nw$%)^5Z2GYQCRnyiu%t4aSc-gu#Iusv?GmnZrB043IHu&F|uJsLQFp?5Y(m zQztTTP>#ygZffflz3l3RKPw8-ay_DB3$DjHAK~UN)^2WIy`jxoe3<%onYgA}<k0lr z)QR%Te0F>{IMvx}{lugE_kNbfcMVs3Z=#?09<MLa7~O~1??<1Dmhbz%u*m$YqYLxT zKm)#9XVSAHd|b#$(@IR8zdP*CZyJw*`bYWqTfj{P?(^(V-{>nIuV>JIemvfe7()Sl zHpIUvvAxFhIHK?PN3j{o&#I`<0Ix!jz*kMWpbr=c-LkV02!e+5`tt(EpASw9hhv%3 z<>VP`7}Sc&>wusCZ}Tg?UO=8mwg0%50YLxyc)U^alqn4i&a0H=n`p1)?tP!AK3+(k zs;rI3kFQ!jDld4qL~;2N(kp4NkNd**`0~?#6TSbB;_+-e#z!LWnaTqpSb_z*M_yJ% z2M8f`1W{B4`9q#%S(VFL-r09GQGWIJKR^ZGInzhsF$d9M7i#Fkm050-BJY{DqGenE zv*OIuXXwluC>0T(;gQ&ZVGnZr-P#rIzj`QNA4^B$%NSK9cVOR2^$@-PN|SzUk!m8> zm~N1U&=I-Q^bZiP^N?iQ>r<De(OeV-KqGaZ20+y#t?~ulD;*NNSGvw;IOTyGO;BM9 z^yj-_>!92eN&PX@ZM)@3BxfejGIT?w2aVOFl{v?#&B#T}Y>;I2v`@9!lsn8Xe|Vei z+NMKdHq9M*{*y0oW6Y&qpPiwfyhP>{B%$q;to_axxUz~r1CQ?M99yzFVa>Opd8+XM zyk{TnfWKr&1ok#rgAm?NyDS^_l-vuTGQZBxX_FVxT4ow@aL^rN<Amav^1X6TucD`+ zY+gy7R9QTpYN1n6Dv@M(9*Q<Jmf}FXh6CNJxhEOs7`sw38pj~N%|1CBo4m)_!0WMx z*|;wKMA6plb_Ou63L96P<Ju9MhDM7?*v8)@j4z|foN+bFhRoqHcZCAS*Y9=kqrLbL zjZ|sC{X?S&EiJVL0LKT~A<_+yXV=*<th0x&)1-CyQv>|+>ZGw{tEdR?`8`gn)Mynv z7>g=HvOv2psIsr`WqYlnKZ#ZtXM}e{q^j|B*-JJzw#D`jjMxIrc&d$^Yw5odMfia? zDT5nvj#)p9F5A|3HWvjE4y5;xu|jr)8FGehpw)tKttwx$j<`<hPX%*G_~xsu=X-L& zS}$mV4>n?mqC#1tO<2UDyW4u|f;7gVMqQW0?;n;QPxJxl%DE&%eWfzW{9gV!zrWsp z6Iftsp5*)2w7$t_`d24!n(bc=@4xwtUpWiwFRSNYy?&8zt^fF<njw!0#(v|9&)u?F zczsw&{QO787Y+PAn_-|JUZftFCw<H(nTPk^WIfN?PkFunCZe6>`-cO4b-?jUhm$`8 zfV0;xr(boT$bjOP;1glVz@A%;`xVyy+rLX+`mcQef%;YBl_q1`4b%dwtdP9Q)yH#x z4_H4hu%Bc5OYeR?TmCt<uSYJvqo4hywJJTGhw=&V_4D3ojhEj(9+bx^X>M+In{Asw zCZ9l<Y`+Vo5iNl86O+LP&Q%33@?Q6I4>12RupgilCZkj6Ue)4RTcdh_0${UDm)9)x z0L8Z;X#D11jjl?aa?$MyQCjY99aiG~d4wN2F?CL~Ky!Iw&lB6CNqOQar{gjYCUmSP zQ6+!<P5`#s{vNU=yDu6}^b58^!*N%1nrClMT{@NvzLEj^o=cw!msor<Zd`V=C>JIt zN^oD%wXqd);@upF<^wW1WZ)7_4GF$2s9aX6>Ydb}@`N?aC?sg*(5w#DHfC#g*iAuq z<><nmk-MFglF$UiBCKF6!mZ1>L9iK-3e;dg0ibd%x=AFN#ryEMGxN1qsCOz*aP$*E zD;*^1C5AHLUUb6^4E-6$Tk%)^kO3pUw8D93D`D|)b}E4J#_Jg8EPvPew7i5Sq5F1u z8_5c#16~tf*BuV-)!G19@R;r|RweX;z{c1Dl<Jgj+|<-i|F$nRLqDm`^D-k}5s~z~ zNkkrtL2*@VB&)yvzEg#h;~He=<AaQiHnoga)M=Lee-UKh7KODsLj}22))@t)QBxjb z9}Ti{BoDt#gI0j&zNi~S3^$Za%S|t%xe8ivk(^9Ve$jS0lSTiWlao<zezdL%i%0^x zX_a#TheCFmeKg1k_{cP{H9uD|Nz?*``<7zD>$^BP$$L1vdSRm>DWU0jM@{c=#B5)o zJ1TaOszd3iw0;~)pAw=}<G13;>&Ak<<Q2RT<FYq;$+FKvdOSIsdp+|0gdp4Qp1m8f zgs!|Lv|>BQwJ9_0TN`e|w@39<=<8VsRgX^uDH$%|(GqBpV8{WH)_)LbeP?`Uj%KsT zxin*BDqJWYF12ewQ1U8ITyX4(*aG)}Nysp?LptgY!oP~0gxV>IWE=_l#+;V|=|Q#y zI+aqzPmVIualiGr@Z6-AMcaAuHta`xfT{@LPGI52dTyy2NcvgV%S&<Ca#HJJ-(<}D zKxkt<!k=9IgnrZF#AeF1DTGVu<<86XUsV4!aTh>PiM~wcd@lk4Q>7M{ur<_U1I!wp zp`U?eeIS}yXl-WpVw2JNc`G;J#GC}cuYDZ-M@&qNnJyuY1P|&o-U4Sh$B+TE3ba8K zXj!P*kc}Yp%wt6cGvRox5=zN4h&J7>!nWybrGlGL$+x5lYr@Isj{bn(I%UpFkWaB` zyrquECADm3bAH`JqsS4{9~t(>;t3S@5p!Hs+y>j@xABli5U)|=7rET^`tqA7X|Wb2 zhd!`w{(8;x9R@9z<13+P_qkqw3(hVBcn4y_O;7Rl`ivDQkClYFlV7i&F^JOgc}uun z2l~4jqI!O#W=N=>7q<^&C9Z@Uh<)Xz$@|ygYR%Gz5Ely{{N7kdha+n8Q56O^##emq z6uxZxpl<0{;Jc@BBF~QY;IlmuTM80NDfCB^eT^vO7X9XdtrVBSU#ZoRte)|vE-c-s z%1DVvMu6XV$nALq_BrB#U#knr{(?(YnH;_Y$JhNRkohjr%l%qfR<D7xT;Bi**F5NH z$(nN9V8=@ieaIB<(Y%!o!NC8o3KF0M4ocz^YI`bj?hoy2ygv{76uTcJ9Pf_^T(bI= zbk=w~s@!;AhlmNsn`UxHtQU1kGBvE3JK%XJk*Q*iAMjE}dKj{8!1^A6g=%0h7*IIo zhF=H%i@wHlW7wp;rr+Us-2CmAJ)RXix$&%<HJ)-n+vof(L%r<z`)1g;4d=%|F0Pi% zo4?0ziOgT!(($0AR?~Oe@Tt>jq9Bhv=X?=hOf()wqfLxF#}T#3>fgQ*OjirYv%-eg zB0E8FhtoB}l3S&{6T^V-Cx5=y<p6h$&etAc?>4|m9I-w>yHIXLtPSR@4Rbc$`JDbZ zvw(iRTH}32gD4oTjCc_3J)BNA-Y;Lz8t=B>)9GxHy%1Lzj(2ZMZk5gsjOzSC<NX$j zWKM~W_n@$M8*hRjSa?M#a69uBmCwe#o97mW%4x{K<$7?iG(IV>-oWx%D0<*#peV~< z6}*3_As2p!u@U~q*k=$^O^S;Lx!O1}wOqf6mnIcc2XP3=>YYNo&@o^BUB$~3*#<$4 zAzrpaa^`Ch{VI@8Wz6}QYovFC?iuOyO<g==*c15-D_u$ksV;?&ZSg^OlGB%%$NR=1 z4PaGJIZEumq3K6BD}&5lZK$3)A4VXkcN9OF^_q5$$fP=<4m;kbKaF%ER4>}qk`HM~ z_-hj``u;j?B#~sD{c&-<7TtSr&4zV+f&r(9q{XU;y!-<7Dr$?`)TwM-<EiWoIow}| z0*H69*ZQ=K-8X(Ns=#-xDLWfTfbs(0(B|wwN6jQR>Kzc_%%jv?QW|3|Ky8b~F#b|; zgd-&h{Kv(}BfYaXoN3;-i_B(rsn*K`Bm@fBE=sy+ycuBBcrcnZHL1S`!`Ae#_|gBK zxt^ualibdhBT@ZbQgLG-Z!wuzD7jcBM#=?P-vNUc&sd7{*7r&ZF~kccCVwV($Cm4p zg4Bi~*|`6-5D_sD5|z38rEGJQ^ja?4_5OgfyijDcf4s3ajnh}%KokTekj1kOSczrX zQzpmJM~_^c2JvF#Bwmrvp2HN!e&Z8bm4(iPdXt#=8#Cb%;SV1O4A58R`igpnVq&|D z37TU5ql?&!UNqe$I|f<o<qGYkMSDraT6~Dq5rl##EY8sUnU+6s<|>9Qc7Zdm_pN04 zQ95A&XZB%Tw~jJFLEH@>WVW-hfnIo@cWpPwp-Wz!8M1bltV>Yq7MulP%<fk~&;uKt z@`D>x<YfE%d*Ecj6zRZvq;4%@j{9-JL}R-Ae3S?CVN+`5cMY!m;@pM$nfcEg{hVJa zBVo}-+O@*dFdXMUQ^yOt1>euFaIp@N{HaT)ps0diTMRaxEq@F7<XreH0=Cc~*Uwmm z3zhnDaIou_k>c+TXM3Cu=(YR?R|-yI1rl~&`arY*{1GUSL2KF^d`!Uopw2|?tNcf{ z>#R$y&8K6mn<iNktt4tMM~h8x#mLIfl;4_gUp_AFmZkWam^d?w1aW@sF;9XHU|C?* zFxg{EG0|<04nhC&5p;2bgqJf`VqL=sI^{?L%c1c8iSR;3M@1>#uO4+WXac4L1GG(O zCZIm_*@dpfp}xg0&@YCPl9ks|f${rEl>t5Y)yi!ajaXD5zR1?M0!K{HGB{f8c4g4# zKMiN#c6c^|8TEUeFYCe&?$>Q$aMF%jlf>=lTFt{DcDm$;$jR&wake;a>XL1lvoms* z$KJ!E>}T4{V%w_vP_!@GE&n3iJa!%LX&twrW3Dgg_@S+|WB!tk*<r_RvIseu2UTtx zdR@o3Ka)9+B1b!}zXu&-vl#yZ#fk*%aQfAd>dzCOgy<NosNssL>l};|yT!#SD)ySf z;%ErQ#0w6c6pw>Hi;POmCD-Ld?DQgz=^UDVUtj@K`qHh|LD*`|oQMHB;t%I(>#!%; zL`NEHf$+e8Sh^FnEs6chx!~)UTl$-k-yDa8G}p)zI%tT@3pRv5Vnm1nHsh|vwi+q$ zBx)umHk+4Z`(_|p59cMTx8Gqn3BL)`LT$ndyz+?7j4tn9IT+W>XgK*Dv@shDDoI+G z5A6=)#vBm96nzWLS>f7l{+i@|RLFdeqFD%Wl#kJ(6Y3eG7-C|Vga9xqK(Y}v1G|<- z7psYIgt|tsjEn&zH`a5@TGJBxsnHh-5ms<SoO8YTmKNl~9)-aCP}EmU49WDKfNtW+ z+0;cOxG&gIn%n`+&KhyonXFF`1AQQC1+wc+K2{t--1Ib26h!2+%5U1^gW{w2E>(w9 z*~6(YzA%vQppLqf6wn`ReStKP1SL=2{&ZC!Z)^eRjwi+tEm*&(K*rK?cp2)cX_Ss5 zUZM_e24LI;-TnS9y8ls<kJ8h11aD24+r(UJ3+>jTJt$4~vSIf6NBGt%0N>Q5O>ECp zAd_j6n@x9bQO;ccQ7|F0`!ar0cW;U6?%ThlqAiV9njl_&gy?p()Fcxg2uU_Azd&+k zBxlM^kUL6%@iS*@B{Linru3K^>2xc;UxQd?)7?7-Dw-`Fr{jZ)b!-~=s8f#9a(HH7 z+Tguaads|wEzi@(iL-#3k4otseNt|{R*fO+ZhdxVhu<5}RvT8WPTA7{Y5>u<NsA&0 z>M#%eF|e8q64IAHBy?u-Jq9_1Oe%SuXrfgvLPD?(P~k=2q0-$c_i)utTt_O$$&OMx zXMi;mqq&tb?Rw3COaB43Jaqx5$~on>xk8QAy!{|O-_Db!2(1R&;currR7s>m3FTb` zNgU2UQ4=_iom5b%yi6FEh9d?~QP*~%UKhqzp$JQi>yl4doQ^%n<s1BW0vg;V)P6&y zs|MUrY`;7j|91z)Zjt@)-2H5x4I`e<TuR&;o*%+Dp4n)OEv=ip6lXfrwAOP>D7ar( zFn$uY2`_UK#D!$ehmnN@uya&t-o=I^C{BK%%@nlnrJ37^d)521<VD?5^0VrPa^RB| zTsCbun$mMdJ6fAPQu#D^K=~43Pv_VV;F*&$F)eR_wDg+z$mQ=<io87h1@Z?IkIcM$ zzuz0h?>_zF7xdxuXNF~MK&XQq=WPEY``5Oq<Kn%a35zP?gG*J<)%ZgPAAs}nrV{vZ zb<p-UC+m?{5+fRbJ#}7ySARY&QodKVAuJwo?p!zMR48w_8vx<#K(+n`iXY0qNe^RE z^5k>5_Rsvp<Aw4g<53%qL+O!AISdtr;4zBa%3|}w`i5^~KaqW&`YaR+>TTua$8(Vi z4t=le;VRi1SO^41Kwb1zyLAuc??d@aE5OJ)8e@P2_KZ9G*AQD#_HgZrwn25DSK^3Y z+2veBn9_bJK7iVpc)VaaPWmZ=qyFlAek2L^$WK&L;UWg2NE`}^fU-~BiGBzL!qY>5 z-~ZR*yMK>&1sq`n^I^0WiKouzp8#J4_YXY3lbt9RvAfSsV3+3MyYKpVw18AcehX=8 z|KOK434tqr?n2a12*2+?DsQd{U??P?jDO7k0a5|9qi`7RP}ZT%4kyYvk?-k|@5lJ9 zJO=);Ws1iMpyi;_JS~XTfnESC=*RQ75?+?P4rGy&Uv?N_3JQCBFu*tcMT~zobcW|; zz}V68hw>oDeiVHY(}A#Wf%Z9Hr%<aXJYSR(a=vOE<SC#hdw<Bml`WrbJql&CUMvA! zRYfS!%U6}AIk$LPey&oB?kKE8bsaz)H1l2QD5biI<^86saEl3%lbOe&y#0p^9%z-M zhy^fpgZ-RB^x)PL`bzp)uX^N2sz6!z$i**E0WpIYJ>$t;Yvz;!HhHqt-_oMkCQv&8 zDE3xN|Db$_o5<lloX<Y^?<?_Fk@oaF;^bcFuo4TP=nLK`f87z#OwsZA_G6zl4(k|0 zhf4|1SLt7pU3u7PF8u`bUl2cD{!`xI`i-1+v4z&7Y5tf7t#cD6!OUE@nB)@jL+<=i zEx;VZj(78el{8wuN@XVT;rZ>Wo=55+sL-SG&l945@LnPM@bujW{S=iC#F<Bo?z*#k z5IY7)lD+uZ|Ll0og80g(f6h1NF7Vg(n!aiKrPP|T<h93ll>YmYC#xgh$p|W6v*gX# zfW8v?kWV|-#cp%QT%^Jne)JK#m!$g~X&Itc8_(GC0tdWFak-P3DlW}TPqPuZ$ryJm z=iB^g!G6`H)->L&oRZ_;J}ZO=^uucb9->o5@6U>1f9DPVV_|&NLOGJUzU8&ZO`3<R z0vexGX8^aQ7HR=VP#UJZ7A@x8vkv@6ac!2dtQyITLsU-#b{Hn6qyyDmE<IVgvNU0E zDS3|mN$%p+sngyKupMt}Y4-0l8@QW%DP1lh|Cj6d`rs!t8lG46@+ZpwUS1p<uv4`C z;_@YVy;sPh<wJNru=cQSh54SoRQ3cqglWC|W0{53t{O1DCyWy_q2t<u*DrG6fvkZU z1ecE!1^+YpkK%{&M(uv+=TFR{6Q+Ot-0`crAE0tzJh}3*25t5j|MD;V37?X7Rnb8E zqhsl^%Z76_+^rd9<k%^j(_>*9U(hz7y!|1gE~9m{q+Tl6tD#5$vOE5VG|GbDG_+S_ zeLO@(1t`n4;Pu-|r5{fZsuyD1jwaZZoJ1g0%;v9`k^LAiVi3+C<#Zll14G7`7YR_c zLem7r!)e6*s4_c-1{SJP@?J$>n(D7wpiMr~1iG1caDE&Iox-hPa0JEL4oZ|B)VTJR z#y<OQSt@&Dg;orbthoD;w%X{EUKya7bcH3aZegjs<MZ$&iAyY(7hIxzT{rS$Er7m9 z=%B|(3st%Md^LrV?XlfbnYhG;$})>sX6k||n3UZ8P1?(J@2IQ{`N7j0`8UD2#6mV< zx;i0y<TRcaqvq)?-S3~J3284u(yIUa1#r>=E`Wvgk>sA42eF~ifEEj`5A1&j_MZn| zxzY!Df%1Nvpp4NE>An3P``?<Xpcd|*?HAGq9KWEZr^m4c>5+FZ(1+F$>jngv6l{Fb z^)_AMncRbmB2*{i*1G8>nO(FTB<oB3fUgS#VC9u4QlQ69=s=(@{^fjj0ohbtQn*M2 zp;Qz<$Qc6+z{9Lb8eN4_?ec4Fy|&%F6<Cry{FPbo6K`I=>ijAn<<7rA9$+q=JL@Th zmyj4=E2SmIVFJ`EQf&T+A9<N|v)1G2{8h+`y!?E4=_4er)-oneqhT_N2!kFCh`?U) z@|^02S~hv|E^J?ML8ig7JAE2yoXn}NsLQ}OB{BymYT^?n_f*VNv*ZK*%)?i7Jf(T| zdLVznfPL8mq{k%;uE?QxfBqG6rWQRVPgM&KlS9b@nX17DdZL1xL+u)Or~w-jQDgEH z+`HH=yHIK%avY*+N*umm6;%)zjR$QBJTf|F-!04KK1zMaDv)uP)S!wTT~*f3IktK| z@$Qem(#Nc!G@`c!HCpftg<gXFS_F*~5H1kLg~izZ(*|{3KVhBesN)LT&gpqRA@dU* zy6Ra;y3~UZm}a?(g+>!94zp1&q?aGF`$WBB%&to>D=#VAF4iL_Y7Pk+L>!(=w7sPJ z&MTzP_{D^DxWO<qtn-w={si+~1H#h@&z3(~^a<>61t%bw2znp!hwcv&WuNsU@~OsR z^|~>;jubJo^rmoz*%&7n4JK*pBZ=!&-sGR9>MB-h4X*9OA5v&NcJ?cEef%$byna1# z_|x-xHfk(q&uF-3z;xFY@c%~Zd;8GKuN$D4_rZ@ciG#}Fr^x&$R)}is`|-Qze5ot} z%IfB$92KYteq4JCYbpj6tncj|^7nxS;Nkd!iKA>THbZ#OEg0-Hd^`V>N(I)Vyjw5c zSf1;w1!NFCdGb-k2dN~GlS+A}??Spz$5ry}V?J#@K)evehrFk<i!@MdJ+Sp0h<5x9 z0=Us?p)cwg2R>e0Um*TQlU#D<Gr%voC)TqZ^MJ!R#1-`=oYpaEVqI!o_VngspRTg? z(aG1u(0O+aM;&q`8sh!Qu@=ZK+o{K#sKilT;tbU`nXads|M<o&%2Xot)zyTn1XD_j zPH{yWfG2#9Ye3Ofc|$>TmlM}^#v6(Acv*R@wXD3hy==YssIv8HwzVZJUWxQBq^FTy zUbbF|jL_Oc*K{y5;2ci=`r%CW@=VT6>K0-?KPF?NFidE16c`jWsuMs`0AuH)iC||! z6)>bKm2fBfZtWLq1a!+oCWHG}MfdL?qi`;$4^-;@QX?d--?KFSg??%L0Gf&FA60?A z!Z}xcinfR&HaU+V=utfA;C{Kf3QDryJF3d!&wxJAma`{8ZPEUK1CAg6(GH@{qWYN% z2KwEz=~>4BpKEzd1(y<F2LFwV+Ot7>1?c_mcRU4?3XgrXZ+b7JpL%&{GO5Bzc;Fat z@aYcjA+hZ;nhgc!BanY8&rm;Co~a+s%@r3X=N%@AX$Y$Ru0T3}lijoFi|wndkIEI0 zn08ZOJ@o!<hkrRzDGY<rU4)TFZ#|;%bfiQzIfvm-S`IQwaEEQ+U<8AuF_E~xNObU^ z1ft@zM+*3}*<S+je`DB)$_1}42lGdIF#T0M03h}O`Rg$k9tZ4$`hxXAWEEH+tCa54 ze}-X`)M-vr4;{UCdD%48YOswhx6rSn8fqG|-W^X|P!4L9c;f}-a_C#gb1wczF7z(` zhm0p38a{kj-H|!-72yx1eW*6Y@F6P=tvURYHC}noO^Ql}zvvHJ-=imCj4<8)F!2o@ z0<NF6x<DF;N9UvvzOwp5-8Amu*U<wlBv>H)$-lY;u1s46Qbx%yZ~Vl+(QK}MvC`n_ zhV0>lqyZCfnJW(r+(e1ZZod8#jF0<I8r>GUJ%GwQcsM@L!T(SGREG<|<@tg50hOuA z0je{b5Hhb@HZ}YJSO|9~2n|P3`T9Ste^#OX_5BIVHx^DB%=`;arCH3)<OKNvr=72v zb8!aSBqu*2yPczsjCNE?xskNX&sfl$rx+ewqWZp4W2}YiG>oAZ;n`l4$Q|cdHsjgy z&*Yim3%HU;JPnbB8C8jf=m^8w1vBf>J}~J0i`n?o_#Keq=va5zw4GU<R?~V4A>7qa zLVkG~*JV<xx_L>tUEbxJNl_&DRZ~Sv{<uKn(fKP^{@_}?DSOG&zeulcyrfyM3iqAM zST>{y$UaX`)?Su9#bFGP-&LO4e0aeRrq_jzvcB{|%KC_Y?Btsq!aj7-^j&#)2*2^a ztwAP2&Rjeo|7rpL4e|BZt3Y-^d|7|F^2V+Az*UHU51W>CYbrO%OR-7-Qhb?5H}t<p z#zR$>BGIoan8R%dlUqfyM6&aJF#ZQlCPgSv7X6=-*JFV%$m@wcBNpx5NGF5LVW^et z`LkgNlIp;JkANtv>t<Qdp!~Mk$CIKcs6H)s+=Z*MVh^iMKBM;G5vk?#@o2(q934hG z_C#8;I&Sql<!8P=8Xv^&&_<{369a&D(DN!e@lH1Qd)MIa+XiWa50%v)$ObtE0QAK@ z3Q)Uj7&iEbZ?HYP!S%Gk2d%-_gAK8V+~-4pb4F~o26ruwJ;LM8>|(fffz6O@(e`q{ znVsG#<wz&r$uRp6`SJ$b1{Mpn*0JFpl3vF4OSTvZq|B&d6iwJJr$ixeZbT;vc_ElC z_L&OU8Tdu)%Fp;g3HlpMXaRj?Y#;As&?`#Hcu`itAV4drcyj2Fmta}x<sKCv9Z(EN zfRT<07|Y0sxH-F@3;vh!k_qY)S}U_d&fqhZOwbrc+lV6)<tFS=`7^^rF#G!J90jaf zp8lytSmw&_8U?bEtkdO1!xL;?UcgQlgpBvMsC286YHanmp|}e_G~QRGt~;sR?PpT> zGS0<phHJw<3PE=Nc0YRdmF{F?J;~*F;}dE(qJMLN$ze~y8#X^te=eAT(f8clj3+d@ z8XK6(Gj=LLDi(6|c5z*@`iNGz;A4nhY^Xm6Rdp0I^phswE*P^7ELlAQC6zk9p{03= zoh!}Hz+l`=J2tD9mekR@4`NZB|9}sb1@F|EvN9kC3iP)Cf3~C08OC;?fc{LjwwAWW zr5r0L{hQ-bg2N9U`(d|lac|OsNl_5zEr#Pa4fIBS81}S9-VRUKjh)7K+@)vGe@-Zq z)jzmP$IX+~$9=Za#*CKQ<jiSd>~ov^l6fwgu@O{L%Qm#!k<8)AX+;;3M21|;Q~N!7 zp<YjBCptBl{NXj=)u>y5L#_x%B9B8iCjx&QL10I$1;21qV<!LTnBJvxQx%?8488?e znkf$eOYz9K=W7|A7nEt0Z!@26iBs`mPZz0mm2eL#>5HS7TNY|UjRv$jO+LtJbwbc; zDatg-frj=bxtbqS7qp=P<-)YYPslpY2lbKmIpgH>*ULWS4TvZAeV!u%!`H7@ebkT0 zE5t)lK0sdm==pqkl}4*JgOni;o;)ylwY?8J9-zE>AGDAwuXcM_0qd5H#ut`XtNC8b zU(JaIB_m>gDgJd`PY#Vehv5hBk5tGwR-k!y?`(XSnilFO5&LoV?#DatB1l0u+4=e! z=|QRa8zeeo<^J{q<!1OuZ3D7AV!wp?*sOy2l^A#0WIEK?KovAsP&1^P@19%?xKI{~ z_8P0kmP4^}s%K$*j4s%p!Q=H`GWjl%P9AaJpls~$tr}b5aa0qv2e6=UeF7+1rmMlM z@69-r+2)7F{y{Z|DhRkM0e2eBLeDQ`UkCV7{Nq%TLqKW4{nF_CPr~MZANZdK@m(Tc z$3Nax$7#y3e}nTXkt;EpWWAHV3>TTPoChpPx2b3bDke8TJkR@RCCRiw{&YzwnY-m> zBx~sY4ki{=ItNiYk0Lj-1#@_wWi8i>>tI!jDU9fVN7j$C4yMStkq+ABJm0}HYL#S# z0kz9f>|nmGiV&Qf?EP>_fqJQ@(Qk@z{K2|u!?qQ7wPa#a^)DE%c0B6o=e_9Ry3@hj zWc6)UsTGyzqL!MllKyUrRBDy0eJ%mO0=|ly0(O~#Tk{-7+T;`z&6MX4rB!N~vz#yk zS4x}Zc3$qe>@-kb^x2F1ZImC}s>p1S>o0f1BP`zsES|k^)EVCk6XTX*k!hAIHV)n> z)Fr0{OHQ-uFMcI$mN{%IiQ};kL>qkvvRW5)4U3HoFcUpk>PFlw6MZA6<3o#N1>8qY z<#fqa$3O-bvM+%XlUJvp^BFZ2Q3@|sUT_g9L?EK2!;LR;L{9m!pucwG_f!_YL(8x? zA4X1$=%t-%?j@>JI3>!J*YV`z6HoY%+5|KwTpA(&;G)d%1b?eZr`J+dcmDIas-<?z zEk|eXhgJqa(41EL5{twA91ER8*csS>N()zvzqmxXN>f5<IR!-F<yjza<S{a0-ugd) z@e@>#oytUxU*aeEf$O1!C+Fo3zNGKLzd}b5ZJ?H;a?TUl`=Xc#4jmW^<*&`fEOjx3 z?{C2Lwz)`@%Mv((of6?5-+0BqpuJtAno*aZ11gYmn1PX&jR8ghe?<iUS4QxE5?PM; zpX2fWrl$0Vf9HPy4HjI_{%@b}0IH0Dx$2f;LZBh3!#LYM<Aj6mk!SOf`#Z88{uf{W zruRwuKMx0Hr9S2OrH<iQ(_Ext5A`T@;K<6o^(<Rj<(S4g4a1UMD&O&>!GN>f94m1N zH7d!G*P%R9Cq<q-3-h04Q^oUPL#@D~w_Nv+Om1jlh&rjf<<nJ8e-GvHK>Ue*zm53t z<q>ah@v4+~TN_YN4z+#t^+AYrAeq)%uD*tRU9$Ggm*;)KKYr%_TKGeJa!v0ezJKP; zx}laWAN>Ao6u+v=kNel3f6#5p|Gvj!TIu?vV|v-D{l}2gv8bC|57)O``JMYaBG3D? zf1nJ|04ta8Fg6<NuL_Urd+|g0HrL)R*xu^)|IaG#?NPep+<rB6(E|S80rSVj&Hpz3 zpy}WZ+H8I#e!T22#2=nt$?Mq1k`7K6_1HuS7KR>qguhMrVg10Ax{%ib@=j(2QytQm zr=NcTemA?}--X}xc|7KygWr)B!yDjt8~z?3em7-VWhJgf-hQa@N_gbHQl9z0Wgpey z;U*sXwa2_ikBe`YoQT>^5yyT6Nxmyc$$A$@UBPNK=3XDZ49-~4NvG`hL+vIl6Avov zpQ~b*W-oLT)F(!vFR42P)x6D;E;}++w%wRY{8wJK9bZnXLYWeo0j1O%4Ae@xq**n3 zjnl*mjij_U7<zE2fqa{-QuCJsoqu)e((!7{N7$gTzLZWT`kePapVvyh!_GQlY5sxQ zW4D8AGoRnXFxw$0u3#kUOYoUUGJ*RHTdC({VvlY5;y&8@0#`-#B`2%F-zo3j%l(B_ zbZxSO8TuLQ7`%@p1?2~qve=hlF@6TcbUO?aWj&>&=669)x*?d7dB218&JNHT?$f&% zzZ&@~x@EQ{4|zlrj)*uqX!UB{pR(>A%t=<Cd!>#-{r|7RmE$^q|Nr#R%LM;F^P>KL z*I1hz$(&`VmU&5Gt3JV6?3Cwlf~TSWAK`%c84S1urRyfYgJT4cG&-leSYpxLoDbgn zZjfNAnSAyvCV%FW6G?t1wA`RhY&m6Wt?&1*FeePWSy$rmYd@M6xeXg|;jcTGS70<P z(#V`|qcJV)YjnzpN!-#%>y}13)6RQ1dCAEpNY30pgqQ@eeQ^n|66y({)K7gb=tl<L z3<HmM%=G*v1g}ZH76GqGh5(3;*yWfYT<yxnBQuJQn&fR(9)%o3;CO5OY;9eAY#e{s zfw|p&eOiD5OSlCkd^fMqf05OVmAR0uJkLxFaKv&uRrvdxzgTs0WBo^dpmDoq`{aZs z;iV#V&{9$0&DMz|e>TR~W)t(kP$kyN8Q3UptmifMhGutHH>=fYHD)!&tF#*E+Ep8A zo#UD0ta|92N$4DpNkNFBl|8i;{$yMqJI8iTiERDbFIFv?%PZKm-zE3)bBSIpw&Xru zDfWuIvgnP>Yu#nP`T@#Efphsoe}XG*U!T7uxg&)|J^!^U-?iI?z*Zv38{iSS;83F( z_aUS1f~u0T%l?jbqdC`TPH9Qm73u68ct6|FketmKNa%N>rYd+AX`j1G@dDD(^FJwD zuf76Myr%yel&^ojMDOKVa^F~vY3MB6Q~OG4$y{DkPT03p*!gc`{p0LoU4@&UOYUPK z2O!_ZdMD^{5w=NvkLB7U|Fu3||D5e^tL^e%yFFcp&KubhNnWOIFC>U`fpZ$`@&19$ zLP9_5dcRTjt1&8=^ymbP6PZIj*KXi@^&&3;BebIDM|CrxBA%QbN569I-M(DXPGFpa zRUl3Rpl@C_LhJ)JV_SUR@q~VtJ&a8~z13a2<-UxZ7W8OWjiZMu^Z@os!3i5B4ISpQ z1YKdNM9EQvrM1_WbC;EG^D^A{){iVX4}j*zJs?v@F^`#tlO7^`S?K0{?WgO{VYAa% zlab-zZv1P)=}aVIi;{~a)>R-wj$;Zf;+gxx2N>RuP8GuTD`$a&OdpBrdzG3Geb4J7 zx@;|#T3Q9FKIWfK&)R=`FuMO%F7?0@;OLQ8zmLUT)gQQs_YL%)2s|vQ1q$W^t{&;| ztt~&^w^q!5p>xK0hAM2`7Vw98{TBMOY>HTzKK6gKJ@$|LCL;}I>+6yBwEPWPp8hyz zj^ykY<(6kSLZW8v0hb@C<*}17!1jk}`Kkez=lfJf^A&O|C@TA2(qi^i+Vn+u)4ks2 zOv?r~=k_4$7FJ06nIuy0*ey6eq{pJ|jmm1TQd(c&E?S@Mh4iNJgGJ~qYVX`ZCJPXp zJKt40NVC7v9Z;*mn0CWOhh1>dF^2JFNG#_cP(=l5;2p}-l|R!+sFbsw_i_YkNJovT z&*;*0WT@S?EvGti{n=WtM;6qm!k!CHz`wwA-~OM*f0zBGah_kz{_4X&_kY_zUBLf? z%{$Np{raJNR9QYSe||xKO;rAv|EE$;>e8)f`hP0q>pUW@#J_s}pFqCXfZE}^&WpEv zZnVW)!b<6?Q@uVd--kG`Wfv<L*6Fm2gwov*Td0XMY8Sd#%cos@;(lbPWc77czf(Rx z!__YyYq=cOQ3Ec6CNIv2Eog{6?LMD&L6P~vj~h@(G5B#!`w$s~k4W%i4VK*KD!vcF ziY9EAlTav}@jef`c6BR$=`wyjKe&wlX^+D8`2gY>O(Wm&8kM~%I21OX<sAx?MQ||y z(@DUns6cNix$=ht3lVzR*UAhmq;Wb_{oD|t4X#$ey5$p)MBe&H`oTtJFWgyO_{3kl zUq%5btBwFecppT!y0`Fv*}L#}xN*36#=+1Fk=q3_=1c*ZesYBIjQ6q`dRot6_c{Gf zU0MQ_DnFi)5oJ99f;Af$$rzg^iJPDR^MX(M7T!~xequuyz<2?cUODm>j#aHM67Ho4 zV4OCS6j|rUu#P75E*`5Wa~{elCH$D>>d!|jR#ZO&gZmgNr*_SKg&;ajF#|gZZy0@g z>l*k~f2ywujhNr+XRhyZV^C(_j`cKlN+TC-OSpL)(X0;!c=~9d&uJ-!i*(u_LAti` zHr*5nd)O+0Si6KiZWYHa{^z#_8`;;<7DK6{@CPuy0T{Dexdp8(tl4%@W)dNE+@ubz zOVn*+?MKq(?H}Rf&<V^;R)1(%<1=PIeb%q7wCT?~Hn5ZN>jLIQT?H=iu~Uv`4xhHo z=$i`3>ZXg`JpAz{&ch*o*faDqm<K+m0BPsuJtarX^yo=eCk?1}IrOwp&Ve6sFa9AH zveAQmqnPk^xf!KqXj;&^9>MjqJc;_M+9T!m?7^D9)`_kOTCwYkZKCHzC%T4JZK7%M z*hJrdxK1<;4mTD0nit?p$sykjxav9<z|66t^}7Z7&7Qn8OpApz+YQQGmpgek<Rs`w zANV=&!3Pu3thOGV*0ljvW;`>K)nhNwNod8iCKrX%+A6mm9ZqYj+{U~D)7mQ2nZpeN zgO|RxUD>%FPv)<!`71l%bps@Y0k3P(Sx*D&i&IhZcTu)`pFD390+POXCT4@Lgw-n& z+^oUouK?m?9?RMcl;gL}z;_R$DAEGptZj+s#`;PYzf#4?Tun-pLiKqv-uP#^duGT_ zEQY#l44q$z&NJUMjA~94qjL@gMnBU`eU-UFszS(ZN}ssd1Ak7mTxke(2|6;U&qs4! z4y$ig9>8MY2;#a@gNwzj>Ce!#2Te1hplwdjjz*Uj#j6W^0*|HR;_!~xwLmsyVGBsI z8C%QOO7}WQ@cb}=tgq;YsgH9{8o$W!s$VgXaq0p}a&tOMLv?}p-3idSOw|eXE9|fI z5q}FYm>a))axbPqwKS(M4S0RtBV3;^yd!^o{tyj&CQHe(-3PWlk1Y618Qr^?N}E`$ zt&t-K@6l}n$xB3xRb-{)oEfAns33>!T3~%%P5ks5zx#{ZG4?|7yGt7tv$Uh5^Ap;0 z@FEY~fAH|ZAX;bqO~ZHteKlxL*E0GK6q=&;Ur=6Vt%tIKv%%tPqWU$}Y4u+?5%D58 z_?3|!3}3!R>5bu|R7gKiwFaus^4JG>P=OvUOhp$rhz@FYEIQ5a@Gx~Zrs9NV<|Gv5 zJ4>+z#-)F#4Y@SdDf6xlL<hEa65~1(6Bo$Qtn8Zq@CMhA%F)Qt6b<b<AFXAunS<hp zO7V(ST6Wr*0cTT?;rF)!{3t#<0)K+7SrFvU?B-EW(EcAVKK3BMl($*<*xC;x7a#Mn z-{qwi@bTr=fyfH+u|F$2e7tsjU-&o$trfz@<|A_PF`i1SyAKne-Mn*?=O1yYy?^B9 zBE>7zRPz<2<SOn+C{M)NZ8irJddB;!Rt)&hU=e@{HOsFKiR*(Y9*1qh$?aGd&c`Th zWsJ<Is=>d-mRsgR^sIn<O%eIi2q3a{2t=y^aS5sfC~T9*whB-<t_}UQn!Fzp>9WlW z8|`vucIkx8cojAxAMFGg6Y_TuPi-jE2q@nF?@{%HLD;Os1$_yz$=iZYTA7@zu0Gdv zHsHBQULCKNR5P@*CfVtBFHO0Wk2rzWR`ps|ybHw}<i4<YgOo&ycgfdS+-}&fkiTiT z?zY+S$WD#Kdst{Cvw<#5CS_etm&|3(=YHZ1-}(-iZ+IpeUJf0qY?_8<BU!e)!rd&t zxNh=d+$`UM>KIOQV%%aZiy#Ku*7>A~w4mQS&A2dj7m@M8FJWwaqlw1GbX`bh)J`{h zS}h4@QXi`b^-Z?R^;bDWp(UI)tX^a|YL(<q06z+|c^*S-$C?ZM3g&7<{dthY)`foN zSuG9q6H#J0DrO%vY?ZsvYN3;WS0bH5l*{ljL#qc$@pJ_l&q7RGEFG|~GUqWNqE%!$ z;W+{J;8UbTAy78+11tp3D!fN$t1*H4n7^PQo6?hrE!Io=7iW$z_oPwhVl2hbiK&S+ zp{UbDzT7d3-YuRZUD$tGAq{rbCh`~J?!9u^_8JPP0r)$;Ka*?FK5WF+AP`TF?1LAs zZ7D3|&m9YH0A<nshN|HFxfXiYgWouh%IFHctW$741C!LnGa5XucF!^PqMv+BrAVa} zuOwwLJI2AlVQ3i<e$QPmZ(vQ+>H70u$*~$-;D_SZ({cqGzR-DmTUcEow%<grY$VRz z%1>R|f@D<T0*p~M*1iM4InV|<a76woj?KYT94iX&kVWs~>N=YuWwoI_(k1K7b*DI5 zBa)!go*={f6{wWCl{wI4CFXiLf^a0Om!72^v^m~JAJ=Lh#_6pGh26BtJ;>3+B75g| z(<Ya*8(x4}H(9`UPHAX>(ona2)l^(L0hh{AAPp!DUb=ol7yy(B@(G-1g1Cil1#zWa z><UO3lQ2&Oj!v|lVK$o_d#sAh26>BtFm^eS@lay+S&#>baqj??EpoU7>lVxtNEN91 zE%Ms6p~P;HOW77r{GI0-)dk?^Xjpv)(W4W@bJo!bhxiuR-8V7<ADM4Lm?}7m029dG zNYagMInB7QLB1Uz;CYXLbqgTi0h_`jPFDmp%Q43|1iWboIMs{Ecw#ocF`y=?-XmB= zb@ViJnjQsgC9-A&1x<1>TjNoab6m5Ef|GIkuUg&%K|zy@^o@KEAF3EA3UZE+w4isD zSDkY3wmI^u-1C=q{~m66nNhQCgs;HdedyPZX!-5>C|`s23&|f-K~^$+33TWDgA8#C z&MRyRJKxclJFoC_C>s!$#m+0-?qi{TzD<AU6*i}*%$*mZW{K|}Ilv{#o0{UqauI#F zKY8|ldw;`h2L>wsQ_d^+^-b3^V!t1IEn5B>YEebYlm67{td<V%Z_10m@3Q#&N$YF; zJydY0?s}Jt#^0lUr@OyHRr+#F?EHA+^YO-K<kZH%a~A7{<f7Azu+$j0c_l{Zr+(Zt ze356jq)m}$U-d^%kfcT9@tc0}pC8Y@`1JqoXF?9)@-5u1f;B!gguA7NEWza&7fSue z*aLgZ1?}xXp38)Qk3xGaqMwPH3eJVHZ(#3NM);*C&hvF@O6Kop?z$&L_rHEWvs~`D zOs#nCXO_x&RALn9)!WYu?vo1fvsMB8P*z0GS9yFz<qh4>#pO)|e`u?Z^Bb@J{NF|I zC;s!|)9*4B3SuAhi1_py_`3rL0ZRIdPfxI{PMwx_^H<~P&BrV0r5sD;xUYk}=;TNa zz2^$J6!iudPF|t-={B@zs)EVhh-ql5BRwmTM7dRM4G8u%Hqvg=QVo@$kp0B@Oq+fJ zc0l|zHy31|-JRZ|ahIC(1(UcBc?~QRe593I@6;bb<bMACBtyPD3T%ne9Rp~FBHJC1 z8z0>fdzHvb#9nRGXhQVUBQH*7INxSo8%=0VBFO}9Wv)-BKNi-+INk}8l53^}nt1i6 zKULip@ynOe@c)KyV}^bPCi?s6Qz81sVJ!CbuoypsVqusxduo@Brv^P~JV3kLFg3Kh z+vUPT@T-w+ySd@1=*%+S>k&=R19p)FZF^7F-HwJ*vU+D51-F%UyB}5(QG`OR65lJd zuUh2*=0&%a*qxTEV$Q3WiA;*qk*uCQ+TrC+1~Alb6b_i5!GK%PQEr&@t8)9roDc5g zIQ5lb(yz*amoRy4pPWeYGoj_O!lZ9M$?Oe`=G5PXqiL3leh`kPSuSQ?fzdR}iOgA- zqxnz~QGJEAn3C?v9L-uDgc<r7jAo9GCXF4h<5@2tnI;)~sUHhWoDp<<AB^y)tk8T0 z<>M$L(Agxn)naZ=VH?@A)+E!JqgztR>VKT5<D}g^<-Ty7Q{?JB!*NcLYnfMIoKxf? z=D_c3tgpECQ=gJ=q9?G4#)Q9`d6puO#J>gsNYaiVgUMKqf_qz9(GD2Y^_G{_sZo%u zzCmHsOAY|$EB6Lq+Pw#|M*yiMyoVAU^{1mjpuZ%uK0C_7ffY-!p<&20;&GjwX`LN~ z+UV@`NM}rvNs-Pp;iBx$eyjV*(HkIicU}%>LpL!KL)OW=>K7U!9-MZFC+1e72SjNz z2~pY%@yBvoE{yj`B=x72p>BfoGnrnp6`c;4EIjsC-^uAFPOk-HMo$Ci!GOBnZOf*) zVWv*tylWUOhFL!=#A%$vycYK?yJ@sg+iOrFf>Yk(k%LpMcRCw-h?#(59&frt>vw@n z5e)wc#$#;;BV`gsy3~*K79c2*<WF91r})s3)+4=c6uh{Xae$GG(=}so*|c9Eqi!<U z#tm>|8{jCL$KTu&4v<Om5cdB305#!3l!y%QwZVA<)M5!X^dd7kKuA6gaNz_UpkCdB z6b~V$l1Ug~+7Iw?peB*zPaklP1U6BJjc_{^5Jiy=zCr6mPY7_M9d!<|ZeK@h(Msr+ zN$8eg``ScIo6w(*g5n!$#*WBP#2yfWtr;6=#^ADgtkH(pY1@QF^n_4wihyA{iKLw( zsL0$G7Som%A-C=V+`50o6*)QgYtDwqIXBEfD19U<{&Hg4K;|>R^__l1=V+h$(`VyB z;9+`x;l>qTHa?lCUyQP4_dhe@#T6e%&K~Tp747UnMHFoc>}Cp51r8wmEd)t(zNR^A z1K1_mIdCerqbGTj%V0vk6EzjVaeyZ;2#*8kK?T0w@<~~FJ%70JpOkGMU;C4?<Mot6 z708qM?(aIk)CP`1-j1opdLBCvzK4)V^3&l4M+Txt5cUiDJU(b<`>bXbur6iD4%!rd z;wVPuH4cr0jn$tN_TkS+mG>f7F=a;(8ud6w-CQ2(0HS^qq9Y2!Gw0j5?eGWD(P<+r zU*}fM@+10<2Zb9kiKPDYL^>p_odQnQ`Gsqg-#^!H;;ej~+N>5^eTxTci~PyK0nQTR zaDH)^GI>9^|FR<fColzys@$_7BmVR3n^_<O)1RaET%}hYz5cArHqIZyGl$ZZyiH>Y zd(CYR^?IOO?^y@sI@qs|#QQHD4t>_#D$)Kz`)RfI>({`(pa*^$!O4e*G@<eS1B=g> zXNiwK_v_1bzn-s(**FU6_rZ9SCT{>?txo*D#ru~Jxc!mZJ_O)u#rszbxIE+i1C;dR z9~g~Eu!i&JH)`)59+b<+pR<?E0_@;%I1qXbSr~t~LxVr%_Gd%;!-W~n=)fKi=oh5l zr@egdG5;=md1pWf#F&RAJ3c?^ODuGr8$4BPKkWauKX^ECM(g*RJ1C<=?kM@?#N+1r zS8{)Qe+y`#pg%MypD#c9y`QhJzboYb<j@;0iORxK(LpJz7V_67wkpm)O3Op{U#<2& zK-66^eq?)~E!hV018DA%hY{=R3unnw@DulX(|%d7YgTYl57M$k?t;k#FGCtt-3(>Z zx9(r}QU4T}mVMW+3OY8JyX2t*)PL87#pZ&^QBO{{90izkapby3gHs+3QtbGQGoI){ z_nw??ul+Mo#;NXuRdc3wBQjx~sDGXCbQw-i5&j#BBdNnSSg`M8=ii6PO<~xhzU0s) zt(+3RAn4EX0IiX;JR{f&XQOxR;Jo`3G#{cs176xXVoNC*HJs~St#IZKq1_<X{9Za} z&VjDLRBq)i90J|v;~yh8CW#nE*sA6Ca^+ihs9jo@DMhWzV1ATjMrl?0c6e<apqt!m zyW<D%t;$5R{OMbGN-K7kVtGdFuE5yuBAkh#SKQ1Q;pO$(NZpgAyx5!0o3+t`n;TwZ zzlOd(0}~qineD5(EQjTOzo+)prt9Y;^sB*9%@Yal0x4*^!A~&vf>TocL|_iV9Dn2% z{E8{c!YIa!y0{&p-BI>-ISBn^cF!paNK<k)8>wUtPkC&Ka=;u6|GM;-b*a+945C|_ zxs;k2^M|mV;VeCM!4&+_t(tDBUaPSGFOUzi78Xp;a{K1UpXhq|DSZvW0$+f?=wnuX zPRk8rlsD4gjUQhW@P^c2ugK7*e2U_j+6dvbS+yRybj{rOv=H6|WrdSox$ru9f^PqG zA-av|e?z^5If#AOF!J>S)L*^(R@d07h`bsLnoSvhwnzA;2b2TfZ}rB9sgp>M)g`a& zuB4U%v34R5rAv61g{MT3?ME{kuh3cSt3y~2%e9tfg8~kKW*g`qRctvTAN0DGFg_-& zWSt&nWX=7To7No`K2fwi0MOZ?@;WC{N~k@n*Lk75cs=M-DURCxzW5c&l$`akZfQUG zSohEfJ{I8uOLP+AV_QsKh>uMaT}AP+(rTw=_tFSH`sx3gv624w&+VV~PT2oVnq9R2 zNxuI%!v@}eMYR7#qjJZe)&C}a_rKC=WBjYp|1F0^$DiAOYrwZO@ov)W;^X)I&siff z{_)BLc2`^*7+{2T2oi;??H<ViPizD6BVG?7-6NwNLcVs7c+uqlx(_=sOSKb4MHbIn ziACk!aC$~JgAm!s&i2tI88nYI3H&o2Qql2GC*yB+BArJQH2f%%pj~8ca4n|oqf2g3 zfU(c==b;#5zWreIu6u4^c&she`yH$ZhP*>9*-gg_0!IWa2Qdb+RYwpE>u-q7YK%P| z4(q4ZcUm^p(LA0l4K#E<3cOoiM0WJ`-qucmmn{f$uKcdi`B8bVi#vtXxwR3Z*wv~- zKrw1%T#xLMC8X+^owrM+gFDS?;+?Z0Vf;!}(4Pt=?K2Ig?~#>=CJ&bLu_lN_W<R=8 z_b1ed(OoEP;cD0eB$U6;otoBu7#(1QQq&<WkAPa%@v@A$>%tNTn6QCz;(rQ_|H6Z! z<F8hxjEp}^DAhB&$oQ=$#y>b5f1&=?jrO--*PQ;I$`S$_74PrwRukt|`|0nF10&=6 zQEq>SXZ816W)~jc4By|Puk}5?QPKY1*(GOuZ%27vs*CrxiSO^|NPpu=Pa40jq|{zF z`7=Zs{EBm*tX^<{4OGrVr-*D<@o)zOhp`u8&>>?48eq2^7lEQ%mR+NqFLEa;X0Bmt zPB`e6UX<b7rdzi>=IflzIzKb&!{QA(Jxd#a?hE;6Af*6yn{@B2xPVSPu}#jws65-J z<hyL7z&24zHee3+D@f0jYg~lK407TqkH5>6->Batz(V={rOJRGO@|Ws7;T|Zk@s0a zqcnQtORXG+kkxp9*Z98hzyJOY|I0>%`2P+hTt5C^LwLC#eYc!>wZs3`z|a8kKib#% z1f6B$zXv1@p+WpV99NJG|3{%DhHCi#v?PlE``Ac9{9nVI9Q=2zTEmuu;`moWI7I>J zkj){iB0+}1d!kW)!GsZtei?jNR$y?B{0isKlsv3GyqgvGV@`rR1&P2ej_SL`%Rjc7 z<teXMr~T0;f(H!Gq}43{*lLzvxtiri!_~Js<DImc<sVzk@+%9L5BdE-T*?D@%k$=6 z@2c$u-wN5>(F^=jSab8o7q)jS%-G!arY=>x+n&QwtHYjarC-Z*ik`SVwzDv{tVG(k zVg$Y&H>X@Y3QP~a<ochMRg^o8u_;bA;Bjqzof0{3XioIVw|*lZ8Ww^WX@~C#zez*= zPyE_ELq7v`;z#r=P&eF<?v<=l;`YF{KK2cb^a#z5K_kVFpW6?J2PD|5+-Rgh4s8r1 z*mc~ig;=>h0kcyd1+Q(8(SX;>vIe;$sj{qD-fvrpXoWE$i2NjoQy|RUsNGva6Px99 z1m2@lZk75xeq*{?rK=Po2$f1QKfym)OVhPE2?}r}K*(H_pVKUBFlRh-{4+-A`Zm9# z>j%*+uV3y|VO~;bT~CE9!>kTkj{nN)=^S@$$llv=nvD{sE+B<)nX(7Sx6(W;S=atu zMP{x(S_!&@{DM9>VMh+FL**Z)nuLm_8VlJL5QvzPUQevK{z6xO2Uq`a7LV3{>(D;x z8@)&UAN%wve?$H_Q2XhSUG_rrMg1jV`6bXIa``DL|DP?GKNk3bV*%_1;`eMu(Qi+Q z_aLoPs_5r)@s*$HXnAKvtXsZe8L}4>c~;NZr%Toa@Bz0#up75*%OSz%graR3?t%dA zY5pL4U_RPp;bowU;MoHhM7i@BjF<B&BZ(Uetb<%CWIv4$2IXx=7T4*6N^%O;S^P+& zf04NT0RO|C1Y1!)-|@3Bmg!s@L|QiZF5;jQliN@acWyxH*m;jw3kE<005g*rYIQ8l z#suH028aE%*GEG0mWGz?peNATwgNq5E+-p0bua~6jcv$e6v@^KQu4qGka*U5J#}dh zC6VoOo4nM$=jcT0cy)Vz%AUthAI@NugLEu=9*SSmx&E*c4PhN=i90g!5V&d_v+j8k z-8RYU4UryCZd5IwV3!+p;>kVNW6>+@`)`-w`|&T<2xonvwl{P!G89$GJ?FE`sVIZr zov8l+e;;PQQ;IoC-lt&02BdSbVZBpcqu0<&)e<Pz_+e6Y1N-5ns%_r$RL!0zu>I?S zw0L5+CWHH{?L<hY+)D+0dIa_62-|ZHR=RIJNZg&Flo=8dvn`y#J9(Rc@fL`yRbB4- zJpj{yxo(gbS8{aqp`$0E-^ib$`7M^;jLNR*dVZtI1q3BIc}hHK56fJB)n}0IeBeh5 z&d|>QFAKSpptM|vVyNBV%K;#MBZ+5@;t30=y46aZ8cDj>lE!Nimu)?xv#@?AB$O<y z{~rHH$JRK9Uq9V9J|oFbd%&^&GJLx8jhAtj5;Uai&tm891{Ms8zubL+2Y$^hGV#Q9 znvP>p$hIDF#8RV~;>jeVE944@bse`s;<Kd__-m*?6ZITc_}QSaxCDaLP=5ygU9N-h zXE1d^akmqe1C-@D(wtoF`;$RDgUJ>Gbnm762y>MR$nwiRQ4}AAGT~sy^H<XDzqn%a zaIltM{SqSyk`_6YOjdA|mwoP~0&a@Y+OrvGChed3bSp1sZbgA%O`nAC%<qVCCo}ZO z=f&LZk0wN2QY=v%8(+hC6?w%`@<s`YY@FK#6vnJR-RNZgmLasW@tt|YFY-#Vhh6Co zz-9EzwFTxZ)QH*=d3RGE{blr23VeWy`9~%~h=Rn%0#gbvP|t59l|)MIX{F+kQv61# zUj9kW)xycy{3TmoK`tBP%g)fxVA|hOHBT$Zjwp#XM){)XoZm?5;h)4@{*m3RlthyD zv81#n>6NjlQ^jA&xm~Pt;x`@s!5Efaeb-c_m2NGi*RjemkYhG#SMAvED3)19ZUs#= z)bp`I#|8Z4F#duma=4mH2xL02(@_7tup~cOvMsmdp@zpwUlc<O>3<nVj(x1z+WjV< z=)_cnMQ5`bYA{Jo_>I$VGiT;dOy<#?1do$Twg66M=4WbmCouC;W*Y54b{WF2(;=Sy zO-Di=U0P{JRC1FqU6*?b{1B^vk=~%?N`b(HN(yUP7Jdt=Cu4T!@*|-^Uf3Aps;fF^ zJI8mMFVw7su&xj5>DPXjoA<{6^6aTVzmX4cPfWl0)Mt+wm_6_PF_!|iIQ5--*n#uM zT!BW=nHtks`tMk1GyUp^<Aat&7ED4*diw(O!!ed2n`0fv8W`$_ucK7JW}$w_Vs;Tk z5&iJw%`l67>4%k}zNdSLBEMYb#(P>Nf#4~j9{C8@F%=vy>!(d0#&YJ(PM81``@Ks^ z)XZNfMkU^Z73`PU{6+Qslcs7{MfB6ENGDLjVNyP|c?jn8{qU_fy2UVGmLV@<Lm0?R zgDzpfU?=%Dl=9vmc%-w=o3nkhe>R1@sOue4Hf=aKN6%63s4N6Ex`)e)>BKlMzqS5I zlSY86wBW{DG~W=5-U-NV^nbbfIq`>a&}U@$SHwN>fyoP^{z3?gVCpwE5O9hL=)Eyg zYW9biHAj$BP{{m)Q<tXj3GGXj8(J;y2~^*w>h{o~s!MipuEGV7u7G8V_ApX=a1Mgk zKc>_QHsJLdrfw8X%RJ4gr@CY^#49ur2f=1g0UGL0@kM6nXE3fubmhQoZsjxuUk)<l zC@xlBm95r%r^?3d2UOYWjV56QNQ}cLmCg#xbxRmk&?3Kse$h~Wq;GYGeg?gN4@knJ zvkYm;{814WhP`L5B4|<X^FLUEyJp-$s;4&?3DhoI<h@EpnU3|{Bxdt-6*tUy4g4$R zVOdgQlZ=VfZjwjItVX0QvZK%Pt>Z>^xeG3M{T(FAx!UDHL6`OXbSL)fpT@U;O_%T; zi5?QMnf0l%X^5<_l`f-^A8rWUvfyJkiJ85*Bt-_!QOHIHV~ebfkIY0HIPPfye$7Lp zkR|HlgaX`C?`|C<0ZQve4t&4_td{7_YH`!Kfe(>KzL8yk*pS;dB}E$HPF;{fJuD^6 zXw(e&GCE=T;ZEy(dzQRaH<?!xloL`lX@|al!SE7y!`sk<8LrSc^kpO!wuenVkvID| zFFStc|F!33LwV`_(~M7`Tv@WQGCFPYQY7Fghr}=Pjx`^k)a40)DzQ{-qE*szq!e4P zi}yDnzrXGa`|hvRs-)$;_g25Zl@)p8JGGzwM*05E{|fyj^84$(pzrZ@S{3L&U!lKE z^ZRS)r@y0oe>ePf_3=3iya{O^rI(6+`V*^?mTkU5f1~sJYdybjd|u%Dd*t2KAK$ZI z&l}&Ue)=o*{f+qw{T-X%U*~y!kFVLPq~+yzR)2gSK=|g&-%<Vax2^B*l&{d=r2PJ5 zV&CIyw<_@S;nLW``cf#5si*M>_fu#T<LZ%%Slby0Zhw^WA3`6Zy-Ck2xZm`tI)$u| zKGp+$4C^!6=bE(7W)ZI@9|>WO%tb0b-Ya{!O7=!#pi2zL57id2z2yy1l)n$<Gp$$z zv+hz+g)P)S-NnKUu@z+x*RE(ARQGvhLu`53<?Ep-rnJ+DL$Kz|6q0Aema7t*y}uOT z=l_xT@PE)9YG^F7{uh}4fF7d$euQJPCD<L&{aVAP*U!0bo�F%H``D(e~Erqdn*o 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%0D0!T*e`{E<qZAY#4|25wPL~ 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 d%M5M!X)** zKNAzp>4D6RN$OvL&<9CsesUjBze&CwHnuaR$>XW&NJ{3iRLq((UrtqPf}zS(^>Dp( zP`{~H8bHve8&38dXau=lF!kq<SA7fDx1P?=`_yyZ%yOUF>dk!Hr@r!rcE|$M=K&B7 z1*Mu#t=Dc{n%Yt?{jD_hMZG4~X=-UG6Fwh?f^%dza0c8f(lCWq4>f29CB51p{n6%X zdxIv6nyZE3O!&MV4u0NT{fv5sA8$5FKhj+7f>CCw=hIsWIlUEh^=*14bXC$g2wm-L z%%Cfqra#d_z0tJE@)l}FGYMMOtku^o)JM%SkF-z^Wdx_TR9iC6fd7vf3;k%ETBYy) zjat>J$)Vq<Ev+uZq@{J}Us-Bp>*<~iS?X|>{CMi5>7EZxRu7$W1%7;ZN)M&xv<Vfp zQ%l=~=CxC6+bs4y-%kDex9R2W)TFlQZ?{uVw9VYnPL;P!|F)f~Xx|moq7I=qI;wdc zGC%F8)^<qW-%-8SAv6DX>bnl<5C2Ym`n$Cr1X^}Rdj6Se;~7mJK2uG~z63tovPJo( z?0a$ka?=|g^_(Z|Q;$08c`AS(&m>D1y*s%P+_O{0d&URVydY*;dxC}H{xS8GH|nYH z>jmI`C*(z-_d;jUmZHZD9AmlGmSjwEymgbtr{&tCAdb;u$3Tq(XGZ9CjGJQTv{7TN zUp>c7?RyoLhMx9dLI+tzw&RWSj(VCawEH&&F!sAQfO-8CPbwzFGd<Q=IaWWhzfVM8 z|MmHQ)R^*r`~2Usr%P0Kv+i)B{2s3?>vK&y7fUpSo{OFGj<KV_&@-0WL-vHW8WY~% zHjo#wUD%KN_lcDCaq31KKe73{f1gNx|4rNaFRvx}-D^i8%bED9JaC~pN9+Lg=mge| z{-<oGj`?07C#vkTVtz-@<zm-|+j7p<6DwaUJwXf>$9aoA_%YKLe95Oi^sV>f$Ltg{ z=QH~aL2T(=9R50>?tb16=d*z@)?!}@aJ($-Omu!3Y^PGO<~tngd|N$UtcbiRgLsUq zthvOM>U^_)+?Z=_=dPB$h=yCR7vaI$Kf<+8Xx8pH^Cyp5;%SI|i*irH$Gz%p&*ReD zfZk9&0@ov+EnaLPed<Gj8UHXAhZX++2L{9wy_j<{>={@?PQ6oInu^(cKWBes82Tx! z7kC0_MwfdAV;$TZc+ZQ8)p~e;<O_U*DX1*)uJ;GV2GmCXzc9%8AsCpBfk_Zkftu97 zbM@4|)CUlHf4#u&`s%xS55qknEik@;D&UI3l=^`u8mLF=?@6-w>ja(4+$?}SuhpIk zxX1bei+t)K-(RuT><df_V43P>EO;I82eHC;)Q^T<Waz5yQR<!|&n|43dD|8Fu!x_E zvHj=XForarV<d`UyD$8rUlsVno3Yp955i|`KzOtC3010}JONyclJCX7%Ddjcx3WcX zqoJRNsg%P1!6`DQX)xaljWov9<Xb#pJm|LFgYI0t=nG)^Ym=`YmcKsmg_ro%Zr>8g z0Q`l_+^o0iVcJfsK3uK3oB4i-bCtlg>JqVoSes#A^<P;(`Onvm6V?A?ttAWZF=K?d zb@JG8M@;yb`je)zmCC*ddjWT%GKhYupO~=^t}5?@eY4-ox=E})W&K9d2>eA|8Mt3v zZPr#o>Oxt6AFM7mWfC@fGk;c>1a47%Oqdp`k5YZY%e>e&7*OF=HJ-E&z3PBxo>k5b z`<?%+*hXNQPrcyT<2C$=eafC<;Cj`o1R?i&0v~&^L4);|4c-7YMql^JKGPh3;DLZD z@#iY_r9Utyp!WDLqkKm_mvUVzh#~usAV%zyJ?-FJ?MeFzEA5_oaDVAZo8ZUtO?$XE zc+=+lu{<upYrSc(dTa{Az1SxMcG_bzv%Z9xb?+c5<xNQoJnA+KpTt%NnZ4Yh>dL7I zzS9%@5z>0oa13IGH;lc)onAQ-@wP9#(y!+Gd%(TRAKZrJc7HRtO9LTH?B^zp7I$)} zG)29e+z{>uQbKQ}V6uA)^XR~(`m7mVbz{=gUUhdWTvJ$=p7b=@CN(M>K84;wVHiAx z&A!?|>_6PDE>B#hjhJQtG7Sh|f^{ucoESH@t|cnh5cdSJCfD1v!xx!-a;%LFm1T?( zf5ocUr=Bo0@vSGV(5EJN8)I*x!q*J`JALUN`_*Az`qzFn-Jf~Hua^1WxA@L9_5L%@ z|Hs~UfJ;$iZJ+Ay>Y1MDp6R(gm$?k0fH|RH#smTe6v2e9>#icA=qe~+UR`p|IS7Je zP>>`!3L;qqMahaNQL-ZOe^2+^%go$}qTjdw|MNUoPgVDHsIEG7!h6o4J77Vgm5Q9C zg13O5d(ZZG&RF+B*B&AFLB(_JdZ!dt3A?B<xE^P#@66U|t!Av$>1VA9=oQjLa@AJ8 z3ZOUm%>91&SeRbvH#-@$-k<F=sp;C)jJ+DYX*7}aiC}VtF#3Uainl;FSM5oXW~ki1 zShZJR(z)~z)!q)5gvR}|HM<#Zsj-<D-=d(oV|(A=5vnSmrD}P7r?bb)exF>K!dvpu zY0~*osw|f`?{Iak9DbhH9J9PR_7qj;y~g|gCERsAUrbe~onkFkXqaMv9?LH1!p1r= zuM6;3o~aC*GB)7b$?u)cL*4f8@?RGA-Ezxx`SEMl-uX|uBY%E<rE7~d53;@GF08=S z!WyW+?7?&&HM)-Nk<3JAtFFb{9rMWJZ@^sni;&;KXfO8U&%-~|z{BBV{#KEnX|zcJ z`I#!WXtY!X3-6-Iqu|JzYi{Rn`489k|Ke7SmWxXdX}GrC5*|Gz2zr!azYlY$Vu0SQ z*wf&|SDEgw+N&jf;nJH_7BOKeLVrh%Ma<7M33{mp8*E}e6|^=py|wu->}UUmEgpj4 zQ~&UOm;P-}i3Bf&eDs*?4_@jzr11_#*&|E2HfsAY_Ghb=LM=tKx5AtUCh$1|`wWjo zq}CfhE8uhtviLP=jH}QroG?pBcmd|K?RkU}><Nyg7{eh{DX$Z)P<4QH_Nm4?hU_pS zohXeHaCJ$e6I{F4zWMsM)4fFZ-u;0J&&h=oRp6&Am~yv?An3!ezNj=*VS18c9l`#k z7@!X+RyU2Bst`R3U3)fNL3D+@pKimRUO6v5m*1Q%oKIZnVrGoC3OyTvIQs7>B#L3e zKo!l2BD!3mMXp@zJ!7QS%Ref#Q^@5i?M)iT5Is)xxWw>3`4ztokI7}O{XEzVa7(MZ zLeDYvy7dvDCE^m0YlO8(q3^`7?DO-VOS$LE@8yZt=Ez0BWQ-93Y^{^o)pbM|kTm)! z24GD?6j;OdD!d#I!H3|!%LP;sK8WBVK{YL?WB+36ZR-H5LlWdT(abw9|99ZIT$-q~ zEJqh5^w=~xGw*l0j_5jBiz?*LbHXm4pDbD{bV2~`!((6E^V_UYs0OPFA1QJ>#6-r+ zc*o1r9l$mO532N_-9n?6nQ9{JfpDISl>&|Sstu&tRJ9!F9cmH2QTqFF+nsv_>=$R# z29bM?6n_7+ykE%&0YVWNZXV;mcE2jBZLCQ8Sc?4x@9{gZJNe7Tl?v5)(q-ct2>S8E zz<U0TW!C-B)m7}4FiZpEAWyMW47N)<^+({;Ti|ns_-U=L6@LY+gI5T8{By=&mHuPE zr#Mga5ump##xj*UsT;X*ShIhDKTJLXx{dAtAT&-lLC@8lj{*>RKjD++`JE+zO8EJ} zZ+-`E!r?{)^i0EP5u_~!_wP0i@m<~f7Q_c^Pw%Tk56Q;#81wR?td+AoS5tV;UprS5 z*x!HB&6N`GUO11t-o>@p(Ccnum5{9#Z*LM1r#2~H2*^_twfKA>mo%1M#>qN3&`pO1 z>|Xzz%S`B1*U!esIV6nr3N=%ryA>#xJ<x-(zuCJsFpoFcTNLlw+m)V}CaTq1QYS4F z^hhl}81O93o*?Ov)|ih1Wtn(>yhkPZINh0TQ+tpA8*D(2dN#Fsu5M>S?R^mP#A0Fg zP@qJET&5U6C2Uo07y`u>dXYwx)bK(L6Wab7qL_5hKT(cTy7=j5p9u)#r~U!l*cQlK z7o;h{H$YD^WBW`1*qB4(U7jE~^KUnh7p=PS8yoR#kOM>*`|o&R55;D#aL)#%k1|4s zS?Z3dI?a`FK>s((_&Q)LeHWmAsxK33=}UJlt@0b_S?33?1lNC|sMqf+M(gmpuM$9m zejziL>9kWi8(D>P&@<2%?`hC1-(|xM+U<)^F{r&i{<%TT3<E!FZ|ug~xc7S;CN+Q; z6yt=C4k*!1cwu#nGTx8Tx99t*y{`)BH9iNGDnBxs2s9=HBD(_ACU_O-nZd|plloa@ zK`*zQUl{dkfF2$yo4EeP1jXlHzlc^Wlv%x5Jii3=Ce`Y|;+_GznFi5@-@TwUUC!I< zb_p<>mI}RUz?#rpSTHpV6ik08EZFUqy7U?`+<iU1=Ea^|*HTcqTNrTuJ^<&CDAx!B zLfDVuLI`2)l>}zPbY&1(ld5|2tQ1{BbcuYMuEad6BYOg-3INDgLV+y1mO&l3zC*VW zWJcJo8pl3nhX+I(?hg@UkV`v3N0=f?CdQ(yJ5M``34*>6(UAc8i0CvGdSWI3{zH}6 zdhkRgwp)c<46~<q9S=8j8APJ`<zc!WBp9D{hVON`H>VCORNcaOH!udN^v+Z<9tI~R zHeY4K66jsZcYIS^JCd*|Hx;Ykbz`Hl*I$_JBfsAz_M68%TMYBULNN0w`#j6tj8jO) zuJSd~eHgARl<;L0wx{y%lXc;u><?!uOQq}He-<{FpFP=sQ*>WZVS4+Y<Ht+J4Ho@b z&s?rb9~Yhz$(U%K18LvrjP2N|?~<2|DBV_B+>NJ@^8~<g>)D8L6<F~nU=xWoR@K#W zZ#gMwhzJ4=JyBSL6j~^v0O)K~9P|T>GhG81Cvz#R3~CIP%5PK)mdc%~4NK)wwH^35 z{$U*#wqDD4K8h#ko;m~uDxsi`XSTLa$RP{@V^+r3$@28f4+Zp0X!HNN6jTqkli*lE zJiB0hjK{wy;|E?`UOq%Oc=}oX_v7oO`sMPMkqg(^(`Dq!9uGzQQ*{gVPU}6lnH6js z;f3%RG-bO|6dr=vY7G7BROd^L4yX<+L+!LUEILEAEeYOQ*f;sJ?Z=)S<#~9t=84Ae zXw6Zq8L)aO2Iy0Y^%a9SnI5BBFcfce>0PSTRs!s}E%6Tde*@;#KzLjO%;Nvm_Tn2j z#wW#(l;FV+()Hdvy}^|wSWbLe!WQ%54G<8Kr5FO@Okq!k=%MK7*{@g=RhaCfux0gD z2PekYbmy9UjH-BYNI~QMN9Ops#P4Cx$GVQfk@T_-9P8T=nE5)mRy}upC+0m&*wxvZ zUGKTAh|>@{P`P{Hpi<#<hys;6UyY%Ew`;>Ysye$g>ZZkyYxH4}=lzp8ev@x83S*T3 ztYA}>ci=i!4LD)fsRpL(Ru#S=+Nv4T5u~9-mr82M0v!$2jT1U8){Ra+`ciL$o^`$u zq8*O;48*jy@B@d+yy`aBHgD`u;B$lHr<=G8<UGNSu+0DlxUV!;1%yurJx~dMuEL^Y z!Adnpai_k=?^yoln4Sj=2!t=_5H(+R{cP#{C$DxYzl(T2yEo~12~2Q(D5~CbrsBYu zkKY4~p@gK?P;OA+sGOwiQDHiQ=PkjX!HerjcynHQivTy4Fdy$u;0p4>92bTM&I`MY zL50cq2^(sC3t?=8`X?ekLu(UJ7zow~vx^2}Y-})G<cf*Ue?;NW-&=J$O4=&9=a7tl zu2Xm2K>%xC-&N?@>zg22v7VpVJ3w;{XJml(8Ly#dS0Fyvq;|ph1QSt2@lQ?qJm{=3 zX?+lqf8w35_W1EA%**g}g=%LkRp^ZfoUp@05ElN)B68Ao=66=%dIUn8zg^s&?-CR2 zmX7FItVn$A6{mf7m$`edtV1>NL1Eu+hpkl@{WaK7@v5{^Dou4-CD&qpx!1eTwE^A; z*IR30jgjyYhd?hB)<TIrl<DS*wHa|e3e)ox3mDGB$^n7KZq4eh18dBFyDpNQi+H}` z-nt)z?`Vt{2+Gs3G&=~MU5W4P#^l1z|EwG+=#9WQ0a!Rh2mH2hTilt-ugUT;&*fxU zsVMg=#GZm!x&Iz4V)|M>%W~_V5ZjlS52y8^G`w8Vd5_EQpf=W%P#e36ovb$=SF(9e zUi>8nwm|q}1IZ`Cf<XGI*uaYh^E86!S2);Qyu>B}2{<vg^Wr)G_E^rh8c<T!PRJx8 zdQ5}A-sm7{rt-i%N!`>qa0=tq%&ihWy7(b>cE?)62%_1&boy1l3g;{boB08FZzJ<C z192TNm=(rr=vf?yp9<3UK)j1dt%J;Rh6f$6oM|qb!L$AuJSODHN6Q4=2)W)HlUs7^ zufTwPE{s_kHdkYX1|uvRJmJ6JuTdY(XfJ872J;#n*Ol=;I;n5PQ9Ne}mk;&fpyQvU zg}D1>*a=~a&{?a%@xu5@A{H0mkOw80Pdy3d^Hu=7rv)3)yleb_{!;WcUzlE<+aLb> z`Afm~!gX`uT9f%W-?w0FMBdMuioHFnzLEa{UU;5|9fO7UZ*q>HI-C)rjWA#i>nd2_ z^!C?OJv7U;X=gwVyqV>|dm@knA5Yl3^Ox6if9Fd9`Xc<vO#;qz#%JzUY9qR2z1nz` zq&3<l(<L3(T+P6J4ll;fz=^dpXCshoFMhF2k+V3s4o1SnvjVM971+aSFjr#zJFY*( zfTUa_6E@0cpoApOtCZp^%I`djD#AA_pP;J0@EzRWKILK`<nvSu!-QNKZN&tQ7OIbb z3Ta9EmK$^QGKfw*rcV$jU^MnSfH8gTAE%<x4yi!an~3kdbZ>}`T27NN4GgsxXw0@H zj(=(c>4oPuJziOvZp_A5!W4PA%!#Q?J?@U}pMqb>+YXktj&iND^mUaY?_k{}%U4C` zEk&|}{h>9)<Cy+#>3I;+-!1w4yzI3_f4_qH8D9r#Qm%O5<oo0K3;h<!W1o9XMqErN z^07P?Y6e+5C)Tp?JuqG7O}29vMP^Qy(Ua|2{ma3b0m~cyp88Tjq8kVc$COKF0}G?d zg&I^83Hl%+)5%+<d9HDjt|Yn=YpDE<?(wUUkBIO$QjFAqW*i~_F8x(yNOe!m0Nq4p z;6QI_01Q4zHgbP+v#TeuyZ3MQr|@5hCJN}zstvX9S2Y84Cyi}L-)Y|oG#2UIL}x#J z>ubu-g>_vC>NeqTgNmF|bLBN14LTy7fgB|m0KLlhzzl<C`c2R~j50W9N+5>V!tDVQ z^r1kGK6Gy4*=Gru+rCi@nA;90<5bw&2J00Qe9F_M?MJioD|tCkfbn@aFN_G!g=8Jw zog04wPswYJrp@8swJ)c~MI^V2GXK)&Z~8h<;bHk;Ez{p4d9D4KeBcki-=F+GXPW1L z--mgfe30&jP1W5GE2Zq$WeKe5k#fV4MMzjv*yfV~y18P&$$k|6bu<R*Cza(ol5v1p zxYwxZ`XB5KI#sv#=+v;Q3KEGzTKj0S76iRevj@W!?9$DoJ;R4(@1TFGbiVSjEeG@= zS>=F_rs@b1=jRH$c8g8wVU-4GFe!S^S{OE|khzwNhZi)ja`SN0mCs~Vx|Hp)f7UwA zYd_-e=E^BaIigbKmfSXS#9s?HiBSkDb6Z%R*g6S}E45TxiODLUr^ZAL$(=Gl|D<IB zLEb{zAL=w--hu>B2c-EUQV;lE1AWrxbT*Jq;dVsb|L8Yo8MMwQ2fBB_>=C3{f$E^! z1>xEGI+zJ^U(oDk0^<+>y~H#-hG?I8E$C5}Gde_TtgAq`3}@oP?}xK~4b#kU@isPn z75<)CIe+IYPqu`5Un6r5%*U0wu!XzfA3Ao8D_a`ybv>B{7g#5OZ3LMe6mzMD0XY{Q zuaU0DYrXmf9~dJObFQFgDevVPfE~A57NpoWHwqX@*DEGcxa?NWMGBYBs)ZCT^VR#% z-$@&l{eHjqcV6DGK#mPR%abXdrH85z^@e>N*>R>RWfE%zbF{+gbJKqtr>BUXGWNqp zoC#k7R1>%kx{CHJ#(Qfm_4gNhK1PIEaL`#J3B~3ONCm(=02uSVC^k$19P{bq-@?Ck zyXR{-liwC|?H0RKu%55A$v(`%_NFT=VO}^?5jw+F(1;paxPMas#oT9IEZhSIa^c*+ zQJe}OXG2DpAT3qQ!9k#AoC!gE=;)_G8mnfaf0=3?4#ExPv@#Lz73*z+OL6~d&0J>E z51O;lgnAVF*`%40``5`bLo8~lJCiKxtH%~1z+LD5U-dFaEudmz?L&awaL+zpnMole zPl+uI(NaJ6?C_WQIfU#*u~Q*hU~td(MwyXeY8!}63)6ytfu8jN1JC?J;3tXK;jxE- z=2j%>_(pUJ(_qDXKTNBYOwfB2b7mMxD9&Auel@ZwjHF5S-Y|90_~>xW9Bm_ULg^Vc zav8>!*+2?88*N%E`RIOW4vfHvQ+iy4M(VM-5n7--$UOCdkB`puncXsA)hazC1NnYp zlQO8Y|I&pS)ZE~s0}Qj3Lt~B7y&YO(TshLAxdHB97ce(Eu&kH<*+Ei)D^EFeBFO!{ zO><I|Mw+D;Mrnn4<=0V~ZgKw_%WR)X+pN;>Wm5all^<o&?obx`TZGs6_|^H{L+;v_ zSo?QEWA^&82*{tZ27rXOWMUE3GN9f*$w5Cj|KC)Ls8;BEou0q&AbbJBZh>7yTo3vn zps_xH=D$?XXd=r_^#PdWEcRhUE(hHjNtJvwK{r9K)IU~nQj36tnK3d@7W`{{z!_rF zsel8zchH$@(tMY%Z4M3-e5wW9IqqMAu3(J!f9MX`g>mrEs$U2IjMJE{TsU61e4j3# zr^!dT@B`_4R&u*2_bX(N{C~uTUYJgpw|<^1cjhH;r+vE=eVorv#u^u0ZY`32o(sE_ zjNjpV7ZiV)w|<>!?>`H3E0_G0Hl8WtRh0Xk>Do!ZU+UU9t2W0%zeh4|sA%I~)aNT~ zZs%$5kXIrUUAQdQlWkM&v2hm<W@Br*^Hz9FJHSP+06CZwqnP3G?N);BEr*cye<SkU z<$qTb<Am*nkdbV-B;U>e)lC@tIKN3_(8CoA>il8F0^Ljn(*)1V?^>QL_Tp=Bidr2w zko}z3;MBM?!DmzD;e;J8k)xL962zA415Z%JY}q~8j>58hdOO8Vg5w3X`TM!L$=~T- zVBTv&$HIF&;QHdrL0);q7$yKB&H%YZ*sB!ktuQ@SF?K=fQrAc{cKS`ErQQ(81pP~Z z6F^N5GQB2f{sOdm5I_odO!--ppM`zUyw(f-Hf`~3uI-0xsM+5pJx(i582{Ie$pTR& zus<VE`10Qrz(-lEOZqOku9M~FfR&gK55uw7T|9%B_g^_HGsa*NzBypuH4)?fg$t+c zrt}hMe5Be))YeXW2XqH%uSB*?83Wx?w}v5%R5w6x(5>S-_3}kQkMmvE!B0DU#sHXZ z{DTD=8zGj!)gQ<Ny*6O(G?7x-1U)=xx3-X!GX{EV&>m`03-d<M^GtJ|MVqWo_{SfI zO(-1`Z2s{w+x*$4MG?t#1Sajo`{tfQ>2vIE<Oqhnx;oD($S${XUcVZ$I}#*#x^Z6f z>W|H{C~?esg%zBa78b7-f=z7&teNz0d@1yLWNs1$&<cG-H-%`lDp#m9PGuiz8!5lk zsiXW2Ig{|Ofa_l5*%6+kyODVeDY`g}@h1(a7XW0&h~`N4WsJtf-D~8PgFCOj+~Zvd zwu!)VbgwtQ{+i*}=}D~PT(SIljdSuENnbPR?Nj0+SL9~#?cNZ?w|}+~p9<O~A_(Gd z>n5V^=0=sd@AD+RO!RU^xJJC(9|IHv^cdwv1g0TM1u@^BsP}_ztC{dwY}LjJG<xag z9E4%(wLnktnOl6++}}e(<2}<{Xwr{nKNXE8Hq=~qE_ve%SJB<gx#qjq$N2#sc^x_Z zTH|9S#v%DVna`!$30Rdtj)O$}Yks+;k>nJYoFn97g%$|Fx@npwS8-T3mNe!;DPsSR zfeG_aCV-sHMWxS}0~>2Ozu#2+^nc+w=efQf1L|$1OlY^S-1rG+UEl!5IsA3qXD-S) z>AG_n>|n^0iJT{3<l->s4ypmTeLpn{xcyi)n_s5??o8VyJ?ze-ROJq&UKPe?43RAc zsL*Ims_i|$>BR~>N|ilbyC}aY<6d`#_=V$Xjw`K!6O_(er2Cefe}6BMMtj$;Lm%MX zJ`lmt0IdlNiEZ|X5a`xQ=qrx9yyi#FDat)9RJ$__9ne6LK3;349QM&Vy{l;Dr*Zy{ z+*%!2pl&s3bjbWVOufQwH8kFL-pqanwmHf-=<yovH;Gb3==t>l9|Tev+umGO^fAA% zckuz^h>z~St*syCiYxko^@~=@BtLzxmR{&bYK5D=M-U9Wg$LpD(=(9|ZKIxru$7~_ zgRqqezAW^t^f@aL!eW@9PZ*gek@-I0bT(;RAU+5yF>pJ2MhBh6tn$Uznbh3kbB0>C zZ4M#5Vtii+*#k}V{17&9<2~VQAH=&Z52>@l&yl#B{g`DV#6CY~&TDD_-cq_7jA&|X zhyh4%)+8igP&qSVKg~pH#4%dwpE%!P?1({owDN5O)L+kR6{N|!**i#|>7_>oX}2Dm z7Nie-CNlQV^6iuWnyj;a<U7m_LoN2k@^tRcI-K{v1cq<9fC$Fp7X#Xb185~8t5ypG zu~QqweEuPhSp@XW3$nSO2AD`*-=m5AwY;-8S71#<9FGK8Z<>m2j%H|bJ>rlw+-Hak zLF@hmI1wN1maKupS~3o~-eG7!K6iZ^PVecLAN!FKi5Ca%ca@vBbgaM<>ZDj-bDV1{ z1&vu+1W31?n(;Nz!CDkHkq#^zxxY!|J-VB2&Gy|EW)D7_`a$}hfp&^M$H$ZXJbB6V ze9j+<F)4~pREU26zgh=#$M|>o#?Fq8{J%*j`!l|EvcAh>ovaTR-5zn~`eo6tUHEt8 zaY?srB<rqx{KAx49yQ(l&R8trpIRsBUp6Sj%>&u@kqCmGC2VAc*y++og*{S7a-{YO z4y@6f`8wE8Cg^U`K{<<I()CZd^E4$dV<LA~j-2J?>bm?bYT)szsO#VUPhUYRg$01k z1_5~rd@#4n>*^G*QFX|AIDShGh8-C;IEn_);lqNH#&u9boLfmf2Wds-su^oJTF2O~ z(P(L)f1-rV6u*Dc%>idj5%kUyP6@G0vEb4^sLbNVWX(FkE}*I0=&0NKd^A=Mf}XA0 z?fgim%k(MT9_pt7KBhnN*|Ryu)BwHSw<f`t6TYW^03TGJs@;qG<{qC64{r`^lNa=e z=<w|Ge%E?0Yz`K|ewUALwjdiGe=oLYz}H{F)A2Lh)cQ7*s=K1VIsW}c_r3DBVf^{} z7|Wxx+$4PSm1fY#79c@9B6;`f|5f^!?dfAF@%Gnyb7+=A_hWJNbd`@Gq6Cs;%oYf@ z?WIU)Q2iB{9B8E~e?km_iu8Uw&)Bc<0N2#PC#uB@$?dzs&B1Xw+HV*D!F(p3069Xr z3Ml{eiUE}WDD`~>jn9z^hp%y?D{Eig6+SZqlJQJ{O+XKpH^WM?O<Em&G+)mE{jF}G zy3H3Ti-8RLJ}7i~tOv)<-}2^j^tCV!2mn{A@iX<W1b{FD^6wlZpxI-JeJg^~I36sz zghSvt5Wc-qA1M?S*;Q3fDkT`0qwxFizhxt_T-i?s>qCR`?;_zgms1+YtcLrGd*fG| z?#D8uFWvk(YXw}Q{LlRza?L$d<3GstVn9FoIQw@|mw$3}9zqum34|`-VcqlL^S$rp zXJ8F9aOa-c=R2;i@cEiK_jliozXAJk+Nm`WXA(=?v#@9KY?apldi)v`e}2yXZG?Cg zh7ZD@><aZ<bix4iR$GW+$cLw4%r<EuWS85o#gXx+i!{O8CrJr<iIk{$@VPF#+P>vF zyqBYV5>f19eZS%Y!veB76qEq8L)vf3l_8YWfSgQ|!g76>riGt!@BWT>2YvkSsSy}! zcMna<8_ITs+Ne=*Aq4IA!a_}k?-3L(z_%?pm3t~&tDzsKfO5w#I|f+}WmITIx6h*I z39&mJFvp+_dFPpK+_$`w%ChZ)u@S7(ujG7^9Tcnt?z;%OnVTC9gK>a!1};?Oj|wf} zn@v#VY8V|<RPAujP2_TTh;F_=(T2!h-uD3A<Xzu%ZA?BKPuN=ILw4&N+wdvjzZSI* zZc6<2>R^4UX#Iz(dpg?bYkSu!fysmfO+sSF_>c?9{pP06JSniv@pBjMAB$S2>vVbh zN@_cuU#H7B=LC{sLRjWW`d)m!3i9!U+1vY`H^_&Q+wz=7`;*>1@qWO5;X8YFD49~L zO+IRE%sJnE-lY8vc)N>A7>gBgX)k4+BIfYdYo$scFxsmauX!r+7m3eQcUAMp!as~r z1apS)C%@!6A`Ic+e!lia@^o%)9?Oe~E-vvT-Ep(~yYq;B_}5|<HnNrr8Y=z`a+qSR zW^JpEckRUc+(|ck_5-hOLrZal%L!U-6+~bepnvAjFK_PMfcU<d3PPg}Dj>b*<9r1M zN<Ufcfp_LJ6VI1y>nzf@zUcJ(@cX5G+cVT%is~=%KLA{2Enp}x)_M9yerFA?f@Ktb zzhr$8bK{Z(7PF;Tq@a2NHiD)qN637r$`P9Q!ll1T0%N-Cry@)uvbI+{kjFT^jVX4Q ztVj2GHq?ZCozzZ0zu<OxB-rI7yDh~KNe4A>_F3{8kozQl_pyFA$Rj#j;zNB`gIwc- zWhXHgN~YD{OK$VHKhC+x-lQjiR&syCeQs>p%k&7_8}QHlKG}UO^XP;7Dc5;$S0wsM z-j}gWQXK<($4BBT1$1kT!8+YFAc9VxgA|yFbM^_)AE@SHw(6Ze$K#Kud7y_?y93*J zQvv6R`<!7H8?-?}PUxe<B<rmmNQW<;2f?Df04^x;KKF1OCiwmR*pL!^w;S)$3kGD$ zMwPSsLInQ$N(or|I|$y+y|DmuugAZA3BnEc@tnHMs-DBYcs^W!+EU4wwR4Rda*p%) z56VU<?R0*bwgxrZxH9GZbbgy^kG4FSqtN#=-Sf_CNcFPyBK*Iqe1WQgx47?>mCQ%+ z+{taWwQyGJ0V0OPZj+!jdE@gG_Gyl*t(zDh>|GBdf79Qv54qR8QPxX&m)qqtDeXt( z=~{k#4>q%n5;0gN=O*sqe*(f`ZN6U49DakIY@Rcp67%{kda`MvkH<VYZ^vJ|CzN&b zGxTJsZ<DYvr$;FaikqTviKCOs2|mz7T7!^V5<#mxr&!*|&GWN!gfkGVoA_5^Jd^o- z`g`*DRAQ_tzDL2e3k&6&x%PqdIha0Y)9oBsRw;P@Gu@kt{w~RTOG4Mbk8bq#+LH9C zL_RbrQS0b)$?DkwpX}>LsiR@&=dtH8OrGaOXs6gDdCs!+w1>DAKGapnFpX>e4jF{+ zYbVJ$zgH&V>y(qVQ`Xp@-A<SH&gT7!GH+~ID&>9C=Voc^bZt5wpY*v}v^C?u4tYi^ z@VxTo$Z44rJTIxPZBf@?LD&2L*T_m)3q>7|gzYHtor=yw{%`-?pF7w7CwR^u;W0(w zDQDBilRiF0x&PVptMUC1i*k)jipg}_IoK_W;3$4m&Op7+H%{-1$#N#YL$d6_*JPd4 z_Yzgj#)mN<_1C3)vh|?Uc2+{RJFG*v8{)S<1w_ctZhpu==MXGz_1ke$j}r=~i0-2< z;>Ko}WITSG{488E6Zfcq+T#!I6#xZ)rbJsH8;oM~WOxX~c)n)3-9PT)$4uZo9$ktu zc`!p7pDF;d!^)C4pJgy33BPvXRd40&D;zWNAm^`aM2}*asGD-Z3Z&CkYPr9)TwMgQ zwv`zB<6SRC6<Ke5jH><<{#(I=JJPKHiD$bkCwIVe1VLARgZk@Y8^n{*S`bx|zt)B+ zNc(?GXZ4@oB`YUC^Xm|2L^EX#vWuyu631B9l7FYWVS1(QLN?))IIz~@cb1Ezk!=LM z3W1%k<$lK`-pcLNv5mMmKKo6orME-+7+1aIYh}9E>cRfxeu@r%@*p=mzI&fUo@>~J zpB(270M1X%BgSplmz<NE-?|bx8gDNLz2)T`9qbB%Vta+0tI!=^34r*9D#rH;^-vAa zAE@?1RK0NNJ!)C^zG2r6`jLQbbeq6Wz3<NcgA)Iunz*0)9Obx9(&Kdf9R;-?q3dDu zJAMBBbiHR^GrfA-&(j0hZTEUPIiu2ZNL6>g)l>nXN@pc=H*DNW`~=eRDzQ!)igrX% z6Xb+qf6VzzyDB(olZ?0V(Fqyv>q97Ie6){d=new7R_JVR^xi4#j!PFP4@jX=iu-bZ zx5DjwXUbF3W&X5wiX7}dPm=z4CVQ`IKPkA5dM=;7`wfz6U;R<+HJ(2gJ~v%2NacT5 z(5pnR%J-0UqYk0m_T30anx-sPkfRpWNEdMZslft`WqMtAUftl@_-!z%ha=!qFI+Sn zb=yT`iVD1lgQQiTiYSs+Z4j64<m95UV=5w3;D~X5o1YIX>e|AuUWIZ?qTKfaIq5w; z`Lqqy<HffpcrWvYv21yy;VS2<AA?vd;0ZN}ss~LZbj)2+cGh8Pnv3p_eb4OhQ4c>@ zFs}=TK-|eTlZVTJ)3oGUdFuu1;(9=uZuah#-!tX+`_gn3>Rx5Q6L6;mz)Tm>R)8Mp zRzM!3bkA7>OJKl3(Vq$jpizrHN^=!e9x{O2MOmrVCg<(zgX~jUbd*U8v`qAWubD_! za8Pr0o77&$P9Pny<o+GfoM53AxAUomY{;=S7Lt!~|31A;TZ9(*oPHr-VPj)LNOi^i z9sOmtglLjKwm*bS*WA;}DAO;D#JaIDVfxPCo>NAdHHZ%i#I|wF4)+`hl<8#C`@tA$ z(yt2|==s_<@XVWScAoLL!Hf9+Obk+IAA*pMWdi%;y?cF+r`Dqfur@vs@=HN81PtiZ zMwQUmJE|}huTldWIito8Do~S1H@+!ANBw2@257eNQj;Kk9%!baYh~y&Z7j_9j`K?~ zl+r!vN26&;XLLzAQBs0#cJ5n=dxqTgiX;}WAwHVu%L^l$SD#l)pr3LI?xt*;{51AY z68<=@Z;2>@{2bdjgmSH7j6sbHC2OV%M&A*qw9_QmeP<1pO2mGa8=xcMk1<vU61%s8 z#$dm>(N7Eg^+8WH%tL^v8`VLN4ct7ME4P_5g48XzM4++V%<5y&WGfT&O3U1D(V$QO z^d}*+Z<scO8i4*HZ1%QkLl_>)r8XbjZJS*pv>{@G-X7VGhe)hjmfr%;(B0m;jk`IY zxypG{)Un{Ip8>eP#*1g&^O?V=^1s6On?hvh)Ho>c-}Ks&Y5Prz-v0adn}Tg$yl+7q zNwHnI_e#Q|a6376gWJh_MUJdfK#hk&#wOQTB-<?be#z~k-0w{H{^aZP{gS`MS>D?V z%zMJ`cDDEWqCfwc&y}Kli$cDA>bl4WLzDbHa?gjN+Dp#-{rFz#b3avoC=4H;R~&sJ zkLZi^$X8%bqfy97p>YcIt)^-S$!*7|#*bVDfE`i*&9{{R&9l>Kk&N^(kk`N*W>6EI zA@zs-as{Bse%3-p1?1-eaM1@me)pDZmk%NS{!x3D4p0M=?}<xL(|a-M0idLtxEk~j z<&tKAmMC_2AA+W?06ko_Kk@<T5(52`YA^C3$qLgWHTydsbTy`TX!bE5Y7<-ldV#ci z`XSIu(9Lw@8usoV@pSN4kV3i{^3#CHa6gY{>iFe_%Sp$+W##0&Yz{m2YAJVd<t2_I zNWUJpQ~7p=tKYFs_=W^n?j83*PU}4hy(axSJg?zoyWFfrH+XtdelcX}_^XnTav4h` zKLIjBz<Gqa1rph5epFUrXXi1<AIo(*1_sj7S;JgaN{V?&AD{I1PH(flpT#z~Zj$Ph zJm%InD>p%K+z)^~8-)$}fUtg6P}?d4^isuWqe6#muAnhmnkdLIL^nZC(r+8&L!`Tj z+<@Qs?gHJ+;2(E07U}NTlyb#h#<)C@iOu;H_QG{ib_*!UM^!{#<o@PGj#tYSOL#e5 zMs%5tK$Y7qXa=ulfCBVrCrbkjK=)T30^aLq1xAztzncv)p6j$qpdx#Uitf1yzL1^= zEXM}r=`4S3{NPRL@q=G86n?1B+zEia!Lfn;4bH}~*`<Fo%>Dst8Tf(UKF@JC>1xz7 zHUCbxcxxm-T_{~YyChpbgMvTSjdvNM$|YPXl-Wlg-P#0TY(kIBPmfB!W`6h1@As$I z+Gf1p2&JzWfXWu?W-QY8f#ULESQr%Re#^XM<h<l-&qkOnW1gM0c2y4V`-fW=*)0ML zD^+Vn0>{@ufprlDk>#&!D>}{`CKpd+-x_4z3dX<b?#m#cH)KsVF-O^Ubh@tCD~a#o zAFn|Y9)c^cQ4HiW`B5>E&!n?@J?JHB^cPNY9c_)Af2z?3^#f%E^bgSE@A+t^9>?af zUN>j^koSRep|tRK5X%G9(|8B!3lh9QqxmgpqNk+^V4C+F`9B}t`5*9yKm9`DdENFq z^fc_JE)P#VZV}@lxW?csjk2#DI^8$?^!I#*=owu1`4NnoaIfXrOK&@bP-Cm5Lj6Tw zPMa}FxhUuOe+cEHW^hGTa~apB4Q)gM90kFs?(fTa`UG^omm72aT6tUmWeKbewUx$9 zhI_+Jji9~O0&{DC4}dD~cNRUxn1VN`F7iUVeeS%8mCv!oavRJyrJXJhU2auQIi9-5 zCNMfL(tV75VBF+uM6aDciz|EIk#o<2a31Wl$B;JaEs&k1oo91)pHrq{H`1{ncG~fD zJVY(|uaxIb)hkN5doY({s(AB$E`EGB@W)??cy}&4h>yhY;t<=@3^3qF$_?gx)cM$H zin$opNlFuDGsXh0@iWIA@B*%JyK4iIPt(1C(g1RZt?ok<KVo3;Axsek+;6EOJE@SL zpdKSU(}48WTZ=$?8>wNscyshVU|P9;u%~yLUfd&UJ7>2m(rLU^UOXdNp5f!k-?p$e z@87N+Iwg)gU1oWKFbnRu79;w0U4&+#sxwL!%~LW!BV!$2wY%C$pfOxC=4-GnU57Il zN&`0g4tgf&;kt<$!MpV~5{)jVxx}K6%$q>(GBba&=sn9kV$nz|XZ@KTPkWYXBK9~B zeie6dhxQ)iXStc-BO(r5Nk743ocQK|iB&UTEPJfnP|ih_&o{5@uB{J62Nf{K8^PZ< zC@+Ivr5Z?0-$A<#^h(V}*{dHk3uUi9l=pycs@sPUB(8T9XpHn33w$)*2a$mH#?K5I z!MCO90r_2k<^(X~3VEiy_Kv*zvRs_530(54FidU{67ZgFjLgFPEa&E!mXnZA6#`3p zArY<JMPT{Ta^=?9z?-S|O4Kn>EmVP>rjB=~HUI9G9J|xgC|D}wN`Xu^<MFc{$^~B_ zPqrHQ4uvjN7E*U=r6Hqrk;Q(HG~8uX_<e5d-`|M-7XA;_!@l8uw=<cWdCx^CISg34 z7Wo&NiMj(gL7X)f5P2m7G<;mg@Z~Z4(D+C*7HhO!yBqXmY2iUnN<OKlZj9FvRdORP zfxJW8eaJPG33`;@{K`)U{C$yzlDY)UnF0DX(48CmgXRE}rkgt?8bdN5h48#eUrYSF zuHP`JPDqY^p5qTGnaJ;W8?3lLhyYBw9hCD>nqiF6$Gxn_16Y?prMRmvb-!mKXWmnE zceanEGW)cCcRS|FVax+>i(*DTYC)iW=3Ra#eg~G(jQVsNFxB_|J#l~J)w~gS!&@2O z!SD3P+UL0VZlv$KBLY$Rp?3(W86+%kUnMYYg&of*yVw6ifEF7jD%yQze1J{UeXcSt zUUQsihk#(EM1K_(Oeb)rxdW<!u45`DPU0Q0<)a>$9Lv}-Z_PaXh>6Ja+LN#tda8qz zW`2}LaJr+0o-`4C)XQh0XN0fxFQ^IUb6OiT*|-Qj2aFA3nnkOFrNP5mntc_puSp>j zU2{XV-Fsc?#(hi_GdYgGlUT0Md#Z(qsVVAppeJgr_{cN~rpwQk&d;;wk1xqL&Gw%E z&24x8D8RONHf?R`YtU`Wt8-+8qT8|xkNd;5&#Ensua_D(SX8@||4Gz|e1>@gzi%>z zo9D}4IsRvPd<*qso_Tz1c8tr#01-?S-kMB|QKF6nk6Aju<t+x---OI{xfh#`dO;1~ zW1A%m#6c_-Sz8t02`q>^h}mq(UP-pjF@G%K?gPyPSlV=9{l<)qizaPim?|GX&yy2- zD|GMU2>cP(VGG_Ytogi|u{DU#xy8+cD!)<a@#h)Ta5Efx9h8AAn~YPfZ73q^mR8!R zNz}glUV|dDLf)`|y(WOD;P+?x%(fdFWxPPQMBb+AP#AFy&$fK|%k+fD_wza@MgSIE zVL*?mV8I}8Uj%sEf8Y`L_XQoxbo1ujFb*joL`4{DzD|g1{5#}XxEF=dZ~vJMMj5A& zq)A+X6r4+x%IN8)X6)z4xGS1zG*i11J*{QtVN{Wj<y)cHyv{vceVM0xG{#pRwNBUj zzY^%099XaHu&AfyAZOx7RvbAKXM{}jEDJe<!t_HZK0Zu8hPmh0u(Q;r&USo*P3<CO z(X%3A;u7m3_*(pY?ZhMI5o{LA@vX)xm&0BCt%AT4Xw*}6<e!}w7^WcI;zo0W=n|&c zq4?l1?FgBme+pN}foXQUZ-jQ)=I98n$vq!t#Jf23eTF&Mp;Zp|42i~DXVSM(vri^{ zp2<D^ip5VBqc4h?ony2-b}f3EX4UqdrxaC!%`O81-ecAZ)@hg=AS}$e(Sjcg&kS2; zMJNu&EI-}<cVvhd>t=|UDYB5h;aBMH-3^5DnnMlxSk0V_ys4@K;q`mfSqpoy8sCn( zs~Y#O)tmtV+N(KZ0~q)CoB)E_xc>*~9175J>9h<|4?W&1NNaWO->+Y~GzbfcvjMed zeepd(YU(%9KiY5LjuZW;?&rM&40yM~aCi%HQM_v-6~#y(mq356WHt@Jt7vu$Al|3+ zkO1{nW0L}?pk*(FO+e$L?`tM9ReY?KMy86dwHPv09MEiJs+ceN=mu#X4bmQ2y1j`? zO|kcoW<$3>LS{vskM>123q;-dN}n<jFd6G&p|b2XgDqO)=c7OS?e8rlp^P82=u^YM z^DHxvDJn0%dx5(SI0xe$oW$ob37M)sYk*CJT*G((V5;~#{I&eq-4By|b49s-f&Q0# z{4MGJu=I9vyun%CGYZ_3d5=BY*q5R|f1u`>=Ewg3`*~_j+?@HEv{x4<-xN51F(1<X z=;?Dcxt(+Wzet`f`rIm#y!t1|Q$>|g&)j#)I8L@R%1%hxcPD~T1y{BEETIz?cQK@; z;3caafdQhq;FM<_kbXC@f23o0E!XFSxXOQeW+3LhmS-1fOtt&EDkJyZ3gOJHf4xsb zCMVd3Cn-uh3Fs=w?y53WLLCHoKvia=hP(O{Y}}gi4TDgJ;CJ}vUKeJT%ieq(I93>_ zygn~xX***t-&aa|eQ<2T8u&sGX%>eI9lObR5yn<`Na)yWU^2xXH%Bo(48Tm2F)Kj5 zP<k>zL)A=_CjUykt4$D<vYfuyS+&bSx0cQ)$ipO=-XopWL3qrVUadR(g4EVm7W7P? z)6t||z77J7U;W5P;6Cq#uKsR)kDQp1gD_y1fvs+ch`@+9O<0g}KjU;9{15NuxH>g* z4#Uok!Eftk{zCtG1l;aFC2ZbxDk0iZ7@geQW^gym5v}>xIlm2I2>xT?D|Gm)ervm! zIru5u+<mZ>;90J5@l6{z_2Vy!M9R;V>W!d3)Fe`tw3GqR{iTg0WQS!I=#JTS#w_A* z`_|)lMHoiB_wxGQejK8E&i5`$^YPa6h1|+G!-qIry7W?bh?K|%fLIj^7Q`cnbW`E8 z$1r-=xsBZTN!UPMLbY84wT6Ie8m(DK5-?M<Ki83o%LIK=%lcl2H{Us>1M=;3K_vsp z4qx}Z(*4d6R~AG*=zA}NEb?lS@5a?}a{P;MZX&+FhKVozcUZ(f5E9d2gn+4>rfX}( z5#({vCDL~6&~F4i-6uEr=r<qJOZ>6}lIa^vw{k%Q+X76F3YrIk)Y)Wuiz$yHZMC(C zFSIjccMj9~@Wr5;+3eP66_H2--aY~~gTGCF&pa9W1RKLsfpAcVhH~}^Acq&@S_f3Q znajJtmr7%$L>YmJlKYSAau3{;J{Hnf_~jgfR{ODpscT413{kHT&|7pUEPEkMd6>;X zc&5SpOh9l_KM2shqO`$rMntJev;#M~W;#E{Xj$e3pbuv{&9kU)u`JM^6mte;(UD?h zK=+IBos+%`YSLVtZMRPy|J*vKdpybJm)`z^``#bM&A77U@3O7@p1mMkm3__s34rmm z6_^FNZDX#iWSx#PbDu9o);(K$Ro=OLQhaLp$i?ZgcFD2@o;MdpJlU3${yyn#mQC1J zD=X4<YzyKxt5BzNZJJ(8#tZZ)Y=(K*s}uFWAEWBozeiGxyAhL-Px~<!qiw)W@sxoa z4lPA_kSP7Uhn<{@RWv?yGwC+bGeGy&jfp4+>pP^N(LG>J4j`w!3Hnrk>msZUP8Vo& zv|v)fvwJ+X@IADs{CF(`HGz;4Auxs>!Umr^CW4^bD>nQEYZUJPNwHxVo}zO9BGulB zI>{Q-Lo^#E+Ji3LT-w7WKt#8rzqf8r2NFtu0`w+dXesntUu=T`5Omo+2F>+HPa5>C zKiW9}H-bGVfVxh6m#M+nR#+H<p+jN%H5hMcQ!leD_|9T8KEkG7&CpcX8LaqXgm+t) zue0e}E56I7BUb#lO}#_$ju8M@9TZPk%=xx>tj=WrE?D1W-s}1-8X(pk`%pEAI@xQj zpt;NY>2pNSmDsDGPH+THQe-j%OP(bnu*Po{K~w-gC?as1A~)?<Dza?%WG~YhKKspy zJ+;OzAo!JxVYt3xe1a^XN>hQZgK9=giTssDFG*i%ucPNXX<!H4iAW>&UWL88O;>W= zuo|d+{S;MUIf2($`g<p@a~`kriO#p*q8sDwQCsvW+{wL{<N0YJyFOIzea?%VkB_ma z=OyB5lKjAxl5kmUTdT-^VAL<f%MKP27N6k)Fb5vvEW*1~Mvkz%acrpIaD`C<8-CGv z=$ZKF(s@#P`xGGG*yJB6jf4bmU)KYUIAIK9$JZDIjUHME>EC+G4A5hxaa__yIgb$o zLwv@5R6X}q2R+4az*;lUSj`9e2IGrNEU5T5Ch``K<cq8i$?0Kg6<);0m)k%rxMPrx z_bK6uJ8hJ~NII%m$Kj4w4bVeX3?q+O3740)6zy32mHqh{xnj{CQ8)W~>~}%ks_VV| zJWN2zKRQxri*oVGE7|9q)jc{7T{U?w@>nPDC(QqEA-V-JM<wRx>EFU_|3&-v@5v>@ z&sP|BmSbVg{|7yoy<erq)?DmiJN9uX;ZPM0@%@^GNi|vC+EGX8P6Iuk>vv>-tJL2{ ziSar%)RZ2=Si<JhC*64wb>sR%=x;7E(cdRggFeGGQ5)a^wT<_n*ZmEb<#|-q-6IzZ z0Dn3v)-r`gD))mvreq=5sgG*?gnWnUh3Gk|UJX5SoEGiRPiTW)BAtW01YYJ#@wH0A zu<zzJ2ZQ@b!(FJkE=QrXncg-BhXf%X&h_i;xjG6QtkUU88@fVc8x>;OiU<<nzAqdk z#hoIe!vWhBSpXC55s}Z4{9B2Bi-<bqJYf0eDpA05zg4o3fBqN6Muz)VDvQmlwFf3Z z(nl<iLCd8BdYdf0#Xu2eXFn1L2R>EM)xwf9Eb3(O;lUPE3GdmX?*32)R?to&0yF6Q z;#v2du7%Hp<1hojdL0nmK(|okHjUb<(7NCcm8UeCs{H`^JzY*h_=gUhGsfbdiHvJU zl@&+^taW1@yq|7=#v014=$h*rr~>D_H84xrVA3$l*=SL#5JR84h49%B@i9=H7ok%b z<CQ*9nw;ru%B0rCOmuZG21Urd$Az9w3x{l-Is`UQ`fIoT+)tc+I0}P*Z$_v7m!5mM z=TBM(e-hqpmMDEl!9JY<ztvF@>4j=+iZz0F>-GGG81F2C3Fc1u9b7RF1L7!R$GGk} z&}%s6<q<z!U&|pZsynzAZ@m&9^FsNzca8M(&a{0Q;Zf@#4z?bq)i_vuke*ps089KN zGL9l!jJN{%7Dp?vFL?JW>GEXwMxUs~xu@+`3RLm);bz+@p5{~d*~_@G#mmJZm8L3I zOGG283&jT-ZPpBQZP)HeoLABHPpwf7v%f8)m4<LSyEms8zX(02w1eVXKO9W8cOnb8 zzx**j;@u?Z&kYm(YmA2Oy^7+O$<8U>LxW#tn8tpYPvF=RS&KB}UbMae(?I6y7Lah% zA4N}z(xT1|Nv-ru(1Uabn4=$Ex{1#j<)hDh+`q-=AUpXOzX^J#Kl4a{Hu}xB2$u3Y z{Wv}^J|+n81ov+>oGn2*X2kagX<EQU&-VcnH~TpN4&}bXQ?5>N%_bNwkWG9qV=Bxh zNXxI3?&`+tV(12|pQ_0Ix<fY?`H|<m^f!JQ<csa_!~9hIsGrvP?DhsC1ZVNDy9P30 ziW(Cr4?EVz07Gfr`Bd1x`DbGW()6xedfA`ozbMp3Td@D4=sNE2@kOM_8%5M{Q|hUv z$tdZ2JmZZJ;*P)k{qy)u3QmHrk^H@w9~Cx#&ZbY`_uT(%&fovHeFT5-Tjw)}ljUgs zzRB&PkN27T`*`jGe^ymKLe;Wm+Jf6R(Q?Rs%QXYMeZ6MEG_hTK6#@3rM9A#V(ngJ! zlM-0I<GQ)pM;(364?b{XNQsGkt>E$F_2^>z9;a#uc&`CHvPk^-Y_G3$9X$Da@b^i^ zeW$ni9b7wDN(|CA;Q{+$etreg%0!U?i~QH(M*)-kJk><?ki}X((4U|@u#O6i4(PqI z<TpB<(60eK*=Hi0t(pHZ(3|}xcC_gRpFbjC|H$FiFM*yOG@F|=$n4D*ooSidfe8!^ zQ_vV^+h0cL3wxJ}#@wjAyf}Rq<y-s~ExEHet<C(Je=;HVVCy)2o5cry&B_`Yr?2C8 zfgV{R>tqS~_?%gMsRQShJahpqI`3A{T}qYgdLa!c{e_0co(qAv$M;I-Puxz%fb*QI zi4@PUc|79HIWHHq@deZv3j*KkuE(rM-#z_1CGQvf9fqnfK&TS2-lNot?p%7swMjmJ zXpoVjCZa)32y2vtj8g}66V>`uLNQ+`(AcJ#2yj0ouL3<=ZzEdzX{pcYg{<(tM?tUh zUjo^Fg<<0GPGgbi2ya*Lk}jy98U);erdskli)L9cfbf`{5~W?(@M7^fi}A5<VQ^3& zuhMc=9#rW|6#`@Sc`WyC5)hO}DKS(>o9mv3kQvB|Kd5l*c;|UJso#NA{F#UV7Q9yA zR=7`j*UnIFA)?vDtzWAs;bg(>)<UUr1h-LQP~3JX$cqegsXT)Gq^_xof9GBAjb8-( zo{`oHvSWMK^ZMUHQi@MS1nF?sr1a-L{|fj1Z%tNcg|HAOx<zne#RDRSEah#Lukp&8 z-PyiN^{)T4%YW)F<uu&@vr-c!1bTq-PgF;1qQ;tPz^g{PX#m_9LlCtiP4thI#ZO9F zCT%3cn4xpeGM)3Y?9xr-XBp`KC$0b~bB#fRjHeRgb&WgcuJ|5mv3O4$<niZZA1jsD zK`&L~$o{fTW%a7Jl<>m6mu<tl&C5qU7HFE5IC@Y#0m#@IB|3@CfKd!{E7ia-H`6lE zKU6cn&`>X7yNbpZf0e|&e-mzUR|7_<S8iZrxQN08{FyKi(XmIoi=KUobI6DE3Jzx0 zAhkSZ*;+L|0@|<|pXx_ItG(DyKWco=NzLhHP%l}21nb1{si@;4<BM4*w$~Z7MZX2- z4EC8LxS*~Hx?OOb*oE4=X5@H?)|pPnFdZ=C1H;tEii``>SSvm^Ov|nKsxa-g?C-<$ zRmjBodu;x3_sBT0G)l`eA{(N#HN)8xrDGZKlTjM%IGr<TniC(CN#8j3_)MA{HF4&L z#rPQ)6pJ;D(fVS@hUCu4TZwH~Hk{to%8pj)oyZJSToPrMsYuKa*{EWUI7q5{L_|+P zKv%3T8pb1tvyUmBn~~>dITs&j1G9Wr*-Z+)6@lfqhbRln?;;U_<#(g7VEG-P1aZa$ zWd=T#cke7>eBcEG5pQE5?D&lks8#~}2iNqDmF^Eas`Vk9l_5~g6URa>M*M!P(PqL8 ze#$xjTma>3Sfdb_76R2I<yxhnPCa0aLHXMdsAeh0^1e@1*L-3?rK!<dK&9C$E{00e zUvW^Ie4-LtprQ7$i7*|cCPJ9b2_^C?$4^*oB<)e#DEPr)iS5LD*HZ4@X~2*E;Cljo zbQAyvro4ypJm?b&PQyDOs0F;HRu{35%e&R+2Q^eZAM_SAx=Laiw^b0V+(nPh)~U1a zHXQiU7eg7V5q_q3`eOqPnqyP~-4Yd?14yUB^q^pDO^^-;?*u*9j2(h;)VcyR<`pVI z@3!J!hfwg?{3%55g}DIc#Bh9!O<#uNGi}-*HkaGfI%1-~Pb9W1LgOL{n<s3_{H(Vj z*LGj=;0D;NluJNQQjHc|RXo~LLjn?OIB%U%^mLGAaCD-K?UYy!Oi$2bJ9KL2yMX(B zF_@a#`!57N*&o~Or;Y|+ZMqSIF{xX?1U)1W1LEOWAOyNoFpm1z9|hy6kG(8tjx^~z zllu>u@!b}6x8f%(nqZloLNwc&hv{}IWUdQSmvDSnm_~<Nx)acyw{LRpHlXj`eFwRG zgdC{BmvGlq4eW#CLw2bl&?i;v03ww%cxw{h@@m-32!9*|GgEvDj(tj%FeCQW28a=0 zdopXPj-YZ@z;{XTJN~u_*(xW8SH`35%$_0YVafJk>T4nIvNumGf^G3h`8qw*Hs^jB z)rXWAT9SsGBm138BhSe>7g!25G}ndIY@RT{$p$DP(9@NFf2h$6H8u;d6*am7OI9`D z2k#>*qJN`|Z_$CqjPKV`$IEQS#UM=df9ETXf?=n8&O!t>`1#C<M*NcieQCrO1!%uv zeiOhh%4aSQ7Dp+vT|sBONhgE5z4wcH{zMp5>J1Yk*}&P@eeVp<?utkK2N%hHHrp0j zfhxjB(OY~3kx7JRLv|6)N(M?tw=k=)fa9H}M4D;X1+4BG;&#^Zsrxl}H523M`lixi zA7mo06_2-TlRwLCU)uftf17U1)=hZ4|8E+Pg60?G=KmTy5X<;!I#RB>?S;weh1p?P zp69(Bd46w$Z?SSwb;C2YeI)A;{9eiJ93K0Z;V}!=m-+e9-!E0yDyn_%bW9JAvj<%` z4_opecs@LxF1c<W&&||WnBR9FxU1oxky8b#CUdNx`#wf;{8TEB<>Qs)Yr@;MlJ>j; zzQ@_L4V;NB=21khjsQ-9_Y!{Ytcy<Px#sI&{-)%yI$PJ~Z<CHOPM*X3Ea_`8dF|%? zY=zIm|CVufzeS24+H`%Uu@|V87iSc5aTy=M)4I+BUAnSWdd%tdoL8|%cHJ1$t%D}- zr5n6!B*yDOx-GlSZqn==<;+JI*LnX#^hU*mtdZTmJ*{0Ssr|r1^mg)bZu4<|r)1m& z<7Uxc$!G^%r5x0nCa3Wr?sL?l3LcICOAm_p6Uz|V#Wl&-q87bsgKno)*#$ck9N27) z%0Lf{dlP+#px-IbIOel<81$Jx6Z96p(>y>ejJbS`#X;w{APq1b(38z-fJU^p?4@A< ziTKp<A*a0!6?3GDMzaiOS_ZXn9tQor(_c)9()3IdjUO`2mBr|2<}$IR7<J8>D$rU{ zJU%~8dx|@&<J2VH+hYLuF8RIZ%{kCb7$aATz&v(mVThY68S5eHDUsb!A(ZKAXNd@U zmR2X~VbJq+7&AS-axrQN$s6bjmOXfUQ~7Fc{G{sx$dSEo_5AY?F8`JR+4AKph61@N z479%y8St&`6<5Hwwph6nJw4RSWAMDG<vYN4rUFL7|L|`AaphVEiqDf7z_`6;pJdws zlMBQ{eN>b(VtS@x0ZzPGy#RC@&1t98LM;>YX6<n(3J8w^{e!d-n|DO#a|ZjIAqL=M z+<(OP_*^)x{Y;<m+Zzoy$mXeNd}$?gu-toY`dGN_l=W29y`V5$X5P5RWL|}P=i+q* z^S0dkN$PjaZ$2e*(C4h1M_iwCHvy378UafhE%TX!{KyeC(}!{s;gjNEnBI#l^X-q& zfvgT<QE}QA&qQCl60rs6(C`w@SLe{465P}J9OvXY)bE_rHuC(Q;dFikZ%!i&^jpR- zQhzOTFHjs>v<WgnAUoS|9jaEmE28ZDA<#3C_Pc0vI$57d|IYcZwe+#+DZJzm(BEIh za@q-)1uzZAm0kg4=C%%r%@*|J&EhL4rID-ASP{uupF#T~$F<!VG$J-hbjqS_S+7qn zPCpj!EoQ{2b&1YmLkU`5atI$fdhY8>&ZA@Jy{~>ziiV!wS^RcBeR$zZI5O~}_^FF& z)<sU2OQ^-gncQ=+Gwl)@&)z+6P31SX&*bn6mVLeyfn!`9dKc(LYDRBl4N@Z`;my|O zC`(}|_QgN;ArSu{Hx>rshXY6fdNb&sgZ;$!CP1a}A&9E9GAD&-ll7i&V~CDM|NWPK z1I#8?^6&Z>srrO9Pk~|W70?~jZekNsifA7RwA$$11QLm?_BB_~ni1&YTWV3?j1$Vd zD6Pvh(b$z~o+w5i6<Z)W#b{7g8#yOVi%K5Wrk19W=U<J+_ZOUpBdsose|Hg$zwptM z7g5KH;+-$14=-{CT}&G;Hqo>FV#e7NJpQ%P#~*2GHn8kDT?vd-QIHlnm^ppRugLhP z$J_X+lW&VM-cL;fp<zhH5Ev}cI1vsFwrPcZE$C*ELD}Ejq-w~&0$fuK;EUb8`~j|o z`8w6&wmZ)+I$d{-_vS~q9{bz$c=q|XAs4IvX}Z(fGxO$4*BPhfJHBSJ%*8p39wU0} zQf$RdQAd-<B7J>vJNX*?9Ik$tlY=ef+OVJRB@icbevz)xKM#K+UpEz}9d>;aeRyC0 zPFz&fXDe)se$V?Bw&xbipW>dK88Jb3-imBK9Yhp?MT5lj?0Jx1PQ;q7yl1aM>?{W* zwGbDA1P}%(v3e<)pg&gZH7Y7fa@>1s^+M3&RRhNAzFG`4stA9<<)ZkU0bGrY=U9IC zDhb#+;V-zKbMHl(A@hpJ=+3|*2FUW*^Y=-Q)kvKO{}Z|Ru5|r0JvF2v2UO`}NelE$ z(3^C#iH|<;F^yz4n|$=S&rRQ)dw#QCiCKHT{Sw`1y-QV}a^E$9M~0mG(3Pojsw-dT z<SmCG{y`LYxCH?&-G#A^Qy)JDx|71N?*&Q*Xw<AlYUkgS+MqY9!AX+lXca)8)QlDE z(c%7PdhkmhoYR@0kyK^351~cRfgbL+fu>*NuME1gVItmqqVWRg4+5d-LAX-*{F4E5 zZIC_)z6iRz8EX<k9RGZQ#@<lv0^j9s*Cz&l_QP<X(MBaaOr_ll@At>mFwj=*HB1JW zOB*41=^;J-4X1Svf*$IR{|bMQVSpZGWXt`jYd3d(E;nQ;f!k)DlB^fx)lQaw^5RL! z$N3w&a&A(7uJqq<eoJ1*1?9u43e17g72o{Y50F3Mv~H66&4G7=fw!@QSp4R7h^`WT zzzseTFQH(E!cMx83g%E7HH4bx$Q`gt!jE?o=(bv{B@!}f(Ox<-(Hanf_iL*a99Zm& zZ}QW2Uwp5hTKml=27T&(7yX|Zvjk%F+XU+&M*mBb<MlV0Ga%FT&4^$poR|^*GD_Ps zZU_CL6W<%9rB1v_Chc_0u9-AEx?SKv_hRvpF`7^;J}pM8ikVAd)G;=L53I@x?<!6m zi}RI66c4wF)5Q4Gp!=1m*Wny$cFqdyYhRofIZ~Q-o)>OghTboAJLs*Y;={{Ov(oV? zWoU3|^Yb#avGjI<153`2Z@z$boFCtJ0kyfnY<eLrxZqv%FS_tk(ex7Pd~v;Qm(aFL zOwju;frpJ|T@l$<meyVo{-rE+xbk+;UtAgQeiiM#GCuSw>QvU8d=)JzyItVGl&j;* z%F)+X$2XRv!&jR>m!t9J-bMeU@}G*IuchPH)H`)8t-j6#z4^MyxOR`5<kp+0?@hm9 z`gXfn&bXO+-;8XF)Ul%6P?5S-gcp?N-C_N52d%iHBk1*2{GF=O)+&qe+tGJh%c{|o zyBT)--91<Cs78aU8Aq$p=xPga=Fj(8-D}XX`}pXv`>*`C25rCJm{)`L-+vI-2ainf zja+jmuRND|<u5w|hahkAuh8QVj^_xuUO=njbvRk|{mAJ}m><vAe7N6YZ3O6jQogUl z-NyaLbO}#$6CY!u-}B2a5E|<Tig%yiK!%Bv{wgPfw8(Heo7618JzWCjr<$}V;4C)j z*MNhb&cX8zm^3!n1n)Z5GQmscSm$+RX%V9RhLG%%LEnXN#gD_rM;SCbTxE6!wYHs= z88qMKo-ge3N6-^-+B!5P;-F_`<h%(E{T$&d{_L1@qjbtSZ&j2AMrYt5zs>Y@EJj;0 z>+u%D<5$<^=MqklYS4-s%WqVA6T}eVI{-{8YszbcuLB%x0&wu9iU}{<S_PhJI-~^< zR&|n{Bx7Y@Ig;Wd*)F_1@+TdDP`FW{3CV*#T7`PbiF@4%%mF8HGd3YmQi<*b$5Y{T z2T(|2i8j~4&1s`Ayuw8Ci(k>dH4xZt(w+dE!U(UZkKm=n;cOplIjW8N(l%6!*P<)j zguVcA_7T9(&<GiZT=)rxqR>J8?GNB%^2)FB`<4Xk0?vIUJQ%^x%6qu-d>NR5gc=gc zc;Y!DNHUGV6XAC7w2JjOAOG-Mgk^$muY{4>x}VY!zxDddxHgvHD{%QXV@oMYKqIN} z8kV&izCz7aSPtCZm(0HISX7c>1PC<r05I??wZS>}w%qq}b5BFa^nO>ugADamP`NOS z@`(F{30UlL<bUDg%y-lCXy)Seh2-T-)1^~v9DMy`oD<6>cX2J<|AM@nse4w4st{F? z%~ZMvSd{FsOFbvIJqJ5ZQm$FgUMDNlRoV7DERo9!YUAr)3g3L$?DJFGm%HoFfL{Di z#&U&TxB{RCI9SnMDKeU>^rN_<8&V!B3?||^`1iAJ3v%r|(*odreErmVQ0aTR+y1Yy z@mx&M+wQK2z?QC}%7+kAMU`17_@mqfG4Q1F>Sh#fR)PI--+Mlk1puz})(Smf^ieqB z6UgD>>In$#5;h#~hZH_|N-<_@G)v{9Yt(CCyX&AiI~b8<pl6IUf75~2%LLt4zrGhR zFuF6s2P+#N-R(1{Be9X6k1p|FkCa9&4F@9T`vE@sQNTPFr2PRt+CF$a>g0SDbWkT} zi&+jmy{!A*3(-%O^HB&%qPVAD_`X3l?Fu{NZ8{l-%<R4gkO{mv9dMr~Gq$m@@E6xu z2y%hAw+n|>aQ7s|0s?1&YJ%RXvN`g7Efe%K&6%LnFD~6hK7jP72PF4*(Cys_<?-?P zV|>OE<k<Ide^bA6)S%gZroZt&&^rJe1=DK`8`+Uo1^E1f0i#=x#s#?_X5sk=h%uQS zWIh0+Pcw_@_bmH3Ob#JFe@4hy7ouN7+}}0qw2RP+Fw@(^4~&S=5}WBCY<oe3zKihr z%`=P-GH6Z)_kWw=w8^Ai4$~hy)rMu#yy!WgzmMAUGihJuU7%+cb9QCXZ^ihW?y+iZ ziqp_6K4)Q;J*+sbF8+gx#*~s+5LgeRJiEBEOQnC_!`XBd;O|BWkOzeFzJ{b3AZIDc zGz~d3K(<kp)f%-^TY|xKma?l(JtVI5n^b^{Jti9x?a}1{q)yPW1+Vido&B`IhhC%x zSk0*c&^yCW_94#|2XBlE$Vow(6hQBLL1k5t1_sgF#gsjfLd-<(2~$Ctq*ErOmhAOg zm2tdJQ#HuY?%t5T7yP~$g8vyCt*c}Fg+9F-P+L$oNB&;shVJ)|040W`3_?ys$Tnx~ z$mvh`EFo2OPwKyjfOdOb?m(WBJve!XB4K9xS=k4AlO~a?cB=+gi+An+u5;7(0^TeB z+VA7pJN!90n8NfH(ObSPY)b<}biY^nIi_1XK-Q;<ueirETzkFU1aKx+JfCWi_!bG< z;JZ`<3(VaIp=aNY+>2E_K47`^9at`V=r#U{cTP37C+7Sn?{g}140J=f8_()q7ZU8v zr=KVBd@oQ%@4g5tzZ3#P#_R}Hv{y#xpG>`K??8N@U~;sun`hAHF1=aU12P~<a(@rS zo{|B?Bh!l&dsPOK3S@$Asye$eXqd|M9Mx&#fZa2FLUo2YNaVxx49%JEz?{SMZ<@2& z!EVO%6zLpyXuV4xmQLR&_0_q5qV9YW<-~fR_v_B;DE0I)J<jLsi^7V`^d6-A$wW*V z(_{S3=uBGa(mVXlqD(;UxPOG<{E$gYU3#10G%ZGL1Kd9(;0!DVHHqo(0?v$L)H2BQ z`$6ZMV)Us?Zwxwzi&0aP`}><tw;0WF>2FPETnucH`+Hl?vKY;<nEuLgcEsp6m+l^N zT4m9c5cjVNIYYAOuuFFiJ9D!DO630KVP|6&K#5GZx1FO|z|J$h*mims2P~Fps9lqa zQ@_Y|zc(Ksw6U<rg*Yl_90S-l1Ay#4f=SrkhqGX3O;Ko_vQD7uOU(j?vxmG9^iJuA zzix!i^a<TR&d<dhKo14T2|H~7WM{vB8KdR+lm!NRU0Vg1-VpE~NB+Pd(|dz{=$apz zOgFRqA6U>PneG|#PY%(SA*M%$t>t0b8D6HKu_nX%Ed$%-v!MG${nPPPqx1RUrWCU_ z6vH0LzgQWw4#nVqW%{Qqe{1ZQ#od!yl<*HNLGw!Rf!^o%r<_A;&S83VN&k|P^ixTu zXPxWccrIKuOn-5nb@)8$R*LV|tF$$vG%YK`Z@H?B7dpx71JG;68CtK=Gqs@~2|v`j z<pShb#Se|?69r^%)xt6vs)B5(`LPLi)Ik2M`GJQ0g~_$jzaREV339IPhiBt+9posV z1!e0KAIRQ*>k~ihYR_Q9Hv9nacR|KcI%-(&A)RCZ<o<xw9U457+k^g=ChZG?TxVLx zP5Q|MxyrJTjB%62j6Jc>#wz6CQJ7bz@4LzEv%ow5a2}naJVUw<HPx5#*Yf{AqI>+F zn8VcXbtSz`^tOR)>1{=&l?tsE))obb^&!}In!5!Qx@s1X*#k9B;^grI$MvTe{W-Nc z3?k34B*Ak$mazRBYgu;S^r(Y8t3QsF1&4=GOc;X{B)zwgk@rVofj%M(i1tmD&vA6I z%Hrr!^+mo<^_o@hs!-w1=U=Q_p+ckDuhqTe(o$DmS&G}Go^MpDVcpu#lxk4_#W%~Q zp4hnI^Dpz6r7G91U%x@)QjNHyRO8yuH7fON!v-&vs(t#GrJlvLvVUH)VS|_JHf;QS z-9{BE@U^|WRc`R=i_ete>pc5>{bx$mu3w6u3RkNA5}u-dsmAr{@*V2dekuDpcjLEp z8&;_Ba_xqV5|8{$?Z&nFksCK?P^wYA1`Tns1`X4$RnPrd0T*%a>z!5VndiM{dZ~8f zI`zCKYV>CPI`zuZW6#%rj_#@dY=gw0a66AD;_gz3i#^-mRlM2LuQopYeA$mtgkL|? zpl+l37dI|dr$PP3wG#u<u<k3bKHsqJGZ-MeC?4|p2KCEQtvepPr{JgJGYWjFhb!Gh z_f)y&wQ~GDc|`fcyjJ@~3<n0ZPR_S_x~}(;YvY~x1HD|g&hyVcj|Xb-?6ZyPHZDt* z8@%*#!@7+cq09Z0jY`#SShrN2R~t60Tfgy(Z@SlQ^y<qm<6G5zrYu#hU#H=lFM}-7 z*$>mBcUG-J)oa~f9sjxKe!A<yn&s%>#~yo(9<E&DeyUufdUdK)^PbAYe-GBGRGuEW z^PVbnSJfJKV2gN^PkiK|`yQr;{)Ycl#c!x)jhfY|=7aatq8g9hUzIA~U8yEjez*p% zQ2C*U>ES95R>prSfx4$Ujy_nOsy^@t-FN@Je0A=mhab9!&u~YteA#R9f~8(;Q2)8Q z4NE0n6SET|<<0BHZ@yf&6qPMi>Ym1>{ts>M0v|_JKJLHG{hm!)ph(f7Tw0))O`4Wc z3T~RDZEP-Ul3sv9H%+!pY%WVKy+F|w5i1m2q+$_}MGLl2aMcPGiUdV0Qe>5?Rf?`y zu|nk=1))mO|MSl5Y&Pj8P4V~N&u8+?oXh*Z=RIf6oH=u5vaYqQ&A^|{t=&zHUCpKo zIEyqfb%1L=xwurdluJV$^3ijJ?v?R{>-x&Fd3B|gHCL=?s4Fd7L<w7ZdVF)HPjBz- zZf#oGMRU1!T4&d4sk*$bvaDVf*HxLmsi<jSq*%9%g2=qZ^QBJzlo9CGKX{LbQYo#d zDO2aD+oaN6MKSqPT}B%#E9XxY2UYkF*GXN)5^SuSC#F})Q-3*s8cNAjS~X7^=DBsl zOJ%yDKz-g&Mrc{J{;AUdcFHejtKv^Zjc$mTkI(0$rD0KpZbVh#gsM{Fs|cymgw;e> z(;ymZiK<nlwexi&s#XtFU@a=j^-nE{wY9h_^iQ$w=${$7qkl?tNB<zpU0cr|>~}Bb zkG6q&{ZprPu}A~>Q%~;tTK%JyqZZU_I+{*HJteBwV$~z2z8-V6E!C?94JfbFKMmxp z)ISX<uhc)wh}M>Td4;xGSxn)Vmd=-@wfd*DPIvfITCY3&!J|vnqf7B7JN&`mrD`zk zT$?YhMPivY-ts!#a7j6#<rVy)%``0F&(itk`J|_lEKv8<*5S0vE9$i7X*o5EYB({b z<L9y}J*yfP*HzFkYAWhVt7_+cq5>7#2}^rxySIVXEzREUCaw$GGl{RYsi(Kg3fC(_ z4Sl<m*1IdUaTiN{Ma3eiuUtTNl{YLvMJ;W^UB{n#{8eh7Gc9yB(H<$*bLbU9`>Wz< zGmJ?x$!KZp=3Mf244h3;8ch)u)49s%?HI^Uuh!eKrlWHmR~kJjCuw?byRT=1B{!OD zl679snbXj?df@71l=u4DTALbsywSwgMNqr@Y2t2dZq|#y1&tle7jRKr)!ErYZ(v>w zIP)7?C`+_Bjcsk6>p1aOZiw}!(^R3Lt*Uk9oH=F@=gc|oI)fCmmoU0puk{*~-MnV6 zW5<cG9&h(qCl*oL;icEM6sr_7pMB+RZN|6u6+`8&MuQfkr-duE_EEO&Ma8ozb4A_! z+PdnBx;b_~Gbh^j%+bz=&>@!v!@jz;F#IsQ9i6?aTMYAR-qUF`dz(6&y<&Em<utA; zZ^!B$qPZZN*N=Ad;;crPIohn~E-!7Z!}8{}ZLO@h(V@hgIZZ9zrZrq=I<;1;u}7V^ zgOP+*68$BA7dOnO5GR$sXx22jytCJ!$L%p_pl#kpcC72+2Ca2-98+07P3Q*~SBrLn zoUL>$oLZbeoJE|obk7SG>iJ1;Mz2>}URkriywbR<N-wXftS5pUsU=xuO=%Suq6#tp z)Kyefl-5_6`&_$;U108;LMqDVX-`UjV)p-tk@=NX6%CiWE9g741FO_Nw0`kCYp1fN zvZ1oHN;_Hl*9D797gPxS>w<=bLho8xDx8?*F(a(<*e0pqno_Qfc0f#JLoMp;(9*gF zHKT#P#JtefNi@Wi7TxC(UcQ)%ZylGF>dIv}s=TtktY&fbJa*|9h^#2Dscon%!@kma z74&C%`HLoKsH?A$y3+E>+WLmlhDwG5gwzfS(Mvp<wL<D^>&z>jSs~_uWrVqFy2T3A zv~e+&dL6K9$}}(L#aMOf)mGiIv|^rHU1?>H9W7Q1YZup*#S%~_^@HrR(=K&W`E1o( zxa}}HcpApSin>@pZFyNKzI9uqzpq%Jop|(^-k!mX6-R#`-BTN@YnN20WV8BW2bQ-N z)YUF_)2PfgTUllK^Gdl&_%4tU?bf4h+&ly9L2B$wm}&JV)1;xRw?li%=E2#f$tT<k zq_w?qwRifbeBRaKMwxZ!W1#Kp>Rj2llJR1EpKV5)-E}l2wlsCNw==RFoh>^4({6sP z=ICi{*K=RH8ohzh+m6IVDKd*PO^k`cQ`-)sbLFSJO(Sb8u}kmkYHjkm8(W(%7459N z?%u8@u2o(=?)J8|dAr!@VjSPGnjOa39dxpns*k%`*Xs3UB*ThrEv1HelhW1MK}X(f zv~57^$Yr|7&N@Y|qDt%PIPW<%IO!{EDhAFr&cIJh<x~XL390+hy@64vVV+T33I`2M z&A`E7hIJ|&m(uJUh9=cBZ@3HtXJx`%(caN0t6f~vz^M>Dwh!Y5&{5O1$5_lcX!WYm zqvMmAJ!mwMxgVdzR%)I)LyH)Vv`(u*elqNQW?wc;K6{uSuTOjOp~*E2kCal<dWLu! zZSSv$+c)NOYFE^8+rzLwmLNXRR8;9U+>31oSGrf22h;Tw(7UP;o2Grvkd`x8@1Rej zamM<NQm)U8Iq0m6w$_d{BWjGD40DX`o<?Q@IKRDf44J~{qIuxJinH!kW3h3E-MuTP zn&({i9OFvOEyh)xj(T4>qWYrQ)){3?wu)|e+q`DSgrhj6>1xbAkda<TFZX?n4ULlZ z(Qd+=w6F}*aNAxpk!9NX(_{{l2tI}xYrSpQ-P6^}0I9L9+lz^v+&wZWU>1koh1=;a z%X;kQR(3?YXPu1MQ;cZgR<$wf6FZ_e?b={<UZ%~_L`^NN%<zophiOu~nsK!?6Xk1c zTI20WI6I_cJ)QgTcAFOxGvT1T%ssdhW+%cNt|rV~AFtk?2#ZZ`>ByAP=<(B9aW=2( zYNb<8sM(y>8o_Wkmp+}$(n5DzrEcu$(OVF`ETPyO(?{c}L!DvkV0>=P%J|3~^?)Ua z`4w7$C8tO4F*JqVXqY!OXIUlHr1s5(ino$`ySlg?(qq+Z=Cfw7WMylQ=|KF>JkIJ~ zvqg6@p~a0uS0l3=qQi^2O1C-Qy1arLRC`D!>sp(8TBOC>y1J!DI(pm7I@>zCx}`}` z?)4F8`f*vSuZ6n<l{{w-w@&k0y=|slMrE|9YrGq#F*!-FIr=A!&Ky-&G?X&rEnP9M zs<v#=is-HBr3r+_<_nE-YpO*{$p~E~PBZGg#5eZf0CO(Vx`#X7vXO<vn>vhTjHH%u z)6A&z!wO&7*zKKFV&3zNC}Vyjx7u`h_KlP=zpAv%a9j7{#>%$NrZqBVZD-fY)^1s1 z!af7-CSeSjoYhurrQ|HP##>ecVeT<1An_!xd4EP5jLpxUD1+U+quN@VX%<W{GJs@0 zA$mW00-Y7Dn5#FcUc+5ht&^B^8)g@)LDBxd%j{*%+h5Gnxd}t>a$C7gWTukQ9qqwP z-q`LVjs{|$OV@h4I!{!DA-=Ot*Hx`udJ56Ix9NQ%O~5?Qx~Ivis>U+W8nWtC_w4Fm zUa-SDL+$oOzUgLdwtIUTP3J~WRI^QuGOsnOK9ah{(V3B$7OT-zyP5Z@c3;RgVB^S- z4@ft(Wz;X3t%Wk`yp7zNo9(oscD_!GkC0f)TCcMd_PoKs96%#;OpR^URDe#0Op|)< zTSpQ$v3}u1+^-$4c95~gsi%y2o}a*&A^Ek*^!k|lu3K;dy>$ytq?fruv!Bp`uQ7Rk zU2RRn`SBt1xZgdWDQ-Hy1r^K{>iw_GqbQuRYrS2}Veqsdx=*U;ycK<TC07>H?Pl}T z=L*`f>ji}fqq*0*)D2u;w9{2RQ3(UxUo5}%*v25?bn_fTV6-QtQ)R5;(_20s)zI4} zmSi_-ax<>cDV|YgtY6b=N<WeHad!~rt-9X1;8&f9h#N?+u;v4-JAmWD&0&7+f(7-K zGt`ZPo<K3(Z*_8(C#9OM)=Fv(YV1)(!pCc-e}|qQ))`L}^I+CgYW%gyk{zF?v7@nV z!?oTr>k*5UJ1%E@1CQ3jiE?WhtbS$C=`nonTI-5E)fhJC($XartJ-^_u1R1(OoXON zsJx!XjU5aYEn4O5?rG);rWv8n|LiA<_G|?6dOA-xY|eGVXRXqE@*=$qAY>}DgNcNo zht7N*WA3gMJ;nuzOgITSDkiaz5z1jJPf+^NsaB;4G7nLyZQSfW2%kN*%<VSJK_j;u zwqIf??9*DG23S|$0p~S!`Zmx-wX2lG;%a#A7@ZF8ri=FS$kn=nl4a`b*pbfK7{1Qd zj-HqSak7hMnZo0;7R}<yukB}=(GYu9Om}ZiKQ|ilYO50(Iiesk>G`p;t8<N)r?7F_ zrWVbTwTvP<yQHVHrnh~iw`*?0Wmc1|iFOz$r}@xl_e|qbs8iQEEOkyJ$NaX=M)N)> z`czf5#1Fa?XPE6Y3vJyno>Ufw8C(yT*l%X2qoW?4F1L2H@+gGnU(;AKM4#Tkayu%^ zC(82mEL4k~c0A_qu*Ome1FgAsbF4McKZ$mev>~4JThCYK>G;%gRco~BH4D@8aS6@a zt`C(`hq&hA2Gh{NQd>KiZHV504zD{t)kxC1yzN|)M`dKU*L%Vu52Udhn!B^R)f^U^ zm*2rfv96~lawD?{=G?56E_P+NgUz;JIlpVAbgjJ5eyC(fmRxYb1;&-<_FlzE&g{4* zo!c~tea=YZ+~z5UbN#u_;`MOlx!qY(ORHjVqQmS;TD^75J)M1A<!xNm#&|^UPo>)1 z+}bDvH5;WY8|m(mD9SoJntRQ&Y94KsHrDRzq{gI5=Q}lB9S@GW%$wM%PV1II%6rY{ zJh2!%!0qiaS5S1&#Z-5$ZS@-UO<no`v5ff>o>?NjtrIq5Wp|5Iwzct~M<;5rUbP!l zovS;=-Mg}lXl^&m!%Jmx+#|+v`b<ufqG`p`ii$-aNzIv~kG8A@66VP|aI2>0TPy1= z7~*QmX^GQU47yXdMPVeinJZ-m-2z01<|m%eNR(@;(a^O)yCga)9mK?D9;^m2C`;@< zMMI;u4BSqecQ?o1(+rf|Jc}BwJ5&1}Zy5RJZIpR8VqdgaL1Eq3sRLH%x){U0Z5c-K z72L#4)jNgeSjwnw^BL_hxsEf}))Kv=PHb>{Z(C2R-a$rhXlb+N9Ew>4y({IB@f7=^ zHQpXZx!oJZp1d5FZ{Vqn<(<TjGGa5Ub{}F3G&9kKn0KG?!!xZLtEp<$`eIADhI>{L zod%sI>(=_#$kN8OZf;Iul|RzWVk~VU^;4sx?6|wNX#>&|=a{Eg5_>EeH@R~HMYd}! zKSqb5*3<hFX|%Eo9&y+Eyx#SO!9YoOY){y3)eh4d-&pAqPk2PLCN8FR`!UEdBc}iV ze|}^{^#j8N^9Ir?{P5Ew4Gk=;VY0ilx4E^`_TGp$RdK0D?XVN(v1=*X9J*UqGoR1p zft&uy`SWeNnp#*>qTRkuRhVZ@C6lu2M;g2xm%Y|pNcSN#N7tTw$lSU-XB1hv?Y0)m zSVP=lT=2gNVtS&?cIR-i201@I0|ODp*;d;!D<#_1P7_^JF;ce1wsnmgy305}nemI> z7jcQ<ITTA284l~ZSYx6}naH?@>ShWrz7DNXpK1B1tRCnH%sjEhOm>5-ERU{kvIF$O zWlU~kHa>nej$V|_#X#qaF2s>iTBZJB6{Oid_1JEuBc44YB_DA>z)~ecST<xN&}bJj z(Yh(?8fZJwvNO?n8<%$y3u&q+S?;&9*VosS57K-h8Jb~;jQFxA%sxnQ?22N}727wJ zqbSIvc-1i}Rz}wMEvbl>gWZ#;vV^HetTC&&ars75O_eqCYmc`tQBD$?i;1I`PILAr zPGv#|53H-3r0EmZk7@9Ua_dELNbXfk6vtbBA`zN?h=>!JKgj4<%_eLg!<S-GyzMa| zcDourpLczax1+mtWwaw;U=e+mal%5^baqVDM<v#h@+szu^-1x?kF$bhXw_25EGp|m zSq@uS#u{8!aI##qOb^`}!737|oL9e?KdgGIWKNY>7N`<gB$W+i3#GE2<-L{Vl`4e= ztCdxnV=1fHS!Ios`Uci}*-Hw^%PNJ+igK32R!=W&TiM&*(Av}H)uYS3ja|xyE=HNw zL`&>YcNTa%xRqlk`t(b8O$pIEN<HlD;l%-655+<3mXiIY`e@gbK5*Yja5d`)b;bL< z4Vt00t93Px_S*)V6$`a)U*pp0EpG>x+4#J%+t;{sbv!obai3j2+A4RxF>9#ko&{Z< zy}t6e#kS<G?_C*lO})1#{?N^mh}u;Is^)oI-MYC0u5Rt<?J;es?(A&Vm`dw5bdlFA zow?eLP}9P0jkoU2*@@lxYG@f}TU+PqnoeQ$8S8=<M3>|dHLtPDT+BJIw2tMC6`I;y zi)lO1UYLnx`rO-8Vuv-bf<rTyV?Xs=w3bX~*YgHJtuA~pQ)sKO>U40pSpkEBOa~1L z;l`i!%3?joR%ul{+3wYu2-R&qFJSiHW<9SRRO>SPdFC>EtLYh)&4U6hQ;rK&D-#Ef zlp)#{3`Wkn&|<J6Q)GP)gVF8;5$1~Qcx!E0X6qShiXCa5O+zD>c6P0ag;lzzn~Q-; zn>v{mX>FcP`D6R@sYh=Y3)q;PedC3rKl%2R>lWU)`k~F`|E~I(Y?*L&`PMDJsJy@Q z%&|2Uz6Kfh`pxH0JkL0->IXA_7y0yGC*LEF-JO2zw%--jJn*yIU%vI3kKD?N@z~f! zTY=kJ8fRS_2YT^Zb6MV?hcgLojfRtDO+o&@l2*p_bW;^mQYUTHh=a2@;|J1>c#R*E z6z@IjGChZ}vH9o^anV`OIKg(B>eg;^ZFD=6UAjDCgMBA$Eq`R#Yi26#VOpJ6oXn*x zvG=l;=tFlNbq@?uXO*m(C#zU$FYTS3Yk5vuGODpn!gM2+I6eoao%9=P19sWDhkxO1 z;Bl#rzo$uWv%U$zqj_m<V>(hz(X+O#S?AZ)v4*`$jFksw<J4OUyxVS1dzo2gl}u&f zjTvseKBd>+*sBYc*vja%ftgwF38baDtxMWln!BV)dx<tWG3oB<ZdQk{l6IX_?e1CG z#+w=)t5`qQX#QCvtC;m9qN$UWIkQTnXH^S1np?XXeZDr?!L>?u(D%uX#<rERqp7_| zcC7Yx$d2a54G3A&L9Vr3va;PL<|^LRt*b=W?^-K)HQ3tIaI<Wct2;W)8QJF8D->oC zCR)*@>WfL*L?*>eAeuR?C=6dSO$#$k%Nw7lo9@vP!mVGUP8S#?Zd%h#aVS$l85$EW zV}wM^>U6jB(t~~1<z3IaZ>&a>_O<FUUrD2QyPLbk@Ape%TVs<nceShP#vYl<&(d!% ztS}$C>o|Zl#g<#5)oDhs&e*)y^jWiQ8-!QH)<~1DwM~4h8-3zyqH%S%tZSDZX24}f z``T9h(?k<k+bp_PMS9kDcksu{daDj@A-h-cr?H1WtG)bbYUhuyjX!kWYox1(8f#pm zu{vDx^>($1cXeyC>{!>O_1)!@Mr{L4K0Rc0vFu>YgzWHkG)Z@7W1Ie=adk2l>+bAm z=MSx^yAuoQ7uGH{*U{^aE>5+VnahGwcU47wy}sw5YZ`><`qk#UL(;IM!d+RfV+HK* z7&yedp0ynsP*c&Mve>KVC5YM@Ep3Y)p+s$7qu!t`MAx^Q%YKD7eY(t=n8URBG;Q79 zX{`;t9lVtqcY$QmTNhJsInzoTIqASPdlYHyOaEw-o{Vt&x*fZypIC{V<s^!04**Uq z+#H|rP}3a3#)d7U%@-Zaj5fJB#7Uf(Hp{I<{V-K&zna1#!ir&%M3-idkfKzFgNe0U zZ>S6tr|)IzOjP3Nffr#C$J?*RB#w<O;!hkMeUYYa7~S?t|HPTCwf~9ZVsFAEj@Ea1 zPLRZW&nR(j^HwBr)ZlxL#A)o?kHoRjp?~7Y*eg-PMDsRM4a>HwqD-7B`W}@I2nN<4 z=!K8rLSyu@wYbB+rdUG)E(0uHH!m~#9B!hfoG9kq<KPGl8k$%~7Za^2wyrQs<KMz= z?lf0`S?^)nOC;B^aFWM5(Faxx)wp_?7bp9wrI-5XB!MAw24A>z7%^2R5Ud4d_O-2( z^*K6bANbC|iJwMRPg^uis?S<<mQ<g|pPFe6ykOYXX?9iI?wKzImtVoUkH)TsF7KK( zgq1Di<?r&@MN+$n=LMz2v>LT*xG7~}l*aOsvotiW@!B$KI$OJA2j(KWiaPT(sQMYz zCvPy#r&{#!abtT_fl*n>Tt>smi^^pN#GEtX9a;96IBECwvdZ7OE>V_cAHu#0of*;> z%$d9Br7jGq_4RfyWISr_@Um&QxnrAa-2xa>2OdsodL!|(DUCWoM)U1h>&Zz}&%k}w zz)Q6}aBlfumh7?`-ZUk#?2~-#R9;_hNcq5hr+vG1;?^6NX~2)>4VOVw^nNR0B0W!Z z-A;5psh0=C>sZdYntbK<&6hdSA6@QfW@{x#d|3v}vTq_{kFu@BL(>wcw(khzXE}#S zI&4wqS2qkQ%KW<O*=Q>t?c<5zl8$&w$UI{u3qW}}p}dmI^$;1}o;u#pHlMzf(`ioT zb#h&vJk0Z><1&}&TQ0HOqs=%_2liv1^7;mCaq*rQNTiW=LhEJsksk+X`X+rk#p9ql zhBsXE-NOpk$di(8W{8R()?z$;QbM(AY@3G@+R<qY=(e8x$ozVqt<(Qk#mc9W1{OY> zgHe4HH`R#Ud&a+1O6R1F*z)_}tkK09A1<>w_59(o>a6dF%V}PIPL$P{&iiAH<~z30 z@A8QC)G}`I(m*FFJXei7;^v7vr}fd04NMg4D?RaHeCJ2=;Jmnm8fe~=$BEKDRXSI% z7TzXnVy96$>A<;_p21ek*2E$b>GrLc9%fV;Nz=|vc6$l493?B+d@^ITCM#iot*mP& zP4_BkWTt_QKdYK_2O*7XrI9aFv@^xc#uZRlwkzv8*Gcz`c4_UA_3hG3)@E`wcQd`e z%3P{e=Uv4=x>9e_>vQAZ%qLrTR>0d&jnPNTtISy+1}l6;q?%8Pl<Hd?3l^~P&b+%! zmM)Qc_cEz<^8}>2gs_r2ws~xB9X-j61;y+yVV;>mOTGEPR!Vth%R?Sr=gl1~uZr^8 zJ1^_kaI>(K+gk=G3@jK1&}QdLIZt`5wyU3YlA2ju%lU9biGI?kL_1+J78S2pz^6J& zt5&S2Sy5C}RN8F5A!x;#*`j|Ue7#VAhRcNOORhokikt&=$M-@9egT)P8zY;R@s+86 zi};`9d&xVA<zLqJT_rMc31R#Xl*lxZ0{%CJ>tiC1O&G{+?-}g4*gR~0wjf&{TZByz zZLqo6JZyfpAX^`s{WI9nf4-{!AjQSzX7jM|3G#&UTv0hhn?HlUli5yIhMAc^#tHHU zh!3)b*!tKaY!YX`eh<*WHlEF3JCQB6Jd&Ef|0TcHm)4usnf|oSwC=Rt^r!Wv^`~{G zKY!GB{uK73n=46#U9(79teX0s87o#46+2g~=w^+%w|RxHr)vcZM>yHNm4jN=EFFq^ zyNYI5jLz?KSGD3|{mKYaL!Dif^(8AR_{G}zO#L=WQPB)0?zuZ!Xf9sv8X7%=^MSVd z3G8WP<8zwkMsf7Z&C<)(!M27?e;TGA_tcN1Y1nkOIyMb!VzblDW8cfRl1<~3`YUDA zFMX;mmCJvikk!%SF4)Yb`Se%LW~Wox8g8&HWYci9K{x%`VYUoSuX^>^mZvu9aVwkZ zb+c(2ADjMa*fg!$qtvt-H`E6zNA+sBrt4<YUm2T*t8E&lo9a?q47NJ9p?=al8fNQI zyHxK6HvJ{?fgP^0Rfk<x4Np{O3kX-4whp^|nqK{;a<rUNqsQ?+8QLyLBGqhKZnf2} z2X<rr<5Rt6c}rouu3C=OKU&ACGv0R^r}A2&;cBn`hSrh#@H{rH1O4f-+F;kA9;;l{ ztDDB@vHmnp%clOa+i3&)8n0ohTic|j(O)H-9;?0TJN30)KWe|qw%ebURrfVs<#n-X zUQMH6nqJ$zZA(4-YJ<k>PwQFZ?DT4j!8V+))i0_;)2kkprS|DhWosGi`d0gGyET1$ z`75I7RF>w^HqgMPwj}aNDdFvGdOq8AsQOjD{xq-3(zxN;6kTVm9@HM&heO+%+LEX} z+hJN>)uVQ+4f?b7+kVk9*gh{~Uv+7m=C$){ns_@ZIaYZZujSJ6s4unLD$6c!e4bLm zRgT)D{??zKTXsFDEZdF+>}y_I9=i$a%plyh+4iTV)%+?~WvY)=uI<Ab_BBq^$Lm!4 zM%z9O($=x594(W5uIM?ZcB@?7^jFVjm(jLC+os+2?7W&zZPolL)AmJmbYFd@Hmkoi zjZ%-}&zVY&Po`cB(yJ|MpX%1%hmn!U7Zu1-8|^+rZPjw=&#oUkK0Z#*b1k2?DfNx^ zm3kas&IXRvKPu0buVv8l!M0!hb)r5=ZPYrkWvM-?S7oUm<L!#~lj_lPOw(z8yAD;J z>a=C34Qji}imy{Gqoz^48n5kKfAMX__Kl{|v?{}3t7B8WD$mwi77bH5nqKwV*GG+0 zo9wpDuIYc<F1-e5TUC7;ra$$s>d-b}u$8bm+4QIK)aPoG`p3?z`?gGjeYI1M?RFLK zzv+bAeUz5VE{FDS_IaUp*>%INdF@nrYNzV5+k?S=DVtq(+b;EwZ4bMq-FmG3vQpEj zuT-A?YS{GHzBVsqU(?xo*fq};EwB1k<*OfTe=F7A_%>tvAYO*nvF20%sxH-Umsw?~ zeEl`Bsf}ub%Cvo<Vfw3LQyF$!)HM3D^Xai&R?VxwQZ}_)<Ft(!Y+5h2e!CtLr5k$f zAzQ5PQ2ClyZPlNaTg#$lQ+w4;{Z+H6E-j<lVAqjtpXSrF8m{sTw)3L2<20?Eej)p+ zQ+3$ovD4Wyh)Q^_4n2Pj(k05P?Lu{ES=45=Pur}9sT~H}P+0_-=d#wX=F#-pp7p0` zHLv<WWg2W67Vj5Z2f^kzPJO9$sp0ndRK>o^vF%bF`qMIKdTn#6TdC=6pOvw%@p^3M zRbS~(uU{IjwrCo)S$%8UYq!l(!fd&!SLJ9s)byHG^Jsmj4E-%&Q`<G2wtc(q4fYfH zT-&6|&^)#cDogd-ZO1;R48n$!p=n2Rt_~-oKAK<q7WKP*-fEdoR0hqfzSJ_<eM%xb z)#oZp%W1IbvHDPTs1Nn0b!O{Uzu0X><0{xRy<Jv={VFz<sbT7K^_^|AQg!LCluhei zZM0<$Z4-KqX`K4NPNz2LPs^x&QTe*5EVWaAw#{}~)E3RJ`t?`KX6IFTnofW5`BbO2 zdzGze47O@E+g7^{2#Q@hRlds7a@aD}PHhK?>e0SVs^8T<-88R;8*FxcsQtR>&u*Wp zUuD|%*l{XD?NwV0Hf{fUY|FRXE<vW<w!JD((`kA2r*;o*Lv}x`diAINvd>xdmHryo zRHj|ms#kw1Ps25@rqzA@4eh^do$<EVe$Y7GG_T!0)gP)u+j)Fljg+U3wAxnG&+2d8 zSG(*wHP}~sRj&G1b?Q%Twe3<}S|@gWX&T#i<?L%dJ=S>rsht|8ezC7FYKQ93wrgMi zG_UH=v}%*VX4|4VY=4$U<FpRcAKIREQ=OVlHx1Wc1)IuKxtf0}o1R;C`LrDIwrf7M zQ|;1l^^b<xa@mdbtG13rcArN&gUzlB)uWsKhPIuNY*JfQkJ_*Gu6C*IdaU*tY})R0 zU*ptXwcqxY9jEDSA1L)#$);&luGYWp2enz#XqeWa`c~yB^|zGGwn6=(`B$=Oezi5e z-Zh=3(X!ih?`A)~J#c9HX=r}+la|M}MP;aLwM+G=?FO5k=k~Gov35EQGuZ0bbl<jL zeQN8{KEdvDs-xkmL({9>`cr@CzJ{rf?Q#s4UhP(!wd`t(Zn|&xKN_b$O{d{n4%MkP zwX@m&)^w^<Y1=p&pO8G(pKD(Am+h0GzN;fnZLrJ5ZftHx^Quj1pZZnnOpo<f&u05b zW$V8F8rbYQ(=d(GV}ortf0YuaI@C5TzpX?2T-z6R-Kk#nh3zwyJv5EV)Ap#k)vsC( zwMEOQ$NJMW8m`9%TOvPby=y*Ar#|9eN)7UX#;bl!WBbU~MUdHUv`p$dBYLc5)AY6- zDns+w;o7#;cKg^)XV<&R)3&Ia+N5=2r_p{$!}NM!`$y%(w<!+IIX%s%dh}Pprgmuk z=ueN;SE@tv+kR8sy01S?Gc?}z(~073+3E+oeb{-_RxN}6R0m%vG3!_DQ2Fs~#4e-C zQCsw9_XT!6sP8qe{xr_^o0dI3UnR%tKida-tZ8-Aw5nI-*gDxA)PJf!<J+5-VJe&I z)P1cZZ7ceVA4?b<tMAnom92fL{uZ&>Ww7hm_OJR++ll_F*wn67Y^p<P+p4zP@-&^= zp|Vs@ykE4;s^7NJV84z{)5q(o;aGJI9an3e+4idp)o-^G&7(Ti7g|m&gUZnKS_XZt zqdzyB>a%^Q={3x@*Di0Obct-$bSldp=cr!WMzu|C&|f{9){E-aF!hV3Q@i5R_@d!< zUW4OAdK(B=T`EuW7;K5sCAx-cTCEE$v)Vq?k7|!yCt9~^r>2Wft6>_azfv}prENfE zX<lv1O5JRqCQ4@zuVqo+s9u$;b*p8w{bIKV)uCYqo1R0uuVI>AZBw7wat!vh?3zaH z)XkP>*R9&Cc~qz7S2_BtWYe~5m&ewb$iI5tX&cgUtJ<RZ?DDFO8m7Lm<*O{MFa2p= z)vaY!+UJVFej;6Jx60ABrZUynDo=IVwvX<a>Wu0}Uu8{w(TZ8tv(bvyiXtar(dVj_ z^)ptqRt$Z*I?H;xI{5KwaZ&Mn{V@7`UWMfiAYFwps)xGz=F=bxDvF9UEY5=A46q*z zn~!&ki!Qc4Vm8u4-eT(^@5z|vR_|CEW|{@87;4~5+%e?&^X%yJ=TW&JRtH7SdHg?) zCFaM#kXW>$#B@#q3$S5GE!C^aAy&-$P*&J2K@GTQ39DlpJ9-l6(?{$>^j#Fy7hPF0 z$Z10wi{;Ab!~D^<m6)UAO)PR+6|S!OAIvOv@^+f}k<sYuzgArjF}rw1qEt(Yi-#;G zC@z{2T@cotSWZ!e{$BxJT4g<gz5p0YHmVk5wTpp<S)5p0QE|O~P2JmUDm$5WJE#U{ zI9Z?O?P_e}UE4-qcW;}1o!oj^F=63~N@~}UzPqK>mpFd5o5fqa@W(5=yfvLTO>y-6 zkH*rm(bW$<;dyO@uWYULF6nIJbJMn<QMoYImh8?WfvlpUGCp+I;ce6RMmX!EN4oNJ z$oV&OMZI>4L(YebPv-m^TBk)9pU|R{=!gbYXz>iQT|~dKZ@sX6QqCJ{>#zcgilQyB zfiDi6L<6L<^%_^frq@5crq)LHb-ZGS&tYGGgWE;%MT_~;n`*2a^hs#Dh(mlaY{F4q z!D21R?v=P^4rv}UR%qDJ<`KP&4l#b_;*M56Uaw2;Z1aabN1`uVBrX_&;{Tb#;A$S^ zgQ8jLu*F?%Rs7?Ggu;r7M~>yp(ElV5&3jyhI2-u?EZ*8xd>lbPM-c1m23t|=?rd&q z?Cu$2!3@4vZLd!p)u|nK)im?!hXPNc?Tv15VAlGlv<n_|)gD~&pBkasBhmG7kDvKW zO2;KPWd8QNvfP7fQ^u}Y^OMuQTYb|<Qr!zay8CY#=jHc5Kk?VUzIl4%3yUsnzB^~; z%QwAPloh;f?o&_I&i1`hQ1#R2!V5ndxuaso2X&=8A30^k8KM1G{^-uHF6q5xN!{LA zr+?}*7ar(%F!%1J0>>4r$GOhj@Xf0ZUVrU%_xWC2b#+hVv9q@>efYI|ZoBpV+b<4y zzB0FO(k-{V`udmZ-hbeRKfm65)3Pfs{Nex2f8&W+o*j>W_WG9Z-8gmnBQu<D?RewV zN48y+-4+bA7w@0sdprD}C81X<7hUt)sxxN&^!>E=emv3G_4BV>+WWJ~{yG1+@80*{ zo&V(S_y7LjhX20v?qz>0d-K14{@ROs4o?kVe`KBSrjow)1<unKrCj>xlAm1saM}%% zCY(`r_D?RAX<f!M7rb=uZH4RowWr?yV9pt*KKbIu#=d#;m~HPaO1(auk@2$^pU+8u z_^azfk1g5Q8aU;e-`~2w_mx-gSku;5*ZKX|3sxq*A71tJ{QIuXxbo^NesTSoOILXg z);BrtuHHZOipt#V)61VY^?>WE&poiyc%^y!zdo4sKuzTJ`xk}ofBM)Xo+r<}<?P44 zeCKQ5oqpjXH*cNQc3Y`q`sd!wed`NvU$x_|a#zc}_pZ7yaKUwNZ28NXyCQDsJ@m!% zX8rZDOWyn2C2K-&Z(e)NdyC!0|9-9d?f<Ok-}Btzzg_>Mq8BcE>84-*_l3{hwEI^j zcW?N`-=3Ot@QUF32i}V0v|j$fi|zhbZu4C9Ty1mlof+4D{+8!Iz5J1zyWb2gTDK%O zrS^}GpDda^>!$f%x^Tg~o3E4Qm#%td*&){ri|el{`{dUzIrH4}&pUWlzuY%v!I@W2 zo>zVPtbe)>6i-=u_s8#EbHyd+{rZ&T+h5q9zVL5f&H8WulDvNh3mnx?g~x5V`;ODk zzNzlayd~5B{)0tt{nOL_$kE^U+K&CwxbQXarEk2x=Zqb1W~a6M-(ycs`puXJUw`?4 z|AF6k-rM}UPrZ2dv#*9<>q~j}{ujUZrsw%j-+I|o&j<ed1IJ@~c75yN>qFmof6k+) zy#D?}`}%f&>$+DreDgWath=wd{=NIQU%BhcADiEM=SNO0-t<WJ+nal)hCcga=QW?d zD{%8w({5dK`Fjs%G`Jpn-d*wfZ8iURzxERszM8Y(p1v2$&bt1F>+bZFeWrH4bRE6& znYABe-_-JnQx~+|;Y?{fXX;P9e_eEU!PQHyIOPkz)5km84@{VO>3vBz7+0rVnRaIO zkuwhFfAYaQE_(gRx)~q8x8Sl({_vbz!(TmT&WlToKfQU%)P{HWpTFU}9Y6W`B`wdK zcIJiqg7U`R2i%YRy0E(KmoKcD{)dfg-+JYl7w-Sl+FyJA^6mb!-x&Y5*WNnwsR#NW z3O2vfebc0WJ$v`-A7p;8`-?w}Y`Asxb94ORSKhzzSGVl>+R8hx|N4`m%kIc|<iB72 zjwAH#wA^bR{=<dE54OyD`y1`6cJ2Ayb-lZjubTD!U9R`OGrF#3;A%Uhs~PQm(kL%v zmL6^Z2gyDD_D}D3;uhCxA6rxu_pdodJDiW}r%Uu>k{3ls-Y3ylC$F{sHHCc*on?JG zGkUoglQ?$p;&eN!b(z5o`&tvdIL%;jel*A$Y?yz2u5php_~W%DZkH8!d6XqlYN)e} zO@}IRKMm8Lv%+3Sz5Najqid<nsOX=VUFaXiVwU}%%>Ar+$y%hBEPJG)`!kSIqMxeA z?St+qOa5PuY2&pFYF_42?IGjlA@`AH-slSocBNqSV5dk;NpH`p*%y1)H}U^s`0}ng zK9enrEr%_a&0y1?m9}Um-^y5FeL#FgS7&EC4c8P>R2+R{YK4l7h0eA^^&>?q%nyo> zwy8%QZm&QeX4Sfm5%t8fjF@4o!-%3;W;+^Vna^MU3TILAjFOqNE}DID<I1LH?<)P6 z#Att)k?`YI<~f(ly)>Fl#v~=Dq^6~3WM*aO<mTl&3JS-LJLS~V#-DB__{bR(&iv@d zjI$=5ea^Y(O`3fE1s6`4I&HezF<QO<zov`%#@Z>JS5{szf5F1aPb{jcuBml@vaY^i z@sg#>F2BO^*XowmPpxTd@96Yh!@pbUUAu1mhHD3Wdg1gFb(-}nW?A2~tZW+Ge4Dfq zYwC+v#9l)fWZCHYe0$=hs3bZAGjfwTk+IR!X5dO<%RjEKJ@I`?(X4@4DyCj|k(nkN zRWO@>S2-kTNOxM~)HB&mq%Aq>9a}`vjB@YFUfxXN-*+*Kfb1bJCCx1Nu4?4X^SBgt z@$@QU>pR(71@jVAG^0BD&vMKU0w3p{5vKa$ZHQgTVvez-4|*%gE^tD{gEJO8qj!3P zt&1hPDEgUV`#R-2&3gaFf9}BhIQo8${jQE)Z|v)jzK3PLkHvdg@>Y^r8@6e-+`(O~ z9jjN&ndbL<ZJ$SdFc6VA<HfO0=nly^5HUF8zzt=IepYcvE-OsG25Og|LVVn|av*lF z%t7%pc#AHPR1F^?TS+CK5Vt$^<6bMWG;5ORRoZqBukW4ob$jS#d*D=_fw+rfpVrdO zXYh5L$p^il4(_DtOQYAClQ>PR(ZXP5gU5;^T+FSreAACz&hx(8d)um)3LgBeJR~cB z-X`}Se0cMM9WNE!c1Zei_!nz(d-}o0AJ>4_qX9F9W^ru`|1$kgzbyD_zXYGZdb?Y` zpZxTSX`1Cv(JZdIU)*$NQMlln+eneT@LhTTdj%8Ee(IM6yB;TC@v#mm_~pwFKM|)T zZJ?2<N6pqyRHU6%wCiQ?%~uw!dC!3!Z<w?*q9^R=k{6qu;=n7Dqs&!ob)zSpuOvDT z6Zb{P(P^AfY=0i&!%8SBvAeL*X)G?X)AOooS7X<P(Ppz=4>Zl~W;8guY(+DNe2gza zJri^i=ZyL6W|%e--=2otbd7Yz#`PjYx~5UtHMqMdnicCgh8bbluTqX$xP9>}Dv93D zoj|Z%9$s>`yWmmjio1Q}9<8KAzxnndF4&s)f9{P<0}|at(fN)rW;ls*nw>AE&Nlyd z8(;i7uBanCkQ<erSQ(0nv?QaiwGY(_<BOuF9sk^jLXE66I#RTd_}fXbA(58GD#%Gb zkUnlYUp+r$;$_f%GF3dh>qpsH#FP$FWY_tiaum(f+KCP}%m-7)U+@3dXHmnOW6vBM zuXA`GoJ@ad7kRdx&E|u)p*`aWdSX3EXY*{maO?Ftt_SCfMs^1imvYG1j6_4)vz?Z& zDGbd{P~ybJl?_AE5;9EEWihcsZglkW&c86KGhcY89D}204HJIx;-cZAii)kzURyaU z=|YAIEh;j<#yUa*bBV$*st4z8Ng!T}#1rpP<+lguu_kw%wHGg*Q9PWe!A0f5Fmh4N z1ksu<UN%gvnp1@O;izcc4)jO9zqo93V~G-1_Y6M8F{Ei|P~yb1tnYOUNgoXzIg5Us zW=PYvzHeaLIh#WsHChv810^|b@8r+kAuEdXlpdIFIPS7FLSGfFkBjtN<^wB5vvfzh zygF}pXB$@xDs^a@+18kNNUBj?0HXs6bB1&TokKgM5ehIWwJ}v@HB-)EE`s*#V6?<V zGtEz(4-Ed9A=LRn{alLP#h=5b$CKGo+4y~uZOqZKQ>Fhr?*IAt$rb{PSJGtRLXm@o zBH`cW$iihJ%gO8xkClZiqT6_p$a{I?G{2e0+&PIqs%zY|apJy!@2x=Jg~*2e&;wmg zkpMJ`M7C=<+zt6mj)Y+d{fD9O#TjEd$Mbkk6$Y3|UkE)cu3HXurrie}lw}Llg^jx) z-^F9PoqQ|;bU;7lGobHEf?;qub0tc?VbTCY?R<9y>f*dU*ayQJ&w{&%hO?-?ABJ>s zeG%M*U!dz&@<ZS4tQXYdFS8a;`Bjk{p=`x27`YcY(0M;{pyM0JDJCCuK;xU(2OZn+ z7mPfJpP)P{vIq8kTV$Vx?;?H%=^w`r(7BtnjY_`FvJv|CpbvVU5!neN&ypVo_mW@v z0(A}@FNz$2?w3T4L1&ox@)G3kr!7H0oB}<+!cS0sLph=2kCYQS53^<(MvgF#1YLip zsCxW1^$9&ksZZ!WhF%y<86#CQslT)_(gyvfj*%N@QT{W>$YCf>TJ3DYXO9sNj8u$~ zjEf1c8Y7couy%~hg+~1taYJVV>7aY*81X^ha^%4<+yWgd#>jRJ_l%L<(BCvh_G-L$ zj2wWj)nnucbhMy%4*J^1$T;ZlKp%8>j*;2W<wG9~^^TEypkw_Q>4SY6#>gS)yAC@q zq5XcEd{91*T`+Rf7}*T{o5n~;<6$3k-aJP3!yr5a9k+~;ccAY!^3NswOOzA31L%d$ z+wqt3%VQ(}`?idcT`=@j<Ur#t^27ch{=F3cK0HP?LV1*OL+4YJ_cH3^#WCV=A@?`f z1w;QBBRTWX`>!#wT={SGK=(27!|;De2c5}Dat}08lVm51z&+5BnI!vQI6FxqFqo4h z{ZI;$#8E~%cn%DVO_JF#I4(&RLg#5ovJ5&tnj~$o?_)`_8Tt+Mz~EWvfyTM$fsx7R zfvyXa<RA=9Ns=Q_rYFfU7=}6J9M4FS2{3R`l1zcV*-7GpjyXxvpe#$0X6UR=l1)l? zl5B^bh9udoT!J3hw=7B4SD^n&(kWLZ$yOL_B|VgO(rb8UlI(>ZUy>Yv{oP4&82WmW z<S3MNNs=+2a$TDw<Du)*NirD*{rCeqZonVVb0hwM&d(=F3zRRSA4cG2=)WaNg3$Ms zBnd(1eM#~x3<Q&8KXiX1Ne=1pgGus^ayxn#Am?H9!U&uK1CQVj7<@EI+%WW=B=Nw$ zr<0@yMt+<mH$vA>l4J`E{4`0n!G5?)!(XDFq5oG&lCqF|uO!Jh7(SRJPUwCW`OyD+ z$^(rE<$!&!B}o9vA>?WJ>(na@_LHxYa=k;jq5nPntH=MsuTcI&IX=NL91lg3WioW6 zCd+IMPfwN>J<d*+jnI>qECCokEm?v}BUzq>&WXvgAG*#-mUm#_++;~v#POtL83)~y zljR&3IzL%TG<-&~ltceT$<m<lv(cmRmn6%27@V6dn_%R!WZ4S+A5WH@&~PQo9*r+e zmN4{`B}+e)g~^gpg&#hVEDNElntae*lPtSnxGq`7SCf7*@lci|%W@c8mMm==etELo z2%T3X%NE$bJXy9w_tnX=TjLv(nZd*#P03<FX-yVCbhlA%7;483=<1-{wdC)joG`E! zeR{kBeNe7LA9Q^Ne`@@V_!AnR$Dexq1?+|WoA4{_y9N2svpHD~L%B6sjzS}lEIDrY zW$b}{Tav{E`|m^#^nDFIFnlk1H2l6~*$kccC(AuBv<-hk*8}(yI=+=G`(SuyvK-O) zM=0+n(fe)c5BfsXAC&J=E*SU$<$}&9&<De?4Z8Q>7ufeh%Aw&uMlSR{hrM;w=kv+p zgRU2_2g*MD3`0N1&(QZ0^{VmVWQoAOU(lYQ^JVI<p8EPtvN&P??`S8`^D6ekzTYRy z0qFh%_G|nfljRr;yp}AE2J-(2Kf%x;?1!G$lj)Pt{|0iP>rL!|;Uma{zPFGE`}^@b z4E!B=(D@I_u^9dndCK>aWf}AxrQ9(5FZ>IQf8$>mI)*&x{(y49ei(t_|57gKNl%fC zCD@UfB9mbtJB2<H=BCI-=*dfw%`j4sBKN@HDJilO%J>x71AV8b$Uf+tkRk^){LB<N z0wW(ykz>#?F-3BgBJbQ3nE?AIr^poOxG+WLLidyuse<9@DY6`ToGH=<0~etW`evsv zwxc|AQsi0ayd*{T!~V-s<PZ!lOp&9|Ux}V&q+66C2JEj-5hrwBnIh#dcy)?2!_dkU z>4E-LDLfa$@2gWd2eGFGJ+N;LdZ4=<J<#8kB96<kYXj+_<GK{t2AvyIWH$_bCPnsY z_~%mOfQElQMGiyXP1ptHX8d~v<$>d&XET0=t}my^LTKDUxnX!qiuhpUD=FfKzO5+| zfd2c?2N_t&E*OT-!oK^_2aN|(WZad=`&NpSKzW$*K|j0^8jq&P7U=kX3Il26|A6|1 zo~Kh7Lt+0<@zYiK=V#af!~0TXJ@ow?e?Ui=dW8Xa1V(;=KdwgqFDVC%yi7ep-><PB z27iN}pyRjL3q7w;PcVFt_5huKpdG9reFS@<^N-XIbpI(u8ldB^*biNAAqPhOFGaS( zzQ5ydjei?|Yy3NuU&G(S-_ZX){#Jf~zdh9dfABYq{1-c6AURbQLSIU%EQgM?RK|?h zm7gkp=oy<TTVUk$RGF|6IUh+CCv=~YDlQoKXsUQ%@T^qX2}5V6%04LPrpi0Y^HRmp zgq%sKG6ja<T<E$0eJ}!j&^;A>Fgz_)?$P5S<UvPqsyquLa6b&rOqIh>E=rZ78b1d+ znyJsZ*a4+9Rr+A0ELBpx=&48*1BPJ<^erTO75OStWjypON|nhlSe?qpO*yVf<sZC| zt~ONy(CJQ<?NC0MD!ZY-j`G1^L#p({(9%?yy&8XCo+`_r^XgRD13ez@K3lM(5x*&$ zDL?eAPL(QXw4e`4EBc^w4St6Hwp0nhJ|E?V!LC#}1jF5w7ly7)l})Y0Z$u9ae>znT zLjMh^lJhC*_w)D_`oEAW8=+?t`PQK4mQ>l>Mm`vU!OhqY1GiB>?Sy|hRnCE)JMpJ- zE9HTKyHceM`h%%*M329LKRd|3jdV~ROqB-cdkFhs<dIa_rN`f<zLX*4_(=af{C*Af z@fhLI^Eh@v`9Z2=bdl}}^uzuqk*oY+Dqpmxd_SUHX#8`jvJE<aihPaVOFcm2XOtg? zUZA}}$Ip@1P55uH8wTJ;C<jtyGmQM6b_M;f(N6UE&)5U|U&qgS{04HM(T|)S^271a z^ET}S8t+iwF#Im(4Rj=@$uby9OOrMzS!v>j{;_EifX)eNvP+LYmL~gQpOGeqpl@QD zyrbb~r%6gLde2FdaWFJFP0oS-sicQNC+VS4oF>O$1m>*8u97sF0E08rWC{$;N|U+J zcTt*DLI1^RvRvcmU>9`GO_PnvkEd}DkKJWy(g(vZ3|$McV;%CV(xe=^8q#Dl3@s%+ z3|~%q=)QvV8owe<B6{4ICiiS0zBx^HLT5{w?17F?rO7_%UXvyV^|&LAu@?3~xfVZM zlO_%r?4rET-IFG>p{JL58R%P&Utwe;_G|d{*ssTMGYozKd-V7g{B|Ak0%@`py0)ar zb{M!5xf`ihSOWcDrCiXl6}d2UKl-nS-^70~vJJh^@nD)XL)k&Op!1<L*$w-5Vn1YM zt4#hh;UVmWf$yYA19W_se0mIfG=5i_Y=I%TP2(TKZyFCH$|tDD&rt3kArJb0oW|G_ zy)R;yAO4Q`&l1l(l>uFUpnjqMb^Hqhhw-b%|20jHK+l`B4;VQ@{olZGKlKm$-o}40 z@=yE+gYV)$82T6GQy!y!q5lK?smGEo5f~VgF7H5Ba=K)E4m~O9G9E_K(q%IA=cLPA zXpBpj8*hZCrps37p1|=<*ndvCY*9{1mu=89IbEKGf%DVlAnd;|T^wJ)FVm3+{myhL zhn}KzX@C*f3<ERLr3bo8kP96%kqe!(kqi6gq{}X7T#9_<W$AJNIu@pja})VKkuEM6 zT9i&-h@Pr+Sr4T;T{b~SZMtlS{hv&iKIp5*KIptEU3PzwbSu(jFYJd$V91j$$6#Mm zx=gqkeXG)C3UsZ;e&}dPm*p@3+n{u$%RMl14R%7;2K;#oc3q1<VemT25B(d{r3AXJ zM-G%v;|D#y0YAXL&*2AX+=L&Lo6;o&gMoAzw;8>6BL{}=rCwnFed$sK-9hZpW7q~G z_mdy`9>9OF?^~1)dUjAgC=XLFw<32Z_CVL8>9P!lznv}{q31j45`+;Lg8kpa-_W-! zT@LFpJgUdvr<}KO497!x9J`<&R>8pTbmn~U^ABk^(7iWZ<V%D<kA4{b8Rdblm$47} z50Wo{yjRnu1x6y213F(LKMcK2dxd>R$ag!(e@mCy(E0atSqS^zp&Zct9{FM4QQ84? zyiYrT5x7;uKcGE8e^!PZfUf)uIim573^@ivg&8v8%amtahK%1ry3;abGK_pALuNxc zGeZ_a*GDsC84RD5AuZ4|F+<iv<Gc*n1Z7f&+yg_CGb9B2&d=ap5qVQH81v$Xk_<Tn zeKRxUD0EzuAvs?`&&SaZgYz=P31xnUxM1JH3~|Fib%uB}ydgt&L1Sr#Jgf0=KMXHJ zF7#hPc{KiN<lc#YRw5Thycx1w`6=vy{x#%-?hf+7{>}{9`Bm)lWyl`rx`ue@=)zAh z0FOagpCMDWBImjcDTn^gX2^CJz9B<)!@%dr2i-R!SNVkuNx2Jud@)1DDR0KFFc8R) zX65bp4@R~i2Zrw=A2jaGkav{#QI4-s&inBLbbb@R!@vXh8_KsbB&gxr(GOia@H6y1 zlp%-pcqewl;G_8AZtVFs{)L_&P)_K0Dns_c;18(}7<w9g_u!9bGQ@y^ACVpgpQXGo z@?3`ap#Oyo@xy)?fR2~2L&JYXz3cI>kq^UgAN2e-Lk?>E8`uNoE%e+=_}{S$2LFLy zVgK71G8Y>E%#bP=_<(wY?*C*+8}yCIl#MU~H^Wd;rrZOAnVGT^I`T4Q4|F*)Wgj#O zGvx?$j>{C|>*O1sDYIel^h{X@Lm$bMWib3P<m$13T<DpIJZPMoDSa>k4=B&el*2GM zDN~L@_xYKUaUYz59O#^yDQ!@uXL2t`d5ee-ay%zf=E5+nf{{xyWjS<SN_uEqhJGj? zM?dU?_rTC6u>-o7XUZXszbaGS(fAdal5#)C-b@(}9jh{B3N%({iVHehGNl2!S~H~u z2HTLU;a!=G5zyaFxuDUTDf?kyJ>`Po&t%Fm==)qI&oT(VDO1jYp-uP=`ftX5=-Q0^ zu<thPhmkK~KXl)Y-O%x6?1llj2l}>9AFyw0rW}O9yE3I8hVG^u-$d>`nKBMKzm7f_ z31&(O3_Xx3<*@%j{0sft(FX&&GG)ESKb9$*VDRxw*$RETGiAH-2k6!KCo^R)G@e2) z?0cI0+lYTIld(Sb?#+~4%I8T3<%LYS@d47oEztL3rfgG&NeA7(ARRPbMjrJ47QaE~ z-)IjoG(Jn_K8PRB%97<UaBh}tgAsTH_MMj{$6#<$mgIbk{FAd}0`#1pB~zg50`f!S z!YrwRG6gv>4BKF6YL;wN7G=q17%0w?do+GVmh6Q6C0Viu`etXzJ{Y_tOAc!IrRaw) z7y6-lDf+h~|8n%h2z0`}E3%{<`mf9qHw<~Q#G~<_LBGcPv#0~)el|<CK-Udf5`@m1 zvLpl@U&xYYVLv<o1Dmqs5R7cjl6PR=tyz+>gZ#Il7rMTbC6i(Q9a%CPhPO~|82So& zq5DqsLjPTq8+yK$B?0KV8^6K`48i_jmh{2!{aLafhQ5&{hoNtKmK=rd9hCPW?0hIo z4CoF~UOoN}<%N##X2~)b*qtRU(DwuMLH85rgU)9tCv^NMOLoD2xL3n}MmaV71^lbw zP##9kKJ+PHrkv2XAAQjMEA+vB=!TJ3DJKm7K1+PC?+^GFh9c;N!9SuG2416_(ElgO z34MpMBn&-&&f-}Ba$nDqem(vR`gan4I7=L`|4qsZ-T#Mv==^&Y*97AKfqo7DC;DL+ z`k?<k^y~3a<UE3(|Aidb_iyCDz?f_)fsvGKDTm>-Y-xa=^lWK{&Wvp7fr0F7xe+=F zvLy&Zr)EnZ^qih8Vdy#|Ti$`e3E7hJDDC~D*>Vnad<^-}Wgs6$&dL@Kl(Ufw-RERW z06Hck4|*=hmV<gcC0mX{V_LRM_%`{R*)jzNi;x3DCCGuUi;x2Y@J8sIoh@5n-^JOo z9Y!w6mIE+!S+*R3u8(KSF^z{gA^hV)K8%ziANG}H%UtL#&z36K50^vF!fa`S!7A*8 zzS?Zr4_%9~=ex*Rir=8?O6-8at4RlaE6@)Eo^0udj>c@}!11$}d@!^M`Ov=_`7qK# ze&}e+mV2P9Gh3d8o(+_17wK-oU*9L)R_uL@{C8zDSApI4q92C8l`Z2Q$L{U;U-=N> z(Dx|y3B%vPUmE^B^uW+A<U;4;*|H7#pU9S7(ETKO_4tR`atL~!raqwK8T_`JdifE4 zgP~`!13G_(9nclVZ%=akOUeTSaHAf-oGqJS9}GhG?`S7`$p0F4K+m5jFO=7_WhV^6 zK4|=f_NDQEqy99!pZbG=e_+Q`$a$M`LjSw8GbsPUuX+p{H2&Y%0mE=3^!*3@8lIFR zyJ3HNj^z9hyE1cR0`zC)$Q0<y&5^k<oS!3AN=J@(VDO9_*`x7i<wyjE&dy;D2)~@0 zBaWvj|9Lqw83rcj$TH}=Fh_jQJtarBz%bkfJ=1dJS!hhpk^Rt7oFnf*UrCOn^ud`q zG9DV2AqRR~Inn|na6OcHITC<=7=*t0IkFGB7v#txXe>mY##d6lXRy0EN6vwfI`YH* z#W}JGhL+^WR*k<rN4CT875GJYCGwOjc{}e%l*dc?pnDbNgJC!uy4rIj1VbG;vKIzB zbL0T@`Eum2#$S^oN1?L|JAO?5?i?|oXKjv@K;QZtX@JgabEF44K9eImp?o1n`e1ld z4$pv)`$hZ>owwj`=-G^2&yxN&?1DjPK-V3}h2cAq3j=rKH`ou?L;u$)Hw@iJxs^f6 z4Z{ymZs_?I<xuX(kt5Lc5cTmB+6Np59gpUSQ;)yHS{xYOl_Q&#-_MbIpyx5{*Z3!B zC(!>SeuS<)IdV|rpGL06_vOej*#8WEc@8^&g#FO*W8}loi_|N0{T%<oa2S6;=P&UC zbi9mTVE|_Qlz7$#^*}j@J<#zg`C$a^(&IniN9g|(>GyK{7wm_DztX;-`wjf0;cwz6 zC~x5>==?wYr0l0$$`7db=ZPPaD+^%&F4yCvTxo+wN-p=tq)W}^O%Ci&%asu9gME6O zo-1KJh7mo^$d!KR%*>UXpJ6XFlv%m-DcF^rD=ydv-O!nnD;^kxK4|2jPg$5Nd!g@C z<U#joxsvh%@+V>+^q-q6oAvm-T)78^;7({v%9TAZ0QW(eoGS;R4<3OLcnrGF$G&~o z0VhD`1-UW>2H{-jo|Y?BFkFN_7?_DaVE;wAvJrYNM!)hB^h4)d^h3vG=!eEU^g=1a zei$sr{ug0&u8f0$rMWU2_AkTlFmy$(w7@=3uB?Z?mASGBx|@&>4KIF&j#kPA18vCH zcpv40p)Se=jULMNbMmjHT+p?SazX!flnZ(`;&&*Y&Xs1^|Ak!XfuY;c2OW3h%2pWO zk}KQw_^w>pt-Kq(u>U^vD(|OU(DhC1qJF|Vaz$Rk4-e&XuSxh$>K*zYMIQ`(hx&!# z@8!xC=zcs`_Cwzj_$7?pPv**a7=n|bXAky5*HgK&O!*9ULisW613JRAr(eKVX@}7L z`&>B$U4PD%8-Ix(-^!Jemx=Gsm2w#RJM{;h|D^t4|554>y5GmYu<sc42Oa;V{$K>| z)9^8QauE8m^5h8Y&&`u#&|Q!xIs1_}Hcuu%-?%)P0{y4ui3`g3JaNO|8F`E?37?QB zH$vm1d9oGupO+`wp>ukk>{AvaA4X;(UwKiUIDUn{=H!V1<+40+!U!yf0au<ZgTc}~ zX@Q~gJXsHoMR~I60P?ExWE*r<=gG4$Sd%CFHQb#ihoPqqJ<7${`&+mqPa0rwDe|CP zohSXUZw2N19r8VSQUaYT(F=_x$_0bXd9notym_({MporX7`j^W<PZ$4A^$7dUa=qc zw_`u_T!X#P-J2(SU>NR$!L{Urj&*tRj>h}*n1jQApTlo37{Ja~IletlnqlZGdC~(N zcj8|?hFf6&U6ddC?#+{3FdW1W8vYIZ07KtI4>Z1o9_2%MlJR@u;dmGf<;iU5|4yD% zLFf1K!~<QsC^rm0hFvi56#8K3htwzZJ)I}Jp|dYf_9}mj-G3n6v&2Kk^Tb0R+zW#* z<;el)3{x*q_UFk_7={@U^#2Nbp!1bHnXG(`aze+SkPF?1@VkcpIZyha>o1fKM*8z4 z^heUYP5Xs`cWGbH^DpWh`u?3K<6gt=_w(c&Xe8%L3G}4qOB?J@%a^S%kd-e7pd&9| z4nrx(m!ldFbN+<hvH3Cq_MMV1Q=tFUd?|;X)AD6Gl#d`!!_Ul@8)4w1`LYFuK9(=r zlt#Yng5k6BB@B(p`EmqC;4v6HA3cYVcL91}U@Cf`F+E@ALccR#s$i%Heb6;0U-m=K z$MfZo#xKa1ls_YHVZNLLJ&PzO^ws6dLfF4JUzS1l<@wU0;aBF%dgxr9FPmWKYWx6Y zWxi~OVYnL_-h9~$1MmR!x8fJ*`4slPj=$RSS#w3Y_Iz=|P-nilV0dl5G(foy`LOSL z<SYHihpx{eA4cF_==*%WyaU}gQI5YLe-nOCevxuO=gpKK%9oG>jV<}I2RiOX&tcNt zga4r;h`(X~&V0%EE8*WJKXiU4Up!F0moJ-Pco+I%@G<<S+?_Au-oTz8P!8yMf^sOI z#BUl7Tl9Dje$!*P2?n3S9_W9Xa=^fks8{HI4tZ~)Zy))g>&1N82%W#CTt`S3$rnF# z9Lkpf4F4rxg3$R!zJy@#&3xwCDaYSvFR<^ee4afK-k&f1(0vp;|3><M(GFqw-{^tC zWQVlCzHEnVghsAIHp57sLv}*{SckN|g*~SeuROyc0cf1*kRS{i4#rN{J(2YNq(9do zdthX;L-xVG3mkF~$`pqjfsW}8k-t+O=zyVOhZuT1!yzTmHPayrp?j7?mO;<O*a!V( z=!ed7?1K?_j~*{XFLYER9|qhGIR^dp4$1ikY`|XFw-|e2<VuHxmCGG+2s(QltP!R? zt#vSmi#;2#?;Ye_=aBI*@M(uk*5ex-G8;NShkbf{6ZS#ZCj0|EUqT)X+>YLV;@>+c z4|IIRAyv?|)gd=R-(A=ZgI{yVE*QQWKSAT`*sc7gLz>^E{11{2Iv>V9=y)8yM|pnW zkaLbA=ShbwhweQNSr460Ib;j$hudM_4;}I>3_eXh=<h?mhW{A*|Hbi7up2sGqMZN6 z{sYt#47}oyaqkoV2hu@zgmOapt3!OsHz|k4{|Eb^E3H5#A45-8fw-V2yFivfM_z$! zg?_jlM&NGf$}f<;FbEGoCR*e$^uVLgC@7GY53mDng;Gd9=!1u01RjO%u?3RxAIbyA zL+3c`fI&DLI!-B&h0qU|!G72RJ*O7PdKiYApzAdBz!2OHjq&J%0k{{+>DUQ<@G$g$ z1pTldX8f1*6VNNCi1W+>nF~WkfmA`?IR&yDhR-YDTfe7>YjS~XR9;XZo1t-Gf!qUS zD(T0ZB9ZB&hkecho)w(J{AhvP2#q-f+<TlNj`9N8rd&`UyI@~6`jU|MN%F&B1NmX! z67)e?hCUd$5`ECI9DOjnqCj@Skf%WUpl4-)?1#Rl0+z&{!g{j;c?SkN3-~{&l*@;H z=(+~|Fa&o&qpLukg#ox9N;mnT555DPJq41IdW!VJaWK?dAm>2e+5#zo&UFP+4vh^3 z(g6Emo5o*@-O5drFAckIAs#xvR3KYm0B(cEm$3u-;j<ckCw3_BqCKP&e?R4gAsB-0 zZOG4{{NF-8bUcJ#U<7W1o`;bKeNPmymYn#fs8?wGh;{@0aJ`2Agmwdi`)D^X@^jh^ z484Rup)*_{VQBmreOVm;g?fa6e-y|O*bk3E|33>PC!2i#DUb=UUkYUk>>E=k<<ON> zC=Jj!tx%3=`00g`l7rrJ3dI9G=N5_&8j}in_KzKt3nc*Mf<o>Ykq1K>KD|($h0fwa z*{>`qltUUnvrvx0@T@|~$VKj@g)(0G@j`A5iFXysTo^7blq%?~D3s;UzW}{3P>Eh> zEGm>OP^t=L8|<qolwHtQi(VM~BzmE{zEBQBX9Ifmcqw}GC_fwzU00wNMm&Ww8yZc8 zvJm>43#A2yyy%0jR^(}X8-9Vl_Cj&yqrbCI+^`RNV5p1q(9w%ulxwk1!#5Vn0oea( z?19106v{E^^B2lE2jTD>Xne6y_CnX@LY_5a_wCeA0pVZ9A27THf55<33S}eoZ!MI~ zFmzX;?9}jJq4dG<Hwq;To!bf-8)C-;l)I34I37k`DwL9Or28dyL+7swr3d;W@D$`7 zLO<*~g8oy<|Mx;^hR*j2WfK$`D?u1a8Y{b@D|M_ypf78zq?|^4-dGtAosO|G8-@ya zp9=OBj+JH5KW?nFK+h>-Wj!=b9V?rl<D+9`EA0E&SlJHU2J)etJ686=|Bt;l0hgk< z{=d8LCMw2J+}Cl(y-`5i2N6Y490e8E+bmZ=5n4b6*Kx<a-FMR(7mP;79h8`Mjd4jP z(HKo!#@$2{CyDzK-%ri?7LohoCcotWKL6)=pXV)YKKE3eI_Fe%Pxn+!cXigcPw<hG zH|@iij{2|w8=Lpx9EzQOeS!!Uw&)X-V6bJMpbVq_eS+9=>psB@m~7i8I33pDr7+mB zPjHjVhxfrcd;*qBeS#NZ6}|%tgZl)Zz+gz9VBMARI}AIpv>SF{x(EJNL9g5=I05FP z`vg0$N}LlZUk!OG^6Ka(eS%Rin${<%tU<kFDTlS0eS$k+a6JBD@uWUM1C~zd6Rfr- zc21`sVdX5^0UMXFA7FGP?Jv?lFoNmT_<{L#_<@z{`vl`*`G>>>i&>xGJXnL*!t91V zTtjI8jeWQ`4SzqP-LP;I?S>8b39Q`0{#^?`fZp2hY2<bB_uD?fe8-pAPq6&EKEbOn zd71qM8-M5%eB<)p=o9o_k9gmtJ+J{cf%Uih1lu{jNB_a<`|K~6{jpDwz~Z0jCzv++ z@EalZ{z|)H^;6orKKY-~URe5q;|rF*<oJU1uQ|S8(6L-_9&9YOTyQPSmf%_p(<PS+ zK7e`e<$|^imgngTw_X}If%A3DB_2}=V=^n;9_$_@Z1f7kG7GCk{M^G&Vqw6~4aMH* zFkM<&DhT<y!|{mzs{Fkww<YsHVzN4AYoNCl_0|o-0?!1-n*>396Lcc?JY5i`Joi`Y z7lf7mJa^YW2&)5lPH-R`h~7@<?ShS6sk<B8EeLC{ush{@P=62dSs=Kw7kX}?;Dg~9 ze2gX5!;mLn_i*eVj(h|$9RU;KPpEek^=AZOgXj68V}r27ix~3bg0Ofz_Sgz11YvXn zHcljub(0DwqkA$sr&0GTY@J0cJOkL^`M=@?=%&QSGk}$guyrYaUq;(5L+|n+Os=N> zHPq)B!0dWrzX6{&LZ0;tZpQvC#CS^(#&am2L;c$Ve!IlxPw2y+U<a1²_7VpA; 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 aEQTR~hRU>T|!W`hRI-&bn+arJt)GSl6j3?`@1( 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�Mf1<MwS)XINjRV__RcxTRzT)IuF`t#@uyS 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.w6D zmqmga=!<4V>SsHK7+bi4gh-*<%9$8RS&2dWWX&F_tfFE<bzMUwf(Masg*7enA3hSJ z=9<c2=kaX&iDC0lHFak0n9yBq<C14!=Wt*PG$UL)MYB;~Pqy1sG?VP^S@D)^A2$*c ziOpqg8SjFF=<u0?dQ2Rutk#u~1IO5vm<P{+(GkEty4j2xoqCc1uYt>vhJOZJ!%t#N z*R3zn=s5r-2Ef$IRxh?@kTWDasR57Yb@k!ua4qJ-_AJ`Xu3NXm?3{Hv%r55@iD}!L zm*X~*c!Rf1`*4@n!cO!)?}+KyF5F@K#%Nn&NwbKA>}BUn#H)R{!>ojiILq0Qh^whN z?J44WHaLfmBzL`JC5nk{edP=+64ln3X}7&R^9D9lRMu$lt_;_qv07`m<1p7PuAg1y zm|Qu7yBe=6fU^Q!0h|SsAD`@Dkg}d+(tk#AM^5&n;tK7xWaAE$_Ct*;s^_DPE0pcd zVXIlk1CBeU=VOj5nBT*WE1>Tqk1J&KW@F2)ZBTSa(e0rNQC!W<<<!*=-632J&aC#> z2F;MUMcT(%+bESiVtg<w-e-bY@K78Hm*e4}s6O$cy#hx2VbXv>cpMa&0jJ@LqN&MT znvjF1mQ`1WtLp5l0nWs;5pr~8;~_Ow4Ku>Yo#MH@zPM~gq$)hP2BSyvi^48O{jjQ< zNo7^(xHh3fW%XvGDh=NS2tA^@4iD!u!qxR@MhI2bmrp%(YB*dqBpj)qn*37xBZX1i zeW_Ny>XKe>wyEvGH8Ub*^_7#VV#8{(>a?PSP)ArtFAhh_@Tg!$;$-z|E_`TJ*_7mY zF`>qXXGCg}`a<6{4ca;K_V*s+9nHqNA#^vgv%flgJ3Fh>?C7a5=bEL9T(b~UWP2ov znd-`BI+nYlCX|9%n(10eSm~LVh!$JID(aRKuI_XvdBp5-@*Xu|U7JT0@ZX(fKXJ5c z$nze_906@3nZ1*Eg!CE793h><lWiqA+Yva$fa3_Adcg6BFfLqIUshWmTiHx{nQ06- z_9Xm<0(U451<6wH;!t2uqKiX;J+i9-I?RrFqN5g_4{I=6%`}*U5iouy)^b|ngPQ%u zt!Q2&NYvypg2>d35hNjI_q%Y^N!Le^gqS@}-lGD&M-V0Itg@Vep(6VbQifMmX3q(a zt*S5sTvmzY&Q@QpIJt^57%#VALXd7e)^|c8wncttDje^l`7yf}>E1hCo~)sJWq5Ly zzB47~IPS7L#&cuO!8-)OEbiots1MKZU(tw%=G@0j#?lDgwayt!1dDrB;Sm)`qjGX( zxYqu}8VwbjhE;_dodbYvwJq1I!<h9iYZ(fg$N0~Fhm_S;mf;%AU*haK<{hhVW`iqX zb<&wg&~Ftl>Vu8W_P8B2<zWsOU6S;D{D}tchcb6BjcOq<{;=$M9VV{3YE4`;O3UDN z^(NL~=G_6?jWwE|0<78|QdZUASW+#{wXaggf|pMXmroxVo}IeEm^<CTs!0uLv_unh zSh%{@kqNJ>F+s;y)?+Edcf~H2R}-|h411xTS8i_I18eKe7F0@Cnly4ua}779>mh_^ z<G^j!%=ePT^y$oAgM>-RYjCjs-NTQSY%o|^R~%iIcg#MWMa&3Y@9I{(>>l<r%ZbO` z+*BxS?%R3HmWSuc%831;IcCg<2Na$CF(YOz7%?PgX3*c>^{GP4wHi+Mo;KoMx;$C1 zMMeATVFtX~qE#bajgbbg)@a74V304vdJH<Q#>nvKr{>{yY<1Oaj|#NHWGDEnV|PwE zqFbY-HQgLkSzT5;J3b;O9l)(<xq6q&z87W{xXDY}cLU2=J}xfhXljKt!??9SZZ;+R zo0N>IbKNMcz-E+8w}8z!XoXF?;LxaTBc>&61!sGlj}?tiyoB8=&lX@s!$tcUUE{7* z1Q>X`mr3t<DKly9UHE0vuQPadA5*tp^KI+0y!K&D0p|~`slhUwwR(w>%z9DCb=!*u zGK+^M6)wT~21_}0lfPW+jXzg4$eMPCP<Z<c$=0l#EkH4%?JCW%ei@Cnn6%t@)Tnaf zRi{ytD^~GP`%@GuW>6*G_r|MBwigz120B9euN1q2n%W+W7sJcPlwqmZ)+y`->PW)G zE5a-Bvm@BfcaFS{ux7@<HRf@t^KJ$`TxDGdFSJ?f(kZUhj8N7E3<=kj<0fydx2Am^ z*(Pt%Md8tvRe0GaTwYUM;aFgI7MmGDtwfV&4sFlTp6n%qMwQg=zO&lnyIYgP?%}^H zkAlTR8QQwq8L1ux6*?Oa4Fl^j-<s5bhH9$`Bk<Wt-0Ey%R&u6k#e=MT2PM(xL|ayz zPlwT~v93KbyS8%5)TGY>3g6Y)v7+T;pM)i5o?-DChr3~zviYwbg_(<<P0{JY?}3t5 z({EBf_QivyeC&${P5IcD5Y+3jkLL6q`{H3So|z9OY;Dx5O?wRlrarv}0Q2u&9pCzQ zj{(K{caM&4&9s9-vyGzHv~ce#s|$~vGz}k-=*Anu)XDM4T0As)OuPwKU4gY46V-XG z9x-z!R8Oz2nN`hX)3_UZrtk2QYCqYG*B*Jv9gQy-D)31_x5~f~yNl(JXWcJM@9s|G z*;%Yd>vcW6ywNQm!QpsPLd`YeWhL{1$Vzn5wZh2u&WTqqao3_><g~g#b}-rm@JUrI z9`3qV2A)p3SO(d6YQQ@$@x{h&WhHlT4L${}#%m3++0V-L)3vM0$+lWoMYv++<SVtm zH1e133RiT@==wd}YNb8BeOgXDmy(sST(1=_+0b{oxaS=kBTdvEtO7+d(2ZrNgs45w zfY&|KDpIdmG7TO>M!!&Hd3{4|*m_phfAjvH<jJpiXe^rbA?1kbndXaY_Z%)B3=^Tz zcva6@v`IRBh(*b+$CA$Y8m=|qHIHD4`;!P$r?CiT?>u2xNIpx6$1=$bH6OF_W6-oR z=eO(?&rO;S`tb;{B`uSIRM%=vD?H{S(W~;hv&3wki!<?zc+JtGalM*W%$B5ec`wuy z4~;(>1<f=3sIuxQ4P|)$-1WF059nX?@i5WCk8iyuacJhiyfr0D)+%x1FM7F-wZ_D2 zQCRzz4$i4#Jh#!{(Y?JCAw8<y=F73%=*XC3eam6By<lNFm(8>5+1+NHoh09!zou7s z>CAN#5?1gu3eTtA+k7P}JbYc5^b(U5o=4xXrJJPiy!u=`u6u1XvC=&I-4Oet3Gcwx zu;)MIJK{u}tStg=X=%Sr;PmHJ={@l0x;Hw~bCs#n?yN7^ty^f?+lR3TU7TD+<FQt{ zSOlC=S+gd@%riTA+5MvLvf0{hEE$g}R@8<{PGgE?rcz8Pm_4)>i>gD*%#jT^smUA% zqpvJ-5`7{<`a5u4bf4Cwtm{7i!z_C>RqttBv<zKcesm}|ap9az2NxNAJ11l<L*@;v zubJW4B6GwvHSQA)C6IRKc6vpntbDJoa&x5W>f%njvx^&h&};;$0SB|JS6R$%sA*N! z6__IQm>t`{Ue0lQ;u4ZiY`k7#>nncI2i4S6c_eN|ZqHX<eEr~Dm6hRVaLvrxmEp%{ zzqyjPB*&LR_F={E6365GsT5hW&j|e-S*KvQ?~Un~dA8MvaF#}>tg<#mGfLhHax70n zYs2B8HMKKVf~(juFv%Ntid?a2M=!7^MU`t^psBjCwdU}Vo@5JSpjotym6nyS=o~Tq z+LN1DN%iFN@|dOg_4UA6c8;ys$JF4}uF9&|(!6b2miE>5o9uPxcJ>S$vxZl~aWI<W zY2Ott+VFc)kNqtt*1*?;)*vrt*z2(uYtZYl7i-8%?j^-Nh1WF9ye633Ptxv7FV<+8 z+)MJ&l5VWAGP#@NnTfUO6hn7XFPOvFpHrO;)3v_g4B$C)NSqmXO~A~qRGM!bBRz)3 z!UMjxO0mrx4Q<v(OhuU)3d<)toO#S2EdSZo+`bVzFlJyd6S#yU)#!pd!<?O2vlGXz za5V8QKE%YLHAJxc6dpTyGBRIR)M(#%bA$?&q5cud8Wue=*63=3<|_ZA9b)CJM@!uD z;kAk_lU~zwwO4at{qS0WyRMTB=2k3I=VQXNT-ELDGYs6NSE!X~pB-;m)7kM(2%2ig zJ0WPQ9q+`T9y{JLr?um)uzVcS>&jLq(K8eWIos2MYhG#!*lR4Z{@r>a>WO2IhZp16 z>!HZ{caK5Q`gadMxn>~1i>VbA<7?P+?FUDh#~X#=mjr{SR+{fzoa>UYVA&BIa);?y zif}ym1S<|Wqk;c(wplAx%o6e8>o^Q&8Y7Udb+jZ7l#HG!8C`XVX2DjGo?dZNKm~h! zrxW$zbyu)5<aIab+FFrG!fbbU@slsBB22uVj#6AUa({XnOTcFcv*LNaY975JQ}C(3 zOtrdJ^4?@6rE2Wb;!zgPEJ}E&cXd-bHV^nIKcG!Jn`}!fKbu~?+seOZ+cYi1vu&E< z2%2w4O-DB~QEOAqEFuK6ZU5xzDJG`R{)?$`V@4h6xrX~`<^>RUq1!^HdcwE)jlauQ zfT?)679XuRKXkHX#cNbj>h`t%gjlw(*R4*V7_J#eG;8)VWfG&<w+s>zaozNzzFd<e z8e%KtDa$n)GQDzD=&qEjiQ-$X*^ZZEW0#z5|B^pmNZF2kw}cpe<?7suNr>W8u6R$w zvpIWq9aG)DUB`1z1sUMnAlTpfC~O>FKp%w@)T&H}s&hY)FmTfQl7b|=F)@hOCCK7& zdyjP+|Bf6Bg8Z4iXuPmpJEP2NLCsmDi7`FfNIZZ!ji-CAeVSj)wO4t>jme6{r)mc$ zuCC*=E}S29NWbVXm++aQvxRxZD@a@mPa1)ZBf5s)rEhgdhipl6a<ei#dE9|)DR~sV z-R>^^!PXrt?R_;|8Y6W1k(BXzI9H+*EDJi1>A-L%o5zk?)aEl+VnpxH@}g1wKFf>R zO>0R#g>m#(Cah5?{rQTwm$c?kzELsx?qLSJ+NR&^h!^f2;&GfHc2i<UpW;7b-)j{W zxz9wmzPt91prafer+TM|6g|_iYq31fDo>G8>@Y4Qg~8gn3zf7i%prkZIYf!sR+&r* z;@)VRg9r1>{dIU*bwyRU)|z`3ap2W2e#D;Mc(|j}Uu<be+s=8`uCw{v-M<h#vgPl_ zIsnl%zwypYbPcX3T5ax$QHqFN%5*F_7MOlkB}IY7A|<;pZQ<kOq$<4QKQqh&udJdC z26c9gRaY@(tzjq4eK&nFo8H$Jy%uMMCa-(nSjkGn7AaxU?Kch}OTJMw68JR^-*{f9 z>RG)ySz@W0qHk(RE7Lz#?9g)b8H^+L-!Mp-+hi@-H_bHbE%uC2RFq~(CdP;!uIn=t zBxEijR=Q=F7{yV5DO-L*+%yX!`gDieS>o$qX3*?HYf0iI-OEnq!ch#~cY}mdPvR@h zVu>G?l5YMJVmPv!yxF4-r8h)b0TW$&-Io)3zX_kt)mEmLJc1=AK5nFA$pbgDX|A!? zw{N+F`j@jitaVwA^^=;4#Ah+<rD5-b)pABVf|`wq5svc~lRGzC1<_AsW9KJ2)`skf zSkKE{cu&d^+dL9?JGOiJYxnMcG;`Qpk7hL$W{bf3Fd&U>N`>y~W0|6vclWL1X~MNB zKFmhFnr!*)LeZMmE>t{d%3Y{<(3HDS2|>Mfp=eHT7m8ugs2por`gflS^J)m*dqDK# zehR9o=-wl?;(0zDM{QnD$Fg<j5jG(z`c8MBAfsNo@d%p`wdWb|syd%XSf%S#c?D+W z-+cLM-bXNJU0XkLW_HY?H&5G-yqJ+P9wlg<NF9xn_-s4F_G3M^SOq2>vk+D^&NV*9 zTw8%A1oH<KjkCWgpO}6$(5Tdb%&)AC^S=^$%E^W&|3LkD{<g`vf5sWe%DI2WV}VB5 zkJz=9lLDEXr^?d=lXL$-W=YTfD_^#Rw4E965B7DJgbMd+a<MA&x@W|V&hcmL6x=LA z_<V<--3HB=9>R%Z_`C)`EMt4Iqtfx7i8HEo>n*E8^eK3I1g#Mtjym=g98s+IK!#S< zb}5c|r^X~vtl#?N505yuBb*7DNX$`j7)R|@DUy9I;f!R?co=0}kSPyy#&T8IeUOMV zmbsbgnivh|239w?&L43`Gxx@Ulj?99c71qQZCQ0gRatH91Xuf-vm+{pZfm2{8h0F< zCXUctIE<|;+uE2jsI`reR!~=?bGUL1dBz@`SQ(kBSxPVq?=D0?W#q2@sDXpMzuR)h zMcJjE?YN=^Bm9ig+U~U9u3cfX`P#(L%5W9VU9omcqXV<62yNGuB%<>v!Idap7&WIp z`WK6RH`E;;<r4pNTbm!gr_tuP;^XaClm5V}DqVMqLelAZ2(K(VH_@Ca{6{Z>Ig`n= z-bnS>{7G7MKC@M)b94TrRXp}qfyzx@I|XSRMCnS)3=%0$r1XlDYOd@RC)K3cGmgjX z*%>aaX|yvEMlHRekg#=^wDw#xaF@&ImV4q0mdRau-8>UJyX(H}Ow)6iw0ZDIB6lc8 zLQd|}JqHu%CdA6Fv+l)wEOtDX*h6;lLC_vKm&uH%o?K%sGrI<hge>JX#)tk?f%Rz8 zmB(yb#=KsHas((ZbNmpE84Kgt?Z!inD}MJMH0-Xr{<!0czml@z)!O4_=GD{_te)-M zyiUhw8BRfqrls!m>=?OKnt1B;7>~ARoaarBPBxQ<^KCKkksq;U$Bxg6tulty`h^-Z zJFW8zU~b9skmkjCJT^p=Oa90Z4dq=?$gOuB8G~2#jEywZB`)N}=AAhBz&yR$-xxEA zJ7aL}84cdm4(;-0O;1;rH_t+HCh1vVu0Vc;*Yz>nxMr+wjLfmf8bF=*HmiCp?|$t) z=AoMdpe=sSMxD5;?hSyp_$w(ZzD>p|RNuBjt5+j214q!zj}o3AN8pn<$L}gzHzyM| zJKbmDTobw=QidOBH-}qt;BmfcXkP6K79gYvgp;@Myo|t8W*1GXoHWTbm$h87L;F4< zM#Ffgm&9%I2T!_<PT!oD;qTV7Moh_g4R?9w$F3T?G~T(R^k~5IaMzO&&+X2u{d$CQ zE@fk6_Xy?Do*Bw&?rFa&7IV&MT_5%m67?DP5<_^bY}<3ty^${=2{wW5u5vpv)2*>D zF*8;JS~;2VZ#^8~e47o;&h}EAWB)}bGqidC<XnzdP@fG&XHe%)HQCpOouQNel$<Lc zCirN~L&LRRzdYv|Tw9bLza-}hZk8jo+ZH_?Bzf+w_1L68CFe{->#<eV$LeMEX(eNJ z?L2-N>3&8}I&UIA<`E=VBCKxW=(^?5G;_s;*2Qow2*NY3qpXYWPmOv*kPO9!<Yn zqaFNO@w~>ln9XB^i`u#|wk1aG{wylyrR(EaV$_~zz^f{~N3UqQuBn3AZO@rjQ(2Aw zNbg4otQctLU09h#l<qE-29y85kn!A;A3Z_*{uK?8s>*URu?&sG2T37dpDrR0o>cA6 z<oGvN>6?FZb{_L@j=0t`f_rA>ew?;#o48`3`Flj^!m#4@7@d<QE-7~9BLJ62XA!vr zILgZ%z_ajjqKCr{s;ViU?yMX-v4`=_i6e|>W*lL>@{^sV1DI{uGIu<4AhCUK&&r&C z1Zy?XU9X7`zezlxP3Q=l#41cTGCqpxcFLaR>wTHdK9b~mJi88WHjWK9pL6~!-;9vv z;&WmQ-wn3JKnY91_M3h}AoosKLVj(7O=6@j4YCOlaYIemcXMoF#lv-XNKXEnZwdZ; zFfhlxc+3tGjPB_{qS3W39yfY@78AGneEH%Ckd49JugW<&F+0JY2i0}uH*e#qrZ?m9 zP1H3GSRKPSwM|8Q<99#PHvg&I_@?iZe`^-z8!1(4$(*K&>zk;*Q(H;+#!r=Sn*LL{ z@lD^`zvme5Ip2&oS<ewX`d)<fE^X=~nk{d!IOeq$y#F$|rmCja@e?wRfaa9t6o)z6 zW0>U{%P)WF-1Z)_J!IPFK0BhBETwbsvn^U)I{W{&7-s5`?o1+Du+{@QvS)oG>pu3{ z=HEOHA6i*~Loxiz$UF-V4_iO!;vWcuPa0E>XciILHVe1q3A4bixbm9EMbq(Y=rLom zOt_mnc9w!!lNu&Z#&0d*l{DuCSZ2NvXr{6$FTsQl^8RkkeTy1xFYIxu)3s$sD^7PO z1IeGy=(<Pq09<hNOD2q+wh!|fab$~qq%wi)!r|#fcxuTiDTuv*<_hKY`GA$#yxPf? z)fFDq;F(zb!v$B~+|`m_Wvym;v;fnc@bHb(>>YDKTu(uLZ9}#7bn18<gw5KnWixOm zXEs;uuWMQtX#UxD6LOV}yY(X}_oUtYqq7s4SJBLm1KX;pC>S*Vt{=!5VZI*mEPkKJ zrZEp}sIM6kHm@%_O2|8o`>Wa5cRTi+<xVocPHP`iyj@1yAaZXjFrU!+iAwtiIzE}m zn-s>LRa&{|Lb>T1t1-p(IVCucCa<KV3YAb&iPgz6oRw^<AvDweN~~Z0CfDNkPtwX? zK7R%j-6y?rN(i4;QF(sK<CATE<d>FP1TC%)qBB?4<K<e6(zRA$Sxq&K+Qvsiwl{HO z8A|w&J1<!wCWK2}B8h=3@LNmeQ+=u?Az(iphh-|pr$n4z>7|nq`*(fGE63^I>l@63 zg0s8!FJXM>T@XD$2w!8z+n?WMIwB-5L3`ljxriSPlx8jxBBahmJaF=Y!_V580XX_{ zFa9(B`Jk<Q?4RDpOFo5zq&ZFd<LktVa@@nC18Nt1rIDv>OxkeL<M_%MIG55a%GL2R z^X%f;)p(H=KO+Nck@HTKlj2UrJf`V8>Db*RPYLZSY2l@rvE==>OF3iP^l4i1lw%b+ zZYdaND@Nf*AInu2LDhwIG;BAkB2DM%)J2-E(yokj{iV~I)AW_JI-)~_v!qi^&*JgY znwiCdCz+JR!bH!9@)^8i;gU|7;-Si`!ezBScgJ`reskZgiBjB2vfFzsR6<+vnMQgA zO;s4l`)|x68$&8*2-UTzP|Uyg-O(IdTGG$FUpX#3Ihb$$!yM@`E{sowaFm{F$jwbQ z<fe4y->*|fO;U;}<0ek8yaqq>z-8t?)&rRD&xN|mA}?uKr0X+vFHJXl3C-7jPy%NU zX}j?s;Vc)JbXkX-y2>Nz?bsPL&C8A_<~Ke$9Q!^pI>Tul!MR3Z&2JoG{f9GWK;IF~ z88FqLmgDpE=kSwI<z7<_|IohOAYS0fdYoz8@sNrAD~)XU-}bEh;-xg}70hn5uY{;+ zwy$`Mr0pvnEP4BihfC3B5&|Y~Gx31w)OAAW<h|Hhnho0b&bwaVK3>u*d+*4}s=+%( zZ0X0Z>3K&>UO_%_deUuuT>8#TOlR<plSWJMiP)V+5nV*}pMi0(!rDdB8i+2?ce9x# zMDIfTipNUXu;M|}Yf<s=Nv1W?I!p-M<2Drcm2N{wh>^Sn@EI_Ae4b-rIOYA_5j(wV zvPVi*OZJc{E6E-_<$7zfJFdf3(k^Qcn??;eB6OvK{O_bVv?;dMX5ZekCOAGvKXIa1 zsk0Xy&p@L?MZ?^$#bK0+exQN2p6>6#<vN}5Er*rj$=X0!8J=7lEzV54HeFl+oEtC< zFcFJf{6a9jtz&1b)Vs2-7%4YjoiTi_EuMAP=92NCC#dv(ZQN=EjA4d~^j}y_h?r-- z%(T`D^}7`I&7ydo@~ZJeIf()7+ja4P`PN6Ai6Q-5_Q$II%*vVuu8(>BE=D|~J$VZ@ z?nN(Kb+w~eWz4VeDy<t5p7Q(S`>V<b-jJ#@uex&#iv2F=80<m>bB07;ytP8vHd<oE z<?(G_JiF1Cxa_;8vACY68^>e&z2p^(Zw2sp$txD1zj?;9e(|&`uk*)qU<Rd;<z^nn z@^So{X{y(Eyi1HuQ^oa7)ZZzx89&^|H-4&w)AXOpjc@us{#W8lVzKJy4*P$Q)Bm)j zo%{bQIscwFHEV$I9Pw%Kx{c-A?qH_At*}Ln?%uATyvL^#%)LKtDmChcC6qEXbIWsX zb0@g*yj&&Wd2f@Ab1ui+XxxaQLvs!tc!=lxDEbY#t?7HkU;#ygqeRo5PI-E>%4ubJ zbF~|<Bwc0d8OYh1qJgX$P4`pITzjl8P9W@&br2D5bAzWgR8Kc|#O#s+NV61f|9ND4 zvOT)1+w$P`8nr!u^(wVJW6?gB^j_}S>a3#nx_8^s)cxC@sK39Jd1tfbLjy<r?zVEq zM0*<69q2!DY`bCn2Wj|rPOF}MdnK)2-7$9{2DGjXX09kb8_nGAdNiE5+<6w6JCyTf zQqyMKp?r(5>qDC5oYA^5rp06TcxZ~d@*A5HLTGSuK1aC53TG7iqgAYMt?OUe!$~~t z|8P7>NMt1sD0a{P(TEaH#J_)V)bQ;XG<)_4v%4J3vfie)ZnPe+@#0)N#~agDqp)J? zy=uRx?#AYhWq%Ja?%I5`VEOfVE8lUJqBRR(Cru-!eM0P)Xo|zA5|Yg4Pv{P-s+m+) z<?+&bECqI4k3MD!20u!MxsG+cKBdCvC+pmntfK0Q%ChR}aGl3=h`rSso)exx(~Rfc z&P)b9Z(B)PmpK_Om}8bTu)4-yl0irJxO%UEp6%5mpm%n?0;Zd^>siC9KI1X{qt@9t zVsX?_5{`|uy;kk+D6yEPHCxfFm%QBHYgqpheWfIcpYGhcVwuQCCT!J+RT!%^*(=v} zAeg-bdVceZW+uG_T3eNw4|NVRFE)8}tEgM^ML~*_HtknrBBVHG(;Xqj8Jivv+y`vh z1DTJ8@bjAH2Rzek3h09FX5`;;{ClkF4H%KS<jl8MTZi9g`3(+UN8{Ve!PRN!R8>w2 zW>tjCag1}V86{KX(+ZDIo(Ik>tE?)UgyZdO1C_Pj7z}1j30K#Kc}ACSc`K~Fb2!V< zJCLJ%JOepLJnuk`(at-NXL9L}a&&5i$L3#EctizW3a*@7iPzLT3XkEU-Nx%g?gW3{ zLk@oZ)?TW%AtxT)<31ZVrZs}ZgL{u2aeEpghdpqLQNtcM#faeu>>e%R0n!;M;-S%8 z6IKuthX-32pK3M}mFQZC{dn?(*uIU=yMcR+0da56{!dGu)m`o1T+&itS@7<@S4-`0 z8O^?|hc!Exjl-uR_$-KT#Al&JV={&}<;_8Rwp)yqlrwzL`Z(3Pr>7c}JmZ@gK~YtB z2D;jaAt^>Re+ShS+8#?M%O=U<`m$Q{IY4?BX`Q=eVss&uJhM48Xm<SC%p@bL#MFCt zE;AqJbQjH-6t1WUS6DS=nq*dqUZrrgXlFIyQ$cekgue&dLxfjBXXBSWTrRp(<)$xM zMWF@nZj?qEE)q&7nog=hf>-xlbsGMxe~rE58Y^`B*K=NFW<BAUYKmsT?LTFv%wv9X z7u~s3uZd2NF4c3CbF@O|6PH(!d5(PWW3~CAW##yGadxnOqSA+@*3ZjZj}_JBH5GV9 z!*@{T2CH9I;3hhLd~RlFyzLXtXeJU}b|rz_v9qefwRKY~BkYzdKZX1Wb>Z3xwN;}k ztEc}*X=G;&tT&$$hNC}X@n5BrV`?ZmvBGD~IH>hMN-8G{GZVZES5<`1rz3UvK@$A< z$=FHL!sUETBh99eZSEFB!jsDys&E2eBkqlCU1rB$5326N61>_}zsYR8?m3>Lbr;~* z@aoH|%e|)Tj-VK^+*1~37_W(mBaC0iw5mp(&aY#JYAVX3@5ltZF&jvX?>PdeIlMXi zc$SMTjMos@owR()H!&^0!O<4Rr!H+_{L-qeoQdXbRadv_AR&I5XNN?axJF+qY4hx0 zjfT9BdadJlMf0q6ulr(RTAq>8t-gfI_3J{mw7i;1$_#o%>P`mJsB_=;m2jbceLV3( z{rb3$x9fKMN{sJWabAU)GE$m_Y4hV%DJc{8iqwt7{c0&OgMPJS3**xw5~m2=83hvK zn*|H#)Ezl7l68cTxkn~nOTx`3F;@BwB4G;T87bX5N%Z4Yx1J3mRitht?%N;|((-K( ziDA4OgnjDUjTYf_fHpCzta?fV&YbsnQt~J@hl8|F&C*@M5#1b6-PI|W!$m(nln)8l zmE-MHGyBxjRs69$$z99tEbZ2AkA{|;#?;XjC#@&PG-9RKOdXD_1E*8Xc3pA0lVz{& z*qto<bS--xefpLokay?GEo!U}<Hs#3Y_BP%b;*vXU7K(@BBM2V&2*ii(z*tp;&Ax# znIkwJgS#=>I6asLFHBC#!=W;qjFsw^;*8y$!NTdo+yt?K9S$|rmQO9K!!aRU%!PFx ze7LF#I|yBjncgVj$gt;4(PLOnCt7-)&gm(wfx;ary>4S)Xz|>u>sGFP#tKI^{d$Kz zS3bSNwS?1+{^9n~)%&U2Lw9<K%L~7hb1rWuxsSR$q}STLqNUYx(u<g0+j09!tIc~w z>t^1&e~WZw!l&iC!+GCj+~K_MGdPGbVtx=9+by<zChK=YFgAMaGI_=6`s$L07qduF zGy}WhDTic_$YwwvhgHk!DIU9U+4%V>*M+7#CZ`)Uy;kb&&1<IM71FDPdE7?QjoSSz zr`?=<8nQ<YeTH$bklv~HA7$!4XnTPOmF!ivo<Y<1>T^+EUVX00GpJ7n#)Yv$UO6+& zAOGP}PgW>gHl6>#&r<Bi2k9}bzgN_*_f=0f){9=TOjunOKl7H5FFZ`)AA<S;CG$ar z*8;nzZ!__>Z$+dW5<LBwL4k!duwq(6UA@`ME}Go!d}W*4y3-%u(W&dU({zU+uM6~y zn_j2(ap&1tJX(?G9M5AU@=V5S6zf5*)9*HZ{nq0G{ras}P|pl_Z`=jVTO85fT~BA4 z;p3*uo!HM0vXlCpcMc~$F0#$h=_yWgPwJqHlVzW5<eF>@t*x2C@jumo;p3$n({681 z)*6%<^UT2Dw-4zZ)w5T-`&Jhsr`5T9{dtTDK4HB&cG?;DirkZoccE8$j|<)x={+#` zg!Re8c=O)p*vW%&dNb}w(Ni|N`o30nmZzU=vywW#CNe5KGhCIpi0V}n-X1V0#NUoe zZ<O+NG@@>7Z3TXK&n(e+yvpQr5oUHVqAqq7U5T29_pt^~t*olhC2%D0eGfi5G<jY? zPhS=Dxw@{tGUn$7g_L-u(RaR_zg(Mk#TW2JvP7RfDZTEz+U9+!J$S{<+abo-R4;F( zTWV>zN^=<VYJ#3O19nMgHCz9h-pg=4g_8P>wzLZ+wX2>Kir2m3KPnWzdxKYH`P~~l z!+PHv@Vts!g6lZ!uFv;;99i$XCmgM<F@w#<dWdnHyzTMO=68IxS->%G?&2k>8Ihqi zwKK}<`4E`r{8x`=<egv7=HIi}>9srG?0C(Fd;)v5()9E075o3O_h#*F<hTOp`7!tT zel9Iu9-Ua}R#qR&o#}gC>MKiSrxI-=m7QdM{ROyGkt}ejO;V=QXHIvb0!a`AKo9`I zR=C$;I1AU)6Sc6t1(-%-NToS`9t`Tc;|I2`NL~t~sI|-Hi)619UfT||cLf4jD=%PR z?W*n}&DoJ!PhQ!zxDQ4BNF{RHacpvUv*OuGnb~>`I~Cem0|WaL6s+VS*`H8Hj?wuR ztG-|wC_a{#1;C5cW<r$k)tM00zTJc@YSTtii{i9`TU4hdbGwP^v~@L}?^1}j-%oGf zGY7Od7DS?S-%q^YM3LUt--p*7^@pZMy(I8~E#p19$ks1d1b=axZnn#mzPvTCwr4_K zB-=%2+#$todDS41-itkEYegei-YsiHwhs~4I{gKTo2^Sqf@{#2^kTP}B85-8DcUrO zg(5bMVgsi&%J{E!_V4EuYca?$jJ$;y@jN}AOdg(DFmQEQ+u(6@#vDiG_2BA`MX-mx zyWqTe$NWe+s)YsFLl|4xrzSg<nx!SBNKvXc%jUx4n5F2nqgh&{(LTOK9vuy=61m4y zJM}tK6Y;TjR{O*NQ?Yec_srnvs)=du=&n_^G0M7S%E6nqy$g`bfE~!$K2($~laQK0 zbD0OL8(XJAroLlZly;!?iyeb1VcJg1t`IC(*cF1U0j&@&{(`HgmR&uH;J)bmo4EQ< zIjo$m>x!+bv$`3G16OCdbomVH@Sf!6K(LdmldEs(&-=~&-+%wjPeV<+$$$L#ald(& z{%qAvnBH*Bhm`x8G$H#46S5H0B#DI}D<>-~RcZ~hJG%~2Or9R9ilr{yDD~C>-DvZt z3%Xe}pNmiy-REpVYCqo%^7@_+e~(}o;d$s|!YY%LTQuSJ2<j{}>&DwzO?B<<uYsxM z>l5?v_yzx<aI&vEQpr>Wu2DBZG8fP@vFmzUQ97W(w5V>nnN}lVq!opa7__eNwxThF z%04XdPE;K6?X#?am@K8ZLxESwr@wR0vqxBi0Z*P_?opYEp}NY6l|;PoG8Ni!s#{fU z#<mu@?^*h&S9DRq`3f_Ojg)CBVHzhmz|=*cAb3Q7m@l?S{1~z_mJAOC!kgEyFN3mF z-@2wWCiah%AX2zRqDDleOxwD;;A;WrwCC-1vxE8~CdMA?5hrXb?gk#$<SD$k8v{qv zwOSgoT!~9aTH+j_vKqbI=#=u5kW@MbU?{h;6ZeAULfLx`DFnx+!~$fNLU0TKwZ5-p zWQiy!b(p$*BZ7Mt_2NR7#fFBIvV}DQpH#yxt!l)g%wRB!!on|PZ@fNOG<ZY>Grds` z0NS~`x=^wqJAE*ok>%O!i!0kK*{j~SyYvwr1-5oQgj$xED({8ML2uopOL)5-ZVv^x zEd(0y>O!*MHYhuz5=KF3UvZ=UR(r~fbB*k6zg=dYH>B=B3(dy(KkKCNvBP}#95C-1 zqR&wjHOAN$q%By`N~^6uLp>|J8c*EI(uYD_%7$W9qJ7{4+(3X+ua~fnu<GDifT}e( z5RtK|4TO5lQaRf<C~3uc8&SrMuMsV@+B|6K)j=F$>>z`U;dEz)Pjpe2^84(l(xRel zoppV#o_9-+{BreJ_GQB~(6!Hr<)XEV$h49?f3w*DOOE#0f5@U+;yb+s$dBZ@iH|f& z@*~}nuLF~2kQtkRNwM`8tQ|;DJb8UczHW97F&D6Qiqx)pAbPCD!lDf+!c{gZp^1%J zexwB3-j!=*ENjXML-X0y41+7E$l&d3C?gkEMMY_qZ~mIX-LeorP}%Ado)cZMcDe@p zE6<ku=nQwsQs$Kc`(Gb!wKojMyusBro9EBF6tCJ9_i^-nlK~DQ1u*Ew3~R<>CfBzU z)uz%Gh(Q%E@2TdT157p1G_Xbb@GR=FQp)lCW_Dw|R0G`jHUEk49EQH0MRhXhpc7LG z662UmN`V+mE<i>%)9FWc;uHrmcB|2POsur3cUUx=qnfB5WK5`lBMQ~Tb5Nn0c#bP% zlj@<x1PeL3m~G5WsPf&joED}jmfONH<#$W}=(Y5}z4CLV=^%+bYYf%uXYw4)q`!QR zOBGqIO*1ZI!-+@P?qKT=dGSRXw$j!<t8?YDi*1}bt-m^eL1>EUSj=VPp&4yfn6$6A z_q-XSwMLO;S9(0}+}QCadLR(6wjYf7yEVlW_Hg)nW_y)>l2Ora^OA?!k9fnX{;n`W zW~}peu1yw**Y;Ed#anyYMy-Aay#jC1cJg+d*)0&I6y@$mz&k)aAkIyO9uc=`Vq^%L z7G~c}4a|KU=;PU}-fz}V`2YGd1;Vr$LcucKizPmc_TM41_73W0Yuv><9zUc{*_v!O zo-gqs8qMAoU6#+o)4hTPj0LCZw(Do8bidO}tcZR&pJHk6Y8+Mt`A*D)wf*jETeYr3 zTI9nR%1{g*l6^Lh!Nr3G$mjg30n`rL#rZDD^8Iu^0S8tTUnR@s2FhP=cK8ea=AIAY zM2!HG!Ri<42;VCsz%Tj@hmub1`}Jc^uRp8>kjFi1im#xZX9bx)aCeO$B!jRIzP5E4 zgr7O7<?D(;>?5>ekS_Z5Q`5pA10RFXdJz0bZU(97R<7pEBfAh1sCxt33!zNd2a1VU zr5rQ_)c6|Rfld6v`J!IGt+;_#03x>t_+%jwMIZ<Y=w=9CfbDw=rP&9nBlrMMaFZCp zCki9@S?}ocX7`YR7o-f_aZ8TH$Cz!V1u)L5@VKck9>={IqZ7ey0irKvbbwOqps$K~ zQ5~)#2?U5KWE_Mc82Xg9AR2E|^TehMCroUO<JHgXjaYrlP(HK0-)kn?I_HaA!;H0d z#C9j25$tMR%bK=zWMK}rL>8{#-wbxRKt{bwAESE9S~NSy_UK8xOZRveY6sd|TS7ae zIRyu#5xR9i+D5+w6_qBdAWR8ZE3Oo*4O<G<hVK;y`VG>8c11lERcNkhI7ytQc^Hv1 z52NTkTJR@Tn4-f<${29m(`!E%uw#Zf9~*RwtPF`Bah5JWQAZ{DRRnDV4y3ANnynj) zxa_FDvQt~a@J!fAzG$Thl~F1ixAKkD0H7Hfk`-IJ=fnZR&-&Ej!6^1QS>)7IwUP#= zEh>MfOfZ@A#MfNI>@$>HP1ZSlsUBI}fZQUhTqae<;ys$hVO+hkJS|uUVOUQ<7wN}R zvv;21<pq=dS;sakL}eH)uC4sOu=J&wtqQ#6lT?1!8M#~zEv}}(|0Ks{jBoi8xUl>n z2S*a$!b-rPg%!Zz3o9D<7FK{c7Zzb`3p>ygN(urGCiKD%^z(=UPcN(~&2nJ}y4OwV zhg{f-^oxEf(l34|rT<^a%WX3Mrk-FT$kk5aUd}pM^0J}I`9$YDqH*Q;<88rr1bJxr z0TLd10=gi^=gPXP-YSL{F=AyIC>V3e1q?sa1V*mpba|ti7PC5Fo1le;1aYL&zgN#x z+IK3bpaGmiBp<R@40%-Nayh*jzC>;qzO~gkG-*h125oqF(|f9KgQ#;AhDbv@L+#1N z*Zh!Xo*=ZA1}7KDP`>=)BVexWWyJ>*k@ACqMESw&3f3M90c_S`x$~D2yq^O~*?o&+ zM9~S#_#{K)6Ei6^d%A!*Pv&!Y&>dbYjfWsD3=pzk?&D0ePDuDqPft<wceec^uN(w6 z)E}FN=s?hLEFU(igJ79=U26=M*A1?;L2RUE3q)_<-Rn+2ia0U~Df3vI7|{79MYjQo zCK{|K!$gDiq?YKg)tr*zdq^@#0W4G^TT4t@*6X^LVEka@1FI+jDWm4rT6AohIG0%O z18TVMKn!@GB#PtjyJQ<<&i51!ez1I#>^`2I$Mdh68D4D)DHq^L+NZ27i?Q)28POx} z^Rm)szWK;PkkhY|$$eZkvRArndcke*dA;s!;I{66*6ZE|u6KWRzk5!vpBLFiH9EN| zQKgh-KGIEr8Hsi^>_|(u;uxXDVd|Ktbhjq6TcC{X&jMxag(Xxi!_sV4&$KjJw=ph_ zt_btegs2*r1_Whd8Xy)El7brGHmu360mV&C+_CxIWo$roY*4aiUkBEa)$>2mGay`8 zSj^ki2m0C|z08E!*H#+%hIG*=$a1%i?CDt}jJ1=N=xc-c`m!S7n2BApk;e*y3(YP4 ziltUt(hwOI@6JIQ-)9f1f{xDSP_90KTT<7U=MEm8uOj1-hTiANF5mwv%fBf8AR08^ z6v<Is19-u{I^d#w^Jck8^5NjsWU{i)r-XYS1b03P>+gIN*5Bn>Sbvvi-v0gyp&!h* zgmVyZa0ba}Y~gNU1+!%NA;}>ftaR#8t22O7&)g+PeO1!i$j>WyM$*Adqj{MgN3|a< z;Npfj29w{>h7~-^EmS*{v|&kzod*x)niADs%hw|Tc0rhq^Ua^>566Vh=W1pkHPZRc z3n8ww*d^^;Ksb1*0CB)vWc$f#oBwpo=OW+CzQ8qZVIWWwDnJ|~T}sCGF!N=;d6n$b z^N|B3fceXZQwifhD*bnnTtm$ZKD#CFNoZrMqAQYmsP31(*6Y-X9(;DAx5d}|WH_M2 z07J$+az9#Qfd%fvBERSGOsnJjdA9$wO=T7=)dRe0kt{x~msJicV=k~%{4anlZ0A~l zqv%tub{mbK%i;oTFEys10`n?Zfjy63lI62;U0<BSN_@G;ip1<v?$e=DQ5#fNN}WbY zB*$E7hE=-(h72SH&0RxrJ(4>DqQOeNGHGB|fz8(C^-2%y7WX}Q71If8C5#cQiw2-s ze&*@tbPfr|oC>OqWvuF$o#o2}IPk;5!wQhr1C^LfiKxJim+AT`|1w?A;6fv8=)MMn zGuhxnwp?cWuvX{1k+1WMhYZrJt5~0x)Np8nDioy?Do_^9P=T}Qhr#q-^`k@)r#^cd z)tImeI(S-c9+D-0E6@iEd<L$xbx6PCvPeM?_%;I;{@0f@UEZWyu*7vPHnA3qIbGj! zj7**};V+<01R$TmV^*}7R2poP^&0Z;XDQSy<pl<u7>ys7$&&|*ah|TW8~4o4_dwv( z19Y+9rgJcN-CbRv0~0GFI1#^m*sf;V6dt{DgTeKH^*UX8rg*i=e%M%vyQ9Vldi_dG zQ5}}S4Rdg^7#RKiA(+Vx(1D9_4Ok!Jn&41_0?&`Pn|;RWP`HuyGOpe|%~l2s$yPdy zjTdw%D=!#eHeUGq17G8_?QXM8;Y5~J*hPZ)*g(J$Y=8kSjSuWwO$Bto^&%@bVxm?7 z9>PwrzfE^Dwv!pmXhH|=NoFI<UQ+?11=$3<v@8q4Ve}=kFG~RuL8xSfDO=@B0@89T zV3;m-RMyhW`=ZqqYT&ZfPbeZvtpFlA`dMBGGe;jM%ZKL`u^8BJ{KU#f=@KY080T3I z$@R96EGkBSJV)okKDRVIe`JL}Y+vyp4%g7=o{^O7PQ2waecr?w`2?+miM}NJB0r)! zPLNhEdb7wQ>*NXs0?c3?h}n*&z*y1Q10)pfeiDZeHUfvq_ILCtsDK$lK`Gl9YPk`W zc^Crh<yBit2>Dr-inTpwhaHM%*=LJypupK?cq4!);u1k!KE!}mk|EGE;6%lZ>Y7Tp zA!kiiCJ9P@H~_x@#YH_OC*YV%F+8s#%E{RK#GBw8Lpi?gpHU_*DQ^Y1$bG|EHaKOF z%WUr>*cEC&%32*>&)x*@IR+>sc1_mv-OnwQ_Ny#`0qfav4Cr$#|1!Tx_w!x0C2S89 z>%cuq9|cw%2Js+n-N^L5>^qbW2YUsK$?Dgd{55;y-O2>WIh+i3*~4?5+V(R6SaUxU zt%CM54omN6{F`Mz6CdgQOnjvGGx?F+&-h2%ekQ)+aR)Ac)0DUFSiG@S3-ZsZ|HkIK zLaxO%zADzw;e#oF=bJ4Q41D@h)pD~p{=HJdMCk0h-DOZxE{%qNt-q}|-`Bhx@aX9o zT>n*~@Xob{qYrQ`9Uc9(TaI5N<0HS;Z8|vPs7t%McKb*uM|qE?eg|^a5RKcxCSSXQ z0r#tvN5k4ZjKnk5ib|~8#}M+b;U>`{T{P><bFM*tWgJ5qQnNP~x4bY`1b3TUYF)z7 z22I(I+*zx9D|-Nm{hTaG)-FIq5iWxJCCDYRJF72eAL()h53b_vH=>`bYpJXwE%;aM zO@Y*1lrB&knaa*2p)_}|9)ZKPQyT1Zyv^sF3&fOOZ8oNx#^^_crd;T|s9R!mxlGni z&&iXUzIHoQogF}ln2`&wt9&E))g;4>zM(tZ!9x=i3sIn_iQ<$BtliI9>DO&rnLUH) zyn{!9X=h=j@2dx>#PJRJAN&QcIsP7!gc)N7S~fe&0JGXzCLEt66y-Hm8Q{E|W&z_< zc@mIPc^_^^p?0+i>awd%Sohi+&|xcMG@{L91IV^~2AFmE5H7+)@|y&sGC#5KA|4p= zC*4RwH3s)z*azJoQ|V)bhn{=skrgkyXrZ1uoneUd&t$z=raQugR2h7X@M6bjFLN4< zSZQ#M*kUC}*{C{i;)Yt`2&nXT3BroVqPBr|z}cCD?ExAEJS4otSwL%v6a7Gr1Bos7 zm!eawDH2!gZ8f&w{EqhMI^PJcaL>hepaPn45YB9tZe>w8b(XAIz2lV}EaZ44U>O7J zY*1M*#DqMCi9YCKnEXf{!{kTu7*>3wj$z`X<rpTu+74Rsv&A)7d<HS01rSMbu}v1! zCAc)JtZvvmqQ9Vn8^AKAqw*w%@*^FFEkAD_AMwIVRS&SPS!GwKd&RDCS5}#UfcDIm z3*c3%4?HBf{NRWsgYj)@640`#u};t-3UEMg3KbO9=uAl{B&N(@25|jgg)URdB0@Yk zluQf3)1!5~QNDS-fpEh0E_cGA<yu7lU67<@Es=ukFDx}|nV7{omW>4pj@GOmv88j{ zu}1a|rYoR!n`9N&yoBJ{ArY@;r)o7u?={ONBEF7MKknsYa`V|R=KrfOs{n+^<QL>- zAK)0dpyGW7WH04{Qn`gFR|Nn>D$u4SC|ZD6CtX0;CjMHt<5t_b#diL1Yk+ba{;ryH z0m$p1a5T)5B^|vpVV$8q131*;)3C7{a~hb#nA6~(njZwV{(!9I>iQ6Xw`uat2MBpA z^KT(NGC)g@-g5xZlEb(HO$Cr&ukzk#y~@AY15NmfkD3$*KE@&dGno*%y{znjy#<*D z>uV#D;^00Uq!W%z{o%yW=00`LOWB;|CA?B!Img5NHnIs2PBR*jkf2KR)5jP$9%1aW zy=hV;1VTkg%j6sO?4k_OC9e)qUSQxaKH&X78xz#(#LgG>x{>*loLuJwuhi;KVT5<k zrLpAzClI~K{LwmuDcaPcL)l87wzxN{v8)TxnygR^8$um%<LT-y#plLeQl87icAO{@ zjvdD8#ot&g+rd-~dvsE^VV@cShBSLfYMBdQine9Ztj#@(rnOUYhh1E0Z9`qcU`iV% zWp5<!Gg#!t+R(XD_EteMU~NucoA6Gu=_+WPQ<p$2iQ1-)lo{d%!#!4ktFAN%T?Dm> zz5;%EP}+vmQE60@h<pnJmeu10o;^&Vr=x>Va=E(D$tRvGGnIH4I^pDWAXJmQvar%* z5~wc928Na6SA}KMV7V=u@FSUrJwd!CfmB4$I<!J~y9j@+Y!tS=unKAC!YZtav3`4R z_+hiq&z_D0r2*>6^{sU6%ic8`SkH($9`-ZhX2D&r!a-b3sKpT(NW>0tDfeKTP7w}6 zJ3#q2ivv`Aq#dB*Bkcf{A4vx&|7df7@~>70=w{(RlS&xxaZ><N$4xAZb9M{yRGt|T zMO!#dr#VLXDt;IfcCbw5kVNwt??-uo&zH#_Tv1Qyr$?RwVIJ(w-oXpHtJmUk3*FDs ze?O<|dCG4i`3AY<0q$7}^&gjEP2i1QL<_0(nq~VEDR0JH24`X}ywMs`kDjY}a%Q7Z z@&KiNA+_s|U9x^&COb>^{m^JgCWjg@G84d%Ap;7OEi7&|ZNdPvM(z<#t-2He9nvKv zojg|^rd3$GI;g-7Sik7PCBgv}=z77LO7p9LByY13sg+D1T0K>uNIg}7A{AB@iqc#r zltqPAz<B7)xD?E|Q)L31$}_vO?er#`x@jtBAKfodY4idyWq4Dhk`w@dqc`ubg}2Xf znLq~|K@>zSFIJT+rB|Q6*1EPR?a`<0vsR7Ym3@L8R^X!z^k8vclMTR**gog{q6p>4 zrW%DgovD^KtAc{Hnidk+yO-*KAq#}`WZl{p2=_WvcuUyvsAwM!$za5mYtxDxXe4hD z^PNZ3VJ%J~MQ7*APQz=O60FFE4cjf*=(Zh&eLVld(&~wwmVXvn!GZ<^X>n7e%!e`F z*!vM`^#TQm1_QW6nEtSHIniV!?#6!HtgtXFF|TT)U^cHdb?|u=*v04^I)u|z$N*MX zz$spz4TEni4oz6sz1%AB3JkAwN8Y@w0y{24R)9z1SYhE46Kn4Q$!q|o>=ILF?74PE z3-U&!i8guD)&!!j+L}<dJCPMQ+wD8R-^+OgjF0CeAjNHvXW&Y0z|Zx}J8ThR(E*&r zB4Imwpqi?}x<a^BXlIUJ1w2SCRa#jzQU%VYj4FUv`|N3*;8VzkGG&m1GjRn$rq;j0 zG*j5`7InZeH9Nd_`uM}p@v*T2<cI|mPy^r~3PV1i+kjNM^9YXuSxXL-b^+2*LK8B| zKFXYVEK|1J?5J`FI-KJ!fCgw~3^^i|A)@z?SJU$~fbsWiQ7O)#L4eIeT*J{pNV`V^ zvE3EWfUefha9a;ZXqrfVM#VI+noNLAg4Q1ZsSG%V)QBht!amRyK-edXtATy96$B~# z<XRM;imO;4DW|v%l&B?U0VO@Y7FgO<ZUMIKKj`<UM7<~6rEd7`i=LH?5ns1vXom28 zE8VIWEG82-Eii6$iK%2PzU*8$1C%<Elt}2^*22L{4D4GbqmhXgIvOQt02(E5O*F{x ziGm2vicsQIW#q*-2WL~?oScn)bL0sC1E>$2uJij0PGe7ab8ycS6$Z1P>-iV-qQY1A zBx-f!o|5Ql$OhkS*5D>zyoWoPbAeSPu)0rwgdr8!lN&3!uucgofSg*dgmNjo0xA%% zF}%23arqYfS@h=7h6S9Da|%G!H)sautHZlBX3;6c3H9JywI`lGYSX=?@Hv;F1oP0P z1a!;*?@Pq;c`V{-J3H@qTRNBklhbhjVEcHaT_8TgnvVSDszZE3JFssEp*{F!fr%Tq zSNV`F;q0r+a8dxRvSt8=<2atnR39U#&Y9Kd*TrBARQeYulNz8-F~x3~p&JdggP(`I zbQ3qF={6o((v5txr(1;)LLOj3C{V(>8K2=(0*B1Gg!ZD%cSD(WYPAb-sdZ2{(mJdM zX9L*2(NwW;&M&ho#Ei_Q;erL<tiqhR%;C%?Ss!jEf9T#NsIUrEAPDF5s0wRM6Cq%K zfQ3a?kEz1S`^%7+QSs7LkQiqB*Rpa&CG1`8`vL;LIaK7ts($MPiW!;}DJo3{XTmQD z<qRIPr)MngQ7H*Xv<j%OS!p$1CO<2st}0M)(!IX9pPBw1lQcG0TLtcgta4Zx*6Nbu z9sXS`Fcu)N-7*oqmcZ2YrwR}V6O}7afrC3qFz^fvXNox7POyhvS$D#iu$TNIpeXMf z5{38WbE*}Pl)J0=XuYz*@HrP5HfL_}Ex_E8E5Uq%Sin8*;QH=+R)dxzyoB@1s)QVK z1hIG^JCV714HIe6bGS5%26mAY01jys5H3NKAPxqXAPzAVAW)#|7M`50>a@G*n>WLM zU4Pb9y`2e2cxNzyY~c<lP))*u3RFw_Y94!H&78SyJ*aN2N>2g{rGolm{kS3A@CKkY z@u)ym*FcnR(Yy5N7Y&-yF&e-{$TZknKQ_!p*T8LcIIY^i%WBmoeqO7#fszxeEmWVy z8o#V=fu2Xe-{-5$Mr}o0D5hJ5Gj;_{7rR!0!8XVqA77ga6W6!`>||~REx6mwv<jq* zS~+<mY+EcaX5coy6$sA1Jg>h|NiKXf*oAc1%>YQ`%NR};HW-5%Fep@`V9%Jom=bKr zz|ghKtPNXtmpfPt${s0tx?&wM?xQ+EX^e*aK99I4IA(P!h{6L}RvMo;(OiZnS>Xcd zcd|6~q)wM(FhEzLqz+1DEb0(sx}pI><tiE=RHC8@LS!lGAashN0YgXR*fQfHAb~8& ziF!x2bEDSN6-!BFe&A~T32iOe2{vlPL1a@u_wZ&sqn@o0nfY8oQM^!oCHX-4O!0v7 znOcAKGqLvNXL{Y0@8p`7-!1FS00z+jE<-{^Q*PhFdjnVkolNE<;Rnh7)>a~%ZorX! zgE`V>w3lpfk**$6G$xq=&MH`h@R~U>q8ojer3Qy*sm#Hvxz|*~3&^~MXpVXOqd;wC z+$h+qbeUq6=}Jm34ZL0iFXR<lcL&Oh`m$P8G>3|LdCHGO)z#o-i^O3-e_uo*TB|#( zfW;kfvd`KhJZ~X+Mj#AMGPA#`t^)qiaJ&Qq4K_U9g>WF<fzMA1%hyE<Ud4M%o|ie( zpliqm!o8kmOBI>HK%u`<tx7MQB-TZ_gX^8;0P0phJVVi)>!+t(`Xni~$2TO;lvk@| zN-njU12~BOwTFq^1kdeuvzSBLBb#CrqEYk)0UAYZ;1f7eHCA8~(m5|P%NkILIg(0h z$73i*Tk)__fIe(RURgM{Y6BOxDx4RI-SU05{uaJ~e`yT@Xsk9EKJUzoWl1>|%!Bk0 zE;gYql|gNLnO4!c(I9|N%@+Q7nk{k+u{#xm-U70cpaH2tbU<5)QF5*xN{(cqU9J|X z*nsGE^a;6s|0UZ7^J}GvpCr{L;+-|3{FMc<A?_Bp&pU9r?<;OBx(!sxUqbmon)n7v zK7#6Gy4phSMG6(J%ou?{<ovIFx>GsdRdd+dCV-!-1Ic#|9M&As$iIY@Mjnb?-oiy6 zxIG9aS7FKq;6^rclwT9XBbtrVRgzh>5&?dW(Hq-dPr!o-57!B8+(k6-(Cg|wjvqBR z&kGWebyd!`P|HeOUHAy8C`D-%=ANRg53-wpg(KUIvIXe#>@k~Dp)nWY=Pz&vb(LN( zzCQ1B_KZt&^aqjI8NZ^`yhodR%rPVP@(<3SNOyvXWuoXa*T#<QWImLooqxS-4ZVuM z+R&%b>4sF0&o#9Rx?Z}gi7nsR*+!}ya`PCR-D80G)1#<kFANrVF*)D;q<oEXD7sm; zzu#=%r!Oh3tt_MYcL!TTuhC;^2%b$ih)no_m-ZA`S`tV7>KT>LM&aF21{U4Ah6jP} zz$eMnB758f^gve_vV{`V7IVj%qUv8?OLFUQuOzox7TD4hUI1I+V|}YFzi>v&4c*v7 zP<yVb?|?9{Hx)Czw;AX5rUAOuI_$u&Uaf7zC~Rx)(6hEC?gNRHK)%&Pl20|WAoP$r z7+Tx<S>E0@U`?#!%5B1Wj<Mr>xk|pJ_tV?=9&fF$hYznC_t0>uc#Oe5<?&zZ4631E z&`d70bY`DPgV16)4;*a+Hau5rKa1E~kL|u82gV-q!f;FrQThB{&E{wvMkm|Q0qV^) zwqKa+t?jN7B(eozkCt*Yl(I{2RTp@Kx5>TVE_XH$SRq$?H(w3U{z$>410@93^JKe+ zGdNTV;tB78hYD{Gejf36;boM7E__E0Ul-?_hp&+FNiu-1?Im8WCsISWsqbxVd9Nw3 zwUc!{p?NU`M4h9-Bg@Vs>lZ0tBiOOovt4ACt^zn-fS!EX!E=|4(^!xqE;9dRgl96D z%#3opN*}dujw<Z}u8)?`*2pq!w(!&~^$u>?n0yIW`D~3W^Uhh(2b$$zY)537HK)s- zl%vZiJVu8uWMK*7WQFsTu+-TJzdNJU41j(pqr~Q_U@%`&3fYE2j7J@#voEat3z0y> zdlF!NO)CMVNLkGq0eAsUn)x@}7>X!BHLM3wNRdA?vN_s#cXrP_|1P4d5x5rEGpE)3 za&@{AI#RONNKVr`KY!Y7p10uq<knhlzW+-Naq(Pk$a}kUPao(CeE11Z1_lotIt4eh zcV25YILni#>m~SF*<-gmctA3U41)+&bc2S0i{cU=Z2}ie3M?4{IwYORODurxaykLZ zh0r4@F1;d9<OZ~Zp91E|j}Dj|7p4%zYs-?<-e|s*fWa#Hy4gwnN9hp>>3qkTQ&WP5 z?1KgDE`7;Z_UJR@tI%97VOiSf62c^)bFIrHfdd6kfDfYd#}=wgq6a-$x`j?Ok+gOY z&GKaQ`OWMmJi(WOj(FlZ<wB*voteE<gR#7NGfSbcStZ+vXcCm2OSH43<`R&$Sb_i@ z-Atz+akF*QA2LBH^TvcBjhqS)l|)woq70rY5Rp)40@22g31u-$BpA!pJ%cDQ5)SBQ zC@dY!n!c=oIdYdZI8VO43QJ@ytDi3<^7^ywDoB}WZ@};nA{1uCyutmyGN>s7?}eP{ zZxRUe1Ru$I{V(3aB$Vi9yoaa0xBvQ*<>?Hn=9vj}q9fuKrnG?OaCV^k=E*K-suE_B zY%VVppT+v~Y4ZENdZ$Z#BCl}DZ#z%F<NbD-;UjJq%8B>4Zb{;gpSPfO=}FUfc?DYZ z3vTk`{`mnGWAar`2bW*-&E+e=m_!J2hp+eZETd7fWEP8#;qDNRP1B9xX5DMSK;+Qy z-N|53JOG~P(vB!%VD{y^<%@M;piTnGC`-p;Lg54p4(tnw1248<iq+@M?jZ}Uka|u) z4_{ahwCO@MkcA^ZBtNp%v-xPUvqiS9*@7-kNsJM;ZC0mm+cv9^)@_r6`mU!4oP#c$ zsIY|IE~;DD?~fKBY`nYlQ6wG?2HF1O^Kyww`UdhmpFY5qBPig?jbkAOdb+NyE6DN0 zo(vf+pgmht0awfYQnU(izDQUH0pVf4rMbPxX71_n0wjhk%BG~C%Hk#3E0KmWFJQE1 z(``Wdi|Gz1t}L0K!3I@*BGLj$h4m!b^bVzb#l(3_zx)}FYIU#4eH_q2nc*a;#mION zGpLpMA`fiT;93kBkGmwp;iVw@JAd$lEc_suALOea<cA;RrvpSjA!=D~`0Qd~_{^RV zwY0Wa9FjR9!f~^Ch7=ncf0iK-%K)@S_zd}o$vUSs!oQLita7d2PX*g&v)?a4Et{H^ z1h-zCzM#Nems!aM&I2#iB4{6`8d^4D5|nmYQJ}U>Tf+KwZ5>V?%cANjPY3jEeqwFd z=+yqCez#UzxCAU9@V!|(4(cULt$ns^7O>G4z-%VEDO`M`JOsr@(lt<irF;VASIQZn zd?ma9#aH_HUwpQl`^)ciG@|%kIT&2s@1E1^=S8;BW!@^pwg!;8N!#m|1}?d`G;vD4 zrH#kiMYjsl7<5yM&Y*#9s-T4SDFYMIp$=@IgR15*K|Q*|09UogEFZ>@a2>_*3Z4az zmzxcLB=jPF4R87Ev-$P%>2|Zs=CBLTm#;3@X>@rOot-hO3%szXR?`^VE|8fHZ-(5? zS=<ytr;`a5G26oX+SB{^9-a`J%r4{mvv_tTd_0Xuz8$~DoA9%74F4mBxnRRw>cb2k z5|~U3o(T*gea9PkSRQ5<L!>jy_tWpJBY1-u3T(5Pzz-9q|KRc-o9u<!L;RAZ->2W< z>D<ZWeRc-0+1<N)eaQ1Te&Jhryhw9M^N$Ab3;5e}78|-MK1XBxBRmwvzXBN%y^A;o z_b<>lkMm9Zu-Po}=Sz6PDOtiV(-*WO^)-2mK|Y9J$8oaEr|(y1xCU3N&3dzkF;f7a zO#tD^&HQHj>Ey7D0Nr!o_4nCBRJFBdZ%!EVsKA_C?H^~aAh69BALtEq|MP^g9~9V& z)5<Fu7zX|^Co(<ZiA>;RGrKum1P2p1G@UYn!wDSOP8mVCGkDqvjwi5Do-zf`Cvdhu zWdtt@ZB%+RPFeY17WhVInosGJk-k!pF5OzVQCYXy5PL+k5WyIc+xeL?2AF}9$pe@l zpTHXAaT8$*wi-bpeLo|ZCP^=&hz)qGY`|mHl7Q{Fd*Vr(MIY(9hmoX2cS}3X#+_Ys zi1!0K$aKZ5i%xsXI_>Rir@j5?w6~wu-p=7Yx_ydAoy*AtVz}abryNt~m6INvQ1Mh$ zp7h`c_EV&v5#iK&RvcV`VVSBDn(8c$mynPgXDc`@Q%X)BfgKYk5uCJn0hV|TrGXVB z;oQbSunsex#aZVFG=<-9;iShtz=5*(5W{JdeVw74g4QlibZv25K((Met>6emda>f? zBTo6Gib0tnVDF&}10hBpIw>=ZnXa7u5k?t5g7wJ4k@J&9dlKekX%mEHF9d>z0LoWz zPL)1ENcKja;$@suCXW}%e#pZf*@+ZuDpIW}gJ9@Q^ynf6Lg=EgQx}1!61@_$X`n8G zm^b+PYNK6`gdAm`hT_S^5m`7Rf)ar1b-HA?2Mk({{Ip~s1T9BST8`q`Yoz6$VYF<G ze?6jd+{1`!y&6ALF1Q=E%Ivi0+HMLxlGb)zJklPaI%%G@-dzuyLm$MI$2Ws+7zFX? zO$I{9dZ*T{550OM;i&mUx$yGaXwv1NaI-`lHe}iu@mQ6C$gwxIRyfxqo_j~Tm9z_Z zbIYJ1Ml(GO&OitTKX-0s=P?V&&EC2<vo27tM@o*ijrmJ_ig&sUiXD5Ks)1oW!nim1 za@gWgu#+W>7sFl%Lp}m_sx+#FY=7h`UL8AWI(f0|g+S_6(o?gQ3vCdDWS8X0bWVY& zvwQnOfa>OzIXsUUbK%3W*6DY&;8AO;3=3^1+C$z>x`?+qB+3YT2={c!fYC^lClvP= zCX)e1mRRZW_&Z!;z`UA#w^_yyknHnK@x#LD3J5m<?`}CnoUXP@xKTFc9~HkbKZ^n7 zAPwmjQqE;KOZs2SJ~TA1porowdw9;%=)Cyj38IQy`!r8iQH1|KO$3YArlYZRFr6Zz z;Ld@>EZv_|I-Dob8900d-pFPw+!4;SS1zVyA62HkLR%J@_Bxnpr8`QiS&#F<hsQa4 z$O`{s<Q4JI3v&w@lLN0jvy_7+@_3UgO2S0O1D&8twFQGYVMsfC!Ctu*jD1uW3?shy z54gQTwTyMa<O#Vt17@%XugZmM2JE9c1B}SB8C=$$L9qL-s2R-4Hs}ik?$;A#I=LRK z$gi3t@yjfbJ_98Q<CmNPDm1p~5i-skDZvtQ>5>rkQI!y;KTyW6YD<W^05XvSG&9&k zrJ;esr;7yWEGCt~^SO4-hkaD%gE49R2STuQb(T7x!nsz({zUba#C`@r>k7qLAUl}i z=Prt~k1EBPf<ua5G^Th~!5EJPr-koVkEZ;Jgg+sqONrEsr%4pyy~M)iJ5{7rBUQ)v zwB)ZOv#IzDLZ2+!u<?|64kmk?G}iLq1zXH7!XnZ<mdYA+O1afk=5boKW6A2lwz0V| zr)9~Q6AFtd|6+3ri%0(|lahjC;(MywSSj3wiaJGvv3wxtBdibxHCTuMuSxY&)KB0{ z=7$h|KQ_YI2x|unAxK^2wVo@w_OuQqTs85z;K}eh->fPqpQ1M9C>IevlVeU6WisIQ zYhf>=5WfzeXwj)(f!J_R)hx|g$JDXwSj|4F$7&`ic&vtmh_DdP=)>*g4_OCw$cvGm zUQ9yl;PPSZ`UnnPWMm&zGO~RZ$q4BaVPq`!KemCC#mH)$?R!U2T=0%Y;twZ8MJVn4 z0*?kjDFM6yqbvox>=N$O@diW(F-ELlX>oPQIOr%_$1H*xXX{1!gOw$i@N#h?Qd)(8 zQUG3%$PY5`gLonQeGI*QjJyzIFT}YQ;=&67m!v#|zcL^^H7wvW-b2E|7K?1ZO>(F^ zzni|r$`knium?gcU4Bsl?Vr#*?4|(5L=?Rcs7&8u1&s6f9?N=6qRCri|FQzcL-zH@ z&xOnykms0>kWH>#-sL|imsZ&i<_%E%QJ!A^R6Pjzf!*YUjQ`n3E*-Ob{O`^D9x^73 zOo6_L{C}JjG1CM1=gU}@I|(Gql}Q%-K_d(NP$kP%L6$3>ELVao*D=3mj2r@N0L7Z1 z{P!I5GN3@q^E_8r1@VpmaaNwD006}XNt4D}LvNFpyV*OqSsYLPTHek6m)$X*#Bbrn zbz};DY3@BN2`~l(Z8<kUBpl)t5MG6B7Pu}3YX<#%n*D!#y`YoM77Wzd`xVn|zvZGw zx$u+uw`81}WJD+#xTXJ=j6Nm9OXlB_acYt=K*>NW^tWX6DH&ce|CWqXlMED$-*VCK z8G~&Y4kG`SiW8Fx)MLMQi)p`7;Un^IsW>sI7=l!wpYFE})uRpNBl2&lI5DXhfmEPx z`nOc{C>1^;|CWjqlZr7&1;%53OGS@T;Un^IsW>sII0vb~802rM=us+sME)%mCngma zAQc#Q|1A|gN`;Tezop{Dq~a2!0&`7%OGS@T;Un^IsW>sIxB{ub{Hotl(W6xOi2PeB z4kZ<kZq+>TY-A>$;SXBk8T?R9JR22>XCpoFY$OuTpcI6>n~tw;75QZNV3v|}hRKU? zllU#aO?(IWdMtxXJgoIMq?bX4A7t~vD_W6O7`~Fq_iIxDGN~X<4pZeoZ~cSG5Md>Q zx2&N2KbZ^zd^qSWt7ZL9Cd1_6Ej%>#52gUTWA+v=-TZSk0z8!V7M@D`2U7rEVtWg3 zvHgQ708hQWg~#6h!4!bE<le$-a{pioT;Qdrx9lC-e=rp;@qXl6US#c`yC+;>@uj!C zuGW7w6&l~znOJV@yn!>RevB$!=aLte^jnPl1!&Mb7mE~b3~hcYXE%5;3m(jZdqD66 zQ^Q^_SILifpZ!ODqYJu&ZddS9*RUC?SH)pdM^-%krQnRmO7S$JxFLBSN)PKG_`X=H zA>^Goccoo=MaE)9*d=PUl&^1Ip@Y)X2F)zy%m%JcR(1HYnjTfQx5s(=2JU<AvLvEW z2e_{pTZcQqJTGM}E25lmkMng8+xxtEb>e~YNY()AN8V1zLYUw{6Xjel2-SNn1f7+A zY$WJdn+poy)W(LU(siK$7)C8LK<9XYLopt%V76d90!iU-qh-3^<6rSL$|!~xz~a$1 z$>64INp#rQ*xuH~bdbu1Qxz5-<gZ>yXQ)@*J4bYm>LJ+Wa7f?H^5{HUXL*(^!D`vD zXF^N<c?T65#2WR?Jw?H!fv09RAS4QrQ)=Y3P$M^WEx2OC<|Y0J{%(LF%`2}9)xxlB zsai;0=@Qpc-7wOZ>IRE<=<0^Ci!2i_^i6MblqDD-Dhg{RDyXm`_@eX<#UGb~KUlTo z#@h@@b1yzLH$ad?P>SKy2RAgwOj~<a;z(>YmbI5fk4|_-0Sb@Lf-AhP7A3gkrmGx1 zJo<Hz4YOlpX~yr?!a|We6xyX!umveKBGywhHDbADU0YyMtSj2+NE)#|J~U%=uMs=M ztXzB84UeZ0^%>b8Phd!bw~Ic5cDEbW$LBa}A3`ZBW+%Az)@LVR;YDG8$_%;^W)OSH zr<EC`E_?toG;Oa68;Bv)feq9ZTH2DcrxV-;kf6C#^?gi7)(t~fi~Fe#-~sVG2*m@h z1P`#sfjZ-XCfLzT0ckVBjAR&g%oLsCsc{K=qQ%W6^3j$a=cg2|KFaY(6+k~OGzau+ z2(-XTTkqo=0a!+}atOu~nq}L+5R%Ux)#^m@T^P`73-M0D{S1o^rMnR>+KRH$rEUop z)RlU^>p7SY>WpGcnxc)k?pM<``k_~{HXiCK;sc`2HRKfSas}auA;WK|i{)2j&3>0L z7==TuWqV|b1x3;o3kvCT#woj?Y)8vkS_fK~!>AtK>vGmZq37l72pL??(Gs4o;!om2 zq)L*IJKI{S(XOy0U4#tNj?q+OrCMEj7Rs~e`__l{l1$$5X}0RjF6#mlg{ROGL!J^| zXueo29k?or`e{plNk9%towPb#u@EE<xNNP^Io#SoY})=vTA%SEg?~bDINZv$!sf6G zCv$7y0_0J&B$CR9!(kV$F*XNWI7m=Idzf|vRF<;OxRxq|jj*B@x3d6NfA}fOjfq0I zISNAa&9P-NP>FbO=*<-2KAqIvp+_@7XKw2QAgXWzy0MWH1nD^^wDeS)Gide{;~|-$ z6@~}qhkkH9G)pvl$?~8)(F(;wGetkh9*irbVPNhEefr2sHRTzdUdzs$*6s07mI*y$ z{kc+_5{k|&?Zb<r1akD_!C^SbH~c|Z37>u))Oq@~e|x(rN;JJXHnuxQPLap{ENyt4 zl}G(+zKz>w764aeEit3lyt52|esNTm9%KKgiUq;BY27k?K}8-s5%g2S{aZ<Vg?$Ln z3)%5OsU<4Pdi8e{;y7C0Q9jgq`4BkZdNoGnaO)NHi1dM$t`07TTg6VWI`D#8-_<_k zO8SsE@Desg=WuJsU5ev3yJVGC+{Fi4x)2-=w{oqpImp6M@2k^UOXng7?V{;LJ#H4! z1JX+Zg+@fm85^{D%2}hKOZr1*64;15{fJwLZSiqE98Z(KbzKGLWA&2>y#k$;RS-^z z$|LmjWJiM6*dyaj@*VBN(eoS?oW_Q1&T00y?0cH2Yrwwe`Z?KU$vTfl;t%3Vr!8Tw z^{Pt84K?5q=V~2Vjiw4k)|R~-B)6h*$6QT%UL03r$HYdx*mHDj%<{5FUoG~eyvjek zJngXw#W&K^z@_kWACV{z$7GbnF$d3%Ir!IO4*uhqga2$f_$-d1nAHr4*PBH;l~pvf z-QgA_3jP^h?9*jB&*RM+t7qp)wuX8m^Ud~WSxh_Itkn`{aJ2#2Ldpu%PP?d8I}H+z z!!f%c>Jfo;!4*OM14^Bt$$D|@MhDi5>v7JG?Hyxu%G?`RuQm#l`Nqw80+MNwCoYjE zF1z803R)CHz=??yrT(p{U~-V$z_N#t8~U0p%?fZ<gE1jBR+)9Dte|BMpBO(-xE+is zsKF1!8Pw3nVGk`m`Lwu$LhVq@L5+PF-k?T49%~c{(5J^5CTfRd4Rh?nv4%PFkywMJ zcMp}M^P&2hOLJy{@|3U-!V564Cti1Cb?{1aK4dBO;dU_;Dz0C@!)l9!VM8($tKEqf z%3&!(vl!&)0Va^%1nVU!)S=xHoao-1*Pu8H^4b;h+Eq8aRu^lE=^$dmNm{>lo{j11 zqD68at7U`ScO+WTYzV<7KncQ>3e7ra!?3*Y6Xe8Nh#!<0YhiXkeyoMpF<CM!EBzFC zvKHotWy)Hp9g-_+A$AnDlz#o@9M^*v(m;x0rXC!S#;7EpbnSaI#-v#Q;^nYe_U3k! zf!>MWfu6|?x#j2g$<zDnp@^oRzsZ*A{m*TBm+m*qmvkplY2Xy^@F-FTQ;KLEo<r)O zLNabwhmbmm(A?b93FKCC6_)+;TmWdU?4T;(3miUP;o;*|yTeBVgefND4u3ex)qfho zJa;s}h~za^IuVZ?ho=zDa!`>4uz_0#uy&GC9h^2wdV%+kUp#2eSsfm0?RZfP)ZxL^ zJ}}8AT^&vB!_w@~)8Vs3qsZkyF?KNVIv6{c10RST%wdni4&<eP)8Y&liictn7Y>Kv z7Z(OcWS!zN!U^(>iQ7S$#T@*ATw)G=9QM#|Je(GHP^cY>IjFG@!yDAd2W5?{IT!E@ z9!O~cQ+eF(Xd|&87CaMClKPho%+rb-gj`v6fdh{q9nFMX#0*XqZ8J0Ztnyu&iWEWk zVGzeJ$?`dkb8v~kqkY0%B7H?4!4*{IWKCN5O5i!L7dXwn#wCB<WXZe0n_v>GgUTQ1 zgXdxJvbbQH`nCAGBQMEj>^(JPv!hXuWXuZvfKlPMLA1@%dHOxur)5rQoI|zXc$`0P zm+AEF9WQ(JarQ2rzQwdu;14)4H@&0Z9r=UjIr~E%^ZP?uN~D&@%fu2K0lr5brM$ZM z9`#n=jNi#54lEU&;Ou6lg7oMz`tyjqR1~%tRi1p5EY!d~KH(~Vf+~N~waT|HPrzKf z;&5H=1C!dfV*QG!4eq2A0Hyh}<|jqw0Om(R*Vr(oShWA+?4!0}uoY_TVs)7nZPqD# z^0T*6@{ceRY3Q{v?OKPy8m&PEbFWlmr2=8yHO<!R22)ao+eOW~K`el2k%%=UcETn0 zttPQeE1b5_tQBqvpX%(5l+XV0=7;*|>MmU-dG?Zi-YlP2DJ#5Dyhe(_YpB%t`b)B2 zr^}lpPud7?ujewUKwD1BE!h_bGhbUygB1Jzj&&Uo-zO-7{55m}oSJYKf3N9;{!dUX zS1+6nhcxA-Uc(cic0_EW6ArSW`!RQmJ)Bw(w4wVkB_+H64c(8Jk7)%FYY6X=HuNs1 zddLl3$6GCp(c)lz1o@;eKTY|hFg*$Rq!9ZrmCtrlJ(hebk0!Se&emyrAxAk?tq^E? zB@=5-i=%MUT)qy_B*n5_MqdY51;`|lug0DU2S_w{^*Be<2VcSu!5$_FpJy58I4siK zmCIw0+I@H+XA23v;eP2G^h@9L<(F28A2JWG$X=Bqd()#&x-Q<N3<HI^Kl)_I8^G*H z;2J^=@fsBB585e~txT`J=(_6@KJgiN*J0Tp1bf(76n8?}$n?QY;wsi&2|mJcwTdMv zuZKOVR*?!|(qF^xtV(B_X&%D_hCF~a64?4uK^@ag#nmf!I4@!BHoY+46gN`Z+TBHH zib{ZtA)#vQfH!;xoN7B@(?@>mo3$zrgij7K5jrUZP-hvSz;yFm$%D#OiK$Pj0P=t` zRpNDIi7FBCvmC(wI?_~sVuz5VuQG_$S!|<Maq^(+l&P;wpY<qH9^?)zSRQOV(#45& zy3*Cr?79%K!C4&dza+bK5pVNdoUXRZWM0;X#VgG6hDkKK&F1;@E|vA(wbyAUla5&= z0JE#>Jl|yx&v_c17k@kr?C>7$G*4GN2lr%fx|HSLqOttbiQonW;UF_yFS4fGEr`yb z?wLRpUqog($(#XSp`nTYkPO&7`O(LKvJjiL`QQ}L<?hS9*5@N~tWR`4Mb7N7lK)$o z2BvKCX)ycWx-5T4AK)K#U963lMV`JV6{OL7z>!8TANz;orRLc<p-4B(LeXa=a&At8 zn<UjyFf>Uy<z>*3R^ydArA30oY4DDUv=a5JV2t4@jxh?Wo!gtc=|j0)#aKo`Kz)ME zQSR)BUu6m?rhE#ool|%twalBow2V51(xq2H_;fUkL>SK#6*SSs!|5s>Mzw6J&7-h& zSp(h;({}!G3`f!9qxjXM&iD!BsCbqFWvE^K?d_v4d5NcL?&(M#U3^p|b?p?LE~a3H zUS8*$6;A>`aYW^DgnU7g3(}E{GiB|i$uE^CYJpPgS5QYK%27Yk8Kp!$*sz4V1Mjna zUL3WKZY`K|2rIC9`qK!j$a%u^kV0UhctSf$DVqjYp9qdn!w@wH7M;9HAERpZNt3oG zqEX<{bZ)16${U*KAKh-}%7mkjE;`&ED{A{hR368&s2pa}@|3V7>s6gR!qTyQ(hR^i zZp-W1C&B~7<IdddLHyW1q&uy7UXkY%>3Z{+BZdbGJ7UdKFg%EfEz^7snd5|ek{ze! zuZwwbDs~^H%V8VR0|Ljw%J$;zacDJ*&tKq4#LaFxX9&!3q54II7!bxJg2ZsQ?}a61 zHmPJqk3z;*VVt*jx9{fgeuv1BY5I;ZNlloXeb}#e^LAt6f)TWvbIJ|src7gZq)r=1 zkK>@0#}WG@XFq={=FL#7pF8a6`0kygsip5LqDa$3d6wOySUj=g_$pa0H}eFA3RnvW zFn}jY;my(iq`QrbNoNp`Rv#KYkKbo!0Q&M$50BEHOh$?ihl?#Pd{7LWQQ!k&!ehRX z@(Ng_)|1mczaxI57fOVwjKh3F0gUsi3FB~gPo&4KQ0v!^@D5K1`{EE3dE&W%G(T`^ zBxk;?0FvKyO7ha%pv40KMbsSzS1`LX0L7~|C<eRK^lBVBR~HdPjl>7xYDrOKXd^^$ zDkRoXw8vqO$OS5j)~GAs$30HkDzg|{0GD33;ZhYp=}JW{t4A^52yCu7KU-=Dvv_d; z!mqnRSn=PP=p9SyB|X6bR;3yIW~w4~(hQ*4WfwFvqoqS0E!7sWcZ47|>QpFSk#vV7 zQ_1#*n$sg4N5je<_dGC@mxMC)gW*0u9$wCv=5f)oMlg?v7JFt_H?T{cTJd}GFuSHL z`m{t!b_+J8OrP?BcU2SPX0ga)Bi$_Wcr>i#j%%*{(e!mGL55m93Pu=1jOxS?k0Rv| z%;HvO&4}TFtxzuD99e68@F<eNak54OkB3uG?C;3vStEVN!^;`hI|^E46i+h-5Umg| z?L~vLj5}thp@H^P2pUbC#bUFmM(8vQP|=5AFm6ByM?CIuIM}0a{o|lTht%OPmI3F+ zK^z`0pceq1HDMRDzokEw_f7Uw@FM!3JQ=7iYKYpz@l%?|(3KLWz&9?$yCK4D&BGRV z;H<p6S0h7%a9qgCu1Jm$Z?qTDcW^3aB{L<a@Um#<m=@dXpyGKBLl9kN5<#fY)H#BM ztr><6Y9fiwReN-Tk3qUeIRIDTW|p{iu(py?$bh<AB>)}aua)R@Ksp^A)l+<QbQG^} z7%sTYO43}n=PH#n@&JoU%=7?<A%_OJL=K*7YAb;%a^<-y43&<hPol!ylRmx9)Fqk$ zk`|ZU(E@I`gbWX09Sm-}i|)mMyK!w83|B0;TX`@{4e;V7xlH%_Dd7+<H&78f0h*j= z>wUV*m3<bVFbM(1;?GFMS)T4#Mge|-bON@`&o}FRu6;6gdEEL?=-`YMN3zv=vq+~< ztQ%{yEYb3Stb_Y__DS8n*(@#la!`~Qr^!h$fbrpPN^BdyvA4(Gfr@4L0SZ+b+~Vuj z9JfEiaVvJ>N(?w0B^G6+P=YQxSr(W!jzKKTJ9Am?!ly3fJba?e-0yj!I0iA%Kg@}K zJjz6Y$<Pyw0-#-`)C8cJ`BE-J)lZJ!gb08g&5oaaE`u0@Sca*&47b*0DA~)1f|V2X z$@;IsZ~8<Plk2~EqNOnxK1=4W=#y_jPvRH^-`3c^)a8_BB9SN%K5Z6g?s?ic1~Kio zrnvrZkhm5GX!s<5El~wSB7AD7rAUhdy69?q$1#ZYdt<KO2k-i2!4pICx?i@05t>bk zHpYvYeYKm2UtwwcofjXW_Pj<*xJ^2>*vP86%O`;TFmC3@-?RKnyieD81`k;oMn4$o z*sp2zLmz0aGg}3y7L5g1aV!7;meL3i_woIi%2hQH6^1za4Dq1hz=kcF2NitR7J9l$ z*U7^&jkCw;-}~JFe2ZU_J<wzOT%KQINSRKbHoKowXf&CO*#pgxBtF77n$`4deL|&r zKV71`aQs#1eJfd=SqkiaAuens*S#H|k2s&>!H?#1Fl8}Y4~~X3p9i8DLUoQy2qI9h zt^t?hn?iOjKj(-1Ccb;59Ecct5BMwR^UZ1trSLGk00&R_EY9Z4(ex03el?booq*Aq z@R+R^ar*D)WXYWwcT7(T+}L~S@k6ptr>LEv51VTOMkN$1)N{ge^5BHv-GWwQevK5y z<X#GRBXj}}NZh^C+;P7iX<YL=y~zzh?Qg!PyZB-Ayj~PuEL8Pueac<OvaG_jgfoNH zV=FJ)7Hex^BrL}d|0uU$PGGf1aSZM^c+>rPo&Eb6<Or=}c$EIsxDrUke1f~@dCn!M zMy*hGn)?XP^73ctx!ybDGsYU4OcUu&L|A?y_cGdtVjC~geU2!=1*ng(mrrN^%hq%< z!E0WsX>tNfYa^K+<>VSN>V_I0PnH@3kWx`8Rj@k7f8%8L#C+K;nTeAWHz%nKLKVpa z><}Pqm0N<x=bs^X=_SR!Wb52cHiDu4h?z_^poV*^1z$eysi#S?5t<b3_LQK_L7J;t z3^zEd0J)Slp&+E9nozhCy#H@9p?*oabz)zg#>{^e<Lfl2<=(!F+@DVO?@zV&?~|Za z-K|O|UT=HVZG*k)B<OkcjjRZD6G>;z{p(6`0a*7hc0r~~7XUnwgIMV&h^rV598MR& zd-x2`%>^H}th{l8<g#sBIOktu!r{A>W%*TC!H1fzf_F?2x3dNh!4<YmY7h~HNa7qF zY2*BPyG*BW;^J9bA7}4toXdgM-gEf`&gJ)vfOXF0N0lxc9c3y7nC9&2d5G&GltlGi z7sn(~X9swi?OZ2#w|v(>!5@>1jZCG2_26YV+~}&udM}Bfnbm_1JLO%MrqTfvpVvZi z6QunPDC2HiAz07z;}Cm@C24hO4?&T!syzhx?D%Z9BP4<m6L6CM7ZAs0{oo8waeCpl zj%8_8TL%*FR3+gJi~Pa1>UOqH_u|kpFk;p5-D7IA9ctNNf7Y<UfCs!b*frQ-w`^fM zvB3^UHO1m$VWSX>E0iD~PM9Fw+gBP(x$G;qPU+CT>YR%jSyKgD!8t`$lx4`sOAwbe z1^evBF0HA~iRQJP+|#eUe>Tf;cNtbdVl`00E`J3FN)Vdc2cWoF(gBMspHi-g+`N7< z%Gs<gbi@5}Tw|JK$TqaLIBurOsqjiWD~KI|`pFQvYrN?nTl{P!l_rw7p?o3{s3TL$ zX+Mpj3^x`S2s6nkW^~z4ZUxZXemXKm{l=9fE5(o}8Pz*7MTO<nW-F<6OqZr3QE&ja zvVXSM>hy?Xv!5Dytqw3f(?r66FKr_EPZZ#H?A>d10Fv0Y?68do2?!L_4(^`JP@rtj zzMvygP3|iYeJc*_P&vh!I2=ll=Dwi*3F5S6hP7-Niltn(j9XHh+cNzV&2O$q%28}} zlD?q+iFRmTkUk^j0=&!J!%B_7#-da{A@gFH-Tn*5(N2#zJz6Bato^TTk@P~6j^bzs z;LZPf+o_lJwNZ`Q<W9|Y>VqKv^|n(VMEkF|o%$f!F>R-^rjEyOIuA)eVr6H#G@Q<< z1f=tLhN&iw1SGtm3rX9xV@2xbbOMyISxq>-lbc(($z)knHT4LJ2&oPrZ|V_xwgPWt z%Q#oxYu$sr)CWu2w*6X;CP*iJiwnSYh}*9MtM7F*y=rtJ`%o)uBbj0;u@hvM)Tn<U z`#{v_-b~V%$>m~l>yd6;Og)HPBO9q;s5iD;BQG^Tp;|MyVM}dtA^Si)<~5Mqb8od( z@*H$_DZ5&=8TTk_@ar<fVqzKjU0O_+l*M!zvzjFiiwW;3!Tp{8I#St8D4g%<Pd419 zvMjr5Q@yWgQ(?AM3!Ca7g42VMbr8I5CPXc(>s<}23;4rpb=`o~HDin3B-LBBr;kcQ z#S9ZwvQbUDjnYu^G|z-TG<mwW%QSX#*=25B)Qw$s2o7sxs1+;+!FTltTPB5j$>TEA zU?>0I7D?fU=0dOK<|am~9lEF}?D1^<Bd*q|3x9mV*sQYF2}(UoE!+lkr#v7pA38ay z2Xb^`xtwld(g7)^*eNHPl+-;jy0=O+R&rS-Zt3jCD(RkJjckyDolZU(se6KXEe<yy zG`2Y8J4$wc&?v+o#Fnm0e-KoNMl)0|X#_Qvv9hznAA|um$RGVB$ziiDa89Q&p>UhR zvV5vv2i_S`4;tQB85VD7=-26#$vd$m;C4uG<cSwc$J3R)6z~=JK$;iNlUDXY=%m;W zEIBtM+!RUztnP*XgjYj0LjhfqpnI!9V;h&%;FiDkRzsI$YGf-EtOMRZRgIMX3NHyz zqU8Q!y!VII{6BQyujrCYUJJoJ;l?`%yi9`xw#JM8QTD;{h|!C6(BX9ci?_uCP^sJ$ zVKDdyCC=^oKirns-Sq#9H^lCU)MPu9OmkA3A^kF$V>kH<+b%FZzvcoDmywrTsFNnZ za`gyGsAfeI%cj}&IrC&_(aAQ_=WL8KCM+%L!fM4w%fcP#gxMzrTJ5AjFCdt9PUvVO zseimY29d-@%3m5k@<!U@{9QZg*BZ4x2zEK-v9d=BdACtPrYghyQ#Mh4plqRF)mj`c zDSMP^{QArD`Wt9$_4UFCy)t;z-ahZYz@v8aZ}A>pL5sIZ{$)DDueb1T<NYdshu{q> zpXA!C(>Tdv@FFVDe!gX$PhKkSAkq0;M|2KoMxcGOb(V{#M6>^-N`JTS<}<u20&kkb zL!c{S{#1{bDxMt2slBJmY#ncx$vjmbYE!7mDLlC<rmo-z)5WspjNUJ|#H&s<`U&er zy3dA?WO{L%&GYA78jZvsZg<%WJUlwFAUlfR0>OQFsv}%o=lL#sc+S)4y!d0cqkOm> zji!0JiX!}X=Y3zk-n^u{>s=m=<)1npBiT-&(o+;mpDzA+czruzvjYA;`;ctKknGV) zcK3<qrmK1j1RZxd^c@K25FXkTSi;|wr!_y$&Y0hiYj1Sdv3USL)nO^b80lj?WCa8R zHsBoaCPBUSGa4g1{F$s5%XD{-ujU$*ggg4(Qu0uE-Ocg{o@~wXELnoK+p%Yf(WNRj zMsQ&kv<;S3D`9#58w7r$nAf5jzu6@#pe8|2mSawH=BxUgNz$`BbV_aodYLKoI=8ad ze?&=poOpYxN?EV+Bs(qBG`#4DhD`_8D5f0zh0k1-Z$>eZ9dKNVg-DA;wD!6-tj?yZ zbXgRUUi1bky_D7H>MmU-dG?Zi-YlP2DHGi&di^C?!*lCQD;9sdN%F*CM=xe2M=;P* z<MV=XI!DOfkRKYzkmTBmS}>3XY3^QzIvc#C7{jxq7>36Pts_~pJ;l@u<vIf%fMP8M zKNiK53wafCu}gBayk0g_(kg>BA6cW7nQlyQm$>ZLS{`MRJQ}XEH>J^!9ao6Q64z<s zUAHG*hp1@ORLgf;WL0G3x29&9t5%_1znZP_z#64`whW}Cpw&^K4@)wjdF#9#Z#5WB zqsp)hl-TSghCFgli`_A+&;%n*y-=j)P%1St-@eDgW3?&q)ngn8Cv#`yXggj(6GW__ z33Kpiwo~C8uS1bi6KbdBNff=$_Icq^=uBif84oEkS^|FfDmL4(n6%)$gO6R^AVQw9 z1u~%rg%T6hp`+8kGnL+cFopQ2#DN95Dcy|trYT_XT`%+2jgML*c076TM_pd$n-x1& znKIYM+*=IT!_=j(6zsqL*&V0eaKNsoF8q_yNWuN6w5lq^=*$7B$iDRCb%KII9<0lS z8liC8)>neT?h=z}Iy-Nbbm|Egg<yF8LV^{CtfmATM3a|vo!@7xZ2k0lvq<;ck29G4 zT+hFx3--0bTfNb&4|IAV+mO*`w^@UieDVJ0E}IL&MS^hm>5u$?bn643ZV4xKhADqN z*oe)BQl{I1dDsw#ZY{%ddoXs&j){KDf{Yh$vSoUgK1S#G2lN2nrTfhiLYx&r=y-GL zczlHuTJB6NwuQ#(2uTt}_-}DKf`e1CPd`0;g<OdWeLC}F@lB~8G!!zS2MhP3!cA3g zKjQd-sWn2gwnB}Lx0_a@DU)uw33D_)Jw1(Xlc)4BlWsU#$CDntd4K&n8h%LgWC4+( zSIf=(+d<~v!N7fxLgvaGjs^`!?0E8e(BIgi`VjgS19mrc@NH_xR=X1wUKFeCnyS@% zIVtd(g8r7S(O~WU;db)J`JZXBNO#eY|F_c&CSgTILmuSw^bJp%)Sy>kuCTos?3QkO z|D5cyWSvJN@rPsgj_!iOC=GXbN)xiiJn(TrBaN!gveYM>98iq}A7X~1S3mRgGs|^F zw>L~O*pJ+ptV7cWGaFz+?EyySrsTnfI}oqJ?dM(>ZP9c8sIo)VbrYt8fKjjg|LD2@ zpCSG8+9DVlit+jDsZ2B0f?If*$P(>jZ)x%Pjdv|<W0g@H$3T!J4JqBs#ouBeEt1jq zXj<&x5Q7!o`rZd)4*5Z`t73g+DPq7Xj^QC+0G5$CK^iY(u#?$=2Ya%XJCR%B5$3o( z3@Ty1(4KLT+m~aQHd+HbUg!78)BEh9Fk`D;H^<m*IPg{u9pKn<pa3byAOy@~RGaxq z6bh%2W2820UXE1wPWm2+^imvT(84Xy_h{Ndyr;o3d%qcQUXbC$H|ydSIo^c8x@IrQ z@;Qxj@NmN&7a@mI;6H*LQ10cfZ2;3zwn?_bFdmZwzzTi~DWA=C_D3kiDJw?>iqHY4 z!fws`ZAU+eC51I>jFB0H-*+*`u?-jWM~g}>z>HNE>wub8tP7X?uyX4q7}+a0^VQ%M zEE)$H;P1QSmP5=BiuZ+^?=IH1A}ggfNKP4_pkJ~E>0fiwmlZzyWUa=tncZ|u=wRzq zzatVR0PxTYnhiBp0SiTf0KDx(01h<O&J~kn7SyDgYW*c;p}X01E(<zpnv>FQqUf8` z2`QcKX45O7m5VN6N=4inuAx+z&g|F*lN*&v<rY)v+y+zek_m5U?`ke3(6zxd$E&Y3 zXwIy&kF)X_j}EufzUIar`s~sWRuK(yIQ<gJr1?yGQzXpO8mgnwD_et;UvZP9EY8#e zCpW==#w^wzkbwhtASnUz#0Xgz_s)oDtBDjsNvxoEbV_zIfnai;m$iH#odHYuxI#8q zcPG^USg+@=cR03Bh~{)SX&#crU~PN%&N}pRuapOZJt2zbUy>aZNldbQqOA<^(5 z*=O^3vxg&fvYO8CfsG(q!MsyYzbM<R;(UbgSo7$9`f>D}KVC+IYz=;~Y!Tz%^iM<O zQ*^F>8?QH5scG~4^d;VHAp1}26bc~mPUjGpi?^F>oofJB>5qB3&9lu~{w&;a(HZ7i zg0T%VFh31%(uZg8o$vE>4auouK-qA7{k+IFx4X?Y-Q`)jH@}~kQGc@g!Sp^lvo?pX zEZ@ZFb@2BGSEIi_P>s;d=xBwXhY%z%hGNc1Bu?e`*&AnXvo~aK-sD!DzLucD@UQi^ z_2&CpB*X@_8OaR7I*p*z(juMX;@4<3VBAzLYMrJL&x@M;0B+j@qt<FGX9$6wU9$UG zr|p1qXEUTnuQzMJH@`{u^IgUStj5^G0h{e2UDWNy<jEU1Pr_$XFwik<mq9#GX?|mK zRQOJ@I{a)I?X`Qf*L1VZ!r5%IAd%QCY`tBgRAW}TIUfjJMbY2c_RH(dY6YuGd}l!? zvSW;UQR)JJ{{%(+Tyu~xwhqR#ZJPe@^uU40E@nfQ+8n}XvRPFr@|c^QWyqMEuA~^q z;7sT-DY!hjnSi7aV_g(MII~ezWsflb(m_4;ogC<H`sU5>U)P^qjU|k=gV8ng;_HC{ z*}EV(YlH)jrt8Oz%=;9j)(o~S;RrclUfIaq0f(_Q9z+8uX0*-I9j{8JFNg5@4%jzQ z7tX*>g4}Kv^JJg9dJ)N?E)c<2PLSR5eYXDQ02vAez%Q%O_>Mk(2dilRCEGeWI{#~* z?*8(QcX_+nJ})5?c9pv6c=aAiNv$K;vfv&fz1)JFRM{zVB7-xi3Yp*~Mp1#%KApkY zee$qOKRt@=%0V7Wq6>||kiy{eU|@l^+$pp`;|;^<0<?Mdn9YHDo3&$t<G<F~zn@c- zHrd9-*8_mx;|<X24M!TA3*?777!A+<K;t`EPS*2ey9Xx8(*-v%?9;G{DlZ%;GSNv4 zMQK4@h|h0kH*OUsAVxRS=|^I8`I*pS=btybhs?D*3J6L!I+A+y85Dq*+}hJ_-5H?& zN?vZE+^$1mUkDHirOW9j^0;#en<+3?<p6edzk5#EQOYr338W1<%c1alG&qanJseQe zMZC>-ak^raaEs(jJV?mBvQlLhj<HI4TjmHUj;q1Fm&K-t3bXA;Ky$KMUAB{ci;@M^ z%Ca5w4|$KZtI8U~Vgf_W1(AvGTC5Up8dS{r(E6-B;#4Gg1eP{6P+`ttsmH?j)k+>2 zEvQs)Vp3rY%r9^X#Zhly$NpRd`9sS>8d$a97CHOsm6S?>FZ7lg1GgZDJ}@_I_$`qG z4y=R@E2Cme*_bY`L)&Qe)#=K>U~tJk1C8tE%0We=3@BCR-p^9w4S>o}c-7vRA1`y# zip*qzv~Gq8D?HYEtddDIg>GDqWS1&B981Z})Nf&SqYTSQnIZ9>M*~~JT@uQmVSUA> zObrJsZdsTM)`@7TgVis4WX!ex?okdOys4RF=tR4kcvudfk-u7xL6Z84zJf~FEsLJX zBGtV)OeadWoU*c$Xjiwp)J~0Rm>A32l+)YP2Qg5nzjt#o2NdNnMrz8#0d+UJ9EtQC zoBZ0LwqVoK9m#!<#+9UeyusM%I-D9&+rU^U9IW24lDWt&B@B$tac8U7xlm8i3oT0k z82z$hOtlVsh1Z99O_b6F?R&P}zHi?1ELL(SRIdz6&%jHQvJ@z@h-db60{MwbCy?Lh zbOQO+nob}9%yfd8%*U*z6O^B*bb|6Lola1Gx1<vk0AxCW`c?6ql|NJI1nO6+5uHv@ zw9?ZFw4dqTsL-v_Oid@yerCPdYh?*85$PH=(g}Qnkm&@zMszxXr<E(6z}M83PT*}T zqmo2Afv>GIoxs=FlTP4i9-2;2?S^aB@^><wK>JLxG8}lSPVBN7er7L(X>ma9dl@^> zezuH8q!Xyk)N}&ncPgDg`%EICr4wl2Mmj<HjZP=fzB2=aoSmLdpf{q^392x*j&11# zS`U?Ug7PbwPN01zM=sI{3Q%tJRniHJ??weQU9qt)T<HXQXB1+(6=-%}q!W}K(dh*G zcXA+^D&UY37OlsW18WDCbb@ktmKT6I2lg(?K%CLcnodB#5pu#zTsobg=zzo68k6Y+ zdRqWtu}@l!2v@|QnodyZrJ7Dq0jZ`FR6#1?eG`OACoo~ibOIB|l1^ZPS<?wjKzlkt z1(JBh%GfnH;a%wjMyIZH0uz+3zf5D`PA4#XwmE1leLI8qX5YSa0s`KdPGG|O(+P|g zVd(^BqpITOYfYpR7){l5g5r}koxp@J(g`Y`2`y$#Cny{9gab-97U#ukjSziTC;+YL z1jTSNSHPk2B?yI*kxo!_Yorqtzn7T;jsZ&`ZOE`VX0vpH*~j4C8>SP4jsR9@t#pDK z{TAN-I_U(#{db#AP-oamP`Iabg4Q@GK2lXfp+Bk;a74eT;jK~930k94y4<zLgT+IC z#=uILsqVnS+@aF_I!q_1i<O*xg>$Ow;0}bf8@NR}L7Rb_rxUapwT#1<K~;kLk>d;| zR6-JM&`^Rv{c^tKu?Fb`P3KoLouJMzZPN(?$10hmMLI$4v6`k6G#E&~VQ&OkI?**H z2~p0QrW4ek8V=SlouI*BU8WP%9zJ+es~56sh({mk1Wi$~omM07gF1$`SHi-zagmzW zq`o_yp!P7zPEseGpw>7YrxVm0o0-wgUOh2Zv;N+#n99stvA!r`jMS8GTBQ@zCoA_X z8=hm6U)?eHhJ(snd-9cvE{Un1aEzU<!>QFuCkQ2)<3$96MoKzCVCO<Tg{Kn)_FH&; znAapIoglR5`soC|o@=HPe6~mM%TH7Uzx+x^@XPO(2z~)TM)1|IinFTxnTp`6U#UiP z1ixsdNAR_u>E5UazS2yM;A=m#-aHX}UjwQjfUgZ1!S^+yBlw<Ht_Z%bsVjo-ZR?2O z``S7q_`b%T2)?IzXav974UblozmpMs?K8>B7^1I)W6Ngvxf;ROzL#-5?PtqqL<C=L zrbh6U->C?`_L)RNi{NYEMg+h7Mn~|q@66C3XQxN-^+t3AzY1gP*cQRpdZ<M3%dcbv zU;9jsTm*s&P;O`0S%$R3STIHJ!WF^SAt}VzD23r=c3(vB%Z}&>zW$vY$R5Ej8%r2# z2bKuF-h){X!1!9mzKjpn2tENv$O*G5=?H$&0f(_QCL{QITQY)Q0jWmtt024V1#Uzu zSD`B))d+qSq!Ph5L8u762}4HkO(07I-vqNp@J&E_1iu1ljo=%Qt_Xew)Lsz41a(F5 zO;~pXzXI(n2vC7`M(|B&Uj(0kcSi6{cz*=nXb~2{Hyc$Iw|aWi3IZ5S)d+s^$r`~o zA&dxq<ujqhtP%XOaV3IZe3GGbhY=$|DD7-S+ly|EXnXN{8Ax{wSOS$p{+|ekN9XuT z0(${3Ucft_*%E%3=bIfop>P&M5jjzG?kygQSDQ7|ngew=dC0#0__>frHtCN02$%Ds zGbQH5e<<s)LBt0j%;(tfN9ofZsW0>32lkE{KD@v^OyJbGisL6NNdcAb=9~3C-#yQB ztzO<)90B61%}ZJWz=WX2?t7fnd3=wB^d=ETWhXCpP_X;ceLVU2?yuz?l-~bze-=;T z`H~S}9LLErpT1w6P1qfx830ahlG(?2b{pe1|C^5W=okSZ(S!G!kS!T9iY7Bm7x+!c zwuBr^SY6`ZgltR53B1wxn~E)|IG8{U<KI+lNyXs=-oyM&#g<eYP2knf-&AZ##qk8* zHvLV-mQ*~Szze;<so0W=7Zdg(-ETU!q~j&lS^v$C=qG4(tiGDC!u}P0T<)R3Ju5C) zDRK{v2&x`_@xG&$R)|ORR(&bXjJAE5ZjYAzNvBK8Zi*Zy>}R`#rxxJ(0OP4l{;B#q z0NXx6wE+0^*ZO<5Uc`6l{&|%m=*M?rRR{d(0`T5I9ogyk%A$TZvxDJ>$;EuL+CrVl z$!c}`?)ysX5WGU72IcoO`38=k=XD-Ib;_qS2glYD%i2!h8Qc5{UjvOZC|ayGKVNR< z$uhlq-ly?nGEegf@ZVWH$QCTFDbc>nHv1SbPtT!SXfk<`os<O$M&G|Ax%e>4qiDH# z0#8-C+iiBQ2NOXuVD4zJOxI8O7yju6ywj{N{IGe><IQ8dOV&@R@?miHkSyY4w@ZG; z>-2lf+rKVb(f~>iSgkYCNk6ZU9?CtyZ%S28tp5OB!E6mqGr*tIom|J7ovj%ANI`Fe zS0|IZ85G1PC=|$?=gD@Pt`|U|?_wc4>B~XwP{elWKKl;{O?$j9psRHE0)4ff;uTb+ z{{pf!|2Aol7svp}_LzBOX?6;vmF#G>g8oMB`!m_oe6fWRzRCF>ibd~!A}-)`Rw-Sl zd8471`^lpAfY2yw(&%fGMn9S~`l&V|cZyLQ?_iez)gI&iq3Z*xg`qP>bI|a7ui%<- zJZH~N&nLwm!haV#jj=k##xew@v4<@SH2p)C#|iA7805$n=?)Ogq0aYr4Y#7<cn;X_ zCMr#@@=eS)SZ#fjpCvKN-AhgjH_CLk%GMC=VH*=XA0$*hMGc<)Gc|WLB>O%4Ro&9$ zuk>~$zm_<$Up{|~pv?6A$B*P8dx@e8`13N^@7d$tY&+*D=wPfeb!LMU^MR!omIE^y zWIx{7ekNzjeyz+Fe%0r*Sl%+S;(wu^2p(j5TH|}=agNhnbL$5FQ~d};NFXYO7E7MS z#k)$-jDN|~9~pMS{`QbQW$PFq=U?Pcuu17ZJnmAWpQq<!2iC^JW><73ewzRLIoqYO zJN}~(9{J<;d6&j7*)D%hmhv~jzVfe(m+>!)pX+3W!8~|-0sqcSCH%wFj~_9-?X=&l zfjarm_~i_Lg#hFn?7J`Dz);Ir=jAU9m;ZtF22p@+{wIE%FE@KY^>G2OM6Kb!k4xBg z;J=WPvjz+BQTz<APl4Wh+^6X`_)nfLq2ou0EJDru9GidNW%yq(8?pX<@rTJ8T8SU0 zU><?8UM|ufTWAetUj+EB($##m<^SD+8iK!LV3Pd-<oth7KmnEiiC^~XE!e{O<Nw6p z=X>@O{5Rh~SKqOdFEAVS2k33_bGd+q&kykfnAa(M0m~ZRyZ__;r&rhS<M<<3dC~QP zzli}eg`MP9+VpyaS^ml&C^34-`11;w+yL7vZdGSWD3@y*$Eb#ii=tKXEsdYq`vz*f zRvb3UH&C>M)X7_xxX-f%jJg|Om$D5s7QM#V;}in45kzhIF!3Hv7w~}A%@(7&j7&nT z&jbJztS<`H+c3Z}MvL?@d0xu1gs6me6O|Lu)N<p=-gP@$dEDw|x?3gAE~e`pK+8)Y zDap#}4dFm#q2&;Eq4LudT+(;%?qjfw4C5$-zcg%+vj#EGiGbr?6h~$TIb3Q^7PI^( zuuvboreR~JO)@K|KlucXryxcS?3`d>hfL!MR_Y8xlQ>%4oJnqR01b0^0Z*K#9bnNo zF`oV7Z5&NT`vi_GUNC9;2s_7QJ6In$1TWM5e){r)?7+AX5>v*p)Gb076tMZST)OEG zVBH671^*wYjY1c3P!1y|>eF+9J&*Ckr%L9nA$4eofma5=_W1rslI^AihwxoR&CRtl z`S>y0?bU(!dWmUtH3}T9z?@!Gs3p~yspciGS7$O&mv&-MWiY5vC5F?*%0-&@+1cd% z!`Wm4yO&)VT6?A_>%e~UK8s*D$bqs9=iZgkqCks)+?IpX6H~kTPESn%4&fkbua$jv zidcgH-pcd22UGO9wZb$|QYaiX9=7hmp#vyFE{UKG(3OyAGr>gxg$5^+XLOr_jf;AE zh83(KYfhL|c*0sgfd#*W^NTz-s%+31YAOwaP?HIIR>5&-t3o7SE5kCAvq}+Vw$`C2 z1`m?adgDh{POB$$%A_T~6+#!Pm+OtFiuoOEtn>=2oF|u;IRu>hP(4i4x!1$Qy81e! z5$KTYHpS6F-GQ)m!eYd@lX5dS3Zva9#16Dxh*?m=#di<FhS6QSUhPzGxOSFIt+86! zGsH-yRin|V1J1S>8(f=M`=^#x)0@;xN~X39>b4sS?}Z0UhK{5Kc@SO_gINg{u4*i_ z37$=$?J}liqTW2Tu?l5rnL$VAAI%mjEKfZuW8H2wgefM5vlLplivBA%T73*JTZN9L zZ?U6Jx7bh|)cM|ljt<}E136wpq~H{d&NyymTeVwGT95Xnga9cEB2^BU9kF8+DftYx zLFzifqKoqFdHM9kTi{EaW>mORJMgWlM5G2K>B<g(gqKRHs37U9H(E14=im4uGWZK2 z(S)3c&(9g;Gmg%bVc=30I4xDDd_SwE3~8TPQ!iyu=grnXsB2=e{lXg5vqq5{i18@- zPY$jP>U;k3P!WICQt^ly_-{1VfdidVH`Eg%dgl}dWgS$dh1JojP<VyXB4}x}ZAO?3 z+5iE2dDuYeUXFrU^-36in())Irf2Lzug$d<3c)+MLJD#x@7EurjNZdB*(0U&KEges zstr}xrP^`L?-FS-yvlm@{3E@hrBbCHTEYD2)`ujEcJ0IQt=ma)Y6I_%Z+@gcVq($W z)ze~Z`iv{KtpKI(<}CZ9TRDMz^X<YT<Qt<98s}NwDxnl*H208id_`U?7}T&=NXL-} zgCg`S4>dh<OXsc_$}IG)XpMO)J217-+=bH7q?ECIGw9J8HG;`5r-XvAoj972R@e%) z{YznE>4rfa-%f~O5Qc+p1=PX8s$+DIs%9M*oTAaWwtp#TYK=D2pq`1HvmXwzh-&yY z88n@id!jOixdCcaX~i#=y@pf5+A}5R#%`x#?+t@=q{v!$J{5GS$#D%|!}H0rxl8wm zp5SSDL-;M`l;H4ZA{iVrL+`;oPvnj&5E|tzT~7$_m85#zu2k=Za_2?vrz-M6s5!h} zby3sYUFCHg&2(yzVJxOLX7}Ev+51&=KAB`c%H<W8k#sn`y~ipz$rh9Mt08zt->(Lt zt;JBhVc3AsWW)x6p}Z|Puonz?a>UZ=GAInfCgE)YJ<|vXt{WG(2lyJ7v<wmzz(~0r z$YShP>0zmkC_<5%zMwP@;!=(4HD4MO`Vy1LHtU$>|HHDY_`%=UHIOfGB>)l>^Ie>- zwoAC<893Jnp1sDq-s~S0ktw^nd>`xgP!Eiddk=vdGo=*QoVQ9to=2fg{w>~sN7Dyx z!Jo&t!s-HJ0k%V~3*PjV_qSk)ONQ3m+^zVaN)Nn{gyA^M?6iz{Xgb(;ngcJ0W(#YA z!gY|U0a^+uD0)bdBE%Da#Ct0MfE&4zJ{6q{=G^RLfx{k^#-&uZ3X|M{XI{NT+Y>$1 zlMo}4jUI8l2K@=Q@n15yg9fo)JSX-@6O}(S8SRG<)DkfA&+-9C2D^)fcP=Zp>&qq6 zwjJ=#EVGCCb}O}9S^`3K0yWgv(}Y&Z54hd*A9Y+6!vWlC%=R%{HQTYPg|PKK0<%Ne z02NV1BnA-a7gK^eak~Ucd+5;9x8_|$5V_lzo2{n!L%Jc`b-Y!njPKd1sQauMd*UTS z89D2C3%QJEK<MNNuIMT2V%+iRcudUcz-^0ZC1q5NeY#zaVw%?dspB~oPFTL%bltnW z&(urr7{&!%{GW6O*SDF~swv2h=Yj&Ok49X8H?Bw@UOE(UHgCXnOpk(9L&St~SsI(B zdi=Hd2Ut-qTy_*o7DZx3W)#`H1rv&CA%Ay8YDWO5o?6itC9O`&jt4BFC{+{FPYb9n zv`FDH_U5NXc0HngP_r>QTcj4t@fK<*tJY&Q+HT<PIMj#`<+|Z!Yr9jgcG?lvb#zvY zvQdb12goQpWIy(fg%~Io8X;ga7gh{OyxSLHoC(bhcHCkE^`Ru4<1bKgW0@M3)%2}V zg#j#>7wF2geL{P)GzTqfT420#RY~mW+e*0z?94<YuqUFa=KgHyo2l)L#M5%RP99(Z zSP`%MOSUiPKKYNrWexCD_mD%_Iw9@>BF@`*|A4-5|KK-Vts4ku{Db=?Y{Wk_BA_3t zYF_0ARego*8k#Mnc7*%6|4bb+gnmOnGY0F6fps&+cNK)QP^q8?laPKj(^sq`Vwi|H z`=ExyQdhy56YIe2(nnT^2Nr6+OIJ_}tJDG0<zxc)=OOL6J6%wQDuis1gn%2}$pWgb zFoV2A$W4ThMh*gG>%Isu+J8^B$}BKfPNAsr*|@fDHDghA3H=Qoq`#A7zZ*p0h0vek z$Uwg{huoN5D&Fs+O9=x7ouCX7ZUEf5&LJQ&H^O3CP!8<^-vMzV3K2YN{a~x>6g$i| zt6(>ZrI{``DeNXj8UKtf%0Ksf6Qdl68Wd<1Uh<|0KH6&PsOb{*MkB(Ls>bwmTpWeO zayYWwo03EI+mv^=#HpbUs`^nZEa#^lE!CZ>f~uepVUO4|Uuq7oc(_<XEb<ua5=Lc# zW|zA?j1Zbg-BZf2o4IWHL!Dmx_7O-)fmHc~5w5yOiU#h3Q|&fN4-!lyKIw=49%Z7# zT&Q}&*jaiMHLRI2rIFK`*Hll>6hh+;fZOWuQ2U#9+N~ik77XOBczE^^BOjE~q#EGQ zbjoMY|75O}-9S7LC;lqU9BM^~v;*os6{Qrq8QL1I@ZHtq!{Y;`(HZ<pPO{OhTFFTE zX;#Lu6O%Bg9LAAl8usq(1hZq`nm-iZg0yS2gSblqyWtbf3PkEuw@mhaVOcRr#uKRs zLZJyeLQbVmE#&+fqz;CK%C2W%SdpN(Q0nkHcy(*~)ESwY0oQr;ETC@2Y-I>_ghJyh zRNai<)GVqqdQ0o5&QOKKSxgkJ`41^z7DU8Bna|DK%|cG`bW7K<Pd$wmcVhH&JKZUi zK-G2^`^IKY#D$KkqfK-I&gL|#t^w8g*E{wGY*|fbUJnr~;~E=i1)D-H)SalqOS+cT z=wqX)%&pr!rAGH1Y#((-Yq?X@7^>Z-P#LHb{a@*|U}=knZLR7nBP!f%8PloNiwrF{ zlvK9z5ahSzD~Q@9!s31jK0jOJ+`Sg~hDH3e+&n;@Exf$WYN~=iP1f$;LskE2oGpeg z5fobee<8(`IokwI;uZ|NF$DKuuHY)mm_6{IL~{7vWCI_<;|~>Ju>$O+bs*OHj6KQ) z@6Z-IudTZgnSpA9Cho0Rhc4Jd?+no6mtlYc>^jV4APK03Br&+4=;i3A`2IT|k-vj5 z%%8WAq=1S45T2a=4e8~@08rW+F1tXyNyMz)=`o>7&sa$r=hC8Qokk^dj220rRF+$Z zF7Q?;O1Bech`98?t|TE{CdQ29Y_QCE(K&<{fi8LuzTOd3qPBH(ruGDt|1lkj35At= zOdE~I;mp`=aREqhex$H|boL?H3b)M^ZXm(}S?@SiZwLllunHR!2&g0^uzN^WG=i^M zg$=D0-PTRsF7A>DB!*U+kCEnB;A{%{Wgt%YkLG7#wT=3?e$@yy%N{89U3WTl*n$we zpc4f0+%M&otjm6`WHlm9CzrFD(<mel>u4NpcbFaxCGAk82^nW*MIix8dUANhvJI?a zKH_4Im$)vtnCn80KiV!WiLA}$m$(|SGj*5fZuUycL+zbLs=t5{&PJn<B(%^~tf{OO z9JT$UZ{ko3)ci_T0}j6QUC!!lJ5WeIb#Dh@a_cdPs4c0uK%vSpT-wl*#Csb(<km)S zgBMe`YW3cRF3w9m8yv+`PCbu<5j6c;lBPm>qhrW*sNM!I_($D>4<<Ur=piyhIe~R; zAVYCs`V*=Mz)p{=?zjVW#Zy16$3Feg7J+3^crfa;kv=ER;=@(4El!GsZv^H#VsC-L z3vxWQv@k}n{sebYyn~N$h%pW>8Y6epyQ22B-Z2#x&=)y&;`Q{(WB^}yJxu_yS8F-m z`W!JTp`ACd?t_vD21}R2L!vl)qc_P31@U;H9TGP<YC{CH92tvdvysukq8JV`H3Vzm zXgf>yQ&x$40#hDTr%X6SaTVZ5iYo$FY8G%4VUa=_H&0Dqzv3_KmdNxLDjyL%jB22O z3|m%Ss!3;)(3Ff7B1iIs$v+5a@GEoB!0$pPORmv4cA7D6p;Anb!M%7em1|S+(sAW; z6tsZ0{Mle+5es4#{eMiJQ{<H5Icu~K*{PnW6b^oEpT>S*y^MTjMMJtUP*fZCQ(yGB z5Erld)x)gb{58W~i-p%BqlTi|O*gc#c8`nXznIlx5wr(g^!=F7)P3naRUGVk&&rc4 zlF6qT>=k;cCu<ML$DQkQlEJ4;tyeH3Z$;N*^~uC~=~**=PEQ?LVw>XF=E{q%CB#r( zGU(aTzC0eqp~adp*V}2$Uv5AgeLPMSy6}KtuNvo;!Ua&LO%G=stMj9ivyOG0k6|hm zBtM?DW^my#s2~exz|-L7t_jC9G)&YKhGSp|W9~K^<sPxND<1<RJixFM7;_s~jBMOm z*$M1h`cpZc@52sb6WDywnWEQ2#JbdqO&U@Oudy`>n`c>CLzyEMzpIomAxtA=r+T{) zv}kQT%0sLz@5{f1wno7)=79#VkO~1+YZ*C7lr)GF1xRs2nFna_N#VAQMNIBhW)NPh zD!8HN>~Q*aVw}>e{Yp<GJ2P44cd<;K*YK!X`Pn@)C`t!8BBERpUn>xV4m!~sd`)G- zA`xXB8<CxJ6rJSqM+m%r8ADg#>pY#*(=B0^Ziqq+GfC@3TP=)*f$3Ygd!!XfYEUgI z%!{w9Um4K19-*{S4!Y6|BT=2S0t<m|jY6zsMU_B9-tHKoN+AVy+O{ZC;4oIJy%j+e zCxm8lwdvG)0tn+7&uPqHVOIIOIAn&T647>y%H8_;%)`SXFb2K4iaUwO7~k$Xsi`E` zrk)bAF3s^!g1x_X!KXlxY3X6C$p(~HQSU;@u_{i5a@%g9fUH-BJ2}s1KUi5G^@P|) zIb1#O)0mZyD(yvG^K_F7d<S}h%^!1v;m=CoN!K9wjpa(eLr4s?!9Q>$hTpY$hCekD z$er4A9G|2?EcpS%qEhV3K|9&ZsPg4#Ax=pU$PhIRp&D571Ikb@H;Hluffw|;eP>kk z>NSDdxpo)$Y)JT$(Mi|6?L?}DF@4);BCZ_a{_s`|fll$ZYCtj<1d}9lcq$^|q6--! zAK^BEkX^jAfqzxEYWyms7t=}DKTK8C85bk=U5%@tUpY=A-!{!jfe4Cbjd!BkwGGl7 z;TR`eNCyHmUU8p?&}p5_)O`)BlOY_pm5xG6mWQH~@)&poIZ{v0YoRG}v;`pDe~~^W z&&!<M2#n$K-()rcm88}T5iENYI-l{x223KWm{!s}pwB)h=))BVySzi%Hqb#vhTDmI za+FhbH(Eqt3@WU?9>U8iKFoNg1V#yL9CB$@+@|19QZf-7lF?J*hb?Ro!16t&Ygo8n zAl1nRIhs?Kn>k0W)jT$|#@M|jOpTpy)_YL7P&*%=yg^RK6mS-GtA6qZG^h~hn1w*0 za51=YZq#r~C$m1!*86m)#C=dW(2j3AIi3Sdgmfq6d|2L%Ds&x;TQO@Ppo98Ht_sU! z1-l$$WJpwXC!I(mRx<k$@Uf;$cCjdRiL<Tl)mDL!1n!9KdE_5fNZQ+c;Pl^$^}r?Z zFasaOXacpz<um5Bk(IeSG!14=R9U_tD5IJ@mNKW3B7zaPXi)T3jaC?7+K;eFbCZsx z{MY3yQtbE=ABEB|sGu}YtH`<5s2Ae9oBa{P{}?&t&aKsVGW8IylAn&;-B)CDFa()X z`gtz)9L3m_Q8T?7g6_jS7EZMuc|IVm?7=I!{;fG*N}ta6+SL;-lE@OBjaqDT586IA zg?;Ysf#-0j=fmU4pTj%RwLL|y1W9$!qu}j?ElAOiM^R28XJ_!pcY0N8zEn0FFw_Q6 zMFj|=>bAaC#%cl`gZOUOT;n4TyV(a^r+8f1JvEc;BP9DkHT(Ob`pWhQ@o1g?P!0&a zo^iNNf&{Erc!@6>OT7yxswB(zQ}}%njThPDW4cS%^E74;dmMr(!C!z8^tH_*?oMfw z3W^zYa$k_QzHB%0SfL+HZS{bi5|XKBD^;=Ui=|b^3Um5M0!p@;QYxPE_8!>T!Z%`< z52~@^v0im7uEqe7sB}?b&~k-kn)`ZHLZ-6djIGM0*UoL2%vlx*duJlW0&cgUOf)l# z%;v1!3*G`_UY_kPePO4ia=WyNCAu7FIR-XF|IR&DIa7=c%ok#VKtYhO?y(O^c)>)n z4|pVLnLg(6{7be}Bj^kxIU9Dicu4ke*%y$VOddpnuRP6=aHw3i3FzY-j;Z_PQFWGS z^#qTxe<KYsdEdxmS5u%blEq5`n~6eV*nGNHN`)=HTmord?##u;@xXTiFK*{?zJb$d zo<70j+a*#H^&x5C;=^LiQLeEmBMHwRvPHH_=XthS<Gb*}P0FHE3ZHjPYPo}2-B*S5 zqG>})uiPnoTP+t85IL9hX6telUCN;<y&>tqx@!|xD9EJ%(oI!5!pjwEwr`-@0f&{2 zIObxlgNJq~Mg$%d=Fp!8X*>+FBhZDZ(=ZQ;ij}+(j*0d-Gtgv<bPLRZN{>6hpnr(M zm2a2<z%s=*b@z|iI)NAIz;vBpsm}>|a-TMvMZ5zC8opOpwPKGpX=}FL(J+c4w7Uf{ zOF7a!T8jUx1tU`8;3)jnl;6GOy~5bE#Y7?Mp<3^!BXJ5=2a`B%CQ(Lz)rpQY4^plG z*hbsjfyp|14XUE*ojX3F>LNK1wVqyDkhQo&qw+6Q-oI31=KjM|;L@~`Ft{QYLFpm5 zCa2*Fy8u{!u&l}sCt@+x<BPfjVdj}|zwrs$TPX{qw2~$~kt)(+Md~xUrLurPuUD?I zoNP}-1K2VzPK}?PR74wy*;r7Y9?w*9@`yH&nPuR%f?v!->@g0Gba8sYE8q=evt%dg z-6l_R_4MdGQp4mF*+)MP>uHxgeaYdZ+M+A^a1Q&`9<On;1G-{A-Rf>-YG3Ke>t)dZ z9zHKC$~YO2n#U>VH_z-^pjd2*Zn_*R=xe{!bu5gCr)ISK-iI&`v^WnIGf;H`EF{wj z(qF<7DE)S4#a;n}fu}jCCJ0t}R|e}j>a5rz?x^#@5>FJ2ihM62oNz90oAy>U;ymeR z6gtutk`9%QQ>yG|{L0O4^o#pXJoYMAdJNzg+qgS^dkl<_p56k9eYr%nBL&-Zq_XjO zI*$~#YmB21qGPPEBb!CLv?-NE;FU~m?TRaz!Xj;PLwB_Qo~U8%J9*o)eb?H?W1wsd z3r7O|R-EUiJuf+%u9F9NN-2As{+%TI-5`Q6*J|^Emv|vDdj}bE8GN6j+jY#+75BU7 zQo<zrefGpUz_fb_0oQBA+e`2xcwv;yGCF_U?7k<vMV#zo_J~tyP{X~%N(2&o?4Ur$ z408GwANqk&j1Ab`r=<ts36N)cDZ`x^4Aw2e?sZUKgnWC4RglDU)q`l8rStTA#;#V2 zRf%(*GK?@E!8AcKvA3SotgCvXzGd%9c}B;}ujRt9;o&EBeBAnwu<Wg_Y`w_l>3;h5 z@BNm)&jtAZ3E1M_v4*#nZehn)+3ta1IF*i%ubwQ*-YcWI8L1Z0&zC90#HYH72h2c- zR0)F3k5hD+CXZ~Ss@O2MnU0g@?w3PVTk84zXg81I>-9p^tI{24&R*1Ya`u9|xnPmi zcF8RDD$_8AgeSnf2n$xgz4k5sAK!G@Ggge#7-88O$Wbx)1Z*jVrUYe=$N`gHbCF^^ ziW+E0FGto8dzDbf!`{bC>OO=?KNTM=UF_9+=CWJ9eQRi6J{ng+#h%LEnjDPZ?2=V_ z{%4v%MYM^L6nwL`rvxYKpYi5V+3b)9;dt_WC+-SNZ{N))lmGkpPVC`)ylB7%e3M|J z`p@VRl4Z~j#eNh>fJPZZDT`M>^Yk+$3T$@pp5aGedx_*^`2WP<M2AEaxX!Al$JC!9 zJ`il3q^@xIqm9xep~*M-#6*#cf5>Z&pX3E2Zdp}EgvT8F8c~`Gn$yL#SXb)OiKh&4 z&yGg&qA`!jqBw!JCoBd~jq+L2kH9U_^A;YIO#grK-mSTf99a<lGy8l()WxzN-EH;^ zZI4?adnY>Pg+Ws#H;*ZjLsD+LfBlz<OI0Qci2|xn7w_ktINOp)Ad$%X4gV;1$HG15 z<<%#s#8_ZDee<|kudrZ5?N6<MnV!Akw!)MTQg~_3dkkY6AO)L*Js6N+1E9V)zc_7n zU$(`({y1Y_2=p`|m^(ACwgT=A#lKsl;V^&ybPJpjc5uVr4LB+_+QcVJ*AO%A^wg+K z_ubcS#MV`NWWiShxQY`*R8t0IZTezCsb*)6$q%kJNt{nh6muFZFp$$9Vr|^ug6yEm zHJLH(X}$%%-EN@o)(wmqd1haV!QdyT5@miG>cF^4<X6QugoHIb6=<a(HUpGkzHTYO zuHVC{z=o_`-}!8Yzavk{`em(VtZO`4xtc`-+#V^AQ7kM;4ZTdl0a;7}%v<d<DGZm+ zDD0@@6?Fq3)T%%9RDT^Q8D13Id`nAm76m{F3{n+Ug3yrqR#o)sgEVSw!rMCD8?|-{ zp6L$pc#bECfOta@l5|<#wMx2ATnwLo#n>c7T(+Ct*UAQEF5x9Z_+gLbvq#9HsICzY zHQ?uUv9elqX}_^vok*`s!d+rXphHcbZQ(<wVoMBZb_l-{618yPr3n***R1XDpH_e; z2vfaQ+>x<T`J{%G3s;9$Sc$os@B+@o4`2<Tir>{1F?1DA={LpG;rv5dCz;qYFNY)Y z{uY7r6z^b?o``ppz)c9n=!}qrw`vkRUmVqQEKVmFx`)Ptdai!an1weBgze6bFT}5v z%K@|V=*#Zl+NGN&V0EJRqQ>wksjAH!RexfPkj4XnZ5TQaHD9!s{8`IyxTVT{#sH)V zySH<q>pt{F<wJjXhhFr0y8s{k&B_#@n1dm;RB)ghFB(4ek9zEzx}1qR^#>80YwSl! z;Rwfvc7hOIhY-2O@7K2ElNK;E)p1w^`7%A)a0IJnwxpp7&<fmq#6AU|t8UiTLezm> z2aVA6Ct^lB{r(!M5>TS)6V}Wv0R3B|Zy<|7O~k3_xOqJ8chr2KT}B>lDMFU0GsShn znp4!`;(B?^7jgN35n~E;7@fNIl|!K_;_atUdc85L2p3xtdV5!{aRjajdg&c1DOlP` zaW12p^{UAkTrmex7)yeGzz`?~sdz!H<cWZ_KdyhOupvacv%QtL<IO$6GqY&KDB!p~ z9Hil7cNeQL{8u@;GBW-1eu-R7JU4S{nY4lYfO&BQLaECy&ycjn<P_ZsdKAF3t1fd1 zhVgc_hBtUk9K|B0n&R%$Co1IxfgwdiP6AG))jyerGRrQbfd;O;ud`WGN+d4Ap&5>0 zoxP)Xq=y$1MkFKyDAeN*;6GHU0F9T7hBI`(VfJ<bHdvsAwm0P2@FiwfD(T0)=FxB? zOP$d`;)zZyYO&m>sk{~cS8q(X{EyDlhmRK^_u%<;{Ktr0{SuuW_yDRBO3*LL_mIjc z%@ESb*W-te+|ZWS-f=`?c^YvNj^bXLjby$wDNbNy+}1a8d>0gG!i+q70tGj=XU6Hw z7J7o9yse&yL`OPs<r_AX!RNn&sv=C?+wRtn3BGpN*S(ZS7sY*V=XM^>>u;Y6#^b&1 zgFY}=qkk92y|Fuo*%uQneBb3?#p>%Yo0s%Mb@O1XQ|=zaL%!xIZqmB0L0GV=nC2XB z9pm?pn<M0GooF6Dpr%BK<8zd+5xFJ@)U~O17|fFx#+IIeQ_J4ofJhkHBgspX*ESNC zp545!vb4W|t^6y0%2F?7k!Q1#9JM+ztKXPlIh%wpt5+3x(?xPZ11lO;N;D*GlUD_V zKpDZ6dL9Q!vC8<sxpgp3-BoggCtUv$k2`PDQX9?ji@Z8KpZ)|AUw_5UYc{tp8Dq6a zxbh``q*h~te6b0e6D<71Z_=f2eXUJ{#Y~_kD$U8P4;Jspha9@cVxxQ*&lrX{aEVFB zl#Nf&woK$vts;Wk(~Yvd0aK)`)&_f0YX<~&HZdA2IGS_S^cEA+_-#uvVhT#yq9h=h z8u?FW5(0%2@v;rALR?5GhZ8&&t>v72a%6w2-3^ncQiDGm-g2=x#TFI1X~erf7Q$mO z*z#JoDb*g|Zr<YUy@dO#rOMA?^z{zRA{aXe8SP(HRM89=w6vJ-w87wN+ykD?M+UUU z1tc?WD7t+ag}9`Ujo6c_G5XZU`6$EH5^hW~cF0|2GWrb-VV>P>Ah;Jnaftz`m=$51 z=km1qyI#~_1e?`zdXQeds5M2mfmS9Fnnvj8T{WpqXX$i{=nkY5h$jkPKB|-FPUPDI zv}^cv;B2HVJU@=Dx_6LflEc@HH;zg7hr&eTDM_N{pzCH7cS2E3OTB)xhV;~t+t;av z2I}JHU1i<`Xy0SjfP6M|&_a#tq~AAC(UcLyB^`0#|8|oEk#$<*Hzk**x1eDe!4f&T zx2;PTTvH~^eK_H&a72B6TNe|^w(7#2l|q59G9H}rowkvvax;DSct^p(T8s>gyuqXt zmLS$J+jj?jcucg_2A_as6$w)~0?I8kkk;rJ$X%oC5nW1d*}x&WS^+^Ak!8r~P?y6j z6&A1QuqfL0X6^$<@t5a6Hz!gX@HZ8s9kyYn5QROGFv23iAq*@hnwOF;rs}~H@ZxJ) zBiUB*gbCGz>S0w3)t?G*OdrHpy;0OrhEycBl2}{R1aWR(A0RcFf|Q#b@g1fVHb9hH zIbd?{Ag^^kZoX}BzB&w4_&jqebyLY8uw55sBI7|I_r;x(4(mEYWacrmYb-;gpxpu4 z*|wTp6S=m!qk(7FbilHQ-wX*y_gq6>i^@<wPCRunRjBH(*QXk%njvkbF{JL}Wbyg~ zni$nJppCHg$a|-dx?7_ILmajggEqm;t?Igh0j?VubPtb;$IqlrMRw>?DSpym6Ehzz zkXLqSP}2a$Pv6kQhrTXxTg0kMxmH9+GZWlGnN_2(C=}N3j2T4L3k7AJZ~VSK=vAnB z?hz4&aQhmV;2Gm-*nA+42}d#d=2t0XY$N*_h|C#M%CIXEco)73<`BdkeMH%brMzG) z*WbS{zijs~*cxOaj<nvKfwAm_lhgC(<zl&cxcYYah(mTB^~{_9SsxCB{kEh#sAF5) z(}wsw^l2cB`0<85)}^;0;5Z*$&pn^C^u$*UbO}<x7I$k^i1X&t(`LPWI6oeis+|ws z3&S5S%ui4(ftSd(z=C1?HI$50eVu+_pl9(QJ(R>3#rDR-`#8io*wEICAAt4T-=x?q z0bjj`SvR}cM=;@cU;eq;J#35P<qOX*n<wxv1&)3Iq+erAu8d#=LW@tUuZ5YfQ(b|h zg|0rWzRWJ*|JVb!n$=^kN!C5JeSA_xt2WPQqsEI(SYAXJ?Htw|B2_0iGS_r$sz9|V z&@~82UO?;xPF{(L7D|`(V@A#Ma3{M&eMvk{eJ(=OdL<B=Ag<x5C;GM?(iA8YmAEX& zp;*;qs{qwCVGkbU=wIOfRFfE$(lJYT(A&%ev+McyGrnT=V5YHonLzai@_A53uox3x zJH1$pz?+YCEhG26q|cVo=H@lS#Dl?|TvNQ+Tsl-mCG=O$QNbct#TcN%)aZ7Vx`ik+ zUM{>K4bioQj`mwdoFtSYd+^&=v+>Gdw+@nK6_VU$bU=ev^!^E=X7<9xQV&=)LwMhP zd_xmsHArUjksz5Sp?TzhmQ8groAUrxm?4wQF0?s=CDDGqctQAL-Wy-Eg{c)6RGZCQ z1hk=fHZ(Ux^L_3+1p@KVGt&^Dbj<klGI0vOy8ZX+xLNIx{IFX<YYg+f;K!3b?AKY% z5S8B(ITO@~G8%+B*V@2%?7=2yrX>ni;dEb8<O|6bw3bc;xSng)$azs4J$v^Kyf}AA zj<UCJ9`=9j;L+R%Jz@5QD*2{TM=zGfFa~W5kL&pc%Nk^v=|!;5`=?p#jLq`XfqLC5 z{*v=|HF^lA<H7%k#dp2lAIO9%HC389$LPmGuy3{m2ODV|JY=vQA%Do{WP}3N@uuJU z+vmz%<1S^~L{@jJRxX_;hdd{8#!#3-jGQ}ooVu*$cpIN|meI?nQD>X6pmw>hSj_QK zvw}m?i;7$7L2xj}+vYC%!W(D`PliPRR1AN1Myofi(VR*U0m5T7M4yu}+9BbgD;mW4 zx03e|cJ|!ibHAhypKHDG1s!__VjmxtCd$JWk2IgSvK?ziyL-Od4(AJR<DLdfq||8y zT^yRV=c-qrL=Xg97-G2i29CJVwl`RG3>s7I!i-5z2!mJ8#Z6;^Wn9<SGl%VM{KTc` zAx3dK16oKm3YZNr%18nxabi&%0BlSMw<z+}6agr1l*YLQBsD#~2z7({$AajJvuw|f zRo^26=*><2$23Eu!`3*@Dej6qG{SCe@fKgt)78iDA3Y8%YITosT|zzM%Sz&5h8MNM zlgCaqX7I>#&J0Y(h#Ed3z<^X^FY?j}+d2XPt1$IABb=NB|F}57Ut%z)$8kojF45Pb zbPr)uTE#mMzG$HiwjYZ4im6<Tzt<Lmo<Pbp&@hPdU75Zvqh|&JqoEZomaihr9j`(m zm(ZY4dWNJdy`~%wg{rI|zh@Y*Q~`^xLvuHJ2BAcQs26$$zzL1^y<3a9NA1n09Mg~5 z?~Xy*EHjYWgHTczRqg{bSqVc7xA~%2T#nfgcbOQDurSnAgr=!TzeKsGj{O3edN+Yl z0v5J>@SEJ#)%{*ha49egoC!`E3QS&zC<UgO*#w;g!1%e43(HP&)!|ZA@3Zm+NTP^m z@)1VU{1!jNn5uCN%?;2PcCy%q*22ZtDd&+;8+<-R1ia%TDysRLhps$Dv)#~24!lT0 zYbd(OZ8H=kB|*uw1eYw=Z2K;og!Ec&$iysVN#ud%#vvfW=%dM9Lp`hTQl5(i=sg4A zbi2~4a$}1TR<gfS*c9=(>otn>(wa*DCKsBiGQ8YaJL{=m4-SD!T`Z7}t=GiV%k@O* zSH9zIBZIXvJ@KnzCOu($F=L*JA3Z)n%J9-b3jXtOgGiUm1}`w-kW2xC;i>XvrLfi7 z8+L?vKG!4hSHWat!Vc~5;-y7PKkb%`dmk;PzSV!ds+NR}`E6;3u`wOp&MdsSWfS;D zAH$Q@f;#q*Z1e<>YgN1kAxWa3TcRX5-YmB*6mC~)NqkYWLd97o@fL=E%t^!$`2-V2 zn1^r=am+hNlF?{tcKcuI=F%kHt1%kPDB;XJ?`Rvpu<&0~oE0gCoFcDKGythd7Ef{V zSR_7BELGh)_F_xP;jR+F39)u?dMsUJoHxKYzjDTDJ!u7Wb3|;#k?baoGrO?wd!F~i z(76ZTh!E#=5{s@Vpm6F+35zgoi$6la-eIamnPNN%W;-$OPo4x27u%cXnZOdcnJgDN zpMx2Hc~K-vqgc9%xMGLc)e}smKa7F}vk9T(v&Y2XYt{%ag4#`Z6V?t*lHuml$jN5$ zvNFz-0cuZ|tnH`DL^7Am0Z}0$H?9yx9&)TGPj#<+n{qp7LMNPO?f@&^_SuGxwUn}( zdNqM4EheTs4BUPz$p*E)T0>2zTjdQs-URGBUg0iUv`yfb#i~KGRa_p#TT^Xn?HpCy zR@l?!0w*q4+G-Y&o%L3xS0m$O1byXDO@$$Lk_x;)WE+wgh*^5D)VCw!fSEg``>aoD zHb9-^J)BdU{BZUUVAL%daNsYX?AZ#SwjX;-%7Hml!q+#5G&SSW7(uHa#0Hl0=0&k| z>kQ8s&dmMcL#Vf`5>|COd)|xz+H`o@vqAmknBWE!6i4U<v#d~2WxIS@E}<TYaT|r& z#mu6@KkY(G`oWkR--9ta0>{h5Q{8YOLTyBJ>T2G&ZoBK@Pso_&d8;`*`o2?sv_a*E z)F{ycDEi}KJTwU^C{v9!pApsRq)Z}ilr!#m)g?E6sd){LvtS6IzH6^oW)J`Xps4`@ z74@)0)s8;}2GZ9jb%go_om**v;?`59;YswQ??beXIOCfpl)51)AQvJzCh`FnKVkuo zgiUp74%K=!=e+S57jL#B%3Y5<AczE3XQKmUw(G)3gM^n-{FuNjmi%4{bOd4PH<p>- zfpXRFrOY$Emm&iMCl3q3+<1=biiit(BwVi?!OML>SK4)dY9x4jzAA1^7tvG^VZanU z>03HbARc`iP0!m#E=1L7lN<$vkSKfX1_^@N*`RGf98TotrgeT!pr>MyoZOty7&&Cl zdM(Zy5q)M-8>)EuEz?jytJR$m%P`qF^9EE_xZpdRS7iicIc*GrFedUU+mvT)^Sx2i zcp=<kh9iN-`e+8|7)==naV9riqr7s1e%gp=6=Kb}zb6LErjz>I2S<|U96t~)t?)P% zJ;Ku9($y~1GN%~=oP0@cn3vsy=-PBfK>u;zbWFqsiZ!a;5s_u(ej_Kl-&C<zKciAT zZRd30vs+3bn;@D14zB>slbZ2?!_=TGzFz#c-=B-4|Ewx-CogUeY9~KA6YHu8K~9iQ zo*fmxf>Q|_Kx6X(Wjk6%TSBUdDnv^w>~bOmnVUTEs*w6^;m5#ib7swh#`ncbVuX7F z9K<A(M#uQ!h!$=xFs1CG7*~W{#{sdN#r=FpcEq|1LZ}%b2t+3Wrsr)*Va;5^#6WJs zirBt)da^JKPeyj<7Sz*T1Uq_2j~vreE~@-;IYqjhHRp)v;8@bx#lKbuGjMtViR$o3 z6r6QorpFjn9g%m;2N#eui7BYj2;HZ*<O7epg-m}$`M3>fM+4{;B%6QvaW4K{tj~Ki z3WDRB`29k(59ht;$uDo<ztle_Ho&Q>LPs_PJZbQQfy6kR;^0z-({!Hk&?ch?Z1R6& zr^dYLXKGAu6cQIb9TnFxMSqhfW7))=G}z3rVZuXe2qLh7MdC>0(q+fX%29Fa?C?oR zs=^?Hg*L06WdpNL@gEm(_{-jA+4RPOzNq;9$A1I@?jzxv8i6=$R>XB&BW~O&dQghw z9IO|A3Iy#VhCqrW4u`q9t|{LV2UTCHnOtv!Y91BNvZ$TPFo@Z+mjOnF5VKkxXZPeY z!F^U(i9%7sj*34gOg1hoNmGIPy*7-B@u@vb43CPZ3=@U=MP5ns)I6J%*eD^4ksrRe zCuemV^fPG9pv&~Ae568@ZmJid{wlP|K(-F?aNBjJigC(pNZwU>FbU=bAIiv4g7XVl zzgAO)p(RmOzH@U(KV<U`{-}zH9NU{Q@Nf_iRnH)pL8Sn`m!xCw>;2PVbu1*LEU_P0 zfAaj}P%Pkx7)BAZ;&611D}0xZc_LVJMPl4QX!w4T3dHlRENwg26m*JkbN~4;$oC4L zxHb2PDG3D|eudnoa-#rXth#2_hJRTB$V_OXSNKz)O;wt6w0Uw!cu5exQtxKLV`MOy z=%Ij$3;3;}2K5^=s!NT_;&+6f1oNwUcME?JMLe%7%6(nS{mp?!&~Iks8k@DiTIFse zg3SYs#9gCa4(vuztuKc*O+Lf$m8F0xw$H@XL;(kK`&@k4>=daApbPqY+O$t(j*s?3 zIY}Z$+q39(#iG}B7S+@9<hg1<Ely6E=$b6>1@jJb1s}6MSwaNBiygz(Lb}DEF3^kX zk<{Z!HA;rER0~n#7}D5Fm<uJ8NgswuB6{$RY%^ue7_566)i*62E3r~>RPf4{;Cgz1 z`#Tu|fBunze7>x47~PCRC3|b4*XOg9K^%UDuB(pZvx$MS!F)E6cBg3smDjI{dZIvb zYMLgHw`Sy)?@eJCMh3b=nK7m?VVY+EsE$yvDcHi(gc-d?^ghEQ_~Ap!8v9!OAhD2B zu9(Ff0x}qEJDiUMd2ai|3-wCC3W{F<nAPU2w$EbGMwyM`$geq!{NgW<{ETjoR79^O zTgc2D><UWTGFbT|&hG=$(u666m{mCTfVGD(_T$d95^KDK7Yv389o^AoB`)CO0zpC8 zY;0b6l7uCxD|fqHJ?|b0!m%h0!p8_>ST~{a0d>&1JH$4nXi*}qU1%-BFBW7-H8OD0 z`Yjl%vL%E6ulaPd2(=UESY5eZL6Bg$x8X0~6vzq7gYG{5#!7@{Ev8WB%c+52AX-9I z2Z1aVXH@=1^CRSouuL4PGo%4oA(?>aJE(i3jnCc&(|ieE7U^ao;=VWTI{h*u4n!Zd zZyd-mO<&`0&J&YJAiMQAUdRwnao88za_42ZDW(9|uM{X}^Y}>y{xxZQ*f}(llXntN zy5Lp}jl{L=#}P|@9o5*CFH=DV$_)hj!5?qVMD#$GK9Kk}uALBwNjg#0POWM(fyup= zwmk|YM6JzQCzCyW>#4ItBR1(cGPHRI$vw7auiJ}kT}<6+Y}a=?#~CI>AKU31w~Lj{ za6xxiT-A4F0@RIN-r5-sP+v;_Hc@vr|62BMn~gmB#6eQZhO^4UUEHe~m%i3qUrm88 z(9;1Bdh#?t#9MBHrX(V2-Y6{8(skk<&6HHTjTY^cIccnosH>g9cWgZ?#3S?AjEKBs z6HH0w-Kv`utYOd<hYU#~xkZz7Uvja2jz$4#6uf`#L>UPTf67MrtjftM1O*~8d-Zk~ z_AEWSPzNa~GgxAC^Bu-Hnb77yhweNwJD(4$h8-(hV-@O4rwSDWDRlzMAhP}}_?q|+ z)Da3?N+|L3w)36DoyN_g)iKk!^MS(Arn};CR(Al;zpB~7CPp8F-d3Z$dp#lxg6Tou ztqvS&%8v7uGq|UoD`f6r_VcxNG<i6>Y*;7<jO#m4zyAQU227RiO!W%9=IjlBJ*+mz z#XBgYS3^jVy;XKUFLY!&c^2rj0jid=ev(s}AIho0Rd;BhfC4%e6dw)>;*(%U0E1$h zB@McD;U7AOV07(Z_!4GB4-H0O3iCuSO*KyNOPeO7Q57>jw+ke|q)S_Ar?E<dLpZ$l z9{b0)AkyhTcSG3|y{ijd3y(csRglLdQLGv6@uQ}GRSkZ)=&o^l15eqm)FGx|DzaMV zC&WGrl_3(N7)6^8)4CdV5=dr~m|uW9M(c^_K=z~dLI{DVp^bv;HFTQQ#NfbY?TgLs zR2*qM1~>>EF6_u%?{}y3asxw8vCI>d5O&<F($o5%oH{q#d#u_h?YC58CFm?HAl{;% zp*m4WM^uiT1#ci&-s7uteqDk|Rq_01u({E&(HFaX-fjN-To5t~+#>WEd#+2@d&701 zcUd}%W=0{oJAA(!sfN-^X<@NnMzzNN|LVTLUNiTltG~~hAmJJnx7n7|a8vUA$M;M4 zAFa&iIl$HiM#Ej`U?A$!vPn?C+5L>O5m9cCfTAroyMjUxLYB0ab;3~J9^pCL)rm6H zPXf7Isb#4wokzn3!~t2tB`Rys*U>1TnNeiNXCBZ5VSoQwmzq;AODpN(zl463aEw=v zf|6>D&^Z*D5?MS=|1S^*84q)e6uo2zY7xTIpa3V2;8~1=J^Z*8_6{$Ye3wi3KjtwN zV|9;r{|}NZpC%85Bbwd(s#ddf+{=B1mwQQt(Rg?J^h6{y)zjCz;ybZE(p(!sb~hMF zC|bB5R5}=1!F*bR3|9ikDq`DM2fv@sZXPy|kHxXrt&1g&K4Kl1<DnRWEm+aJs|WP7 zlI)<xTPs5*(v=lrO`Ik}TBU87pdST(n&s&T|9F%^qgkq0z+QqSZ+vL6rdWNU`pHGO znuCYk1aZ63OHCnOqiS{D(<{Vy1(=fKP=LuC$|&DGlzE-E>}Djv2QTbR!>V*UBXc#t z5~{Z|X5Gi2e43^Nwu)efywm7S_2lj9;oAx{PNhaiR+ZZ=1RK8He_HYfFyJPq2B`)! zL7&4%FJFA#JZz5eq{L>wTW!lw+VZ^mLcNdig!)0$^AU}i-2Oq-L`jpF^w!)ri~HVb z2#kzSAz;i>%L^&9P7uV;#IKxi=!?Q#bprgVOjZzZ55)njt73On)~ON`kWAF!XOuAT zfo%b)gyrdRvs=OBPB3cce_+ud2K~S6_Ycb>q=%Qs;<0YuP8cm>G3$h3p3Tr^Hy2XL zcGk{FLbmN0qQNHuS?*=rz!3eGoEZbi)9U;3wE3GTJBE;nNDt~8{7lk=z&)7sFfOR4 zsG%O4ju!IGqy$Sv5{pfSFxh$!PSMAII)yzy&r#?_2abXm!a|^9aXJ+bORPa%f`)j~ zIj(m4xA|(M2CFx;*rM6Ji@e_Ug7c>8GQFvdzSC1ZL3V174+h~-UmG<m2v*2f5W6Bg z2qx&SQQE|WJ$nVa%esV6$hyX5^2Grr#<Z=QbXwb&3G@xYmOz4a`VvtpF8cX+Gk6oz zj0{`{%pf0QjuxO3Sn#J&mO=PO){sHEov?Eg*-hM|5Kg!MJT1zsm92MsBPzziQhhjO zkr)`G=Ses?qgRm-<7N@8BAHOx9D&&>bDU^hrVrprhup*2`)L{j7^H1{T4KD2G;>e> z-$<6WKE<SIKT!R}`p9i|FJIp>tLcO1*O+SUd++PhUn`n4Dd!FtBbBz$_i=P8Bb}o= zph4t?xBO;ksn(B^6}#2vZL!=uF8)}pPRGmH=Cpj;e=Br{!4b-YH}LlbCIfC%i`eNn zduczjI-NFO)B+1gme^0g1cGZ-27@tBh?Y@P<i+Fu_}A+Auw0#%=jX$gM0BBr`<*={ zYZr!S3Ycv->f?*IZw?SXfnULJ1hudYO4LdiFv1g+#A;p4BIXymgkI>3rMLGu8tkn` zz~$_)Db~ebn-jU5<(cC~q2>b^T!<)0#KKnz`g6ne_Wct?xEkQYNek8GDFESD6hgcy zygsA{D7Jsttc%m)?H{MZCv1zy+y57w2Y<#V^|GCaupiK##`O3n;>Gt1#BhKy5V^A} zjX4a_LXvNRnLCbiMF%BQvM3?4i2gbh&p)c|1U7vC8Sa`x$C5Dij)ku~Z>0f%*UQ(t z2MCnnv~U;)Md-A7DSCIorK<C7o(@~geR@bukueZ*9O#Bda3aH7{C|2h1HN^riPX?6 z+>1pmN<*M%%aPSbEq%Y%{Hn+s1sof9m+1%;W#b(oipqG*{JI`9_YP^!A?@W+%e*Lh z44+!A=QKL-db>HDD^o$w(7O5UxOys3Ads}NnZ8y$9nL?5Bs01VxSrc;SXv@%d1xDC z);@5O<}|fLRaSVtgsL?r!PEC4gsdCi@G=_r@wbE|ov^eyjC~0FeJuVun#Q^ck5<ZX zn5=E{;^X<a*?m!&A~Qn~ZuWUsF0@pV3jU-dE(k{`KYr;{Rbj3jiZve8XIt(J8V@fC zN<21L9I`q8(0kqDUNFySw!8<0OT;n?Gy-RvZE?fkX|+0d^J%?39RZB;v-tDX>HL5% zR;{;Si7Jy66bIL4<>ys_md2!)5`DL!@C_^IORbJKhr59P5lp~`HoI^8uhe{1s+b}Z zW_cN--CjB17f<Ft%jw|xz1G~ngNgyQ051kB7_7-lHly*sg=b%|nPClb0`Dy(V@gv4 z#}ot6o6Ry<(E?<4J^y~j@}!4<7Atrq10|I-A=f{=)}SL0lMioLCZ2;~^=o9e>ZE=i z7lk8|kYQxtWi>2}UPhWE3G8yKSlY)0Ks-dAyzU}Tg8Rck@dgQPYN_%nlT?v6$8Ccr zPnIq0`DyRkUXGDLlqJk9z6VZ7B2vQmw`wnEUMe}`*gE7cxtx)9M`>f+bE7JK_tFw~ zb(zBumu>_dp=lVUj%0~|u~a^*W+X}ZsJT-B@~axo#C#cV5Uc$D%voSIdk;3(-Es46 zb%sJr6dJB!<!C%#kSc9?Zcp*$#~uf!$!DTD4ic)-S}SJC0?hn_u$UULLD+qwC#0l- z>>4#k!hgcSC@B!k-Vu9EyAI<eN6NNvYrfdJy2kk})~aMd(xx7pdVv-&x*ql-hB512 zw({yS1XX1>`?X`@p8i}Nu?F!B!zzsMEwc~Stj2iC>_WR$C_eGQq<^grr4)sMDAy=R zJqI<&XT&Kk3mgzRnG&M5`0vK=V4F>wbBYxt_|6MGpprM<c5xh5t4uHhDuVL<^9-N? z@M#D@=@x%EkpZw>Jy8X;8-G_0r|%>+Q0Kwwo4#&KrBW*spG7xw3g`+$SMIfX*z|>e z*ipPVez63J>?)io5TB58Hzs40u0bsL<xv(SL(?%)(o?`0p0+XNpAwy{@KobW4>8^t zVr0R-w50g0l8pqd13*jdn6A){MVIspoGvFJn<#i4WmCFQmVt;7=2{LJG%1)#e7?+J z(770mg03gs7%-}*AQdML9!A6Ld<((8@Y!0FB<<J3bLQY1#KgnzTdzXRcf?;bY0KBH zNrH)SWz71cuUcE@@T}S~@toHT`O`dcgE6gxkp+;U#Du5qyR}Ez?%=Xp)kthLzYWM0 z`(IV1k;Eyr2YLfuY2ZY%4{8!61EUc_q``4Lo@c~812IAep5H-SmgUQ0$84mnS{DX! zfg@QwIiZe*W~-Xq1OKO-Yx{9QO?sv-on1n$cd$idC_tOLb0>XNy>TST&$=-Zjh@y8 zZDmYK167x$qXK245;Z%hf5dnu(XmVbKwzR$%ZgQ&xBp%pH>(}Qqp%H>g%f78r`6YD zsiRw!petisI)aaZEpN1ouI!`?pehN9lAy~Ju|ksrSb2xFMHiI*V;*Aa1`B{eOcD@3 z0r32fD3PyQ4c!eSo>8Ggbuh=b+HUvj6^?mXetCvcRm}8K5Fk+m=3Et*Ttbj<yIL2u zySuV?cSVTeicy7gcP{}ssyNIHJ43o5Nrr{$N&jSCQn&0dIgo>C^hn&bqkDc+iq<#+ z-_8NErsD7yOm(tO?CIS;R@|7e#(_~#gX0wa8MIZf;<OT8T)<6^EafT7lLM94KmH0* z!7{y8%&o-Hr4>h)L>yg)#1Wb<A3k0z7hpf34&%I}eu;H{@B!2<G@|#y2+{q~4$9=L z2|q;=Z5AOKGl6O}oRTn)Mzn;}m}l6B#Ve&##{FX<(|6H<iA9k#n1OR%Hcc>!Gbu8v zMM`#IwHS$|e6YP-euT#fR$mHg{6KRUOU4Wi6^7DK=_%1BXuZLKDp4hBx4}UwA8FRQ zYWV#xm?#>2{}}|t!FTw(IPQ&?FfKe8h~)4r|0-5r#|5gSTc$$BX7LiL7+x15_Ehyb zF@kn_1Zv#D{6eZi>7#=1%g_9slRFy&cQ&*ZA2Iks_8t_;z>}cbAMU;q4|wRZOzXcl z1vR*}=qZDwPJ4!>i85q-fsT&u;&?ig{(URpIX3V%)w=3UA-v7#)!j}TiU}V{;s78@ zlR76<Ztm_Y#wsv?>bd|MSR0+@+T)k}<x8yyI-Xg&qDzL#!+x{FNv7xHYI8ohhno>b zm{CrE!{Iv5yVL5ifScKUUD}n_s}p&SKtKM(wp6!=iDHbrF(;_Y9m5u<V*4oA8THCM zyoowk4!?<>pSs-Hg+23mPxifcO1V8P9l2?Y-1Q=f#>5_wtV~c&b7#s+;srty349p7 zDz-6`06+sf(Du+`_HBb>s-dM9ivO}6pN%wR;&O0Xt5n$HWU0YHdc!3>y>dsVwsV-U z0q%4@?rGoVoz3bwJEZIX(s=K_630V#C0&B1)k%g0IfU7Cy+Z-n*1cIn^Yqa$oQ?kH zGEl;$%Gu6<0c|X0f$<-xWr><$QY_c0Fz@`lQ~De&ty4gKqYAWUv@uw6K><LV{+5o~ zsI)^y3qG!J0)g+zPv#~N{~_!y{Tl_ritqsp-|+sqNChiqlur<fGNE@W8t@@<v2Ja! zyapgJ8fLj7mal4f4Q(8>Sai<q8x)`rb7&TkCJ3Ij$yu3QJQOAq!8(7i9t2dTjtm=S z@1KI(&&{PqL^uDfG+l#9TBJfh4H&ba$p!XbcZhmIWGlutgTxVBk$4!)f=$45klvxV z%u9NA;7l>Hi(r9B6E;hxOaL1vdEr!1270Xy54?;>SldOyxEEuSlA_znhM@9`?HNpx zG8GVt5j%!VTB&2b_TH*ode{uZKxUR4Mwgf8KQ||0^88K3eh=HrBBF=QWbeC&&8Fko zmd-YM15M>09(Bsu*Cq0HBEba5VK)TmR6z6WgBTq*ntpQS9^w^GuOJB=j(Yfkx^7g? zIx&Qn@eY~WqGDYR5N*lK7xZ$LZi=>)aRKWzb?hW_%9T45MSCjv4X^lge0YjvxcFEu zx;KsA+`uI9dJ?Wrtfg%*R=vIAc`In!K)|IX42Q{4H`@jfR`tb<<t*aKfF!wc{B}&1 zMc2q;DY5!T%S3bul`WUEoR&l6X8<(lbT!zdZLZEkL+myeQ26u8*2BK)rye!~+Okx^ z=E7f$@iP%}la1nu07z9kXI!m*s4>y#Tbc`&+;T2RuJs&BUEPXh_wbL45&Wf8iP^cj zH3L)lN*!^4IrS<B#vci)EFjJy<1a2p87B}sDGmZL(`>^c&Ucmi8jb!M7@Tgks<{L$ z6AocT6-OyjK#)rYGc3rbI!gzbN(!h;Wi6Eh!D2)Cp*+Drpp<A4_02$lI2q!hc1@}` z&BYy9?8B=%nE)H;>=|lHb0MUpLMk^#V$Kql7%uhYF1hrvp)!N2Bnt-uWT1(WS_0Lh z3BETMmb2wYm|5=@jT$)p&bxO3UWvh)va5btQn3g4iEO_%!z-A?rtzvi_L8iMnRj5D zz1`}d?vM_^F?zhD>6f2hjdx=w<g;Yq@^Ju$%HTGQ|6mPau#F$)v>|gqAMWF{{$+Ea zf?mMHP@x9IGJ`?j|FYG7z{xL!!tB%+N>=u9aLPYE=$qdh4bVCcrFV(2J|B>QwNcdN zt2rK<@-bLo?~i1|C;~?Z5hOzMKskRpXDT#G_}xdNX;r~$RuI<UM9Ir*DwcJPd|6|` zED@BYaM!Bz1|ARCoR{a-7g{gQojkN0(jZ}z1r#J~e@b%*NNkmG8W0|I_%bKqnw!?j zAyRfwa*<_6h-&(U&`UrICFGz;(V1B=Y0eB5%?;$El*YK2W*rESGXGZ(Zt|>GQlP?L z4{k={^L675^3s!Ty+H34y%=oh!J-!_XKdwN-jgP&(ZS)jJ~lYEQ$kmLGldHMTBssb zRgwv^jtwpBf86g$#Vrfyj165>VKS;rWiNa!ei%zfKYfSBPm<?32Ui&b7BKgn*v<EF zZM2XqqIfdhj`Eo>LKWYAWFavg-%c&F?!W+pJU#AQ&Kl&-mSJh<1oPr@F){>!4y(;^ zQ9c`6xs}X=^j0H_U!{Q-N4~~=hYP_*x~Kcuc%kwV2;o!X-7^Og=t~5RVPdXEK(eQK zfYG+AXLx^$FdBM3?H4Swqqb!rjZo@-jKF<WE%ihsc+lIor6@nIy&lu95obzw$=M3T zfT{00m=HtL-`+0iI0%zs?7%I=c~_ZlC?^o>(%Bdr@<mvt7vQiO-IO>8$h!kQ#t`SL zV{VhEVKo)Zo?)XYZQQrj7F{dPTWu<OANkHDM{ly-j_B9K(P5IG>M)5Ki(9(pF-28= z!AbdtJF7`7Y|><~N2re6<jG9*Y9d8c;w4U{JhM&Bcq^uqIR?C^=6Gi(^6^DE`GWrF zOBoch_CYr07K^%j2#{>P!$50eR%SoQtLIYzuTVelB;R<}Fig1(F~Q@#Fw^;Iby#4o z^BUhYC0Qsg%<ym85z(Jj)r9l-8O+(PeD#s|48Pk8G2-gRcEZY2r`sTkqe9oIH{kB& zk~kPKDD%&S9!N>CRAUoa$VUqmS`T#+n)t|lk{Ds<t^L5_fDf8RHNUB%k`FLW$uQgu zDoOE2s_OBthUIh(isCsH8)^**rsi`3Le69j+$umpy#7kGKrKyuRF6I9<<ggv$I1%k zQ1l?(nO=4G8#^$mi%WjhaY3VddccA3R$YG^W_!|zL;-=){FzG>!tswrLjM&|0Y~}R zWDpgf_7$rjPNor?Wr_yD0tcfuS?}X-AR{0JT)yLAC~$QAU+Bt)_5SHVj1V2Tv?ih7 zg_{WarO>zmK2#3CG*gQ=w>&9_$k_O#F-rA@iUmgzv{svAp_{=BVKGv05uoA$D&9Jf zr(fpRZ4x&}2U;Pb7O#m?4cdCp$=7R0rqzUvrl0y7RA^*_KL?)V?sQ&mU`pr;ri>$9 zc6q9eXDd)@^E`9)dhZ-&sF37k5BPYo*`10b^^);$8IBDFnacL`JP7++^|F>KP$DPH zv2&eB;}K5vDZcxnK(o?316I1g<{8*#<le}Dd7cv#8Ol<6oue9)o-8ZrAuIdNurrdc z{vufy-faoQ=%yB!tD4hcw&CW#&vdj|K$>C6OI<#dh(_PH^r=k~9AW0JFZflSZ$}2! z)HwPb008C=^tisWE;35<B<?@{a|!>Wf@yZ4?-VOvGUd;aCTwAj0#;3Md0rdsM~qjS zCcJ_qh@e*|0pG286Kl#a${9jSBh&=RCNR0uV~r*{kc1+j6$H_I`<Z2Z7od6XKkE`4 z>bFjVj{{MbAv6oSE$_{M)P~40e}Q~-;TPlU_u1>V-V)9Sv-5HZ|HqUDS_5wY<3u## z#=f9%u(Gu~7}JL6Ud;_&%_VhwhTy9w=~=?-UGbf$w!yqVE&t&8<zF$AIJ>d3AIfFb zLlyA*`RwLl^Y~aCi`}|dV%;n&PaXno5TC*Fhh05_r=@i}#Sv>}GhwJqRja3(YGzf| zkw3m+ziJV!Y^kIY<bbhEgG6a|UmemR?v=qCt!8}D@(}}Fngl~}!PbH;XPm3ik|UYF zdCPiV;;Pky5RBb)!7nody#>E5S2W6YY<-92W7s?4v<tAR>D9xx6$sYKa2QPXZ?_Oc z{&xRq$)Dbadl(NU4N!tAf{$Ll_`G@89E&x+jg4>1m=LPl$U1~X6T?(7Man!xi%4iv z44wqd+&8re8$xIyZKU6gAXs~~OXo3jyr3fM_3|?f;Y=a4K$X1h)y6`8L;;AAhvERr zzSu!`G#EgNMIpsig+$;3+X5f>Iz4W7t3tns{s%rkjM3&V`~Ac62#H8|H2bk`LQNue zA(rJ$0=n4@4M2nBN>;McZ4xkQMYueW0J71`N`V1r>Ad3EvT4X!T*Ryu0({bhnP}7G zTv|PbBWK{|dgol@cX-m=b@LqWqDhd~2m!tnDWq+1lu59A2+qK}2)ra?ia^uL3ji&e z*O}0be(?Lx7cgwo1&Actn=SpwD{IA_H}#1g^SMrPyKsZoUIW{d>(%XYYWGtb!dfcU z)*810!5>+{800?JEz=FAGmJ0<!UpPqWwB`JSe#D9!xD=+m!RXHbboBJRa9f}lHwpD z5J+oGNy12_9#iIvAa=+053f&~zlrC^tQjAx3=riIm|}veBM9kW`XWeQlQ5m-KCCJD zT{j?KSyC5GH{u-jsZo9QF3S^?@0S|#A1-*yXZH@6AtmZNoFN^h@Pa^BR!$l1Gje?r zwHr&&tSMowg&qr%WcR)HR0_sa8yylJtrdI5U$7#PvGr*<zc@B@i1WsYhC>7?nU$~1 zZ!6f+6Iz47OWD3Pyc5X@1S&f+_UO+@jLdDg%+}U<efn!fQ?g~Ntx=cRHe$lnIgSGa zxM#f4E@>EmZgVs51;QKkf2>xg<K=8~T0ZT+VY4rkXdj_MZS#3sEHJuzqq<8@$JtB! znbqmE`LbK#2O!REKLJ6hYn3|35E=w#SZST*KAX76niCckL!3KL2x;;59;>b2LSPh~ z?b%^dtc$-kstMZQWqHOw-JG8faQwG#4u~T7&8wyQ;R1gmwq1J&-oAf=m`4L7*zN0p z0>7fLpdv)%Be+mD`LJ0Rr^VYpPKQs}+li1b0CM~pJ0M%YP6Stpz42l9&Y#I;5%6-S zek(KNx)2+0@`<31&zH&!g>PRkBE=8#2}xK$qz&ln)#3T{Cp;6m{^|*x^>CEV6AZec zQnh+tE384^w1bcrisQNsE9eH^+!<TIr>sPbE$FtrgAaUF&PCX3n4lEKQ>zID+2LmS zUl4?FG;;0a6i}0^E7IUU-W>QuVN9f+{#+d~7<-0T?9*YpT0<(<sQVs(=F&S6Xa}sO zM>uD*_aHs)j+<|*GguDS>h+4U@84hx$9=qHVgo*B^-}i@$)JIl4Yif0KWT5FVN!=z z>gi5-7WK)nsOklGN58;KLBR5I^K>ZbrVYfXD|LItcDr8_Q=3-yVDV3u-Jq@gcbqe! z%t8nys6|yd251dE+MSw{-EkLoqr0!~b%CtL_9Q$o>`inf{DhhI3JnhNNmKmh8dq~E zjbWoTQsO5o6iwZ!#)ax18#EZO*eI8!-VPxpBQo9!_3=bF#ISxpcf();)R3gACD&X` zF7TWQZd!781Bh|1E)qVyW?dQ#;jog0)YIe(5GTr<ATAn)chsjk>`c^X)Xuq4>lHVF z5Jfjjf@Au3pc;ZsZ-l4geog>HmDlyWCFKiv%8VV+0jG+`bUdaq9kNAcpsm5gZb)S2 z*Ck9bp{TROuWKLUnGH*5Prx_3uYzsRU5BDIj2kFB<g{F!wcDtoqh8KN<!5K(7~%)_ z+00&p!rA4Q=hg86ZH$~koraH;Zm}<58xY{B`7)>mhp5n1H+CE?FOAVuTK?_5goqbQ z)#`wKEtqN4b?Cn-XXAoL<@(1Cgq{MGAN}ti_kMNUxXw-%ncS1wKN6@c^S$*PTew~7 zQrEL+GDl<TwG&t}$QNxYTE&Ak?9@=m8YCDgXrF4yaMjd)%LEg~*|IK+9XS>}D%%$X zm#vN9s>naVRlC(!TBt>RLAlK43jzD6!DHsb6wSm2ZWTdgA#?Y=W>LFsD8_2r^e;{1 zVw?W=2CG9&P}u*d)F>+{>uz-n>ZPd3ADBQ;5~xg$dAyWtp_btJ>Y${sGO>iBydcAX zwd1GkNtr=1i2C>W;_tCLfd+j&OGzE0e}O&xbAUQJ&~si4*293VYiL@c1IwI5etl-y z7{y=x&nfd>tc^y1r-D=3N-=~{NX#9>1IGN95I)o+Cv~To(Y$Tu42hXW&xN!Cg%x=z z0RbLw^(u}DFT;=z>o{6u^tzikzM{@u?QS6X*w$G+>^D1X@-xE`5MyEu1KUJ?bVV1? z{pZ6wLnk+jH&@>-uRg85z}SWTU%M~I)kE>yarIQ3l-kfy6xjJ<d82*}=^qT*eRy~E zf0h^P?c(m;dOm-%`a}a6x88<cS)W;A#hAhW{xAHWdY3Q;2ElXx26O$E=RFipoC^Sz z&OiBI5=oJIisL{CH3h@b>+>n#USgYqqaYB+c6bff@``3leVg{8oE)D@`Li4|7_6)% z9-N2u{y@w*6&1N%{<_5~qxI|Um%IITv;KjxF?4SJIvNS3sQ~yF=VUJKfFe}QjwV)U z_g3{Ruou+1aDV0U3XI6j>99Jl|5SS~_eWLxRGE|wFd)Fo?S2mr6zBozOH>x>w`a(1 zZdO|fT5PtxsY83Y{DfIf5J8{7nJ}eOnj?`2pLgoitKCBhxC1Lh%Ak1bxZST*cnc9# z0g0INAXK5N2DtvM2hpzq^ji(O&R>_3p+xpvA)Ch+0Wk*r<7)SXbb{FEmwTa5euda8 z?@@*8VS0;`=X4NGYuXp@)@ujEyHCqI025FQwjlh^ywPfe9uS0q5mldqT8;`JGejqN zI^-LeY~A8x71)}I4Qo)iHGlJIy*(Xa)AF<U^VRA6fX~LRx1c~(c^$ySpn3JQ`dX-7 ztRNsL0zUxxxs=bL!(MFIZ1n@T($#sGUSA+C^pDU!2~6_4)qYkDz)*)m-Aux*!6n@| zgBEo7t-RvkiQquM$sB&X4+p#RIqdVo*~g1CP!q5qp(ehz7dO`~Zf*cK+>uY97JW$q zxm>p;7Y2^z6LVCW0b9V?;eVPK>*-GZJ>o?*e9uezh*-`icyh%JCG}T#KZnu}qBybA z0MzU1;Q{*)tB(l+0#x-gq>MFHYbL|tGt~;qKa1_5I4b5s?E>-tI_IgzPgEHW_xYFd zpYPk;EMLKlHEsNGZfk;nDKMU@1CZsM#UxB2wn4;!1fqBatWce#_^4VNr6l1E__~ph z*ZAfRa9C|AD1a@#A3#?YPgp8UmRi3v0#^fp3*kAzgvNGK94VpR5Tb>#UXHy7Iz~+n zU)J=AtCSR^CQH<$85E6hX?6=7%hPr0wGzEF<B)q~5s=zSUI$nNKw=^EhVK!GEBRHw z_aKMxo0RU|yJ$8B(S=uNdOM_0k*ei20T3^L@S`>J2jEF$55AU!CRhOpla0cw=<c zD!t0cMYBbiTIz`4iki_;c)=9iiJJf=<L(u^RKy1xY12e0&s#@%dcWd7h!yGDIH)85 zigZW%_~587N|>O&CfLH}&a6|;?`l0iP;YEY$+Y&#_XJw@N!B9DT-4e1{QDVa;ynDb z02lSBOuuXUE{LAgf@U8OC?gca5^&+2gONNNQB^H$<f*7CTSm0I*7jugaL;&&z}Pwf zwApRIIbMAM6x0Q%ucWF2AoS#EfQU6!P0%2-`(|cb(>f_*GiSNpr18pai8VB7Xu1CW zefed({|u9yzOBIch6@J1`p5g<e|h~Ls*|5TFBi+r0|ap3*8gXHI54JDzKc5<z04MC z+IyjyX?CUme^U=^J6+I@G&855ISITLv?9zePMh7AZ868HX;aA1h<af&q~RJPD}Cq5 z(_7&qUvTm+V%QVryq%$0eDVJ2B^N3z%f&vm`A#Gooq&dzgXPd{(vwZmq6V>CZZVsy zZM31zqBMGTnK?My?IkGx=k0#?g=|Vof?uq5KbHH)>aT(s{~w#=VMK9rSRGFVSkV|J znO*$y<6Qh3hTiRu^Et-;=JU^>$016>uAjk21@ZicB2IgMN$6OA`&^wtMn2W&>{A{* zLy<GXRCy10)kL@%ur+P_*U<-K{O_kh$dJ=L`Lu?J@B3Ar;uMPMYMh+$ej=83(2*51 zg3TIeMrJfCNk2woF>((SoK;n(gF~^922QNP6kw9n=1pB~iaYs4v{z=hio{Ngf>0de zD*t6r^_5Y;%S93yH}MP>;lYO<XgoNQCc@woD8_f&U~7U|+0e>RQ{!<oLgU3?s57*Q zB<Wa-!cj`%2Yn;gK8l<8FcEhqGbs(|Uf9_x!r{om>?j^KCq_M*5{qV(NeU(q(dO-q zB&ze~cTXJ_BC@$$$Y9HJkkabX+Pu+ta%?A?Ii3H>3?f++>2%)gQl($5h3=zF&7-0@ z8&K+rTgZ0#&FXlB1P4G@#kA2UfB$q1oS>$Wkh|B`kim5DtD#Z}`HL?u+i!~B_3mm+ z7X8+GgL~!0s~IDZ=3H5E(L^SK9Q2ZlN(js3l5j#{*H$NObR#uVg)QZSdWaUX9oCor z07;YU&FSB(?dCx-+Tsm*KE`xr-VbG4nf8F*uOC+DRXVvN<@vv=QFFW7?}|9LuH6BN zd-scV@BZ_l<yuzUEg-sBmWfzuZdQI?4)R{IGEfAI$m|!Z`n;RQnGzX=EY(Vpexn!g z0JiGG@R;!xVM3<v__#TqNZSo}h_jPJH+$84ws{U~)w^;Wfr&KiyJjoDXkCzFNDvQA zuvA(2zz6vo8`o(5q>Z{Xelk8*;)5tQE>OnoeUTF1!trqu-?u|x5pHiEB}v_s6p1g= zf)e>f1C0+P0weN-<I;H1Q?gwR07x4_9)$!Y#C^K+9^G7#Nj<AW01<1lXBQu#>TUPs zJ&c{eWv;hS#(`BNDv!_Gy0nFkuafDs8Q99}ZLvB^7K^v|(Azb`pn!bwzgCBG(ui%) z={yUl?apc(j6xtBTc^+rmQ1yqA4?W)h=Oz*64VxMcRUcQJj#1F9#h#^<q=be+MW-n zm0%v~@XY+7z*Rx<9MZTdDS4-F6R!vU0qY`9(iv8tU_t+QBC@Sjm~9Wia?jkjfk;Ag z_jAM0Ap;g~@eFaB>9$ct6i`~Ik;8!GJ*d_&pAfKuRiX(p4qv?IF@!I}<sMq(NNW-z zGG)RopvHj`kyo{mQ&{{l6&i_a)*cZ57(c{Ed9aGDrlO2^nh^eE89E^#snx*+fkr5m zjL_o%HxQVJW`q-O(+)8klqq2d3VTZyP}i%36AkL>Ut<0lK7itzSU@pt@^SEX6{h}v z`d``mXCvT|`V$Jd5*~51*bZ8ZRIkJm>O9aX;sOwU8U~k?9+~zW9)Z4V4ZOt_ho5e| z@v>pWK^zQulp!Urew5*Wr+K;j2xTp+F9nr8suzPuoB`p%)BvhFWeW(pZa{EK^oTlb zKw!#X)8Gc+n+qnA20SyCc!G@nyEyKR0v-zz?11BtEdMH2U&jKcq)etbu!(9M#x3EA z;b30~&C$CiOxo760w)8^Dx@BiCMxu<ChrlEa%bB!_*QhpOUQ(SeolxjsnIVVG(&24 zUHu-1h?>xfZq0l_J$&_7<GSl*lmVzNt`jh1tZWuw$hmBIz&0$SU(L`1_m>uOV;Tn< zmVTj>tHAGJPoliBNs8?W#DX39s!|ksID(@EF8Seg%mq4~aBzYCBEDz`Bb2c)UzgyK zP#fBrZdg(|1e%^~7o-VE^n{CWO+rtb2I>l?fPP2CP5~syy8xm7s+q%3#1!Dde#z#^ z%$~d^2ns9-SHmxwUcu3GgdNoY-v?b>4bQ*@oA~v$%da-@Po<FJe27ul)|#@b1cp`e z#*!)B!$l=;h<0OXbI&bgc;JwUe<jXpB94a+H$cc3iKQ(%HtgyFaax4ZkWddL$hZri zPQ2GH@oKhcKiGO&n57nMJPR5p2pHe{c5DWj(S&veHyD#7X&RvFff%m?xnlEq-Hxdn zW3JQ%k%~i5BE&*_${h%M>}q{ttC{)+#3F-M$=Et6_GHgpuR(<iYNw|yUu<?Kn1w_( z1zyLH1k$WKJRSaGZH4-u9IL^W19--B{ia@jfbm?INUi(WU3aeY)|Jaf9-v;7Kv5&6 zd=gWW=p;-<F!%JOnHEat?t~ixkH~Xs{SXIS1xEGV3^<8>Oyb}GggLl2mCt%0Wt#bW z|M8zo_@6qPRV=I+x{X0xCoo+&fObr2TI(sN@Cx7lh>DrmF*a#+CAXIFde9MJOloEx z5l%72T)Im*N?~O#!x3I}5mM8{0cPR?gvAi62^E%Vlc1>684waTfgx6g1}(7kXYMaR zc;^1IE*YRM!-ND|$oI0W+SZ!FAyiI`jXGIa*rwu0tST3@)8!KW4}TjlUI%s~BhNg^ zv9NH1SYV@8hC+fk!ti=md?#iLO4KeeC2^MKBGt8y{C8t{7-anlTKyLgVDe0NB<j=` zvLDD8mt2`i+29}?eX7uq{}hZ7fZ@2`69P1;s|kUKg-!?~K08QkMAj@f1ymxOHgqY$ z>0=nhdXou#3LQh5t^9**2a{LZEm#EgS-7A}y#sa!gDW&3*DFF%$irlihs_ZNh`{4N zFwdrvy)dwdh}cO`c2rdVg(=m9iM2+5z%hw;fOKx1I{l&({GusDFNE8?52@hW-n8pE z(rd{I7qgiWAU&-{v(IFl9|~pFU4sLF)%dK3;((LIb}&8b$3dk&FCh|d1|8w!uX?=L zae0El^()9`;&WbqU_~NET)yo056dIuAJj}l_3ApI=kij%7C%Tf^`v6FP1I2HUgp62 zn9Jv?0b6$_=@`q+#Zz(JL*uvpV@evPuf*CLhds%wxY%~r&97?lLC}|8Q5mS*OqbEZ zwoTQUaWSR5(wS9yOjbG*C<m6#KGv>Bi11FDM75VF;ESdFSFum^U{WZQ$TZbG1leH% zJ<k;z)#^zVj|(`x!~o!k4{xqABlJ>B=PR0>Y<8R@udWrx;zT{tstE&1QFOsSEjgh< zh~=}u;()*NZdB9vRu5LW@iIzNn7J{=f<{36D&&G|t2DBQ3lmCRG-OoSM$LQFpxtg) z&tR4vt3RXBBm!JFmeizS)+Y((Q_e+gTyJX3C^)qS+(B7T2nkJ8inTYS#uXMpEKk9u zzCLaKCR6HJ!MINe4-{1u7-gc=8H9F1Ts;-%E^_cASa->BnoQ=NXKEzVSA9wqDb&PL zX?MKNBc|;#9hnj&vx|qq1lg$Uz%UcSMPpxRfSA`vYwvo;TMRlu^zDvK{Sd$I+B8nx zbo}@1R2(gK`tgbdT;ikT43Dky+cndxZp>pH3z)E5X4g7TO=^sxJ>3e5I#1S2bCzW% z2JIr4WzSJpRX5X<z;)1OS~ez>wF);<Ou+;}5uqkfs*3%}sbIE9mmEqG7m(3QY2{FA zG79U39}H%~FzsQU5Y0}#4~Of8De%y((Xsmanbl+jJWYK-a-?})M3#Q^vhh+h`37v) zeZ%jK>T}-Mn0$16t?+a{vKQCy?30Cj?X(Wg(sb#x2tRjEmCs^<U|;)DsmB_MA`-xH zRM&L`iD28^L)7pN3>#+Oxo>=-r4|Qei{TYC9d3(dXBXwO#(ScK?|B<4WttuVB$H<Z zBw~X!Lm-_gW{tWY#)W0w1_w(OyVd7yq1yGA=RY^(amV@JL};^_Y2D8!F;5)HB@0L( zW<ojIR4R2t%mgV<B$u!0pd^_oOiw=SgW>N}0Sy@sVpG0}LrrL6l&D{)G`kF<{B=D^ zMK_@l=RT7ujyq;_6P&xyJX(n>+!o{%03fRjVOb>i9p0=vU7!A19hhohF|i&clyfWx zkVQF8wza%hgSCt#hEZF8tX8Mv<!p0OZ=UPEts|s|Hz29i#IqZfA3GgqFYRaWCH5~$ zl<R?Q`V%nlQa>S$u`&K=d0uph{67WnM9;5f{``&w4zXDZUs=aiHCuqF3b9(mo78I? zfjAfBa_vRfG+`8%U{8K+WUhMGQmm%(TE0;C52uZsMuL45@b4Px+h`->z4a}$BFeT; z!14B6Sewg1gn2IK+BVs6YqR(-6*r1X`rmXoLS&*F1O%-WjOSZ5ECLw_)N8#n8va@v zrtF>YqTXqMUA<-an$E_7DOk@wCSU<>84FWNEvY&l!Z@r$!A~XD+NuU9xs_Gee{9B; z6WJyAc$vxlR>bzew!QRo#h&rH*1^>#H=<ZKAP$*;P@l7Sv<)6$`vB(~a?>MkKCezt z3jIQ94k}R^YJu?NEvtV>ud_=?>VzQjp}C70i{65t7VGqab?O{<#rjy1;HT*U0*wzA znKGo{rGwOWXps72c|w=+!8fRz3EyYoa$GQ6Q`!ySjs-LdQ2=9om{I!@sn#k1Obfg> zA2>~g<~`~Kh{|9HXGdLC=Kl}oXwXv8xntk?imOULmc9#={Ggh^Lk8o4awHS-h}gU= z<OS9PT-R)k=#^5R6G}z~)u2@kyQ#E|2a{(|c>h%ND#$3cr&u992M!*klp2^O+UN;^ z<{=n{qkFI%5Khor+L$co%*B_xXU9kyP<ct5T@3<KEBF@o^WC>KkRrIu7M<sOq**_; zl*~qAcqu<CcuMbBVf^5Nvv2m36t`88*LLEg?si<HP>@qI$Pg)#ZHiQB(gYfL;#T=M zq^l-!Gwsd%Y03$f>+j!}U$*<t&}jN?b%c>hn=`mwzF+^(O!~u>^oJYxgMAD2^!$0b zSZ*G!zFj^ZS5L+NtPcnHbJ-5b%6pj%e(@X3Ehvt&EB*gBKUU0C0y_C1^q38maWAoO zARt@P4@7)At6<rInzd{Co}`vcMYHQV6^z1`YBe1iiUGfd7oZWj*AWx~NTrCNnpD|B zb$k$V7I$ry83G`E=u=@UAB-w7F>j+ulQ;3`P!o@fR%YpYrn>HN)FWfEo8A=8m*p8* zVeOI;1YOlxR|@+Qx)1I=i+Wjnc0K=o#<2_!|14I}1$a5*KU?L}&m-fpyUS$bQ8(7o zl9gKbZ9PdsrlKQvh<BJH7xX)&DjDQ60`5SHDIwho_-Hpe1MpPc84IQaK3WQ9fP)$V z+28Wb03XFu8hoOLb|iZ&kfnU2hJt!>IH$`U3k{K)6rN_oC1AG3?j4X`<ho)l^6tB4 zuqQGA(b2%@4na4IBX<8RCP?gNCC>#d1Ci5xgv#R+v49YE6F{+Ay4h2U-O~rXw$k&& z&|~3<yM#FN?DFFE`Mg^HSv=fr*5~JA@f(H;E^mFm?blRm1BrYit<1K(AT*h9msdU{ z|NHXNA6t??ZXdK`HkSNxYgO@&r_({aZJ8IZ@pfj5ec^>77Uz*|{1%IcjAx>#ZNMqr z{>%(hueNArSSkMcu}j+kT#9OH6K1zj+dxJXD21()z1jwjfCwj7Iu282uw(P0M6ffW z{nNbAbhB^Uz>>w*ZL@L7$AYohITqIjD8j-5SY1`TV2PyL3S}>Cyj9)?BeF0NILCk^ zIxJ3Tq76)Oq!VYY&#r#mKRv;O+mklaFW8Tr>~niDvcVI#xqJm4d)NrB{`T~^0gNZ2 z&J=IxMlBbz0;$F2Mj=}O9&OBa2At^X_U3D6C@A{UjKGL8k<QRj9Hl`QE1%*(EF}^( z{IVORaj*~_Mxp6shQ{qI3#v9b*RFeJFf}`a&^2HhrJQ86cQYsBPM^hqjN7W@GQl?M zY%<1yK^RN`Bwerg&B7>nS{Q;+>jso+9@8%lil$31t*mOGPFbLL{eE*gL*Wn3qx<E@ zx%f9cvavtTq00vUV2nF_f*lHgJ+_ot`g*HYF_+3#0@fp~461c$?jPt`f(dhWVY%hz z=}>~%yd;bZ`ny)+ZI|?f<FUtq0EQ9*dMwn&`oRs~Va%Xq;c_)|CF0`d@wngBtJ5vy zzP8_#JA3tfDxlZy*|UYQgLOfLCXEV#CFT=0dwUO9)W-*c;rP`Q1O<Ak6@&Ga<69VS z4!?i8&`Eo1o_8eH)yL{E^WS+dGTYv!f)Wlo_gMG_>>E3C(oC<afM|nJ2Zz`%=OX!b zX}D9w?fpAIEh2bE5lm^{ka`LRXgr+9$#M)Fv5;Jar4qI!py*oI`9RR5K&^3@^Esb? zG9!2_M~w@gpbj<lGz_+}Sc#C;9>U?M36K#W6E%t&HiKkCsV2*$7JH8L+nrrO?{~2+ zpnKGL#)jrk`bA^RB%pC=OqNdL!bN?p1>;Rk{!}D2&h4^9go85!h6@&nefWr@x^CgW z;2#$d_)B~S89sn&h?MrmOe>Bgv~)UuX|+hDKIS;&j1ChU23s_Ipin4bD`s9%^rfa_ zjM5g<M}wfrcVGIhjMf<jil$eD!ZS53N3~TilvG-(mq><c31K<RjmiM94O!EFzaZG* z1&Y53a}TG!N+gI{qF)S@Zu}4?&l_8%GQ?)sj=JA1|1OSuWBfBg)Gu0bjx*m}O=}zw zf|9V9C?1r%N)Te$%olv;X0z)VMwl94G=oWjlz{F1Dz;f4&}d$Vcf78!9Wz^k<)TcL zGuXg0<7Lml%f6vu3~+|f$f4EmR;)L#f0?$v=BdPRhdKnnOf0R`6%b6jf_3UZv!%z3 zaE69@SuG@u(cDj88Y;Se{{S%$)l$deN)Q3lQ6z-{1Aih4!t?SI7Yj^?s?SqHF{7{n zqen4B2MwDmh!>Wz4Q7kuIiVN5{Z+p@JfHpq{#k#;D>rY^8<eF&;+e!`ltSW>4&uy? zR+JJGo9+^;Y)Ej3Nj^suevA)~HjP!$Xh#`YMq8DP6p4tLYt&NmiSRDCq8lwX%H4tR zhZ~tp0Gyb_Tobc3%9+;3)#eP3`wEfgOZd|B?zDO=0CBsoOZ&C;>O|wmcG#AKTwos+ zgC*RUa0RgSsn|XW7VFG67(8KhNH<7>y_u%Se&6JN#QW}(L#U~Q5em{n)Jd}m3Zk9B zqg<iqVlwL0qulD$l`5bqE~2*Sgdwli>$D=qCUN53>ZI6HV3qo`&{RA*Dm5-^1*7c3 za3vZI=*%b~g!a=3Ud_^4T9!S^7BGgdQ2?#fCCtV0<oUX+7-t1WMNZ@H!XJgSX$o@` zIHxkPaH4bVQL@N=-rh_1q2{fEaR&L3J2l)1XCMBml0+s8XIUZhxr6DCxMSg`(795R zp9C(8OH;({hu0OCcgVe~7@^6n2PGTP=nHU@yss|zZX#wTKB{4KKEPqR7bfh!KQ7P4 z7HeN5;EM_4Ol&!ZA4`wEl>^b{=w%zi$8qbVSPOs+YK~e*ELeX*FR{r?aMrJzEt09t zH-UCb8*ebuIWu9(wSSp6YJA)xChHYP2TE*8Z*bni+d?lgaDw>m&J9~Ux4aD2|0MW5 z+A2eGm-JXG8;Lz-U=?}0m5Qgs`A1gZaB}_guCg5iJnXR<K^2+TS=t&!y0pQ0rWI{K z|GGY3+`mMW^paJ2+}DZ2$^!~;y;Z@~60U8#S{G#~!N!2QCeB1b)o*g6jFD;aOOvTi z5Iy36{&(<9n9^CUF=k$7vy#8ayCf3buX0<BkkoJUy<=p4<o%}S?F9*r#SXRC(|l2; zNWdaeH{6;9(*ZS@9GEgMVbm!yy2v34CQ`W~psMzob=Q(nX2G#=YuA<0LF)39T!I*5 z(~8Fsl`&;vp0Z?4h1Nc`2ag~blYxY#(Mguxh~tr%C@V9P)6zwNs8r(o>E7UKG?qK+ zA?9Q-J_AQ3`ti3U(vZ2Lb4fIl8oBGOoyXLm7LI$4T?G@n3I}*+@9H5pi}@Iv13N`t zWqZ2~%bII%x4ps$9(AX?B1PoOM04XB6S$HO5jD;c#y5V0{^L)Zr_JumuNZOGoyae} zzwXqLY#e;KIk+7xaQ*eE`f7lo$0I0Rw&&gEzt5`DxwPc<$miTZcshGrgEqMF?DFG} z9nN!77lK8$n6URvVH6<e3&7X^7wh_8>HGb0C}?GFdR0OS?8@mh6@lg=nldzr%ZuKA z=6yVc3g%K10ER*q?^VRCbQ$DNxMZgEhGRLZs%m}X84hOMtFA1h(bH`e3yYC!(al~7 zBvNY@#I~Hb@ts~tEmK|L;`X)b8xlcn(Kyu=Jl3AT`6I89-UU!}jdj}<PKH<i7)z<g zr)+A)Dziz0A52R|IvBHM7o6%=Hde~{5|PUg`xYN)GQC-^RkoHHe3M3TTncqmT*tWV zlg6>fmNasI(qL2XYr%v^r|4Q2cEnCw-8P24mdl5#cTH-9YR(}?68Tjpf#MO;zP#~0 zyfZClq$44{>;!2Y*CflK`vfIi$HYmZ<FVQCP3fBHavC^_1}`&`eZ&wbA{d7fUN)2@ zL_*b*YNliwR?VZrS$4%xTLRkNSO#NM2(h97qt&54j8OqBQ7CHIQNeT4f#br`vgNLe zww8=%EXCkWaZC)4iYE;AaM(ID?Dc`XlIEEjo08ZlA&ik9z8WAN45%mDx}a6RZH|^A zQemJQ@E7gFbqe#;r!|$)wcP9SfD%syq~MF=UcYF-6ch~(X5NM<ZYB`Cy?&h!#W5Br z4@=nz!qg(Re54-R7L^D?%{AI!rUSf9`yOccWnQ@=GZ79ZqbTKI(^S<7Wm~3fb+2KL z#LYT3VyS9UXVwS>QZ>|AVU!3OoHk>hR^sM?Y8jrc_0&D|NuPw>7fJNlwe>3*fAg|; zk`c7TQzYBVT}pq6ZZbFw2+CC`#F{G<KoWSX8k6CGFetf0CbCDh;YtHUOqGucUP{?y z%AL5wA<_KyS5=xkYGxaxba!&E%QbagqoV{`$22o9&LQu`j&Z1|mp!5@*Hg&VXKCK} z3)^k7%2zDkb<4Q^&|c6QU2}h}W>Y{2o@ka{APTl|GLx-~H5BNt=<}xihqF5lYy5;; zRi*?>FFY4D;U$NWVnYzYu2iwhB$uV+?@Vdk)|evlux<+e2}SDn5D2-0Y73fb8rV(k zx5+gfRi&vPEIw%LOiJ0<PaZkQUyO@q@c=~gx)-lUAmKZxIcDS=!B&yxfA-9ya0E>D z-a(ZxJ4UCjniT4D-3FcaWhE~r*)C3lVFk|o@*`25Ig2VF`VLGehU9Q9b{8xv=SvO+ z_PlYvj-JjqkVR0>I1pnK4LudzPdx3Q2s#d!_kelbPg426#{lK-nvH|nW{d9ptH++8 z@eyi};x5pn%cn%`n7Mzd3%z=(k-D{4bpb|;Oo@5oVw+CrDF<1~LC)ELwebWkwc2=7 zOz2@+_sPOm4Lca-zP5>@2M`<QVo^^FsyD;%qYx%g-qtdlV;TWkio<^1Toc-8!W|co zUAUOP{|rw%P?eSa4Yqc$ktd@lbl5oOxoH-k8mvu9mbAk$Xoff2+Fg*$oyjq#o~4E4 z>DvgLD`TvU5!5LStd-@Bw{{m(a&<6}5XxoNq;3|BRLM*Mu$b(780}?JCBsrSh2m)T zw9;l5AZxZJu3}-a6g#{Q6L{JHBob2=&Tb;;PB#P%ja6%^F=+aB5XqZVxH%ub(D&xV z7#VzX_6Xb1CwCh6VQ2tDyz^&YUw=>`@Rnt76D0PKWNiEY1@i2*w*Oz2ALlw<XN5)2 z1m)=!A86-{Zy9#IS^B=sjr-K0@-M~b_)?!b><a3fG2!o=31*`=-;y^Y5s|OprLHjk z{9U<`;oqJ*L5P4~xTHZ&6zbj__W(pmq#vM@KK7O_W4{-D=LBC9y=9pK^&qYPos%vM z1IsD{Az^z8Xq4UTC=OH+WzS$4??6?}iYD_G3~4LKY*31CQ-w+&-c3QK?<8^4wfo5Z z!x7;LmK)y_EV|6al;E1v=f$rufWMc$yrb;<pi2H6i<$0XiO1uj^jOo|;Npw^2`5qb zDNBAD>K-Dq`NLv~rUl`B3(T&1-ZL2(CaP*Am`1!m8hpg&<H#pDy2?pGU}!eZJQ#?Q zg*bk<-ldQm3PK1`P*_RRhq4IB&@2){S0dunV<8ioSN)(dS&dk3e4fKw_8FD)%z_-O z8>2L-d;aYJ8O;J%!kYRZMhZ`2`I`J*#?2DOl|$kfJa8-nn$Pdxy^MM0_cBt!1*{2y zRfDo&Z!m7aOI%Jm8(GOkA;Tia)hgAq^yaQ2ipjDe#W(r^gJZN}iMS;BtR&yYdQ&6Y z``NW&h(s2=Qu)=S%>dOjf0?8HlG0b=_SvfKISe2$xdS^i=Tq~7^{x%e`Hf{ReOHMw z%5=kjJ;#a}NjQ7wwRm*r&>+UuXr?+w#g;SB`KqD0e0vp2WK_tM%9K8A<lwpMV6};b zxn1qj`(>UJ*U-{-e=0ZP_wUm=iof@~JQZ?^`XI2te(BF9rdrd`oI)8WYA*HF#XpK2 zynwu&@7Als>3O?47Z1OG{@-GKRs*W9Zo_}?cT#mO=uqgmB{RA#&tqMePP$l>)jwFC z3?-`%$pk?;V#S#7at&Cf4OK0i|0bxCua#}~a(G*!GKIqvkzG5yfzK1<bZS)wzNECe zP+zay@bFVSr@=1<bbC5PSwciD(Cn42xk!ej4=B8yYF~4~7Lfjg9N0{bK)HJVP-Uo( z9RSG3&5=FY&K%S!$f||}Tg@Qg)^;uoW~r*p1xzVZf>Bpd()k#vC#*GQBm1xj+|pNV zfM-H}Ief(0ms8-8JT<bJFjO^n1j%z2<=D)wfBy>{o7110gMMje#((bQxY#R{?d90* zeJrIt6ORkfXsCAI)#DE_PK(?j-m!>WFpJ|5xfhh(FlE-~EmLEuz2P5uuvjFf8O9NY zeFpf5rIy$}C#o~YaE}GDRHE$e5ND*&LbIy4wU6z&CXI!r55qflZ{I0QScP2IaLkm! zaPEF|L8V4J@!cWlX86YLpT)3^-K^xfpk**Dy9uDQQI~$hGZHy149m!s1NuUsa$^{Y z7tvMZ3OF~+6=xW}yxSij&VAfGL3j318;3Xb-*qw&n=Q3OC<3CERPGy58)2Si+umcQ zat=t_DZy||TR1?=@sa0Q+MWr9WZJ@^!w}8e!Jy0s4<XM)!!5?J%m*jMTbcnJE$tG4 zEtOushGrsEy%?N{Fa)F_xyES2Gu!St4A6YQbd1m@3cG+z>S&NAVkD1Ynz(7nt3eAz zloURKcKpFafC!rkAazmGg29>wV;jRYZHE9&W-?$C;fW)Y$Oz}9F;SHXJ9|Zc>e+aW z*x5(X9ZD`{owjT=Qkz##Fie{l3(#ePG1|OOf&tpRSO{pMbvqcH-C*d~(Ch{q#ZOPh zWdwkw^y$~2jDUn_Ckl%qvHDOnTGbW^#z*WMkV@o=q7BDRJLWJJy8+PEK<u=8N24%e z?>vTJ#6~4w36@s(WIzNEgrx*9xWU)Fq+sMle9<P*Y#^#R)!j|MXENrRPnI`D{p!Ae zdfUyn;@|u2^HZTikuN;I?Ae@4h9e+Gi58BJMrH&+HuaoAW;5TWv)QkIu6Da(`{~D_ zz?M#?3U&qQ&QK-o*rockI_SR6W!cXF_`z!W^RXyAf5L$hdhF*Jc3C)nUNcxFkZ)G! z6*O|<ZP?v*`v;gf`cgfDvc;~{kN;q!l_n4H1H~~-!(YLy;|l$Y_fHq|cU@7Z+Y+wM z&xdWHhCCO$^Wu+BOSD6-539{_@#$juX$IZ0^J}~-9BIPFD%XITO#rCL-|^v4U8G?! zqnldrsGz01Y;<u~tiEbt3#<*7d8wI$YsQGLQo^)D!WF$BS<W4*$Uvr_mWot0O+xb} zkR^Y95#$ig0yi+sdV%4B0s-CQIE+J?=85Q2;|tqi-WnFoJ6;C#s3X<`#lBu85n4Lr zBoozGbCNqA$id6izgC9@$S_^N=siTKM3km0e^M%?#E*fh>v9%4mZm-ZxjGgPl^`hf zpxMpNIZK9qb^)h1786clQ*#gA&Y?I56(wyK1wlWr&$5e{C)W#z03B%_SKK8+?Vlh= zzHT*RFOafP7tBJ6>ySnTrLTW^I3Jhrkll8*t_&dqvwc#gBLUnl!5qT7pTS%{oIk1l zu`nCFCsR!`us%yvkM#sjA~<`-=ZwO1URLwaF(a78Tbx3IKC>D}f(*#|7JnAR$4v`~ zqmce@z*;Gxr%Zkp%zKKIjcWN>PC$d63nqT_L8v4LUowh|?E@Yi<)s>Wf%5VK<mGEE zFS)eDU!pk*A3zOCqq7k+VB!wbtMK;?ak+<KNb>ZUIH3Ey0TQ0p*CO3O+_Tnk2kP|} zC=W0rVq(Paqn5zPpE%6+NGdNIh6Tj|*uO@i_upU>Oa<ifwR9>F=fCrq&{TlMm>|Xk z)MVbu&tj}L6<ABeimH7oke1=5X&KmWE+%=e`0mkuxBR;}?v2McNiZ>3&%s>&1(Cu@ z!dkKlm7i0UK_##;!pK+e%biIls*zWTf;S45EmAB>O_dv8;?wO!bmGgiG~#I@6>Z~e zJW_SF#QLbru{ZA)JRWxi39K^s)-GZQw{*QNPA5J4-MKTHN_hvzQ&Yac?`Qgx2Gd6Y zhS=7O<!3PY4zqhYS-0Ll9Ux?xjw-;1lkx*h@Q5phCJ6@Le})J?!x1022sDbhMGWye zD_ag}caJ(m>OD0EQg88@5CbN@aG}6N(22#aX3HWKyQ#8~kxB3PXG5k+n6SK~AS!W$ zok}_vyN9Jp1>5m&>bLkCCDIo9se68NNK7n^jK9d6s{W|oykMklQz29e_>PC8`1_-w z8<`<1O6PEI6ovcd(NCT|F&Jn`gs3-q1=BwRkml#&%VwttT{wl0kdTgk7Cs?T%f~07 zegYzs2jFZiP|7DHm~D#N1376eTE28k!iFP&$^fKvkC5)b7dRg`-!`l5a`UJV4`&zw zN-zQl1#sKMQ&Tqy5lH}E$RaXCxg$$?FA*=4u&)hx_{rsqP&YZP&_?M)if<QBCN{(! zD=IK}B}Lxg>iqVhIGvCCA4Cb>SsRycoYPY+BVj#m!4W!!b0`KRM*)TiSEdanZ>^QY zqGikU;pLP!d3db|@Kpofs%l_mZ<*qj$sY#*Jnr|T-uLICc66JSvmMO6z=xDu{<Zi) z>cLMvM0Ms6(oyB1=OfV(_s;7U5y|_$0|eTQn9nXA3iF^O4Zq$)`1KBwZ8T5+lUra? z7nCu<fJ89tc!bz$@t~@ERhc@H2(>Q2!Rk43<M?;MqBEp^W0AnST@}G0)VhMXb49eS z9{YC3D#!Ay?P#h@i&}NU!oKBJ{I~YA#;yv5a!EmZxme=Y>~5Ok@&^2D)<?Pi6(KNT ze!E>g?;Z*wm@?9de&*~otuF*oIP{Ly+qf7C8G=&<0eS}+E>^lSc|#x=skEiKo=^xP z`X>qU1)cC&gi?-ke|xRv66g(!>h3<i;R^fuu;1)p@){UFtIheez!XK?5%T7HVOyd@ zZK>nzq6BYGB-TBgLX23B13jtF6wr_9YGy0Z<_DW89J)hbI2f=Qq1dfHLvJ5eb1ct) zZcgM%|0egz+Cuupj2KWD5C%D_JlyR}KAKm?9b-!8{VIsa7l)|wiZWBW0zjabcPikS z*$1(9#Ta@&OR2m_CqGTE5m=n{04>cq$z+l_P%QI37=q1NFCOU4O~Qd(S77LiuUWTk zgC>ct+HC6`l<H7D;o)<4rfp7$Xv=8Y+#p|Eq)$jG?$RI?Q-PhqE$6aOy3hWElDFR` zNP=Wk3xy0Tslti!fjX6Ckvj|{=9r9>kqg5P+OQHqiWgc}*nL~injL{4QkYcNTVgUh z(r^II4F(#;{gIKfV<PQIqGYL%5WfrESUFUaE9<t2Ul*#570)GfmR^VD9)Xh$Fd{kS zQ$zweo4aZ;{luN{s7K(7vlZ+P33latHhaH0oykCj`COb!&}y1OCZL>n4mSOZa7NEh z$OId!9A)9}EMAO-G9kw2Uh6HOOV3C!J-@sFU5`%q#G}U(hFxGZlU57&Q(J6yWD*ZO zGBUuP$Jcfa!s}%(a}exN@)Aat$p;p+9<Uq}u*nhrut&&?T{%EFU6`pG!$pPWI2z$- zjP_f!CIlE<Y4$=%GmMbqkSeF)NdHpmpD&YjHb24n7=CI9_gnDuQiZPz9g`9?zCS*e zX%s-AUcz!rxM?IzQ(9)KdUW*qXn>`2$A_@n>;cO<J?I2_s|}hrlD~TZvP?O!-oM|$ zOdv7H@xZg?9Kou#(QK;{d7=Ux4|Am(J+=XwHYcD*e#Ag0Z@Fi(cD$>~FbkkZw3S3o z<r#GUPeekL;KhgvUy8ypww%C7M~e{Bq+kvr<pnzYO`ol^bA0^FHASK2)$QrG^wDim zUbuI?g&<9<-gII#K(foRl^Ij!+=Ez(Y!CF^@F>g8Q;VqtoP5l2IHK_S)dp2JbVQK6 ztk6{BQlT1_X=s|v^-(o8<`Fc*Pskr76zSJy>ZB<Uiw!OdF5*M+xO(0K0(YD9^1S*2 zHwqILe}|F5#E8g+1?d_u8J5eEDqZo_2H&{g^X{~IEC6r2uS>h+dUYZt#=8B1?TsTm za4v-!J&_*+u-B>BK9VE}BL-iwTPEDkp-kRl;mm8*ZrN3PV(h&UB%y~if)s=A{jiR= z$x|g@eH=u{CO;c9P0ol1Xsfv>BbzKCSH~psc&1osO^6BU@n9=6S@i&yV>)#76aC$t zFExidTXixhN*^WbqFniAv>-}w^#$ZynZumlB5`OZ{{}bfZLvBUF1D%G?1t414DLSD zreiI<dfN}v4mh=Bby6mPq;j*Lb9RlUhq5}*W;_Lq47AJmG|2py3(%bYmJVMxecBjX zP_YO|#>3Y3>Fsv?$FkcEXu}9a0$R)rY2Akb$xr4nO{?Ag78@A|^@N2w2)jd|9`Tyb zo$kSyPMZvSgEuC0YurO{;tt*_pc$PZ$xSLPGa<{QR@Ba}ZE2qe6ZtZo7#k)~_QpMW zZ$oMK>lQ=N8J3pp_52=+K(KevKhB7?d#{>}jOERp3h-n4wALc!bJ!!jjE>Ps?&#XY zwdmuUNu+i6BRXx`8D5fK7f@X5*7x-n*-P*0DA8yb^I*N5Rk?P>kXx57vs`e<qNZ1z zOH!y;oKG+wP{u0I;K%er=%E#lHOsl*8ts-iI<l%se89G${xCjabh^bx;_Xkk9<fai zn7#bYa#7^br~soA4(d#bzCJH!kAyf@8B4LAqEFiO)8p)UYF2CGF-C*ks9C5rcikB8 zAd_&AHS~pIW(}I}SLgi^=WI;mnOdg00W1u;AixyVa-Ku^OK_H;!(BadOCt0@)YBf0 z9lWZzlOu}2AyYo|vj10v+4b;A2=!YT1U5a>Y|GQIYS=Y6j8P-7je$)FXY8X;G2Qhj zQT#K=O;vAEvqTrCBJ{APEuiS-bQDmd%3Lqw;DIdPRMHh*&in<XD`AmofbQN!6zF3p z<ts>62r7B<S}Fkhj-~~$!h2jZ!jkkHrVSBVE&fYTKUpXz!BL(E*^N0p4e)4%4^J{? zHG(iGiw<%yHBk!?BK>DJ#^lN#llPy}?LeRak+wS!cB5r1o&kS|vOI$oA)RsuPtmi` zg?GYVUt5OU&Rh<>=xAmvdU$nsKK%(ZgVta1<sLKiWQfDPdOj84m_G07Os<{R*+4zb z_ehkOxWY%{;lD{9#XegF*?nYo8e;IjAx}Ty#`3y`b5<V-qx}wU4AFVBh{x+QQKf?+ z)o$&e@D=pm;p;i@Pr#hN4?8m7(h-rK12A`T@m4-gsBw2h=!s#R4t@I=oHHRnSG=Re zb%u(anc=A`;Hg{2RQfR}MZH<~#^<sU_NGu;UX9KhJ49sa=TU^R8r+P68YVtetCs>g zchNi=G>sF?^Vc@P;eP)BG6O@CJVg#FNf*5<dNJqDh*lvemw%&Vze?3oxRG1KFwu0X z3e)PwW3IJ5g<>Z1Z2KHC96<I`rcfqhC}pfV_HdnyC*jyz3jm#2w^316Py5M`08y<d z0W{XN(U>UCB>+1KutjBDejzJ}y8H~w(gyY=%Ca;}zeMTj%)yvLF2O|c8>rh=W@^7! z56FFgq$(E*=8z^+N7EO~yccWlWbz4^{R~~H+&AgdDY`!WwW0wCET$an&_uwvhj!qC zVdsvi+tG<p4(TgXe*|w8{;^t}j+e8|Y5BDOhJH09e2>rT^9H71FVI)LQNgX#arV-F zW_3DkzNj(TdUA{Y1bA%Mm{^?OLvV!$R=Htj50qkx==yT3s3)#0jTvP$?9d&nYWLwm z5*_4_#gV6mKdKg{J6h0DrZQ6xs<A`24EsW6ue{aT^C}r&czZ9Q23~;1xjH}(b1ePT zk+-=TTxEJotvfOxzQT6TfPlme#fmFY%5aT9N^(WufM}r#*h|k5MZ<Z};hUa=YJ!$9 zlbB!418pPd=5yb!ftfuyj{34;2v7GtsE}&1svJdZZ95DuwCa1O1eLgVp5`bH0Ek2$ z>KT;7spUcS=a4`&mNwSY#gi;@nt%KUH5tdK7r1`hu!4bmKG(&A$Xe+Gimj|kQO#q( zwyLU1u`Lih8c9$Z!VSZ^A5*U?856$A*IdjlbVVP&`B$@yt#JkXhNV)~Cs)T7lC*vg z;E9(#QEyh~m2xevxA62Jj?aLZ^`B?+IU5JA5{30(^td$X2}Mp4bGJ){J{ok;$WFF1 zJeT6ABq7>1@<Z$M_8o^KL*CS#XbEmyP5>)ESeP+}hTD9HfPxuTX0hap3-wd6-?`SH z7qC>GSzQK%A;F#m(QL#nCePs~?v<Fr8U0xd8Nfdwy<Q*3J{+!{G6goEE~ZSO7gTd( zf@=aZ;xWq~!2WBMj7&g!tD1(PPRrv<?avNDAl)(z|KUz9ZzzBm?x@5&(&Z4XuGxQ7 z6UH@%iEmiqCf4lYU#mm;w8GUA4K0`!Sk^CSfYt9mKp5YM1uUGvADLW$zaCbb<Ko>% zy^N9z%DU(gR8ne@1ymj5R7)kBK@78%3`NtGvpxRJpvsJe16;9?23Th7xzAAmBGii& z9}J+$doqfMt#@b?{TNsja-AbW6vzWk|5jD)k*TsbIGjAtaivTi7YXD<8Na}}Q!4gh zlOts`M5nQJZBk9nV5qhHq$+C48=C=HujD+HUTPb#{cCeTKmHRwOlvWInj4G>i~QUd zD7nJsiqgtc`lL8b=uHl=$yNT`cR~aG@l2(UKG_Rnhl1{DPr;Gr*05M?<d};XEs9`~ zkwI_b7IT6z?4#?o+@d%JJTEr8Q*orNAV7KOP<HJOwsmGoe>1HNYSCmf=4fZLR-zm` zcXMQ*$^v<hLri+ANwwwtC-V`|xYE}R<25(`eWqQdc<c7ePU$dapXw+nQ&Ota)B1O& zWQA0MP2XGv2n|+r0sdK2fQ==`S)%tJ-!9>QG`qkb4|Zt^F`CylMW(`QgjGv}L_dTM z^=Nwf2nk?7P*_>AR}iwUrM`?g!CoJp>H%(#F!>2)&i~YhkV}Uw8J1%LdLSH`yQ!b! z4BFK!k6#@J#8M`IX0fCN2<7|FI#%lOy(A$wC{{fwQ)9&nB6v{fo}L6&y51GviL5{q zeN=Ro6rgV#+LGs(%bDF+UI96{+MFSsK8IImZXPy|kHxXrtqV25M~~U~d0g`4^0?oh zmxuFFxSre9!?zWjuKM$IZfLs&<@D|T(~`f6f_2H$1zJO#KvBpLFFtP`Hpc=g!1ue= zwj8LX9)=-iQS9{NQj;r(IKROFHh`~U@*X@@TBjLlR3NUb2-5|J@QYr6W{L@+{Y;Vj zQy4Dv2n#Is0T#IfvkZ|4Ht9og0MoPB!J9(R7NA%e0tMP|M=1aw*cLEZZh3+twiP_N z143^82eurb6ZK`ke^?%&W@&jW9_#Y%=dex1ISfAs__G<7gP3coq%s?oODyuCn8(NO z4HeS8OQEI`>gmZJmM#1_<qtW+VDd)}RM%q+$PoFJ2do-NP1Z$bf?Bm_{pKWge#%qP z>kpg?k%jfKM<`4!9+sHMSF@I(wQd+~kJkPB&lgZK;6hAd>BfJOV2!`@fewYS7agW{ z4+eU?b}kcM>loRjbWCPiXw+ref?N^Vf|ZKsQUx6<<9|@uZXQGP<VJ>~yLg(hf<kye zrYT`E)PYJyf`CmR>i1KjT*~AA)bb#BKa&rrU!OLAlOO~$ccsB0BPR^!0_XmWdOdiQ z=_vCcjsG0}o%}AsPZ58(0gI01elYkzq9~D8@^A(d>xIIXZV0d=B_V7Ul$xd!&XW-9 zOv;lO#hIZ3prf_gkcTHnDf93@OE5oNBs+Npk50LI{lfoZrJ*1j2X?9nP+Vko>T43H z?3ZO8k214uuCghsuUb_mK8n5dfqoV~36ySorz-W*>B6$hFm8zH$N|A{CL2|4ea1)~ zuG5SuI|m^Sl-2yDe(pwfnq-^C^ecq*YSWm0U4HzHSsE`M_s73hNA)i9`T4LVz7BLf zy-QYm5D5YacB7VByj9Iz@GDDahF3?nZ^TSYrmzvIsskM2bhx(~Etj*yrdSt$ZPd_e zGhAzV<`~1I7yRazC87^9%<vO24SNLf?fWMP-!*`W{f^b`Dp=uH6j)SXsF;wLpcd_6 zvo21Hw||@tpJsR#INCcn8vcB#e$Ib5VojC!AOCQ?Hf@2(ZpmPH2eT`UV0<VL(y9y0 zmGY}mltad_DLnHKC1hy{_R*5ji$V$7qXMvn08qhgepa&!-}{p7ZAq%dhP?X@Q_I)O z*SiPvPBU~wlOuN9hSF7Vn+lVgr^8kiJJdNsaT|6Jw-K_`7F-zGhMrE~Uig3bAIN7j z!)J!=fM)CkV-g;i(#n_Wqn1T~)zU|CC<^f_ip2qrM^QcA@jCMXH7*uFinUzGto9%X z@^)UALVgc~O&K>YCAh`Z&X}#stB*f+>pzeC9mGW+-v2mm)~DZ&tEb}XLimGeP_~K% zOKMEr2TYs<sfEhI{Nl9Pec2XsGI+om3@ir4##gro2r+$a``mP4gPv707Yzg+%Ih5t zPa&<@(~ev<t>YpRW;1mw#lt74c0@^uc`WljM;!QU1^E8|g1q{;eDU#ogv-*FNsEQv zaMe?vO%*rBH}c$AOb$X(DFQ=Lxz`U?!8Q-$jX#KIj(H3G!>IgB7isl)91u-X0tk$m zB*XGO)2d|=TN1l89?-#8dq&oHGH7qRjD^Oy-HDIoL{jbCdEx^H)4YwJI@97+nht=0 za3f`G%9Ije^$%+yU$^eFy&gNSxdVJWg2R|4YA|cVd=(4nRib8bt{4aWDyz~~6F62n zc#QM8olR_&{IuZ*Gexd5h{S4!`}fc%BZ<XZjJD_|0{9PiyiVL~&&cECCz7~1$dTan zgl&9N0c&B=^%e?YCyr&0U1=1+v{{h5Q&fa#@Tug5!brHM)1NTk66*Y*!n^=ie6_BI zU0O+JpQLXolX0l|hmRNVSQ*X(gMZA3P`^Zr89so)G7^i3X_|;ULViB<l~vzEGa7B9 zm<G0Kq#%fGe3EJhO;nq28*F8P02g#AaA^uZjfQbb+sp=@1e$&H5Gb>c#A0sNYb?Bv zlL$TO4SK^3S~?PcJpuZ1`4L*IS6>P$%G_k(xFBK_33c#lyWOt^B|I*KB@#ttJ1%@q z1ZHGlE||z07Z~hU15NRFaoijGVM4%R+=>IY{Hs`foe+d2;Zu1xE$LB$7$Zh}Rlbhd z-~?eZs5OXJf;owlh*Iuxb3Eb8Lu@WYSu^PD-pz5>&#&f)EjbYZT$o3je9tsR8sQxO zYQQ|RyBRy=-iKJ6Y@fhedtHvjk%lDUJc4I~O!^J2$gLnG&a^uVBzc-9(jI(_2cqUN zZQyRveYT02&29rt!>cdwK{^4$_^TPQAzkYw+vBj`?66PS3}a}EdtCH+cUnCb`gt+C z?0R(~Ln(CCDBB-}0A{JGHwUw00`@x<+eg8w@@FjTFt)|aJT_f9G?5beSR@gt*rvdx z7}7l`_ma6|6R#{mH^)?$ZN`HaH<%8VIEw@&xU-oH9tH)IG(a~oUU@D+9E4C%#<e+1 zi$rY07#F@bTnkY$am<elKI#1Sp@4@c_dkdTy0iIPXS>eUPU#0_UznpTvlUW;t;K)t z)j90_ST+t#^|Q&%8j5(1#!j<|CI|y5F$>jM?W8Q1+}i%UfdKQFlB||4z3z$W5-k2- zos=0t_=SqLelUyAus!dp$58{uimJch9ZtPm0YG&6TS7uU6GcBjiz9(*d-ZzT{^Qv# z2eyZTotZwLxla!w3`{SyhDCaM#AYA_na6IyRWJ;o9&M|UoU#7_9HTXp-t|rJ)O1ey z+nsq~-ufLX1iONOap@DW3W}U&Ew}~`h1rkt9zMj11_I4a4NZdWd-tg^)rSudEL=b` z_S22AhmxWSeiF&z)revAJUk}a-TmB-K*;zqHY4H}&D<5~8060p3unMI@treq&l@y| z1Uy4D)iKvhqJDN^qb}z?k*YX<PxOd~gqhS72&l#oFe4XV+nlX)$l;jDA;Z3R#*m<C zjl+D$^8DxKL@w=ba%0{$#++D?MN!{akOL`w?<~s4NRG%reGV6^CYLg9f<8`DQI^L- z=4;xRr6raOqQ@k1U~7c#R6qmygP6%NCe^fyutZ9jc+p$qOXF12JHem~)XPJ$%sr0^ zf;tdoA<Y0x0~g-Y;JRCQZ@9w4y?2&j8;sPZqI@g^6Iy|&##>-7FMbp*Oh2F<PEL&k zF~wyX#A2o*8=}jpZB&yfyw+OdL|}ZEm5UHUsgwGxGozy#W*i$+>_C>X5FVCsJ!6+l zyUeIu8;%E!!<SNkz{c;~R>W*1?M#|t_aib{evS`@Aw)O^Vs-(zxEM$iAD6kBOv~Bi zjAIfcrovpPtkIjgjD^P1@i^QiaJ&IZB(K59yxUzt<y6(TYb0ym9v`)QaQ9a<D$=`; zP3?o>cW2Mf4}NxM><|n`Vz_tyTumji9Gt^jQJoRlW)WelPHh&^FZjfbGNG*K=$oWH zef>ji{pwlG{CVEd@-F5D4%mB(17vi?fOcqz=d0?<pn?d@aa6tZMzDX0jAj@}3^7*x zopZu${MKLxm9L-=4BMM!4ElS9$Bm*<Q4bT7ICYRCg&IpoJ^^)llTXl1IeQA7am>aC z%^-%)t{`x5%R0;T<J(I9W#1pog@pYnq>*k1uQ~*Zp)%weIY7@EVIyWTS1D<$$m~!G z@;+*N;*$Nn)EU4bfByh7MNN@nnN%n{($$_+hh|1`c(`lk%>olLGw<~3@O=6c!tm>_ zXj>YO*iw+kf$6h$r6DdLx-OjOP+2qTXvN1)^|0U-8_hp3o|ux_fFa;*2pAeDs&^!y z#=Ju6M`4RP3A0*y??r40f<u!|?%_+6Gy-La$}%G{+w5QvVu%8x*Bb~((>#(wmqB6y zC`rUqmnO5&MhmklH-#!UEx^^_=z4Ld(T-3dL2f)QMVSXZ=mSu~)B_^y%o`&^p`=rd z6hFeN)_v9Oy}g%EWF9!jVLVuQ1TQwKXJ?6%XDKu)C7lm%VZ}2rFmW?!h9)h!2xVaO zxEiLK>ttv=qJ}LW<@g3wVEl}hNfB2iquJ!!S?_9?sHbh8R^OMQM~bpog;bC=sWvA@ zlV|?~)#~hDR}F1VV@l~DFkdV|W>WvXp$dVy%-TD?Z2x_g5is93j5aXi%Q@(Q0cou4 zVPQ;r`#GcKj6K{SC5@r>vN`1qXY<S^nC_+;#@rjvgHRK0aV)WJ5`%VcY;W*(T@UX& z)#0)<l_GwyPnZ#{WFmSx&1;Bh4FDzFcmR5J+v4v&Gi!z1wO*(!uwn6E!r}@exp7{O zV>YTwC%+nJkK+{U1wJFcdEBg5=god+W{(Sh=zaFMu<zA{@COSJ+MRB}4|uHLGJ0~9 z21lXFE@8V4aCrO+lcq3_-;^`J;hg~t_G`~S@R_pU#Mr|(tK)I?1LNBIQIorO>yMZe zdH-|+*<$r37a>Eve9Tw9gl)dqM8~s>Uw)j6e-~>I_$VViw-LFLosjNdL|^IcBfO6S zqX?^GF79x;I>*O<KD;wnwGv*q?HSC!`&xWj+`Yd$?hnQByeUqQ$i4bMOL*4>JbOsE z|FVP^WoSSoKvcK?_f#B(t*)*Ee{3dl4{<dUd5`c=RcK$2XOXNO2p)1va7Rs)MDE`_ zMFKbQLX{8SY>Y`^J0{`x@C?Gk=JByO7Q1z^#P>P$tk6b+pIx?R7W{6ATY?;V{jfT( zDx5f@kmPFEKCh7&6uxWp^@O?=V10r|ABI8=P_HOf<FY+-jy!3NApxg&O#)m@ePoB; zTUoAZSn60N0#F1HkLhY?$I$IeDy^%{Z&wfBRv;)U_CqzAB9gXS$OL`6|K#WcjOlk> zTCa=vixhMS`isw-hs_c6F4%N9p0|{cF!_sKmyIU54{;g|Nu=&meK>cNF!jr|I1Sun zZ<S_Jv$ngEG;e#;(x>I_Z1y|T0c|z#I0vM1szV!5&!|sp%85~0eGm)9Wg5hyOm&5R zYp}h-zK1rVwuI1Hum>NQY731|m1$>F4&es;g4VYt!;z(pC_j3HrUE0|B5blAP}NW_ z)MT@?hG?Frji~J<l^h>T4U3Y;M|zGm*B&$A-_7QzZsr1Td30+TKgqP5Rn^8S8cELx zJZ7UTFrH?;e>xnC(+S`4SZ&}T4|sQ_YI<mhi8NVc$~RYUmI`;Lnf>Z%RgH?XM&`#$ zbmy<P0NVooTUE^SB(Hg`7yhXJ4&lAccWCEuN>*X#^Ra-(a&4vosTB^cdyFv_P<E7- zTVtS1h0MVqR$s<hRG6Z`627f3Ze^ra!@6(`OvX2jn*yH-cU48H4J#s~cpz{s0Ey;M zc&G3(%K`#^0CR;!75_s{QvE08@Eh|kBRb5R9Ym$hX7tus<G>;iN8u?v*knS988vcY zfw-9i{{OLr|0%D+(mqpn04&35#C2fk7FUOlq716`RkM|#xCin_@Havos@?{m@jjL7 zvz`Zq>h=g+wqo<fX*`UZDT6{LhYl?jWMm`iF*zv<&DuyBZT404f?sBY1_g?mednK9 zc5VS-q5IFM0(s4=q27_05wcRp{r-%PD^+m_76u#%Fkryu$$XJjNhK%8h&t^2(K2T4 zs|IrGkRl~TjZE+t4MLYd!e|&l_)Ov{BQi3D%LZ$)3K35Sg!51wK%7IWPX)tOcnb{f zDy$42*cPBLmnTS~tU!}sk0HK-KF2!IFZ=z&@(2oac`P1DI9&_Y67gS)A4JQZV(u6< z)EsmfYDiA`_coL=zEbg|twvWVvl*hy+?pUTd^RZ3gB7uH3Ld^e6fJ(ANm=|w1N$H? zsaz!7wd8PBq~tYFy8}`2aFc(bLFssAYr=R%S3@CVl9a4AYA9VS*;Gk$(UNL&!4+=# z45TT^M;d@DgPDWKM;{y3os9@SvR4fsjl4{27BlT|53^liDkC?3j6m~7VOp?!2T<un z1wcg%ctu4g)Rut}TAd1^(3iB;r&(4-UQZid!xu7*Rb(P1V8=3OL3e}i1ZhuVnHbmE z25Cyi7aUYZ8*lGXP`?F1jYKv(Y>IX9*G4tl@8A&u?5jBApKi|2hi$QV`{wWoHTVZW zkow^Qf9kOB+xJg!oQD0erP=`ienlZb#G;l%Ai>9d*sP1w;_V-&!zZY&QSkl~;KiRY z&=3tVB~6Q|F(J05(fC~3I_}g#wv@aIHx0&6f)Uh7L?B~;>?xJB9{3yzO0>6mA~!;E zPc_QCawLe!@%&F!y{5cS;gZJz?K;#b;^9f`d-ezJT)B)N<VH1y_Dt;0gh;F4-dy0m z$>{VTd_61jAW4ttutz2fTX1%J+sl(UWD_TP6i38`a8hG0sT~vZ%y+UVBzp^^!O@Ya zJ&6De>Yw#*OHSXpY^^w02Ogb=9|HDSnW)n29QvfqLFrHC@?Zs=)TZmB!Ie4jLhah2 zBgWL&6C%b&z+RV=?~kj^`2^Xtn)voog8Vign<{y`T|GnW?pWzQjI2p?pdxCj^_a0P z#MrtmW74GFa&=C3vxeDQW{Fu<@(wW1F8;MTm{Mnz$HH^GjUSv9F}o^$UqCNm9;_#p zLGe$ZB44*xAHO|w$yf>?t}VJ@c$5L;s=_}AK#qTCWk;d-0h$pO;8>xH1pk<)2okaC zO}36mRI6fN-~}~(+@=vU>7fmdn71gXw2+7Y!0vyhz(z$;T=RXexQcmNU{oB*DbZ2E zqN>n0{DMjx@K7OZbNUl%0-(y{3`HJKhwW-z6+Rdda9N1}FdDfCfL28`BtLw_hf{Ex zMNI(UFR`5sK7c_W67`9((&8XY7gGLIA%EFr5L_|)A%v^AM_c>C7o{tvYlc9Q@3I2P zkvJTrQZ@8>1!q3Q?b=p#P%;Utj$Yv?pMIfAe*QaXFv8cpLV#`?<}_8AQf2Ehn(P&T z5(T0L=yiL?&+B)ui{a3U<p=xS^6%ofH!5kky|IUf@4dwLu7(4kq$wt5hh(b~f*Aht zr7F3>>v%H}vKDgxp#6{vkh>o@#}kekW5sZHcF0V?$>i3_Y#G}p?fo8iShJO*GTBKh z{POKU)CHsB)^TN1Op6hPs`OTsU$fJI6HFArIPrEp<%emcK8{UMJc(ng;Y9q{p6mkL z;HZ^7lw52D8s!0>Z0Ri{!hqSpR9XyT#B~CXjz>a&K0J!~5=T(C$Q)FG@UljV=`BPJ zu)eOOFJJ2-a)J8{$$@yAxnT7ST+G4tJJ9Io<L282J6j(WigF%3u(^lp`lDb<1~LVQ zsG+rR4CETUgt1TzRx3K`)r2kW8ZnX9>-KNB2|)>;8!-`n;r!O*k%-rW1Mw7N@ztt; z4HUBYOq<e+Nc|o^Pd0-^^riCcKp2I|igApT@&a^nXe1!`ZH@zkrE0meifE28Lxw_v z^BxN6?jZ9=hn=>0dOIc9%JNPo>MFjh{hFHOR08!C{}m90?i)jrZ$@L5^jF7)F@4tM z+3SQeh;q+6Ju_ipW{@%ax+8MN(W9jrkI4&p>@Uai<6191Isq$VbV7Pjn!Ok{ZW30! zrg6c7`hvO<L&=lMCw@yY7LrW$Q4Rs$Fp4aEZUA3~*<z(VXj0+X%$pm?-JO3B%TOcL zY%`8#_ZL3eA^;DU_U0uCm4z0Rjv}%1Gjs8BUA?lUh(=d>f?OkYo{p3&tAA`&sLIZQ z{{^38`UUf{<oy9tuhbDM&Kq*9%qZp!xp<`TW9vE`EdCGR=~g}MWQwC=(BrS)>D6~+ z!KtQ;mk$&wGwBz8;&JH*?pj@lAO3)h_4&IhCTt#O(@?0?0KV~M_y;>a@JFhE@UJ-i zV(|{r2$)Gw|JwN5>eaNI`)eLmN3ppU(yar;Pr~$^Kk#qnP}PJCN^AH!7xNkN?LsJ` zw#zs=N+%1<do|gWa&Vq*Hne)DiH;dpP}B}?vEr0bO%QC4XdX-8F-3q&rjsT?V8ADR zC>~eO+cR{kZJ@snW;DW6zC2wqF0L<h#2?!&B}3Gg-5DFzQs0$9W+-&dltp@Tl_!xB ztWKRG_NdFHMma<gs+LZ}qLx7lu_%&=FjwuvZ*M+H2eRumV<S+YK~XlPb-jkU5;ZZQ z>0(D_?5f&PRj7)CtlSB-*nMpJN$P)cdgE$#lFB2Z^s!5*F;-yonR!4^lJbVePP3i; zg`THHP7hF^E#CErcIH{Va}`uYc`B8LBSG~XJEtR;nVi<(v@$mXF47@-pkzmbQsW@# zP}ia&dsqriX98@X@sNw1X*aiKoZj01NQvs_>U-;P`~x%s&Gb9>p%e_GNYV$2;zLMP z&%0PJ%%ssNL-ux^jOnQ1RnBh%$id^@nnHcckG%mT^4vJrExdqY%$44-;2E2)x4ibh zfzguTniQUHNBaNRd$aAfl3Y#rW%|08sL{T3+RQ52E?d9sQ>#|pa8cBjO(#XFNXkP# zeSe5y6NqU??19v&KdZCzq$DzcKp-#!p&l(!ykVIFbu_AD5wf7+$&A>2pygzzx+k6+ z1QE<iO1-RNLUB0A+-_8%Q-}oF!7A^JKDqd70RtUgi^l~9!X)(;L6Cz;kQTf}&=Tzi z28*g&Bd0xvb%x?lKua{_roQI{!o>HEV{Hg7cg?ZE1Ydk+p4Tl+Z#3n|5Y#)>jn->s zV$(SN;|HW73dZQ!<0w6%YUAvb0p%-up{H!LuuAoamcjwC<X2YNc2*5E%}3-|9`&3P zabl4Uw304A11DOW(GDh)eH{~t=i47MuJ!9t-dfRiMx7t5gSrEHKLEXeG-NWoH04C7 zL;lxnw%weL7Tf8=`g^s1h<<U4L1~nTy--oq?Pm1CerC4aF21a0^a0gQuRnpI2j}X^ zGMYMqL4C}BkgsIgyb$5RhI^}#W(9A{idXuAYlX8Nd)ryP?CQFSCXpvrN2EeHDzW!L zk-s9P&UQ}aLHYsNhyCbyv34=$<N?YzY3=<G>$*5A5dnFwzN%6X)XhXA>ph(F0dQ8$ z2S7rxi1r*zKJ6vf3F3r^o|HzG<Rzz=S}<TugcvVwJDdsIL2fm5!7k_FTVWJI{z9pE zsb6mD%@k_dS=aY2KfI$CFXv070Cs0nyyB)(%=EgbE>C?kLj?twQF5l1ISlizMCUi& zz;E80EHKWIzK_?%iPs1YhEHIYmT(3_DGB#Qrvb?oDV#EzH;^|yAZ`r_6psO{*zSwT z`gxqE^Wo*qw@jtlhNo2HV?9P_ke2eET?r|V3p@|Mt!xA~q}-rrDdE9wgS_{yFaBq> z_|H@I`vT^cdG)&5=oha~qkpom@0yXclu<HM^I`JAsv{%9{9?OUeOXqadOPz0Ok$~N zV0g6?P6=ViJugu(nv%`~ArlA%NGaR}ZowOnUBIaDp!<NSRy^FGwf&lrcObi9fYKYD zxjMo*@<5We(R{_xg$TLFQ1-%Njw&7sYi5zF7Z>SH!?|!;Y-KT!rgc>CyPCQa>a`LQ zr%&`{RTd2hh2)f@vpeB9$or6;FbeIsgPA%IE`6A&L!qYTgs>p5kbN2E=|FgOG)+5U z)sI=)358l3!0JKLE^<Cm$rQR40||l%g8dmDb)RpKOIj6gVhBgnOA+_bAQnB~VN_4# zERD&LW&Dp|;s3E(|5zz|fAo_7G^~lA137drjJjxJ$ae$TWUgndo^O<AES78Y)sOm^ zFpIdC8F2Cq?2N@yNOP0VMLOGz?uY|pt3tCgLnw8`jnk*hkk6G%ISAIOZcxKF2a_Sp z+Z?zFsl<*b*DLJ?u?JJNBLW=_(r(bZnVmVXdoeC^0M+*@snw%5ImDFGgv>#LU8x8f zrP?EG4rbuuHjWQ2U;8obGIo~v82Bj5fIEfXvi-H1f8DHCi$ANo_rEra`L>SUM*h^v zw6j)tB7f8gsSqn`t1n=J8N=Z4xC927h`Z70VDb&cPGC~j7`KF6YplnOTG#Gq=P1k= zcca;6=RuC4%;?Jyn1f->?4Uw3I;!9TE_6h=ox!J#{K?9_TG@)zA0m1iK_ml5ri(e2 z>dyL+aGv%%f-qzUo@@9H#e6-O#Dk&M(O4b|uWn{^H>`Rwu)Cp9OM{5btF=H>GKK6F zX?k}<j|qYZg8k{^u({p|{}zUPCwK{?rXLf(8+LijmS_CK+1M=KFIIop=q>xns=8qc zG;$z^?nSrgE!!SK)$Av`**M6!>yYJUjV}LZTWvVV(=+!s7Kv6AZ+5CmP-sJkxYf`P z<R*tHgQfD_qKw57aw5NUB?C@T{G9Q0DTi|-v3(gz#)fhU*SovY5jSR|4&;>NAXv+P zabA799yypWyMp7=$-&5h8y8M(YL&Y|?7>;+h(Je|pd0jVhJOz1Ud;O(K=r+f*vOrY z_#7nIm5QJtO!bT<!v=ZI7j0zCS{BX4K^dziWPd-#bq)?qM=fcbZ@Cqi7x{}OC{|!* z<ijg4H}V%vZGx-S*74JROiV%0{>_j6=~aefGy>toMoWlU-z9DWDD$Y#I@S`5m<;7O zbu&wPIl5NnNiUH5FjM+Lq^r5o3l<&CmI565F<%M**7q@DKXf-^3Xow}F@jE8RU0vD z@^NbsRV)!gaUZ28Gbewiy_O4%PG5hWJ?>0@*XSkxY3TS>2Ix51<MF#h+^Q4A=6Dq+ zUXYXp24yEyh27)YVDgGK!znNzn-?42aO{QyuW~3e#xm0DIhQTY@!a?sEMC>f!h7lC z;nS;um~o6u8*yB^8HO2f<44rWAnXLO4@0mU0$mNjPS86Vei^X)G59h74R7dWAi=Iw zmVwv2WW=z`_+p!QRkQetU*4V!x#peiMQDV^rphcU5qWy@ndTyWynnr3?W)yImwKLF zg?>A*LDvSA_;Iu`@cP9dVDRaa@n-<%k4PHZ_e%9r{-Ey`O9_jv1r74e(iV%SEIw{+ zCC$_paP!U97K^7g)l2-dXPh{pdpB!)#+B2r4A<OvXd8rU^~_Dp-s7TeFk?EK<JQRx zZi7c$l(#X9`^BIKGr4DkI-1S>V$;oxZi7oNW_26D^*v77UQtOBVsfXpvxPy%u5bjc zt|~rkhPNPKi#TfwC<*=AkD1;Er##j<zhCfYUDS&}I8-&E%Z`(;r(1~`ku<GKjmE_M z`AhmoJ-NsW`7u{;Q~lWB85mk=KUJa>$i<ZS7z5>>R`qJr#lz!rf_XLXZ%@=Kf576! z^z(@rS%|4#v_19NF5t0E!T_^M7iz-T?iWA;;1vPHwnx*O&!+-1w$6}k4ZCsQbjTQz z_<6qEZh%WoBl`JlySp1--Bt4?#tx}bwKy>E$zz75rYXV9=Kw{1fYk@R-{=@eV+VL^ z-vJ+5tiG@RV2`#;=+#d_Ry><&WQX82v&ZnRwvU0|pV06~Og6rp;-OSK-`LiYWN$C} z+C@Hv0%Phe8jPRj%RT8pl`suHs+-1dSbg5=hIKhV%?5iU==>NYIrmhY4UW(sQ(QFe z&(Nb7M(_pYl4!)}^m=_apKW)h0G<CdaP%PuG+mDHaJn|phHel8(FLL8Ggi;{+cOqR zsN9lt5<l_LOa7BN|9ro^BhuWDbb||qr*lf+_!fd2$|YQxFPoK4>VzAoPZ@4e>)5S3 z%8&-NQN?}N-u>zvR$@jt$EA}WodY*6l-l^s-5~bhCwD}kqhH(&dN)5f2X-%hZw{dP zUPT;AEdir9ImDFKh|(i@bC6(HDuPC-$_x9k8Mw6YTQgQo$o_u()Epf0jygC9_w3`B zFXuGqc{HMbTN5pG`mH+kiq{X=VaAw^z2Q*n90luo_N5xbk&gNqWy=J74ZIcfxAz}^ zd-Z-g{eXv4FX(-`>)HH|YByQkRX@kq^~(c$gp}Q1J1K!F*YwfR2_gUYYIav`!hA(f zeT?VdZ<$je#(g#<3_T!k@q)(bRGmNG?)r(v>EQdC-0gu2a+TWC>=WA(xtPpRit=qH zy#jW2PbU%Q)vh?7#b<{43Bx{KOZ#SJyKqE<@1h1C2evn~hc|0mArigpl8%%24=3Yy zF$nsZm$Ti|<FcAo%jyBi^vS<4xgKn*-||2>2!Scw67%ZNJH*Erqk6zb0|GnRp$8;l zUVuPJLtoXjYL3<r{j1;yk;2+xY){Tg0xy0Q{$7;PasdaZXDp!e_w@1uJ!zx}rS#ai zwss7Oalz;bQ1!A5G4t5rxdd~6Mp(7xWJp*rvwRyuu01MRn_{;0;wq+Q)=qBD7WmlB zZNJVo)!mf8{!mk8#K|%m5wVQ1LLqD1$$*&eXI<tdH&3!D(0OIfUBSWuAI`kpWC)Uq zdX&Iv?Wz?3Y3q@BAY8{wkR<8`2{9lHjy$6~x-f2w7m2hw*vB0eW1}&}u*MNL%F40O zLxcHuC}q%ex|}bcw)D{7(<(Lz-HbQUK=!s^ohQrQ1JWH(*OY7{xq$!Xk#r>}@HVfu zb2+W(*+HZ=AQYKG55B9Ijmg+CYGt12!n{LRO}p>e+2srD#U;bbsS%UW-K$(9kzmA0 zz^G@rGoJuFY%E15vMgr*i}h;y<!QFLqZB5Gh6j<Mk@j3St&pCa%`2ZJ&JwDDo?iR# zX@uRsA|*lp<5*4TJ#XY4AB2N;Oza}}TTAX-iZm%pNov?aE?E-n145GML*nxlB?9G( zcE_aLNF~RY)eNErCd6Kd2-X{tgp_wB^NgH_2zbi5AC2?lCeksn;<0vlA2rjr6AGsZ zp>U~$!U=@JODz<nNT6SmIg1aFTHp%dvVJ{wy4%bayY0cG)(fjI7-QXhdSfKl;V8wd zVNJdmrKZyrMEh>D_`aAer+5R7%oizm@Kf$}ES2#LO>zAXz)Yc&68hy3I6TaLPPZ8U z%(#U|3UkTcN|7+yPg*LHA@O@L{j^(e5NYMN9(66RxZN`(0u*2+HKA_w5e}#(KvW+L zxqBz1F({}LarcJ=MNiQ|-2GW?*2ZQ%7-&jpNYK+C)$EUh!LQkgEAm6$ry7Brixn!X zaI}&evuZLWR1M&mIDl@o3W`kWrE_+*ui<AXJHlN%VWl83g8Cj(ulhM@?bA}-<P~?6 zRKaLQw9Sc`(dwsVt8+X=T;yB@D<u_mwoq-r)(W=yKA~v8U&lCXF)f}(&%^^cJD4MP zRZ`}X`A$TpqQBgQLBo$95NJ>ZxVVVw`vhqM0#H4#IT?ey4oqYseUb5QdgfAzhvEGo zdRd0F4yCs^-j|P0+poAQ^FQdA<*VN<4kIVU{~*~EKatefA6tN+`WVLzk;qh}Pg;DL z0GmR7n%*RKYV4KR39&A=Agmp33x*_Odn$1-lZA4y5F>B{YuQLMTT&`CvBKkef!^1R z^~u6#c#5w)t+uoK3ItpIF|}W!YE>?(i6zA9B+KbKt2~471~W;I)wb30o&gc`Kew0| zmy&Wo0Sv;s8jnXO_4n5d#Eli3hED=P{|=|j&Lw)v!`%pOX^<BRIcoz^9h5{w-fH@l z2}OPj#*y<3a8w}>b_iKOI?yJlKsu~P!MX~4B(tr$jEryj)$seQ%P8dNrX0ch67jht zPDLu5Tn;5{$RyZKXFILz;v7M`#@dSJ;<iwP=MXr5Mrhi`%E>dIvVw>?XFygHzd<_C zWTW(kEZF0Gz1r?JPjk4^OoIESSVVHZy@{Oz8f_>>NXda~h*6ZmAg4W6;ck;4vaH|h zo|Ccv9Kz9O$Olo6qQ}m^SCsRD?s-w~oE;KtM8g*SS~4+v&*%eq6!Z1N<EGkfsb*oe z*r>R_9}v#mR;Ibv>*=|Abe{?{mn<XRow>bnC@gvd-K|5T8eSVaIkavf+?t2(i-!1V z&MI7jHK}LNfg6??9tl6X!qt7_HY^||2uMW7qU@Cw<JB;|f`NL6BHnG*zhdICN0uL* z+*QG}&CBUElCE7jKe9Y&EWUKVQZZ81ZsbJ^TjgSol<meicUG;oSqJq2yXdL5Sa1Xj z<7u_G-V(PgV7295GHq{?dFU}@2V#T`K)YbCu3(xWpe4<HYiFbBQiJcXzqovits0PH z;RP}TY~0Go`7(FSxJNT&4x)~OM`h`d(Cgrvugcw^cT-l8TI^jJO#-t;1ij8Sxj3W) z@6Kk5e7+i_CPdM9lOc$rm4Xg?8;q2A_GD8Bc^{5yn*}rLuuE(!E;w?R=hrvpBnAS4 zEwoHu=j3qgD8r1&l?H{i7ZJ0BidC*Zy_Tj)DD;_&R#RF|2KrSb8qQ-hTKbx680m=g zhY_neijavig~EE{RjPfKV0K%VJo;)ygC|w8dAj?$*fJsUC%<&vAPFzz;HosIq%UAj zN#660t%-F_Mi~oJG-q2O&~+D0DI3X|<tF8Fa^aPa8XS3npMkJy^!4~HckP2l8zst@ zl)7myeRJV8vjp<>?1u51(6LTkDASKlD5BftJ>UMAJu<8*;4_eDa1eJO?~|hW<?E_i z(Fi%zFaB#b+ip%ri|zDb{hhiQOz?RDA*c#PFI3odyBWQ(pP6m9i!Vw_>cUq23G^SB z213Ysgp~zBBE7+7J=$?b>0|jof00bx2Lz(@%=|7uN_mC{^Q8UDUO~kozSeJc5wvoh z`gH;a<aQhhB1My<O_UnA?<lm7#_l5{%))f2{h{=yY%`$!)IVmAlW)WpC%^sLRsXE! zDB7ghzljtze9W$9{gizlN!>qkW+03l5Tg_P!S)t@)8$q1U_eMd7Om{xRm*O@@^<7J z8CU~zqhDi0!L<i7#&Cv{RY^N|XS+>RsmW{gFA?iea&@}<^;m%;%)v{x(6KoLX4Lm} z{Z+hAJ*Y2B4lU3pry1=Gdy3!)Rz6=MSv2{ky3e@nVf)M9eZw>c%5aUH8IohCn4>Q+ z3Fk9#Wc?nGE{|Kf>25#ePp#EGvPA^$K^an5T(<DsTt!%qv|Du{@_3(wBy3%}PWq-$ zUJ{+ulW!<7;cTZGNSz)Gd<6UkpqurYCDBE()lpC)&x<NVf}wGJ+m3=);?5iepV7(w z(3z#J{R68?!t6nelg(na@KRjFr)#2i^V`0B(}Eo4)+W*<L+=qc1smnY`Y>A*!a)Te zEgX9t;LPCU47cgJW?iF5MJsN>u~s?mdBLnvJF%yg#Rio1ZYnRiTF#y@25GZr#mRm$ zM07lbuCNi)RB)VqEj5q^5&n4BgF2GzNXS^r8UZtu*e{nUb@ep9AuS%_rM<D1FNsXM z!#HBk8hii01ZOJHji~l~is6$|c0=9kkmCN13UwcK28O|=sqo42p=G%J4E1dFr7ovn zI0$oM%;gwiQxa(_9;FhowL>~8LZVo^uwTz&@pJD?Sju+wVLMOvDDb^hL#g(EAPP8d z<G-bd(L=l7RH+ejq#1GI#KU~Q`GY?SkaS0XT!|Q8#^{d%SaRE{ZZ$=tE7hu$O`7bf zAO#qU+Fl`fdPx^pOwQ7A9hwEBCxfW*7sMXi@{%>j_NMfaWND8dBp_r}Olrel+DEy( zX(<+JMzkxyQIa%m_zUG5W^BldVaA5o4VE8!UJY|YlFEW_N#C42<8hfU9s)fsUR-C& zORE*9)CrlVc$$_S6f;rtK~!^qCpoBNAT}1G^8gXcXytq!s+7KQ$_)-fEf({hC=$k~ zm6J(r93s-5Vw|^xqB;nfLg$sJY#)fVn@Zs`!M2o(`~>tck%;XVvujd%XIRwha!hVk zU@n4)atw=t4cK&;G-5AL%k!&=5LF+;QlQQkYGp7mu%dY*9VtukKRNb8NT^|VN^O`D zc=61Uj@z#pi%W>Z-mV&joNE^9!jOix&1_o2WY{1`p25~2PM{b@Wb%lqxJf6>ouoIW zT=Ur@M&^#-Z(r<#N%VtIg!r49ObnM>jmd^#q=L-FpxI!Oj-dMuo(M^fl!q7@r7^Xq zDDu-d=sE=F9J-(T6%6eHIZBvVPjN95Y>X@1*KQ*f?>$3#Zb>^wEgk1n)odMksz*U2 zue<zthV;2aP$_#j!*|vF>}iQHLaW7Yx|@9&qsC7SsHmr)816m}wNv?GEiOa4YN%9% zAm9Sxj-qk?#F*od3RzLrtr9LmutCA+$(gYnkHI>X<Pl0;%|~jJsndzSrtD6f<De*y zon+*yIRADVR|CwGKOmq70t;kOXN_csI}|6tsYBiC4(vBT#<M*a4n-evT5-9Tx~4<Y zNuZ~svd>O^nSkeW6t+aN8hydIT&%X$hUZQoUdTtLsyS84FRD(-zg1V#|C3uWrAjsf z3Ffg$FvAH_^kaoXy}%7R8VwINab-*M+Zj&BQLxBp>4QP1{o+4Qya%4nCvpmuyeI8o z|E%kMZAM>(-uIp;C4Y~;Pf*wFlW;{Vye?R_B@Io5U0RjieEQoI|ESGa+v9{cbhsoT z8f6uB(Sv!E87FB|Ya-pakLgOfI-3~<HtQiD9}?jw`2gCX5xd%81V5(sMTE+6k&8w` zYip<93Kx0lMf6#RYluxOC-wunF1^2%iDQVIn_Ha*_Dy`h@;i3_3;3Eo8W9u7d@;E& zC@gUVL2^T+!Sg{iJipz8;uNT))rRX)G(jW`WK3y$g3a1EUn^R5@eq5e<D4G$+)EI$ z{|7mc`m*SYfk|_}QC-vM!rn!QWcAbpem@>v+%4|!t4+0<SE?iCa14XUMzT_F5aQTV z;`XSj;qnAl@CF@)m#LP6x+xN`&|J;#zRz%khh(qi5=#F2&1ZV~j|o21SswuzjY$EU z)9t&wUED1;=mf;0QS_z=M*dQpn2NEn9SzEefd?FqC^qv#r<ct|CsIk$x#Sy;@Nhz< z3hr>fOyiPZTY0Yx`(k8-wk0fX8FL)h_T#9j2XSyEX<i%c5why8dW0*0cV~68BYt~| zkj>u2#|M@b4Z7amFIF=QrKZ=*=!x1fxs+el>$~X&-9Xb#b<dQ;J|3lP`#-8*tfNxB zV3c{-W5^0p0rGXN8%SPmwH%ki(bml4qBR;3;mq;vrM~o;0^vDg46Ew$yhMD1xoY(N zmbb~4O~)d6d$u}gm=n|hDI+B8XXnb@4vDlx^;KIcYgi5AMh_=CS!Evj1fG@XWT+ij zbcXU_egKNDTE5c6r!!C0Mq7mLxPiBbVOpV7*)zeGA6EifB0^ApbR}>-Cxg2V6T*Z= zvYTaC<{@>EvpTppHbXY>vZg>7D&E7_R@sD|UCt*IdKP0x8otU7&HHK|bCVn-Ri~Pg zBT_ohBMSPZQG=0r4cAz7(ga&X3s<s%)PU~o%7NuqJkr$Il(OxLXnj?Zy7hU;mG;)i z5pHslo=1sIoF^WI3?1-L>CXtKYk3?(q$`j2b{QK~MpryD@8VJOKJjsXM@1_zmrSUO zg9!jJY@r@pY<PS4U`%APD4Fx_*m=_FvH9E$`dCM+oypwk?>JSD4Ih>xyn6KPBJ}a* z=3Bqp#u*Dn^7v8!W*8ZIOJUtP?-OZ)KvLB%e?Oq>3<J_}%)*-_({aZuQeY_7MGD3Q zI*QJW<fe{^65ZQGWunnhHt;h<+Dv#EirwvXX$n)R7IjgRF=)V^b9`CV1xNIlhyCn| z*QI1W%ALG2S}Qd8PfJ=B^CwX@Tx)#Y1{5`mhK27;e&>qPX}rnk;R`>#aH#|Q&T{D< zX><V9`o8#!lEeBc0*qGP^ag;dE-^(W!|KcAlCw0~17j^B_71gvU&90t)8<<Y<S*z~ zgK5Lq(*`!9Bl$&vBKsowa(P!eqlZrP@kdB?4bxeWiBFKRQ8-J7oLeTer(l$>D|a2t zU$l!DyJwzG2BjR1Q3LL3ftxclBM{e<Yr4mm!7`@p5=&F0Gd7-IPC7sCkc_BmI`YIF zL~#A5e)xUhx8Bhr8Qde>9hqx|)sj7=-`<HV)=0qYdbfqt_$XuHVyKnN(>bJa2IlXl zgqgTSXXLrCaFBOk?}znU%I9o=%EDguHm?6Aa%<kW{+E<<V}|AE@_xPfG25tjjCW6u zOJ30R7SlqJwE$KZ>Q9rmZyr(gieJI85Cs#~bLz+2w}FOeB}6*z!kG*cH>i{Qt=`7z z=y6fas~?Lkd;MU#lRH!!{D3SQZ5Neh_$nh<3(#-hKOiU8fWnQSvcdts;z-~FDyl+< zgj)Q&#k|^1-u`R*_*u8AfB5uwpiDpO5#0GmGrq3rb$p~{ZT^IaXc&@cH9Au)sa~u_ zxzU7bh$IQs$<^;vh&U<*AN1EzWPh)g2CKin#W6{!LgLy>pl*d=G5|iGzFOTO1BxZa zXsBVtmtW(wPJV5V<Kp3QsUmlD%jD@R&H``wD4Fv^&<>o3|408}#>FWfp`VCgG&)Q# zO4I4VP?qP_WI4fJh8Y!iksvSwc#U+eNt%r=C&ls5^*DfsTP8S4FL^x*xfpa@Dr20U z@*jV_OO~J&y_9!3PrXPNuGA$_vRrJ@<85kC>sKYj+y{#Ie*1=h<(J(StemQ$g`w=1 zii2TuYiRS)2-MG;U|BegXRSEAnKC-Lo_(qQUd=EsTHPl1ffZeX7RePFD2W1+7^pTm zw%A%E1j1+w8An6Y!3Wpa5fg5*Cb0zwE(9VV0uGRPVkYwt#BQkMlQs?`THo4w)Iokh zQpeqvq0og%ghV5-o=A(X9%7E#Hg_+8tpFOy3Ltecd_wogMMd3m<;Rv&`r20jE|RJ- z`4Gg6I=B1U;}deer0rJmM9$+kn68Ad6I#NA1x=xq<7|S-8ZE5bZ^D0EX3!MS7?DnO zU#!X)GBFl)yL`ik9!BVF`CM>?(%U^sz508UgpYV8o(Z9I?=3k@tKt!)sE+l&8MZ-` z=`Yk@t!a(bnMTLvGR&vy_Xqh4)VVmfQPu`qO%sdiKZ38T)o3JfwHq?7%jjYDM`iMB z`-0EfAg=e@^rGh5{PFA=6V$W8;tsMPBVq;=Y=DZVyUAl-@Q_gwi--m}ZzF!`8lv4@ zFp=%kZ>b!@ILWWPDcXag!G!-LhDM5MMx*y|m+Y&0WY=f$THtGv`-(h0eu;&QC|iZm zLaajR2<;R;JhBibJq}5J4sjIcG%Z);c0w)_m0+^(5nn=oDL|?}PFV9Ak|`<Y`<*Q4 zi=pXcxh8uDJQ&5w@JLzKt!PpY0^(M^y6Yj*FeAGSGyy~Cq^#^i!9g<uJ1n_x9;_uY zJ=2-1NZ7)*=|*g12=9^@)pvMc3+HmGxDjo3T7*HAN8@PJ0SLh%VW^4+8`QQVL>e@5 zK~g2E2}ucxHu6!1PA&ipTCf|ZUp47fD|f@i)60q1EgJN4S48*?g=P*Sl4hUa?B5)7 zG4MsniG8^vT#*U+)*ApuMFF7y8EaxMHWR2#>7zJSu*2N>WCLuP)Au=STFt%{vyeij z7fEEBoNX#=)i#%uTl9S!Ybcy$V7sq5yX0!%=YTdl@DSQjrP&(+^?AhYJ>SAeT6^_a zw303WxRHr+kOCvHHS`pG(X3-t1bHi7NF@~*2^{n_g5->tp_?UaqcVUa7G$_Vkd(OH zKg?FPVi_WQ=VgdQxxa}lLBkPE%@;i;B?3ffk(w}})*{dPqI!7T{n{U|(8NV6o!`#p ze<T+Q#_^@_(T}lHfOff9{h?++Z*{#n*sb=zr~2vLQ`O!BCk6j7-uH*v`I%LD=qgk| z!V9JxTWF+>dUs5waO#xvKN`^rCeni12J~i}PSu%?Z+@Dp1?VK>7cTB62y78f<`>(= z>dUek`}TcQS`au1ly0P#6IJ1kKn1o<7WcA#Aown#Qj2{}x;DAOnFw{bPS?yror$b7 zpsYpgv(fo_sV@blOM(CX_Wt8<uij6mA7D+KK7!n@zgF`<woebR+=6_}`Q~IcpFcf3 zEoVDkoQ5Nc;SpSsHvjN%VkL?mC`Nk$OfZFLR}mKY!|43CU%Tp`7|*rdyhpGPO5+L< zC$I;73M0EdVUFFd`toc1ZE<^hJ3jkAQ<VF_i$q)hc>3wh)QPG_Xd6Q>P=_D_)WtWa z&0TSrt&VXTOrmE&R^pEhMiEmz$>jRo9CaiA{?O*=1zBIyEI~uomdky3N9QzOj=z0X zTxG87#cZ>g{hEAx|8RP7IUX;5GGVJL<+(xOi3kt|a_Pj#rJsUdjUd91sV3nTmop)& zxwcBun4J!c8MhkTM3P~Xrl49t&S#RM%uH!E+`NO$wG_(`$+VYzYz|^C`CwbvOIAYk z!Ts@S|6Y`ApwGV0-uEdM=idwUtQ8Y4Me*mNs}h?nVoem+rm?E1R*BLK8as0U1d+P4 zG;B7spF{`~T|PwUrhS;vL?}#(z)VV1uM5x`5Q18D7o#P1uR<`wL<UxrSiWU0a8?D& zs_r>W7o7oy?J1+9BE4+Sz<yR{J{K@X0=Bai8vEwfT4g5IVH(JISeE8I-`$K*z}Pkm zX<v;pjx2~zdkBx8slgj-8a2==P3V3ZUA%vK{BFM-;FqS1r84P(RfIb<b)$Pp*P2DF zR|3h66J<NAAfxgl>T=?RdO=UvMQP$BvGILQ4-eJC@B6hr9$<9`RoW8gsobSv4v4~y zFG&7H4vnHmmFS=sN&5iD2ES@~jwk#B-=*#V3LDS1DuUp#u4b@PLG{P=Vnq{P&CGA2 z1%2RYwVmBpYMH71$b7ct;y;({6f9FGsGg!w(F=lt-)^hreFRCrc#V!EywW&crZ1|W z{n$u~BgRfpF$|lgS#QJ7bs1r4FQ$se)5g;i>x4wJGEo$NN-3v<MzNlPcB=&+$oaQL zrnWw$Lmu+S(MA{d$7@gTLEpENy*sa4xLoJf(Pj-<=cq#JH^&?W;~W$9$wwiF>%5pc zvb2vvlR{pYtbKF>N8zfzBimSy;6D$RtJ=2Drjgx>utQ=Kv674!gfQLPF;j$sm$P}* zY|jMFRc;$e@he+3cjZ;h_0j;HdmN+?%+oZ^5N*yO4Fv-UVBFk7P5`D&PK*2@Ss-r2 z9uf;~u1v(W(7ecRdgH8##Ce=dC#rM>2O)1F%`qS;iw{s;DYx^wPYOvOGy+0+F<SpG zG~xQj83-~2C75Za$rGbQPK$n*;}O*0JRuTK1CSs@`NVAT_5y)1;ESdi<9*6se#B|{ z+kS7pu&W1y@XLlb;YIgyp8&1tsNUCzSk8UIt2Y=GqkTfF12_FE=r<?giuH*#IVJ1W z^v`OuHul6|pvYa3pr${n*&l<!tB+sEssZ`C2AIR>p=^OP&YG=e8jUfg6GUWlssg_% zz0R&yJx<l}M%;K=oqB8fob+O%Ap{{(xV0Al1`~pUC7MDGuO&(mFFT4*=p1q*VSLfD zO8pp?Q6hAR*KzhQ!!jD_br=<~4KGdrqbXiZ2J6*(_MKUE(uN4F&G#g^1-GGjQc(n9 z8JOd2+o#B_#Y8mm)F(72iq1*faM#D->4v6*vf<0MHf;KwyuDHJP_L)8Yy5L^y(Zz| zP^anRqOH=#1RBDc$ug}bfTME?W;Pd8QDlxBcXo-Imd46~{D3BJ7onI;4>Tb~<zp() znz9k;L$NX30b!wA0G-j>qYTF}uok3RWauHK=&5Ex3_k22wPV>;V_kv-!FON^C37;y z6s7YbOj1t=MD1>$vQb&c1y)#WM-GIBhls<-IPvy^S2)KJj3`>*&BhGP_i2xY@bc97 z$3%KTlwL|Yx5t3_&=E3tQ}xU8sNCq1s=sWVuA@JraiarU5hPN{{>NK~vA20c;@lAw z4Qd*4Px%@UXap-Z#8cMb9x_H5l^+L<ShpF_*@BPAduTRtn~yZksZsmt<>S-#E4<A4 zABe~<l(|vcLHm3}a~@*+@=47_d|L6OEH}AL3AbK!@6t9e{gy`dMK^#kVBu*6fg0|j z4b497kwg^D46QWwR7SgJln>-hRf!6@#mni0szstZ3+LzBi+G`ARNjQkWK4DB^skXi zrImWch568BxHMcC)%y3r@juQvG1MujJJGZhHPmG;<p6ZyDXiq2v?%W*RD$M3Q&mu3 zTU((LE+fjb$Qyhh0RE_Qt>6sb_5<f~K@vqjQnX_>68&1TCS?E%-Qd$#@FZ=bcfem< z+J%xU7`W>;s&@gvZ(<BUUu5DDp$RqvDUaQ7zH0J4BkW}yF6-O``dm06V;xUkWmu|s zhwmk0!OWW+yaz@<m6^_B!>+0;TgsVbjXBy<ah9zn2<IT?K-!O-i7H-YC-gTXn`R|> zGqMp3G}G41NmxFs3$ApH7KMPAeZdW-sNf^5x(^*qXFF}T#VX$dA*3t|J}A(g3_e*2 zwwA_h6!9l@mo`uH9dO%kPPGhsWYE2N!6G_UL`I2va{2Ycr+VI#8M$HaM~B^{g>Z+3 z^J-l3oS5)I#Dg#$(B>D7q^)<l8Nrq?x}ju0#nyNzN5(2b>x5QGlnexyXs7`2zazwA z?3SrYW$Z_3rr4e5<V`C8XC*j>fnrs;9IlJC0S){PjL^~V_K8S-Orsl})85M`8I7)} zhenT1u6um}$e5$1i>P~dZxc*{=eETlW(-UMx73QQSQk=zV1ZTy$6?W4g_+xD5V^cv z?6%bo6YO80HDOnYa%z4(&mT9{cPY<P){YrukG@ttCi%ja_1mg$qL4qHn_Zyr)bS+D z<q`&B{+#jTTB*t6LDazpxs%0HfCD|e<`~_XWdZ)LGyX;f^v`8n9NM8Kp{~*fK6dl_ z10c%%l$K4V4Vy?cdh(*<vPREPTvs$<b-;?#qztR5M^}W}A$n1p$df8zfTsOETRze2 zD2v^6H~S*WQu}ApxT5VJR_B)0Cc?(`U^;so2u2h!RUB?C-D;JvtF>)$R)(Y<_t4qe zM9})SBpsFL%?#0{Xove+p9li^im9&jDENvk`mm=p9G^t^(*TYVxQI)e4%4;OR8&{Y zST5|9<(irz#Jz=JI<6&BD(+eo-PnEItba_`PrK>*e!7{hzObP!W6TBN;Xh%%1}1RW zBSho@hOUlHp#9{&+Egp*tobyBn^c>?qp>oBakszU?oHh~A3ZwdND2B{v_9>e4>67F z;vRrZ(M&Z;94ImbxE)TmW64$=G#@&xC3j=iGBl1xtg;#b1FfUMmOqnU$?_FP|5`kL zeZ78o!1G?C7wm^Yy~ReTA-UY%U+e%b;4x~yf#N*4e0vV0i$Yhk>#G}9{aj)W5{7KS zfIi2BdHutCnwJ!OMdV7&6;rQ({QJW@d`0PJzVWNYc1&~AkOtNxm2Tm9{(UOP^XAXF zss;P`@9$r|zPet_cTbyYtYWFA8iENH6`OG~2=Nt)XJW;d3QWq<=XZrVg33EU3d`^T zOFzbA(Lg)m6n!zL`C9L)Un-}0F|{Yg==-{nzJAYrd^7c|H=zhA;3f|NF=*0eW{?Os zCph|{>z?f#H!YOw_qkqY5wh0$v0tLsDnJZ-4kSdx#i@6fK|h^nX!@XMvo)bm`~^1( z(9k}u#za%bc~1m-6qSpQ(Fu@bPb?_88trlRt3xtMI@)4^6JsH6%50Q2UpEv~^oW>D z^q_m~rR^Sm>2(hu5-VnZ&=VX%ta2}mWR=mB5>D<VG9+aTm*h9Ih`qX67_0f*zT$H@ zm*m{C+HUE+NS&fo#nLkj5~OQy9*xyeerQSAOj}#1=&c?N1&`5Qzza{x_BZT4^Mt+7 zU6%KkL@T2MNl?LyPB}c{H8d8OC`2VKI(9?Pkk$oddr?6zS94LJq&SiiWYg#`QtkC@ zQ%#UaK?Y`z3FRLZCiE44hfSFj=_65gJ3LAFVaN`FXF(F>yh@S;ymvY^L>AOw=Yd9x z`)v5iWdoI7b}p2SZ1aqKC@%ZVcEGqIw1a3ML$Wn(3Z`Oe-nLIx-;PHrrgf;5U9wi# zoVkZgrhB|FHm~%yN3w)aX)?zOjU`<G1N(X88ql&$6p}7sh_tehia<-=Q-dg?_FA~+ zl{1S=#GK7b1tYF}Rt~+v0II2R)^HGH5vqDhbd=ED!T)&hW`dfceMN@xKl5rx2E;HD z8P=vxF5H|`3h;>}5A4Cj%Wy|0R9;Qc&=kw*D>*jP2dXACJ01NDdC85ujv7HOi86<> zKtR)IdLCxNG&YKb)m|)he5o-xFfs#DfqogA9#i`ew(3IOBK(xga4m#as9fs?GtPMg z`cM?(mXRW3jAA)GID=A+^O*3n4n(TZsp%6lD(6smG*s&4GHz?#!dWJ*TZTrZo-M%5 z0dyn1;`N3@BS9_!bqS_=xQE7}CPY+442?k@;yjFj(`H6crpYfgfwH^R)EPO<M@XQd ziA$+X3BKhlp$;UdSxm^`1K+h8iJVIpiA!)X?RrHy76*ERVOfx8oR~vox*Xi~8w{G{ z%g1S3h`uVrt2*r*$tyWbu8MMn5ar%p`ASShh>Iecl1fmMTMNt+iY$ikMs!;t{%D$o z6bIvZr3=uQ40CVvPw@3Iu#;2D9tS0EAU~+&wCMPH-DXH5lcYi=tU|fye6aH#W=qF+ zmlz2lC&&Z>u^rigU4z4nqDoO=U$iFpC&s1hIJv~svA&vBSznoO)%pu7=7CDYFo#yo zwN8rGtPYKVGuDY8m#ctsjQ;Q-EK}a$F4(NmYRj<2SEbl5)<ZRDZIl*&KiMN&yjrj$ z)rKn(E>xUuyFn5cD_SU1QdJTyktyDmo)We%iRwk+Cn;aDPoe!`{)SpALmI5$JcKwc z0HOL-x4S95Xc7_JAu}z>MlILOdyJw;t?Nc!>g$cM2ArB4;ciWRm5Pq7)pFmB6YdJm zC4cf=!J@en@xa2W2v2rbx1>sVR-TnqgDl#+?G>q9H}UcVgKJ5$ykR8S;{hXVM|=~W za7Wdy>p4~0M5E+%Idd*Cc}I}}X*Y1Ey&-A6A5g60#e}O`4j4?3l%@ESsle#i!N}U- zqslynXm~L99HTZaH#$pvga}hyqjra<LyD~u$0lwYcyO1=xDvV6ev8CWgjke2y8iT9 z5G?p6Q!Z*bVKB!uF&VhgiG6@-w`RKf2G~U%%6_q;iHtQeca;%g+z7cwy#VK}MEg)? zyfhJGicfUOU7KP^)oOOTtW?k!T|kR1BkiAzu08A|E+M+_L>S6EZq*0gEY>1CkX-J{ z@r)gwrx7>f+WpU|APA^6xu&fjt7~I&uA+%ZWAW6qN@*G%y_O+%UPrHGXdK7ERh=8t z$l;<;jhnGc5eqGxbO|Yv$08x9wMicx{g^AH0v%KRE#A}c%*?&8fsVS^nVq)^bmP*) zWX8P}V(T-6fnOBZU1*A~(2r1UT;6ANWz>=+hc%@z(lv+s`Id?tFQH#md3Tfw;bO$0 z<uDKQ@Ija^(y3aw!Et0luN+5L)-;D+RY#Z@yos9b4=}AcOH&cQ8A;g!f;ZYT4WVTq zR&7L<^A~#rNROf&!K8d@;bg<EWihxs&%CAE4@5CO^kS--H-uwnqCBAiq7iS=xzH-l z8;PwNk`&W57>{gu&SKs&cB^EaJ*$B6)Ga?3iwPKjWnBT8QIPtTm~>E}_q_`7xKJKa zKjTj$jHeQSGAlQUfgP66-0L9M5V|`xDmAj7f{SEAO7`YvH$d|vijBbwq$*-FvmzV8 z!ElOX0kSu+r9ewah}^i7&L%XD1&!=Eba<re^T&mT<Lg;YRPGi@3v(9GVT|@;L?g7I zi~05jws0^Lb}^-g5609{K_NIjUUaNlTf2`JO<;t*rv+l~q|R$Q$n!=^jyN7*>3xg* zo(H)pBbr&VwNQmLMfZ8Ijai<=f>ubX`M)Xt2(6u{zAjj}p`1E*C4P0AgsS7kWfFlO zXCZ{v)n(TZ2i9gbF^b;VG@4WB|ME4)c7#js1><sDXd%N<i!L4Z?(qO;us24C_YFbt znX>^0I;&fFkIo$YnAKIO`}j>z8*^y?HJfcWr=!Jo`mp|9?FVHq5cF1WVCzBR+s){O z{mg8;U3^hdaoum^jT--L`f05FhbFJK&heNJHqJJvzhG`ebR=Pyc_}<p;Lb}ia05<4 zEkeCXK%v1eDv0II`h%(CS|Vi=F++8={o%#wQifO5%_u~!9$3dO%7k!Xu7z;|5_x5B zG_n;pc}K_c%N!4Nq!9P2TBdMXX9sqT%kUvCNB4=H9kyCrSyISeWEO?*WJA2d`&J=C z&6g~#SdT7lVC2Hh)psXp?MH8Fh&F}0+?PQ|P_SCy<CiaD@K;EH)&-_TU$RxL)~y~= zjz_q)Da19%u?{qV=lp)Lx?`++gS-VxlK9i@sHl#H+tjtT#8%)2HP}P^vT1bAnKw?u zI5qnjAuyoH<yJ%btVLoE{z!NPl6Cr)2T0Y5EZ#&R6>fl=!^nd7V>MZ9X^17t;1Ht~ zsnvft7vaUSmR#|?w-5h~$^=%AY_p;mBlJeA8M9?&ZDM#7%KRcFKxWSF!Ol6#=E2&i z@-bQQotpPf%uWXqdy(m}7z7$qMr;`9hj%m%biPE6X-Bis?D;0<D8eatGed4yBxQ=T zMd#bapS&20bKXFNTKt5QEL4Ksts&H&o875vJg9?&EltFF3pzkDoQ@tB)x7$#Q15!K zwmbE((~kahv3q)i-}?5=Bh>`pH%OV&4=3~!Q%v2kc>Dh0gys_^v7y|(gARVh@v%aV zP=>p3x0qMk$=iQzA3u)>U0^=}_VhE2-)o6K_t`8JkB>jsc7d^YB1x_{e@nwL%wwyc zX~-)g<zm(V*C0JDc~Sl6X~ryb$_mF)KCXBs4XcVZXzK5!GnKZ7g^78PMo}0}cWbZ* z0lFeUU?0Zn6cW&%BJ+wmUb^il0r<v&4C(f?s;B$zbzUhQ2_#e}TT5+&iecX0;wG9J z`Zu5F%k2gPs6R_TpKW({)K)iN!Y@}5EmgB8(%X!X+!OQINR8zKCw`u)LK{xy8m2OB zHGYNcqV`g+vnLnv5l6RJ@F&}2VhmloA+q@$e9a}Zn)0J;HI;;~E%^SErRx6s?Pmc% zToP#f%J*1Le)g^N$@M!-sn+s{G88p~E9Np0``jVc^%U1}Z5CkhH#4c~B^ZJqHKhHI zM%xWJow7ECIp@k^@nM|b&b9|OEiS5!gy|R>2*i=gqbhltd`Zu1Ac=#7Mb|N`8b@uj z7!S-TNx;=kIcQA6Jcs?zJ=#<%Q9xP4sqr>+Ml9rGGW^?l`QFJSs1;>&$~P<bSL42y ztdulSx%k>S#>1uCYC_5zHI`7Q-t&q2lhsfDjA(KdcM&IKqWBYjw-ldo;j4`bEQ;dy z7rq+8PB&F8k=RaYqeWn@XxMOA?OqwROOqdAghAu-a|Rz!R48C+lp+A?6AsYMi#t4* zvA|mj3gk-y2@O1&-oP~Guu~RC5%k8r>t3(|lf&x)@XVRgBeM2_KJfin(>!XKIEGQN zSbbmr!9?_g{1ZW1s!TCnnN;~8I_)!TOl=<nzgO-S60k3*dc`J5t@2>UDU7W+c+`wZ zCo;&EZONz4L6VR06xWh5YbQcD<pW6Xm##U>+={^+*Z?ch(78aVL6neiHHdCMRv6pk zdv6lLZkaO5TlddY7+u~yE$-NZ_PqOBpZTzazf8L8_ZjrVs{2FSo9_QyZ*CXc^WPWC zYBZvM5B1Q_WfT%|W;m@Bs7R`>iFqsbaff01Hd@jGL?9HG0^wyq$$IgzSC#8$2xjg{ zZd$+kTD%Z%Lw!77w^=_{o86+?9t-pELtRi!qv98$Y><g8?*85m<{8)ok(~Ay=dHE? zdzSD{fb*?$p&lEHUT7c4Tm59iZ@+fcKdU)f=E-;?u5ClKJaHn}>@Dm+Y6OF9=>j>F ztuN#1;sYyNK5%4Ba;bj1#43XT*R+wFT;<qT1?seUBT_aAoIuLwvbY!wA;V+qqwXi$ z3PjN!n2xms6?-U3lqZCW*a^|pFPMRX56<c94F$f}A{3&<5w!v6)4VRbC@U3;f(r4W zwGVvg{gx_~$qT;WVxB4l#h<n=I?`mtTp<zz@>K|vLvmIK{vf;+Fw{dFuf3xXht+Dp zNcWV~FuN*)$yu$e3NnY+%5dQvSB6VezSN>DPMjd)^;m@&hkSgNE33AQ?<CIDohmF_ z0lZ&qw!R}b(EVv!Ng3Z+$5+qe3)g&(z-h?U)f9@}q|gytO&tfySUdu@$-Z?fBcrhD zVtVVd_bn?g!klHmMG03Tf+94^*^zH8g-%T6e8*jP;=^iUuACj1lNH|RaC-<rYud$t zF4i?phQ(=vUY1YxIC;XxgoKg0AVsjG5pk~a9KI)XI5+491{IMe4~OQP>l35q6hUW# zi)5Sa3h#+s%9ON^Yn({}%6S+Li3pqwrChR|w#wLt;VNN4l}`K;k?<XqZvgwo)`Xro z^J-HqD_OT7!YrXsk&kYiKSv`fFuns26nlBG`NSqd!aWW~L~-gCIdSGed0YsEyEhRi zDT!PNZ6KLkhy~ws-%>e*N>{lYS~Jc#Ws<pU?M||}5LDQ(&5+JzaN5e}5R{G*I<#cX zJN?V(5V&U7s5b%EMox!Nj^BhVNnM_e8eQ!ZpaW;Rx!Vx}8{E6<a1LaWth*CZfC0jm z!3*S)r4!w-m4Y-@!%E@Ih~M^IYdbTDs|?+Y1XpL83NzkCx1As?J5*tVlm$O?0<j$q zQmSxW#MYN%m3eNpWERKNU!!~`8cbqyMAR+tDbnQ4X97*g9d<HeQgN=aTE?LPgT!3t zL)?${9%N@a_h`0+DDGM^f~d{DX6E+lD|8U!Cb-W=uheSILN6!;EPiVujAURRnBF-h zRH}USeE5n#a?E3}g5*@gdkc-9c0d9akL8t+g{5}EHD1_GiC6s@f!1KJ`e6Lpt)D1N zMla~atEaogdT-0Vys2h)pLW0cud(ux3Z9+XdvS$T$>IUVFlJwZ2Xai)#Mi^;toT&e zSG9p>8X__f%P>Mqs1rh`F?3c0fEfqH<tjyhc%X@R&9{Wwlt2}s!1r2&LbJH{@u)Rv znGF~P6}q1`vFbzb*9L8QmpHxMyOd!JwuH(V?FL=Q;gfEaWm0qw=-ANNppOTIvHb8+ zEK-6^loRSqaf(1e_EQ*mnWreA(6%hgrC>h?<|~W2rgjsef<D}Ut0P<IQWk1Ukga2| z?clX_YEsZ#Pe#xz%8X@P-@p5k+)<;?(rh}o1uO}8MI|hWbrN<^SNA6cwH8g0L$Wq| z>h|~=FL+Ir{n~XeKCGr480FU0=?GbWIRzj-!g1mV1yw6)nbhp-AjE#k(tOF_W$XQx z;m|Cad_-za5p>Qk0P$ChA7z=!D_J?9=!W5t$W_fS7E89%R;l?gTvaBh(urRpvQbka zx^jp)ti=|<zEN%UB*@w%7JYO>o707geWVr7{&D>}VA`93SFPIWLh?TXCb+jYX~W|6 z3xj5~ewUb;Rqi3$Tuk1aeLubYJAz)-CTyH2g`Vg&?Xs+hbG=#d#7skoPa^Jz_d2v@ z_O_vqa6b8#x-1+B+Vyd+0ai2usDb_-Q}XWAo1Z<C--8ysyzN4#1#1Tm!Fm}%QI-`n z4Sq9x6|?jAv?pJ(Vk|>rBvan2IGKfEX^hy$#S2K?YW-~F17R|Oe9HXJ2EwCaM96-^ zui4=F9*e+7O`SR(AaMv9+=_wy9W!wl1ruUAYf(waJx9Ir^{j9$LfoHXptiT5=n#|M zTL}gOvXO_zAvwtd-aj+>5;!H+Iic&QfG9a=Jkv6OTt4+!*F=OZLxk_V43Ve|sYO); zn;@t4*jgF^dt@Ff3s*$;5E9R3h}5Rqib*{sJ<{dS+Q;QfIkau`BC;npgdr|@cb4uy zjuG2OV=yCW9ed&T;IWiN-h)ddr0zwSiHvJC*jZTDttT^~k6nleLoFU7yp)5#G}VGq zqnBKPgwuq1BD^LSN+9fuIT3_Rs_ASXVa7D*r}!opLR+CG*LP)^phWZik&ERWUUb#a zku^FF5f1NxPeLwiPA*B(B(y0Vf(<z#?)rT&ir7b4{-&3!Aof`XKgue#eJF`tGoT04 zE8z&1a?91?M^|Qu<*wQ$=AXNER=htH;3V5Y=$1HD1f$h1kdP=rs+WM^zD5K@>dusa zlKxdm-+S`fl%T+O+xN}!@aTGZyanT&Qg(j|7VeaGErHWoy%zv!tKmHm9hJPdUd<^< z<r@{=A-=GB-h;(l?j*FXlBJFC^^gtitlxYq7sa9Wj3JV*O)!JIZkvg14=j)i!;4{m zd;jsbSMR6O4;WIvq22&IZiR;kjAyF?UE`Z?H@7OX9s4{U6)|5Jov`__H{aB^j5l>L z+iYgPCX4qEFUI4=Pc~ISzk<%3>4r__=A9arN%+lSRc!(p1&C&3q})pq;@UU|2}7<{ z_#)y`q-_hKOB<l1MRQ23q*+jcRa7R|HzMb_YWXitr@yYz92}Tl;8-;0t+EtF8Jl!7 zXUbp&ESy8#hDewyBc_papm7<{mmL%$v}+m(TK0TflJ-j!R){WE8|BcIU6cp{Inlrz zNFhv3W+7}Y8^F=6w-ZW{T^crRs*8DbJwE$9`!YJgzd8-Zuv85?)gdTx@&zoLM11S4 zZ1F%*j9#2SzG&V@!<#Jh)|K<L2oR?ipVX5_{-2yzTWd>d|D@;Hlu$mO?5YRU9R*%) zdSM?T#*=)1(<ND!b&ifv^o2F~>cxcK0uAhaB=)W!uRBw(lTI<5>jBRhP5$+HN?J|7 zMXKLz1ewlvzaA@k=0v=1=>Z)L3e=o}v3zSJuiwp;*Yp12YCOKUt-dT)%o^5}IyqlG ztHi6}yu|19=m#HoM$9@D>RlaBgRymO(kDJsC)A`HGCEmo-&Mc<Ia@C7=pLFCgeSu4 za{O!C_A&JuR4-TcI9Mb^r+#Gnakki~%Q<%LPUG(N`<^w^<LN0}PVxLMy_-dI_6&^C zxD5<?!mI|OUbr$aa&FN1-E24W?w*$KSF81^ny&Bne^!soL6X-G!{NEd`FQ;A59JIw zrpK%GW3#_GFTVxgUcUpNwqQV3dee3fMiK@qzkfK-ltcEzA<5GUzYn0p$X@JrE0}k{ z$6x7^w_jp}r^MB9y03;B>20?jWSMqg)!uE0z(y4U)=4cK`?G4Y0vsV!Ty+02dz{ey z+snX|SU+p{xLw_BR2!q)ud_{c$FHHKm04}XpbLXxbb?P9D|G@>8wKn1;5d?9z<9); zY=aFk#v^;q8;lpT<#Iir?W$?dH~>6<qmEu`iK3<6NG9CGd(`afR^wUXmXSlgL(FXm zdLGaaV6k3JzdX%0cO(KiXqdJT;+i^Bys<W|@G$mlj`w1nGdg2uBn(=4Mwj$NAsx?X zI)TW7AxHlc-1_M?e*Jl>gN8<yJs(t)-c=^8$_`MTh#Gkz3HEjjN>WS;?!j;Ll;mg8 zw()FEnckN*bA5@G_7`51^&gCe);b|SBZABGVY{f8`g~C2VaSQN#9G?75-X=ntekSq zBgM)Ez2r(_<pg5ol@=>fsL(ITki-W_7chrmbZLa(dIKMRw%BctBLrVqWyF~A=F`{+ z!Xwd;huRfkV>FyjVNQd7i|>osa=N%zqk*L8!cUo(yPGm$I19;gXa)=&sL*N$N9bYp zbGk(WkZ~9{2r^Hn2ld5{Xp&Z62g3;uh2u@k*_VpT4Lr^)9;7}PHq<>#uCtN}$3Cu_ zG*K;dFuGV*@`IL#hl6_}M9IP6Qr8{i>YvqSZLIL);6VXyiO2LuHT&Z@$khDEO^%~o z)f$_eI~z)iJ6h6ltja7PxB#$ph-*lCsI=4cRz9S04cknaKMo*fX~hk#(<x=N>VQRu zC1fbz>_NpD%zFD^19$g9r}JgC-A+_+-JzOI5a4fm)Ry!r1)~lEjHxsMZ1hqmjlR#8 zPZd%}508j;Af)1Lb?Rh_uoH5VSrA>NLG~1&auDGOj^&&0U;@fXsi@}ZbgB`cv`GlM zFs@bjB#1W!S*~b6o;e9H!&u=#Ut#u)GRKKekf9M8bZBz$V|aGtIQ7X9sMZA~M+h^h zd?GSHFs$#YiAoEa6IH)a*Lre|SeJ@+G1}AjZ9Y<cmwwU60Ivk6sVnA2W=#DNHyK0n z?1A6~xhIF~snFPCMvvPB-%l2b%R&PhkADX!%wSJ3V#qxMB*7jkPpMcdf@bKfpB1mN zyC0fN8?CdzCOTiAb8&t2wS2!AY2hgB6e1Z;T#MtyYO$N{W?y(fqBAZc{yJ8;2n@sp z1}Zt8dkcvYB8eDpD)nSQ5*|j9aJGp{k`(t0E$xDgG*Lp&Z|n)s@j2bnWEI`P{Hoe$ zkJc_843)Y=*bnhJ=5<-%Wqfs4ZFigXFDA~ftx4ppTwwdx9(ac(hPVBrk%}Q~|0oX~ zU$NJxrJ3s)ASBQJ_z2ls5-PmAQiXTQSvHBt<KqhqHtTil9rEMjN1g_G9qG^|KBWAc zKdN8MF;$tDW>-bJ2V=Mzs>(>D6mQ^x7AAT6GI2&HcU3T#^Lly>XIQ5I^nHBpCUvaz z+(ch-iWJbmK!I&_r^>uk)ux|6>xs0r9hA(%69XC5H=VJILTKqK(tsZ-c}i!~zh8?? zdi1*@NaIM{%r8l)*n9;9NTM#?0Oe9JZO`retL5xzg&~>yKNpY#RmrF@d&w^pE?wU% z)@fK3u_}*X1l*p;RlG)!RAl0wf!Iui32YV2|7O$vxun@6EJ2y}>rZc_bUuGvFIIRV z8oEl=1yB$!(=R9s+hbkk_1g-D(Mb(|y}!5P8=%Ql8~fsL=&`zr2mvXrAXFPKzq8Tq z-b>he1VWWG)oOOTtW;`iy8F7=GOGW{NG?hXJMJy&sq_gX9{%Z(fKfLn^U9RDx6YNJ z63cPz)#uc9g@q}<O^%0KcBM@w4p2xnZ!2^L-9=Mz#u|J!rFzk$d_Lu7FhKnH2Df+; zCt1d6iI^qqhUVaDM>a};@1eJjO9mS>FPeK8C?Z$s!}Gi9e)hE7;gpuuuA=g6H=k5C zEHmUQ?K>n3(cm%PGBl!b;506S_l$=Kz<OW#Iji#l>&8<M;U@7A2#DcP_^9JDqzAU` z)&^d-kz~ZWPp*u4+t&Pd>0DbLq5X92><+D2GjY=Yj^2<EucY^oJ)tvzZS9C#`5XF- z^}Fq7()}ymk_{iXtJ?z%m>g-T5u%tDq!FexkfKMB2G?}Hb{{<&jnM|hAp-U1_Y2Wc zdxJ6uX4Ve@GSo?DiWiU55h}`Cr6(C^owao+3wXgZ)W@pO4B~4g#YBOQb{$w>!bTqR z12}#dCUIQHM{abY$xbm>=9y}v*WS(6g*RE{X7eQjOxFiVXcK6+2n@_Jfq?@S@*%fQ z+jhi9U9>gOWf3=5T`EgzTVE8b5<}<~wzsY^F~rgpRbC)mS`D;8R8uMuX^Gr;`TGb> z?>oLd4BhH59h(+YAcC>!Zc7e+w#*^XnaDP0tHTJ@fA}4xeGiSjBgR8E@j*&?Vg__` zy6RvRJUCXwgV+H{>1|JaAQ6H96Gfv|zWOi`sB>McEWo$J$;rkL7mAb)`hcl24K{!b za7dG62$L)_k;O0x@-V1HKjMrZA?B3>kaH#=Cj#(9O<qcPe4FLD6PwH3j>PUX1WM+g z6DG6A9^UnYWr8vTumW>!4uqRa%`Dt}x8pF_I$FzDn@2(8FhB#-n~Z^XAo#utv>K?+ zd77N7GGH35PI-UE(bVY+Va*<9vrSre2qm}pi9E51ZdlXZyNx993MreAOwmxz@wE^Y z+%Hz!Y6IIx)u!#rjBH)cfAi_>6#oc!NW`*T8z+mtj-dpb2w$TBo+^-2=&D55)7->g zSYpdo3dq@AvabGlU|2L?{AhHHC*udcJ3_0=jyYXHMy%8h2Zz6Cp@<=VE4!*-iQnAn zN;r&^sb?n{Y4Qv%HB5CXg-r~T$tgOL)X2KB!OoV@xQ833C?@k-duP-hE5TTVj-K>x zl<o774IIaP4*C_fnUdhXs~!>H!YI(GYF@=}PmxG@S}p#AhFY3Qr8CT%=@#Mr88Xdd zM7wBe=$HymzO2`G(+vWrm_2l_RuFM8ndx-zMi$+j3)V`2M|I~j!7u0i9Hy6uZbHbk zB;+`BsYK=GAV8buq~s~*c0>ru7LmPwuD6&ue+Rq8Mves&t3B}`jxkegTWd_nvm0ph zPrpMLaUJ?R(dGx3Ks%9K?uq1e9-8w#p11vN3gIfp+eMMdKel%F^divkYwK+=iceq; zjpQMo*BBsJ=`DG57$m7Zgwf-onpZy-Tbe4dLZ=@bgz1i)hYK}8d-C?pBPl`r=G9dF zK;wCNP^be6Z)u))6Dl`8F8CEkhDc9V?b9QwZjqZ`%&YC>?Z38<7={U4f%;pZPCuWj zpIJmJ6M4?lmVU=X-umLtOJcRICh7aagBe2Uk!L9{+h?0H^~oTDDM{huJ9X!Y`E*Ci zD@Lxzv*gMou2F62hxLg08e@aL>r<=lB%eJKuO_oZwI?A5ie_GXYe)vFTt%Tn=5p=i zNYD`x^*_|j$~1Dz_>_#?`;3TmmQECNlZqxCGtdW(k#UnE5+gH`A=E$Ce5oWs;;9T% zcV$Xf&qJ?n*aB38Ps6-*yM$B0LkqJZ>xoh3ttPDJLIoEyXCGXVKqPyndM<Dg8I|$% zKALtc8bY3qMuPG*+g{I2*VSAwkA-)jgvJna(_12!Q~(VvVHRW)CkA*z5(UF$U)tH| zFNc|pZgDL<yI!WDTi9*rl+z=3MBa|4VvdLuS3!EvxV>;%!ZHCx+8*KO#M24(@Pxc~ zF8zhN^wfPz&n9?Ro_-md$X&P7+wNs~S@Q8KWb9DL*3E+)fKEb7r|6W^!k2xPg|y=Q zB(%!#1PUEfBC<XNFTZGtv*+EPHo}h+o+gkdltkvv+h9@mD|1DTLB?Xz#(?lCM?>|X z9j1(1A=YX8QCUCW-s@g2ExCt;R5Uxh3qdJcDyMV{p)%kesgO!SE}jqGW#jvc#Kisq zFH#LZ=SGFXSdMOXe7YtJ0ew`^aCG`~n<G=dP2|8?nrAT_+XEqYchI*zqlRxuxAS}n z2Xg;l6xuNLTc>i*l-iIUjo{s)MK}}ikpN`!5;D`p!(%Q&axX+<wSub4qRHxkbr7x) z0$rdG2>erTgjD#%Mm3l)1kV^;U=<qAVEgXt(XzqRW9~j;q&yW1I5nHRsaKyhNJ8Iu zT5V_d6}GneV`{%MpKW<Ds0sjy#TAvQ6Nx4Wu%J)wSzxhkwPf!+3dR}*gET$@!99)R z(V0sgp9)?1_NUIyWKwkM(eQ6e2CV0?adV0?kU>6VN7sVe1qgAYa8}JjICKm*=T0%| z3Pu@Fd)DeB8jv0kc=P;OEA^Xfyzs=?<}jtNcWUFTNLx8ODNz|UKy3{cebvzr<vPZ} zyM>mzm@li@#;~hRF_$B9f!7^(d|t3@PAgxKf?U*`I@>Cl@3p;|xO9t!(Wv&cQhJ0m z@m7~}`%)WfgOUe`jWX%eg1`W`{WFHX4>qVQ(3T215W3z%?T;*sm|d?=V<VYZ>{Y>~ zA+=x@<S~`Kmhy8mOfGBOt1f)+3=J;>R&4la1_%s1p?5r;$)mYt%o*w}GQIDH+A)z+ z5fl9S<ev7$5-n_n#<4L?XJypR{_UOcu{2xh(a1&yFGP)j78Hpb`!!xn7Ds-0tf+AW zK?)puLz6=md!~WZ<Vj0I*aqFB-DDyOEsv!)gjn!DLZtmTTdPm^S%=zr%r@fUu4`!Q zPxi81$7^N-ieI@-_{aT^PRm9wc_#lf+2jsGQ`UT-F`4#&ny#1$RzbN?uqrkfQyOeX zO!-9*sFzWgmS}}}BbbuK!!IqUCXNxM%fbVufJ?Kd?YL~s><|LzEW+cBwYOxA+)no| z+IUmq0=|5F+J41w*ZCjxz?;)`+X=mwPpZ88X~jciBKpx+O%D}o>pdgR=12`Sx)WBZ zDm)i+iK)Qculnh<<=H1@T7QHJ=APSyu}><KSl@rNSkXCqRP{s-5ndqgp5A-7&}cx} z&9(F7Z5-btWi+{#EJrVK>-`v!dR)?s(ld;E3dX(Up>(_?NO5w-L1l~6Q;h|SYs0HV zX6UyuMU=Sc>*_5@^YvO17N<9;8nM|mE_b<KpN>C%z}>M=IqW@C6Ol28VlXe+d1RtY zi<J_?{=zd!)Gk!B&2&E@$?(<QS5yHfITVl5quE~$#D_F{6|EAV@X>3mCg#_h;}|UC zkgP83b%#RYE|g1{*UHyZf+qrTFv<!M4&bbFt-YLyT-p|V&5t7y^>velMR$jjAPYu& z!X#u+cpy=>7#Sm+$4#eBMwy_xYm{|b`F#6h#>df7B(guWc{0yI+X0N(nU00f=qOR9 z^QCz*WN|<F*KD@koQ@XT>BIUvYsy^UNs$Q|$`>kdyxojm*w4(i+r=04=7_E))t`W& zeNLkeFu~{5RL;Z82pj4&1Eogx#<6hYN|Y^GvimFxp3~A^PCQ8;$hKrT?-?5-OOErQ zu8EZexHMCF-wo@&{*?pd?M-ZRc>0{majDLp;--4==o?j3exg~{ih(|NoK|#wLdvU1 z&kK9xP#VV>kJa_LF)q%7Op_7y&fHL_s+J@g53<WRan{12WfR4^d22RQ-)1brZ)205 zbi}$fh{^e=U3Xza^HVEaJToCHA>eZ3R&&+UCl7WEBW4^1iO0scV2SKU)`P-Y_nY-< z$KqP$uCBJdQ1V5Gy(J~0*Nh2TnX@-SwFL7>9YZ<h7Yfmc9vxzA-v!3(Z+U%yH^eVw zY_)t=t#fd(9b6T)QpAIijw`1Ek9a~<$J%6Aj{f#ITWsiWO6L-ncMC+eLwf9lC1rjh zBP`httfU5ldT4s2pkIP~n6FVpwN@d_-gYA`y4HI`JFrgC<3A`K&E<GQG`7dBFmFQ# zKieErcq=x_lzwq$bb`Ovy}GBWWR}NCH9qS1AE1!+BLFH$N<Rw21b@{RPp_ix9gm}0 zvK2fXkDy>3RP6&3Ezi|TfoB4^`$iXHsYDD_nafMHzbxvp1GQ0M*dV3zn)A~j02%9$ zt`z`b&d@AS6-#X#$sqD=sumYU0ZlYl&Zl~>dA3o{u^~RNrwgSy-rtU}dr2MDXH9(o zK+3$;VifWaWQc@`285W1zdQr7t02E5`|+{L%NYcU$G}<jjEJTuODK-u@*;g7enUMM zH}68c;>qJN(huGZSL?vo_c|v&{T(0X!Cu3N&)^Jlo&tL2N6>5PppYp-!%gaLhIGi~ znNyWJwfT%~0`br;^tjXps<OJ9lK!9K_09)cM;Hff?qQPT0&8f$K++*V_oF^4V`M=p z5A#f3l^H@)pU)w|59k<Q>hbLiB6yN4`>v0*Kq08Gt_ns7?eghw^$Rs*{Roe*56A(V zRg{70pqE66J(@FOw2(=HXP}-SLe0E=J*S!BO6O)b<>b;~YzB_O&VN$QgY`;GI6!$M z_9jMFC9|Q>Y))X2%+4z<<ZP;6@DC4+l)Mn^d{zBqMPekfV`R?4D4!Lz<NbLG|A1D$ zu%!`p?g-7}9$nlm?(eHjwVGFK2)9-{SF^kCGyGw{vjbwkTte4;zxh1<Y?3${C(5E7 z5i5;S0XgZoFK-uji%m7(E!Hc{JKvwf><jOk&77Rd<qO202#seh;W)KoiDw`|IeJ!t zJ{t=^?Fv5w5f71iTYXuqR8)U|bw#SVlLV5HjD$!Q(HiwRs2?SYo4iaFP!&z(2f~=M zUTch>4X-AGD56@}R#@2B;fMtfdAJT;^*oMgL;vEOKT3nFPdH9xh$_S2dBGl2Fx>CK zyb@t!I%w<*R9cd+-*T1L2#t8<Dz9nOJtNie#gtB{(bi)(yTRyuR=c4+Y${b=q^fq! z42_Vdpsi+xeI0tUc7cix^k*0c3Qn~t6`ZgUwIHO_kI&bT1-3)DxREUKvyr;tQP~E) zSPAUVA&GIYd3!ql`E&YZxxR&2`hB*6Z@AcjHABDtza#wNZ|^_;_Ub))?w@X_lj-cS z+ReWF-}&PsXJ_5`;<}fjmgMqxJP%cEMrZo}n#7oWwt!;E<`p4S@1a1CZixBCcCq@h ztU|3V<^y<lC<hc-@aHzJtludzEhT}{Cwp|_RVJJG!`P(AcH%Ii%}wwWcH3$<dH-;B zDvRpIzZi|>#}+@Cl_#o?h;UeuURcsD9*GtN)N3fCv4*5mO!M!zY$fi*N`OM&^N$t6 z6RCUs{*}GNHHJio7rXWJX}Ml~$-|D@aGYwPjU)BRKjQ3@uf+EmSxJASkui|8<BQ3e z>y6)5slzbq@^jh0^mDEif8)X+#Xx8=GJ0qkRTKy!*LA;CeO7$M1TAh5Nu=8dvqxuJ z(=)jGM}||N44G&cJBK_J0eXMyzIsClusFUxfhe4i6s!G(_{rEOcaXUjwsiOym~89s zI>bx+dK2V<hXBlV8;Y-kYW&}(BQ9iI<nT%8j8&t?xFHwl>Cha`aNa5q1dFm^&Ngax zhuVw3RucsgqC(Do8mF3A`=NKa5@7}dFS^nGXc<z3G{xy*_D4ll2UFO*(z?)2;Ie#t z{m^A4CWz~m47oyksVxtw8Z%5>HC}Nvn(V5FPUfxUotVf9zzOlOzRgj)Gb(h8mJgWD zMhvzj*o{V;HdN#j^h&g7V#$pIaamD9H=U>XPUWNG98~H9eJx^`&FEw{pFcf3EoZwx zUMAIqcKK<yf%i0~3ZBKkKfFVEVO`g+Tvn9tp8cOGtOaCTkTpV!)5|H|dsDiZS&#nK zat&Jln>`q_{-U{ttpCjvI!to3HDb#EvOEu-SnSn+EklIwybO^%4HUqp*5urFR8;8C za1DU%-)Id0iHqlQgSBY+&c<pPG&Sy;834k$Y%+z4Ky@)v1AxZe4b;G@HA@d;oCY8= zZjQiAO7(j5YWh<)YG8G4uP57wfg7Mq(^({UtZS}MbM&Gr6E>eTmQXKtoMU+)5hh#8 zdp!dmm}mrd{>-vr2o3~juZxF!>&~X}Kwi4*imVqFQ*dz%iQoq7%~n14hB!Ta;~|cL z)7sjDedaQuwb4GjBP(sb951M8qt4W_?T&KH?cW#6YBZvMck)k~*xCmZBEGis1O9`R zD$#3GvVOq*X<C1Da=lqUR-4@dvy6k7tGe~Gc(@_wFa(shs5>~Fp3}z0H$Qc;eVO~y za3%s;d`}`e|54T%2|tD3oXoWYC(YU2JJf6s!~16V(A4lS9#-&7`ZPLL>GebD5F)}_ zigAA?wS^H)%|ujL$K^$nzQ~2cT^3?2Ki;kidwA!Dp<rJaa9^begFIJ75TdpsIDHkr z`TJ(njzS7u#pvB)#$6fs=+#vcM{0x+Mp{&JnBLvVJkv6OoVUun(8j2E86up;$`Fa3 zya>n!unBTn-|nz4I*-g_E!<&$4{;Xm?hY40>*fxZfa>H9`+)jzhy7J+mX5flT82b# zOz2p-tPETt#?29!Nu3{bhrNAyLvWiETL96}-n7)c2s4o}Vxz>$7B3OHSR=V<FG4#8 zccF~sK6W8M<?&Kf@rkwKXosw{Ydci9Cqt0y7GtQnAbL6ku^Y;>(8hhcMYh>yD)wB0 z^4*r9kjLr*kD5t@=|W(=kaAZ}DOX$q(>MzTRF)ZP-S5dnZfL(ix~M5ZFIPbcl62ve zh&a?_h%OvDKCYT1?v2F*hUgt#z^e`Vg=b=dk?;UJE<YO4n*q9xaubXBXGEnqZAMr7 z(94h^swSAB^VI4%5XG>nGKZd_4aR{5f>-FCv<0~zkRd<&TFvgN%|ENn7L8`qm1zu` z(aCSWcGW-8fVSR<ncI~AZP<Qp<fUPm9>OpU5OTA=4a=ku<@&1D&Z2y&(ben#eLx4e z16G_SLwLhYsKwNJpCyh>I55wG8yC%?pe#e9OiXmMJ<4DO%#lOghW;#+vMu*zw1l9# zc8s89)Z7rxT@$C)w`F+KCb+{!Ysc!(5-%qNDXvE&oKxgO_d{lr8Pacp?Tx0oeZ>@P zjm~u8*4_q!!$SMx?T$3YI`6%g$f{!AAC1*8+~?RB=kxXBuirQ8hxfDHVuk5rw(|HC zuR$;7)2*s8oBa6j=>!(Z{408jcAFWRS|&dT=@UM#2EW0q=67@1vch*|4VW0t0h`D& zki=(B^b+XI-62-^#rQ&PV1E=QOVVl0%Vo9tvis^S>JawS683*S|Nf#!vRd~c@bX-Y zssXdsLH7Iyoh%uZA2+Z#4Vjz|ov|H_F6sQK#Bqn0XGbG>I^dR(b3BS$MgeZYSaF9d z&Og&gc9mcW9~71kt?n*fboiNTW*)vnDzM_<q>3Fx4y7(JhidUBD?c5Jl5BannOBd; zqxM1}h-K!APX79W7lil>n6vN5=m&!&DwKb0Fwc?NcqiBIeh7&=x&A@AcdTaR;N?h? z*WFq6a;_#lc(Nr(woH}{&J5^uvBD#%x-EIX5L2$8uP)3i_fG3xYzA8R5*@S9jqIdk z8-u(vnMd{bo~@@y(4D2y&C9LOO!sTIyNaVLI;g42hhWgjZo1~ZCb)glsAz@v=u*L0 z&bGS*2z}SC@cv>YkWgLxo=h0;3%iW^#hW9>ma^sdw<x}U;fy_Mzy8%?`)WI1Eb8k1 z(DLmLA<%fNsli{!X)<Tk;LlrC%H~<L^jo}DhJFMw3q~xTc~`~;gyaO(Vu2n9x65J( z2-nW6rgk(JcOHDs3QKxeP%Kwsi3?@B_Z~Dmc;%NSE*UdGmG$HMH?qie$%m@-%mh}4 zlu)2?X#aA%m)4U^8-^T#>F7-RR%<AbYW4uzL0t%xQt4YGSsI0UAe7>1#v2a{2K@R5 z>}~jqpC1<U<=yW7ae59272*%{!-@GxkM*O<!@XHUW(xs5^DkvP?z@;HEy2~I$Vv#< z*FVN$l*vLUJNKi3uC4Q@-TjNv1!;?FwSM~Yb-G!vAL;;i_|J9PU;p`Zu|fy=;%-W7 z;j3R25`n)t-+N)dH^);OQ#Bq2-+rU_puZmYh_i@?x-COg3%sm;&Z|e7F;|De^}_Dg z-key!HvISVA75v?x<HUGyXPVEX9uvvcmK^AqWgKV0q<z)VhW9?r2T1v_Ra>y7y0f2 z>pCz4hXU$0o|}U}U=<&Yz=vvNj6v@*xwsGd=2+3?epKCX@BHkir3lHCrWnPD_tFw` zIb_7;$M{k|tH!Xn`Ek>O3Ztj5DE~;P=(|-#MM|rkQol0BvS<MLu5TtCY4i`Fzx}%2 z?1sS~g&l;yh7jC9Cr+TW*K7sBil$TmL7ORm<4&65fygfDxK`(aW7$-XWB7jI@kZ3; zssc{Y=y_Mrc>(oMTCgkR#HOFep3lt?G#dbh{>IBy>%|K3k?C$Nq=3?*#wxt{pWR}) zb%Kc(+h1F>(z_wYpj@QT3r|bNLNDgalJhbRGY-HDS7otyCLqS*JVd6vONc!?!m1u< zgT|-ank}CLTj0bAO$!#_RB$QF5UVexIHeeN%t}sS#OCZHK3l&@PzpjUBfcywUkGeO z6mWGG-xoA8_+Ay+V+-Q@&TJjAf@JGlRfOpLJ+d_z1UKDo`5jF}cnj7hHD^QsyZ=4l zjccN2j@TKBZ1rp5)Vg*Nzf@zmMT{Gy>jUv6j?4LM#!F)ncUK;&3WvOny`&a?6O8eM zlN)h!hax6joA@dvgNr*`F4uG9^}u*vo@Sdn5;A;k%<9B!mwhH_T0J~2XY>6#k<lHF zrW4Xv`hT3{6ZLqUeJj=)A&0{Sd;^|j+`@UW?QS{I)OiZBPu`NjqO$?`5BF8HymwsN zq9zU^?_t@tpnNLOWFV3N^mIvt<Oke+AkAqkg2S;NmniZoXjJ;SeaJWIf<-w}QvZ^| zIXod{Xpr&rZd=9>JQ#XGH~lbgTd<r8+-gyziBTa#4MRw_MM+SC^MVk~y)!|G=E6zq zA7aCs#%&4c%NS0@21(l=P_*r%w08ET;;Ic}!$r=yKX7E2kQ`O|IwDB>gH~@YDlq$l zRR<8Y6zXwd8<FdKVd|NIz4T|bSsTkp+}-|mKqJN_py`il_Qycb>O<%EX*iCq!R4@a zB$~p7R#SqBWIml7-6EYsrUVGPO4oMYL2{)!caZ*+jdB~++R8H%l7$<oPUI}pQ_fv3 z)3*~`BCyMfg=9iW#X@kH&S+og<zO^IhDWT+(dtk}=Pd5Is(vsA68`c~MBru&ZMQ8E zj8IIxGU#ww*@4C5F+Re~|IUoYpj5DrXpH0D3nm7djnNpYW{qD1$zHjal%21T^AQQ? z98xBf!`-S(gnGSInJ_sK7}Zsn)o0Q?(NcV?%5ZIat6GL|d{ett+R>hq{;VG-6I!6_ zukI?;O{{-0*<80&C)IXsi>5#2DECA8&7+gM%Earq-9oPOHR?Zv`tdR`9b8ty2C$;& zf3dWVEZE^^*4|}iUVMZEWV(s%msIh@?V^%Z$nG$M;>bpy?!GQq@z3~ArsPD;TVwQ= zi6)^C`nzcLrOpY~h3y)C(8;?4)=`EymLWrYTj7PyyJ^f4H`epvf^$)^cEBJdN&|fP z#ch)UV#lqM9Q&q;H&fP6$=!)ly<`=!*L^)=*xJw3yXSYa-HfRbeGHwJqzF8*ek>=} zY4JpTPN#K={R!!0xlK0+SrsuBL|6)SHila^3X*Nu%Gx(3Xl>TvXHePWHzNi;o&Ihf z*TW{QX$jT}y^_X&%nL<jRW&0yRY`qZE{HW+K3MgXT0hgf4a);_KJcaSYSrxS4!u%L z_fJrqGQLKEzZp^zK9WoX+DVVx#oOQVTnJgWJj(C!aw40Wmo-E$=^<`(SL$BG-Szdm z&tisisP5>+EqWY3{g^$D=~=vge~7M#k`T6{<pEu{ZF*vJF9lSBdPveQmP9^*q{|hR zP<`2;EJVF%K3nZ3w=|9-*-@4Y9m2G(<kRz9ViKsy)1ijih>3oK0k_wt@3#xB2wAFG zh@sd@&>cX%A#7O7z4`31U-WUS82@+#q9GmJ|2VAn>~h)^-fXC1HOo7l-hsN~`OUjI zr$ReU$r4~;5#Q!MMk;IdrkNu^mOwB%;M}=^jy^UcL*tnl)#WvIX-lZ}(KX$Y3|ZT} zrK8w_aZ^w;eV8RP)pn!{y3?AJ+*I{@N~5V3>KQWXOfWjFZnBKeX|^6iz3|KJf0)Nn z?1wvTAlNl+q!9&NcN^pxdCT(T#{=<~kW`e(co@AnKfk;>KR>xTyE=J!aWT3aT|kqf z<%<j!*p1ZSg@21FccinnXr!8drKfqd!LcVEjpOh^(d-Q@c(MOS&`i$mIG5Ptt3Mt{ zizmKvHD5nG&Ne(ciEjaK5uAevRcBuPeB4ZbJX8<!uk6@iF4y)lDA4fD2d+s8)<}K> zd_V``^mzAs5@!#K6{GwE^~>pF^A1dP7gvaQ&Cz0v;VJBEg#79B&HDFS+W!~}oYOxb z0nY2jKFVeI%i*C@-n=^g!K+_g<iHltsY`e$lkXTRV{la*0Z{5}&8=V`<FDgP9<V`l z)_z7SqWy-!3PQWy-~x4`Y<EhqPG9R?zgm8|UN0B(U&K?IvGH%Sb^0W(&*H9H?H0RV zs?&pJ-{@D$i5&F)hwgX$d^-Jn2I8FK{}Yie$yh!;xnFO7pq90kDN{UIJ^nP|ocm&m zXZkiDAGa#qbLC?;J}2LS?Et8%Q^8fd<SS{s^y$f>Pr58PJ6-na55UL$MTg+}4|ZE7 zH--pr(IZ81QtH^8FXzkc=4`vW8zZqXUn1wNW=U)x1HY%XX=J+r7Dc8K(I7mR+61^) zsFFNP2xFFcggjO%GcFJes89qwu}LP2m@y>haEPe6qnm?L5;PHujnT#S_=sD(=LXzx z3*BNXZIaA|+lE7Omv0V-Sb@S@eu>pZpCRvAJ+p1CXonqLQb+4noq}$xlz*-BX`w$- zQ)S|-wtDMb=(~O^r2|-|=uY8aTYYSbf7}5Q{i+04$@@crKx4+dq|BL4oNqBfigBC# zFqzZ!Zi1sKdfH5KaD{!7h^9Qfnd!KS_XReIBJ_FNt5=i}OFg_(k}q&Z6yQZIF@4YZ z^Zt>mNXJ9Zk6c|skb7@MLHE2AI=Y=W3z%s=$+P))QYcqE2sZt`sD4bywi%BZOUqzv z=o_?>W9N*=>5z2(GQqr#k%if-h|DqWsIXP@S7Ay~8QDxOoFZ)W__UjnWj>oz7v;A4 z&r`LUbE6>`SAbzh1dPm)xPoT^cGn174d#3{yevHZ)o$}^{{7ZFOhZ2CoX6Q6LW+0O z_0ta6?>`uxfuTnmzBIEgZlCUJ!>yisajEe|r33z<jlEc`w<>K+>10N*QE-{?R>bjz zs5Mtit5!EOs=;2|FK1s^klz>?=3_7Q1ptnb9mBU;GV@q|yJQcS_cJ^i#w`<lvGiFq z;_(8(wJo)9@6TxbExh3$i@U%`Lv!XA^^M205}aUU+ZS7~gH&wuB|klBL<NrxhtI4t zia3jNeCQtIOC@>s4B*nEhkbBC(8E5Oaz*CsN^T6tFz?1Rvf#z$4h+NiPiTfcy~7_f zdk}g8p|DZ)A2?UL=?-%u+0qMb$cDdkR*8XP0*&TffE|R%#@SHK3A#tuBo~F?<BK`r zHz6KYAp<qr=aL#S@eUxrh4lw7QebLY#c#E#%{hO+*zU;lHMR^Da!5BRG|YZ<@=1+) zr7w@J_Wy0C)MCBSx$REZiKGeqdgq4Pr^7UTQwYH(kx#A$(f+g>T~aGNdZsa;ax<m( z&?g83X#$#~?sq$Zu9)aPoGQlP`0oycWfxKs)@(cw@2{svcL2)=)6=m-=R2kNZC?HB zfDorc5kk@2L^he~>J3qV6h?ySx+vh#HL{ghO%zJi#rtQ(uxT1hZLi*FFEU0W5(MV* z>x&+3V)y4%XEe{}!34ROJ%EtccpOC|+)Lk3N!c0=VVF>3;tSgX{=#bk9}Wk8Gh#SI zrI&NYkg9I~lci3SFX%f`xtuEzZCTo?Am<#(T@(Zq`l(<Ewtuk%1(^wvDI(SGz)FfY zbEeYB$X$dQGAO^pzK5TvxlKV?VF;WD=2}JI#Wp7k`WC`LR*}|YUStzfT)wwOf)T0= ziIgNOr$!%*J$Zx|@|wF%q|O?ffAU}?OJtu`3pn%B$K9spj3xn3P{TG>qKLLvIDr>H zWSVOjlOs}^8NUYE`a4e2SXF}!n79XFMOxD#y03l+`bBS3_J(SMBw0ieg%hGj_RjWw zc}d{GfUi|0X&XaGOUlDsiTF<_0-U=rlYsuh`YE&M%N=<z-rj`W74njx3yAc512lW} zz@}3<f=4x~66ihybE_D;GD9rPOV;%*S?hG1UQ3JF0;_8jSrC>K^EwI^jA3XOgiH>^ z0j%7zM&>wP$&~Z$WXaEdNLH=Q^Mu0Kouq9fTJ!*6g9mq8M?Iq7tP`^4K)0xK-p9vE z@s17ce#Iqn{u!gv8n*K457=I4fEr(uG=wEqo6joVKS4~0%x1(FY%a{~_T@d^DEfW5 zp6w?0-`?ZP7lEmgFZbgl>1hrnaOqd(r9@dCUb-UHV`r~;_p5IlvsO&tXl$v5H#_;u zlB26V?Q9hA?SkT&L<YD%#`450L#Q$;b}+x#E>>R<<Mee~SKv3_ZjK5b@y^A~w>AW@ zMrAluxu<i8=0t7R7}b&2z)bXE00rLV>WQCju#=l_D7R@t)t+!z9G9!`Vp=<<>S_Bo zK%f;<8~FY5bRhg*^E6k&NN;>s58$e7B#T6-gv&T^H8i@3Z$+O!amp+~EUJ(M=i(n` z@Ze2mH9nK;TrDa04=!8-J^b@sRe&nv+PXMxb{V~wiCvn<zQhw>IUkn|7Kv{}tT4;1 zvKDPFJif{GTo+Wj<NFM85>V4mXQjTl3BS2z&ja-Oju)7#ecgglfAUbrydrk2^To|r zCo5hCMj8#K;}F)y;=0<c3+*i`8g?xtU4+tVNit^gm&~${$SUl4$t)~i8d|<MnPl39 zRRbx@RwN{&E9#5sR>WE7s>vdZS||D<)4PWVd$1s-eeK5h5$29u%r=|ZugTZ<52qKG z<8eR~+xy5vC|EmjNyg*GH+&M`zJSNEVmW=0Ul4Eq&<>p%1<*TKK|wJeWU+YtfU8_+ zPw<O6)bM|Uf(qC0JB>3CzAP%%Bz(!_7c!5(L1ZMJ5%Re*Qxx||Wje}UgKc5lVhtq* zB_guuEC&(2h`_`wVnkoaT^&UpK}dXM-@mL2xw1a0Tb;8$`b(KJ=A#W)AAyQ*oRP&X z?<_u~T|n*7hzq!bo|-T`buf&DdDCL#t@1m2iQuLIeL(m_4{=U{498@d2`t4TCM;>2 zSTMOri6JA|epbBL6DA-lVDtj;;YP&gppZ;i#4_|^VV?apo3!U8xmBMYoLa2|@gEcm z;jRMZfQO}cw^{Jn`_7pvHTYfwKBG}YgM$_dRMn^0w+}Q1@>XWCnZ2)SjJxg=lf@E4 z&3PAx9=XV&QRD5#y9;RHJu`ip-g90?Ka2X2ee-h`mSA5893rf!;O`Ak%hB!Pypp1j zA6v61%sQ16yn4c&&~KT;+Ov0+GswEXtwbeSXAn-3sQY@hl~2pN&g)T9NRCAp*RAvV zUB<3wGs~VO*<Hw;wq6b;hc`nNZLkxiRAKJ0m4onC(W*?RLKAM%v(+^VutoUtWHG^I zc*u?;qOj2UaA*(L)JMX0p~0{a?3)!nkX>^}g)?e!Mg91yemaRQD6MN3Hc`q<c%140 zHTI3KoWc}w*4+QRRXyJ}65L2eABGTplv810>BM;u<Dj%#y%NP+DR{42>g(8(YHZy+ z&GC8#J;QtFo>{}b%ZW)ACrzSQR-&<q`!l`6jEduIj%0FRQqGaIUz$5t-J$z#u~82$ znQ+bfTLd+^b%N#Ls!DgGcY+9hv(55G1Ed+f{J{C<XkbJpYkT)ltW)2S<{148YcLr_ z)cg%nQoFC4^$&#cR$q2sr`2X7hTm{zrPpHZ6{I_a_p`Sw>`09~j(Ah~_x-o%c{eb} z(^574jQlZf2s&Pwfut0d1PL?mH;O$KW_#f$ba6s506R4Zg%_Y?ldo}JeDeu3U_Lru zJv~&L#T@k~4|pDNvK*h`l)Zf#K!W}?JH$SnD-#+DP*WwG0-?;ROd6B0T-?qdAE)l- z)v&=J0ro~+lAn=5Hn(zg%2{5BiRg!zY($H+T?y!p#6II5lE$(t-OE-<mMlllPUkn3 z%udFm5?2cb?CbRkBO;)4KW}EMEn3Ivjd<3zg*z^%GL<hE)p+Ggd2%;X`b0JwErsu0 z$weV0XyBV>e7a4p_@pX(=z&d4#H0`)(Py9Tjtu;4mY**$#d0>sgeDIIeM=Gu5bvX5 zywX<i-Y{e<T}SWul|LNae7G6sW}TBOAtHC%pwRhpclKdx_cF?%ok2LAtxOP01I`BS zXnGZ7QutYpMxJRSZK8V*SU}Q-!cSTBu`aNa%ZSY4?EF$kliz=~PpI_yK!*Tpk5j~+ zBO6Y?%ORHaELf2*5mHgKNJw7uS0T5))w>)G*hTrV2s@$pgvno0!w}{3EFSh~w$Cw+ zYcZ0O#37X=y->$9k!NM^jtL*(+iG(A@GpXhleJhlH#kbt;nQ+ZQof+%ywNOa<7@?& zH>b0aDQ`<4ip_B|oMY5?UZ26SQw{38e!>RtxuSpuf`MhpUUP;U<hJ6nmc6zG+??hZ znOK5R+zQDhRNYDFVd2M*VADCbU&o+`f^KbkF8uc640t(NF0>G)@RGpzacR&moQ}P< zZFwwW%no|f8bTZGSw=Whj@0P!MkIanD4Y<B<+3Nc3=!aYMOk%vFZ1Je?1AxZf*w-t z9zy%qS1iJVjSf{V<XV(<q8+kR=r|rtzlqwq<{C5pC3CGx3_KaRsYlPYS&6Au+KP#l z=dl8IPmLfY1%RjfZy0Rb7T5tY70*EN5EF6gQN^s^NtPNgBP_s#{ri?0UyyT)K@FGL zb+)?saZfZ3FQ=5(h!%@=2g&#%4<s`YT?)P)O+Yt|EV@`kgMR93r}3}7xWlNHnVfqG z7@8R_7MP4lj|WV5n;FIG!4ad2yT$!|wV_#=Y787Dsqqg>4UtdN*RtTr(@TU}@752~ z*?f*fT-^+!rjIkQX8?<0_j+U*MrG>sD)67LA6Y!jai6eTV#jm5qk|rWQ_MT3>F}5g zk9)z^r`*WXN|j*)p)V|HOXO7}ErIQRoH}y%G;Ln2aRw=w!jXpNu=$lfqVMMO`TOhd z)J<`%QN5<o?XMg-RDx)5r8C?I0Fk<+YYyj~{aHb!*>3vjBh6qmAbq>R;`L_(W6{Zo za}tBP`mwH77oY*65xOFpn$OQ^AK%Zr_=Zl~Zb+P2kXUpN>7A&WIQxA%PiCAuyoYZp zJ_CoT=OV<_flK6koahx8qfZ=nrWls<95_NXIS}s(=|CAMT*=4T4$oQ;gefisJ=(HI zn|Lh*iGGb*1@)!ndi|(o04iO9`=EY{;f3EZB~V==43yQv!`uTrBtZ87E#-Jn0Bp+6 zl*)k&6Vgmui=KlKE;Z2Hp#A(#VJJ|Epsb~ri=Mvac+=NNP@izWsZ0NwBl%KQq)_Ic z;bo4nUVzZ383765djuNhXsLm?Jf}&Npw`87f~#bHq=y79ryp&fy;0!6cT*+B3mE2% zL=z*TeFlJdN~kx;BYaq2WmF`5Oni;2sPxwocUwt7NeGfWMzq+Qs4n+~vj;}I{a4rp z(^T2hpDq~wVN?jOkhr1d6-Pt){n;`2^|yWSxLsla-i=f1f;XQZ7W3uZ?*4IlPDvRI zC!!xt%ug^9iCSRiT2!h^B>MHaW)?otLxAwU2x94IAD*?aP%R*VgMsSz)qqvi-!3_5 z>zVi;4`UE-{ard`6>{Hu^wB#-OZxyVe&!yDDXxK!NATlREN`1qokrsQ1|F;9PsLbC zwLjXnTQnT%6C|?3$M@`>h*sEqDk*kl%kW+L2lwz0`REsZ=4$`ubUmJzx+(x-!a(qO z&?~OLNby7=2#qd|D*tN<6B`mlKV_2J+fClSibgkQX%k>c?)g=KN-&zcoBA@&VS}u| z!-IT+h1Up>&AWYEE_PGQl7`hknNx2i3zUQAs<iY0%7zQ%obM&D*KD6a{uGuH4cVbl z_|y4fGk;pnHU>%E|LJ1@onhYf+-uy%&DBvI{T*4VGl{)P<$erA1H#G9(gK{QJl7?7 zAW3u`KCJy+LcJn%O)%*0Q_nwlfK1h>W${j;a=;KIdt=;;iEb<!LG<}r56pB+Ji+H) zj6N8;3lTpSoYh-xgIgr(R!F-@kg$LyBNap3BpqKnZ)WE3SY+LJmbk;BJQ>p~vWzoD z!u=e%omezLy{NgkM^;gnuCrU~-9-E%pxsHa!S9%ZUEvSvpaxC%5~?u#J#lQ-){R?( zfRwTs-1!EC812E74`7JZzh<-T=5(~!>gRTAmA1HDR>~^YFZOIVqZjrw`bp;*eE?T7 z@TQM?-I1xJ^MJeSn^lTvv>yDWuzwy{Cg7hZj^v!eWr_lItY|>LUGb6Ux2xY;zdeEL zm3|cvpBT`e-=j#F1c+Jt^8#)C+sF~BDR$cX-6M}9RRNNKpPvZsCCEdJ!k5Q&Qy#8} zy~Ja2@s;T>A+MBNdg?kr;W7QYAVw!p3Pv^J*r*Fu?^EK|f3%|k58TR7bkKxOoM>lq zExD1s>t7RDo#mwyt#Et}NXOdk@Oja?t!P%K@DKOsn_tQ#M@V5sY|rGs8gJsmBGJX! z;%tkTEtS-x*DbfsOPA0GU?2pdUTC{LDcz$Zy~64v>LWMr`4k2Xib586M@)}>qHvnd zHsnzN1HOd68oEVsu27e&{>mPrGu=cB!}v0EVYm(@6-8X7E^RCt*RUKjA{v$pN{;yI zcF%sC%bl_oK5bz(S!1EVbad)nv)qP@WQ}>0j1S&J07@x81^r+9@2n5r+E*;2dy zv(;{LtCa$G{IkF%ye}&ca^0_p3y~3qAUD!h&2PVMFsPQ@J06TkgadG8ZTv+xxn_|e z9Egw$C4iHhR%rsMe8!^I-id0-X#Lo^HX=d>xgNY?&7_Tt18n|cbVs5^$k`IYqg>`W zX|TYDnM89woFH~^RCM!>f?v}@%5_h^Dx0o9?}SWF@5NE|L^JbF5FL7$?Y>?t@9=s% z<Nr#$tk!Q;oU?JXE=kugboFz~f=E!g)rq7P>7`LI8yirCY3lrW|2%9%F%VV;%>GWT z;hoqp>x6clOEI#>dffp%=kD<x96FPPHKj>*lsZa(_GOM#k}M(>;X>r|{WspDjO27A zf3}mWLsZecz~zN4NEX&xkl{On4MdO9)Tm9A^v6Inlzv6t*7N9_9yM<mY*qc_X%vu> z(&lP(yNZ(3)iCvpc>#wex@)TwZqubIzVM2A@cTej50gzp9X^x)!NX6=pUzAmc#l{V zBG@TMN3<*$93L1lPM0FYq5<T6y?iFwh-Z{dDJ+jLGK^EA2+%iObx;e&Oq^JqZW&fr zv%Bw3i5u`KzDLU?F4OlLRUF3l3>&(i_4VRJsmv=%o4CAP+%1sBqdsJK1Z08gg1y-n z9&E^ehERwPJork2{UC1<HUh?WS>lnT)?g13w!uXhzkR(**bWgcKysfZOhQV%PuTcH zX-UXuOT?F*117s!5LH+trRy-7h;^t~RjE_{Twya>a#NuMVD58)0@hI<E(~JA=yurG z3j^2;`h=kmPiPromcmrX>GmU^SMip3q|yge+yR)WF-e!WT2~w1g^gF8;dN`k>JDBF zPh)PiIL%?rxmeEM#4Nl6DmIHcHfCiKx3&nA6$ghh0Fy|FCKgLh>*tOfM>k;MNTmah zP6Q~rug*j&`HOP(SR0Syd1h?m@NXgt$riF59SyHcxWrq2u(wHsxjji`-9hDq3t%Z& z0)0GT-<{%Hy}XXthL9pi+yX_1PU&l+4Z<)LV(%m-H$@A^o+7jhnve)-)Nr)JIXGiL zM&9(pUzrzIY)&?;3hADB_)wA}9;VM;A`#ve*Qbp%%zQ;r?g=f8K?+d1T#-G^Zcf#u z8x(G{jjTr%oBZUff6g`wWZXvQ=09wV^KGn^(Qlw^knnL3H;Y36`F02(KMw)q*CBx1 z9s<bS0f5k;mijr@i018+nbGKR1c0NHPbhm^eW9=x0&ZagqxWq}*?2Ihj%k0m{c2-d z)!QG8#%KSSJ)-Ys&r^lqxs_@4OH>vMdytHH(Zv~5x$(6E=_u<QmLU~*lh7=5^<C?& z$y>6K9@eWhy1sYS_;&H_=dU}vU3>j$P?fkS`WO4`9?Wul!euY|rFFATr*^+8t$8|C z$AjPl>|@GwUMyC~bbB5-o+|#^`;Wi9dOw|hKy%y$CRZ6n`_I|(shZqUNgf_B-qDCs zzNyokU0t}lqF;zz;TQg{F6v!f$X#8SU0qH;{ib#`zP?q)P180O{~g=FV`u*jr}6W@ zV;jHzJGOE6-?0r>rp9)4?h7u6QPN|M1a=}m>Jz@K8r8CDBxTje$SM>bmB}i*5rIy@ zZXA`YcP4}`cGhAesAOro5eB{GM!fT}XLityxWM|_jCV$6cUHMaSgZAk1lNsi=F-0~ zoW;D8@iwD=;gSvp9Q|HfDQF&1rD~WMk*Ck?9r0{XT9X+<u{~Y+djbX;bLOw;Uoh@f zzi_ugzcdCo^%<$26uS{^IEnsei@QbB3vDP`n8s>ukJ{dbz_bDZ;JKKbra63XHNJUN zJrJM%E;^U_78_|Zc7tQa50D1n>B%E}PHV}2UgJos*#osHD?4^{hWQY95CJwh{hnS` zKM6i-3zzw1y2qb>%CO~MxSE81A(#li@R{gEtw~;R7XAPOzP=@6ZS^Xf*SajKj7kN` z(BQtCEtdEN&A*`Mmru|Ijlubg-FP(4WQ%hbd-{dI9>4IhKd-Srm)M^h>@TPgGU16l zSI6n}R28XFEBW;H*Zv(N&y_N~<sAoDbNYR;UBLfC%@C@WjBBXs-{|+I3U21q9qJl~ z6=w15rn~j@cD-KGn2Q(Hf1Xfyv|CRQ)<8v$8sNcsG>1iBxra=@5QmIk_=o(eKIB*O zkYAZY{%!i{Z<<9v{e%ARoB0E}Z&-Nee=E}t#|7x0R@{NsetK7G&sI2W`24y(>#5Qo zT5r^(6O}-3;*7Su@!I7L`i0;P{KDsr*EMgvmb~%W@Wz|zr-|W>k3rrjy+AZ8P_=>R zDpEy7{`61@sou=wD^j{Rl}lB5jg5?@ZkOokji&6fcRoiF<$AbNrXYXgo+JH2oFjhW zpW~bQ9N)-ud}GdWJpJ_6oa1%y9L*g^i_pD(>Hhln+mDc3O*HL^S|kt=l-w&p`k_z> zj$PW(F9hxI3!ir5ns#GJyRo6&@6%834DJ5E>G=J_=xjV*@Ti<_zj}v!HwD~$im`1y zN8L`fxlog^KK61<RR4h~7OU^;KiJ>ZHO0P+S~NzCyly?QhEkTJDefYK?d1K#iE04Z zM`vNYD+`O-y!{SdGG4cjf!|Z3F?II-PMQu1kfpi(6Qs^LHCNLdCALP-1puKv$rNhD z$Li8|Fy^jYKBiv?KE^M6KEA5?_)7BemEmJNr|?GeG4@TeQ_RToHyu08GZ10ByE8Jh z`uTPCwB0Sf*V=A6|60vidt$yw*LD%J*0uF1dX;0$n5ABQ0M!4ZCIkdnq=|K2DAsu? zTEn@e$7{|e%H-o)qbUe)K3D(Q1HNBxe#|y^G|L0?@GuH*YueH4KY(dzI3DpWjYbqj zQQVz$t_WB%kG(-ej9O6!ug~9_x9vw<PlYaKrjk1tgR54a%f)K?xSU}Suga!OwG45l z3_K?RHyR^>qpxa9nKo98`FrM}r)3(=9REwEb&_efszpkUT<9vsZdGeXTgi2$7(@=W zNJy?*1pYb+s|yG#**5Fh4z-H40w$<q{};(17>Z<IC?`c3(w-dpmzs9M3+#L)+z(k0 zNQxz~FI{Vcej%(4{KB_3E^BM!Qd%3A#@axf`!$$G{VzoX(i_iM7@v-jhJH4}m|AE5 z62_f`@nQgByf~yVUi>ADRbAQ#n7=kB*68uPe>jDdNy(xAp9tgUq?Jy`ZzGjee<>xF zEif@*76LgNqp0ZFD5bN%loGxE(k1HgZ2+b8?T||8+h0nljZ#7+`7fn}krmHKJ0DXi zJtyUSHhvqfdj3l{Cw24r7?rZmMmL}TrJK9z=AQ%T=AVbu%|HLr&24n^`Cqyj6o77i zK1RxMb@TIyARJLQKPMCAeEc@pm-Uy0lC)4R#%O|hHWtdoUlvMN3+2}U7Rs+fS}4E% zvQXMsC>MWODB41KKBn4nEtKbDsU6iqc|L~P@hp_*WT#z>--g=f|1#5(X4>T#O}@{@ zOuPKcOzUc<-3?%--5t_QyZg&bYh$Ke{$-|VGwu1<tH(9do{zbDR5R`QSgXf0)1Hs9 zdNecbIoYb0<F|oHPk))JNmKP|Y-a%2;aIR-f2Zo-mJJMlQ}yX`<UqV)Jl()>^_S(^ z)pB)DSI?B`w=K(zI<*X>C!n=tpO=b#%o9$wvz4{ryNy{cY#O=Tp*8CY-43R=BGwYx zPg(yn>bQFUaP^m&tIgc!WA7i=%zZxQ{!z``=VR?3)69K7#{Ln_+~;HKAIr>rPNx19 z`js8c|Kb0!_io*7<H(}${xRS4UZyPH9@8;<Mu|J|vORrz%?lSTF%G+B$y<`$N&ot< z3LvN|5+FemBw@?F&Y7Jk5>R*44FyQ2u@QdqgZJxjYWTu=?&&i!dF1Y&zq|Xc+<nI4 z9({hkj~IPCtmDrCc=!Hs?0duOb?5Kizx4k734_M<{{4x9M)m&v34+G-{{4x8M)dyu z34zA*{{4x7M)LlB3V_b{0TA<mTm?P2PM*)r#*kOvcl3N1$OVahNKEKa^mFkZ{kV&M z2#b4-e&{}<L_ZXO_voiZ^mFkZ{mAIYpD=LT=*OQZaMb9>pCE9|=*OQJaKz}xpAc}o z=*OQ3aJ1;hp8#--=*Oq%?}A2u!~+!3U-N;FEZCEehSWGko(FpY3>weMgQfYG9z}cr z=KD;@j^nqCeC{*sE2`KS9d9MU7S~B!w!YD+<o55;XRlDn_vY^+F((&h!IL58C!(E? zOy7qQyOSV_mJq!~^Yse;H{B(h7_tHSZLeQIiE#$|{aplD^I`a|R>!%&@ZgDRJp_Y@ zyPe@~cL7BQ-wl%ALa4=)A>DDS*!`xkJv?0Ty!v|+KMAUJ+#2_V21l}>d;<l@eRYr1 zey>veU##(NH$aN~yZedvi)6lp7h-S}KKut4r`YRRgruyMGuLA}z*xP^b{E}z=3LeS z*+z~8Ryh`X>Y;!UneA)3vsZ1Pa2{3Xcn@aKsy|7gadRR5<b+1eh4_;a8Z#H-Pey3O zT!=pjq49Dd{^Wy3%Z2!p4jLyH;!iGUfLw@AsUPss^48~42#ARsHCJE%wg*e~TnG=n z#^>`r)f42Y9)<ZY^i>mxK>m$rw(LrsiR);eEJK0n+l;~cdrYaT3cuntd%9UpT<PU* zquTF;%9ecMuBBxCA|&f0i;gSaaZ>TI0_2zhf~^M~Qa=}P>yf2sw5cEUfVz00E?zFz zbCIHfS93wXs?t8{5n|oT;|d@8jC>H_td8qV`V#MwnS84Li9FYsy>OW=D>F@sK9xXD zx9LCRB~12GW}CcGzL_B-)f~c;`{W^Aku<~$&7L$s^*C8AOv_+iOC;OU$EQ5Qmg53h zl#3#F;o05oKgQ)C0XAPhK5gL1?qm@?#p!1D$XCI%lFIO{){CUPD^d{tJNcGwwq;h! zySOe`gpiON6bf!nX}z4FnQ&C>>@uatw#7a3<d(<}I!fnBhODSEVJV|FkISF~Z-q)X z<%>2qnEzOp7tD06E|HwC0bE&7@TH<jyqYZX^i<Ldxd^qPqR!KfIC3$}KMIva?GX?D zYE?+S2aMk_09CJr_ziqOR6O!+TEz|;_|`UAelsmHeOjk0OquUCak|^iu2EX;Ru049 zDF5}EY;aRZ+v<eBshHNLi1YKUsaZ8x`{qLUF(5QB&=JmQp*JL}-9*kmP8x2}nksIO zt^n#Ia2Db_*~@fA-Zo~Z|Afh1E?QDBOTGoz4*bFMY8!t`#Ilk4$vkGqmpv~Iqr&k1 zuBLEvAfw<<t!3O2gFmH~QA-T|R9eO?G5Awx8L`CRPn~7F5`#ZwmeEQK{#04UDKYp{ zVi}~w;7>)RhZ2KV6%=?;U3v5>`)E-t5x2Y0d8>Mf*!N<|Brld6{}w~;51J&^El>P& zo*Y3uZ)Y9qCZ9xh`?H(6$@|mk&gv!^+s_Hxc?l&%ruR}p$+kWrTk~p)xMtk4n(|S| z+a=2<T2xaqn2rfdys&~L(hh}{4^UY7g(?9}3g#KSy$X^l2xO_IOUS6tM12MRMw0UQ zZz9e9StWH)Vedr-_V^JLTlC#RpXeRdW<Zf?npJ#389+B%H?FHd1|GmHHT%l^@otkO zntuu=kxWWPyPr?{3c?<PDYaiB@dBw#v6v`1K<_SQ;+IG&Q7Od4f0%a<XXz?P>)=no zG)A=>PUwdC14zFjS|W8SN+R(_)UO~Zi7b=sJO-9r-D4sIJ|j$pFTrPeQmR~<q0*w? zxXj}sN{|oy0un^bz7EV5MHvtHi~J}TdVX!wzwI|RjfzKOqk>$~<>WyjTlSY{lctr1 z5SH^AQf@NKYQatZ8K@zc(sIu^v)!M|%MjxYiX|T0kS1B$>g+BA8tId0ri?Sm#%l=! z1e=V_G;;wYJ8<_ks+V|^#;aYlNOp0$1Ww2EIUHhOx1Lw&dIbg&YfJHxlz3<I4wU-J z?CQ(yQ3SU-F!vq?@QA5jJ@OvKY2l~)bgYNIA)@mqmp^U>+oM$es3~lJGWlbsu>DEo zkC?*tCyzf~3frGF{%9#|f3o=Fq_F)-;SZ9+_9tWCOA6Z~&#zMo+pA<exNa(v%93&W z!Gm~Nf#fDIanmgOzTED6mPAG;n17G+ezQ5QcY_h>@qN5a=h1o#sh{|9Hpi>Wu=n-n zISJ2BF>*;sH`@#e`3Zi1@wi^WZ=qQ^G&$sx;%s{SfKBdz4~k<2FgK$r6oo9!BofrZ zI5R6uJY%C%yny~&*;O~gcFf>H1!NF%C7V^eOJ9=NAAleH<5~7^vrm^#aJw3*F~!tc z7+!zA{TIzz>QG0<9VqJHWgjZ);8`Ck>flZvD(c`wA1dnTJHKf&2UU)LU48xK!&MZ0 zflC?}Pa9~;zTLt9KHRP0|H6TYhvW`Um!Nb|VyZ6C9IB=4Xw5l_?)jUhvZSBx97WIk zO{2~QY;r6FZ14IECuAZhc+;ddOBp0<-?*4n;Qr=a)vWl{Poaoa$24Vih?BCiy5^2% zc5W1oh|^`Vdf0v62WJp*&`=92VPX(i^5ba}K~x6cH-8yQ_7BM_*+2xR4bd<V+Q&L} z#`d@vui*!KqXpp;d{B<pj`MhpQ4PN><F#o71F<mDg8!~B<LkmyE2xisUoRJ1tdOa2 zZI8HL0jI2O?g^`cNOIIy+-U(!v+z?}6U5M3w6pBjw`1I3kH8(#0J#EDkWR=hB$ZfV zy;EMyv^3J=VOgPRlkhERnn#C5&zdIND;t~0@nlftv<giI)tW|{Na5Q1a`u`v?f6Y; znnρB_GAkH+2<=Z&Zrf*8qJj&kotZCDO&@_qV+t9R=H>GJF6$^USw3CC-G>PTg z(6rMxrD-13rh3-2(}U17iRIhSw6iy*X&#kAd)BnGgU~dI<!jNjiR{sWVgOX8XLHB~ zmkQ6AA>L0e#P+Vr0b4<<CAHJ3vNA`j1%ng3HTYMOKYFrH_=nf5DpFnOIDb>d#-oma zo{i1<K^Pl}<!doE)tYwkrZml?29%yPO}?=G)(aiv9dZ8)9jrrJd#LMMwAI66XYeu< z9Q)8Okggx2-Dyaw&u80Y_bpv6_vh&hd;;?Asd%Fbnykr>rtqV`_rC~J@^6~<x3Uuw zQk25$U$MdbJY8=^6<9o5Mpiu8qz~W8U0BhMzW+A)=JEIB2LX$(O1}rsZ`pkBLb_7` znBJEPr<`;l^+Xi8r$A6PderzOIy_YOrBk*HCA!+{lno$d-%!*=-jV+N@XtR9VREXT z!r0Ej_sG|<l3!8dh90uFROI%lC9Y@V52zkQLkW3P)PM6|r)|O8(l(EpF#FcF18LtP zPrCT5ZCQh8gZCp&=dNC&n9g-iQDhmDn$z}ewUh;i(^Ceh9>i(;O1jE2{qJG)o5@aO z`dxbC0lnvJcAdKSyPx33F1ebYcsQd0TX2%4e3NJkmwOZP>P<diPhBDoroYSiMA_Ry z#R+UUn(b2v-RuBlKwm4u3&G+E;>)M6{P|^)a8~#jcjK`VeQ*RD-ZL~{N>cRj9B&qQ zVVSNj2SG_3qo>^_N}!D~p6@5&8Tb8i8$>fXUJm=tX{a@WYtCVK7d?s)NDa{%5*o;U zL)ShDSt(ucMngM{De0j5zKHfGjKt+z*6;`9DwC-p34r&uH_0-ACUIoz0F=PFcz9C+ zHhnZ~H>f~f($`BU`v--B<`=kHNL%Jg7mq*}rzns`O~eoJ(1b6by<tg-ysV`j%jwHF zoGWWe1mgx~3`hgfA0<eFNRr1yi6~lug@h{LOByd>9>WZ0Y4$}8DiiFzm>z^dM|ozJ z``Gg_{t;C?is#h+QWjU+UzgjSN4N0kWc-lOV=w#)R-Y)C%MH~7T0)VC7E#0Ia=#ow zqZxI%+hxG?!0FOQy)BJ-Ca@a+B%5{SPxQ7GzNy8xivCXGzk1s*XFs!5J<4~!p^cyi znu)~)V|{uTKU}5vM(-6y@xaL_GljcIybmdADMYod)k}gkYkgG0Tlc*QV^`BVh`kT{ zp{7inf6|ks7REoAsrkn<y9_h(nBVP!51ORa@RF_^U4akCf>(eaxV*LdaTdtwwDJkY z!l>F$P)d{opg>~bfB~t5q2utf?(IkP_u%?2jIxD4fC2=k=_(T8Ta>OA$&Y9!rZT~> zc?d;nu9o^ol*#x+k%s2!C%p5wO&?Z|$!Z4y^buBuv*#r(FZ@l5GK3#68G;YWH@~O( z&2Kh_{tHNgy!j2{@IiY01*r)?&N%&Ue~q9}0J59OQZ7hfd4GxIBiF8E3CZ@jeo5ZR z)<^~MX#oEPtt44eP1R)Wp+pQ+aJ~l36cZgb&vS6c-&M2T%wzIHsOCG}8tEn+k3Nf- zA4&;CTD<F_t-FN-Jc{oU_~K5`u+NoO;NUHW-rXn`1DU;Q`662>!4LA!BaK&qG7X`+ zqYRZ77&9bf21D}w5L;d$QX3uR5z9_QDKvjpj@&91*I`k$xXT<<p1imuP_SU%<!+Ze zk3bW+H5rI7JX<7i*Jb^ar8$lz(QAI3=jiIb$HDV1WnfHb`Uj~=n#zjdTlAg_%f2Ir zTSo5y=2Bax@GDLQ6byzQw^tgk*W>m&g6euaUU9%{h1_e6N^6k=Q|EQ)XoJ9O3hUk) zJ}~65?6uLVOxd7=$oU*y)^bQZlA3N)c>Mx8*D`FdGWdcY7GC=MZ&oL0FQaG0>^y$J zvh(mkIXi!rXXnr8iy~j3JR`I75EoqPv-5hMhW}aKK$A}N>E`wm{_b-A_4c#qBdaOi z=;;L~-y+>U#k=|UWHb9DgH~+QQlIXlfZ5mXRJ<rs5kFv5gb&J8yvV6|!KrwWQ4uO# zzqX?yD<A<Su>f+e3Lvm7)IB~Ti{M=n`7XJj`R#8&^15=FCB^YI!*_~jC8t3sj_)bG zQ+!B@;{#pq6d#h}_yXKJ#fPLgzB%|#@gXUW4_&@fd`ODp^Q!L@ACltus_#3+hom^Z zCjCzFAt??M65dHZaM1Z4bq*fqzlWXul6(qn1>`>G?E2Ri2PrGx5`Qp&Ner`-$y>-t zVaDoIWvn2bcp)0UA#W98(h4kV2yYs}Qy1`uua~j791nG(Z}Dam|C~X_>ks(^?;|9% z0$Jt1si?^MoHK@uX)MQG?X#Aw#RBk7S1;?olKsEWAgKvW@x`tj_#n#_2hBUVPl{Pi z{D5US;e&FP^CZu5p71Q^NtWe=uKr*0EN1{uH>rl&ur61O7qLlWjJgJTc{g9qm)p(p zcDKO3kNNT?Ud}|GbNf{O2Pr6Ug>8lj=i9H<jW|H;cs@_I+blN^Fyh@`==>qn$AmMN z=t8S7ZxE7RiMsE;zrWwVl4cKp%OpF<jC_`~LT+Bg4FH4OeEFPJ8RkpTFik~ATxkz4 zV-NyzkFl&lIr~+Eo0k8A_v#zPPDgQV#WMkjgt^E&($pOqSvVmCc{erK;1`7VcmRby z7#f(E#E#B)Lj&`yv+HWTUo~oKXfnY$JTrqjlbtmNQ<M2?#Mbm=e8I6aowtKM!Dpbs zySY_e0L-(SgsC^?76w$kn_IB3aOt-9D+yuoW@l4#n+eV#np@1uKwJ!SnDn0AVVGNw zjvbg)nEv_W=b{|ty`MUnyXIFu;W+%$n^Om#0DV7oUdySI3C<y&I@l2Pe(GF3dUN`Y zdFps{_(GlF{p?Ne_nBqSbNSQohc{<0JPQ1N_P&<0HxrygJbSS<_WkU=di2Hz8Tah< z#swMi?Dfb4nTDU<ga6m#fSiOsy>UR`t@L*X<h3{;ncy6v1A;e2-W`yuM{gXlaUBqE z{IF3S5O3VD@f;A3ys(q-(|ZNx)ntKA!-Y3a*y+0y25*GClDdB;IEUzj;pNeHC+zCc z8)tM}C(IjPbW|tI8&`BpC(Ij9bTlW-BS-W!{Pf-lB%c<6PD0PCk!K;?MDxZIJ$v^= zUymmWqH`idr`{LMZzG+B#U8=1cBpLSkLw1!zO_3|SC2T*<J}9sdh{k57}pE-CKwpi z3-%@!7}E>(CKMRa3-%@w7|RRxC=fUcKNU~=FW_w!-rd6w*iC!*pnTK*G{0$o%5U1A zW;gBO@jUTz9{RFX$K(4wH0?dK^AP6SdJ_knzsCWuCk_D7ks)M*IN&^w1DG{v5DXYs zIJ}4e2hLTQyhFJU=S^fZZbaZsU^Hq(;7wdKW<=mkSTtfp;7wFCUPRzcP&86R;89F; zzK@BR=OY87?r{*VqncpU=&@?=;5{JH21FMjJSyQ$Ky>jQ5WSv&2t-H5(hUNl3lb0! zE6^YyGOloV0TIrFeh-MQ9=!<+#|?<Qi3>*!h`b34#|((Pi3&#yh`b33#|wzOi3vvw zh`b32#|Vf#iU%)fJV+cr5f3&mgR$`MgN$FQeWCa8PaFQh0~aus-JAFiz<IwY`)clJ zpzz4#L4yboex$19rTTY+FtB==!;1xh9@Pf$P^x3z1jXY9gWkl%qXvWCgv4V8gWg2M zBL;)s1jOS7gWkl$qXmQBgu~+mgWkl#0|bK}g}&gK<^7>0j~4^kDb7xY*KG71pDfhP zLbYm7?>*Gjhq^(iT4%j@^yU54m;Cae|IZKvAUyJgvnHW#kcYZT$0xL_yGgiPyOauf zPw!%QJLg_)NcPKbpjCWDt&+VWcC`H-Z<0mywA;*7)UH+z$kIW8Htc$nzQns^b}L@u zx(xQOsj;{2f=;VWOske&JbQb0;y?<kP5+?;`Tk@(#*Om5Np_4H<$IIs7&FTECe<-w zl<!TZW4tKen?%QGQNA~Mj&Y)VZ;~8?METz2G<t~gead0Li;G47-y&U+brx6qtncXx zeY#>2!aM2yROa7bO?*x13J{)4Av{ge6_Y$&ar|5S1R2Rme#Zj;eD-_1N#oTHWirnt zn4TNYr`ZHeRxP9-4k4uX=L8$`QC&Feyvc2h8`Are+88ya_a?J3W=!u*Vq?UZ-kZF} zcrm><X^qihdT+8C<HYpdq%;PJ>AlHd^b*ti<L`Bf>3vF0fWxMe6ItN0zZ_m@s}S*Y z)t$*wHX<kmA;BbyUeay4i+AaI1^;{>Z<A>h#k+lJa(4ae%h&&AZ$2${Ybc-I9z{@* z+->4?x1D{0C*3a|*Q@mwR!PEp!@J^V#VKO=0lPi{AC#|8oaH?wXEbX20{3+VfuL(U z3lGC93F94t6@m+X5k-q+yW6aP?vV*!!vDw|1#iy3okbu+(6=JN$5k()+Yb>`${}@e z`>*U?#?9y3&(ZCFqW_7a|9<%_14f|4w|KLOe=0&nWjX_8Gs*?cDd*cfVxU|QWwJ86 z0@@(uriyZ>5wIqs-$x`K$|<NAn8Nf2VZ@`Lp(*A*i=yWhh~%umRFr8;f$O~!qc(By zDv&7VDdOdFJ&!@nm42go=O2RZN0Xx{+BZ`~$>Y;9o+o)zh03i2(=5r7^-{oO?I4<E z1BgK;f}=%}t(y?JxB=O@1`%TNF@0L6t6h@AblnLIiVp~`Fr>jzzQvkBb0(Et3aTqY z904KnjkRRB23y2PpzAa-k~;j@sAI*vP5{;|S;hCuB>Fpv|B80s(=8#-KU9euLTKuK zX)j)kucC1W%s5DL{E!47vk%EGN|wnZf&YcV59&H!KR#`e?H2ol;uKFhx~4jr&EyJ^ zs{t&8du@~XdbJQoD%lblOLxWA9;tF*?xKh1c(W*O>rCY?O*BU~4+e$)TqZQ3T9!3< znMwZ9h!Y%9D<COMA$dvTWt4uKUEM?PSyPsV<{g?zyqWqZ$_{3BbuTV9R+WmV=vVu6 zlY*avn6mz~JFs*&pYM*M%crk*0Tn`*Dn~8P3?TuFf0g2uF8BlP+}p-P5NbC*dyxeI zTkmyJ^j`4;=DorPW$$&8d#|kKfF%g&y&j{hga;5K+f9lTQ~y7`dYp*AK=Co7UX50K zL^0nTM^QlWoM_ziTT&J&qFBUGhhT;u1O!6fBvL1l_&Z=ll$t`K0VKmn4Z=bS6{c-D zr#O|DT8f(-RWLFsI6$^?bX>#=KVWhMAC%?jIG3Yi9t9m|ax}$wMaa=CsCu3k$eKks z@C)FR^wuHH5tEo_C~2s((s-Pvt4R2EQMy_rKce02540g6YVi?OV{O3W8CfPikOf_X z`TFT+6mPfb!|E|v;cbZ)(RA;@O(~lGIO7z&{Z+($$4Z`ZVFI5Ef@V>&btg|qxX1NN z@=myhiijB=|Aj3qN*7P%d;+&7Gh0228Ti3MKf!Z{%+d3_b-L@|6ci{Y6!e{P4K)-z z2%p8w7u5tZwNE}Dnl=KlFq2=*p8AqGr4h9|9|2qh?{mg1%yZ^#zY5H0xHSOgP?Rv0 zqWTZQNcI)v8$fXpQ<=FuDz2Qbz2j<bX&aWURV<a2*J84(93`7MIwqEsp)Rn@`)4O% z%JW?N)sOO2!%n0Zs<R7xMLoRw73&gb(Bb=@IO8d%%2Z|e6*5P!CCgU?wycoeW%I~E z0?=PlQojP|iDuSA|C)1S6F~1@)y#R#87v$0UP+z_QTeroQ?EG*WW%c0oT_>2__fHg zgUfOh1yJpKiI>mN;IQ3BJ6d_u9u#jk<<yECZ#}itiYTuoh1485bKvDqdm&8~y-^IQ zf7sZFX?vFgXkHc#&Ct%Y<892Ug}J@u>%WCL44^scAz3AxbPk26tOiBffzZ_J&hOiQ zM}<~d>;`zbfyQQN8o{RL+pq8^=+lTk-F}H~e-nlL`Qz=iXv)dT`OR9IGfH~d(riJ= zz(C1gk&@WqoOhB-O8zUS<Zl@z3!TuP>N}yoLi4z}8~STSmx<5D7=$+778@ODZzV`< zx_VjvMH+o)ppW`a`GXg$PeQKpBo~aPhpy7_R`%Z9&6o4#c5}SlEyA-!GGBt%Hxuf- zeJcM0Dm?rL8V}jX+uy4LAK+3vpM(FHm5+oi0xP<tw?QzsDXa5cN=yToQu&@(O`j4W zGB$?pudx&omC!c@WE35h?J|`}G`>DL{AQopuAj3^c{Ey{A-~iYiZ#IoH!22WS|m(E zPH5GACe!L9+xTu)W{}LVJ*^66B?#|5GAh`ydbGb)B>$ogV9UDoVDf2eRFK5fjh}r2 zl6SEpVnJp&+Aa9T%*K#6IIC@GMJ4vM*!qhfu-0GrpxpXfH&h#M+ll5~Jm(u-2Yt7m z9jqtTGW~JMux$C}tY^7gtQynxwOv#2l>2yML1sPME%@fF=WrMKJ+_|y93tlCkM}bK zhqHsR!#nZp?1T@>XXi<NZRUjcG@NADX5jjZ9EA_pk!v$=-Sb5S5Bxa%)1x!w_${6x zNMi1R1IfF1;9@~`hO}Go&7C2`jk@vr4DsbC9rFzF=Oi6*?%#VbW-MVjKS-zH504Jg z>03NVk;MEU1(J6;NX3HeAZ@qcn>$E{n~>-ALF$V?G44U?i#svmLF$h;G2Z;#cV}Wa zXW}IM>5(&W@)n&5Br$g;faG1A39%q^CfY6d=A4P)rVV@TO!(qcjq6PK;!=(3O!(qa zjpt1G<4}z@i~rr98qS|O4Hq8yQ>SmypF$FIe+o$6#h(%jGJmSwf^W{B8t(lHul*@s z+{$tNDPO$GQT-`joXRo%DPMfb(flcYT*|SYHhT9chw~`ULYQ0YkxzN{7JW)UsxXte z;9`nV<6WFg-44v>Y`epo^E!unIL>RY(--G^T(8p?-+NTA(-+r!Os~@y&wE6#(-+5k zEU(iazk8(jG~eCs;oR=?5bm0J<aVFGMYkJ}%G_@D{E2Jd+qliU1Fm^k@^QG=tG#x> zeThTHb-;ZILq>JLeThQGbijQHLPm7JeThNFbHIHGK}K@G{fR)vc+dVl{1`6$xCq5l ziQbICx_FD>2OyP)ALM?u>+r+4&3pKv3qLNPo2P2D%O7&g8<~t%p84ydC^G7Fn=5ak zuyMl=UxKhv!w+9#urb3AUqY}E!w+8~u<^nVUjnev!Vh2KuQ9?8e}b=z@RQbY`~sai zn!!AEL+$Wq>M8Ks4`PIEjSKWX8?^lVYKPgNFmo8+6Za<A3f|<<VZ=&>TgB;Bu0yWs zz24(4UEBpUdk?%|T)i*x=eU8FFGavn1212q&oKipUxLpO1211<&+!5;Uqa8(0xw@8 z&v61TU&77-0xy4}Oz_9{VP?@`#+Y%6<6&p`r?cPVO&YIu;vVd&9QVqiN(^tre^rU~ z_o&ioR2hU~RJ}h@<=cF90<g-WN~I4Ist?7;@&q-Z!_ziF?S4GEtl6&sI)VIS5Z-)- zmvTg%tKw@D^0jOz{L%J%yh#?(({3{>5+@*A1OZx*>rMI+?~<9kfJATB<H~336{Suq z6T*~NhF6$gq!Ei2$u3TpE=qXT?;H02m<pUL0Z3kz{XLMvrZ;(paRY2$(hQ>p*uG>L z#tg81NivKWVEd9|7%#x~CB-mWfbC0$VVnTlm-NCQ0k$vMgdPHHkFp2QzE<@8EfNLi z?}>t%C#jv!^A9HBZRl0``At5s24q(HaQs{R1bMSb-gSY0CONcX&H(4Hbjlet*_uSj z@KSEet>0eo?9HJOe!5Tp{PA<4gh_SoV7`^zVwE3|zH;$F^F%Ir^U|Xv!nnb+H#vk+ zqi0`I2xCUizGM(ajGlc-AdDA1`;tExEqeAPeK1b+>`U%okm%W$R6#G%vo~H|r|8+E zEC9G^%2Cato_()5`lB@J!3Ke<`c$buAUKJa%k><Jhmou}{&K!bg7c%`=qRr{sttl^ z)}xS>8!?``$bP=w$l~Ltn?J*sEYcz+%sU9bZa%}UzsskucLA+OPL85%XRLKb$>Y;9 zo+qvLF2sBQ2|T-dm10jU`~i3FZDSVk)ogs06-j5GkbaNr)q1-F`iG{NWKxVt@B<c; zzz5}+WRf?Ru)rAOWFbaSD;D>YLr%7vKapbU|NnXQcr5+`V#TQE9}<)WmPnK@ok9sa z1qrle&2f=6_yJ=Ld{Ac1an71!s=Z%;C6YDMNZe)s*31GNumfP-$J=CfCI51_iPK#O z_6>L`rRElXaT0+sz)15$B)V3@88QzQQtIPrx{8EyMd@mh{D^k5KTs`0RE#648LxpX z6CcPDoJG-m{q!@6x7+k#^_Z-%m+L5k)XffAw6&F^X;F^w113lCL0OKbxg1To98EJh z0+GlrBNZeE1dCG;uHK+L9V>ath3On$9KXFpL2)NfNVv!KOY%;*hKd+WqE|q(l5`c# z)=**wiYWARzFuv2o9Fos+?00(wJ`VrP);c5JLMW`C>+&3i<vK~31nKlYoopUrFH-8 z;)mXyi;vXxcII<}i}1Wk*Q=t_iy^FK<kUar0ST863-f__4$i45KJGsV<6MS(jEk7c zEZ?Kz%K6$muI3u#&};>&_siBXQRQ6i9aUpVby%iWF;r$ki%G$9>cgz2BO*!J=>o|U zh$@#m5#RsG(}DZdkMi`<PNa;gGe&$xJ-n4GI?qf0@Fp+)W30S%^~V0Cbm_T!^F!sN z@&Ep~dYrz-ytEw>Wh?a7^3u?5a`WRoFI`O6J0i>B<)s}G?y&OGt_XJ+d1+VFI=sBJ zL&_akUfL1m-g;iz9hnXwFYS(4uP86=2x)Udz}vj^Az@Ba4HzUki8IVRA2nA?<6~KU za1c{@iYw<U_BHj2>zK(}&Q?spzgbi{S9?cw#FQ;(DrVq&W$K8Sa-Q~%DVTWeRlcE1 z4Q6(BFExyZBV}fl$lBtV*9E5Gk7A`kQLwTu0C5Z-GR0Ta!&|wc^Gd@{Zz>Hx$Eq|` zZ|r%c;U}#${JeTRd5x6@J0#wIr2#H=-u!&8G!!chj>vL&l?I1|JFH5BE5aQ{rNI@o z4zJSSka7oBX>dfjw_a&*N2UX)G`J(yE2=a&LfV{(^|sP*NSM=90|tps;tVs-J*qTd zRmDL}<teV5uf5~yPo)8iD!sCGOjJ2ndq;J|{5!8SU`?f0rjCdy=V|Ylj+ce!EX9&a zuPhx8QO?oc5rsorHwAL&(vg{&wq+IbQ92rml$BNTYKvlC=Q#;~7Ar@JfR%L~bLB{^ zsE4<5Mdy{Hdv7X7_hVI#syFt$a&%8CNB1~G3_o~fvy<$Qc>9$jJbmupD@Vo3kt4Dk zUggLk;SQ^E<ce^IQ8{u&t;4GvIi%cyRgN4{?yXmj+>z-3Do5^!^@=J-j*vE|1H7#q z9TMg=)qp{wlQ_f7bJ)O-*-2G++NOa#MU%4B1)6!bD+uq4*)A27R_3P6*)Fl79^T3o zooBli-ekKLV`aOlH}*W+wV>Iq#nt2KYs_}pA@TOJUGVbD&Eh@VRm^rdBFo`ryBrek zu(DmQ2zMCSE?3k#ylj_4${kp?%Ms<?dbZ0QnGPV^<&IddDBI--X>&@z+ice%VNO#G z7$iE0Gt4~qCfg-@!X3m^p5n^+iv91s;yPyYFz>&_mhd-=D(7nNsE*h@%$bTE;k`0- zL`*qPd&hLV_F>LaYzXg_rQ;#WIodm-qcst8hGM0xSB8#;C+BDHc!CqQP;bhf-tIQ( z>H!{e9lGt^%*yV?z_Bo-jI0t?TMY9$;Ayxh)&Uj$Dyw$pI-pol4{zm)uIqqbZi7e( zp)VCd2GcmN2wQ{Tca;#V3M~`jUmwq2VWH3-kGEedJcE~Fr}%aqJU|z`KP#NSw(N>7 zhgU5`%AGinD5TtBl?$Cw?l9_w&d7Cm1w)slJFtqOE7HC7lA%L79YD>{A+=sn(a;sv z=BkRfRl|cqon|I5WOU;onz`;#-4K#jPU0(1k>#B2A6b7Yhmc?HnXzNy%K6$qt|L~| zcwGYOKs~c{L{vFf`$u)Wq8eu^ki2K6j)y7dY5$mxR#)RJ1>@K=OGiVLbF_a%$EvS! zhJw%5GegJ1lk>BGJi)&ny&zo0O51v=+2tJxL(0fXVKrdry4rg4nH3gaWD)0R`#s(y zi|A>$ncYDi{^s-DQFQtA^)871CyM_2<#u-*MZx4KiuPZOlE<fIJWpmyaL#^@H)*`u z1=H*g*PHYu-X&Njx`>y{^*r9KH#4ZDLFwot)#OhFsK%+dHUPr!n(NJH`)Z|sm{5&r zg2_SDU4bC)mDk(T;x$b$?v5yPkhNE!-Fx-*%k5DF1s0hKzx_2rr|US9lQV!knb4g_ zx4%TUmw1HDL|W1n?GC2?>WW|oS%Gy(yu+)(IwIZyRAJpw>M-iC?&$TpDzT36Hb?C~ z*J2L|c^Z_tbbHL4_p2TYymk?Hd5SLQF62CWM|aFRCCxm^OS*kCcT8+KZ=pcZJ8wrU zR&v%tf$c3L%Q-s)vg1`OIb%V>dS~o-xN^P@f$L~xOU_m>lfAQbG*mfPhd_0#+9hWy z_;I~6bu3IdPlv#Cq$(z5X$?CKb<EN|RI@8Q5{{Iaj&RIx@1BLKNSfbtEfzp!Srl*7 zRo=cW(Xn!mB2J?8TDwO-HRs?+-ZZ~Tx4Y1ni@vhv%Rw8n`fLx0e}!9WB!tOl7k{U4 z@%Q`{Ui@u>$=feMpNrGnMX?YJSqcp#vrpI^^0;2Dw>#_=8E;bkY{Dvl@-KIrINgO< z3Y@4?;56D-13yIh<zIJ{IlL0Iq}}QJ1>hDXXos{rj1sg%f*oE7+AZ-8tOV_jcyGM~ z?UYgnP=a<!uUAxpc89k)9pP;W`oNH<xeN>?F-POVWi)f%qY|`iaCH%Pd5SLQ?hxpX zS(K%z5;+swO$V--xnp9>c`Mrs`W0nwO3<?2{$`QooE-w$@yfDXXJxs)U&fAyE9dJF zxQ<qr<!qJJ_I}wq8mgSDL!dfVVU{yh7Tfz}>R6a^o(_TONab11Qdw*7m!%^i$~ig& zq7X}|@-(YI%8}r|{M;qKCv&*ED`$jH_aBH-E`Do@f12T+)Fogs9ridn{w;nIpR2m} z?Kx)oOV@v^x@)_46pVo&WuxnMg7dtcfbpwLRl9n>xu?LmQ4u@4jrwXV*h{2$jRh36 zaT^P4A@RPk;Dk>Uhrd2vyw1h~YfRpLW5I>9eBN7YEO1Ae!)q*%v^#rmENIbK;E;BQ z(OBS+V29UO;Ffp?)>z<<cyGP2z$v8;ps~Oyy<Smcfjhj-B{^>!3l0o<n#;gY60<cf zTt+kJJ!&j?^L-SYyF;KmW~rTL$z>ZwzfCe@V#|3u1h(EZ7RWA&epx#rvYfL+AUj^M zo$IV@qUe{g<KfErIs~qxRogjRWe-KaY#j|%&eb7M9jn~VnJQZ-`eo`^m~x&Df$2!~ zcFt1SLD4TuM?#cybO=PpsJnA^zSZ^#&dVXNgt&O$BtmM*qDiD<Pl$-N%iRkV6W6-; zgbaWWWs>U_kPFfRLby>TqFrZ(xdp_yQ4u@4je2SUDGH!x^Ce2)joJ#*2paF(K~8x) z2>kUiIC`D^Aoi%d{e}?Wp{qpfTk8mMNSecI3CV~j+E8&4(rLPi#5*=ox>_VZqTTEd zd;urK*KdyK>o;YUL*j`_bG+TA539#yg*~uG5mfJYI5%W#JKSUnL!ZcSq%Y778yt~S zU3^fq+W4XByPfjB+o|lk#W^J(M7wQx#mAY19}Ck?EZ;kDNxZ{o3UNuX!|MuhOuYkZ z3vo!jx84`xmQ)AO7~+;-uc$M`A>!r+0dHGF4h?&n<PdQs#w0F$M>Fp|Y7Tkxy)c}; zL!dimy97^-%T}0v8=c0)mh*N9Y)9;u;H;IMF#WQ2L}WQ<hd_3`h6&DC*$C4wW5>gl z^K}SZN9&m2Y?Xa5{jzm5R5@3NKy|E^3C>j62GcK7$HJ8JbO=mG>Y3mym0d9XvUDUw zIY);;bo}O!x7q^3c{v1@12j``O?)FAFPu|DAcYB>ypN|`Qff5HMRduPJ5G9S+vx#* z$^_SKIsmSb+GWbwwa}P*b*gtO;%T>AKMgywa0!npK&AC1guy~k@Z5fnH_0M;+HGc7 zfxY<*^;fLI2DA!0If|nF7o!B8kcj8WOc7a)9}1?w$D1@>?XEZJ3%)CXuS~?t<$4~& zAfuUlY^V4H&zIXEtEfuA#%$7|1ge6=`}Uj*-kt-0eGG!v*`8yMO1W3SzaEsJ({m@l zL$sBmy`W<og@2^!_7aRk(i~uWj+Cok@L=dDR|nXh<B)g<(w^gxVh7ls<Cc1d)}G^z zdT+ix$0?}}p*_bb!Cq5)jyuH7EgJr|=NuUJG^HWpN{mTd_>N}Y1BJ(Xqq2|$l~*KO z#9*G{Tj1{y_>S4K!r3d^k^1HCnAmdW4uS26Ju95GvKy&i){clQ=j;&3j@Pup87rHS z`ep2RxN^P@f$L~pE1a#e7pY&ij)p4d>JX@o)waT!DqE5IW$IX%a-I%>=}3JmoTai8 zsb7|kged3e5QvW7pd;ImE*#VX%<;__SaMztf#u*0I<o7i-<vW6AjLT~1X4XTxNsXO zQ$+nXG4_B2=fogLz$U7%L|wGEc;HGrN>=XesTe8NeV7rJoZEv+Ns9?I2cVurQM}yE zL{6><*n|!%C=)7w)a@vr%&-&F7-$<%xxu2rjzxU!cI>ASDtjO;i1G*0{OgG_z*yCm z<g`tzz%OjmY5|h>ol?K>PAT~7V=#H0ol^Fwloi>(cA$=(QqpVq=)jBhk2D=SrQDI` z06V25@h%<6)d6-&IV9eJbV@m-*a3D*xuxErbxOIT-ka}~a!RU0=#+9wu-DWn<qmOk zcGcfbsRP5F#?T_J#6*t^-_gu_$VqwADJAoTE@CiG@h$Lo2z)_<(m#LvT&Vn>%3z6! z@O+->adDn0e9-*zDGWTl6~!Q)Gz4*$jbZ(=cT98(+#Lel5!;7&y+SsI^~>84k>#u% z0@?BUhd5(pUs%749S>K|*CB8nt$~QMRknro%hu6Q<y;*C)v-E=I8$X;Sieji3scV1 zAut`Og^06MHih-e(vcA5932ADF}jF2J7q^$zw8_XOU}z7upFSRh_g;Mfc1NAX#k`+ zr-nePhc+Y58JQ&Nx1Y2JBseDqL84Ow5+}OMUG&@a>8@c4vJYYsO3&~D6IGri>wP)S zTZS;<q6Qzq*o=^;M=;S>(e3A;`K%diR5%^Mw(tF#<m0w7DoqHLY8ub-wzsy8XH7OQ zQo(L>IwMPogW`N?<W=~QYy#u7Abs{fQS{$0x4YvA-aUFqc2WB6m-AH;oF4^8N3;7+ zI3(+Fy;^T~I5NwWyqy$ZE5Z-hYen!uIlDK>Un^pK_yV)G1g}7d<z)RZd=3D@cmcD( z*6C`Oh<RYw0NlQX>+%VPgMp-1A|zDPTbyvZ&BcqHQijcv$z~Pr(w9WMKcz)BobG-; zC1H4d`!C8#Y@vEcR>>xv!~ZQX6=}d0v!e$lY}t!ct~0p6yX(vNy6%ZB=oE<O^JKfd zh@y;E@F&C)C`M!#(Y$Ga=V=j7{D8?ad{CC<(_EHMspb6wt+P^=&!Su5iUXSA*UPx} zDX|<+;3d`&tB^d38uo#WgJjvjq;Jo_;L+!+(FDK-F)(oKQPXTkkJo2lCWl~P1d^}T z!2Id2GQvdDRvrw5(RK<of>$<_fjK@519N-`21X$HY7NW}f0ePVfq{(b!5f(AVHlX{ zAs85e<f}C>KmAq4wgv{uZwGH+P7cGsoE(CI5lFsT1GDf~8QU5d=-4=T19N&92Ilk- z42(eX)fyO8mQvl|THS=258mQ0)EMvsmV1W}%DH#-Mhh;WYG06L&!+;w+Rp1p*vE9} zY2LHLFfnI`U}6N4uinHk^PyKzuo21-<u=EGiGhnKVziaRQZ@G09lD7*KMWIdeh4N; zAo&JN46zn^1tlh?<kKjd)544C!Ngz>=%JgKi^DK67l&YC1d^}c#1xH#UP-IWjI=w% zQe}2WO)WG8N<Eku(ae14HU@|Qc6Q&aXlHa^Uq=k!c?dms0?Su#X0*1zfvFL;r)a{U z)p(zeIgR9VyN!dT)4TZLD!o^blWfn&AbhE7{lyyz2XBcErTO<Tx_<?h-dmyywVg1v z4T8t`uOxfUn>2H)6tYr$>b?ZQRk~HLddqjbKbc+-$H&8uSf{+j3}4Gl(X^2F#PRxu z5f1%J=H%xM5oY&$I7P9KT)uLiu2<2+bG%v1IH>Tqn&G^P0`yW*f$TUj84dhQrNIh! zj>MRjyXaBa=+E-PNiZI4a6bsH4D2P0(ae$>HA2XVEJtYb_vJ&N)m3@~r3&~1iYAlH z@rZ+WZ8pg=fm;XB({3|3m4YLAp#wm8G;BVi=v<P!iA-!pgo)nknlV+Anno>)wYJks zSp{vM3T;0EZ5Q_li@J^<-h9T_<Y!RAr&qFq)7(TxyG@+#wgVZX^K9RQ2-FQc3@HuL zP*ft<?<DC=REnY%SnJ&;eM#dbT*{kW-3!O96(bv(Z2}~d?^b&^5h5Lr*n!bM1ds8L zXq)~+rG$nRJ)R7N>a$OkCqsWgoJY62^(KBu=s6XBh0}?IR{d=s1nMH+ay=({It&ML z<c$WtKg=(A^xES_M@*&r+X%0qf(830*{m~nexQvfAVhrQ=<g){YoOh8A)+Vpa2k|v zZ=*_bK>p*?1}@VkaI-p2H^sxa5V+MCbMRx~<d>I^chR?Wv)zfSt3;Kr!8sAOq_8r{ z<P=<uAcEi~<6fg5@yK$zgdlOI!m7MWsNkfFmsXhZqqe8X8pND4(L>)BL5b4GCrfZR zB1m4bz-qln1bNHLT)$KVgfOmjzUEwi<Ya)qq5R~#Xg9!n%#>2I6n_Rm%Od#}KQ95n zRl19I@dJDhBAa5|ZHa}Ej4rVtn>52>0)zeww2UxlDXNhrJ+IOrL_d#@X)uwM9Ld}- zvf&*wPgKTHylh-gn@tLc&~5rVcybeXN!ZF%u)n=8xvEmO6iio5?jSr{B-`C){gau_ z)8?i#cPt9~SK8YG8V$@|zMTxHn*5TJuDO{k0Ns3nlR0EOHkqWT3{_)meUdyr?I_!* z)Heqzm`2g_YMHM70<8p@5LbpZM*x&}!RUwTbj|W>jiHC#w*L^BW57E!xhKLoFm2Qr z>;UYrI1WXSZ(0_<lxbBIlhhv?YYS^86Ll}wJV|Gf&ahY;j>zC>k!VvCXVEp}4r!V~ z=eM;z!B4lze7#y2NY>Z+R+)W8X6pHr*|6Ms)3c=3b1}wu^_()EDb&<kiIa)p*YJiO zW448aSsrN3(m+Om`~?K^1BY>%O=VIkJ)CP`2~<r;0Sgh*s%&F$lyA5uqI&~y8NDJ` z@Q|dZfkYVNFc#`&bg7a`og+Y9Z05xTT~<XuJz2%~%R~gn(e8V?C4~HkP_ffKMmN)v z8#UA^NQao1mivEr*y32Isw#r!NaJg&fKjolMqIN97?#DIrEN8az}X=^UY*Bi%|@(b zz?iGD>r34bVh)PTsgV{QR?#)>f}Vm4T`LOa{mO%|6e`(_!u=futf}S)9#oW3Jc|SQ zpqWPW-0=Bq&F)S?e+~$*c=y)btiAVHSTKd|K!#xfo`=x-_d3R5<>Bl0d%VHi?haDB z1^2l;9rW1T5~1}1lwB&XG~NCkKM{xGhEEzT{PXO(9yaWsy~tb^D2M(L$J@;$NVgGx z_%H>RM%0{7UgG6*vfTvd>O1jvn?4AiXC|64<Ts#GNY2o_fe#Devus9sUZwx{ObUWI zA%oL>e>F_TOybAMaq*LDsNmw{R2XY3P4xZ?m_P-jFzAq5V3`-n<pD%T*$3Nn^{`CD zQ|G*E=_vaG<!cjgaNns))Gok7+9k4cD%1o=xiIy%=@SXZGbc9_)&@vHl>mv%Zwxa> zwm0~xlP)Utkczp6Q(5fZ0uwMYV_`y)rX@@=hgIV==L+0_UqblxLdfWewgcG;iD{wJ zHHC!%prbTu2AwgX(u#nX|G2t`{xKS6%@87xKi*Ad+*oG`lr?U`%n+WXH&rjnoEt_h z&GAit_VWa)sjRUuw*!M|Pjzy&fBi7!6xBIW)cIE8HeV9=qCjJ#uy@n4%B-bv&mI)a z07&zLCNI~t_^GPbD6aM|R|dJx05CG3N2UilJ90kzD!swrMEyy5fjU``H(}U`hc#fZ z;4DMoY$uI_r>aF7|EL`@^nlbMQza|yb|gKyqMlPea=^FOHX^u(g<`LFTnw<(i*N;T zw9bI=vC6a{$FFfuovbQLT>*w$KcHeG9eh%knjQPCw&--qx7)F@V(MIo+n(VSxP{%0 z?246h(Kj57(!TX5>6QCtcbcSe-8(IL8e#ftx=exq|5u$8pP+z->0A6vo+aUZhipMj z9zzGfjesDhd8h4lN0(;L3WX-tz1W|jIkOtAZB9Lumw^leRyGM$h#}Sb0_8Pqqu%V; z%st!8Ln|-%andhP^fW61Wf9Vp0k)+;v&dT46p?#=&48d7Hv__GVyYm?tyfP`yasu< zhqPvc3SB1Dt@m&nE#2u*ZnjhF!?@8lZ4Y71CLIr7&5F6$RvvyvjnGMmaxXQz5s5YI zXEcz-Ah*1F-a2R#%a(s$VbD(Wf?^%AYBsZ@d!5rkeT(31?`Py5$j$ZVc^j7ly0`vy z_4StzS5fo@+QHXP$qHA8gf=XAFV0IvWu0G82bWH4q}Q)G$Uk#n0zu6$@niDuc(qt2 z^B2UiHp*@fk~!3_@yP17{B-jnh}`lgmAv5;yO=N6+eGm18bXZiud^$8nUjC*9BN++ z{;eCO%WQtDU_bxu#owEBSJ(oIA1Wb5r@x9{=l`&mS&jUPS`cuz&OfUov{~GA37ev` zR<k;IZbB<GR4IxodY&0JoP4D(f;Y&~p1|XA@C+bylS46aHb;ztIaGyJuO4VQd`7xz zQ0<v3f))qrS$tWy%FFkY>93rc7G7ozr7J8n<6|>#uhQl001@$!L@@_hR?gw*l3B*n zHupd4z{*b-#u0}lB@)wW^cLjIX&I?zH?w*-%OTZK)x1w9pS8obdcUMsO>67T)?wMv zwXIt|*9e2(*&(@9w>41)!{&CUVbKGw**ABGtB;y|)taw0DipO=*sh*-4Nbr-Wwmw# zCo-q@^d3f9B)i$w<9Qff?BMRRICuAHzi=*{l8kdF|JkL>ZGnQ5Z|lutyo1ai9NBpA zvVQDV2YUL0fWVs5TP=qZV!i>U(2Egmx3mYJu07?G6lQ?Q)#C*2H-?WlA7Bns^qF6# zsq>11>kY&co88af;-}!8{3VZCU}?0qjasTQPGp_8`EYPthc?uLPXz9oYU-(sVQS$t zp9c%lXl4<bbl6D~ob-j1CNz^)Gx<Lvm9pgtZlFEJPZ7ifn;2$Mh+-b79JJRZ{6n}U zB-?@T1?)VTu133m0Y-85$(wT^8Dc5CErxA?cxi44QWM^W^y&y+x{22GDRf{N-dRA{ z;KCH%-zE^^%mJ}%`JX_wtKpnlzzKK26rBJ4g0Hp*l=0`V>n=`LTa?c*3XlK42psnN zyXbZn@o8sediR4<OWJ4h=L1X{kyU3cCB4oHL9AAvQ>a_SHexAe<gI~Jr*h`<X~VfL zK++(l2&9dh*=281E@~J+Rflw4V50PB7G_!mb+v%y-b-I$T`dH}m!&WWIWGsdwRxM` z{me&f!_cn7PThjLE*rNG?>g+-I>4*lvulV~yFsoW2JgO0kXO4oQ4PcPwpKk4$*g}+ zJO(uPMYLDaxNj94fk&P>;dqY#JQQ%LXle~z6E;Omd!eNLR>ZuLt&~Gs)gHrKDcyNq zaTIqBI%{R4Mlit})Uld*ghx^M<um$(^CfuGJBZwZshIVIR}A+4a?uS9!^;@P)Kae) zez#6n;P<NB@ii`?7RvzHuUL409wfqeZ~KgGqr2JMS~TKY7Go$WEQH)AmvU;+6^v#| zR>>xJ;%dH^Yh0Bdb$prJKf~N|x%A|S{Z+-T<^zlBk-C#n?_qY_R1+T7kOJak302Ma zF4YLSn(qaZC&+*7euL>`Fp&_nS`~$qgz4%gMLy=atUmcejE|N-mFA}-pO|o<43(WJ zL$_(QuiF(YN|Q!lS-87au;rGsnY(G+UZ<Z*A_FUk$T{B(CT(k(-JUwAWxc$i8*GK4 zdADw^aM#V-yTcuKZtW6V?c3EYw%R1uBZF_+#Wl79fT)cYglPWbNA$2<-@~Bf7pQCF z+(9@RR2Rzj`97LOy9FM>IMEPK_y3(gJ&DspIZwyGCz~zI$N%#DcrOnBKmYu*>I;)l zeIYwnYEswJU#~uV)HL(RM&Fa!<?+iTnEbkd-jrYCIpjTmVonm(sZlDs;*c{zpjBDn zzH2;yj>yWUVrSSY?_QU?YL2cZ<0sKQjaNU*xnSUnn2%Y=_~wOn0YGs4Te6E6@h<)a zCK~@0Vip$@xW|!{g$o=WxlDejQpV@x=N4}M>=U>j3JKg5Ef0u<Ii{Z50irx%m33{q zkg;UZ8nh=mI)Hk*W%Ti~yg)xs$JcY9fOv}~j3~EQ%ZO}U3!jv*qfB;Em<^~KGH~;w zjUmbGqCty9Hxd{QttJbz>C_N07dOu(PucBy6QtM<RSBuW^a_p!m_q^KESl<~;u=N} zo4=pOg|_Rf;E9=7nT^@UuX&kEj-wKHH1zNmhA87)ALC;*9UjGL1_4l)^qGMgRshxT zg`8%9@YEEwFb*eQ0Z3@)b<$Me4nCKG7k*|izYfoR_>ajvJW~;d{k@&j2~e#|_TMbe zWHsfj8S6AM#EAuOCwx$^>U`+)Rh>>`bNIwgcly~(%5yiRt`ptNPN^pV(#U?s6jxey zVgNyuZ53o<XGm}WqIh*jq<l(d1aCm2)7ay)Je`=Ud;jI;_L2?L9GHGIjU|X`qMzN= zbX$IRI5-HztPf#W!s%EkTf?$&V_<MxyzA55&@$steNfp-N?>Oh<nw$b_bbe&rBa6j z-Ya2)bO(Y3a~(J~wQ7j>K%nGgF`hRA0g}fN^7I&LS5=}JbXP20@Rxg-0UHQ+XYU7f zHy61SQoAvda^|quXsNEW#2t54ImrXr1|E)h=AiDGp<j4<peDR81Z2miH-~_ycJ>xm z;32(y3!^$a#c8DJqM)H_>jh070(+gJ1)v;X)Mk;H+rLv(y(T0_*&#%6)d^JHlLxiC zmE!Ca=-=f9quL#r9#i}#j9A4ki(FZB$pj!9{`z^fjlU&8ad;_2{eB*A>0nJ1UJX}3 z%*5Phnz&=&zy-o&KcZEe(EuReC);F6TBe!tF1L>8fvF{-brXrE=<Y^hi24lkT9gG% zDsIg|T&xDY<}Y#)R&zfbjeD-N^*rYnMLEMk9-6-+WrHfaoXYkb$V14FLSqSiAV3Pu zEtHkTv~z<nLI3tt*1T6-*ZMTf9ohCP@bjhZ@s|T4ecQInoZKf5>1v;vXM)&v(c{GU z6i?eF<*QZ(I6I#Bl{9Ek3S-BAgVU;c4Uiqg4R)e0Q&rn4ohzqhZ(hY#g-m!CviZ`O zPX^(M;;nE2dg6E83u(>awtp_I`P$ZRr%mPCX<5i1?LtS@sC-DRg?9zdq5x~rl`gT? zjR5HZR%`d=Oc@%eGZu`qYd0N-rdErm=$g4%D&!XT9ZUSrh-G{=O*RoV@#?VU3&zi0 z^X6~76S<z_rA*cS&21by^v&?X0L<`))(s@vuc1OruM_tc1e&_^BxS2QLaEEu2K{{4 zMP(TkWlH-ZUbRisv#}YAjQP)otTwvJ9VuuKpKEw2j*3oO@2TKncRUn|t66B2Z6wjY zU}T^m*4?geKQbz6gLqpA8zlI+T~W16<K>Z$^zsOor(S@=7XY!8YPMe2Q23?dr@icy zr#_p+X3RyV86<aGxOp28oa!ccneB}3GEh6xk;Dy)*4&ZKXyt6>umQ;mN`lQ)`)VE< zD#vdh0z(_9aF(M753cGVMDB5W(!pV5qA$H+?Vm_&sFW;9X2!-UxmV2eG!h?OmQO_^ z&P;-)=iB)n7th-SMut4EXeyo&Q{EkL+v|x>@kyr#a{C2SAs%@I|6X1&pu~jN$8?X4 zX)Xn~vcT*r=2tjFNgg^lQLkS|PAO5qUG$t5h;sqwc{NS+&8Pzzb$aB_KAB;!YI__C zRC2^N2eoJ~taHoIkB)6w@@g{%x_Afu3xoi~8I+ga<n+?^8_9>+tT&<{RmW-tG0pDJ z<5hNcHM(saBWG7-OXVi6TgK5U(a|lL0$_jr0=g-tK(W9Tik5hpCX@`#FltL3Lms>1 zs@iOCH;K4-dftAA_oU$}5lBXM146O0uWXqqJCg0|L3*Sw%$em)Ma&1U>V4%iwR+1+ zQSWPJ+I<k}Gf038pm^$aK_z_M^xU9;S^iBae$%UVlznpgTRHKrX?|#ZZH<!2YCku` ztFSW-lXSAkfGs43By(E>i|&W$Ou+)iHi~!BhM5a*Xxkx&Lj6Ol=&&Kecz{qTk$D|; z(?*IPR*{6{ZJy`Qn@YU+@~KpP#v@Xn@D8lD3+E&fuM*>x0nA>)z-<`d7m5ok+1tNL zT>7F!bq>0(UF~kd*u~y0*l$ie^@T7s6Iy|@NDH?>RM(M@RTi43B>pl=sWQA`SZ2L! zhq^7~@|oy%UB9M_zahX>^Xu$&Ay{oj8Org78<kJ2T0ZdI@KtjbLiDFeB>3a`)xI>T zHWB77v&&?qn7W`Tl)P8-D!WkJAf+2lw|~d<?mOxyJp-L>#AKv^P5}tgjM4@r9Aa^i ztm6A6%<ug+`y-CGn@NyvqsR3N=EY!?E*`8Y{QC^kPbZ?tz1;-o>O1jvn?8sI<b68% z4M<;2aq@3?11F{$-fJ1y7wd3t21rnvsxeU4DoD$G2~DKJ^;t6`1TAs#$z)iz=(^m< zM4x8<lkTMmUDVPA5~BMsa#f@pEg>;RFty<1lW7>`ad#4+WHAIJD{$5ZJkGsM77>oW zi;`vXC|tNAadQ<m3~eC;Y3R;kTnpH1A;9}b>Y4s(Un|s)hB33<T%d3x$eLMAS*oEI zDQ?^YR4W)}($(ZLN_ti+3WYaK8J!$RcBM;hTwjNOEhhUGa>J&|xazecZ>z2Onrh-z z!HiprXpp6BGb6!jB`P;H2HIpBw2hBX=lX8qj>}HxnttN_$WU>ULmoJWK}2e9C_1f2 zQE?~=v25*gCS+E(Na9E3zTw_-G-7~~)qa}6`6>ixnw1LG_#tUb%PW@w;^J9kgUFSz z*}84T@C4pm*d}<6nfM8;!0ia<+wOG=?-jsP9u}MJGu@J6ZFj^jx_uI=A`Z)vPdxuL z{g%?+eBn5NF%WH)O=eGFp%D^0aEIhP5@kg~OPLD!dy~C?u}{La-t7!)zZmg7ukvN1 z6lRXiASk@L$2Ly^PI1l{M$(9|_^uN;GM^9<f$1Vy?b01ixC265;Dj?EL=fHFO<1r4 z9qk0_?m*O1LiS5u-p!ZW4FHu>4gY?;-7WB9%zO#%od{HP2}%O5q%!W=LP`W@VE;{m zT-&1_0@rvn4_``GFYCWZTlfr1#Ml6o6B?6_^jI!h5a0x2t;ciwr1>0XO2dC&L55*? zlnPSSkxsUz?$N9k3MeXY<EWL~jx?1#;xr{X*w(t7eA~b)EM!^P;?eO0uf85(Gj#Io zI-T#HH%Tzf{-EYfe*y*~DM8b-s06}uh`>=^vk$iL{1iOhTAmMPj5Cb8;ZDUkO9ru; z1Z*xyrf{jnHkwu+suHFZ^Eu#I=;IP|no}wz46J}t&U7EZ(TKh{bT8Yl)^|5iRS2G5 z92ilWWfJOh8g1aAbZ7>TWw>DkDi1nnmO*4!9OgHSyZ4agFz!`h9SHe(QrV>@cF%aU zK+O=V_NZH(vL8kai&LoE<Uovz=Q>~ryd|}anx+#h<_Z}%CgN|{+Qvd_vm&NF^R%=& z|N5}62C2)oG!l|KkR}XjU&+jb+s1JT$Yk5#Y(M3;SO2AMQ=L4ucVpV`R^!doENt!6 z)U0EBj2GPpsyQ`VKnEb}l{Q-ansur`B}Yuj4YRez9kwSKu!g0RdWWY2Sd=Qg_&s&7 z<)*(+_oogBatu%~ggCXV_0(-yVPgnSdRL3?K2du_4Tn_!%Gk+6s>9cXqg1y?t~3Ux zrK`VGw?EMr0|X6>zt(%IfuOk)RkL8l$zc%FX1-M2_I4cAJ`toF)ipU{Pf{pv%4~F4 zK%SlCmPayw{i5;Cn#@pU0nA=N$1SOiSH1v4w$>#t<W?Ia&B%>hDW5W8O1xboI(OSU z!$!^@QIfER%`&dA12ESJ%B}hn*$9J9_F0f<2Np4X%>e69cUyFd*x{-pnT&%RxD6e3 z*kF~dorjLwcXJ`EHh1DkSnZUnn&B|->`qugK{Trp4yzY)CP)8S{k2;Ey<+F!<V^Re zIvrcpN>modcv!W8#H@IlltA5S=@tOZaZP=_7Moe;DO#*u;nuMuxGHziVq5EcMvJwp zP@*Sy5hYv8=oq9v^B#^trPS*s7t#ja+%{8h!*zM64PeAvQ_$)?G_xbr1`M;QY~dEU z1)#f=<QSgT52T6^(=9Na9H=&+xNxW1?3*iarBl;BY-s}%(Om;n9nW-aPNxN=&GS4h zHmNvK4N*q3+)o>j?4+j76+Zia@yj*L5t#m(E|Va@|Lx@LR=AoKTUD57;vHnE?kaz} z)gBs;*=7%#u+s|&JpK@d$1wP+)DD)Bsiyv^uwgslQ^7bv2{;wDd(_i{M{GwecLZ*Q zK|ZIfZ&MfVXfZOcZw@8YLS?zN2^P%1)-$qv%c|%*XV%cXu#Lm7er-v8U3|illnyvR z9k<4b&@T9(P-xPMIB&6G%CjjH)X8rIh4F;Wv#(lEazjpOUGF3tchjkpN@HpPAZL9u z5VU@}+M=wPRk}rqUeqm%xU}7-<ZN+Sac>6<rGV?$vH~Kl^f`<kE4KDP?wUn_6}ae> z&Osu)-HxrJxK`V>jngVN>lleutelIxA*zwKrju>e7(OEDhJ9=Ohhn^B#<5XEWL~Di zTA%0z%sS?&*tCv6$}z91zpCXe-6&Vsu<h#baOZ>TyufRia!Bs7RG!leY^@m+u0Hh) zlp|Q&#vxM}RySZt^`6+E&R{bzj5ef&HwfqPv^>nf1zX!4fR-|&NpEtwbSN+eEpFgD zS|Zi;xMSNC4?0Gkt`cN8Y8)JK9EaM80q%_5*#@R{z};k1Ld8ME8w5D1d;$CHl8tGf z7Kxi7de?O)pKf2RnHNb8O~yqXxwf=zwxK!sb`ozk@z2?xSC7GI7^Xi6FXS*WxXAsl ztFOO&xQe1LaDVX}`1WPJy4}UAMZ8(u#5+ikeO8fgaP-U1UGjS}hj(k_z4gM+&*0~m zTk*5o@98&Sev@CH!mqKB;4<FDAHP4Za4@TO>+j-RF1UMCpETralG3VKs=}*dM{Y3& zZwRnOw|;k7)w?9@+EHa^yaNb&&LDJP<`C(GI`DEQm~je|8*VNx+A@%YUlfx19GkU= zrBT`nP3!J-HQP_)hYhJEZe6oxsJrymbUPOvI7ZiY4xDbAT$6_J>2x3vB{Be^9EGM{ zy>2(NhhmVX#>oe3<7L1$b82fm!Q-zF4=1-zN%CXbe}%PjGc85Ma~BPLzLvX~9X+j; z-S0vfRbf;+)LC(_AowGF`u=hK_y|*JU_3KETg80F4r4N`WrU%Mg<gEl4GX;;HrKiB zjfq<*^zuQnPIk};Vdiu0fi0_$jb~i-d%Zjft<bx}Co->Q1Db^oya$bOUaP9c8gy;R zxA`vAdCVdKwo8?TZ@wFKq7ijX+4n>9vTt)ZDAtYOs6Xcoz~skzGq=>ZpH6U86lws0 z9P7=1sIl5*U9HkJO8PwX%yi8ng}2A8*|t>jZeT*Tp6iX1%x%G;RA>f{Q6lnWb0th# zIfSJ1siQ!xa&s>vuvth}iH}YRA>@T4ToZ@&F5@TqT3vri)i&a)q-inCVq|kA{FRQr zaT6W8%QjbImx$aOcDC>`ie=#{DmE$%S1nXw$qnLW9i3Hfo0};Ey=(%|{RWmUmphEu zhIP19)Jz(qpm$|is-osJXQ1mOUiP|B4`N>=<{S0rJ2vZ@s!R<xCow;}-44DtK$D9Q zBfB=e>V~~-4@pbu(HxIGijG0A8y$?6h;=^_*+#{~kP*pvPH8+rwrVa-2IDFTV_aTm z6w1dS+p+!tbZG?Jl#UIGr^8hmKo`Yh{ieDkX{+nVjcKaeSxbR#$wVp|&9>BJ7E7K} z&FanaNHvR9xJUYv*pyVN*~jKefxR%9S;~%=PSJS{Lbil!78|!X=$pwOqfax~jOMh) zTI&GJ4R{G2H`P{qQ6h$&!XnsPPVUt;D%$UB7GW2ji;m{z9W~Aj3tD@ZO4t5PGxXiM zJi5J$UJ#>hFM2hUW2D8lw#lx2@T=ReLa_A-r4|u>-D!{;v`WI)-Eh6Q+dL;9o)_tQ zs;R(2jV*{yW|zk=lVI}eCVotQjj=@xU!@TC%GFr>N-(t4Hud9W4qQ!9v2s80`m95| zmF(#%ft7%m5!X0%cDqoi(mNDgujTGBVtaimm5iNV&o%6<rDD4ax{Y_x)NLywjONRe zyh{D3)5gndPHEPHU3p43-%W2iGkR4e#u{(c_WU($R6J}Mk?Idy!>V=$-nhI@>{ZIa zup{wI4Tnk=IqrX7J~bd%y#5TEYmbdOZ?<Y-y}2?L{_{sgZD5`_fteXR9sQwW1rAPK zn9CXnst*d=U5IT^*=DwjQ;lLcA?oEw1|C3aTr1woLmR9c!C_RSJlHe<lj~`-XwJBw zPH^lMw;2%H%=aG8vUXP~p+?|xC2VBHn{CV66q?i)EYGiI;7}?wtGO5@LL-41n6z@} z@UD8LSdgP*JPB-;$Ed_dr-U+zt#OK2iJ=dnI&t6{X(YysWOoNivt7|mVq|kA{07HG z+8^U4I!csnt`4W#%!7sdQEXGFlFUYJ3RMeLSaO57Stl_nx6RFzfm14ub?TnD!-)AI zb-1{U^_Yj1*BMx-QFEFz&~*}@xu^65Gi>CPISjLA*T^l6Z5zy+0b;Z)nzNfhlZy~N zHXGb%-|HG%*38~EmEOjixTy5%H`S$MT~~VTch-{Gl$unQ%|5)-A#2`JlN2l+K2%6F ztJ_q1T~LRqd~RbhhoCXg7Iz7p0IfBQ%!_GZk2GAUIGP#ZnuQnr!$#@T47RrBQ%5|L zMRj$r)?SqQ3W{o!xI%o|Mo8^<bQCUi0Kh@))PDEwfmGez&Z4TijdHy*IPOkDtU4fw zN*TaVr)+Z<RcB1hr)@tWg$@Qg!fT!X>CNodUo~N?87*_gs-~oB+6pg=9>ZnPaJ5L| z)hgL;TNRHLTXoKpX=^i<8doXX;PgcdL7AP1IVG^dMZ8?D=P^{hXHX0W*r(g{AJd4P z`d@1%wMfOO|LMtn@{q2`pck6XKZ_SH@oG*06K_vJf&TAJ{1l}yv1N8GkqW~<|AeNe zmz%rj?nvI)RMgdeT|+Dh@^qE_Ak&*GHbfB)!@CG>`XEzI5F8|FwA;k#Zac#pK*7l( z{q`-{B!ES<`}vf}K{Rr!6-6w^;~vJyz;X=gJK)hRyMkL!+2drjFwm7Ru6BNUDt+Br zeom6dr`^xe?`@@EdJhB1OTU(!Ex7OXh+jNCZ@)){6~BU<i$a}TG|x`iLU;naWkaY+ zJi7iYREbst84s^NXOha?-D~)f6eMK(Q8YtVi#4){LD+%9;G)xX`+K}h7gC*}g9S$q zfy|T!9$91eZL?kxsn6=}IRkD!-_q%V7g5wiGo@NK&=L6R<a7f=oz{<0JfDMk6}m2! zD}JClWDw;mB1}ull1UWp)&Tut1FP=8l$pjbyas({`KLxUXt^xdAjyE_|Hw{C-NHIW zue4vFF-#n#*~}QGV#iF@)n6qr1&ZZTNdq0TRLV8ZR_j#~t-lepH2N?P!~d#;v%MIf za5)bDv-}={PTT`yJ}TSZV%fr~Up|X<=gUxz=gKKp5Or4`2%&C$Q%m!+zf(lgV!PJy zNAtbfMjNJ`I>r{JW$heVV@?3oXSztf#m`GMig3nsN8|9;#|`uhDKC&8f;C^`_M`p) zHoDsuKQ-w|{ZFwwW07okoAu8~`n&X?4Keji4uUr8&6j(7$CS9uVl*}095@UFVJzmR z1dz4IhM6-6UDi7onwZVLEG?ED7^iu(pj=y!RuV!;+X=pKaI{FW?-JJ*use>f;RO>p z!%;3;PcnoLqm&X<)+nCO<EMC@cJND4UGbomg7rM#Me#1;el;GIM6SwYIm?8S;8FV< z10nHul!)5wr{o6bknl`HlO>fLsWMGvtZGZd)?5N-5-1u0uLy;tJEJ@xUE0HpX4@o& zT(QoMSKCSmR%A~w$qW$baO6!;!=~Ec@~)&B04J3I)~hAmyP*+eCXdGX4ds}EFuPpg z(Rq%xUml+6D&0jph!U(D^UR_|A#S*nQJpgXKbNz@9*u5pRp}*NS7gt1G$OKDUW={3 z_ytETL;!Faq%Uc_jM8sH3c1aZR0S@WmvNK#qU)EmAv?l!7NpL-Lb)osWU^g~31G9L zkXF<?KtlW_(H4h5m)lfzs$dq-I&k!&i*#rtyd~n+?MwV!%5x#yWt@d*SDher+nM>_ z_Jpb1F(<5{3}EXzVTk`2|CNZW2{}~@en%k_kSQz`?hw2-Vj>JbATn6^LH%)3ar#%N zuGwN6SX1NT6m4=x`cH!B<9Y?52zZQlkjL7>1+#R$VwA;rg!*#zq%y49A=)ym$dqdj zrzARfIA615VD`Zz|G-v04f|>exz=7JismMni(#HL?M+D>OrvP~v;_Cy{uz_<S<(+` zIW(G)zA~Ws_}DaLoPZVD{tcCh_46*8r<?inGTvmHg}6-#0@w_rqb%i{Nqhq^^AO&e zQ0I^Fj|i(hne%4-!^sh(PQP!~e@Dw?^|1RMC7aE<LjYPA-<AE59CTvRx&#WQcqk)@ z@qpy=l9|ogfT%fhVcJ7c2DR>kguo!ids=}5D~8f(9#h1GzN`o)7~$fB8>AY5HLx-_ zz_UY%-v1OV9H`(H5?G>WR?ZqgY2)l^ov!eqg%Gj=r_2DBbfW?-qwF*%a+d>0PjYe` znn`XHuELsJx}e}ljq?l)RLSKkbLw32b}tJdvx_?KxPtm7y^+LkjalWP+f?u?{eUT? zb)HukC_?lCrf{L8ABwk+>lg5wzCnDG{Fo=SOl(jCRD#n@@{(*IPo!$VGt75E&Gs~c z{|80lNhAx?cR|GKxVoQaJZJ8La>O#*RPi%?Wk~X7il@_F3iicw)bL~#-!BpO*&lJd z-AsaXE2%M8zDx@LE((+<FY)p@*=~Y!^__UTO&`PpD3mbxQhXzP38$j!jb4O8-1@{p zi;$-%SIOUdz?t}>zzJ_xG7Qbo!!tYwv;R7BZgLTQP)!e)GEICFuO5;c$+?Ei6?Yz` z1)M-!UD$d5_pKn;?FZ^byM+YBjNQHz=~gtZa5s_o?z(0JA){FtvMj<_iN?C}F%+eb z;Ll_+s7LF|s0L+FRt${QGZ>piGKXh=F7M_`5Fs$Y`-*JzJy|}1XNG%&Gc^axg<m?} z?iS%0{A>wgHG>kJ7(BJ_iKy3#1x-lvTt-=UGjKHx5t)grW_e%I7Jvr^9_|yqQ?(av zmV~Pj#=amk#vmiX!%gQo)q}AhB3?mw%OP@VnWR0SyJ3J)wg-B>tJU93DT(-jHfEKz zdM%{KsTXof>BK^b9*nfHd`Ns~a6n4sqDDv47hp!_d<gTHx5R<xK@E7>+>7p`yg7v* zDIh`Q$LuJnkr?3&h$AMDy-j$c;2*o4C}NF0u;6DnI#|$Kga5dOYP_uiwKPYCSsMz! zt#a6!Xla=yT4l|qW?6%$(OK)?wmEelABl0PIjIYjq_I)RWmdyNB|iLDJmJ|S6~o&k znuN0_m9_jPE7g^}o2-Q)moP>)b#J!|qft4-M8U%b%1a{th*!JW{nb6T+zL~qWUv8; zDnfm=TEj@VGRk~R_kuiA-Jc+pVR(7>n9i4r-M6PmC_l6$;a`rjzh&K=tb0^B<0sT~ zW>D9sj!)-RZPxX_ZzKv+452CN(w!E;2AF;5<AYc*J5Ute8Lo;}q24lDV{PayxBk7c zjDnrM<UA~tMe>eHGQ^{3jr90(OT<ZJ$D}-5-hSVtE80>`6FzV*6nG>QF8a8{Fn<1F z`Eb2nrt_a+W+H)GLT=$()2BFv@C?`}@*5`+W;9MIH73VkHqz}=yqkXq)qVOIWmy#> z5{B*YW1x&k!7SJ7CwVymKLsrppJo;39I!0EvIlGu-C_Cx&hI+_nnl1+b%3moxH$l= z#W{=xupq_)@!c%f@d6z$4iA2CRwk3ogcf0hX5vip&m({bi+kdW1rmM`B>aVv5Yf#b zh3e6RNtyOoAE8c(y9kUG0k9%l2NP2S(+o1i2Vz<BohXI)at6AJ7g(|2ia^Uq9hjbf zw;YtCfdaa-{VzmX1|_DvwJ--c1{{!0@-52|z^XEVB>Y-*8s%T1pba^IuLU;^$hJuY zgR95}2IyEd5`W1O#z3g-mwG}0v>ZhIT7g#CT@V10*oO0H2H*Vpv=zdnlO2>Wv06bT zZ!#WH7Kl8Eu&<a4Ddj~Z55B5Io5Zaif(c|^A+M4yuoX~%0t}FMRtVn|JP=VZuPm1d z`BNc33UrjA{NML$6{^HiA(XO!U7_JS$|8!R5X5rnqWoJD($)M{EBXb{rBrax0UW~N zx@n}cVfcgo&YJ77oS8VA8*2=3pm3LZUD`}{uf*28OGS{O!$r>FJHCT1FYTHlJ*#~l zQaK#0S8WLCo*wiTs2*xG;bA{e&tL9|3^V<$xdKT@jn7jC(H^6zc&PHn4UR^fMEwra zC1992UU;*TokiN#ORH6l$;~>=C#!$DT&2$GRKvMFqnPN?M@EsK!HF1^e7#vi;(eDU z+l!kdUfk|}x_^Y!0FjoVLKzASWj7$T3~juFnYlU((R_Jw8nJ|@8|WQe`@sW&$%mO6 zmC>%YK+7B68f;}MF)Q<3JgaIpa&qUV1U~vCA|p{*xi;3rb%d_N!?w#rC%nWQ>9!UT zUa0B8s_-eSmedF-OD9)Kj@=HeucKKl-&PpO;za>u1TacSK4*)p)T7XmT}Z2~LAcp9 z1HD%XJ#_7-ChtwHa5I7cosDZ~IENrb?>-54m4y!Z5GMZIPSw)TbL9eNON*+5mN{pw z^|;l_d&1blPmVX$de7k3<x^{HoYpo8Z-C*1UxPfBXfuiOJ0H+#q3d<8G%?+<ZUjfY zrW=6CwVtI2^?Q@p)VQCH$TfT+CZQP+T33hI8XYY1Frxc37B9OUNRC!yXfz_#V#K%I z-c)(?tTc=lH?p<zz@XF=7PO3OSJ5GOyA_wcS~NQiD2a=wLFU)knW$#lQmJb8JeZ}W zY6cFaLNjpcC9RS(TC?TwmGR2Wy^z3W{&XciT01G69*u|1-p1-fs7_k@+%1u8>xEZt zSM<vn*<1;~!Go6e$GC}(-Q^=%V+e@c8+Nwv-SdkjHs4j94=OtE!K50*E!)vZ#QZ?4 zl!Dw$8R%t$7diTLoRbbsS1iaTE@0jh#nRvJ3cq2)I$XMDAXwm#y8$c)ck85H1G|YY zRcU_-PtAhEFu-Pd{A$^MYaIL7ZO;9NCY#qQCV?Oq1L~<Z7#mKOGE=h6sBo)=t;U1v z;(3EoXi+G~!MQlI@itm<ZoUy^ykR3dTW@J!3S#c;-J5QhH@o3qFY*RxOyaM(R_}(r zZB)SkyIEMR)S^`-OE*^5_0)Vly1JdU6zEn#r%KaoOHGlw<j2*l4#``V$+Ndy%|K-; zpW7Hy!nO`*<%w2!3@%v84yYo~jq(aL2-#-3n??1N{)lt>G=r_J`P50B$)cW?Z_OIF z)#-IP469=!iOHz!)TiMZSb7}=bkNJob8Qn7b(orWbd;s&0Dyy(Mf=^m=P&B^c9zVj z+bGv7L%i%Hvrz{GQ7Ho$O^-Zt&Z7pFM(>xou&@2Z;W`6i$LhLHD1r0w|NHR!RP!MF z&0sIGSAk)+TbdRjl@KyIMFw2Wn`k^Xt4*k6>YW91S7GL;*f`&a58G<&F0v9pTGDoC zB5SaLMnLNP&nByrAl%X=Z?L-NQ09q*+W5Z7X59|p20L{+Y)ktT4^~DYqvyzT&!t7} zEUR&KoxC%@w6tNf0~3E<w$|NSdi3k+O;@vy9{tMQ8+uBF)RA7?zu^}bvbfMLif*zA zF$j&jBJv}US#wK_@N4CybL*a)wm3He!>B;E>e(z_Gj69Nv9-Q7gTWj#>Q$sl`82Y2 z4FRNWaU&PEvMH(Bwa@;EZZzm6nPC7aKOrdlU3X6y_9lk~-CZ!PYyzk_xbulyq$mv7 z=#)>UK{WnP-_mUe-fYu`jZy6E3u$z>=n*lR8Es(M<Z71ArQQ(LcTFxB=tl(JurW<1 z=oir@5DZ^cnQ9f~S^3!-a#e`7-rLSL?3YQ6u(EVT40_WXAGV*JxK$siY(XtUy4P({ zjBNMO9@;EusjmPu*^eLBZmYIU;GlT-QnW1rlS>ahB*h^1(p*j_BGkHMTY}syrp_w1 z#XWWT#a;@wHXCd4Z(XnLwxcHbS3GQ}>TBp|U9If~sCBW{VjBp|+l9s&^s8bCY82X* zYAw*I0)gAdQ&-Jfd2m%D995uE>hu=d)WK)6qE73yHasLwAT{V+qn<kaD{K+r&mijJ zCLU^!u))b|5*)SPymO>fx3#OVscxTKp$wsnix{d72BJ#_C|U;z%}xM=NOg-FbRgJK z-RuWWXRB}P;P@7XT&*7d4Ku2i$!2oI{@U&Wtlc^5WP5Wh%%;pJK)|ss!4dqALbewl zQNLA%B_@Y>W{H*j8Z%x^_t5x(Qd8xWqt7Z|%pQ8i86KxnNcbS|+0BQO==1#M0}M$! zs~MowcIk`$mOkrmX_&9p8%26t8pg==#YY$|-qYG}g%$0h?q)(asfOWpJ%N1lAvo!A zZJ1}~fQ`jm<MD6tleoc5AAtvRModF^y9-YDuU>4TWxB<;T6Qq~F36Yx#sp?L0lP#> zKZ`<Z*Uo{FYtaGGa+oPT9`pzgBZ*P2`&TjmKAg(9+a!tRpYW9ddA}dukjS4yE?B?g zJ&GZ85{Ze8V!_pVk<4Hq;WeaUmVi-s8_K$sI{7_-$v7aHj{%!qJsyP?HaeRed%Syw zM*^Z`nLH*iHusOa2qPHDVI18VAcM1qIX?3tnWcS$VfOVwKr}<V3ksl=3B`=+85I6A zpTPD9xyBTJz?Ow=)Q-3VOxn+`m1RE?2>{TNe_eh3<-=7JeF5P=O}D?}EXR-EpI3i< zi64_pCMdX8<vJ(sAdRBi^(wdlgE()dF%Q4AogCuCYbSAjGXO2?I1R{{hcT3S^(hb| zAgC<W^SbOQNP@~{(AoPMloO6UXx-9|JZRn0jy!1H(ylyc-P(>kXx-9|JZRn0t~}`S z+D<&^^0MINI`W{kYdi9wwQD=_po;~FD0)bCkr;4}{#IcW>&)bTQ3v$q^Ie25oMg@x zIQlrVnmwHbUMJZG1|%0;F3W9>=sqyg`iyUL2Jdqx(fZqd>Z>?bz}Xh_v2n^Xyh$(* z!~d$Jg1s|wQgD9$v-}>y?)L!2M>SZx#j=G}zkC+!&X?i$;rx{rEk_MbR^3VHstw5v z82XkG8P(PI3^;+IQxd)b1TJ#%4Ytd@Dnl|{(s*bm$^Z<FF9eRooNONNWTN3L1!`Sk z)`O)?dV{D+CdaLRpmxX*ms#!Y_jr@A2PgS@FlCv>Uo2%C96{zLOLfm6z!RP1pYTO1 zG#5v5>F8-EA4R-;`pO>|2u{@Nu90&n008outT<wffWgUk6d`o%X%zBvb<SkTq{bv+ z&Goz%3Qr7VM93fi#M6#$4v8i>c=yDN5_sn#p6|0t8Cb_fPLb1{a|#?Bd@KxkITLgG zFvY}xoQcl(yX=)?RW0xcScCRwrpSt3joHZgB4mma?NgXLyzmE<DAsN65&7_Wl?^1> zVtDu$^mFfOG3m6EJ12C+2SU-e#KfNg8hrD@7hN&e3OxdnrWv?GOEqa@WZ<y`ejH5p zc|LArAQr}+H1W<IJa(foG58@y97pnbMd~V_W{igSmv);t-HA77+Q8e@DC!;{zkyhR zzDd;vu8wr1v85ociH;Gx2EGCsrZ4bbI6jb#ePrB_!Qbo@y(=xLJTf~oJOOoVl`PH9 zx)DHnjDJL1c+%Zq{_J?<#28aX&8iQz0il8n*lxXv9}?<l!(&?frL^IWeti83k1S!T z#%Eei9^=_GAg}To(cli*<q<P21LBPLOTpIulWf+Rw>}mmSeWLJM1LpoUt@ujOD44| zBPwnVkBtWFQb&dJlLyR=Pj>O-V~Em&)<mSSqI+=6iAlMJaI8^R19!z_V?>_#;P4h5 zI+H(_Ey9xs$IuyJ>TcNgb^*Pn%VfL7N9{yzfS<0ae*<#k;`K8giZZF~Yd_*ovHkE7 zYi$0Iy&UuP;}c{{ObEj}Vyx=}ux05I^t%Wh&=X_vV+bK7ae_f0uo*-ozxl!{A7OUI zaVtISn5GfeoH9s|;sTO_S16OavUJZ*SpBjFkXn(1GQ&fXOt71QlSFd^5*YwV3enD! zz?-e2rAIXRWPBB$2t}V^n~z2>&^+zifp9@9G5E08V0^o`9C&3{Nmy&G27^bV4B0aK z804SCheZDOQpYr4mI~79I_`YX224^YUJ~m}3F!rxASU9`Y$0L>Kn>@bPclpFfUW_j zs^Gv6n3jq(C5j|f^ePRcv1FbM>Iv{&o)P(bKE#qcfreyrLjetgfyy8PV-xi|BTHxo zWkkC|#m8({s-&pfQD<ZQv;s8~MzDMfS3^s`P8q{>mBC}c+`%{2#0Lxu^9hUPq$_vC z8>eo<vqiGqZPq`DiN9736JNWTlb=WLofa7+QZObvdWsZ`66M3epYu(Mnin8(DewU# zr8T;i`xDV}FOKdk5$prR0K;az-VrsY$Gr~_Vq}65PIWRAz9izAzmlKic7&+y*o8JU zm<S;>7u{&Ae2KF&i02hp6q4MzLBY`?$qH9AdvgQXn`?*|Y0b!g_uJIWl%3|lOH7As zAgz-uMCYNX-IkjdoRK&8l`3ohC`j3{7{x?o5U}b_YARgv-q*`DFW|${(#fy7)U!`} zg@`(esQ8gVd(W2f^J<Z7_W#@r(l7)dp#(^T9u%X8Me~ZRNJzCyO_X97gT`C~LaZF; zg^jC<{#A?2>-N!Y%%z>{d|dQ63F~=sTHlOh5DYB6U*G=1P3iP$ovxrO7!DWFDu7uw zJ186H>S1LP%&WGB;3$V+z1QRL1^}gM$uy`p0HK>=50~~l!fFCLi)g2w%I)>g>*jPD z>;_6!@jYA?#M)N0`<`wI?f)T!XPt<h@iRsoZnrU~RGgC07|+<rXXBW)pg`FAALik@ zO%s^jz!Ie_Fu1XbXXQB92aoP;0{4Cw#(JD|hP>)bBWW*Q%JQf)4Lp=`>Vn2JW_~u7 zxQgT?cop?|Ql0~8Ax;$lxa&P9TvxgB#>0-aed(f-SiA$Nii3NDD`xwGa%&Rdx@wLt z{NW>38v{cr(91Y5Jw*BC2x_ohPde6b-TFpp%^aWNjfn~oFdiT7w&*_AOHVx%R=r$T zrm@{it|`z~Aw>~Lb-;;RZ+hIET@WgXLN4x=L3m|Rr42q|UGSe-X){go+-UtbRmxH^ zK;v?BvsDHG%l0!8&t}s){wSQBI+4cVPdz2!Pm&GqkGfF_kY3Qcc!paN^Y!zJq?5R7 z)z?+38!%FWhVpV1{Ec+&z~88wl&81kcSYMrXnz;WsX)ZHd(QwG{aAKt=v!YkG(3+; zzRiYo`rBdyhD)^ldG@I_dXSKoSx)#v@v730*igUCH8$LLFQ%mS?HxQLmA6acr3x`& zO6s8a{0m&2%ajmj5#e8%7Q(-ZYxtk@aa5p*A{o&M7;HLo2@JtY`4fe1!hIflZ+6<W zZ$dKzOM~@vCQ$bq8}!(oKBSLjE9FO-5zNl1o@j9*y1$4CmZ5dOn;t`FTxm-wW?qnA zv~6<o`v8|!<y04RfL8j{tXCXU1=*%W@-2Q|?xMUU?)F!(m~bgJzXzU4q!)ZRlBGQ? zYL>)Uxs{qoz%Mq`#FEC)qU1{sUA6U|vh;ir6;LYym-cT=vNO1$@I%@PE2Mg$-tP|L zI$&?6A=T0EaXOuw&(ogV1{koqO*S;h1+##mK-cl7a0x(MM9|DQ{dGU%RCK+PvYm^a z4ZbZYM(eu3_JdbxtQGp_Q=$VPnHD{-(*Jv=T}Q|})umCGT?^@Z4J%~t8;qO9NF$G8 zvZ*eFFEBt)NCXbzis44Cu!aDLXzgMjTJ_7k8D4-Flkq}!!tJDJDaxpeBeTj&KsUGl zj^O_Zax44Hszl)RDXxkuMZhY%-Z@5RI0aBXfI;~MBUzDqo@X2-L9J>h;M3lC2Fw>2 z8@)0$A}!5b1WI0-YZ7f>tI%(5)7V8enYuucY7YgIGhB*^>wc*9J-_({#`Wf2CZuSD zARVaW|A<R2%#+EqS*wF3u|jA#BDT+mNTnjs9*QbVgtX!UM-1c@;V|)xc!5or*Y~C0 z`I3n<xJTgoWPQt-(I1MF#wqSTNP2Z1t6KzMaW}ijrW0h-gqnk)xb$e6i8Wm%KZwJQ zu2^T7Yz??H)?#w1FaheoQf-)EIm6&&k$(G@Y?9SHiLh&0+Jk|G971*M<yw^!JMwtx zaN1cOBg|lmvsoRmb#9>?Ge^zn0ML?}Ofx683~gs|w52eG+4@M*C00kyeblFnx*5Jk z*HS@BL37Ay#VQGQfycg()b>IIiAN0qJrxppBZB$0+8YraR?X~}4`(Fy%;M#+iZPC7 z@!};01H5PBpy$ML3DM@u&7GRBos}_xC*#5;fogDc;o*9EpDxl(GT*_tRvf68<v^lc z{6KB=P*zX#?n`#04SMlSH%<?4z0q3+mdOU>2a6c-1FJ+*d0YdFFyT7Jhv=S!BfLei z^|s7iYL!=^&cVKU_guZTyGWkENr2aogaaj17pf&P--lWciJN7D*I%~Z(p3!aMuFcI z;=@THW>6p2>qWGI+7`@v{Z@9tydi?Ihs+xYZ5|gVS+n+nT$HF#r(W!OTu<B9O{BC- zAGRliPNS)t=dVT+C<oK%%<yX}spVv#wNWj~BK*+OkgKdQvu-z#6uP}EbOHDZIAvl5 z;Ku5%L$c>>y{w#zK#_WGedJ)ty7n4-vhS&rLyDmJO}1{sqcjY5IHgLUSKrSjaRikq zZ1!Sz{_R&G3?{3nvWstu)VgcjnQN0vp&=~vRFO?x2EOY{C6#@MJ*O4psz=PM7!<`* z>8yly(6gmd-n?<cEw7w8GkVQE9?gw4b_1gKQ&{6SvswlYqoIK?FurB;2F<&b-5u;R zfkS@DPJVnNg={`>$(bDav&xe5Xk9J@!a~Q97Y$K5@H|R~R+kKYI5aVtRXd$^sQe*w zq&wE727{T3U~8B?lG%!e4#zV^NRxi)TAtGjfYa^YF|D@d7c?^`%;{z{t}LQe00f%v z_%*EN<0P<g?joB!1Mlhl5y#ujBuKZ><N5`!iLPKICv?%JFqvkCN!Sx{uVA|g&eeC~ z?KXW7qif`=O!6CWRWp0n9`e+XBOzyGx&5jC8nB0rPx9KYXk1hkf@Y1agrqA{4U-M8 z1Cmr_7<%`+G~GRe?OoS&;lo*sN7g10iYt0{voT(}o^Uc5G_zs7b5B#;%edFm1%MNH zS#n3G3A1Xy4-C_19F$CJGIj$sa~Ohne%6@pAAg*Lx4QuDU!*&DrVZWz+eFKByMtPv zxPF{vH1iw9#Eu2MjUF%nRJ<6_V8p<{&%NGs#lW|l{?_<Fge{x%;1B*>?e7S_tu7hv z@*8$H>sP1!TI+L9mYv0UT2g?hkQ#`zJADB|12_v{z`WPmM&;HQh8WQNRA|l(I9XmB z#@R|y;gx`%C~u&E<hB>-B^se(8Pe*m8C)uXm<cW$u<Hh1;6p{dBR)OJgjQ^&M3jT1 zp>jNV^qIMKL+xwsLMjaz#`aOW#x!PxjI)AIX~f?Xucy!<Mu&71(lTX!+v%S*C0I8J z{z}F1;wt0*ZWzp94JA30Yj0%-+{4j89$@q8&Vxo`pz!WL$SikvOXUwr5^qgjJ4~~t zjlv0edJB(LuO2YV!_IQ3A@Lihwt>%n!9uPt<ep-7(fO18$h0Q$OhYIDd(zV<ZdDio z(}yYK=gK$AM|w8|hPTnuF}-dFAMe3BF7TdnN<T54y14wcd!<W|k;+D}L-Tg@@EmUz z*iB0*1>J4XGrRo`uYAIz7SLM@8Iff?-#_`8(Qt3bzQAMyE~qxZf?DhDRqP$HdJy*Q zQ25Ab6$qJRb5!L`9Y(b3m%e@Cb#RP%yJZ4XAS>=Y*s;<H9c?C;dnA75+vgquNy|E1 zp{1I%(cAsWgfEj;Da{n0$;BxN<UIwZEuy~_@1nyOu+Br1au$~_?1ZzcozZoU;~N_E zV#Ww`BvFxktinV`n*r@Z*=#D0%oQ1)fI7BTTnMm}wQjm`UUyl*>RfeVj47jL)rXoL zWt>2jzj8sX2$ZW?H`IXeVC;prqJ>MezZ%FSdq8k<@)*yi0fEVfg%9qKT^^0a0DQRt z++wIbtuqIBEJ!ff!yyq*{EP)oE}7J>jHtLdJT@AvYs2P&Kp{G8d<tam<$&~{HTjlq zwmai<IkvGr525mT%rf-sv<Ockur%8~{49i1K(B1#bDR0cG+yp&KjKd@EvcRqut&I< z$OPZG98_XThS1^aK7cDdG+z%PC2@l5+XeRf7hQ3Y{n1Y0!3pgrcr%s^!WWR>PlzKX zoOb{ZYg+7t?Vlu+86J{E%t7WP(ezCKHS>n3x)CMfHTnYm@%Jpbiy!E(aqq?8Lm?sy z#necs>QFIL_bI7f>8xCR=f{5IB51I0IX)!ve+==SlsXQY`I&hiv;mV8ikAk5&kHbZ z8l-g`_e^Gq9ni_F@oEpCK@3?dMVb~BNvdf6hz|2)a0lSKXj9$K>L!-FD>TPiXc!Dk znE{ykXW81=7Xw-N^%Mq*#xf3NSE%@y?MjstwLa>st)Et)X5z>#UGDW?V+~DwgU5im zgKxa*He@KwJ!WbPxFg;;NfMrw-+;VU4ijHHzg3R5>gboByX1Em!L#0kg&LlW6!Pf3 z(;^)2o;-JBvZJs4h*e>cf)59O&Nr!XUVy}<zz2|&*3>kqXGKpRAO;w4LYe0-rySb7 zT(0K^K=W(6e<eRNZwV(_Zn1`38`_j2+z`TBOqf8Cne2B1aVzn>Y~EvU9%h-`Amf|s zAK=aP3sy7o|1fVq^no664!z9WSE{W2qabC+ViXgVK_M%&7wyB>l5olH@0aU4Don<o z7t&o}!4BL1jvLEboha_B@|hwMAxc3#^0Q_948zcf&NQQp91h8@<7<aQHX^rf(X7)X zdmf>2D&)A}=g4U~1`WN2S~M&F`C#=cvkj^xM-yM6HC0`2DqB(gW&-@8tIirTPn9u& zjd`|n)w|aD4T6EC{%aU>K+FBwzCJrB8`lOnXVgS6V+$;MvyZd1Hvma{hk=OKg+Z3p zce3|Zxn$msev6;3H|a~fgCUJsQx?k~GLPKtHrTzDU0VJ-iT{dr-_tEIvHwt~qw;cg zQ~Zn(j$8c9*(A5vnBpfp`D`2`7Zm6W^3GwN9<XUT(;HZ-TRcc^tm0Yu5B5QCcALPB z?1i!ZCj&d5Ith&_7N39w52c(cp<a=hpN%E1A{h!^MSWhjvpDGh;ES5GLHR8z<zF~e ze$8coY@eR8HC^vx?`?G{LO?IeL4mc0``CM+i&1rhs$8Yp))TkVA24D%i!6GPKX>oY z?`dr1q|`mjU2wm%fH8M*@LnF215o6sK4Q}>-cCNEK`Q%3p*5wsEpzq`eM5q2j_o=c z4*U*%cZ8VdI`TX8F0dh<opWq#&o4vY6Lv@U_744?c7>FK7MKCvq2B{kFixOVr2mNP z82;N+oNi|LLK9dXv^h*du@Q*Hmpz>VED$N~=|f(o_8oe6^fz2L@7HOnxX<hb`CGk1 zzvoF`o*ZUtYfB*hr~O%{7#IZ%;~c(2KL8(W9w^jD^&X{7P1To7^{cv8Xe<l-Yn(YZ zRJSb4FWys@o-d;EXeHoT4-4q{eEs;eNw!<O-wNkt1h*(3ah<-&&ftcOD(MeW!IFmd z12tQ95LbN^ts<Aby=WiI)=6%^$7$6&^yPUGm<H|oT6~#y#|6(+*ZQ!3vpt_3L44-& znq7TM7}mB;Hl#v}@vRH=mH(<4r~PX-P8(d?Vq3e5oy$aOMtFMm=A)~X#rHrkG}ACM zyXXOMnqiL;IE|92GqEuJ6x|)L@UoE?TT^Cbj+Wd<jhLya?fDQM2}pSgZS$!-dwbXc z5Fgxl^tGe~$X;S2#WXYo1{OhkPZhz%)8;CU%_@YnGS_hm&Yt=X6k7^~7rX!<GG53C zX4mY|TG<?bbNlZI{+}SX@<@*Muj~n5OL0|<E3#3yGM!~2H18!70E^-d%#4=JBE%C@ z74u`Ltq}pErJuI%a#YDeD;UqRfgHZWX)Z{st`qgBr(n5DgUSy`b_Yu;J&IH-D9Un% zOEGcXPuIF<iLvTuFnrMOij0oQ&f4f^lM{$>PRk{*?9d|#GYE;j_JMeTO+G<e2`oDg zMfbw`nkajH23*%k1pkwDx+(`z32V<zjnN78fmziF)7GJ;?QPy7n@*5T6Iz}dO5YwI z4adlImHZ$_A)4qeFg3E9va9wkf~GoQ0@OJHk0-_HZYv(%4Ney6w{OWNf%mq{ukCgL zwTZccoDg>7tmqRQ%xP$K$TWd~8O+v?v`8Pb-I3S`T2lOL<~zzUYSict#bcUK6Segc zPjyF<E`vXEl1(zXDka?7@HM~42t?HR+A1KZ^9Bo9rLbj7JI<EP!ocz=ToP>Ae$L!U zZBKiLRWtm3I3uy^5w8;!Zq88ib`~#QVlcq_Gi1<nV!4C>>gDDx;;k*flX2maKs7kJ z@Nhl7PZ#M1Zd=04On5|of9AyxV^}?7n#`sbp9e%ph&p{X6qB?svg2#yw9(!&#z!!e z?`xe`Fu}!+U02VeJ5Lo*DAi~Lyu*T|028xFp5Wp~vf2p;N~kWBhW4o#_`)*T!5b-C z7-t<rFa1Yo_xJ<b$uJB4uwE~s4J1KfLg=@$3+7F}MAJ>0xjVjOoq_<J$c)%~Tgq-J zkYrUWK`uMsU^}(y#V$DYv~ArCLogTOq15WET`NKuHJZAn{%SOVaxjg~)J0P^F6Y>h zCw0bND~s?$OGB=bwamKRKvD=E^9#eTcTus`)jPl`6Dt5Wy6O(eo<B8D!<-oc1@-}G zNwRE4aO_#vN@Gt-RcSO`@SiN$A3^^iB`BOyCD4sNeld=qGF5t}$9@$84_QS8H@?ZE zp^0B53_+c>%`AOLp&=~v)B>5>S?VKgOH<dAzEo1#huBkp-Nh^g17%hWieiS#p^DfW zS#>^ELTfbU4nfY(mP&c^CQvY6QS>EHIDv*jR-ndUu5dyR?KiVp297Tw@C=+#=9>>( z=_N;gb)~oKQ%_Y{g3@`hFGe#bDeoG~PAU)jvZxQ2gQr{&mAC1+W@%0pl-_8<9B*x) zQ_dh8M>1rul6jQ>t*(*!;3Xja?~{jgB`#DL5+{R|iRgr8afrgHCya63a1~EVTdiUC zNM<WKSlnKCWpUzHehRzYX}bM8rsd`Q>T~9G(wn}jhSmN7GIEN+<bCE`6aaxyLHxF5 z^IOAMO})s5rKI0xf5h>2GYQgdBp!+vwtfTMdg=W#5ikFoh>qLsCOB8$iMQMIVHM*S zpePWA@*8jodWvnia83LJCWVAYl1XX*E{X9Fu}>cmQvz3H@s{N$NOxca5Im*HJo!6? z_qcNUL_7Salil+Zkm1wi6DH{4lZ#0F<p}>qe6ns(e7bssd`k^9H)U|(BMJ|EK`;VA zhL+MrI*0LopZ?fB-316PKtBWM@$dK&Kuh?EEay}lAAapvD3_iDZ};k7-s^f`db<BR z_!Fyb{qA9|$!JeLW%EXAXE$2H@>Pre#WcTUp@^c~GgWDK-i2)JfGl6|7!du;Z72ma zV3LhTL-ROB?!r``&6CDgPxcDcaNGbL03$alKyKWMH)QvGv^Iod{G-X9ioPAK+!N*X zA`omPX^;cKa?CNyQB^w7W*+jX9oi{_uod&5s{@0^TM;H8R${AY{^LjVuw36mTgFSg z5zkD3^QZgxf6w3_{&n^Bmk(F)67TbUG=pz{TkqnB|D8WQ5sxvDFF?z_kbRV$UwS+K zaQo}=UHlLn!T)4)7nO^M9XDA+33&M6nWCl3KG?$Z)5}CRnrPpGQoRYfkyABwK=x0} zZl~xmYA&BByU&ujN^o>2m{->vY~aBuT7H4V&`G?5=e6&jcga<{-QBI_W83&=V3i7- zrucU_c8($>;l&5_6Xoz`z^Sj5z6BFTWH(;j7xO{GbzhV-OPGF?&+5Lez$!eCONatN z%4G=%DDXlV+ysHqi2Od8e-Ijd0e<6bhT&B%AIfauVX24{=!he(GX}>Z0u+M=pr>nw zjavDk4jqy*w8{eG&rl^NDqeyj7#0eyJ;4MT{a4#1%y0di{3Hsa2tpv&h$onwB`B5* zkn=`LW=V*yp$w_VFftQ?DZ^$f7}?u=DP!ZMe?qMRHKX83yxGJ*(W90=#r5a8m=$&P zcrt}7jY!(=Pm;`vS^ZWU=crVeyp18oQ;9r9L98{3b(|}f*6Q4RzJsedIU0~o0!3o! z2sIlv+Z3MabFt|W-4!mvU~WqYy%mk7i+C5C$g6ci%+@6c@Q})<DT~8ZbNpp)IBJba z(SVAin^2ApGf0A5t-0>7tgJMO;BE+2&Z9ioShxtph9D2+mmZ&-L643O-&q~|g~J{U z5QAHsbWmOqKNby;_wjZ=$eP04WDDvo+HcW<2XrHQ9!wG4Cd98X1a0`KT{6?SwlWeN z%eMgIEiiQTS4k@~QD^*qTBj>)yUwn=ndN2zKYLzn<8O&rJW@ZL$6IoDPx?-52ctxl zzh&P2|L5-An%g>Zh0#BAp1%@xv;FAA%xpOxTSxYuGqqn>v_#vSNR&27IdOjd2lS0V zFQ6}L^&;ux%1qf3*+8SwxC0HJ-7N0EC|i=_oHgs?qf>rI+eZTC2C~}Z8g#=c^;{cF z0H;c7@Wg(TO)3S6PEfeb8jph*z|UbNxcn|h!c_^5fWy9li$g`yuF&}0(mjQWf1AXA z24?Z29pFtj)TQstRsSehvSB0rzU^T<GFZQL^KHIf-0j$BcK{YO8i-2U*&UZ3$Hc!a zAGv$s-YQwRcfUu&DN?m)J*a4ciE}c;@xT*$r--Hw0-y=GxUQqkWaABj_Y5bQc>GMw zYynI^O=h;+1)WQV@|7tv|HPkxIbPJkLXg@loz?-n$KDR?@tZ9kp6=(jyJ1FR7TMEM z@<TZ-!Op__A@Cw6=v$1;+m>(m3vwc5#N#C`YIZk@CD9^@UfV%v>>U%FJGc`xtf%OB zX)A>9oJ@yoqm!c0Cpr82JYV0TdZF?P(&R-%=WhXd#_la7h~3MDgvGoMhWwEbkKw7H zIQi8(pFuPjuO2?S^9%f~BgF8BXq>|bAWTH-14{Zk4?*9TUU?E`zWMkY>jXVGjTsN5 zXk7Bb$Km;yNsB`hS7LxfuVNXGw!C34b6t%^QfZ($%4MMm9I?vZtF*c;quK~KhR2qu z;{hdTEKGec?7U}YWDpTR)P6k}a)ETJ);t($A@OuzgY(S^6J-aZ2X@_q+4A>d{phU1 z<G>38CLFIBzFv16$OZmpEds|P8Ul7DGD4aP#3gp*Z4cB>klF$(1i235N?(?1NQ+_Y zkBG2qUm)8n<ihPvcozO*2Hu_Hn|3Smzz!=b+69)9!5g4*;hQFxU3;0`gZ)4!mL!AT zdqk6+P3L_G$$dB3;(Hibe+9GXpu74rB(s<{25W+ZU4f~vy#c+ig7Q@lSaMzvu)Hr! z)|hc6?(Fcr8G~0GRzP<L84v1Un8hG3>o3`kcj7I$iHjcVVsg=AJ9=`_7gC&iEwrZN z;XoLvsFeki>2b&hzYppq^d%NC%<B*(el2*rQ=2{H?CGP_)FzYUZG&E6&lVapces_^ zqpPLiQfXAh@!cs5Bl!j<qBSUyj}YmS#xRLDj+)nrY>{|f?dXP0ao@fEI-ZB?crIN> zd+o#f8O%;Yk^+a=Vfo9|5{6CjiDpA_%am{!+!#ibcM-MxTdRE}SP{vXYtHq&Ac+qn zxhUJ|k}Ji1y_K*XD_JdVMMk_bLbo#+=4X=v>7fpXiZBHyNS&c@Fqb<#Roo53bN^&u zP;2_4`*bwEXm2cL4yiC1F8Nj=pwe!|1Nc^IplUC^mCB>XXUK%(w#<8k2y*T@J_P-( zlnTgSngVijL0y&C@!<~`;Sk=R%Jeoxi^)(q*yqL{{A2NhJfpNJat%*|Eh@TSQz*y6 zU>8(05TeCh^Or80__(XG+mn?HMQwKrF_-yfb`8M`I@$JTGfw)?LmTP@6j|HBE=*R% zU@*(6^4XkRJY>$OLv9y8$}puZZ~1=BN?X*$l7UQUZDNi>-&MHa&PMRkIQiJOT)AkK z*Ngl4GfW#Mw{i$Y?JRco(6l&<eZZkfAcEL1qN+NqRpP5E^5GgH`7GUie7Y(bEAn;J zf?tavf@6&^CjG5rt(8$&2+L)zKTf%dks86voV9_uDL8c^^?jL=TJk-mxd-w^SY}V? zl42@_z?e&8`a9WMywe^T;d%m<x1j^al~uBcGE)d*gHM}U&M8(5x`92IAD(T$EjPr< z`kSPO#zaH)AIAi$#}G$6Wz|<L<N1Lxjp&ME9r-kbdP)jRWnoWmFOOpk6e%v<4N%bo z*eqZ~(w&;`b{VguEhtrw{&>rF!2;_B!DzT$Kly>2nh2zWos^I8H)g{GIxTv0Xh<H@ z;SklnhNea;eTAF18`xGi?SR$*z-0If|9nW4(vk9+k^|ct4Z7<(G}Poo8kaD?n2LTw zfleAhg@CqgJfgyvABcl9{8)P|z92g`H4?ze5z*<9H{dK?<}_Gbm|i>@&!)}xhL=MN zd3blH?(Cys%8WcJixo0)GU%Z$K7@Z2h+ftTQYgeWQlIgW3;&s_4#N(Fx^H{f{&*X5 zlEShMl6pWbPQN=uqveolpTCtlYoxHeKG$VT^Ijclu$P=vcbXv!ZS4gIvHjgz$pVA; zfK3>zfRX}2r&dAX_|?#8yK{6iVNzkpkIm7*kROO$5M|fx`3@1J!yt4V7lxW@(cH=7 z3l}E%?f8)0!}H!=PL>v%GGhU%Tg+qMZs45PPkX+l!W<-z3HXK&^Cu@B@I4{u$`>R= zEJJ!0;>NUj*?D1m-|~W8O(W?1+4%BGn5YdR)Um#qCt+e2cCs~}|C1H8nTTR?(1e<< z*$qMxCMjh^yG^FB+H5gj(-_9yPno)Gy-(SNrUc{iASHmBk7LnPEmP#?zPEm8<)7ku zcwywP-kxlQ+=%QWF&-%ILYl~!Tb^PKM@V};SMLv~Ho7=$NX?ArM3tI@a*rE%n(Ud2 z>UN)15xuG4Obq9K`_t^yg~O~}8v31Nrt$c7y4H^{f=-=ggX2R^sG~3`7`jsh8l)PD zVw({sDmKNlb*eB(r2bkYGdwQc>lqycHp<yaIj=A=gny`!W9^nPCglvlP*Ds{m8I*a zJ=`J|75Idc2O9BT`MEc*#+iHL5$<!8O~%`J1bS1fB*}Parq{F4hsKO15cqYp{7wWJ zuxloz?9Z}Wbs5P8XaNSffYlPFD>Ie~_`}gg&v+#JaJ)2N<R+@f+!w`&DQ3y2QLH4n zS$wp8s785=Df~T=N;)-GC$}#=hE0F*jN4mM(sRHeFA3dJc+q>K5=um<IRLX<*xR6E zBjHO@lXd7L>-#_mRYi<Vg^=#rkAYJ+XJs(YW3Y^mEnyO9Y~nVUnlhLKfyL<k-}hY$ zNR(VUsV0OQ%f3Fs6Q{`HfD92>7RV8aQ760|&#&KcT_b}AreVZ0O=`Z%{ov|B*Gz~~ zkGg&(VpXt<f>w5)f!VQ(55y01j&1DPA7y6dIo+1T9~k!JdK@_|zzTVUE|`v2x`d^$ zg3do16I#;6`lYHJspM4xxdV1YKwVYsC>5>kjZbK-VM0hFG)d$3g~;GA=79stSNj16 z)UXdBHoG=s>z5!_)v~OyF~~PhdqG%aEXqC7FKoOn7f<X8<zU?O`07BR96(#Us#+9B zgzYPU8!dBjd%u{k9dG;Sc2Avf0b``MKS)ymyPiE4#RSRo3Lj7~dC^VcNduhs;oI)* z;q)agz})=Z*~mchq!(?jD3qcyN0>c>>wEZ6Rg`Th#&n0)wOK6e#Wu~7Ca+=$V2&ug zL)f8w4e12dKh*qy`loXHs_JPl4w9jF{rr5HCx0SOKB_{kuDau;=cp>=zEo0};u>B$ zVGMB@8c?Bue!kqAmU#}e&?e{;>r=4AAnC3>)yb9~eTCkZDDwBXN8m%vYU-AiQ}!ZQ zAyy>rt&j_+!mvY?`o}yi%IqrDM-(e&>((CH^H&E=znTrGq#5!JsH94S!s}Rc&JoY! z^BN=d<M~4?VtN;P0cDkHyJN#coAj`GB>RXm^}G&_S)V34Pl+Nf;(bNTJTLN|BX6sa zMI@-vN}V`d<lgM13f?>}?zBa)^>;70>_Sbpab#%U;;ZM)0$wV8UXe*7EXa_nn`zV8 z{q_cAi=i)$+<k#9eq@L#mpk}7^V}uAq-_ddFvwQ^43;Fw+w5XG|496`4=_`J#F|Pf zf!d(K$pzXTp5MyQ_m>$NhEhUSxwI&wY)0E&RN2ydvtUSC!yf(;zXWx-y%DqFs{cXC zd-L8+RU4W#8PE*Bes7I$dy&mF_V<u=bvJop>M~yOKsx-^-DNwx-CSjJYuaIkbEaEj zMmFj53%eGhWaax#tl@-neou*5JDq{wWhlW6Yv{3HQ%Lrrk65TX#sKv7QO;m@y;@Fx z?uAauQ^Na1;iqb7g4`W&6F;cqV<!v?<zs(Bm<(=n=>5nw*c^0fJt8WlBR^h&1cJ8^ zLp`(O<Rd(z6WjBNO<lzNvW|r}p?|U?(&D6UJ9Syqx~C6Xjxzkos7`gA8L(G$F|0Xo zJV(NI0TaQ<u#m)UII7OB0yaO=)~>zS8t1p5QaYk;k7nuRa<y5kX~+Q72s%jEVhdBR zHrp9(ZNow}BZRuYirR#r-PV}CLMQ%}nU)Nl_*lLT&J1y_TR`qw^0{G|s5$+{&_=id zR|i!&qR8xaZnYnw0)@<&Jy1w;FaP(MKF@{c>Ngpk9wrRCGzbF|(B}%yoeR{EGdn^u z07{Mw*5upTG{0}ND>LJ6KK?#~|IALkxMjnOVy;0F=H^!9SP{4m4+@qEy544^pKrI1 zYgA<<<>W_Qo<X!+5h9c0#Q24K@A~J$T2Co?&Z4q1%L|#l$;6f9LWxOG8-zht?1fW~ zKXG9%MIur8naRp4kd-%|Z48b&A6B<@r><zS2?6FVRewT8!(a}B1UpUf<Ul}!o&<G7 zh0$S<6$W$IBRxJfpagQ9mG8MY(uL#l+rxt*@y=I^zlaP+K|kbt2V7%&Wk1azqGNc` zi!@&*0zaQlF7B3JzAV;@)$L-26Pk{IF~P&br17d7IXL8jQx^_3dsixpcl-D*6V^WB z`ytVD7&PhoVt)614ji##@dL8){XLjc-)}z6co#q9#E%I}i(<t+L%DGId3m>7FK)NX z$JP8k_-FBRcthkze~tR2-M`Z6$6)uGxJ^#=7sa@yQfuc;G-AEb=Ek$~s>2vS_=7fB zGCKg#`%Jv7BQ@kH&i*Y)tl&ecfDpS|Jb|;dSixJ3W{w|lFGLcpZ;FxxK5)O-F4nWn zm*r{>jyEWm>Aye0|6wHH>*M3yYz;Bt*?RG%t7ndsB>Hrf<MhQQ6V#jTAa=5w)s7IS zv)2X4*&`sU#Y>v#zplT9MM&hDugg61UPLOBWz3@ZS)>Fld<b*KN0t)S?30=RyPkE4 z5HDaKSf)^o_|OfLpIH9<@gGsP?&sJBJ>bMP)ZEHwM}qFmyU!<l20Dyh|CMG_oQD8+ z8&i*Kc)5OYH^XX{8K|cRW5tem?=QkTbQhh%MUaa&sqCk@$2$Ry3BnU1EW}n&=anT( zT3Gl7BlB)NmnBZ$H3?&oHGMo)NGp!U3H6s#>3PcKv_{)O;AIHyB|^T(O;jx*{&U^I z<Ov*~_kO-v{!RRHX4^>`@*p{6<+}Y83NVTL0kvL|Pmk1r(mN`S(}5D6BVqO8g(l&M zJ_8$Kjc>yeW1$<7EHQ@r2Z)&e!cjSB?ur;H>D<*3)+i9%!?1p5r5v9wQqnR<i!Vm^ zJ}<s5SEhbc36LBn*h;;}x)KM|OXBj0&hqk6&AleXm^3hkvrk*+iZtjBj+S>4h1_DR zXq&zo?#ad7OCxqoop1h})A;{Q)HpRFXvRp<mLs&_c?8~)GPL#1^nbY5OqXA-{ym>> z)~A!@X7=#-9eeViif#?{JIl}aiz|$6UzjrI&3f|Ee`dbfEWfVi_yLIf`%ge8+_}lF zVwevCLqu!$b;l<=`2`(F&>uE^3n2z{jVDjb#qHwHrRgGc7|*u&tBdXP6Cn2X%@ZOI zKlycL{&9l;8VRSj?;ar1k--hS!y@G1M-)3WWl*5t2B0MDZh5=dT)qAG=IImmFyUU_ z!Cvs+*v8XjH$)c)3Lkzqa&8uBW5=~Y4rXo&%>2#ZLozT1^`HMl8C55BYZg(fN3^_b z&Ejx=nD8}c-l<xE7WZz|0(`VIn_7d2o&&9*w^}N)m%`)=;D-&37(}A{2+c}^u@z-< zk#eTYl}NJV+a21M>xI!Lrlj@hak+v!E4_MW>vqX*kabN~-Cv5L%zA$hPhfv1Rs3{; zPMF*FkeyKtC)!7Tfx__wMB9<zvkNFm#z^J*MAmoKub$-g>gjp&4TfFb{();bT6h^d z9NEG10jg+Yx|=Nt;5}iGvm}EIKR{hOtk1s+o4B2yWj0FM`KzEsyT#!uF*#nsO#3ty zdbQ;bMUy!WwnLqqAwl|(L&2$~Uyox>5_N||(tdbHjZ@(0OUBZ~eCz>%^tG2juma3} zGPp9_V2gMV?0jrxLBVoKg>3yArrFo65rmVsA|IZ1Q%&;tU|_}eXWZXE-tHU|o}K79 z>kl-_hxc&DjIIOaxf}5dqSdBUjf!-8s3t@@idDUw7%1@c6%u;G<``=^I0sP8S8%R^ ze_;{Mj<O0bT51<g?`ytS8Y8<}f(^)<q4n(2FcLE<rGXun&<q9GIH?oxoYnJkDa^kM zBpRNG1Bt3@NslNokkx2RV%MTgTnUI8Y$n<WmVV%0_edsmxS?vM(xLC*SMgT2Ge4<$ z`+=8hG_andsM!?fiW2HKfIt}(UK(J_N6>dMyDA&UgtlHa3(esGCL6pXp}E&Hh|W>M zc(%0V!7A5d$YTTCxB5d-ebq_?GgG_K#<Tg>dJ{UMqhy9SIz=AZDBNUFs4ky<eV(uH zP=ylny-w_NlM>E&I`uEPxr+dUj6;YNaNZH4tGW{k=IxEP&GXqud`JrO1vmxOz90L> zOoeg}{CR2EeDC0RC+c*XgDZP!t!yq~g=U}XeUZ(#NJWNy&nn`kg1NReTa!BnUb3;P zeeZ^}cBbGt=qk<5Hn!HwOc8S_0c!Lzm)^w?Dim@Ap{u!d=|H&#gun%kCKy%d=_M@9 zZ$x&=X9GperXlVsL!I2*Q$SjL4Zxvrd;wdz;?8Rt#mm|ED3ockY;8a1YDz11N}oCZ zM_6h@ZEm!Lz<R+^DJ-<!iMK<z3~WR*@q~z-BitPo#{+k_V%Z}cA##`+nb6|z?%rXr z(3`?K<L!}D*^a_Yb_U*ta2cZ6_K{q!8{kC4fy660|804{m`w2huh+}(^X+1C@(U#Y zK79TU^q4{%&Gz^fe<RFV_QH-;Z6=q&?A_$tKd5C}(p;ciAYg9&$;tKl@d>6IEf*Vk zWfK+^RwhWoN&Ms8hhJX5o6X+Ce7*Hze)s=<xOszNij$ck-Spb_Y39&5`!xUB2#v`J z;_-32Uar1UOqTK4a_lFk(6N8FSi3Kpxjug0sojIyxb?Bop~832(hOqa%8W(oz8xMw zQi=WwH~U7Rdiq=cZ~j}t?#}<Y*v{|f+qt^}laecNI`Q9nxBR@GuYW{ew%)ER6{RTF zu1G0=1k{fwVy?lmYQcsUe5*uT$Q8S=z~o{6$D%XFiupa=qw^I*=zq8_V<^aivL(!c zyB}=e(%dhmI2GFY|2`tO>r2jo(dCrj3l9_w;&i9nnuW4YT$@~}E`?9ee|?0?gVpxU zVspD*KH(68h|`nbKRccN1z*2g+-27(X9Oc!U9nixqtD1}<`;d4oJvjYW!4lJsGJb& z*vB9U10dc4qf>hkrf_Y6KuL}}J+Y>ZHw9|A_4E{U<zoJ@GbC!hJ-PT5rU~A@TW+>h zUnAz1q#e7Lk{WE`<>Vw$CTIV>`eXI@r@Om_V4^Rb6zN5g{AB>;qbu8?c65c1m4h#Y ztqRFP==%4IXr33cWq1^<Q-seXvZ%_ScfM5wOR>YsKx$tug#2G%s6tU5D!5J1i=~j| zFBd`X2%0jO-LI8Fi%zr5MN~*z_+|A%lzl(X$Ytxu0;%x3ibyH@cIT`LzZQw?B5z*a zW$^2hibWN>Wsuc#E`y#w=dyJ=qNfad*##^Ec{-5=KoR5)cf>I3eDc6s%<{BvSM8!n z!AS~>+p^rWeFE>6PS7H9v8F5Y?$g`yV$chho?gsG#0M-}lGQV<W-5wur6&2h&r1y_ z6HBJENO@UO7bDKQ7szJt!1De4cF{dY`wm{^Ilh9_`umR)sBHZe{$~Er1fp$h^4VJN zzZRv#_KkKjZC{E^@4F!I9y|A|w^N|79n%SaiC?!mPEIH*O*jZ`vA7E-py8;WopAdJ zZkON)J9&MSw~8j=xiGL;Q;7-5qC!z+AC0UORak|D@%t-r443&K2FKw85IUqSjwM4Z zOEGUHWTi5a8yE{kUj{xXZAntm5?rG#mV>XLRcZNsiE~ZAn1Pa99Kyf$O<&5lOe!3b zsM4V)YKKZ`*5)?l>W@mXX{$mh8>Ut0LGXhS@6dod|GJ<?6I8{rVJ!#23?u5OAdTUz zXvl*g7D%RQ!h@g{f-hFD9R>#<$vGenH~<*r`QMB6qw_kL_&f+*Fm1_kn*F($|8aQ4 z0xvUla}3u%U{)drq+xQA26y43;0^cIIZ)I63uJbI%TPLfS+3!+s?T%QwSMhO^JAbz zg$+@l0;<TNg>FEpgRq{D?$~Q;EB<Rz=$y8uyq!6VjIkRnPZTLzo^{C#-UO!%p0X)t zFb#uv%Daw`f*KVlkYH++K3gEMY_9jKW_P9}n?EFWwS;pMAL|sG(}wR|JF-)@bSN2H z&zIXxErD^Z=hbHZWnr68{A#!J4Qc97`@1gf3-F{qa`>48Mw`X`7sY0obV~2=R2W72 zFd76nGsSoIvhR!U$l2HNUEl7+`pXe|Lz(i^?g(KK?t-C$3PPfmefflFF4%x4N<7nn z@Dmsu#8wK5U+rc%2wEYvVXqNofmqA;b|9xO?iMh#>+uH>9oN27E{4+6mI!V_tM$0X zY@_T0k}VCCWczR%yc3<b-4e|1Y^Pcg=2^q1H6Vjv1W{-Us9aDjyBv(FT5#Eh?iaWB zi}{+|8fIyk{#3BimoO-zh9Z)cn`ENFWMbB$)>$f;EJF{TDZmQ2Eh#JB9naY<0bx=I z$9$&Spu2BH4nEzu>3OitXM4HPH_=#sh-u;-Z!<Ph1JLqd>@9XS&=@Cw0jcLLRj#9n z32e}MUhTT#6aI&(qUWvrEr|+<Z2s<?-Wb$PLsEJVsT~Dw&=7vb-2a7%$8@&4SJx+v zL(8)*8)XFZj+|MUnR8I18<A^mF~Ik0_6kf%u5$1(PfqR@z95GjHcpE~dzt1S_vG(t zvyCk09l)neR+Av(h&)ll0`l<>xxs2eWe~%teq>YGqp;*Pv_4XHY-8_6&S=vRXuNj8 zXp2&ZyjAUiLTfBPxP}M7DZRyLTPeQ1a|Ds+0Qmy^qXy`vbSwnt$~~Y;3Q`opVm^Zr zRi6tA&O`t32XlY8ZMLf)?A8tT2Z+INH>L^makK5W<%Z~!ze&t5G0$Sqo^_cw7LiG0 zmd6`M0;tO0Qr_-;zR@+rIa<>YUMwlV6O2~AW~a!ux5#j5MSzHD#mxeSQ{Aa~MQ6_* zWx<_#+{alWnjK_A<#8M{?ai4}7I9&st|;msBQk*P5~%d;CDkR2((9aQP8FWI;zPTI zd&(@?-1@a%W6k24XW(7%c<_W5DVSe2cu%8uwAj{F&!UTB**lKvf*|-hLo&L!f>Stw zmrp0)iW^Brv?=3qjkQX<ajRLZaN)tMRtjej%M}6{!g>ru0~TcKjm(M+mVd%lXUSNY z7G>6go8<5DNY;}uCuU@bjYjqlv5M*7`WNvWf1GR&e;@#bB8ie6%jSgv8{_y6(Xavb z_G0;P{~=W3rl@Tf!^eqii~%~_-a|ahcDm{GlKaRGVwzL;kB!)mc9QBtIt=1O8`UG; zOZ*5$eK=?TJx!Ry#L4#%ej)~}8A<C}OIm^Lz9NtWOA%x?N~W16Vs@OUi*=DO7ShcY zYr3#`Z@?`a#I4V+H%KFwMebYX3ZS_bUM6@Uy-aYazDzLmfRt>xqiCC0sF*iy$qf93 zoahk>!SfiQiZf%#rEGR``%zsE3D3igE41$SLlvekmZpF1!>3t1Uu#deP!*uza)5K9 zaRzLI1FH#WWa64*$Tj7{+w0h9cpE+TL|)x=_>%x`E9m5)i=dA|=7h`}bi)fD2N<dr z&`8_WMr2<Mu=>gOR9Idr3nmUC28cUWzHhro{U`y41{6J%J|j>=HB7JTZwtJbnHLR! zA~04Q2OvNS9v*5Xu8(KBq6qO|Dy2g``@x~C)qhWHqbGItLyTDJcV53JNa_ye3aMEb zD>P^(v8i<;0kpu}b!ZE%>bZl;%U`48fTTpt4LUZ;H#y}NfgN1T$YFzk<Br|FZZ1{t zEMmQ%o10BXv4EG4zlW~I0SPHOVm^Awd@PvJYfJFf6K7=_+iSU1ddAUKBb0Xa;tfcQ z@yd3uLS-Io_ZEQQ{$ym439H6gDf2j)R$l2~sqRe<U@jd{x)&DrM{l>Y3o|BGDbTFi z1q0Oz|9)x8D!dJd9KPeZYi9U+w~!t>i1*>Hl|%1V|2J|ULl1xpzsg<2q2b$k8Ctfq z8#7H@UTRaA88_f#T*JLK#zPt%-s3gV(8=(xgaA{q+Pdtr>G!(#`Z>IbzVL)&c;{qn zZhfM9&FgbuOPQvN*>bhq&bIJ?gYojpf?G`3<{;CZAz_Olm&tkqK1ds8;mOd5A*(`= z7{FTxyP}C*sIm^M%G{+)NJ)x?5OB+?n57iXcuZ4@0o|#5oC@2jN6UDZp|Ni!V!%n< zyAd<h32sVg$5KIXI}MQ&L3IErZ{3(Qq9hu`sS#}vp*ycbq>RS|vWT2^g}_Pd+*wG_ zMsfT2@U&iRHjBI2(|ox$^Bj#3k8MvXq6Dx9<}tl$Q&Y;q9wf=^90wrLg3aUbhQ}EE zdoifEs%m4I%v{F<$#Fqc>*uVq47)M0DWD%%IvJ={Z;W)Txqa-^uL3h^aEAW>^ryI4 zYSYOcF?gKf$9C~AcuVYYZ5(gcFZQ^;`gn@P14_@h^QPM5rsd}t9m{JMD`&G&;T*I9 zD+*O@nB3A-+$u}w<a-VT#r_6_fNVJQQY|^qba!>2)vLj7o`E0k8nqNaeVljIN8e+5 zv4)|+eBv0hFncoAWP+Us_W8T@NOilCi+267jCq+!CdnjN2UB+Rn0qpDDX0;dxfBJu z+cB7$;n9M**@F5p_GR+I<x|W)yZ!60+1LBW&oB=7`+RM@aBxheAOD|;_KP#^7Z=(u zUTD8~rTt=}LZ7JMCo24jioit0;1n_NFI8@yKhLgUtj3ow@TlkixqW(q-~ErPNSqWr ztVfS-@?!V+m3y;clvnn0FhvGEM>!+pczv8&6Ttm}302_4G|H@78cobB(;&2%fdDm% zMT#u5ObSsdE`xGlR<<-SfT{Tb(7C?AI@xA^^#H6WO~!DtbEs)rrKQK6!=b(Vor9Q= zEaX7Oz7Rsc)4p!QFfYA7d55^{IjC`?6r*LC7m))IZj0hrXJQ2s+j*ZEqvtvB<f14D zlq)95&CkH^v|Z)=(ad@YU7_%2Rk}3?z3ecZ@ua>yh3EF_^%kD6`1}m-s9%P^?kp#W zUE;~pii)UPDi|+9yHpmyR4`C{n4{Nv)KSDHj|*1gM7KeiH%SD^VjF}b>i~;!j0;K1 z(VTwACa%s=K}D3Yr|I=7ekET0QqMQt$9){V_WgKwiUn`9Wf>VLPpSk>@Ot<YY+0zR z&X}wGqO!A0*IO38eL&6hRDoy1u(ADvzUtWvi9=wes2iv6prm{!XgY7q6;Pma?wkzp zcFU!I{_Jv`=g$g|#CPt(F_o1(59f_8WlCnJ9D+pzpWMlYLtw)qk*2=MUn7eY5i}rn zhMyA-a)Q?)x;GeqsJ(s_(jxEzmYKiLC14Z87}rWw+BZ-rpqGWWr3`VdEV(qwluchB zjvS*7<r$_3Mr0Q0L=tuL!*@&=b>O321tPO6y(o?GS<8f6AHLTv_%MNr*|;A74H7RM z12DD*417_m7rn!VRq;H=Zi90<o`LYD>ba|4w8M%#{&EzP3S$ti!DCguwi?)k-cNXn zZuEN*0GC`4DLfphOyX>%9nvYPYdqn^OHwa7USDd>5b7_)A&R(<!A^m?YKhSpP(z%k zYibpeW-7nN;Uap4iv%H5`uQjWQqZS2oO;XvQAU8Gg?0@g2x_JEnXOtY8Js<<j!tz! zk?tusHmDV{T!UH9NYXDd#Vi4y0^2#YVen~|hEr^o8#3244}r;Oit%uEOjt}Mey0!+ z9wwh*!PH1jC!j3{mUSr(rxClds$e|`HrWnF>d6#}MPAjzEFe^$`B$=v;iMq-yW9Hd z^jnYJyg2I2qQ>PR=O|bWjhHOn9{qaP6q%P3n008^^N6G0E=+3-v{jsMe>^P!RhWkG znz~LU*^(F6%iHbqdNDb7e`%R1Q5Wx#CDGSnI-{5m^z~HdOywzkt=^dteaXIAk;&;A z9{X9WKSFkF_0@#IW|!_CpNYd=GO`cZUB!?qnTDAI6(S2zbD`KO+^NDoSjM0fqoLV? z1e~scLhoWGqSQ<$ClF-TL9;AD0$`USC6?O0nN*i>`^JRoaGqf6>BuC`h6Gy~o0?RC z7W;0J6-Xe(I8=&156%cAfK!U>KO2xhj8TR12ovtqelGHI6A%e0q*EA{1t^4@nWIzS zEF}PSB@?A<Mpm~59YSIBBKC-IR_(VWs5#n3Rgv2oVhFTZ0or`|>PUax84Zr|SAlC3 z;je<Z<9#A>$L9S2wB!=hMfTOr!$U58qWao;Qbb?<ERP<yz661qYDl9s#Ih*9MvmeL zzP3ORDkOZQewNd|<Qc?a)MCbh5}s}uwbwRoB0Rxf3>7FNMeGw;5L-qeM{%@Xg_3Z& zwP>EcR*NXTzB;vYnEg16?Yah45DO(fUsZHo-<*}P2Z_w9NJSwLRY>kV0?;=iukMuf z*fQR#j>hXS`b6UO)%4S-zqjmWHHf@M;q|KMyT0SYMc(ZrU%L+SUE=be*XP1`3Nz^V z6lT+3Z5I!}&2eJG4=iGYh$`A`?#-~}mn-O4z}a!`2OEgz-Y=vFU!+&YWY7pA9@Jt& zw^Fl!FMbx=J8Rb$8YXh<XXYE6L6&kybayQWuGs@i+VWzKutQ(drY~aalBl^}VW9QJ z>+R#iX8IQ1&pDkLo*IK=92AjD%r01>BPvyr$2;tB*H;z1=G-}EF%?d-oZ5!-D6I|I z9n70+cy^}6^&Py&6i;cFHgl<Z9dKq%;dslBf?Y4|NJbEz46e?)z35fAwobR6hnp}8 z6cv&=S)rSj&o&Xv-(7Dxh=$zy{Rdm+7w_E{>z9t3U)k0RnqU1oWlfRlf)aCvQV0(t z-^S{$q{doVfm_d9*(C?FS02J32For#gvH$A4VcWWG%}lce6y3#GK^L#9BEjU7UZdB zNa4bRnXVMhAl54cGK2vchz4xP)*G1_8LYhQ^YKoQmR)}hBGPE_okR{Bt)<a~W_K~! zLofq&Xp+p2T@GVU(-@xi#xSFRC7g;bTUIpoUYQ-Or2E`hG&+06O};6@JVy~Ccl;@_ zbqAU}j4rr6NR_o1j_nPB1jXpisvxVTN!Qj3_nrlnWN74usSu>?q>P_Bu&OS}vo|HC z#C|z8$wQzFE)!50M=d4(*h%GK)7@3URu57_VBgH*_D%FfBX%j3S(L1On5GoYc&t;3 z0o~~c48+jbHybhF?U||0sGx-IGXPFBiAt@Qy6I|JxzvB>b%>M+DFGXi(^}3_mrvus zJXY`d3#5}2xy?)n4jCIW)|PE92DxQb8yn)B34mf3jS*=$OQ#FWd%X;h<z@wD(i!R$ zv4~JYrHv25=j<_o;0czMnaIH!?JP?7l5ugAD^P{K0TINZa*n0=GKDHqz0Eskz$pw= z4*yIfD{n?qJ1i(?7DjICfyAT7b4*{igSv6tS+Si5PHmey;AL0PVG!7WdIL2h?t!ne zo9Q+GyJX?i<nRA^UwQ?z__q)mF})SBk-2sm>Ba&qm6tBJG-XI->D-mefuJIzj_0!% zE(e<Kt`2nBbu;i=T(-<c`d+onvgwPKVOpklbQL#*c}qdiWA4esrJzP+=28^sZpUD1 zhDQtLW((?^(wE5#moH-Wg1V-2tZSM~@c%<g`d@v@IlLlMQ!!mYBJoTrMkpR~>tD>* z>-mqX>)&tR0ou@=|9SCsxzfte;!mGJYj)?eRx-SRp$?1L<Cop90SJKk9~#Xz)WUq! zd+50^9?5ii_W#UIrqj=#X7HHwrxQCEKtT4Q23Pp7gsO&%N98@@68x`>#1l?lKM=JP z=Eaxg>Tb5AWP?@mkJqA8h#WD!hDp)zXvg{N99M!o+AT!Q?SGE6hO&gXc3-Q-?xbv& zeI-yo-`Jg1-M8;3ben#1PH}j*dv+G~2vz*9JTmp6=-}!QdU_({p!u+d2lO=Gew)Iq zXefYux7=)P>jfUzuQT{>cUsfg$7#3<+G%wkWo8+O9dr0|a_n3n)2tagIYs{31gSQL zP!l2Pw@46cnM+y;VC-x9JLGmPO1s<o8pol)f4lQH?BGSA-C!dwB=8M0BJ*Y7d%Xm{ z%snveY`I;m=TPxYhRTF{3bIJJ*wJ+GliP2L+duv_zhB;=+=*}W3BC7Il0q$Ic;O}s z>I8M)`Q3aw?_7J~!=O&Y&z9*E-e@N1$vy%<O;j#oh>8tz<$vC%S4bbr^!@LsDsS(v zOo;o<{O0#hZ0?~f#W^K%bAQ4b6Uq{k3Cd0<m8=L=2fn{~`oOPI$<UZ$uyAaowI9Un z6kfbi-faN-oR}fx6FT{be7$oIa+^+cwzZg!5vXvMAU=+FvRzalzU&|7;DOOGo%$Kt zUXUCTyJSEn(`Oebk~<lJFW6z>5QEo#H2v#wM$-pmE03?q@R<O-52Z?)5)a8js)^8~ zO)!wI^4wTtmt8w+KTt`Nok0?iI8EGreANJp3a?C&4qSeI^IyTQM;lfX5Uiw<G&1Gp z;~O>+bRU$WF&jfZjZ!6}63dUXl3J9fSkvepNF<$9|KT=)U#b{-;Hdimw2u^|w9n{^ zG1XRR6{nXQhJdj7jbkEEG6!T#_<;bb*dG&m9MMR>nKOvt>PF)a0)-X9{YT^v0*x^t z4tn<IV*Uq{Zet#3U?+ON_j#WJ0wotqO1N?3w&S(r1S|~O0m}e6ATdJ!m%J+(d4W(q zQ4}H+zQ%phbBu9Fp$)!oTiC^fB8?f=twO8;#)xPM+mOq{Q!z?>J4k4=#Om>GG5ZW} z&`S$J*hbxo!~+kU81OITrT|9)f&L){bG5`Tf+>Hu_%eUKhse@uxt(q2U*U5fKFwm! zy?7@YIZxRNPmjwLM6&!NN^<NJzw*4=%)cyPcdI{U{!6#>4ei{AY=&ub2o$iC1|~5x z8)*!S;gC2F_}pf3PqG4>GtNCG?hPmf19?}|sXFV2&qfzg{R57koJ-x&tI7AiZ1`?D znPOs?k44eAksKd4e9M@gNqQ<I@NVV@p;z23LSV)%dr@d=4eglFLlI=x$&KTeIU`(t zJcK{t8BC9aTMU{gSZy&5nXhrtU8O?;NK1&S?<yJK9xF*H*Y`cvxwySw%-5a3yj`h} zR!nZOG_OE)7bdVvMSfx8gvp7D<$D+j;yL;7Y>)LYXb6P?v-!rT$(9FaIKfG?0T^B^ z9-g*88X`71N6Ww%1!!7r5)6R}dWgsoHPVNL0p8|sZ3CrN1q>F0GeU$rD-9s7jGAAt zsS%+RX*$WUM^Jrk3A7j(Gu+Hx>>PmGLxCafT{qKJtE~gTfGxM{#~-sfu~n~7ZWX|Q zAqY^EGyQ(;(s~ZN%P=?68_s=gFt9=I7H&1ljp78%rU$Eat=KJ&XKW^OPmqk2&r2}j z<)bM$R5gZG!V#*0*T*PU4nLmvS!KsW#$X>I8!u77?xp5!W$axc5GE_Gp;m}JVJ10) zrD)~iHT-(}RFCRE{z}yxXN-0jk(`r4rfbl*j6~AR$Y9N9T?1zMF&A#wx<lv5mhV8n z`NMX=jMj#fQH4z@7v;`0;%ltknC@bupxrS%xwv0EX!=!9Nqo(|p;1^k^?DsQBoCSh z*WwKaO@#NEom+m7bbc=i=EMPkob<(rX_w0JDm1JRG?@EPsG(&g>JTgci}@qU^t`GP zXDTKAU>R}zPp6O_9<?0-9YVMcI=aKqwYM1M4mCKSL$eejbmyZC4(MW|HHKWw!25-0 zKH;{Mh25F$>!qm7$8bONST5X1<00+x3IqwYEwzf}RW;RS`Qd{Dx(5YHszYR(&8qgT z`(G8!1@ke3cmi>b3vTa;nhr82<Iv^M4=kN@+(zPN1!hvJhahnJQ$Eb>i7i+%Inq=! zk%OfYD+e%l7Je_otXZMGpv}Uso;Qox?c?)`L}FNqrd=sCw3p1R+YGr!ZjqW~BnEZt zq;^Ux7}PG!Wf$JEF1MAU$-=Lw4j8=-J0im?C{uJVlPkNI3$({{H<-QjR!2BhD?BQG z)QqUcFJ+_(RTvXfEV_k6!o+d!8F23lR$y;tWY~_7%GFQnR=0|yD)<BzH9RcA(&u&G zM-=_{gV3q3|G+q6KFHi7dJQ)E2W;Bx29Uvez!b;So{Yo2YV%5ZuFq0pYOBY2zIuAz ze1kHM+duGJ+$17@E`rAFUl)<Fg;bTvWjku*f(S4*m=zO4ca8e*k%_vci6ROWK26C= z{pKqT<aoqo;9<kW3-Vml;}R+t#TmN({BIvu`93{*B#Gpu(VE0>s%xsHR44*6fHsMn zUve{SY7`T?#Fd~C%_@n8dU=-|h76n)C3;$4ND>#t_DZ&fvY8&Y?bz^bS?<0=64&s} z`uTR-FJow41rm!QE@mIGTLjxuFvByQLRJwvoJn_{Kli44P7AoEpvu~&$^xUMN2<s4 zn{JKXVUcqRl4PY@lDa<94@;M=EUla9CMjGr^A2*!D)d_B1SDt?B8ZDtCl-9=>ZKJW zlsn*ZU(UP@>%>Y^R@B37O~GVS2ovf$``A>uW6TcyLv*aemhQex$C+l>>g=#1#3RVN z8t`(uU`YGbVm1GKzkq=#SO1>RH|x{Max;5){Ep!huxd~{E#de0vfT8-gm*XV$xHv4 z`DU~HY8JRMJ&^Vj5b!wP{&-rzJAJ>P-oaax?cDeM?Jyw$LL<BWcBiSTtbxnh<dB`J zwa#ya5j@@9?8Zx+&0yvPJ}KZ^_F+WKN7jYD_+Mi3U?*bj_!&N7q|!trBeaZ{KI_(F zg8$Xf4mCS00#bD_=y~r<zJ$1SrXKL3%!ucHOpKcna}B2jCKF8Rc!APYKgT+BPmG8A zW&OC?5*OEs?W&dRc|&)EDTG8@*DhLP>>766aiIw^fca*-U(y3d%*(PcWB`~D{xe}b zswN?#v|jwVo<EtvC4E7>z)&ihZ_lf+)@=Fk1oJOm%-(&*QaK!S0HL~Q-URq$cEA&S zwm)#-euNKB#qw^k+Ag>F+$Ml~h2UVzliAIuQ)V5&wh5{|A!qk&E79J3y1n150h2%< z{P)>rdxu5!xA!2XjlAxZ!G_P9v$6C<n58Fg2oH<c1Kw?NYHtc*1NhK#_5JY=QfYXF z5m!c1bYSAt37#wNPu|hyN%;8*+*ZhW0yBbx<F&hYaL5tTq}7!S8iFKTwu&s+hh&yH zILQdTx+<agP&mR>lH>v=3vCu?2536O#TpH!<fx=6PoW>sS)$rpJ?Xot<T}w;ow9-) zN<Q`07$suncTjSmgxDHm_90ZLD>0B73J0M=cVCB!8ve`U6B3ftCT{#tf_NtFD;`8J zC{yArJX}7MhJ@ZchuP?c4X%2q+|aPPhe}|XXn%+1R3V9=8a$dHt{WIU8AVfXki<Xv zz3i%a6sQ>iD^);9y9-rvUM)8kj|xjUXe!Yv#EwiK7>C}WP}&p32|jjIB<fW0`(aR^ z<Vo`HyJkOE&0vcPcQyulRvu?jPfp<f!hA{a7g{_@?G#?Yn9D8-dwUtX16sN-R^AFl zDRzte@$9R24<}Q9!!AE=*UQycFk@UD^woCp0J7V<zGvI#CkU}%bu%~<SO11s3V;W< zbGg0(D;~TF_^6AR{O%1{1?FUYm=>|j*22wq$FJ$43c{=LbzyQYnDr0fVn&%apeh=& z+x5bQuXe*T@w_2mU<(v6I2A6(?(AI4h&wyuPW#o+)kfD7V+r?gTGNleS@+M2m_s8Z zbQmfebTSPyKzCao&bDkqQRk{m_5c)ffCps?VGyc4gBSC=@AK6yb%q_Qnt)5h#Y`*h z#tJW&z<b|sK1C4^&2y7idC>YR&Y#wc?^Jc@KB2s_YhW}EG+wp~KeyI5E`pyrom|{4 zzkFG&7eI`e2@w+?_<Xhai`463OsZ~k!%^t)tt{dvCsy9SgV{A83!qMCHmMNu7^)!q z?f{i#d|RNpkmqnBIp4u`N1(~cFF&@6e=TldR&hrW){}_kQ959EBpMSeCsGPhL?%IF zDa9gQ&0@X%%U>byvVOhZni=z;Z48rm4O6>-su8qHrJ^FpHD~qOTobTAM_-x9(fwQ} zW@LM@jAexO)igSIkK#^oah(mJSqRSp9D8y=La?t~p`15V7zmh2Qx5_|zySsbJgl%F z_nC9e4ppXOgGVHy)!n(Ev(sCDS-<rX81de*k&o;hc?;ATurW-QdW0D8cJXyRCz1H+ zl6)F#fEs8<s}|uzN|g?L^z`!c@@}~XX|;S@&F_PuXy#!N6q~5-`+HG!V=x?B53AUn zi)S;qEAS$e12p0H4vdo-3UJHV!0=dHL};WlJYT4m=lyMu1TW`%tZNLo4Y}|cC=m&g zcRpH5zW5|?5IadA7Oz3VoIr^wIwQZ$QK$Z(Bv<>L;-wly*5f6iGFingY-;|5_S;VQ z*`7)3S_P?J_UR~yZvzdsQ-T_-e6b0E&FDWl`RDv8OtXg&3$`h!W8_K6oD<X+eul=Z zEeb#_(!Y<!vW}J9J3+qgZ_XL)70#iK7_4@YN1P$8=e7@0bN2OlzP`g_rjS9jf>_%% zvdmx-(Ea>&=Wjcl&d33=8_f?0N*VF09c1Wz3ryv>p^Mv<QL66r_;DCMVh5TTZd_I} zS%&zaBQC4(EJI{C1-+_HO(-~)%b~{6j^=Dx4$l;h@#5${^5m4r6W8W%wGEdi=hk{T z)FAy9B1I~$9W+$mAvJ`8Bu8m$meE6kxiMHaNG!$D5u9b$dXRjfJjj&Xo|#WN%|xkm z8D$0><-j5Qj+cf@TzWnkomEDY;V6Z9HBmt^3w`ek8LUS~=h4_>J3E-M^1g5hgi%$` zzA%a6aC-xLauB+sIOWsz4}t~;eK;D`L;jnIjlhajepC+pZ;wpLWtHl*xG^7jb#+1> zQkJz30XRAk!-{(G+^(9KlJ`2#UR;5D`)82Q6Ed~bqX!zD-!C?sE2w5LgBG{~x5263 z;g>eO&s+1@eHjH9v5Xk72?ReeTWK@Ww~r4`^YzY2CV`VEZ4DcVs|+{=?4Wg0H96(! zCXgAJAV<GFTH5p14mdNUO(;pk8XF!iv0~aC1P%@`Xy8}KahSj%c%xYV&XnfJ#Gq$z zY{W2g2skl>;wU^U2ql=x2AuqC>Jfawzxk;dLSP>_fMBz55l{w&PZpj2YkJ+M*wTW3 zsPW^gUuoa2B*(Cmz4sa8V2TbSb~ugWwKN<iy=!rB_Qz0yKSITBJ3Nk1Dq~ux45KMn zN(X&Rd`fP;#HVUiAeULVqw1S;&TfvK*3olt8WEqpP+_rElUSBU9J=5(Fka~k8FivW zB1i%cK?3eYgiw~zMM#QsMwW6S6I~f$2U4HU{X6pesnqORPTZH{7Tg83%6?y%M9EQl z?T2KxN}gG%xATLW%~7lH6r$~pVS1~<h*5wM(ZTHegX{8eR`zBc9v|-E9UPw*?%4+0 zLCjP=_$#QpO#s`KVI3S@Kw$m&Na`eyi`&qpG_FW8E(sqp_QM~GAEYFEQ{<I!S6~Vb zsi~pau8Em?11HDQ4lZl`7~Y>7$;i`R+4u$C5qQmq<O@~~ns`Uz=V_f&PC>&FV$fm@ zk(b4tDPb}V4&8Eq#@2H(p^n_Ay~5%GLAfA@ZLyBtVNt(J15vxGM@yo@FL8004aqQw zKCWnjNQD2XKmOu={=B+dkn4eGq#_qxFEcud)#Ad1YrSH)okjpK5sViC4z;Fl1H&Kc zI~A|o6+9Mko{R=KB!6Z@esUQO7exMixivzbTDN;C7*hD5)$=aSg073ma}|WqdHgfN zQ!hQSYxL}kgI<?@Wzjrl;fS-K`oX|@7&rb1AElmczb!XJi2hA22x*X0Kd7o((r{-i z`9+mMLl_75n1k<LQk*5*T2u~kSGMjdyW|=G+3!;_jspi3!l>tXH05GoaX6!n+)m2X z`Z3l@9nFg`D_k1JLWy{2gYH@?5_~v3dbvTeGgz}<TnS!UTwXUNq$wKYK+Uuev?sxZ zw)SN50dzIWn<hz^<G=`x6zBwKRS1Y=JPgG9E!b(*IfwQ`N;)7UocazZsaSmQaFQBW zUzTh3&ODVdExA&2t-ZZpclLCy6^sORv(qzfdLa`hz3ox>SAiHrYnS^&fHU<O?`4P2 zq#9JZD<(hf*Y?LJ*cxea>vu~@k~m1}0i?kN5v9=D@1vc~tIyOJp}r?QwEfUS0%-Y! z)t|Nw$hXUz5C|NMiI0XKLK6(s$(zX1?Fgi(Ue6kxWoWdrM%{x28A65o<@GC4x z1k~|^IT(52;Z{Peez18wOc)Aca|HL?V>O@id-c^GFrybRcZX)9<fdT9HtDcBdH+>L zyBwLyQ6*N9O?!BFJy1Q!Dbo$`Q^tHPa$Pi311OJWs^(U8f7O%&DQ<Y+MFf&B_z;xK zxq;RSBEp^-0`oyO1#%Z4eaLOv4{9+ji%=UQznggN;^0y^ftx&tqVFvzW~nJWn@xD7 zJKc0I+!JB37ns7V3~#Ir5I@C)7Yr?L&E>R5bz*7Kc?TV*Vq`@r--{ma?v6hhooyi= zjPbkGlM-hVQfa$EAj0&FXsafd#!7v~Tw32H-9cAP06yO=|0ZLpSfqUnF?w-(znHH( z<n=t-&f^&T0%Wh?zInCJ&<#uC%@A=?s0_D*Mk+%R)_&Gxe+E7l*$e6E(1#;?LFL3S zCUA~=@Teqw%Vn-hh$hcT*jGg#bw#fF?+q+3Tay5P!EqE+vF>dv#13n|m7<W0*egUH zv9y=YbRpq0mhRT!WX<SROY>VZaR*=J@J$WYvh9xvdGN9cCN_FEh6JWuiG4WCMIHqp z;hhe^gWJxw8Od3zP7RGg1tn54BE*DOaCoYlt|w0QgCm8OYqoSzN&}$P>mAcv0LAu# zaOH>J_s)T7?7|=9%=LoiEL;Xm+PlS<`Sbl2hOsSSDBJw&^y5E3EaKcO7#3!{G{=R9 zKY<gQm&3wB)kYMe>$uS)Ie<)RM~&FS7PxI#&k<6OP3RW^@_=j8A*$6g$IjG5gP8Dm z5mRRpU}F=UrGFuIPqM$>+YvZ<A6-rZSae_AO$xV;s4c~3-rSh3G3<fM<!S>%GRcJm zhHMeL_KogBrs5wVOVVk;ZUNa>DD2wDquxUl(@f8m<!uhHmVh1Yalsp3%m00*0TVnm zzo#g#fZZeAE&Fs490B|?a%M@)^zgd|4BW1*RRm*+aXWR2_U7Z&4F02L2A^FS^8|v( z**+0pfoO$qp=vb|LW8X-7=y<vAJ?cch-&q9wtVa_3w#|1f-lxEY!061A|is-qp+H= zLs3yLX7y|ml1L>7%LAr~+rzwA2#k=6W3LoK>xDwZTeyzD-^MoI$*j*T<$DF5^v!1* zsiC&DHA4=6n@db<2uF`Ml7y8hLEzyOrfB;%EvMKuN!pZkgt_S6AlvKyFLD3u5y`!5 zUw;8Yetw~E(xv<!**gPcrQeuGH@go<yvaNqA-OMyG^F#M$8p%vM<A4JGwbY$b#GEN zr_Wy>pD~rO?I0!8srBO{l^S+0UK9|XrNiz^nzgt#ERoDoTw*GXy~O9j?dZ$h4Jxqc zIx4z1Qp~DAY(5ja;yA2AisG(}|CN!PaG&oMPY{8GSH{fiI%xWyLX^RJEqKe|1NRGf z-+8uySCZ%Oq!qBt6dxp;q6hf(@$qi9h8P^Y@cV_l&*SyuQJ9=UiGyXA<2azn1WO1U znHAfexFfxoH`1-x@G9M>#2DH7TP(qRnEy3P6c7}8WW7ir3Kbf2n;z-?rLjz$kq3u& z4L&InVYK_}?uQU>?7CQp$UgjUCdh8Uh5I;-vJyv$H9fur)@q!;6~RLdKjnGoaC%Jx z%{w)!jcOS4ie3mq(0rp3JaEJi2R%dr<Q8vrL;<T*qkM#6O*Z(Wa0zm#WC^eJj_TU< zZU~9v82#>fU^|Gd)a8>}F+Sj3$h1Dvr{z12`gSDgdvM1sRW^7iZ(O+<$EZb;sP0d7 zBzf#OtZBVD{V049p*xk$$|;moD2rK;xkNaN7BCC4;=n2D!1juVmxtu37Uhul8ImVh zq(kzDPk9nlr@ju)865|g@acNBgQJHoN_If;UgGJ@{xn98zh=2oux{Jmeh{W?*Bjwu z;nPHwW5ZcD?2tczVM)bmyQYQn&7X5x_;xcIB<g&@>lkc95f;$3%Il&lXR2Us{*@cE zwES}Q@A-VQKAkK#vj=$X*tTh|AyL2le7`WyMO~O0z|DH{(tl>Y*(|@V=J)}K$xf&C z6A(E$H&2LTpa+5n<VX%Ko@|>-R8+8g6EVDKVc$=NOXytM*W1Sj7y&lHhsDDimH0p< z@6iA^mz|i%>E&xP?ryy{l{WF(b*)OD=eK_-0o8MeX5a08XX4&qP~8I=<3?b@&DZDW zhTvF}Yn}mx93%{tdI^bHUm5GXhcn1iE&g1)X7*u#UYJ-PlrTQ8!iuvcJd$|@r3LRk zLu3U004A^TEnmXaXd&V@&1Z+AV0)8raMlvD1<UOZ3-lENh3!vfH=kH;8lPh%2oHjf z)@^eCHY5Dz)9w9c4fur5;=j)}+dCX;eR~gb!UzmFyk8ih!spHC0ZUteiQ2V-Bg|32 zQug3?8=k^3!GGjr;6uyR_s2g-sm|36ZjzGs?al83>jBkqoASmsPr}dfJ#(nu1_1!g zK;F#up(+B9dIB&YUW5&GDv=;*OFGLioOFb4-R9)7UU?*KWr!NT!aS^984s|}Z}c?B zsP>HH6XYhC{1yn|jmUAzr=rg2Zhv;a+Nok+F~IkXJMMN9B|qZ=hU=7UC?12?mVfQo zYd_>wGqQ!@cQSthnhUWd?=6TpBe9>Bi`&JY%MCFUXIuQ$#rF9L?7_Eho-lb0KY2Yf z|1jc_$d~~rynXio$~c1x%J~Qv_z^`0MGtZr;tP7>Zh5=dT)qAG<_VN6it_g#-va9R zZ+yRu&DbbJo|ssHeuqcCJ01Wjk(1k8gy_=&Sej>yYjm+#^Wxh`W*^?iFbLXfA`iC7 z6rht^a`4TdZMI$*kI<BFKRqs2P^OZ3lfhZ%<H~S-qQ^LF_wcm+K};rF40kNy7CG_b z)r^oS-A5g!l1}kh70q8Nkxfwv41PtkDOHsyN<~%9mr6tDj<`6D_51-noE7@=R|vDL zU$3{|Y4|~f?%qg&EB{>^kRV@<f)eMbtMuys;Y$;x=He*+JO{6>9*&Ji?804?dO%K6 zwq@rAC_!>dUd`Q<mxmZc6ox_e0?B4P*5C!;)C(j%k=^KJ+7CVKo=W8>UyXYga2eJn zoD9mu;9~^29dIXL-PxKBfwDq5gnIf@IHo(RO9p}dwM>(YSob<gam8?3dM%0J9?W0N zH*l6KE$nv6j@s$$@XSMq8q;e8e2(9GUTx-I7G~|4|K9DK4c{$4X)K(JI8J3I_~>SF z|D~f~ok;AAw8C3hv3%nF24=B#J??6D#W)ld0~J_e1^dR#I?(9gLuIDrNhKz#KlE=+ z#J;msMjQPaX`{)*{Ex-V2FZ78MWJ#ZDNie=w^&t)Cr4EU`iVF{hX++J-18)jAV-q+ z1;A91k*5<8CFAK{rIVQ!p`8>>#`$|xtSO|Q!X<1R&*};SUFg)pABxx&c*q#!W);eZ zMi4ZTUebou0=opxYyt85`R(q#ZcmpIvq|6)PMo*+RJ)CV!(ZZ=PlqNGss`7Zn&{gZ znO-GNen9ZeUGC-MYWDSczP^ikf#D<y@$A9xx^aA9#Axo9Uqq_}sRSw}ko8n_fq+TO z_aE^|p_f)5aB+Y?M3W0XfO4AYwZRWa`ODek5T&+?8>rQxZAyEh7qLz)5jA?1z2Q6_ z<5T`(De(OeN;)#8XZD0ft~q98g+kdStxyU%p|5HS&ot2+AJ?3WjDt5+jVRd}myA0{ zMj?<v)e9pd5FWK~;fZni@6E|RiHj~8==i@E>qlp$?Grk>ZXEgy-;>)X3W2+r@Qn() zMrN>pL&<HEx&*jk9D6?{76#<<!ID63K)2L9=QG0y6uI)DC_3YwM)6L_&B3Th>rd5x zle@aL5hErzsY_SA5K#(@JA1|uV;8<61flLpVhl_oaIK9j7D7HDM!=(<cGMzwt(LG7 zI#8XNh<qTTiw4!~M<uP26zRVo0_m!1KWb;m0P=<bgG}&fR3>(P&;2tn^e*6~Ux5_f zu9x4J(7_I+rr2IPU~8;HkzJR42~xHDWn=`RL=iozNcNQ&g;=e(*{&aHR`c2iFQfJ1 zlvP&>2Q#Mro5Q4V0BnUrt?Z3x+Ee1TS%sA+4@(qWKqO4aS33dPFExc#fX^$;JD3>t z##RAzg)t;!OzAG~a_R>YKyLmfW`Y$h!)TLUv$bAOvf%C{_6x1w8DMdcNgAfyH2jd0 zC$l-3pNXNpQmeqmR=;1fS^A~JZwk#0^~Ld*GZcO_fYjXN>EH28MSVFveOLbkdNWc% zbp7m{Fy{uGd`xAQpXy~7@`$Q>ds0YYhij<OVytj^$Y`g6BnCXMp~jveDrHIw&5{yN zj@xZMXgoRb$>QxJ5!ToNq?(pZks<+Xg;?lcGD6WDWbD%xnNPZ_G<a!rg<NYEMl5FA zZ_5p#>)(W^ESK7EAH;Dvh&f%7G!pbAXT^ByCCu!?60kOgB{mBf6nv+~C7i-OaFR%s ze}_&#LhVA=ouG~&70{87P<GukHZAioBamh6p}U&3ZpN#p=gl|Zt=m6vlFgYFi@}WD zWw1lc#3#p!Xfya#tr}?N$t1gfsCnbJ&=kQzQ9*H?$6!$zJ(Bg3DxAq4sz|WWfDq#) zWKvBHrb+|3yrfVYmT*IKB3SFfgKhBv5}Z>74r8N8?zer*N+zp}VsyRp@e1?6kb6kL z0XhX{zN7(77z2zIGDh3h10Zitl>q1$zOe5ku^KiD%<DsLx<|YLEj>8!OBk*-rl;6% zZ9wzGd$?O&htkCx+(9{^T1y3`X1M2S$<j~3mKhXD*W5~n`>5gNv|rhJr_|)WS{m=8 zJJY?n+fHNKD%4S_%rJm$gL;L18@Uv0h+g%?3fEg%R9*T?k0%ivGzyZqF!gYVswjdp zj7Z{TcJ9Dn`-Rc$1Dq`(%y8c>ni&EesEq+o&V=F-wt577H?X9}+B5~j?dFtVeQRe< z2@E-9?_w9mqHMW#q7J`S2cd<v3$H^M)jAA%#k~+_FY-?dH;Bd$<xgAR=F5ZK4S;C6 zd0+>J#q^H+zP-^ld5-V(f};)xhe0`*$_v90-k9oJ{z_h%16;B5v}$Wj=d$wM=9|>x zv8^{qC56aH1tHdo)04^#QTovsAPq@WMAfCG?XphK^j$Yonpn7ddSi3ikqhin02S&t z0?<ts%6<w6Hp(w>^)F^{`>Aeh&7T7!YlXB!k(v#aO)@<<=+m8FZ5I!d3I4yENTqkQ zkoKBj2?-%5W!b6PmnqsO+A54KAqIBAPE)d@w3S%MCtfKwIw*e$G{a{*z$s=s!Akdt zZ)?yKL~15@V4Zju6m)8}AateBC-U(z8a2GvNrA=81C~4}(^Q$5k^<FsFrhJE{!q@s zVO`^NFqPqwG#dKumc^t@bdhZt%E&K$U()3`eMx1TFSB9VQK2MpRHP>QqJ)iffenRw z@9y&caG*+)Uj>T_w@mtO8?&uu`eE!I;19L-m%$12G9HwSGaM14+kGvlKrA9l8jT8N z#gKhbV*E𝔛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ⓈBoDK!ne*nwT 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]xZ{E;NkxW26a<33t+SYV*~w7ZKVx;B{Cwq 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�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%0AB7L%3_PS#y%gWVZoKTa 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≫AG$w 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 t&x4}g|DB(*FWyW*KWV3_dtA~ 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%0A=T<Vuw>d_4WIfy#sR{$sLRY||$kLQvrJ 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 A%>V!Z literal 0 HcmV?d00001 diff --git a/ThirdParty/Frameworks/tag.framework/Versions/Current b/ThirdParty/Frameworks/tag.framework/Versions/Current new file mode 120000 index 000000000..8c7e5a667 --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/ThirdParty/Frameworks/tag.framework/tag b/ThirdParty/Frameworks/tag.framework/tag new file mode 120000 index 000000000..91ee1f5af --- /dev/null +++ b/ThirdParty/Frameworks/tag.framework/tag @@ -0,0 +1 @@ +Versions/Current/tag \ No newline at end of file