id3 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,197 @@
1
+
2
+ ===========================
3
+ Comparison of ID3v2 Frames:
4
+ ===========================
5
+
6
+ This document contains a side-by-side comparison over the frames used
7
+ in the 3 different versions of the informal ID3v2 standard:
8
+ v2.2.0, v2.3.0 and v2.4.0
9
+
10
+ This document is a compilation of information which is available in the
11
+ documents listed below. The original documents Copyright notices apply.
12
+
13
+ ID3 v1.0 : http://www.id3.org/id3v1.html
14
+ ID3 v1.1 : http://www.egr.uri.edu/~kovacsp/mp3/ID3-Tag.html
15
+
16
+
17
+ ID3v2 2.0: http://www.id3.org/id3v2-00.txt
18
+ ID3v2 3.0: http://www.id3.org/id3v2.3.0.txt
19
+ ID3v2 4.0: http://www.id3.org/id3v2.4.0-changes.txt
20
+ http://www.id3.org/id3v2.4.0-structure.txt
21
+ http://www.id3.org/id3v2.4.0-frames.txt
22
+
23
+ Please refer to the original documents listed above, for any information
24
+ regarding the ID3v2 standards.
25
+
26
+
27
+ Author: Tilo Sloboda, Thu, 17 Oct 2002 00:26:54 -0700
28
+
29
+
30
+ References:
31
+ id3lib-3.8.0 id3lib-3.8.0/include/id3/globals.h
32
+
33
+ NOTE: the symbolic names used in the leftmost column are derived
34
+ from the names used in id3lib-3.8.0
35
+ The symbolic name CRYPTEDMETA is not part of id3lib-3.8.0
36
+
37
+ Legend:
38
+
39
+ -- : depreciated frame
40
+
41
+ -> : replaced by (all frames listed before this one are replaced)
42
+
43
+
44
+
45
+ ================================================================================
46
+ ID3v2 version
47
+ symbolic names 2.0 3.0 4.0 comments
48
+ ================================================================================
49
+
50
+ CONTENTGROUP TT1 TIT1 TIT1 content group description
51
+ TITLE TT2 TIT2 TIT2 title/songname/content description
52
+ SUBTITLE TT3 TIT3 TIT3 subtitle/description refinement
53
+
54
+ LEADARTIST TP1 TPE1 TPE1 lead performer(s)/soloist(s)
55
+ BAND TP2 TPE2 TPE2 band/orchestra/accompaniment
56
+ CONDUCTOR TP3 TPE3 TPE3 conductor/performer refinement
57
+ MIXARTIST TP4 TPE4 TPE4 interpreted, remixed, modified by
58
+
59
+ COMPOSER TCM TCOM TCOM composer
60
+ LYRICIST TXT` TEXT TEXT lyricist/text writer
61
+
62
+ LANGUAGE TLA TLAN TLAN language(s)
63
+ CONTENTTYPE TCO TCON TCON content type
64
+
65
+ ALBUM TAL TALB TALB album/movie/show title
66
+
67
+ TRACKNUM TRK TRCK TRCK track number/position in set
68
+ PARTINSET TPA TPOS TPOS part of set
69
+
70
+ ISRC TRC TSRC TSRC international standard recording code
71
+
72
+ --------------------------------------------------------------------------------
73
+ DATE TDA TDAT date
74
+ YEAR TYE TYER year
75
+ TIME TIM TIME time
76
+ RECORDINGDATES TRD TRDA recording dates
77
+ RECORDINGTIME -> TDRC recording time
78
+ --------------------------------------------------------------------------------
79
+ ORIGYEAR TOR TORY original release year
80
+ ORIGRELEASETIME -> TDOR original release time
81
+ --------------------------------------------------------------------------------
82
+
83
+ BPM TBP TBPM TBPM beats per minute
84
+
85
+ MEDIATYPE TMT TMED TMED media type
86
+ FILETYPE TFT TFLT TFLT file type
87
+ COPYRIGHT TCR TCOP TCOP copyright message
88
+
89
+ PUBLISHER TPB TPUB TPUB pblisher
90
+ ENCODEDBY TEN TENC TENC encoded by
91
+ ENCODERSETTINGS TSS TSSE TSSE software/hardware + settings for encoding
92
+
93
+ SONGLEN TLE TLEN TLEN length (ms)
94
+ --------------------------------------------------------------------------------
95
+ SIZE TSI TSIZ -- size (bytes)
96
+ --------------------------------------------------------------------------------
97
+
98
+ PLAYLISTDELAY TDY TDLY TDLY playlist delay
99
+ INITIALKEY TKE TKEY TKEY initial key
100
+
101
+ ORIGALBUM TOT TOAL TOAL original album/movie/show title
102
+ ORIGFILENAME TOF TOFN TOFN original filename
103
+ ORIGARTIST TOA TOPE TOPE original artist(s)/performer(s)
104
+ ORIGLYRICIST TOL TOLY TOLY original lyricist(s)/text writer(s)
105
+
106
+ FILEOWNER TOWN TOWN file owner/licensee
107
+ NETRADIOSTATION TRSN TRSN internet radio station name
108
+ NETRADIOOWNER TRSO TRSO internet radio station owner
109
+
110
+ SETSUBTITLE TSST set subtitle
111
+ MOOD TMOO mood
112
+ PRODUCEDNOTICE TPRO produced notice
113
+ ENCODINGTIME TDEN encoding time
114
+ RELEASETIME TDRL release time
115
+ TAGGINGTIME TDTG tagging time
116
+
117
+ ALBUMSORTORDER TSOA album sort order
118
+ PERFORMERSORTORDER TSOP performer sort order
119
+ TITLESORTORDER TSOT title sort order
120
+
121
+ USERTEXT TXX TXXX TXXX user defined text information frame
122
+
123
+
124
+ WWWAUDIOFILE WAF WOAF WOAF official audio file webpage
125
+ WWWARTIST WAR WOAR WOAR official artist/performer webpage
126
+ WWWAUDIOSOURCE WAS WOAS WOAS official audion source webpage
127
+ WWWCOMMERCIALINFO WCM WCOM WCOM commercial information
128
+ WWWCOPYRIGHT WCP WCOP WCOP copyright/legal information
129
+ WWWPUBLISHER WPB WPUB WPUB publishers official webpage
130
+
131
+ WWWRADIOPAGE WORS WORS official internet radio station homepage
132
+ WWWPAYMENT WPAY WPAY payment
133
+
134
+ WWWUSER WXX WXXX WXXX user defined URL link frame
135
+
136
+ --------------------------------------------------------------------------------
137
+ INVOLVEDPEOPLE IPL IPLS involved people list
138
+ MUSICIANCREDITLIST -> TMCL musician credits list
139
+ INVOLVEDPEOPLE2 -> TIPL involved people list
140
+ --------------------------------------------------------------------------------
141
+
142
+ UNSYNCEDLYRICS ULT USLT USLT unsynchronised lyrics/text transcription
143
+ COMMENT COM COMM COMM comments
144
+
145
+ TERMSOFUSE USER USER terms of use
146
+
147
+
148
+ ================================================================================
149
+ ID3v2 version
150
+ symbolic names 2.0 3.0 4.0 comments
151
+ ================================================================================
152
+
153
+ CDID MCI MCDI MCDI music CD identifier
154
+ EVENTTIMING ETC ETCO ETCO event timing codes
155
+ MPEGLOOKUP MLL MLLT MLLT MPEG location lookup table
156
+
157
+ SYNCEDTEMPO STC SYTC SYTC synchronised tempo codes
158
+ SYNCEDLYRICS SLT SYLT SYLT synchronised lyrics/text
159
+
160
+ --------------------------------------------------------------------------------
161
+ VOLUMEADJ RVA RVAD relative volume adjustment
162
+ VOLUMEADJ2 -> RVA2 relative volume adjustment (2)
163
+ --------------------------------------------------------------------------------
164
+ EQUALIZATION EQU EQUA equalization
165
+ EQUALIZATION2 -> EQU2 equalization (2)
166
+ --------------------------------------------------------------------------------
167
+
168
+ REVERB REV RVRB RVRB reverb
169
+ PICTURE PIC APIC APIC attached picture
170
+ GENERALOBJECT GEO GEOB GEOB general encapsulated object
171
+
172
+ PLAYCOUNTER CNT PCNT PCNT play counter
173
+ POPULARIMETER POP POPM POPM popularimeter
174
+
175
+ BUFFERSIZE BUF RBUF RBUF recommended buffer size
176
+
177
+ CRYPTEDMETA CRM encrypted meta frame
178
+ AUDIOCRYPTO CRA AENC AENC audio encryption
179
+
180
+ LINKEDINFO LNK LINK LINK linked information
181
+
182
+ POSITIONSYNC POSS POSS position synchronisation frame
183
+
184
+ COMMERCIAL COMR COMR commercial frame
185
+ CRYPTOREG ENCR ENCR encryption method registration
186
+ GROUPINGREG GRID GRID group indentification registration
187
+ PRIVATE PRIV PRIV private frame
188
+
189
+ OWNERSHIP OWNE ownership frame
190
+ SIGNATURE SIGN signature frame
191
+ SEEKFRAME SEEK seek frame
192
+ AUDIOSEEKPOINT ASPI audio seek point index
193
+
194
+ ================================================================================
195
+ ID3v2 version
196
+ symbolic names 2.0 3.0 4.0 comments
197
+ ================================================================================
@@ -0,0 +1,60 @@
1
+ ===========================
2
+ Overview of ID3v2 Frames:
3
+ ===========================
4
+
5
+
6
+ This document contains a comparison over the frames used in the 3 different
7
+ versions of the informal ID3v2 standard: v2.2.0, v2.3.0 and v2.4.0
8
+
9
+ This document is a compilation of information which is available in the
10
+ documents listed below, and therefore does not have a Copyright by itself.
11
+ The original documents Copyright notices apply.
12
+
13
+ Content: Copyright (C) Martin Nilsson 1998, 2000
14
+
15
+ Please refer to the original documents listed below, for any information
16
+ regarding the ID3v2 standards.
17
+
18
+
19
+
20
+ Compiled by: Tilo Sloboda, Thu, 17 Oct 2002 00:26:54 -0700
21
+
22
+
23
+ Sources:
24
+ ID3v2 2.0: http://www.id3.org/id3v2-00.txt
25
+ ID3v2 3.0: http://www.id3.org/id3v2.3.0.txt
26
+ ID3v2 4.0: http://www.id3.org/id3v2.4.0-changes.txt
27
+ http://www.id3.org/id3v2.4.0-structure.txt
28
+ http://www.id3.org/id3v2.4.0-frames.txt
29
+
30
+
31
+ ================================================================================
32
+ ID3V22_HEADER: "ID3" $02 $00 $C0 $7F $7F $7F $7F
33
+
34
+ ID3V22_FRAME_HEADER: "XXX" $SS $SS $SS
35
+
36
+ ID3V22_TEXT_FRAME1: $01 <textstring> ($00 (00))
37
+
38
+ ID3V22_TEXT_FRAME2: <textstring> ($00 (00))
39
+
40
+ ID3V22_TEXT_FRAME3: $01 <textstring> ($00 (00))
41
+ <textstring> ($00 (00))
42
+
43
+ ID3V22_BINARY_FRAME1: <binary data>
44
+
45
+
46
+ ================================================================================
47
+ ID3V23_HEADER: "ID3" $03 $00 $C0 $7F $7F $7F $7F
48
+
49
+ ID3V23_FRAME_HEADER: "XXXX" $SS $SS $SS $SS $FF $FF
50
+
51
+
52
+ ================================================================================
53
+ ID3V24_HEADER: "ID3" $04 $00 $F0 $7F $7F $7F $7F
54
+
55
+ ID3V24_FRAME_HEADER: "XXXX" $7F $7F $7F $7F $FF $FF
56
+
57
+
58
+ ================================================================================
59
+
60
+
@@ -0,0 +1,146 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head>
3
+
4
+
5
+
6
+
7
+
8
+ <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
9
+ <title>Module ID3</title>
10
+
11
+ </head>
12
+ <body><br>
13
+
14
+
15
+
16
+
17
+
18
+
19
+ <br>
20
+
21
+
22
+
23
+
24
+
25
+
26
+ <br>
27
+
28
+
29
+
30
+
31
+
32
+
33
+ <h3>Module ID3</h3>
34
+
35
+
36
+ This module models provides methods, constants and classes to handle
37
+ ID3 version 1.x and version 2.x tags for audio files.
38
+ <P>
39
+
40
+
41
+
42
+
43
+
44
+
45
+ <br>
46
+
47
+
48
+
49
+
50
+
51
+ <h4>
52
+ Provided Functionality:
53
+ </h4>
54
+
55
+
56
+
57
+
58
+
59
+ <ul>
60
+
61
+
62
+
63
+
64
+
65
+
66
+ <li>Reads and parses audio files for ID3-tags</li>
67
+ <li>Writes audio files and attaches ID3-tags to them&nbsp;&nbsp;&nbsp; # not yet implemented<br>
68
+ </li>
69
+
70
+
71
+ <li>Provides both high-level and low-level classes for handling files with ID3-tags<br>
72
+ </li>
73
+ </ul>
74
+
75
+
76
+
77
+
78
+
79
+ <h4><br>
80
+ </h4>
81
+ <h4>Module Constants:</h4>
82
+
83
+ <ul>
84
+
85
+ <li>
86
+ ID3::SUPPORTED_SYMBOLS[version]</li>
87
+ </ul>
88
+
89
+
90
+ <h4>Module Methods:</h4>
91
+
92
+ <ul>
93
+
94
+ <li>ID3.hasID3v1tag?(filename)</li>
95
+ <li>ID3.hasID3v2tag?(filename)</li>
96
+ <li>ID3.hasID3tag?(filename)</li>
97
+ <li>ID3.removeID3v1tag(filename)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
98
+ # ID3v1 tags aren't really very useful - that's why there is a special
99
+ method to remove them<br>
100
+ </li>
101
+ </ul>
102
+
103
+
104
+
105
+
106
+ <h4>Classes:</h4>
107
+
108
+
109
+
110
+
111
+
112
+
113
+ <ul>
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <li><a href="Class_AudioFile.html">ID3::AudioFile</a><br>
122
+ </li><li><a href="Class_Tag1.html">ID3::Tag1</a></li><li><a href="Class_Tag2.html">ID3::Tag2</a></li>
123
+ <li><a href="Class_Frame.html">ID3::Frame</a><br>
124
+ </li>
125
+
126
+
127
+ </ul>
128
+
129
+ <br>
130
+
131
+
132
+
133
+
134
+ <h4>Examples:</h4>
135
+
136
+
137
+
138
+
139
+ <pre> &gt; require 'id3'<br> =&gt; true<br><br> &gt; ID3.hasID3tag?("mp3/a.mp3")<br> =&gt; "1.0 2.3.0"<br><br> &gt; ID3.hasID3tag?("mp3/b.mp3")<br> =&gt; "2.2.0"<br><br> &gt; ID3.hasID3tag?("mp3/c.mp3")<br> =&gt; "1.1"<br><br> &gt; ID3.hasID3tag?("mp3/d.mp3")<br> =&gt; "1.1 2.3.0"<br><br> &gt; `cp mp3/d.mp3 mp3/delete.mp3`<br> =&gt; true<br><br> &gt; ID3.hasID3tag?("mp3/delete.mp3")<br> =&gt; "1.1 2.3.0"<br> &gt; ID3.removeID3v1tag("mp3/delete.mp3")<br> =&gt; true<br> &gt; ID3.hasID3tag?("mp3/delete.mp3")<br> =&gt; "2.3.0"<br><br> &gt; version = ID3.hasID3v2tag?("mp3/b.mp3")<br> =&gt; "2.3.0"<br><br> &gt; ID3::SUPPORTED_SYMBOLS[version].keys<br> =&gt; ["PICTURE", "FILEOWNER", "CONDUCTOR", "EVENTTIMING", "DATE", "CRYPTOREG", "COMMENT", "POPULARIMETER", "GROUPINGREG", "PUBLISHER", "COPYRIGHT", "EQUALIZATION", "NETRADIOSTATION", "ORIGFILENAME", "WWWPUBLISHER", "BUFFERSIZE", "PLAYCOUNTER", "ISRC", "LYRICIST", "RECORDINGDATES", "SIZE", "INVOLVEDPEOPLE", "POSITIONSYNC", "WWWCOMMERCIALINFO", "PLAYLISTDELAY", "ORIGLYRICIST", "ALBUM", "SYNCEDLYRICS", "CONTENTTYPE", "SONGLEN", "MEDIATYPE", "WWWPAYMENT", "REVERB", "COMPOSER", "LINKEDINFO", "CONTENTGROUP", "BPM", "ORIGYEAR", "ORIGARTIST", "UNIQUEFILEID", "USERTEXT", "FILETYPE", "TIME", "PRIVATE", "SUBTITLE", "TERMSOFUSE", "BAND", "WWWCOPYRIGHT", "YEAR", "INITIALKEY", "SYNCEDTEMPO", "PARTINSET", "WWWUSER", "AUDIOCRYPTO", "MPEGLOOKUP", "VOLUMEADJ", "ORIGALBUM", "CDID", "ENCODEDBY", "WWWAUDIOFILE", "COMMERCIAL", "TITLE", "MIXARTIST", "NETRADIOOWNER", "TRACKNUM", "WWWAUDIOSOURCE", "GENERALOBJECT", "WWWRADIOPAGE", "LANGUAGE", "ENCODERSETTINGS", "WWWARTIST", "ARTIST", "UNSYNCEDLYRICS"]<br><br><br><br></pre>
140
+
141
+
142
+
143
+
144
+
145
+
146
+ </body></html>
data/docs/id3.html ADDED
@@ -0,0 +1,245 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head>
3
+ <title>id3.rb - ID3 Library for Ruby</title>
4
+
5
+
6
+
7
+ </head>
8
+ <body><br>
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ <center>
17
+ <h1><font color="#ff0000">Pre-Beta Release</font><br>
18
+ </h1>
19
+ <h1>id3.rb - ID3 Library for Ruby<br><font size="-3">by Tilo Sloboda &lt;tools-NOSPAM@unixgods.org&gt;<br>
20
+ </font></h1>
21
+
22
+ </center>
23
+
24
+
25
+
26
+
27
+
28
+ <h3><font color="#ff0000">Feedback Needed</font></h3>
29
+
30
+
31
+
32
+ Currently I would like to get feedback on the interface, classes, methods provided by the ID3-library.
33
+ <p>
34
+ Please send me <a href="mailto:tools-NOSPAM@unixgods.org">email</a> and let me know what you think..<br>
35
+ </p>
36
+
37
+ <p><br>
38
+ <br>
39
+ </p>
40
+
41
+ <h3>Introduction</h3>
42
+
43
+
44
+
45
+
46
+
47
+
48
+ The aim of this ID3 library for Ruby is to do a full <b>native Ruby
49
+ implementation </b>of ID3 version 1.x and version 2.x , without any use of
50
+ binary libraries, which other implementations need to have installed
51
+ separately.&nbsp;&nbsp;&nbsp; e.g. other implementations just act as a
52
+ wrapper around a binary library - I beleive that this is not as
53
+ portable as a Ruby library should be.<br>
54
+
55
+
56
+
57
+
58
+
59
+ Another aim of this implementation is to provide the user with a
60
+ uniform API, which tries to hide the details of the different ID3 standards,
61
+ therefore making it (hopefully) easier to use.<br>
62
+
63
+ &nbsp;<br>
64
+
65
+
66
+ <h3>Supported Versions</h3>
67
+
68
+
69
+ ID3 v1.0 , v1.1 , v2.2.x , v2.3.x and v2.4.x<br>
70
+
71
+
72
+ <br>
73
+
74
+
75
+
76
+
77
+
78
+ <h3>ID3 Library Overview</h3>
79
+
80
+
81
+
82
+
83
+
84
+ The library provides the <a href="Module_ID3.html">Module ID3</a> , which provides some module methods, as well as three simple classes to the user:&nbsp;&nbsp;
85
+ <a href="Class_AudioFile.html">AudioFile</a>, <a href="Class_Tag1.html">Tag1</a> and <a href="Class_Tag2.html">Tag2</a>, to handle files which contain ID3-tags.<br>
86
+
87
+
88
+
89
+ <br>
90
+
91
+
92
+
93
+ The ID3-standards are overloaded with specially coded frames, which are different for each of the binary frames<font color="#ff0000"><sup>1</sup></font>.This
94
+ library does not attempt to fully decode each and every frame type, but
95
+ rather deals with the main frame types, such as text and web-frames,
96
+ and in case of the binary frames hands the contents of the frames to
97
+ the user verbatim.&nbsp; If the user chooses to modify or write any of
98
+ those binary frames, the user is expected to know what s/he is doing,
99
+ and how to code/de-code the binary contents, otherwise expect:&nbsp;
100
+ "garbage in --&gt; crash!"&nbsp; of the application which tries to make
101
+ sense of such frames later..&nbsp; However, if an ID3-tag contains
102
+ binary frames, the user can expect that those are handed verbatim to
103
+ the user and that it is safe to write them back 'as is' to a
104
+ new/modified ID3-tag of the same audio file. In some cases the user may
105
+ choose to delete some of the binary frames, that should be possible
106
+ without problems.&nbsp;&nbsp; <br>
107
+
108
+
109
+
110
+
111
+
112
+ <br>
113
+
114
+
115
+
116
+
117
+ <h3>Download</h3>
118
+
119
+
120
+ <br>
121
+
122
+
123
+ <br>
124
+
125
+
126
+ <h3>Known Problems</h3>
127
+
128
+
129
+ Some ID3v2 frames may appear more than once in an ID3-tag!&nbsp; e.g.
130
+ TXXX and WXXX. I haven't come across any actual examples for this,
131
+ therefore didn't see the necessity to implement this.&nbsp;&nbsp;
132
+ Currently there is no support for this.&nbsp; If you come across such
133
+ cases, please let me know.. <br>
134
+
135
+
136
+ <br>
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <h3>
144
+
145
+
146
+ Documentation</h3>
147
+
148
+ The main id3.rb documentation is here.<br>
149
+
150
+
151
+ <br>
152
+
153
+
154
+ I complied a comparison between the different <a href="http://www.unixgods.org/%7Etilo/ID3/docs/ID3_comparison.html">ID3-versions</a>, I hope it's helpful.<br>
155
+
156
+
157
+ <br>
158
+
159
+
160
+ <h3>Disclaimer / Author's Rant</h3>
161
+
162
+
163
+ Please feel free to send me "constructive feedback"&nbsp;
164
+ anytime.&nbsp;&nbsp; If you're missing functionality, or you think
165
+ something should be done different, please let me know! I'm always open
166
+ for suggestions. Thank you!<br>
167
+
168
+
169
+ <br>
170
+
171
+
172
+ IMHO the ID3 version2.x standards are pretty pretty messy... they are
173
+ bloated and&nbsp; overloaded with useless frame-types and
174
+ side-effects...&nbsp;&nbsp; The worst is ID3 v2.4.0!&nbsp; I haven't
175
+ seen any actual v2.4.x tags yet, if you have examples, please send them
176
+ to me. I suspect that the reason why I didn't find any v2.4.x tags
177
+ anywhere is because the "2.4.x standard" is just too complicated, so
178
+ nobody is using it..&nbsp; proove me wrong and email examples to me ;-)<br>
179
+
180
+
181
+ <br>
182
+
183
+
184
+ Last not least: Please don't complain about the "quality" of the
185
+ ID3-standard to me.. I'm certainly most sympathetic with your pain, but
186
+ not the right person to complain to.. ;-)<br>
187
+
188
+
189
+
190
+
191
+ <br>
192
+
193
+
194
+
195
+
196
+ <h3>License</h3>
197
+
198
+
199
+
200
+
201
+ Freely available under the terms of the OpenSource "Artistic License" in combination with the Addendum A (below)<br>
202
+
203
+
204
+
205
+
206
+ In case you did not get a copy of the license along with the software,
207
+ it is also available at:&nbsp;&nbsp;
208
+ http://www.unixgods.org/~tilo/artistic-license.html<br>
209
+
210
+
211
+
212
+
213
+ <p>
214
+ <font color="red">
215
+
216
+ Addendum A. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
217
+ DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
218
+ </font></p>
219
+
220
+
221
+
222
+ <p>
223
+ <font color="red">IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
224
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
225
+ LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR USELESS OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
226
+ THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDERS OR OTHER PARTY HAS BEEN ADVISED OF
227
+ THE POSSIBILITY OF SUCH DAMAGES.<br>
228
+ </font></p>
229
+
230
+
231
+
232
+ <p>_________<br><font color="#ff0000">
233
+ 1</font>:&nbsp; who came up with all those special frame types? Cheez! KISS!&nbsp; (Keep It Simple, Stupid!)<br>
234
+
235
+ </p>
236
+
237
+
238
+
239
+ <p>
240
+
241
+ </p>
242
+
243
+
244
+
245
+ </body></html>