[Sync] Sync with trunk. Revision 8256
27
COPYRIGHT
@ -193,6 +193,33 @@ License: GPL-3
|
||||
The full text of the GPL is distributed as in
|
||||
/usr/share/common-licenses/GPL-3 on Debian systems.
|
||||
|
||||
Files: src/calibre/ebooks/unihandecode/pykakasi/*
|
||||
Copyright: 2011, Hiroshi Miura <miurahr@linux.com>
|
||||
Copyright: 1992, Hironobu Takahashi
|
||||
License: GPL-2+
|
||||
The full text of the GPL is distributed as in
|
||||
/usr/share/common-licenses/GPL on Debian systems.
|
||||
|
||||
Files: resources/kanwadict2.db
|
||||
Files: resources/itaijidict2.pickle
|
||||
Copyright: 2011, Hiroshi Miura <miurahr@linux.com>
|
||||
Copyright: 1992 1993 1994, Hironobu Takahashi (takahasi@tiny.or.jp),
|
||||
Copyright: 1992 1993 1994, Masahiko Sato (masahiko@sato.riec.tohoku.ac.jp),
|
||||
Copyright: 1992 1993 1994, Yukiyoshi Kameyama, Miki Inooka, Akihiko Sasaki, Dai Ando, Junichi Okukawa,
|
||||
Copyright: 1992 1993 1994, Katsushi Sato and Nobuhiro Yamagishi
|
||||
License: GPL-2+
|
||||
The full text of the GPL is distributed as in
|
||||
/usr/share/common-licenses/GPL on Debian systems.
|
||||
|
||||
Files: src/calibre/ebooks/unihandecode/*
|
||||
Copyright: 2010-2011, Hiroshi Miura <miurahr@linux.com>
|
||||
Copyright: 2009, John Schember
|
||||
Copyright: 2007, Russell Norris
|
||||
Copyright: 2001, Sean M. Burke
|
||||
License: GPL-3, Perl
|
||||
The full text of the GPL is distributed as in
|
||||
/usr/share/common-licenses/GPL-3 on Debian systems.
|
||||
|
||||
Files: src/encutils/__init__.py
|
||||
Copyright: 2005-2008: Christof Hoeke
|
||||
License: LGPL-3+, CC-BY-3.0
|
||||
|
2277
Changelog.old.yaml
Normal file
2709
Changelog.yaml
513
LICENSE.rtf
@ -1,332 +1,333 @@
|
||||
{\rtf1\ansi\deff1\adeflang1025
|
||||
{\fonttbl{\f0\froman\fprq2\fcharset128 Times New Roman;}{\f1\fnil\fprq0\fcharset128 Times{\*\falt Times New Roman};}{\f2\froman\fprq2\fcharset128 Nimbus Roman No9 L{\*\falt Times New Roman};}{\f3\fnil\fprq0\fcharset128 Times{\*\falt Times New Roman};}{\f4\fnil\fprq0\fcharset128 Helvetica{\*\falt Arial};}{\f5\fmodern\fprq1\fcharset128 Nimbus Mono L{\*\falt Courier New};}{\f6\fswiss\fprq2\fcharset128 DejaVuSans;}{\f7\fnil\fprq2\fcharset128 HG Mincho Light J{\*\falt msmincho};}{\f8\fswiss\fprq0\fcharset128 Tahoma;}}
|
||||
{\fonttbl{\f0\froman\fprq2\fcharset128 Times New Roman;}{\f1\fnil\fprq0\fcharset128 Times{\*\falt Times New Roman};}{\f2\fnil\fprq0\fcharset128 Times{\*\falt Times New Roman};}{\f3\fnil\fprq0\fcharset128 Helvetica{\*\falt Arial};}{\f4\fmodern\fprq1\fcharset128 Nimbus Mono L{\*\falt Courier New};}{\f5\froman\fprq2\fcharset128 Nimbus Roman No9 L{\*\falt Times New Roman};}{\f6\fswiss\fprq2\fcharset128 DejaVuSans;}{\f7\fnil\fprq2\fcharset128 HG Mincho Light J{\*\falt msmincho};}{\f8\fswiss\fprq0\fcharset128 Tahoma;}}
|
||||
{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
|
||||
{\stylesheet{\s1\aspalpha\rtlch\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang9226\loch\fs24\lang9226\snext1 Normal;}
|
||||
{\s2\sb240\sa120\keepn\aspalpha\rtlch\af4\afs28\lang255\ltrch\dbch\af7\langfe255\hich\f4\fs28\lang9226\loch\f4\fs28\lang9226\sbasedon1\snext3 Heading;}
|
||||
{\s3\sa120\aspalpha\rtlch\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang9226\loch\fs24\lang9226\sbasedon1\snext3 Body Text;}
|
||||
{\s4\sa120\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang9226\loch\fs24\lang9226\sbasedon3\snext4 List;}
|
||||
{\s5\sb120\sa120\aspalpha\rtlch\afs24\lang255\ai\ltrch\dbch\af6\langfe255\hich\fs24\lang9226\i\loch\fs24\lang9226\i\sbasedon1\snext5 caption;}
|
||||
{\s6\aspalpha\rtlch\af8\afs24\lang255\ltrch\dbch\af6\langfe255\hich\fs24\lang9226\loch\fs24\lang9226\sbasedon1\snext6 Index;}
|
||||
{\s7\sb120\sa120\aspalpha\rtlch\af8\afs24\lang255\ai\ltrch\dbch\af6\langfe255\hich\fs24\lang9226\i\loch\fs24\lang9226\i\sbasedon1\snext7 caption;}
|
||||
{\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226\sbasedon1\snext8 Preformatted Text;}
|
||||
{\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af1\afs24\lang1081\ltrch\dbch\af6\langfe255\hich\f1\fs24\lang9226\loch\f1\fs24\lang9226\snext1 Normal;}
|
||||
{\s2\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af3\afs28\lang1081\ltrch\dbch\af7\langfe255\hich\f3\fs28\lang9226\loch\f3\fs28\lang9226\sbasedon1\snext3 Heading;}
|
||||
{\s3\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af1\afs24\lang1081\ltrch\dbch\af6\langfe255\hich\f1\fs24\lang9226\loch\f1\fs24\lang9226\sbasedon1\snext3 Body Text;}
|
||||
{\s4\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang1081\ltrch\dbch\af6\langfe255\hich\f1\fs24\lang9226\loch\f1\fs24\lang9226\sbasedon3\snext4 List;}
|
||||
{\s5\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af1\afs24\lang1081\ai\ltrch\dbch\af6\langfe255\hich\f1\fs24\lang9226\i\loch\f1\fs24\lang9226\i\sbasedon1\snext5 caption;}
|
||||
{\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang1081\ltrch\dbch\af6\langfe255\hich\f1\fs24\lang9226\loch\f1\fs24\lang9226\sbasedon1\snext6 Index;}
|
||||
{\s7\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af1\afs24\lang1081\ai\ltrch\dbch\af6\langfe255\hich\f1\fs24\lang9226\i\loch\f1\fs24\lang9226\i\sbasedon1\snext7 caption;}
|
||||
{\s8\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af8\afs24\lang1081\ai\ltrch\dbch\af6\langfe255\hich\f1\fs24\lang9226\i\loch\f1\fs24\lang9226\i\sbasedon1\snext8 WW-caption;}
|
||||
{\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226\sbasedon1\snext9 Preformatted Text;}
|
||||
}
|
||||
{\info{\author carlos luna}{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr2007\mo11\dy5\hr17\min33}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern3100}}\deftab709
|
||||
{\info{\author carlos luna}{\creatim\yr0\mo0\dy0\hr0\min0}{\revtim\yr2007\mo11\dy5\hr17\min33}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern3200}}\deftab709
|
||||
{\*\pgdsctbl
|
||||
{\pgdsc0\pgdscuse195\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}}
|
||||
{\*\pgdscno0}\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
|
||||
\pard\plain \ltrpar\s8\qc\aspalpha\rtlch\af5\afs36\lang255\ab\ltrch\dbch\af5\langfe255\hich\f5\fs36\lang9226\b\loch\f5\fs36\lang9226\b {\rtlch \ltrch\loch\f5\fs36\lang9226\i0\b GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007}
|
||||
\par \pard\plain \ltrpar\s8\qc\aspalpha\rtlch\af5\afs36\lang255\ab\ltrch\dbch\af5\langfe255\hich\f5\fs36\lang9226\b\loch\f5\fs36\lang9226\b
|
||||
\par \pard\plain \ltrpar\s8\qc\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Preamble}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 The GNU General Public License is a free, copyleft license for software and other kinds of works.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program-
|
||||
\pard\plain \ltrpar\s9\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af4\afs28\lang1081\ab\ltrch\dbch\af4\langfe255\hich\f4\fs28\lang9226\b\loch\f4\fs28\lang9226\b {\rtlch \ltrch\loch\f4\fs28\lang9226\i0\b GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007}
|
||||
\par \pard\plain \ltrpar\s9\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af4\afs28\lang1081\ab\ltrch\dbch\af4\langfe255\hich\f4\fs28\lang9226\b\loch\f4\fs28\lang9226\b
|
||||
\par \pard\plain \ltrpar\s9\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Preamble}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 The GNU General Public License is a free, copyleft license for software and other kinds of works.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program-
|
||||
-to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 your programs, too.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 When we speak of free software, we are referring to freedom, 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 them if you wish), that you receive source code o
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 your programs, too.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 When we speak of free software, we are referring to freedom, 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 them if you wish), that you receive source code o
|
||||
r can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect
|
||||
the freedom of others.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them th
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them th
|
||||
ese terms so they know their rights.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Developers that use the GNU GPL protect your rights with two steps:}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be att
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Developers that use the GNU GPL protect your rights with two steps:}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be att
|
||||
ributed erroneously to authors of previous versions.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The
|
||||
systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems ar
|
||||
ise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents appli
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents appli
|
||||
ed to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 The precise terms and conditions for copying, distribution and modification follow.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qc\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 TERMS AND CONDITIONS}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 0. Definitions.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 "This License" refers to version 3 of the GNU General Public License.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the ear
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 The precise terms and conditions for copying, distribution and modification follow.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 TERMS AND CONDITIONS}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 0. Definitions.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 "This License" refers to version 3 of the GNU General Public License.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the ear
|
||||
lier work.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 A "covered work" means either the unmodified Program or a work based on the Program.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 A "covered work" means either the unmodified Program or a work based on the Program.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes
|
||||
copying, distribution (with or without modification), making available to the}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 public, and in some countries other activities as well.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 public, and in some countries other activities as well.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work
|
||||
(except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list
|
||||
meets this criterion.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 1. Source Code.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 1. Source Code.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that
|
||||
language.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the
|
||||
work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of
|
||||
the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not
|
||||
include the work's System Libraries, or general-purpose tools or generally available free}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries
|
||||
and dynamically linked subprograms that the work is specifically designed to require,}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 such as by intimate data communication or control flow between those subprograms and other parts of the work.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 The Corresponding Source for a work in source code form is that same work.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 2. Basic Permissions.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 such as by intimate data communication or control flow between those subprograms and other parts of the work.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 The Corresponding Source for a work in source code form is that same work.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 2. Basic Permissions.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output
|
||||
from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 rights of fair use or other equivalent, as provided by copyright law.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for yo
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 rights of fair use or other equivalent, as provided by copyright law.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for yo
|
||||
u, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 3. Protecting Users' Legal Rights From Anti-Circumvention Law.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 3. Protecting Users' Legal Rights From Anti-Circumvention Law.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention
|
||||
of such measures.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intent
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intent
|
||||
ion to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 4. Conveying Verbatim Copies.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and an
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 4. Conveying Verbatim Copies.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and an
|
||||
y non-permissive terms added in accord with section 7 apply to the code;}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 5. Conveying Modified Source Versions.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 a) The work must carry prominent notices stating that you modified}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 it, and giving a relevant date.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 b) The work must carry prominent notices stating that it is released under this License and any conditions added under section }
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 7. This requirement modifies the requirement in section 4 to "keep intact all notices".}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts,
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 5. Conveying Modified Source Versions.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 a) The work must carry prominent notices stating that you modified}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 it, and giving a relevant date.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 b) The work must carry prominent notices stating that it is released under this License and any conditions added under section }
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 7. This requirement modifies the requirement in section 4 to "keep intact all notices".}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution m
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution m
|
||||
edium, is called an "aggregate" if the compilation and its resulting copyright are not}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 6. Conveying Non-Source Forms.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that prod
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 6. Conveying Non-Source Forms.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that prod
|
||||
uct model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price
|
||||
no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in a
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in a
|
||||
ccord with subsection 6b.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy
|
||||
the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided
|
||||
you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requ
|
||||
irements.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whethe
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whethe
|
||||
r a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the p
|
||||
articular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless s
|
||||
uch uses represent the only significant mode of use of the product.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding So
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding So
|
||||
urce. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient i
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient i
|
||||
n perpetuity or for a fixed term (regardless of how the transaction is characterized), the}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for examp
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for examp
|
||||
le, the work has been installed in ROM).}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been
|
||||
modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special passwo
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special passwo
|
||||
rd or key for unpacking, reading or copying.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 7. Additional Terms.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this L
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 7. Additional Terms.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this L
|
||||
icense, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.)
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.)
|
||||
You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 d) Limiting the use for publicity purposes of names of licensors or authors of the material; or}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions dire
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 d) Limiting the use for publicity purposes of names of licensors or authors of the material; or}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions dire
|
||||
ctly impose on those licensors and authors.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that
|
||||
is a further restriction, you may remove that term. If a license document contains}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 8. Termination.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses grant
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 8. Termination.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses grant
|
||||
ed under the third paragraph of section 11).}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the c
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the c
|
||||
opyright holder fails to notify you of the violation by some reasonable means}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 prior to 60 days after the cessation.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 prior to 60 days after the cessation.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work
|
||||
) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive ne
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive ne
|
||||
w licenses for the same material under section 10.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 9. Acceptance Not Required for Having Copies.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require accept
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 9. Acceptance Not Required for Having Copies.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require accept
|
||||
ance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 10. Automatic Licensing of Downstream Recipients.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 10. Automatic Licensing of Downstream Recipients.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this
|
||||
License.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each pa
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each pa
|
||||
rty to that transaction who receives a copy of the work also receives whatever}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reaso
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reaso
|
||||
nable efforts.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not
|
||||
initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 11. Patents.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its co
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 11. Patents.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its co
|
||||
ntributor version, but do not include claims that would be infringed only as a}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor versio
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor versio
|
||||
n.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" su
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" su
|
||||
ch a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other re
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other re
|
||||
adily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent lice
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent lice
|
||||
nse, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 country that you have reason to believe are valid.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagat
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 country that you have reason to believe are valid.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagat
|
||||
e, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 work and works based on it.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not con
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 work and works based on it.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not con
|
||||
vey a covered work if you are a party to an arrangement with a third party that is}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you,
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you,
|
||||
a discriminatory patent license (a) in connection with copies of the covered work}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March
|
||||
2007.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 12. No Surrender of Others' Freedom.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 If 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 convey a covered work so as to satisfy simultaneo
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 12. No Surrender of Others' Freedom.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 If 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 convey a covered work so as to satisfy simultaneo
|
||||
usly your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you conve
|
||||
y the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 13. Use with the GNU Affero General Public License.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 13. Use with the GNU Affero General Public License.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The
|
||||
terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 combination as such.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 14. Revised Versions of this License.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 The Free Software Foundation may publish revised and/or new versions of the GNU 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.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of t
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 combination as such.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 14. Revised Versions of this License.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 The Free Software Foundation may publish revised and/or new versions of the GNU 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.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of t
|
||||
hat numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 15. Disclaimer of Warranty.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, I
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 15. Disclaimer of Warranty.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, I
|
||||
NCLUDING, 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 PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NE
|
||||
CESSARY SERVICING, REPAIR OR CORRECTION.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 16. Limitation of Liability.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CO
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 16. Limitation of Liability.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CO
|
||||
NSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRA
|
||||
MS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 17. Interpretation of Sections 15 and 16.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\qj\aspalpha\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f2\fs24\lang9226\i0\b0 If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in conne
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 17. Interpretation of Sections 15 and 16.}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0\qj{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs20\lang9226\i0\b0 If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in conne
|
||||
ction with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af2\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f2\fs24\lang9226\loch\f2\fs24\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs24\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs24\lang9226\loch\f5\fs24\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f5\fs24\lang9226\i0\b0\ltrch\hich\f2\loch\f2 END OF TERMS AND CONDITIONS}
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s8\aspalpha\ql\rtlch\af5\afs20\lang255\ltrch\dbch\af5\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226 {\rtlch \ltrch\loch }
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af5\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f5\fs20\lang9226\loch\f5\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226 {\rtlch \ltrch\loch }{\rtlch \ltrch\loch\f4\fs20\lang9226\i0\b0\rtlch\ltrch\hich\f5\loch\f5 END OF TERMS AND CONDITIONS}
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs20\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs20\lang9226\loch\f4\fs20\lang9226
|
||||
\par \pard\plain \ltrpar\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\aspalpha\ql\rtlch\af4\afs22\lang1081\ltrch\dbch\af4\langfe255\hich\f4\fs22\lang9226\loch\f4\fs22\lang9226{\rtlch\ltrch\dbch\hich\fs20\loch\fs20}{\rtlch \ltrch\loch }
|
||||
\par }
|
54
format_docs/compression/palmdoc.txt
Normal file
@ -0,0 +1,54 @@
|
||||
About
|
||||
-----
|
||||
|
||||
PalmDOC uses LZ77 compression techniques. DOC files can contain only compressed
|
||||
text. The format does not allow for any text formatting. This keeps files
|
||||
small, in keeping with the Palm philosophy. However, extensions to the format
|
||||
can use tags, such as HTML or PML, to include formatting within text. These
|
||||
extensions to PalmDoc are not interchangeable and are the basis for most eBook
|
||||
Reader formats on Palm devices.
|
||||
|
||||
LZ77 algorithms achieve compression by replacing portions of the data with
|
||||
references to matching data that has already passed through both encoder and
|
||||
decoder. A match is encoded by a pair of numbers called a length-distance pair,
|
||||
which is equivalent to the statement "each of the next length characters is
|
||||
equal to the character exactly distance characters behind it in the
|
||||
uncompressed stream." (The "distance" is sometimes called the "offset" instead.)
|
||||
|
||||
In the PalmDoc format, a length-distance pair is always encoded by a two-byte
|
||||
sequence. Of the 16 bits that make up these two bytes, 11 bits go to encoding
|
||||
the distance, 3 go to encoding the length, and the remaining two are used to
|
||||
make sure the decoder can identify the first byte as the beginning of such a
|
||||
two-byte sequence.
|
||||
|
||||
PalmDoc combines LZ77 with a simple kind of byte pair compression.
|
||||
|
||||
|
||||
PalmDoc files are decoded as follows:
|
||||
-------------------------------------
|
||||
|
||||
Read a byte from the compressed stream. If the byte is
|
||||
|
||||
0x00: "1 literal" copy that byte unmodified to the decompressed stream.
|
||||
|
||||
0x09 to 0x7f: "1 literal" copy that byte unmodified to the decompressed stream.
|
||||
|
||||
0x01 to 0x08: "literals": the byte is interpreted as a count from 1 to 8, and
|
||||
that many literals are copied unmodified from the compressed stream to the
|
||||
decompressed stream.
|
||||
|
||||
0x80 to 0xbf: "length, distance" pair: the 2 leftmost bits of this byte ('10')
|
||||
are discarded, and the following 6 bits are combined with the 8 bits of the
|
||||
next byte to make a 14 bit "distance, length" item. Those 14 bits are broken
|
||||
into 11 bits of distance backwards from the current location in the
|
||||
uncompressed text, and 3 bits of length to copy from that point
|
||||
(copying n+3 bytes, 3 to 10 bytes).
|
||||
|
||||
0xc0 to 0xff: "byte pair": this byte is decoded into 2 characters: a space
|
||||
character, and a letter formed from this byte XORed with 0x80.
|
||||
|
||||
Repeat from the beginning until there is no more bytes in the compressed file.
|
||||
|
||||
PalmDOC data is always divided into 4096 byte blocks and the blocks are acted
|
||||
upon independently.
|
||||
|
3217
format_docs/compression/zip.txt
Normal file
69
format_docs/pdb/apnx.txt
Normal file
@ -0,0 +1,69 @@
|
||||
APNX
|
||||
----
|
||||
|
||||
apnx files are used by the Amazon Kindle (firmware revision 3.1+) to
|
||||
map pages from a print book to the Kindle version. Integers within
|
||||
the file are big-endian.
|
||||
|
||||
|
||||
Layout
|
||||
------
|
||||
|
||||
bytes content comments
|
||||
|
||||
4 00010001 Format identifier. Value of 65537 little-endian.
|
||||
4 start of next The offset after ending location of the first header.
|
||||
Starts a new sequence of header info
|
||||
4 length Length of first header
|
||||
N first header String containing content header
|
||||
Starts next sequence
|
||||
2 unknown Always 1
|
||||
2 length Length of second header
|
||||
2 page count Total number of bytes after second header that
|
||||
represent pages. This total includes bytes that
|
||||
are ignored by the pageMap.
|
||||
2 unknown Always 32
|
||||
N second header String containing the page mapping header
|
||||
4*N padding The first number given in the page mapping header indicates the number of 0 bytes.
|
||||
4*N page list
|
||||
|
||||
|
||||
Content Header
|
||||
--------------
|
||||
|
||||
The content header is a string enclosed in {} containing key, value pairs.
|
||||
|
||||
content comments
|
||||
|
||||
contentGuid Guid.
|
||||
asin Amazon identifier for the Kindle version of the book.
|
||||
cdeType MOBI cdeType. Should always be EBOK for ebooks.
|
||||
fileRevisionId Revision of this file.
|
||||
|
||||
Example:
|
||||
{"contentGuid":"d8c14b0","asin":"B000JML5VM","cdeType":"EBOK","fileRevisionId":"1296874359405"}
|
||||
|
||||
|
||||
Page Mapping Header
|
||||
-------------------
|
||||
|
||||
The page mapping header is a string enclosed in {} containing key, value pairs.
|
||||
|
||||
content comments
|
||||
|
||||
asin The ISBN 10 for the paper book the pages correspond to
|
||||
pageMap Three value tuple. Looks like: "(N,N,N)"
|
||||
1) Number of bytes after header that starts the page numbering sequence
|
||||
2) unknown
|
||||
3) unknown
|
||||
|
||||
Example:
|
||||
{"asin":"1906694184","pageMap":"(4,a,1)"}
|
||||
|
||||
|
||||
Page List
|
||||
---------
|
||||
|
||||
The page list is a sequence of offsets in the uncompressed HTML. Each
|
||||
value is the beginning of a new page. Each entry is a 4 byte big endian
|
||||
int. The list is ordered lowest to highest.
|
309
format_docs/pdb/ereader.txt
Normal file
@ -0,0 +1,309 @@
|
||||
About
|
||||
-----
|
||||
|
||||
The eReader format has evolved and changed over time. Subsequently, there are
|
||||
multiple versions of the eReader format. There are also two different tools
|
||||
that can create eReader files. The official tools are Makebook and Dropbook.
|
||||
Dropbook is the newer official tool that has replaced Makebook. However,
|
||||
Makebook is still in wide use because it supports a wider range of platforms
|
||||
than Dropbook. Dropbook is a GUI application that only runs on Windows and
|
||||
Apple’s OS X.
|
||||
|
||||
|
||||
PDB Identiy
|
||||
-------
|
||||
|
||||
PNRdPPrs
|
||||
|
||||
|
||||
202 and 132 headers
|
||||
-----------------------------------------
|
||||
|
||||
Older files have a record 0 size of 202 and occasionally 116. Newer files have
|
||||
a record 0 size of 132. As of this writing the 202 files only support text and
|
||||
images. The image format in the 202 files is the same as the 132 files. The 132
|
||||
files support a number of additional features.
|
||||
|
||||
|
||||
Record 0, eReader header (202)
|
||||
------------------
|
||||
|
||||
Note all values are in 2 byte increments. Like values are condensed into a
|
||||
range. The range can be borken into 2 byte sections which represent the actual
|
||||
stored values.
|
||||
|
||||
bytes content comments
|
||||
|
||||
0-2 Version Non-DRM books 2 and 4.
|
||||
2-8 Garbage
|
||||
8-10 Non-Text Offset Start of Non text area (images) will run to the
|
||||
end of the section list.
|
||||
10-14 Unknown
|
||||
14-24 Garbage
|
||||
24-28 Unknown
|
||||
28-98 Garbage
|
||||
98-100 Unknown
|
||||
100-110 Garbage
|
||||
110-114 Unknown
|
||||
114-116 Garbage
|
||||
116-202 Unknown
|
||||
|
||||
* Garbage: Intentially random values.
|
||||
|
||||
|
||||
Text Records (202)
|
||||
------------------
|
||||
|
||||
Text starts with section 1 and continues until the section indicated by the
|
||||
Non-Text Offset. All text records are PalmDoc compressed.
|
||||
|
||||
Each character in the compressed data is xored with 0xA5.
|
||||
|
||||
A decompression example in sudo Python:
|
||||
|
||||
for num in range(1, Non-Text Offset):
|
||||
text += decompress_pamldoc(''.join([chr(ord(x) ^ 0xA5) for x in section_data(num)])).decode('cp1252', 'replace')
|
||||
|
||||
|
||||
Dropbook 132 files
|
||||
------------------
|
||||
|
||||
The following sections apply to the newer Dropbook created files.
|
||||
|
||||
|
||||
Record 0, eReader header (132)
|
||||
----------------------------
|
||||
|
||||
This is only for 132 byte header files created by Dropbook.
|
||||
|
||||
bytes content comments
|
||||
|
||||
0-2 compression Specifies compression and drm. 2 = palmdoc,
|
||||
10 = zlib. 260 and 272 = DRM
|
||||
2-6 unknown Value of 0 is used
|
||||
6-8 encoding Always 25152 (0x6240). All text must be
|
||||
encoded as Latin-1 cp1252
|
||||
8-10 Number of small pages The number of small font pages. If page
|
||||
index is not build in then 0.
|
||||
10-12 Number of large pages The number of large font pages. If page
|
||||
index is not build in then 0.
|
||||
12-14 Non-Text record start The location of the first non text records.
|
||||
record 1 to this value minus 1 are all text
|
||||
records
|
||||
14-16 Number of chapters The number of chapter index records
|
||||
contained in the file
|
||||
16-18 Number of small index The number of small font page index records
|
||||
contained in the file
|
||||
18-20 Number of large index The number of large font page index records
|
||||
contained in the file
|
||||
20-22 Number of images The number of images contained in the file
|
||||
22-24 Number of links The number of links contained in the file
|
||||
24-26 Metadata avaliable Is there a metadata record in the file?
|
||||
0 = None, 1 = There is a metadata record
|
||||
26-28 Unknown Value of 0 is used
|
||||
28-30 Number of Footnotes The number of footnote records in the file
|
||||
30-32 Number of Sidebars The number of sidebar records in the file
|
||||
32-34 Chapter index record start The location of chapter index records. If
|
||||
there are no chapters use the value for the
|
||||
Last data record.
|
||||
34-36 2560 Magic value that must be set to 2560
|
||||
36-38 Small page index start The location of small font page index
|
||||
records. If page table is not built in use
|
||||
the value for the Last data record.
|
||||
38-40 Large page index start The location of large font page index
|
||||
records. If page table is not built in use
|
||||
the value for the Last data record.
|
||||
40-42 Image data record start The location of the first image record. If
|
||||
there are no images use the value for the
|
||||
Last data record.
|
||||
42-44 Links record start The location of the first link index
|
||||
record. If there are no links use the value
|
||||
for the Last data record.
|
||||
44-46 Metadata record start The location of the metadata record. If
|
||||
there is no metadata use the value for the
|
||||
Last data record.
|
||||
46-48 Unknown Value of 0 is used
|
||||
48-50 Footnote record start The location of the first footnote record.
|
||||
If there are no footnotes use the value for
|
||||
the Last data record.
|
||||
50-52 Sidebar record start The location of the first sidebar record.
|
||||
If there are no sidebars use the value for
|
||||
the Last data record.
|
||||
52-54 Last data record The location of the last data record
|
||||
54-132 Unknown Value of 0 is used
|
||||
|
||||
Note: All values are in 2 byte increments. All bytes in the table that have a
|
||||
range larger than 2 can be broken into 2 byte segments and have different
|
||||
values set for each grouping.
|
||||
|
||||
|
||||
Records Order
|
||||
-------------
|
||||
|
||||
Though the order of this sections is described in eReader header,
|
||||
DropBook makes the following order:
|
||||
|
||||
1. eReader Header
|
||||
2. Compressed text
|
||||
3. Small font page index
|
||||
4. Large font page index
|
||||
5. Chapter index
|
||||
6. Links index
|
||||
7. Images
|
||||
8. (Extrapolation: there should be one more record type here though it has
|
||||
not yet been uncovered what it might be).
|
||||
9. Metadata
|
||||
10. Sidebar records
|
||||
11. Footnote records
|
||||
12. Text block size record
|
||||
13. "MeTaInFo\x00" word record
|
||||
|
||||
|
||||
Text Records
|
||||
------------
|
||||
|
||||
All text records use cp1252 encoding (although eReader documents talk about
|
||||
UTF-8 as well). Their total compressed size is unknown however, anything below
|
||||
3560 Bytes is known to work. The text will be either zlib or palmdoc
|
||||
compressed. Use the compression value from the eReader header to determine
|
||||
which. All text utalizes the Palm Markup Language (PML) for formatting.
|
||||
|
||||
Starting with DropBook 1.6.0 text is divided into 8KB (8192 bytes) blocks
|
||||
trimming the end to the closest space character and then being compressed.
|
||||
Earlier version of DropBook 1.5.2 tries to behave the same way, though
|
||||
sometimes it trims the block in unexpected place.
|
||||
|
||||
|
||||
Chapter Index Records
|
||||
---------------------
|
||||
|
||||
Each chapter record corresponds to 1 chapter and points at the place in the
|
||||
book. Chapter record takes a form of 'offset name\x00' First 4 bytes are offset
|
||||
of the original pml file where the chapter index points to (offset of
|
||||
the \x|\X?|\C? tags). Then without a space goes a name of a chapter in chapter
|
||||
index. It should contain only text, all formatting tags should be removed.
|
||||
\U and \a tags are not permitted in chapter name. To maintain sub-chapters
|
||||
4*n spaces (\x20) are added to the beginning of the name, where "n" is level of
|
||||
chapter: 0 for \x tag and N for \CN="" and \XN tags. And then an ending
|
||||
\x00 symbol.
|
||||
|
||||
|
||||
Image Records
|
||||
-------------
|
||||
|
||||
Image records must be smaller than 65505 Bytes. They must also be 8bit PNG
|
||||
images.
|
||||
|
||||
An image record takes the form 'PNG name\x00... image_data'
|
||||
|
||||
bytes content comments
|
||||
|
||||
0-4 PNG There must be a space after PNG.
|
||||
4-36 image name. The image name must be 32 exactly 32 Bytes long. Pad
|
||||
the right side of the name with \x00 characters for
|
||||
names shorter than 32 characters.
|
||||
36-58 Unknown
|
||||
58-60 width Width of an image
|
||||
60-62 height Height of an image
|
||||
62-? The image data raw image data in 8 bit PNG format
|
||||
|
||||
Note: DropBooks seems to change something in png raw data. Like reencoding or
|
||||
something, but plain insertion of png image there still works.
|
||||
|
||||
|
||||
Links Records
|
||||
-------------
|
||||
|
||||
Links records are constructed the same way as chapter ones. Each link anchor
|
||||
record corresponds to 1 link anchor and points at the place in the book. Link
|
||||
record takes a form of 'offset name\x00' First 4 bytes are offset of the
|
||||
original pml file where the link anchor points to (offset of the \Q tag). Then
|
||||
without a space goes a name of a link anchor. It should contain only text, all
|
||||
formatting tags should be removed. \U and \a tags are not permitted in link
|
||||
anchor name. And then an ending \x00 symbol.
|
||||
|
||||
|
||||
Footnote Records
|
||||
----------------
|
||||
|
||||
The first footnote record is a \x00 separated list of footnote ids. All
|
||||
subsequent footnote records are the footnote text corresponding to the id's
|
||||
position in the list. Footnote text is compressed in the same manner as normal
|
||||
text records
|
||||
|
||||
E.G.
|
||||
|
||||
footnote section 1 = 'notice1\x00notice2\x00notice3\x00'
|
||||
footnote section 2 = 'Text for notice 1'
|
||||
footnote section 3 = 'Text for notice 2'
|
||||
footnote section 4 = 'Text for notice 3'
|
||||
|
||||
Starting with Dropbook 1.5.2 first record looks a bit different. It is sequence
|
||||
of \x00\x01 then 1 byte of footnote id length, then footnote id then \x00.
|
||||
|
||||
E.G.
|
||||
|
||||
footnote section 1 = '\x00\x01\x07notice1\x00\x00\x01\x0Afootnote10\x00'
|
||||
|
||||
|
||||
Sidebar Records
|
||||
---------------
|
||||
|
||||
The first sidebar record is a \x00 separated list of sidebar ids. All
|
||||
subsequent sidebar records are the sidebar text corresponding to the id's
|
||||
position in the list. Sidebar text is compressed in the same manner as normal
|
||||
text records
|
||||
|
||||
E.G.
|
||||
|
||||
sidebar section 1 = 'notice1\x00notice2\x00notice3\x00'
|
||||
sidebar section 2 = 'Text for notice 1'
|
||||
sidebar section 3 = 'Text for notice 2'
|
||||
sidebar section 4 = 'Text for notice 3'
|
||||
|
||||
Starting with Dropbook 1.5.2 first record looks a bit different. It is sequence
|
||||
of \x00\x01 then 1 byte of sidebar's id length, then sidebar's id then \x00.
|
||||
|
||||
E.G.
|
||||
|
||||
sidebar section 1 = '\x00\x01\x07notice1\x00\x00\x01\x09sidebar10\x00'
|
||||
|
||||
|
||||
Metadata Record
|
||||
---------------
|
||||
|
||||
\x00 separated list of string.
|
||||
|
||||
Metadata takes the form:
|
||||
|
||||
title\x00
|
||||
author\x00
|
||||
copyright\x00
|
||||
publisher\x00
|
||||
isbn\x00
|
||||
|
||||
E.G.
|
||||
|
||||
Gibraltar Earth\x00Michael McCollum\x001999\x00Sci Fi Arizona\x001929381255\x00
|
||||
|
||||
The metdata record is always followed by a record which contains 'MeTaInFo\x00'
|
||||
|
||||
Note: Starting with DropBook 1.5.2 'MeTaInFo\x00' is not following Metadata
|
||||
Record. It is a separate record that ends the file and there are some more
|
||||
records between Metadata record and 'MeTaInFo\x00' record.
|
||||
|
||||
|
||||
Text Sizes Record
|
||||
-----------------
|
||||
|
||||
There is a special record that contains the initial size of all text blocks
|
||||
before compression. It is just a sequence of 2-byte blocks which are containing
|
||||
the sizes.
|
||||
|
||||
E.G.
|
||||
|
||||
\x1F\xFB\x20\x00\x20\x00\x1F\xFE\x1F\xFD\x09\x46
|
||||
|
||||
Note: By this we can judge that theoretical maximum of initial block size is
|
||||
65535 bytes.
|
||||
|
414
format_docs/pdb/mbp.txt
Normal file
@ -0,0 +1,414 @@
|
||||
// BEGINING OF FILE
|
||||
// NOTES:
|
||||
// 1* Numeric data stored as big endian, 32 bits.
|
||||
// 2* Data padded to 16 bits limits. (Sometimes to 32 bits limits?)
|
||||
// 3* Text stored seems to be an 8 bit encoding padded to 16 bits
|
||||
// (may be "ISO-8859-1"?, or may be just a local machine character set?)
|
||||
// 4* I initially used the term "MARK" where I should have used "HIGHLIGTH",
|
||||
// bear that in mind (it was a bad name election when I started reversing)
|
||||
|
||||
<0x 31 bytes = book_title_PAR + 0x00 PAD if (book_title_PAR < 31) >
|
||||
<0x 00>
|
||||
<0x 00 00 00 00>
|
||||
...4
|
||||
...4
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 00>
|
||||
BPAR
|
||||
MOBI
|
||||
<0x 4 bytes = Next free pointer identifier>
|
||||
// Note: pointer identifiers aren't always consecutive,
|
||||
// so this number is usually bigger than de # of index entries
|
||||
<0x 00 00>
|
||||
<0x 4 bytes = Number of index entries>
|
||||
<0x 4 bytes = Position of BPAR>
|
||||
<0x 00 00 00 00> // BPAR pointer identifier = 0x0
|
||||
|
||||
|
||||
// INDEXES:
|
||||
// Order of Indexes: from the beginning of this MBP file,
|
||||
// forward to the end of the file.
|
||||
// Nevertheless, see these comments for order relative to:
|
||||
// "BEGINING OF USER DATA": order of Data marks.
|
||||
// "FINAL GROUP OF MARKS": order of final marks.
|
||||
[for each {NOTE,MARK,CORRECTION,DRAWING,BOOKMARK,
|
||||
AUTHOR,TITLE,CATEGORY,GENRE,ABSTRACT,COVER,PUBLISHER,
|
||||
...}
|
||||
|| "last DATA"]
|
||||
// Note: Pointer identifiers to DATA's assigned so the number
|
||||
// shrinks as the table grows down.
|
||||
[if NOTE || CORRECTION]
|
||||
<0x 4 bytes = Position of DATA....EBVS>
|
||||
<0x 4 bytes = Pointer identifier, used by BKMK blocks>
|
||||
[fi NOTE || CORRECTION]
|
||||
<0x 4 bytes = Position of DATA>
|
||||
<0x 4 bytes = Pointer identifier, used by BKMK blocks>
|
||||
[if NOTE || CORRECTION]
|
||||
<0x 4 bytes = Position of DATA>
|
||||
<0x 4 bytes = Pointer identifier, used by BKMK blocks>
|
||||
[fi NOTE || CORRECTION]
|
||||
[if MARK || DRAWING || BOOKMARK]
|
||||
<0x 4 bytes = Position of DATA....EBVS>
|
||||
<0x 4 bytes = Pointer identifier, used by BKMK blocks>
|
||||
[fi MARK || DRAWING || BOOKMARK]
|
||||
[if AUTHOR || TITLE || CATEGORY || GENRE || ABSTRACT || COVER || PUBLISHER]
|
||||
<0x 4 bytes = Position of [AUTH || TITL || CATE || GENR || ABST || COVE || PUBL] >
|
||||
<0x 4 bytes = Pointer identifier>
|
||||
[fi AUTHOR || TITLE || CATEGORY || GENRE || ABSTRACT || COVER || PUBLISHER]
|
||||
[if last DATA] // there's always a last piece of DATA (not user data?)
|
||||
<0x 4 bytes = Position of last DATA>
|
||||
<0x 4 bytes = Pointer identifier> // usually <0x 00 00 00 01>
|
||||
[fi last DATA]
|
||||
[next {NOTE,MARK,CORRECTION,DRAWING,BOOKMARK,
|
||||
AUTHOR,TITLE,CATEGORY,GENRE,ABSTRACT,COVER,PUBLISHER,
|
||||
...}
|
||||
|| "last DATA"]
|
||||
|
||||
|
||||
[for each {NOTE,MARK,CORRECTION,DRAWING}]
|
||||
<0x 4 bytes = Position of BKMK>
|
||||
<0x 4 bytes = Pointer identifier>
|
||||
// Note: pointer identifiers for BKMK's are usually the minor
|
||||
// of all the identifiers associated to an annotation. All
|
||||
// other DATA references in INDEXES table associated to this
|
||||
// BKMK, have bigger pointer identifiers.
|
||||
// Note: Pointer identifiers to BKMK's assigned so the number
|
||||
// grows as the table grows down.
|
||||
[next {NOTE,MARK,CORRECTION,DRAWING}]
|
||||
|
||||
|
||||
<0x 2 bytes random PAD>
|
||||
BPAR
|
||||
<0x 4 bytes = size of BPAR block>
|
||||
<0x FF FF FF FF>
|
||||
...4 <-- 'position of last read' related
|
||||
...4 <-- 'position of last read' related
|
||||
...4
|
||||
<0x FF FF FF FF>
|
||||
...4
|
||||
...4
|
||||
...4 <-- 'position of last read' related
|
||||
...(rest of size of BPAR block, if bigger than 0x20)
|
||||
[if (size of BPAR block) mod 32 != 0]
|
||||
<0x FF FF FF FF>
|
||||
[fi]
|
||||
|
||||
// BEGINING OF USER DATA:
|
||||
// Order of {NOTE,MARK,CORRECTION,DRAWING} :
|
||||
// starts with user data at the end of the file,
|
||||
// going backwards to the begining of the file:
|
||||
//--------------------------------------------------------------------
|
||||
[for each {NOTE,MARK,CORRECTION,DRAWING}]
|
||||
//-------------------------------
|
||||
[if NOTE]
|
||||
DATA
|
||||
<0x 4 bytes = size of DATA block>
|
||||
[if EBAR] // this block can appear, or not... ???
|
||||
EBAR
|
||||
...various {4 x byte} ???
|
||||
[fi EBAR]
|
||||
EBVS
|
||||
<0x 00 00 00 03> ???
|
||||
<0x 4 bytes = IDENTIFIER> ???
|
||||
[<0x 00 00 00 01>, or nothing at all] ???
|
||||
<0x 00 00 00 08>
|
||||
<0x FF FF FF FF>
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 10>
|
||||
...(rest of size of DATA block)
|
||||
<0x FD EA = PAD? (ýê)>
|
||||
DATA
|
||||
<0x 4 bytes = size of <marked text (see 3rd note)> >
|
||||
<marked text (see 3rd note)>
|
||||
[if (size of <marked text (see 3rd note)>) mod 4 !=0]
|
||||
<0x random PAD until (size of <marked text (see 3rd note)>) mod 4 ==0>
|
||||
[fi]
|
||||
DATA
|
||||
<0x 4 bytes = size of <note text (see 3rd note)> >
|
||||
<note text (see 3rd note)>
|
||||
[if (size of <note text (see 3rd note)>) mod 4 !=0]
|
||||
<0x random PAD until (size of <note text (see 3rd note)>) mod 4 ==0>
|
||||
[fi]
|
||||
[fi NOTE]
|
||||
//-------------------------------
|
||||
[if MARK || BOOKMARK]
|
||||
DATA
|
||||
<0x 4 bytes = size of <marked text (see 3rd note)> >
|
||||
<marked text (see 3rd note)>
|
||||
[if (size of <marked text (see 3rd note)>) mod 4 !=0]
|
||||
<0x random PAD until (size of <marked text (see 3rd note)>) mod 4 ==0>
|
||||
[fi]
|
||||
DATA
|
||||
<0x 4 bytes = size of DATA block>
|
||||
[if EBAR] // this block can appear, or not... ???
|
||||
EBAR
|
||||
...various {4 x byte} ???
|
||||
[fi EBAR]
|
||||
EBVS
|
||||
<0x 00 00 00 03> ???
|
||||
<0x 4 bytes = IDENTIFIER> ???
|
||||
[<0x 00 00 00 01>, or nothing at all] ???
|
||||
<0x 00 00 00 08>
|
||||
<0x FF FF FF FF>
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 10>
|
||||
...(rest of size of DATA block)
|
||||
<0x FD EA = PAD? (ýê)>
|
||||
[fi MARK || BOOKMARK]
|
||||
//-------------------------------
|
||||
[if CORRECTION]
|
||||
DATA
|
||||
<0x 4 bytes = size of DATA block>
|
||||
[if EBAR] // this block can appear, or not... ???
|
||||
EBAR
|
||||
...various {4 x byte} ???
|
||||
[fi EBAR]
|
||||
EBVS
|
||||
<0x 00 00 00 03> ???
|
||||
<0x 4 bytes = IDENTIFIER> ???
|
||||
[<0x 00 00 00 01>, or nothing at all] ???
|
||||
<0x 00 00 00 08>
|
||||
<0x FF FF FF FF>
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 10>
|
||||
...(rest of size of DATA block)
|
||||
<0x FD EA = PAD? (ýê)>
|
||||
DATA
|
||||
<0x 4 bytes = size of <marked text (see 3rd note)> >
|
||||
<marked text (see 3rd note)>
|
||||
[if (size of <marked text (see 3rd note)>) mod 4 !=0]
|
||||
<0x random PAD until (size of <marked text (see 3rd note)>) mod 4 ==0>
|
||||
[fi]
|
||||
DATA
|
||||
<0x 4 bytes = size of <note text (see 3rd note)> >
|
||||
<note text (see 3rd note)>
|
||||
[if (size of <note text (see 3rd note)>) mod 4 !=0]
|
||||
<0x random PAD until (size of <note text (see 3rd note)>) mod 4 ==0>
|
||||
[fi]
|
||||
[fi CORRECTION]
|
||||
//-------------------------------
|
||||
[if DRAWING]
|
||||
DATA
|
||||
<0x 4 bytes = size of raw data>
|
||||
ADQM
|
||||
// NOTE: bakground color is stored in corresponding BKMK.
|
||||
[begin DRAWING format]
|
||||
...4 = <0x 00 00 00 01> ???
|
||||
<0x 4 bytes = X POSITION OF UPPER LEFT CORNER??? >
|
||||
<0x 4 bytes = Y POSITION OF UPPER LEFT CORNER??? >
|
||||
<0x 4 bytes = X SIZE in pixels >
|
||||
<0x 4 bytes = Y SIZE in pixels >
|
||||
...4 = <0x 00 00 00 00> ???
|
||||
<0x 4 bytes = number of STROKES>
|
||||
[if "number of STROKES" == 0]
|
||||
<0x 00 00 00 00>
|
||||
[end DRAWING format]
|
||||
[fi]
|
||||
[for each STROKE]
|
||||
<0x 00 00 00 01> ???
|
||||
<0x 4 bytes> =
|
||||
Stroke's beginning position in list of coordinates.
|
||||
<0x 4 bytes> =
|
||||
Stroke's ending position in list of coordinates.
|
||||
<0x 00 RR GG BB> = RRGGBB color of stroke.
|
||||
[next STROKE]
|
||||
<0x 4 bytes> = number of coordinate pairs in array of coordinates.
|
||||
// NOTE: each stroke is formed out of at least three
|
||||
// coordinate pairs: begin, {next point}(1-n), end point.
|
||||
[for each COORDINATE]
|
||||
<0x 4 bytes> = X coordinate
|
||||
<0x 4 bytes> = Y coordinate
|
||||
[next COORDINATE]
|
||||
[end DRAWING format]
|
||||
[if (size of <marked text (see 3rd note)>) mod 4 !=0]
|
||||
<0x random PAD until (size of <marked text (see 3rd note)>) mod 4 ==0>
|
||||
[fi]
|
||||
DATA
|
||||
<0x 4 bytes = size of <marked text (see 3rd note)> >
|
||||
<marked text (see 3rd note)>
|
||||
[if (size of <marked text (see 3rd note)>) mod 4 !=0]
|
||||
<0x random PAD until (size of <marked text (see 3rd note)>) mod 4 ==0>
|
||||
[fi]
|
||||
DATA
|
||||
<0x 4 bytes = size of DATA block>
|
||||
[if EBAR] // this block can appear, or not... ???
|
||||
EBAR
|
||||
...various {4 x byte} ???
|
||||
[fi EBAR]
|
||||
EBVS
|
||||
<0x 00 00 00 03>
|
||||
<0x 4 bytes = IDENTIFIER>
|
||||
[<0x 00 00 00 01>, or nothing at all] ???
|
||||
<0x 00 00 00 08>
|
||||
<0x FF FF FF FF>
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 10>
|
||||
...(size of DATA block - 30)
|
||||
<0x FD EA = PAD? (ýê)>
|
||||
[fi DRAWING]
|
||||
//-------------------------------
|
||||
[next {NOTE,MARK,CORRECTION,DRAWING}]
|
||||
|
||||
// AUTHOR (if any)
|
||||
//--------------------------------------------------------------------
|
||||
[if AUTHOR]
|
||||
AUTH
|
||||
<0x 4 bytes = size of AUTHOR block>
|
||||
<text (see 3rd note)>
|
||||
[fi AUTHOR]
|
||||
//--------------------------------------------------------------------
|
||||
// TITLE (if any)
|
||||
//--------------------------------------------------------------------
|
||||
[if TITLE]
|
||||
TITL
|
||||
<0x 4 bytes = size of TITLE block>
|
||||
<text (see 3rd note)>
|
||||
[fi TITLE]
|
||||
//--------------------------------------------------------------------
|
||||
// GENRE (if any)
|
||||
//--------------------------------------------------------------------
|
||||
[if GENRE]
|
||||
GENR
|
||||
<0x 4 bytes = size of GENRE block>
|
||||
<text (see 3rd note)>
|
||||
[fi GENRE]
|
||||
//--------------------------------------------------------------------
|
||||
// ABSTRACT (if any)
|
||||
//--------------------------------------------------------------------
|
||||
[if ABSTRACT]
|
||||
ABST
|
||||
<0x 4 bytes = size of ABSTRACT block>
|
||||
<text (see 3rd note)>
|
||||
[fi ABSTRACT]
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
// FINAL DATA
|
||||
// Note: 'FINAL DATA' can occur anytime between these marks:
|
||||
// AUTHOR,TITLE,CATEGORY,GENRE,ABSTRACT,COVER,PUBLISHER,...
|
||||
//--------------------------------------------------------------------
|
||||
DATA
|
||||
<0x 4 bytes = size of EBVS block>
|
||||
[if EBAR] // this block can appear, or not... ???
|
||||
EBAR
|
||||
...various {4 x byte} ???
|
||||
[fi EBAR]
|
||||
EBVS
|
||||
<0x 00 00 00 03> || <0x 00 00 00 04>
|
||||
<0x 4 bytes || 8 bytes = IDENTIFIER>
|
||||
<0x 00 00 00 08>
|
||||
<0x FF FF FF FF>
|
||||
<0x 00 00 00 00>
|
||||
<0x 00 00 00 10>
|
||||
...(size of EBVS block - 30) :
|
||||
...4 <-- 'position of last read' related
|
||||
...various {4 x byte} ???
|
||||
...4 <-- 'position of last read' related
|
||||
...4
|
||||
...4
|
||||
...4
|
||||
<0x FD EA = PAD? (ýê)>
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
// CATEGORY (if any)
|
||||
//--------------------------------------------------------------------
|
||||
[if CATEGORY]
|
||||
CATE
|
||||
<0x 4 bytes = size of CATEGORY block>
|
||||
<text (see 3rd note)>
|
||||
[fi CATEGORY]
|
||||
//--------------------------------------------------------------------
|
||||
// COVER (if any)
|
||||
//--------------------------------------------------------------------
|
||||
[if COVER]
|
||||
COVE
|
||||
<0x 4 bytes = size of COVER block>
|
||||
<text (see 3rd note)>
|
||||
[fi COVER]
|
||||
//--------------------------------------------------------------------
|
||||
// PUBLISHER (if any)
|
||||
//--------------------------------------------------------------------
|
||||
[if PUBLISHER]
|
||||
PUBL
|
||||
<0x 4 bytes = size of PUBLISHER block>
|
||||
<text (see 3rd note)>
|
||||
[fi PUBLISHER]
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
// FINAL GROUP OF MARKS
|
||||
// Order of {NOTE,MARK,CORRECTION} :
|
||||
// starts with user data at the begining of the file,
|
||||
// going forwards to the end:
|
||||
//--------------------------------------------------------------------
|
||||
[for each {NOTE,MARK,CORRECTION,DRAWING,BOOKMARK}]
|
||||
BKMK
|
||||
<0x 4 bytes = size of BKMK>
|
||||
<0x 4 bytes = TEXT position of the beginning of {NOTE,MARK,CORRECTION,DRAWING,BOOKMARK}>
|
||||
//-------------------------------
|
||||
[if DRAWING]
|
||||
<0x FF FF FF FF>
|
||||
[else]
|
||||
<0x 4 bytes = TEXT position of the end of {NOTE,MARK,CORRECTION,BOOKMARK}>
|
||||
[fi DRAWING]
|
||||
...4
|
||||
...4
|
||||
//-------------------------------
|
||||
[if NOTE]
|
||||
<0x xx xx xx (20)?>, xxxxxx=>RRGGBB color ???
|
||||
<0x 00 00 00 02>
|
||||
[fi NOTE]
|
||||
[if MARK]
|
||||
<0x xx xx xx (0F/00)??>, xxxxxx=>RRGGBB color ???
|
||||
<0x 00 00 00 04>
|
||||
[fi MARK]
|
||||
[if CORRECTION]
|
||||
<0x xx xx xx (6F)?>, xxxxxx=>RRGGBB color ???
|
||||
<0x 00 00 00 02>
|
||||
[fi CORRECTION]
|
||||
[if DRAWING]
|
||||
<0x xx xx xx (0F)?>, xxxxxx=>RRGGBB DRAWING's background color.
|
||||
<0x 00 00 00 08>
|
||||
[fi DRAWING]
|
||||
[if BOOKMARK]
|
||||
<0x xx xx xx 00>
|
||||
<0x 00 00 00 01>
|
||||
[fi BOOKMARK]
|
||||
// this one is a strange type of mark, of yet not identified use:
|
||||
[if UNKNOWN_TYPE_YET_1]
|
||||
<0x xx xx xx 00>
|
||||
<0x 00 00 40 00>
|
||||
[fi UNKNOWN_TYPE_YET_1]
|
||||
|
||||
//-------------------------------
|
||||
[if BOOKMARK || (NOTE "without stored marked text")]
|
||||
<0x FF FF FF FF>
|
||||
[else]
|
||||
<0x 4 bytes = DATA pointer in INDEXES>
|
||||
[fi BOOKMARK]
|
||||
[if DRAWING || MARK]
|
||||
<0x FF FF FF FF>
|
||||
[else]
|
||||
<0x 4 bytes = DATA pointer in INDEXES>
|
||||
[fi]
|
||||
<0x 4 bytes = DATA pointer in INDEXES>
|
||||
[if DRAWING]
|
||||
<0x 4 bytes = DATA pointer in INDEXES>
|
||||
[else]
|
||||
<0x FF FF FF FF>
|
||||
[fi]
|
||||
//-------------------------------
|
||||
<0x FF FF FF FF>
|
||||
<0x FF FF FF FF>
|
||||
[next {NOTE,MARK,CORRECTION,DRAWING,BOOKMARK}]
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
[if length % 32 bit != 0] ???
|
||||
<0x FF FF FF FF>
|
||||
[fi]
|
||||
|
||||
// END OF FILE
|
||||
|
||||
// by idleloop@yahoo.com, v0.2.e, 12/2009
|
||||
// http://www.angelfire.com/ego2/idleloop
|
341
format_docs/pdb/mobi.txt
Normal file
@ -0,0 +1,341 @@
|
||||
from (http://wiki.mobileread.com/wiki/MOBI)
|
||||
|
||||
About
|
||||
-----
|
||||
|
||||
MOBI is the format used by the the MobiPocket Reader. It may have a .mobi
|
||||
extension or it may have a .prc extension. The extension can be changed by the
|
||||
user to either of the accepted forms. In either case it may be DRM protected or
|
||||
non-DRM. The .prc extension is used because the PalmOS doesn't support any file
|
||||
extensions except .prc or .pdb. Note that Mobipocket prohibits their DRM format
|
||||
to be used on dedicated eBook readers that support other DRM formats.
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
MOBI format was originally an extension of the PalmDOC format by adding
|
||||
certain HTML like tags to the data. Many MOBI formatted documents still use
|
||||
this form. However there is also a high compression version of this file format
|
||||
that compresses data to a larger degree in a proprietary manner. There are some
|
||||
third party programs that can read the eBooks in the original MOBI format but
|
||||
there are only a few third party program that can read the eBooks in the new
|
||||
compressed form. The higher compression mode is using a huffman coding scheme
|
||||
that has been called the Huff/cdic algorithm.
|
||||
|
||||
From time to time features have been added to the format so new files may have
|
||||
problems if you try and read them with a down level reader. Currently the
|
||||
source files follow the guidelines in the Open eBook format.
|
||||
|
||||
Note that AZW for the Amazon Kindle is the same format as MOBI except that it
|
||||
uses a slightly different DRM scheme.
|
||||
|
||||
|
||||
Format
|
||||
------
|
||||
|
||||
Like PalmDOC, the Mobipocket file format is that of a standard Palm Database
|
||||
Format file. The header of that format includes the name of the database
|
||||
(usually the book title and sometimes a portion of the authors name) which is
|
||||
up to 31 bytes of data. The files are identified as Creator ID of MOBI and a
|
||||
Type of BOOK.
|
||||
|
||||
|
||||
PalmDOC Header
|
||||
--------------
|
||||
|
||||
The first record in the Palm Database Format gives more information about the
|
||||
Mobipocket file. The first 16 bytes are almost identical to the first sixteen
|
||||
bytes of a PalmDOC format file.
|
||||
|
||||
bytes content comments
|
||||
2 Compression 1 == no compression, 2 = PalmDOC compression,
|
||||
17480 = HUFF/CDIC compression.
|
||||
2 Unused Always zero
|
||||
4 text length Uncompressed length of the entire text of the book
|
||||
2 record count Number of PDB records used for the text of the book.
|
||||
2 record size Maximum size of each record containing text, always
|
||||
4096.
|
||||
4 Current Position Current reading position, as an offset into the
|
||||
uncompressed text
|
||||
|
||||
There are two differences from a Palm DOC file. There's an additional
|
||||
compression type (17480), and the Current Position bytes are used for a
|
||||
different purpose:
|
||||
|
||||
bytes content comments
|
||||
2 Encryption Type 0 == no encryption, 1 = Old Mobipocket Encryption,
|
||||
2 = Mobipocket Encryption.
|
||||
2 Unknown Usually zero
|
||||
|
||||
The old Mobipocket Encryption scheme only allows the file to be registered
|
||||
with one PID, unlike the current encryption scheme that allows multiple PIDs to
|
||||
be used in a single file. Unless specifically mentioned, all the encryption
|
||||
information on this page refers to the current scheme.
|
||||
|
||||
|
||||
MOBI Header
|
||||
-----------
|
||||
|
||||
Most Mobipocket file also have a MOBI header in record 0 that follows these
|
||||
16 bytes, and newer formats also have an EXTH header following the MOBI header,
|
||||
again all in record 0 of the PDB file format.
|
||||
|
||||
The MOBI header is of variable length and is not documented. Some fields have
|
||||
been tentatively identified as follows:
|
||||
|
||||
offset bytes content comments
|
||||
16 4 identifier The characters M O B I
|
||||
20 4 header length The length of the MOBI header, including
|
||||
the previous 4 bytes
|
||||
24 4 Mobi type The kind of Mobipocket file this is
|
||||
2 Mobipocket Book
|
||||
3 PalmDoc Book
|
||||
4 Audio
|
||||
257 News
|
||||
258 News_Feed
|
||||
259 News_Magazine
|
||||
513 PICS
|
||||
514 WORD
|
||||
515 XLS
|
||||
516 PPT
|
||||
517 TEXT
|
||||
518 HTML
|
||||
28 4 text Encoding 1252 = CP1252 (WinLatin1); 65001 = UTF-8
|
||||
32 4 Unique-ID Some kind of unique ID number (random?)
|
||||
36 4 Generator version Potentially the version of the
|
||||
Mobipocket-generation tool. Always >=
|
||||
the value of the "format version" field
|
||||
and <= the version of mobigen used to
|
||||
produce the file.
|
||||
40 40 Reserved All 0xFF. In case of a dictionary, or
|
||||
some newer file formats, a few bytes are
|
||||
used from this range of 40 0xFFs
|
||||
80 4 First Non-book index? First record number (starting with 0)
|
||||
that's not the book's text
|
||||
84 4 Full Name Offset Offset in record 0 (not from start of
|
||||
file) of the full name of the book
|
||||
88 4 Full Name Length Length in bytes of the full name of the
|
||||
book
|
||||
92 4 Language Book language code. Low byte is main
|
||||
language 09= English, next byte is
|
||||
dialect, 08 = British, 04 = US
|
||||
96 4 Input Language Input language for a dictionary
|
||||
100 4 Output Language Output language for a dictionary
|
||||
104 4 Format version Potentially the version of the
|
||||
Mobipocket format used in this file.
|
||||
Always >= 1 and <= the value of the
|
||||
"generator version" field.
|
||||
108 4 First Image record First record number (starting with 0)
|
||||
that contains an image. Image records
|
||||
should be sequential. If there are
|
||||
no images this will be 0xffffffff.
|
||||
112 4 HUFF record Record containing Huff information
|
||||
used in HUFF/CDIC decompression.
|
||||
116 4 HUFF count Number of Huff records.
|
||||
122 4 DATP record Unknown: Records starts with DATP.
|
||||
124 4 DATP count Number of DATP records.
|
||||
128 4 EXTH flags Bitfield. if bit 6, 0x40 is set, then
|
||||
there's an EXTH record
|
||||
The following records are only present if the mobi header is long enough.
|
||||
132 36 ? 32 unknown bytes, if MOBI is long enough
|
||||
168 4 DRM Offset Offset to DRM key info in DRMed files.
|
||||
0xFFFFFFFF if no DRM
|
||||
172 4 DRM Count Number of entries in DRM info.
|
||||
174 4 DRM Size Number of bytes in DRM info.
|
||||
176 4 DRM Flags Some flags concerning the DRM info.
|
||||
180 6 ?
|
||||
186 2 Last Image record Possible vaule with the last image
|
||||
record. If there are no images in the
|
||||
book this will be 0xffff.
|
||||
188 4 ?
|
||||
192 4 FCIS record Unknown. Record starts with FCIS.
|
||||
196 4 ?
|
||||
200 4 FLIS record Unknown. Records starts with FLIS.
|
||||
204 ? ? Bytes to the end of the MOBI header,
|
||||
including the following if the header
|
||||
length >= 228. ( 244 from start of
|
||||
record)
|
||||
242 2 Extra Data Flags A set of binary flags, some of which
|
||||
indicate extra data at the end of each
|
||||
text block. This only seems to be valid
|
||||
for Mobipocket format version 5 and 6
|
||||
(and higher?), when the header length
|
||||
is 228 (0xE4) or 232 (0xE8).
|
||||
|
||||
|
||||
EXTH Header
|
||||
-----------
|
||||
|
||||
If the MOBI header indicates that there's an EXTH header, it follows immediately
|
||||
after the MOBI header. since the MOBI header is of variable length, this isn't
|
||||
at any fixed offset in record 0. Note that some readers will ignore any EXTH
|
||||
header info if the mobipocket version number specified in the MOBI header is 2
|
||||
or less (perhaps 3 or less).
|
||||
|
||||
The EXTH header is also undocumented, so some of this is guesswork.
|
||||
|
||||
bytes content comments
|
||||
4 identifier the characters E X T H
|
||||
4 header length the length of the EXTH header, including the previous 4 bytes
|
||||
4 record Count The number of records in the EXTH header. the rest of the EXTH header consists of repeated EXTH records to the end of the EXTH length.
|
||||
EXTH record start Repeat until done.
|
||||
4 record type Exth Record type. Just a number identifying what's stored in the record
|
||||
4 record length length of EXTH record = L , including the 8 bytes in the type and length fields
|
||||
L-8 record data Data.
|
||||
EXTH record end Repeat until done.
|
||||
|
||||
There are lots of different EXTH Records types. Ones found so far in Mobipocket
|
||||
files are listed here, with possible meanings. Hopefully the table will be
|
||||
filled in as more information comes to light.
|
||||
|
||||
record type usual length name comments
|
||||
1 drm_server_id
|
||||
2 drm_commerce_id
|
||||
3 drm_ebookbase_book_id
|
||||
100 author
|
||||
101 publisher
|
||||
102 imprint
|
||||
103 description
|
||||
104 isbn
|
||||
105 subject
|
||||
106 publishingdate
|
||||
107 review
|
||||
108 contributor
|
||||
109 rights
|
||||
110 subjectcode
|
||||
111 type
|
||||
112 source
|
||||
113 asin
|
||||
114 versionnumber
|
||||
115 sample
|
||||
116 startreading
|
||||
118 retail price (as text)
|
||||
119 retail price currency (as text)
|
||||
201 coveroffset
|
||||
202 thumboffset
|
||||
203 hasfakecover
|
||||
204 204 Unknown
|
||||
205 205 Unknown
|
||||
206 206 Unknown
|
||||
207 207 Unknown
|
||||
208 208 Unknown
|
||||
300 300 Unknown
|
||||
401 clippinglimit
|
||||
402 publisherlimit
|
||||
403 403 Unknown
|
||||
404 404 ttsflag
|
||||
501 4 cdetype PDOC - Personal Doc;
|
||||
EBOK - ebook;
|
||||
502 lastupdatetime
|
||||
503 updatedtitle
|
||||
|
||||
And now, at the end of Record 0 of the PDB file format, we usually get the full
|
||||
file name, the offset of which is given in the MOBI header.
|
||||
|
||||
|
||||
Variable-width integers
|
||||
-----------------------
|
||||
|
||||
Some parts of the Mobipocket format encode data as variable-width integers.
|
||||
These integers are represented big-endian with 7 bits per byte in bits 1-7. They
|
||||
may be either forward-encoded, in which case only the LSB has bit 8 set, or
|
||||
backward-encoded, in which case only the MSB has bit 8 set. For example, the
|
||||
number 0x11111 would be represented forward-encoded as:
|
||||
|
||||
0x04 0x22 0x91
|
||||
|
||||
And backward-encoded as:
|
||||
|
||||
0x84 0x22 0x11
|
||||
|
||||
|
||||
Trailing entries
|
||||
----------------
|
||||
|
||||
The Extra Data Flags field of the MOBI header indicates which, if any, trailing
|
||||
entries are appended to the end of each text record. Each set bit in the field
|
||||
indicates a trailing entry. The entries appear to occur in bit-order; e.g.,
|
||||
trailing entry 1 immediately follows the text content and entry 16 occurs at
|
||||
the very end of the record. The effect and exact details of most of these
|
||||
entries is unknown. The trailing entries indicated by bits 2-16 appear to
|
||||
follow a common format. That format is:
|
||||
|
||||
<data><size>
|
||||
|
||||
Where <size> is the size of the entire trailing entry (including the size of
|
||||
<size>) as a backward-encoded Mobipocket variable-width integer.
|
||||
|
||||
Only a few bits have been identified
|
||||
|
||||
bit Data at end of records
|
||||
0x0001 Multi-byte character overlaps
|
||||
0x0002 Some data to help with indexing
|
||||
0x0004 Some data about uncrossable breaks
|
||||
|
||||
|
||||
Multibyte character overlap
|
||||
---------------------------
|
||||
|
||||
When bit 1 of the Extra Data Flags field is set, each record is followed by a
|
||||
trailing entry containing any extra bytes necessary to complete a multibyte
|
||||
character which crosses the record boundary. The bytes do not participate in
|
||||
compression regardless which compression scheme is used for the file. However,
|
||||
unlike the trailing data bytes, the multibytes (including the count byte) do
|
||||
get included in any encryption. The overlapping bytes then re-appear as normal
|
||||
content at the beginning of the following record. The trailing entry ends with
|
||||
a byte containing a count of the overlapping bytes plus additional flags.
|
||||
|
||||
offset bytes content comments
|
||||
0 0-3 N terminal bytes
|
||||
of a multibyte
|
||||
character
|
||||
N 1 Size & flags bits 1-2 encode N, use of bits 3-8 is unknown
|
||||
|
||||
|
||||
PalmDOC Compression
|
||||
-------------------
|
||||
|
||||
PalmDOC uses LZ77 compression techniques. DOC files can contain only compressed
|
||||
text. The format does not allow for any text formatting. This keeps files small,
|
||||
in keeping with the Palm philosophy. However, extensions to the format can use
|
||||
tags, such as HTML or PML, to include formatting within text. These extensions
|
||||
to PalmDoc are not interchangeable and are the basis for most eBook Reader
|
||||
formats on Palm devices.
|
||||
|
||||
LZ77 algorithms achieve compression by replacing portions of the data with
|
||||
references to matching data that has already passed through both encoder and
|
||||
decoder. A match is encoded by a pair of numbers called a length-distance pair,
|
||||
which is equivalent to the statement "each of the next length characters is
|
||||
equal to the character exactly distance characters behind it in the uncompressed
|
||||
stream." (The "distance" is sometimes called the "offset" instead.)
|
||||
|
||||
In the PalmDoc format, a length-distance pair is always encoded by a two-byte
|
||||
sequence. Of the 16 bits that make up these two bytes, 11 bits go to encoding
|
||||
the distance, 3 go to encoding the length, and the remaining two are used to
|
||||
make sure the decoder can identify the first byte as the beginning of such a
|
||||
two-byte sequence. The exact alforithm needed to decode the compressed text can
|
||||
be found on the PalmDOC page.
|
||||
|
||||
PalmDOC data is always divided into 4096 byte blocks and the blocks are acted
|
||||
upon independently.
|
||||
|
||||
PalmDOC does have support for bookmarks. These pointers are named and refer to
|
||||
an offset location in a file. If the file is edited these locations may no
|
||||
longer refer to the correct locations. Some reading programs allow the user to
|
||||
enter or edit these bookmarks while others treat them as a TOC. Some reading
|
||||
programs may ignore them entirely. They are stored at the end of the file itself
|
||||
so the full file needs to be scanned when loaded to find them.
|
||||
|
||||
|
||||
MBP
|
||||
---
|
||||
|
||||
This is the extension used on a side file (auxiliary) for MOBI formatted eBooks.
|
||||
It is used to store metadata used by the library software and also to store
|
||||
user entered data like bookmarks, annotations, last read position. This file is
|
||||
created automatically by the reader program when the eBook is first opened and
|
||||
has a .mbp extension. The Library management software in MobiPocket uses this
|
||||
file to get information displayed in the library window such as title and author
|
||||
so that it won't have to open the larger eBook file.
|
||||
|
25
format_docs/pdb/palmdoc.txt
Normal file
@ -0,0 +1,25 @@
|
||||
PalmDoc Format
|
||||
--------------
|
||||
|
||||
The format is that of a standard Palm Database Format file. The header of that
|
||||
format includes the name of the database (usually the book title and sometimes
|
||||
a portion of the authors name) which is up to 31 bytes of data. This string of
|
||||
characters is terminated with a 0 in the C style. The files are identified as
|
||||
Creator ID of REAd and a Type of TEXt.
|
||||
|
||||
|
||||
Record 0
|
||||
--------
|
||||
|
||||
The first record in the Palm Database Format gives more information about the
|
||||
PalmDOC file, and contains 16 bytes.
|
||||
|
||||
bytes content comments
|
||||
|
||||
2 Compression 1 == no compression, 2 = PalmDOC compression (see below)
|
||||
2 Unused Always zero
|
||||
4 text length Uncompressed length of the entire text of the book
|
||||
2 record count Number of PDB records used for the text of the book.
|
||||
2 record size Maximum size of each record containing text, always 4096
|
||||
4 Current Position Current reading position, as an offset into the uncompressed text
|
||||
|
104
format_docs/pdb/pdb_format.txt
Normal file
@ -0,0 +1,104 @@
|
||||
Format
|
||||
------
|
||||
|
||||
A PDB file can be borken into multiple parts. The header, record 0 and data.
|
||||
values stored within the various parts are big-endian byte order. The data
|
||||
part is is broken down into multiple sections. The section count and offsets
|
||||
are referened in the PDB header. Sections can be no more than 65505 bytes in
|
||||
length.
|
||||
|
||||
|
||||
Layout
|
||||
------
|
||||
|
||||
PDB files take the format: DB header followed by the record 0 which has
|
||||
contained format specific iformation followed by data.
|
||||
|
||||
DB Header
|
||||
0 Record 0
|
||||
.
|
||||
. Data (borken down into sections)
|
||||
.
|
||||
|
||||
|
||||
Palm Database Header Format
|
||||
|
||||
bytes content comments
|
||||
|
||||
32 name database name. This name is 0 terminated in the
|
||||
field and will be used as the file name on a
|
||||
computer. For eBooks this usually contains the
|
||||
title and may have the author depending on the
|
||||
length available.
|
||||
|
||||
2 attributes bit field.
|
||||
0x0002 Read-Only
|
||||
0x0004 Dirty AppInfoArea
|
||||
0x0008 Backup this database (i.e. no conduit exists)
|
||||
0x0010 (16 decimal) Okay to install newer over
|
||||
existing copy, if present on PalmPilot
|
||||
0x0020 (32 decimal) Force the PalmPilot to reset
|
||||
after this database is installed
|
||||
0x0040 (64 decimal) Don't allow copy of file to be
|
||||
beamed to other Pilot.
|
||||
|
||||
2 version file version
|
||||
|
||||
4 creation date No. of seconds since start of January 1, 1904.
|
||||
|
||||
4 modification date No. of seconds since start of January 1, 1904.
|
||||
|
||||
4 last backup date No. of seconds since start of January 1, 1904.
|
||||
|
||||
4 modificationNumber
|
||||
|
||||
4 appInfoID offset to start of Application Info (if present)
|
||||
or null
|
||||
|
||||
4 sortInfoID offset to start of Sort Info (if present) or null
|
||||
|
||||
4 type See above table. (For Applications this data will
|
||||
be 'appl')
|
||||
|
||||
4 creator See above table. This program will be launched if
|
||||
the file is tapped
|
||||
|
||||
4 uniqueIDseed used internally to identify record
|
||||
|
||||
4 nextRecordListID Only used when in-memory on Palm OS. Always set to
|
||||
zero in stored files.
|
||||
|
||||
2 number of Records number of records in the file - N
|
||||
|
||||
8N record Info List
|
||||
|
||||
start of record
|
||||
info entry Repeat N times to end of record info entry
|
||||
|
||||
4 record Data Offset the offset from the start of the PDB of this record
|
||||
|
||||
1 record Attributes bit field. The least significant four bits are used
|
||||
to represent the category values. These are the
|
||||
categories used to split the databases for viewing
|
||||
on the screen. A few of the 16 categories are
|
||||
pre-defined but the user can add their own. There
|
||||
is an undefined category for use if the user or
|
||||
programmer hasn't set this.
|
||||
0x10 (16 decimal) Secret record bit.
|
||||
0x20 (32 decimal) Record in use (busy bit).
|
||||
0x40 (64 decimal) Dirty record bit.
|
||||
0x80 (128, unsigned decimal) Delete record on
|
||||
next HotSync.
|
||||
|
||||
3 UniqueID The unique ID for this record. Often just a
|
||||
sequential count from 0
|
||||
|
||||
end of record
|
||||
info entry
|
||||
|
||||
2? Gap to data traditionally 2 zero bytes to Info or raw data
|
||||
|
||||
? Records The actual data in the file. AppInfoArea (if
|
||||
present), SortInfoArea (if present) and then
|
||||
records sequentially
|
||||
|
34
format_docs/pdb/pdb_types.txt
Normal file
@ -0,0 +1,34 @@
|
||||
Palm Database File Code
|
||||
-----------------------
|
||||
|
||||
Reader Type Code
|
||||
|
||||
Adobe Reader .pdfADBE
|
||||
PalmDOC TEXtREAd
|
||||
BDicty BVokBDIC
|
||||
DB (Database program) DB99DBOS
|
||||
eReader PNRdPPrs
|
||||
eReader DataPPrs
|
||||
FireViewer (ImageViewer) vIMGView
|
||||
HanDBase PmDBPmDB
|
||||
InfoView InfoINDB
|
||||
iSilo ToGoToGo
|
||||
iSilo 3 SDocSilX
|
||||
JFile JbDbJBas
|
||||
JFile Pro JfDbJFil
|
||||
LIST DATALSdb
|
||||
MobileDB Mdb1Mdb1
|
||||
MobiPocket BOOKMOBI
|
||||
Plucker DataPlkr
|
||||
QuickSheet DataSprd
|
||||
SuperMemo SM01SMem
|
||||
TealDoc TEXtTlDc
|
||||
TealInfo InfoTlIf
|
||||
TealMeal DataTlMl
|
||||
TealPaint DataTlPt
|
||||
ThinkDB dataTDBP
|
||||
Tides TdatTide
|
||||
TomeRaider ToRaTRPW
|
||||
Weasel zTXTGPlm
|
||||
WordSmith BDOCWrdS
|
||||
|
2122
format_docs/pdb/plucker.html
Normal file
936
format_docs/pdb/pml.txt
Normal file
@ -0,0 +1,936 @@
|
||||
Palm Markup Language
|
||||
--------------------
|
||||
|
||||
This page explains how to use the Palm Markup Language (PML) to specify
|
||||
formatting and other information in a text file for later reading using the
|
||||
eReader.
|
||||
|
||||
PML commands start with a backslash, "\", and usually consist of a single
|
||||
character after that. Some PML commands are paired, such as those that specify
|
||||
italicized text. Other commands are directives, such as the "\p", which
|
||||
specifies a page break. PML is not meant to be an industrial-strength markup
|
||||
language, but it is easy to understand, easy to parse, and creates high-quality
|
||||
electronic books.
|
||||
|
||||
Since PML and Palm DropBook are not without flaws, there is a page of Tips and
|
||||
Pitfalls.
|
||||
|
||||
|
||||
Let's Dive Right In
|
||||
-------------------
|
||||
|
||||
palmsample.txt contains examples of formatting text, specifying chapters, etc.
|
||||
Use it to start from, or just as an example when making your own books.
|
||||
|
||||
The following table specifies the Palm Markup Language commands, and what
|
||||
they do.
|
||||
|
||||
\p New page
|
||||
\x New chapter; also causes a new page break.
|
||||
Enclose chapter title (and any style codes)
|
||||
with \x and \x
|
||||
\Xn New chapter, indented n levels (n between 0 and
|
||||
4 inclusive) in the Chapter dialog; doesn't
|
||||
cause a page break. Enclose chapter title (and
|
||||
any style codes) with \Xn and \Xn
|
||||
\Cn="Chapter title" Insert "Chapter title" into the chapter
|
||||
listing, with level n (like \Xn). The text is
|
||||
not shown on the page and does not force a page
|
||||
break. This can sometimes be useful to insert a
|
||||
chapter mark at the beginning of an
|
||||
introduction to the chapter, for example.
|
||||
\c Center this block of text; close with \c on
|
||||
beginning of line
|
||||
\r Right justify text block; close with \r on
|
||||
beginning of line
|
||||
\i Italicize block; close with \i
|
||||
\u Underline block; close with \u
|
||||
\o Overstrike block; close with \o
|
||||
\v Invisible text; close with \v (can be used for
|
||||
comments)
|
||||
\t Indent block. Start at beginning of a line,
|
||||
close with \t at end of a line
|
||||
\T="50%" Indents the specified percentage of the screen
|
||||
width, 50% in this case. If the current drawing
|
||||
position is already past the specified screen
|
||||
location, this tag is ignored.
|
||||
\w="50%" Embed a horizontal rule of a given percentage
|
||||
width of the screen, in this case 50%. This tag
|
||||
causes a line break before and after it. The
|
||||
rule is centered. The percent sign is mandatory.
|
||||
\n Switch to the "normal" font, which is specified
|
||||
by the user
|
||||
\s Switch to stdFont; close with \s to revert to
|
||||
normal font
|
||||
\b Switch to boldFont; close with \b to revert to
|
||||
normal font (deprecated; use \B instead)
|
||||
\l Switch to largeFont; close with \l to revert to
|
||||
normal font
|
||||
\B Mark text as bold. Unlike the \b tag, \B
|
||||
doesn't change the font, so you can have large
|
||||
bold text. You cannot mix \b and \B in the same
|
||||
PML file.
|
||||
\Sp Mark text as superscript. Should not be mixed
|
||||
with other styles such as bold, italic, etc.
|
||||
Enclose superscripted text with \Sp.
|
||||
\Sb Mark text as subscript. Should not be mixed
|
||||
with other styles such as bold, italic, etc.
|
||||
Enclose subscripted text with \Sb.
|
||||
\k Make enclosed text into small-caps; close with
|
||||
\k. Any characters enclosed in \k tags
|
||||
(including those with accents) are made
|
||||
uppercase and are rendered at a smaller point
|
||||
size than a regular uppercase character.
|
||||
\\ Represents a single backslash
|
||||
\aXXX Insert non-ASCII character whose Windows 1252
|
||||
code is decimal XXX. See the PML character
|
||||
table for details.
|
||||
\UXXXX Insert non-ASCII character whose Unicode code
|
||||
is hexidecimal XXXX. See the Extended PML
|
||||
character table for details.
|
||||
\m="imagename.png" Insert the named image. See the section on
|
||||
Images below.
|
||||
\q="#linkanchor"Some text\q Reference a link anchor which is at another
|
||||
spot in the document. The string after the
|
||||
anchor specification and before the trailing\q
|
||||
is underlined or otherwise shown to be a link
|
||||
when viewing the document.
|
||||
\Q="linkanchor" Specify a link anchor in the document.
|
||||
\- Insert a soft hyphen. A soft hyphen shows up
|
||||
only if it is necessary to break a word across
|
||||
a line.
|
||||
\Fn="footnote1"1\Fn Link the "1" to a footnote whose name is
|
||||
footnote1, tagged at the end of the PML
|
||||
document. See the section on Footnotes and
|
||||
Sidebars below.
|
||||
\Sd="sidebar1"Sidebar\Sd Link the "Sidebar" text to a sidebar whose name
|
||||
is sidebar1, tagged at the end of the PML
|
||||
document. See the section on Footnotes and
|
||||
Sidebars below.
|
||||
\I Mark as a reference index item. Enclose index
|
||||
item (and any style codes) with \I and \I. See
|
||||
Creating Dictionaries for more information.
|
||||
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
\pThis is a new page
|
||||
|
||||
\xChapter III\x
|
||||
|
||||
\X1Chapter III, part A\X1
|
||||
|
||||
\p\C="Introduction"The following story is one of my favorites...
|
||||
|
||||
\cProperty of
|
||||
Gateway Senior High School
|
||||
\c
|
||||
|
||||
\rJustify my love
|
||||
\r
|
||||
|
||||
This stuff is \ireally\i cool.
|
||||
|
||||
I just read \uMoby Dick.\u
|
||||
|
||||
This is a \obig\o mistake.
|
||||
|
||||
Copyright 1917\v Date of magazine serialization \v
|
||||
|
||||
\tOnce upon a time
|
||||
there was a wicked queen
|
||||
called Esmerelda.\t
|
||||
|
||||
Mammals:\T="40%"Lions
|
||||
\T="40%"Tigers
|
||||
\T="40%"Bears
|
||||
|
||||
He walked away.
|
||||
\w="80%"
|
||||
Later that day, he ran into an old friend.
|
||||
|
||||
\nIn the normal ways...
|
||||
|
||||
The \stitle page\s should be formatted...
|
||||
|
||||
I just \bcan't\b believe that you...
|
||||
|
||||
This \lREALLY\l is a large tiger...
|
||||
|
||||
This \Bbold\B text can be either \l\Blarge bold\B\l or \s\Bsmall bold\B\s.
|
||||
|
||||
e\Spx + 2\Sp = 9
|
||||
|
||||
C\Sb2\SbH\Sb3\SbO\Sb2\Sb should be used in moderation.
|
||||
|
||||
See also \kanteater\k.
|
||||
|
||||
The DOS prompt said "C:\\windows\\"
|
||||
|
||||
The man said \a147Yeah.\a148
|
||||
|
||||
Arrows can point \U2190 left or right \U2192.
|
||||
|
||||
A Yield sign looks like this: \m="yieldsign.png".
|
||||
|
||||
See the \q="#detailedinstructions"Detailed Instructions\q for how to install your eBook.
|
||||
|
||||
\Q="detailedinstructions"\bDetailed Instructions\b - This section
|
||||
describes how to install an eBook to your handheld device.
|
||||
|
||||
Very long words like anti\-dis\-establish\-ment\-arian\-ism may benefit from
|
||||
the use of soft hyphens.
|
||||
|
||||
The Emerson case\Fn="emerson"[1]\Fn will be very important...
|
||||
|
||||
For more information, see the \Sd="moreinfo"sidebar\Sd.
|
||||
|
||||
\I\Baardvark\B\I \in.\i a large burrowing nocturnal mammal that feeds especially on termites and ants
|
||||
|
||||
|
||||
Footnotes and Sidebars
|
||||
----------------------
|
||||
|
||||
Footnotes and Sidebars are specified with an XML-like syntax at the end of the
|
||||
PML document. For example,
|
||||
|
||||
<sidebar id="sidebar1">
|
||||
Here's some \itext\i for a sidebar.
|
||||
</sidebar>
|
||||
|
||||
would specify the sidebar to be displayed when the user taps on a sidebar link
|
||||
in the text that was specified using the \Sd tag.
|
||||
|
||||
Any text or PML placed after the first footnote or sidebar is ignored as part
|
||||
of the book text.
|
||||
|
||||
Sidebars and footnotes can include most PML features, but there are some PML
|
||||
tags that cannot be used inside of a sidebar or footnote.
|
||||
|
||||
These include
|
||||
Chapters \x, \X, \C
|
||||
Links \q, \Q
|
||||
Footnotes \Fn
|
||||
Sidebars \Sd
|
||||
|
||||
See the palmsample.txt file for examples of how to use many of the PML tags.
|
||||
|
||||
|
||||
Images
|
||||
------
|
||||
|
||||
The following rules are intended to guarantee that images in your eBook will be
|
||||
viewable on all platforms that eReader runs on.
|
||||
|
||||
On low-resolution Palm OS handhelds, an image wider than 158 pixels or taller
|
||||
than 148 pixels will be represented in the text by a thumbnail that the user
|
||||
can tap to view the entire image. Images smaller than 158 x 148 will be
|
||||
presented in-line with the text.
|
||||
|
||||
On high-resolution Palm OS handhelds (those having screens of 320x320 pixels or
|
||||
more), images smaller than 158 by 148 pixels will be pixel-doubled. Images
|
||||
larger than 158x148 may be shown in-line with the text, if they will fit on
|
||||
the screen.
|
||||
|
||||
On non-Palm OS platforms, small images will be scaled up appropriately. Large
|
||||
images will be scaled down to fit on the page; in this case the user can tap on
|
||||
the image to view the entire image and zoom in or out.
|
||||
|
||||
For DropBook to find the image, it must be present in a directory whose name
|
||||
matches that of the PML text file. For example, if "pmlsample.txt" contains a
|
||||
reference to an image called "intro.png", then there must be a directory called
|
||||
"pmlsample_img" that contains intro.png. The directory's name is the name of
|
||||
the PML file (without the .txt extension) with "_img" appended.
|
||||
|
||||
Images must be in PNG format and cannot be filtered or interlaced. Image depth
|
||||
must be 8 bits or less. Any color table may be used for color images.
|
||||
|
||||
Image files must be less than or equal to 65505 bytes in size, since they are
|
||||
embedded into the .pdb format of the book; Palm database records are limited to
|
||||
65505 bytes in length. Since images are compressed, the actual image displayed
|
||||
by the reader may be much larger than 64K.
|
||||
|
||||
Any or all of these restrictions may eventually be removed.
|
||||
|
||||
|
||||
Adding a Title, Cover Art, and Other Meta-information to Your eBook
|
||||
-------------------------------------------------------------------
|
||||
|
||||
DropBook normally presents a dialog in which the title and other information
|
||||
for the eBook may be specified. This information may be embedded in the PML
|
||||
file instead.
|
||||
|
||||
To specify the eBook title as it will appear in the Open dialog on the
|
||||
handheld, place a block of invisible comment text at the beginning of the file
|
||||
using \v tags. Inside this comment block, put the string TITLE="My eBook",
|
||||
where "My eBook" is replaced with the name of your eBook. It should look
|
||||
something like this:
|
||||
|
||||
\vTITLE="Palm Sample Document"\v
|
||||
|
||||
You can also specify the author using the AUTHOR meta-tag, the publisher with
|
||||
PUBLISHER, copyright information with COPYRIGHT, and the eBook ISBN with EISBN.
|
||||
A fully-specified set of meta-information might appear in PML as:
|
||||
|
||||
\vTITLE="Palm Sample Document" AUTHOR="Sam Morgenstern" PUBLISHER="eReader.com"
|
||||
EISBN="X-XXXX-XXXX" COPYRIGHT="Copyright \a169 2004 by Sam Morgenstern"\v
|
||||
|
||||
Cover art: If an image named "cover.png" is present in the eBook, it is assumed
|
||||
to be the cover art for the eBook. See the rules for images for sizing and
|
||||
other information.
|
||||
|
||||
Some or all of this information may appear in the book information dialog in
|
||||
eReader, and may be used for other purposes in future products.
|
||||
|
||||
|
||||
Creating Dictionaries
|
||||
---------------------
|
||||
|
||||
The \I PML tag is used to delimit an index item. Example: \Iaardvark\I
|
||||
|
||||
Each entry must start in the normal font. If DropBook shows an error beginning
|
||||
with "No styles permitted before...", there is probably a missing end style tag
|
||||
before the text shown in the error message.
|
||||
|
||||
Links, chapters and other PML structures are not permitted in dictionaries.
|
||||
Images, however, are.
|
||||
|
||||
A special dictionary entry, "(Front matter)" is shown before other entries in
|
||||
the list of entries, and should be used to include pronunciation symbols and
|
||||
other front matter.
|
||||
|
||||
Note that use of dictionaries requires eReader Pro.
|
||||
|
||||
|
||||
Tips and Pitfalls
|
||||
-----------------
|
||||
|
||||
This page explains some common mistakes, some bugs in DropBook and/or the
|
||||
eReader, and some techniques that will allow you to create quality electronic
|
||||
books for the eReader.
|
||||
|
||||
* Check out the Converting to Palm eBooks page for some pointers on
|
||||
converting text from various formats into the Palm Markup Language.
|
||||
* Use a return at the end of each paragraph, not each line.
|
||||
* Using an extra return between paragraphs reads easier than paragraph
|
||||
indentation.
|
||||
* The eReader doesn't display empty lines at the top of a page. If you need
|
||||
to have some "empty" lines at the top of a page, put a space on each line.
|
||||
* Don't use tables if you can possibly avoid it.
|
||||
|
||||
None of the fonts that the eReader supports are monospaced, so tables can
|
||||
be difficult to represent. Break out the information in another way, or
|
||||
use the \T tag, but beware of tables that look great on a Palm OS
|
||||
handheld but not on a Pocket PC or vice versa.
|
||||
|
||||
* The Reader breaks lines on spaces, dashes or underscores. This has
|
||||
several implications.
|
||||
|
||||
1. Don't fill more than a line with spaces, dashes or underscores.
|
||||
There's a bug (which will be fixed in a future release) which
|
||||
causes MakeBook to hang on such a line. Note that in the large
|
||||
font, the number of spaces, dashes or underscores will be much
|
||||
smaller than in the small font.
|
||||
2. A string such as He shouted "Wait!--" may place the last quote on
|
||||
the beginning of a line, since the line would break after the
|
||||
second dash. Prevent this by using the PML string: He shouted
|
||||
"Wait!\a150\a150". The non-breaking dash, code 150, will not break
|
||||
a line. Use \a160 for a non-breaking space. Even better: use \a151,
|
||||
a long dash, instead of two short dashes.
|
||||
|
||||
* The justification codes \c and \r (center and right justification) must
|
||||
have closing codes on the beginning of the line following the justified
|
||||
text.
|
||||
* The indentation tag \t must have a closing tag at the end of a line of
|
||||
the indented text.
|
||||
* Use \s (small font) in the title page(s) of books to force the page(s) to
|
||||
format nicely. Other than that, \n, \s and \l should rarely be necessary;
|
||||
the font size used for most text display should be chosen by the user.
|
||||
|
||||
|
||||
Converting Uncommon Characters to PML
|
||||
-------------------------------------
|
||||
|
||||
Use this chart to convert uncommon characters to their Palm Markup Language
|
||||
(PML) equivalent. Most characters are simply represented as themselves in PML
|
||||
and don't require this chart. But some uncommon characters can only be
|
||||
represented in PML by their "\aXXX" syntax. Use this chart to look up that
|
||||
"\aXXX" syntax.
|
||||
|
||||
For Example, if you wanted to write the following phrase in PML:
|
||||
|
||||
Copyright © 1999 by Samuel Morgenstern
|
||||
|
||||
In PML, you would write it as:
|
||||
|
||||
Copyright \a169 1999 by Samuel Morgenstern
|
||||
|
||||
Char HTML # Code HTML Char Code PML Char Code Description
|
||||
|
||||
  - Normal space
|
||||
! ! - ! Exclamation
|
||||
" " " " Double quote
|
||||
# # - # Hash
|
||||
$ $ - $ Dollar
|
||||
% % - % Percent
|
||||
& & & & Ampersand
|
||||
' ' - ' Apostrophe
|
||||
( ( - ( Open bracket
|
||||
) ) - ) Close bracket
|
||||
* * - * Asterisk
|
||||
+ + - + Plus sign
|
||||
, , - , Comma
|
||||
- - - - Minus sign
|
||||
. . - . Period
|
||||
/ / - / Forward slash
|
||||
0 0 - 0 Digit 0
|
||||
1 1 - 1 Digit 1
|
||||
2 2 - 2 Digit 2
|
||||
3 3 - 3 Digit 3
|
||||
4 4 - 4 Digit 4
|
||||
5 5 - 5 Digit 5
|
||||
6 6 - 6 Digit 6
|
||||
7 7 - 7 Digit 7
|
||||
8 8 - 8 Digit 8
|
||||
9 9 - 9 Digit 9
|
||||
: : - : Colon
|
||||
; ; - ; Semicolon
|
||||
< < < Less than
|
||||
= = - = Equals
|
||||
> > > Greater than
|
||||
? ? - ? Question mark
|
||||
@ @ - @ At sign
|
||||
A A - A A
|
||||
B B - B B
|
||||
C C - C C
|
||||
D D - D D
|
||||
E E - E E
|
||||
F F - F F
|
||||
G G - G G
|
||||
H H - H H
|
||||
I I - I I
|
||||
J J - J J
|
||||
K K - K K
|
||||
L L - L L
|
||||
M M - M M
|
||||
N N - N N
|
||||
O O - O O
|
||||
P P - P P
|
||||
Q Q - Q Q
|
||||
R R - R R
|
||||
S S - S S
|
||||
T T - T T
|
||||
U U - U U
|
||||
V V - V V
|
||||
W W - W W
|
||||
X X - X X
|
||||
Y Y - Y Y
|
||||
Z Z - Z Z
|
||||
[ [ - [ Open square bracket
|
||||
\ \ - \\ Backslash
|
||||
] ] - ] Close square bracket
|
||||
^ ^ - ^ Caret
|
||||
_ _ - _ Underscore
|
||||
` ` - ` Grave accent
|
||||
a a - a a
|
||||
b b - b b
|
||||
c c - c c
|
||||
d d - d d
|
||||
e e - e e
|
||||
f f - f f
|
||||
g g - g g
|
||||
h h - h h
|
||||
i i - i i
|
||||
j j - j j
|
||||
k k - k k
|
||||
l l - l l
|
||||
m m - m m
|
||||
n n - n n
|
||||
o o - o o
|
||||
p p - p p
|
||||
q q - q q
|
||||
r r - r r
|
||||
s s - s s
|
||||
t t - t t
|
||||
u u - u u
|
||||
v v - v v
|
||||
w w - w w
|
||||
x x - x x
|
||||
y y - y y
|
||||
z z - z z
|
||||
{ { - { Left brace
|
||||
| | - | Vertical bar
|
||||
} } - } Right brace
|
||||
~ ~ - ~ Tilde
|
||||
|
||||
  \a160 Non-breaking space
|
||||
¡ ¡ \a161 Inverted exclamation
|
||||
¢ ¢ \a162 Cent sign
|
||||
£ £ \a163 Pound sign
|
||||
¤ ¤ \a164 Currency sign
|
||||
¥ ¥ \a165 Yen sign
|
||||
¦ ¦ \a166 Broken bar
|
||||
§ § \a167 Section sign
|
||||
¨ ¨ \a168 Umlaut or diaeresis
|
||||
© © \a169 Copyright sign
|
||||
ª ª \a170 Feminine ordinal
|
||||
« « \a171 Left angle quotes
|
||||
¬ ¬ \a172 Logical not sign
|
||||
­ ­ \a173 Soft hyphen
|
||||
® ® \a174 Registered trademark
|
||||
¯ ¯ \a175 Spacing macron
|
||||
° ° \a176 Degree sign
|
||||
± ± \a177 Plus-minus sign
|
||||
² ² \a178 Superscript 2
|
||||
³ ³ \a179 Superscript 3
|
||||
´ ´ \a180 Spacing acute
|
||||
µ µ \a181 Micro sign
|
||||
¶ ¶ \a182 Paragraph sign
|
||||
· · \a183 Middle dot
|
||||
¸ ¸ \a184 Spacing cedilla
|
||||
¹ ¹ \a185 Superscript 1
|
||||
º º \a186 Masculine ordinal
|
||||
» » \a187 Right angle quotes
|
||||
¼ ¼ \a188 One quarter
|
||||
½ ½ \a189 One half
|
||||
¾ ¾ \a190 Three quarters
|
||||
¿ ¿ \a191 Inverted question mark
|
||||
À À \a192 A grave
|
||||
Á Á \a193 A acute
|
||||
  \a194 A circumflex
|
||||
à à \a195 A tilde
|
||||
Ä Ä \a196 A diaeresis
|
||||
Å Å \a197 A ring
|
||||
Æ &Aelig; \a198 AE ligature
|
||||
Ç Ç \a199 C cedilla
|
||||
È È \a200 E grave
|
||||
É É \a201 E acute
|
||||
Ê Ê \a202 E circumflex
|
||||
Ë Ë \a203 E diaeresis
|
||||
Ì Ì \a204 I grave
|
||||
Í Í \a205 I acute
|
||||
Î Î \a206 I circumflex
|
||||
Ï Ï \a207 I diaeresis
|
||||
Ð Ð \a208 Eth
|
||||
Ñ Ñ \a209 N tilde
|
||||
Ò Ò \a210 O grave
|
||||
Ó Ó \a211 O acute
|
||||
Ô Ô \a212 O circumflex
|
||||
Õ Õ \a213 O tilde
|
||||
Ö Ö \a214 O diaeresis
|
||||
× × \a215 Multiplication sign
|
||||
Ø Ø \a216 O slash
|
||||
Ù Ù \a217 U grave
|
||||
Ú Ú \a218 U acute
|
||||
Û Û \a219 U circumflex
|
||||
Ü Ü \a220 U diaeresis
|
||||
Ý Ý \a221 Y acute
|
||||
Þ Þ \a222 THORN
|
||||
ß ß \a223 sharp s
|
||||
à à \a224 a grave
|
||||
á á \a225 a acute
|
||||
â â \a226 a circumflex
|
||||
ã ã \a227 a tilde
|
||||
ä ä \a228 a diaeresis
|
||||
å å \a229 a ring
|
||||
æ æ \a230 ae ligature
|
||||
ç ç \a231 c cedilla
|
||||
è è \a232 e grave
|
||||
é é \a233 e acute
|
||||
ê ê \a234 e circumflex
|
||||
ë ë \a235 e diaeresis
|
||||
ì ì \a236 i grave
|
||||
í í \a237 i acute
|
||||
î î \a238 i circumflex
|
||||
ï ï \a239 i diaeresis
|
||||
ð ð \a240 eth
|
||||
ñ ñ \a241 n tilde
|
||||
ò ò \a242 o grave
|
||||
ó ó \a243 o acute
|
||||
ô ô \a244 o circumflex
|
||||
õ õ \a245 o tilde
|
||||
ö ö \a246 o diaeresis
|
||||
÷ ÷ \a247 division sign
|
||||
ø ø \a248 o slash
|
||||
ù ù \a249 u grave
|
||||
ú ú \a250 u acute
|
||||
û û \a251 u circumflex
|
||||
ü ü \a252 u diaeresis
|
||||
ý ý \a253 y acute
|
||||
þ þ \a254 thorn
|
||||
ÿ ÿ \a255 y diaeresis
|
||||
, ‚ ‚ \a130 single low quote
|
||||
ƒ ƒ \a131 Scripted f
|
||||
„ „ \a132 low quote
|
||||
… … \a133 Ellipsis
|
||||
† † \a134 Dagger
|
||||
‡ &Dagger \a135 Double dagger
|
||||
Š Š \a138 Large S w/inverted caret
|
||||
< ‹ ‹ \a139 single left angle quote
|
||||
Œ Œ \a140 Large combined oe
|
||||
‘ ‘ \a145 Open single smart quote
|
||||
’ ’ \a146 Close single smart quote
|
||||
“ “ \a147 Open double smart quote
|
||||
” ” \a148 Close double smart quote
|
||||
• • \a149 Bullet
|
||||
– – \a150 Small dash (en dash)
|
||||
— — \a151 Large dash (em dash)
|
||||
™ ™ \a153 Trademark
|
||||
š š \a154 Small S w/inverted caret
|
||||
> › › \a155 single right angle quote
|
||||
œ œ \a156 Small combined oe
|
||||
Ÿ Ÿ \a159 Large Y with diaeresis
|
||||
|
||||
|
||||
Extended Character Set
|
||||
----------------------
|
||||
|
||||
In addition to the special characters supported by earlier versions of eReader
|
||||
(which can be accessed using the \a### tag), all versions of eReader Pro and
|
||||
eReader version 2.4 and later include support for additional special characters
|
||||
and symbols. These symbols can be accessed using the \U#### tag, where #### are
|
||||
four hexidecimal digits giving the Unicode encoding of the special character.
|
||||
|
||||
Only the limited subset of Unicode characters given in the table below are
|
||||
supported. In addition, some of the characters that are included in the table
|
||||
are not present in eReader Pro versions prior to 2.4. To ensure that the
|
||||
characters are displayed correctly, books using these tags should be read using
|
||||
eReader or eReader Pro version 2.4 or later.
|
||||
|
||||
On Palm OS handhelds these special symbols are only available in one size,
|
||||
matching the "Small" font. For best results on Palm OS handhelds the \U tag
|
||||
should only be used inside blocks set to the "Small" font by way of \s tags.
|
||||
On Palm OS handhelds these special characters are not affected by the font tags
|
||||
(\s, \l, \b and \n), the bold style tag (\B), or the small caps style tag (\k).
|
||||
|
||||
If the \U characters are not showing up correctly using eReader on your Windows
|
||||
desktop or laptop this problem is a result of the fonts for eReader not being
|
||||
installed properly. The solution is to go to the directory C:\Windows\Fonts\
|
||||
and "double click" on each font that starts with "Maynard". This will open each
|
||||
font and allow the system to register it. Close the windows that were opened a
|
||||
result of the mouse clicks and the problem should be resolved.
|
||||
|
||||
Char HTML Code PML Code Description
|
||||
|
||||
Latin Extended-A
|
||||
Ā Ā \U0100 LATIN CAPITAL LETTER A WITH MACRON
|
||||
ā ā \U0101 LATIN SMALL LETTER A WITH MACRON
|
||||
Ă Ă \U0102 LATIN CAPITAL LETTER A WITH BREVE
|
||||
ă ă \U0103 LATIN SMALL LETTER A WITH BREVE
|
||||
ą ą \U0105 LATIN SMALL LETTER A WITH OGONEK
|
||||
ć ć \U0107 LATIN SMALL LETTER C WITH ACUTE
|
||||
Č Č \U010C LATIN CAPITAL LETTER C WITH CARON
|
||||
č č \U010D LATIN SMALL LETTER C WITH CARON
|
||||
Ē Ē \U0112 LATIN CAPITAL LETTER E WITH MACRON
|
||||
ē ē \U0113 LATIN SMALL LETTER E WITH MACRON
|
||||
ĕ ĕ \U0115 LATIN SMALL LETTER E WITH BREVE
|
||||
ė ė \U0117 LATIN SMALL LETTER E WITH DOT ABOVE
|
||||
ę ę \U0119 LATIN SMALL LETTER E WITH OGONEK
|
||||
ě ě \U011B LATIN SMALL LETTER E WITH CARON
|
||||
ĝ ĝ \U011D LATIN SMALL LETTER G WITH CIRCUMFLEX
|
||||
ğ ğ \U011F LATIN SMALL LETTER G WITH BREVE
|
||||
Ī Ī \U012A LATIN CAPITAL LETTER I WITH MACRON
|
||||
ī ī \U012B LATIN SMALL LETTER I WITH MACRON
|
||||
ĭ ĭ \U012D LATIN SMALL LETTER I WITH BREVE
|
||||
į į \U012F LATIN SMALL LETTER I WITH OGONEK
|
||||
ı ı \U0131 LATIN SMALL LETTER DOTLESS I
|
||||
Ł Ł \U0141 LATIN CAPITAL LETTER L WITH STROKE
|
||||
ł ł \U0142 LATIN SMALL LETTER L WITH STROKE
|
||||
ń ń \U0144 LATIN SMALL LETTER N WITH ACUTE
|
||||
ň ň \U0148 LATIN SMALL LETTER N WITH CARON
|
||||
ŋ ŋ \U014B LATIN SMALL LETTER ENG
|
||||
Ō Ō \U014C LATIN CAPITAL LETTER O WITH MACRON
|
||||
ō ō \U014D LATIN SMALL LETTER O WITH MACRON
|
||||
ŏ ŏ \U014F LATIN SMALL LETTER O WITH BREVE
|
||||
ő ő \U0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
|
||||
ŕ ŕ \U0155 LATIN SMALL LETTER R WITH ACUTE
|
||||
ř ř \U0159 LATIN SMALL LETTER R WITH CARON
|
||||
Ś Ś \U015A LATIN CAPITAL LETTER S WITH ACUTE
|
||||
ś ś \U015B LATIN SMALL LETTER S WITH ACUTE
|
||||
ş ş \U015F LATIN SMALL LETTER S WITH CEDILLA
|
||||
ţ ţ \U0163 LATIN SMALL LETTER T WITH CEDILLA
|
||||
ũ ũ \U0169 LATIN SMALL LETTER U WITH TILDE
|
||||
ū ū \U016B LATIN SMALL LETTER U WITH MACRON
|
||||
ŭ ŭ \U016D LATIN SMALL LETTER U WITH BREVE
|
||||
ŷ ŷ \U0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX
|
||||
ź ź \U017A LATIN SMALL LETTER Z WITH ACUTE
|
||||
Ž Ž \U017D LATIN CAPITAL LETTER Z WITH CARON
|
||||
ž ž \U017E LATIN SMALL LETTER Z WITH CARON
|
||||
Latin Extended-B
|
||||
ƿ \U01BF LATIN LETTER WYNN
|
||||
ǎ \U01CE LATIN SMALL LETTER A WITH CARON
|
||||
ǐ \U01D0 LATIN SMALL LETTER I WITH CARON
|
||||
ǒ \U01D2 LATIN SMALL LETTER O WITH CARON
|
||||
ǔ \U01D4 LATIN SMALL LETTER U WITH CARON
|
||||
ǡ \U01E1 LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
|
||||
ǣ \U01E3 LATIN SMALL LETTER AE WITH MACRON
|
||||
ǧ \U01E7 LATIN SMALL LETTER G WITH CARON
|
||||
ǫ \U01EB LATIN SMALL LETTER O WITH OGONEK
|
||||
ǰ \U01F0 LATIN SMALL LETTER J WITH CARON
|
||||
ȇ \U0207 LATIN SMALL LETTER E WITH INVERTED BREVE
|
||||
ȝ \U021D LATIN SMALL LETTER YOGH
|
||||
ȧ \U0227 LATIN SMALL LETTER A WITH DOT ABOVE
|
||||
ȯ \U022F LATIN SMALL LETTER O WITH DOT ABOVE
|
||||
ȳ \U0233 LATIN SMALL LETTER Y WITH MACRON
|
||||
IPA Extensions
|
||||
ɑ \U0251 LATIN SMALL LETTER SCRIPT A
|
||||
ɒ \U0252 LATIN SMALL LETTER TURNED SCRIPT A
|
||||
ɔ \U0254 LATIN SMALL LETTER OPEN O
|
||||
ə \U0259 LATIN SMALL LETTER SCHWA
|
||||
ɜ \U025C LATIN SMALL LETTER REVERSED OPEN E
|
||||
ɥ \U0265 LATIN LETTER SMALL LETTER TURNED H
|
||||
ɪ \U026A LATIN LETTER SMALL CAPITAL I
|
||||
ɲ \U0272 LATIN SMALL LETTER N WITH LEFT HOOK
|
||||
ʃ \U0283 LATIN SMALL LETTER ESH
|
||||
ʉ \U0289 LATIN SMALL LETTER U BAR
|
||||
ʊ \U028A LATIN SMALL LETTER UPSILON
|
||||
ʌ \U028C LATIN SMALL LETTER TURNED V
|
||||
ʏ \U028F LATIN LETTER SMALL CAPITAL Y
|
||||
ʒ \U0292 LATIN SMALL LETTER EZH
|
||||
ʔ \U0294 LATIN LETTER GLOTTAL STOP
|
||||
ʜ \U029C LATIN LETTER SMALL CAPITAL H
|
||||
Spacing Modifier Letters
|
||||
ʾ \U02BE MODIFIER LETTER RIGHT HALF RING
|
||||
ʿ \U02BF MODIFIER LETTER LEFT HALF RING
|
||||
ˇ ˇ \U02C7 CARON
|
||||
ˈ \U02C8 MODIFIER LETTER VERTICAL LINE
|
||||
ˌ \U02CC MODIFIER LETTER LOW VERTICAL LINE
|
||||
ː \U02D0 MODIFIER LETTER TRIANGULAR COLON
|
||||
˘ ˘ \U02D8 BREVE
|
||||
˙ ˙ \U02D9 DOT ABOVE
|
||||
Greek and Coptic
|
||||
Α Α \U0391 GREEK CAPTIAL LETTER ALPHA
|
||||
Β Β \U0392 GREEK CAPTIAL LETTER BETA
|
||||
Γ Γ \U0393 GREEK CAPTIAL LETTER GAMMA
|
||||
Δ Ε \U0394 GREEK CAPTIAL LETTER DELTA
|
||||
Ε Ε \U0395 GREEK CAPTIAL LETTER EPSILON
|
||||
Ζ Ζ \U0396 GREEK CAPTIAL LETTER ZETA
|
||||
Η Η \U0397 GREEK CAPTIAL LETTER ETA
|
||||
Θ Θ \U0398 GREEK CAPTIAL LETTER THETA
|
||||
Ι Ι \U0399 GREEK CAPTIAL LETTER IOTA
|
||||
Κ Κ \U039A GREEK CAPTIAL LETTER KAPPA
|
||||
Λ Λ \U039B GREEK CAPTIAL LETTER LAMBDA
|
||||
Μ Μ \U039C GREEK CAPTIAL LETTER MU
|
||||
Ν Ν \U039D GREEK CAPTIAL LETTER NU
|
||||
Ξ Ξ \U039E GREEK CAPTIAL LETTER XI
|
||||
Ο Ο \U039F GREEK CAPTIAL LETTER OMICRON
|
||||
Π Π \U03A0 GREEK CAPTIAL LETTER PI
|
||||
Ρ Ρ \U03A1 GREEK CAPTIAL LETTER RHO
|
||||
Σ Σ \U03A3 GREEK CAPTIAL LETTER SIGMA
|
||||
Τ Τ \U03A4 GREEK CAPTIAL LETTER TAU
|
||||
Υ Υ \U03A5 GREEK CAPTIAL LETTER UPSILON
|
||||
Φ Φ \U03A6 GREEK CAPTIAL LETTER PHI
|
||||
Χ Χ \U03A7 GREEK CAPTIAL LETTER CHI
|
||||
Ψ Ψ \U03A8 GREEK CAPTIAL LETTER PSI
|
||||
Ω Ω \U03A9 GREEK CAPTIAL LETTER OMEGA
|
||||
α α \U03B1 GREEK SMALL LETTER ALPHA
|
||||
β β \U03B2 GREEK SMALL LETTER BETA
|
||||
γ γ \U03B3 GREEK SMALL LETTER GAMMA
|
||||
δ δ \U03B4 GREEK SMALL LETTER DELTA
|
||||
ε ε \U03B5 GREEK SMALL LETTER EPSILON
|
||||
ζ ζ \U03B6 GREEK SMALL LETTER ZETA
|
||||
η η \U03B7 GREEK SMALL LETTER ETA
|
||||
θ θ \U03B8 GREEK SMALL LETTER THETA
|
||||
ι ι \U03B9 GREEK SMALL LETTER IOTA
|
||||
κ κ \U03BA GREEK SMALL LETTER KAPPA
|
||||
λ λ \U03BB GREEK SMALL LETTER LAMBDA
|
||||
μ μ \U03BC GREEK SMALL LETTER MU
|
||||
ν ν \U03BD GREEK SMALL LETTER NU
|
||||
ξ ξ \U03BE GREEK SMALL LETTER XI
|
||||
ο ο \U03BF GREEK SMALL LETTER OMICRON
|
||||
π π \U03C0 GREEK SMALL LETTER PI
|
||||
ρ ρ \U03C1 GREEK SMALL LETTER RHO
|
||||
ς ς \U03C2 GREEK SMALL LETTER FINAL SIGMA
|
||||
σ σ \U03C3 GREEK SMALL LETTER SIGMA
|
||||
τ τ \U03C4 GREEK SMALL LETTER TAU
|
||||
υ υ \U03C5 GREEK SMALL LETTER UPSILON
|
||||
φ φ \U03C6 GREEK SMALL LETTER PHI
|
||||
χ χ \U03C7 GREEK SMALL LETTER CHI
|
||||
ψ ψ \U03C8 GREEK SMALL LETTER PSI
|
||||
ω ω \U03C9 GREEK SMALL LETTER OMEGA
|
||||
ϑ \U03D1 GREEK THETA SYMBOL
|
||||
ϝ \U03DD GREEK SMALL LETTER DIGAMMA
|
||||
Hebrew
|
||||
א א \U05D0 HEBREW LETTER ALEPH
|
||||
ב ב \U05D1 HEBREW LETTER BET
|
||||
ג ג \U05D2 HEBREW LETTER GIMEL
|
||||
ד ד \U05D3 HEBREW LETTER DALET
|
||||
ה ה \U05D4 HEBREW LETTER HE
|
||||
ו ו \U05D5 HEBREW LETTER VAV
|
||||
ז ז \U05D6 HEBREW LETTER ZAYIN
|
||||
ח ח \U05D7 HEBREW LETTER HET
|
||||
ט ט \U05D8 HEBREW LETTER TET
|
||||
י י \U05D9 HEBREW LETTER YOD
|
||||
ך ך \U05DA HEBREW LETTER FINAL KAF
|
||||
כ כ \U05DB HEBREW LETTER KAF
|
||||
ל ל \U05DC HEBREW LETTER LAMED
|
||||
ם ם \U05DD HEBREW LETTER FINAL MEM
|
||||
מ מ \U05DE HEBREW LETTER MEM
|
||||
ן ן \U05DF HEBREW LETTER FINAL NUN
|
||||
נ נ \U05E0 HEBREW LETTER NUN
|
||||
ס ס \U05E1 HEBREW LETTER SAMEKH
|
||||
ע ע \U05E2 HEBREW LETTER AYIN
|
||||
ף ף \U05E3 HEBREW LETTER FINAL PE
|
||||
פ פ \U05E4 HEBREW LETTER PE
|
||||
ץ ץ \U05E5 HEBREW LETTER FINAL TSADI
|
||||
צ צ \U05E6 HEBREW LETTER TSADI
|
||||
ק ק \U05E7 HEBREW LETTER QOF
|
||||
ר ר \U05E8 HEBREW LETTER RESH
|
||||
ת ת \U05EA HEBREW LETTER TAV
|
||||
Latin Extended Additional
|
||||
ḋ \U1E0B LATIN SMALL LETTER D WITH DOT ABOVE
|
||||
ḍ \U1E0D LATIN SMALL LETTER D WITH DOT BELOW
|
||||
ḗ \U1E17 LATIN SMALL LETTER E WITH MACRON AND ACUTE
|
||||
Ḣ \U1E22 LATIN CAPITAL LETTER H WITH DOT ABOVE
|
||||
Ḥ \U1E24 LATIN CAPITAL LETTER H WITH DOT BELOW
|
||||
ḥ \U1E25 LATIN SMALL LETTER H WITH DOT BELOW
|
||||
ḫ \U1E2B LATIN SMALL LETTER H WITH BREVE BELOW
|
||||
ḳ \U1E33 LATIN SMALL LETTER K WITH DOT BELOW
|
||||
ḷ \U1E37 LATIN SMALL LETTER L WITH DOT BELOW
|
||||
ṁ \U1E41 LATIN SMALL LETTER M WITH DOT ABOVE
|
||||
ṃ \U1E43 LATIN SMALL LETTER M WITH DOT BELOW
|
||||
ṅ \U1E45 LATIN SMALL LETTER N WITH DOT ABOVE
|
||||
ṇ \U1E47 LATIN SMALL LETTER N WITH DOT BELOW
|
||||
ṓ \U1E53 LATIN SMALL LETTER O WITH MACRON AND ACUTE
|
||||
ṙ \U1E59 LATIN SMALL LETTER R WITH DOT ABOVE
|
||||
Ṛ \U1E5A LATIN CAPITAL LETTER R WITH DOT BELOW
|
||||
ṛ \U1E5B LATIN SMALL LETTER R WITH DOT BELOW
|
||||
ṡ \U1E61 LATIN SMALL LETTER S WITH DOT ABOVE
|
||||
ṣ \U1E63 LATIN SMALL LETTER S WITH DOT BELOW
|
||||
ṫ \U1E6B LATIN SMALL LETTER T WITH DOT ABOVE
|
||||
ṭ \U1E6D LATIN SMALL LETTER T WITH DOT BELOW
|
||||
ṯ \U1E6F LATIN SMALL LETTER T WITH LINE BELOW
|
||||
ẑ \U1E91 LATIN SMALL LETTER Z WITH CIRCUMFLEX
|
||||
ẓ \U1E93 LATIN SMALL LETTER Z WITH DOT BELOW
|
||||
ẖ \U1E96 LATIN SMALL LETTER H WITH LINE BELOW
|
||||
ạ \U1EA1 LATIN SMALL LETTER A WITH DOT BELOW
|
||||
ọ \U1ECD LATIN SMALL LETTER O WITH DOT BELOW
|
||||
ỹ \U1EF9 LATIN SMALL LETTER Y WITH TILDE
|
||||
General Punctuation
|
||||
- ‑ \U2011 NON-BREAKING HYPHEN
|
||||
‸ \U2038 CARET
|
||||
‽ \U203D INTERROBANG
|
||||
⁂ \U2042 ASTERISM
|
||||
Arrows
|
||||
← ← \U2190 LEFTWARDS ARROW
|
||||
→ → \U2192 RIGHTWARDS ARROW
|
||||
Mathematical Operators
|
||||
∂ ∂ \U2202 PARTIAL DIFFERENTIAL
|
||||
√ √ \U221A SQUARE ROOT
|
||||
∞ ∞ \U221E INFINITY
|
||||
∥ ∥ \U2225 PARALLEL TO
|
||||
∫ ∫ \U222B INTEGRAL
|
||||
≠ ≠ \U2260 NOT EQUAL TO
|
||||
⊔ \U2294 SQUARE CUP
|
||||
⊕ \U2295 CIRCLED PLUS
|
||||
⋮ \U22EE VERTICAL ELLIPSIS
|
||||
Enclosed Alphanumerics
|
||||
Ⓤ \U24CA CIRCLED LATIN CAPITAL LETTER U
|
||||
Miscellaneous Symbols
|
||||
☜ ☜ \U261C WHITE LEFT POINTING INDEX
|
||||
☞ ☞ \U261E WHITE RIGHT POINTING INDEX
|
||||
☿ \U263F MERCURY
|
||||
♀ \U2640 FEMALE SIGN
|
||||
♂ \U2642 MALE SIGN
|
||||
♃ \U2643 JUPITER
|
||||
♄ \U2644 SATURN
|
||||
♅ \U2645 URANUS
|
||||
♆ \U2646 NEPTUNE
|
||||
♇ \U2647 PLUTO
|
||||
♠ \U2660 BLACK SPADE SUIT
|
||||
♡ \U2661 WHITE HEART SUIT
|
||||
♢ \U2662 WHITE DIAMOND SUIT
|
||||
♣ \U2663 BLACK CLUB SUIT
|
||||
♭ \U266D MUSIC FLAT SIGN
|
||||
♮ \U266E MUSIC NATURAL SIGN
|
||||
♯ \U266F MUSIC SHARP SIGN
|
||||
Dingbats
|
||||
✓ \U2713 CHECK MARK
|
||||
✠ \U2720 MALTESE CROSS
|
||||
Private Use Area
|
||||
- \UE000 LATIN SMALL LETTER A WITH MACRON AND ACUTE
|
||||
- \UE001 LATIN SMALL LETTER A WITH MACRON AND TILDE
|
||||
- \UE002 LATIN SMALL LETTER A WITH VERTICAL LINE ABOVE
|
||||
- \UE003 LATIN CAPITAL LETTER C WITH MACRON
|
||||
- \UE004 LATIN SMALL LETTER C WITH MACRON
|
||||
- \UE005 LATIN SMALL LETTER C WITH BREVE
|
||||
- \UE006 LATIN SMALL LETTER C WITH DOT BELOW
|
||||
- \UE007 LATIN SMALL LIGATURE CH
|
||||
- \UE008 LATIN CAPITAL LETTER D WITH MACRON
|
||||
- \UE009 LATIN SMALL LETTER E WITH BAR BELOW
|
||||
- \UE00A LATIN SMALL LETTER E WITH TILDE
|
||||
- \UE00B LATIN SMALL LETTER E WITH MACRON AND BREVE
|
||||
- \UE00C LATIN SMALL LETTER E WITH TILDE AND DOT ABOVE
|
||||
- \UE00D LATIN SMALL LETTER E WITH HOOK RIGHT BELOW
|
||||
- \UE00E LATIN SMALL LETTER G WITH INVERTED BREVE
|
||||
- \UE00F LATIN SMALL LETTER I WITH INVERTED BREVE BELOW
|
||||
- \UE010 LATIN SMALL LETTER I WITH MACRON AND ACUTE
|
||||
- \UE011 LATIN SMALL LETTER K WITH CIRCUMFLEX
|
||||
- \UE012 LATIN SMALL LETTER K WITH BREVE
|
||||
- \UE013 LATIN SMALL LETTER K WITH INVERTED BREVE
|
||||
- \UE014 LATIN SMALL LIGATURE KH
|
||||
- \UE015 LATIN CAPITAL LETTER L WITH MACRON
|
||||
- \UE016 LATIN SMALL LETTER L WITH TILDE
|
||||
- \UE017 LATIN SMALL LETTER L WITH INVERTED BREVE
|
||||
- \UE018 LATIN CAPITAL LETTER M WITH MACRON
|
||||
- \UE019 LATIN SMALL LETTER M WITH MACRON
|
||||
- \UE01A LATIN SMALL LETTER M WITH TILDE
|
||||
- \UE01B LATIN SMALL LETTER O WITH CEDILLA
|
||||
- \UE01C LATIN SMALL LETTER O WITH MACRON AND CIRUMFLEX
|
||||
- \UE01E LATIN SMALL LIGATURE OI
|
||||
- \UE01F LATIN SMALL LIGATURE OO
|
||||
- \UE020 LATIN SMALL LIGATURE OO WITH MACRON
|
||||
- \UE021 LATIN SMALL LIGATURE OU
|
||||
- \UE022 LATIN SMALL LETTER OPEN O WITH ACUTE
|
||||
- \UE023 LATIN SMALL LETTER R WITH DIARESIS
|
||||
- \UE024 LATIN SMALL LETTER R WITH CIRCUMFLEX
|
||||
- \UE025 LATIN SMALL LETTER R WITH RING BELOW
|
||||
- \UE026 LATIN SMALL LETTER S WITH VERTICAL LINE ABOVE
|
||||
- \UE027 LATIN SMALL LETTER S WITH OGONEK
|
||||
- \UE028 LATIN SMALL LETTER S WITH COMMA
|
||||
- \UE02A LATIN SMALL LETTER S WITH BREVE
|
||||
- \UE02B LATIN SMALL LIGATURE SH
|
||||
- \UE02C LATIN SMALL LIGATURE TH
|
||||
- \UE02D LATIN SMALL LETTER U WITH MACRON AND ACUTE
|
||||
- \UE02E LATIN CAPITAL LETTER V WITH MACRON
|
||||
- \UE02F LATIN CAPITAL LETTER X WITH MACRON
|
||||
- \UE030 LATIN SMALL LETTER X WITH CIRCUMFLEX
|
||||
- \UE031 LATIN SMALL LETTER Y WITH BREVE
|
||||
- \UE032 LATIN SMALL LIGATURE ZH
|
||||
- \UE033 LATIN SMALL LETTER TURNED E WITH ACUTE
|
||||
- \UE034 LATIN SMALL LETTER TURNED E WITH CIRCUMFLEX
|
||||
- \UE035 GREEK SMALL LETTER ALPHA WITH GRAVE
|
||||
- \UE036 MUSICAL SYMBOL SEGNO
|
||||
- \UE037 MUSICAL SYMBOL FERMATA
|
||||
- \UE038 MUSICAL SYMBOL CRESCENDO
|
||||
- \UE039 MUSICAL SYMBOL DECRESCENDO
|
||||
- \UE03A MUSICAL SYMBOL DOUBLE SHARP
|
||||
- \UE03B MUSICAL SYMBOL BREVE
|
||||
- \UE03C MUSICAL SYMBOL DOWN BOW
|
||||
- \UE03D MUSICAL SYMBOL UP BOW
|
||||
- \UE03E MUSICAL SYMBOL BREVE ALTERNATE
|
||||
- \UE03F PRINTING SYMBOL DELE
|
||||
- \UE040 PRINTING SYMBOL FRACTIONAL EM
|
||||
- \UE041 INVERTED ASTERISM
|
||||
- \UE042 LATIN SMALL LETTER SCHWA SUPERSCRIPT
|
||||
- \UE043 LATIN SMALL LETTER TURNED Y
|
||||
- \UE044 LATIN SMALL LIGATURE OE WITH MACRON
|
||||
- \UE045 SQUARE ROOT WITH BAR
|
||||
- \UE046 LATIN SMALL LETTER U WITH DOT ABOVE
|
||||
- \UE047 LATIN SMALL LIGATURE UE
|
||||
- \UE048 LATIN SMALL LIGATURE UE WITH MACRON
|
||||
- \UE049 LATIN SMALL LETTER OPEN O WITH TILDE
|
||||
- \UE04A LATIN SMALL LETTER T WITH CARON BELOW
|
||||
- \UE04B LATIN SMALL LETTER SCRIPT A WITH TILDE
|
||||
- \UE04C GREEK SMALL LETTER EPSILON WITH TILDE
|
||||
- \UE04D LATIN SMALL LIGATURE OE WITH TILDE
|
||||
- \UE04E MODIFIER LETTER DOUBLE VERTICAL LINE
|
||||
- \UE04F DOUBLE HYPHEN
|
||||
- \UE050 LATIN SMALL LETTER SCHWA WITH DOT ABOVE
|
||||
- \UE051 LATIN SMALL LETTER SCHWA WITH MACRON
|
||||
Alphabetic Presentation Forms
|
||||
fl fl \UFB02 LATIN SMALL LIGATURE FL
|
||||
שׁ שׁ \UFB2A HEBREW LETTER SINH WITH SHIN DOT
|
||||
שׂ שׂ \UFB2B HEBREW LETTER SINH WITH SIN DOT
|
||||
|
226
format_docs/pdb/ztxt.txt
Normal file
@ -0,0 +1,226 @@
|
||||
The zTXT Format
|
||||
---------------
|
||||
|
||||
The zTXT format is relatively straightforward. The simplest zTXT contains a
|
||||
Palm database header, followed by zTXT record #0, followed by the compressed
|
||||
data. The compressed data can be in one of two formats: one long data stream,
|
||||
or split into chunks for random access. If there are any bookmarks, they occupy
|
||||
the record immediately after the compressed data. If there are any annotations,
|
||||
the annotation index occupies the record immediately after the bookmarks with
|
||||
each annotation in the index having a record immediately after the annotation
|
||||
index. Here are diagrams of a simple zTXT and a full featured zTXT:
|
||||
|
||||
DB Header
|
||||
0 Record 0
|
||||
1
|
||||
2
|
||||
3
|
||||
... Compressed Data
|
||||
36
|
||||
37
|
||||
38
|
||||
|
||||
DB Header
|
||||
0 Record 0
|
||||
1
|
||||
2
|
||||
3
|
||||
... Compressed Data
|
||||
36
|
||||
37
|
||||
38
|
||||
39 Bookmarks
|
||||
40 Annotation Index
|
||||
41 Annotation 1
|
||||
42 Annotation 2
|
||||
43 Annotation 3
|
||||
|
||||
|
||||
Compression Modes
|
||||
-----------------
|
||||
|
||||
zTXT version 1.40 and later supports two modes of compression. Mode 1 is a
|
||||
random access mode, and mode 2 consists of one long data stream. Both modes
|
||||
work on 8K (the default record size) blocks of text.
|
||||
|
||||
Please note, however, that as of Weasel Reader version 1.60 the old style
|
||||
(mode 2) zTXT format is no longer supported. makeztxt and libztxt still support
|
||||
creating these documents for backwards compatibility, but you should not use
|
||||
mode 2 if possible.
|
||||
|
||||
|
||||
Mode 1
|
||||
------
|
||||
|
||||
In mode one, 8K blocks of text are compressed into an equal number of blocks of
|
||||
compressed data. Using the Z_FULL_FLUSH flush mode with zLib allows for random
|
||||
access among the blocks of data. In order for this to function, the first block
|
||||
must be decompressed first, and after that any block in the file may be
|
||||
decompressed in any order. In mode 1, the blocks of compressed data will likely
|
||||
not all have the same size.
|
||||
|
||||
|
||||
Mode 2
|
||||
------
|
||||
|
||||
In zTXT versions before 1.40, this was the only method of compression. This
|
||||
mode involves compressing the entire input buffer into a single output buffer
|
||||
and then splitting the resulting buffer into 8K segments. This mode requires
|
||||
that all of the compressed data be decompressed in one pass. Since there are no
|
||||
real 'blocks' of data, the resulting output can be of any blocksize, though
|
||||
typically the default of 8K should be fine. The advantage to mode 2 is that it
|
||||
will give about 10% - 15% more compression.
|
||||
|
||||
|
||||
zTXT Record #0 Definition (version 1.44)
|
||||
----------------------------------------
|
||||
|
||||
Record 0 provides all of the information about the zTXT contents. Be sure it is
|
||||
correct, lest firey death rain down upon your program.
|
||||
|
||||
typedef struct zTXT_record0Type {
|
||||
UInt16 version;
|
||||
UInt16 numRecords;
|
||||
UInt32 size;
|
||||
UInt16 recordSize;
|
||||
UInt16 numBookmarks;
|
||||
UInt16 bookmarkRecord;
|
||||
UInt16 numAnnotations;
|
||||
UInt16 annotationRecord;
|
||||
UInt8 flags;
|
||||
UInt8 reserved;
|
||||
UInt32 crc32;
|
||||
UInt8 padding[0x20 - 24];
|
||||
} zTXT_record0;
|
||||
|
||||
|
||||
Structure Elements
|
||||
------------------
|
||||
|
||||
UInt16 version;
|
||||
|
||||
This is mostly just informational. Your program can figure out what features
|
||||
might be available from the version. However, the remaining parts of the
|
||||
structure are designed such that their value will be 0 if that particular
|
||||
feature is not present, so that is the correct way to test. The version is
|
||||
stored as two 8 bit integers. For example, version 1.42 is 0x012A.
|
||||
|
||||
UInt16 numRecords;
|
||||
|
||||
This is the number of DATA records only and does not include record 0,
|
||||
bookmarks, or annotations. With compression mode 1, this is also the number of
|
||||
uncompressed text records. With mode 2, you must decompress the file to figure
|
||||
out how many text records there will be.
|
||||
|
||||
UInt32 size;
|
||||
|
||||
The size in bytes of the uncompressed data in the zTXT. Check this value with
|
||||
the amount of free storage memory on the Palm to make sure there's enough room
|
||||
to decompress the data in full or in part.
|
||||
|
||||
UInt16 recordSize;
|
||||
|
||||
recordSize is the size in bytes of a text record. This field is important, as
|
||||
the size of text and decompression buffers is based on this value. It is used
|
||||
by Weasel to navigate though the text so it can map absolute offsets to record
|
||||
numberss. 8192 is the default. With compression mode 1, this is the amount of
|
||||
data inside each compressed record (except maybe the last one), but the actual
|
||||
compressed records will likely have varying sizes. In mode 2, both compressed
|
||||
records and the resulting text records are all of this size (except, again, the
|
||||
last record).
|
||||
|
||||
UInt16 numBookmarks;
|
||||
|
||||
The definitive count of how many bookmarks are stored in the bookmark index
|
||||
record. See the section on bookmarks below.
|
||||
|
||||
UInt16 bookmarkRecord;
|
||||
|
||||
If there are any bookmarks, this is set to the record index number that
|
||||
contains the bookmark listing, otherwise it is 0.
|
||||
|
||||
UInt16 numAnnotations;
|
||||
|
||||
Like the bookmark count, this is the definitive count of how many annotations
|
||||
are in the annotation index and how many annotation records follow it. See the
|
||||
section on annotation below.
|
||||
|
||||
UInt16 annotationRecord;
|
||||
|
||||
If there are any annotations, this is set to the record index number that
|
||||
contains the annotation index, otherwise it is 0.
|
||||
|
||||
UInt8 flags;
|
||||
|
||||
These flags indicate various features of the zTXT database. flags is a bitmask
|
||||
and at present the only two defined bits are:
|
||||
|
||||
ZTXT_RANDOMACCESS (0x01)
|
||||
If the zTXT was compressed according to the method in mode 1, then it
|
||||
supports random access and this should be set.
|
||||
ZTXT_NONUNIFORM (0x02)
|
||||
Setting this bit indicates that the text records within the zTXT database
|
||||
are not of uniform length. That is, when the blocks of text are
|
||||
decompressed they will not have identical block sizes. If this is not set,
|
||||
the compressed blocks are assumed to all have the same size when
|
||||
decompressed (typically 8K) except for the last block which can be smaller.
|
||||
|
||||
UInt32 crc32;
|
||||
|
||||
A CRC32 value for checking data integrity. This value is computer over all text
|
||||
data record only and does not include record 0 nor any bookmark/annotation
|
||||
records. The current implementation in makeztxt/Weasel computes this value
|
||||
using the crc32 function in zLib which should be the standard CRC32 definition.
|
||||
|
||||
UInt8 padding[0x20 - 24];
|
||||
|
||||
zTXT record zero is 32 bytes in length, so the unused portion is padded.
|
||||
|
||||
|
||||
zTXT Bookmarks
|
||||
--------------
|
||||
|
||||
zTXT bookmarks are stored in a simple array in a record at the end of a zTXT.
|
||||
The format is as follows:
|
||||
|
||||
#define MAX_BMRK_LENGTH 20
|
||||
|
||||
typedef struct GPlmMarkType {
|
||||
UInt32 offset;
|
||||
Char title[MAX_BMRK_LENGTH];
|
||||
} GPlmMark;
|
||||
|
||||
In the structure, offset is counted as an absolute offset into the text. The
|
||||
bookmarks must be sorted in ascending order.
|
||||
|
||||
If there are no bookmarks, then the bookmark index does not exist. When the
|
||||
user creates the first bookmark, the record containing the index will then be
|
||||
created. If there are annotations, when the bookmark record is created it must
|
||||
go before the annotation index. This will require incrementing annotationRecord
|
||||
in record 0 to point to the new record index.
|
||||
|
||||
Similarly, when all bookmarks are deleted the bookmark index record is also
|
||||
deleted. If there are annotations, annotationRecord in record 0 must be
|
||||
decremented to point to the new index.
|
||||
|
||||
|
||||
zTXT Annotations
|
||||
----------------
|
||||
|
||||
zTXT annotations have a format almost identical to that of the bookmark index:
|
||||
|
||||
typedef struct GPlmAnnotationType {
|
||||
UInt32 offset;
|
||||
Char title[MAX_BMRK_LENGTH];
|
||||
} GPlmAnnotation;
|
||||
|
||||
Like the bookmarks, offset is an absolute offset into the text. The annotation
|
||||
index is organized just as the bookmarks are, as a single array in a record.
|
||||
Note that this structure does NOT store the actual annotation text.
|
||||
|
||||
The text of each annotation is stored in its own record immediately following
|
||||
the index. So, the first annotation in the index will occupy the first record
|
||||
following the index, and the second annotation will be in the second record
|
||||
following the index, and so on. The text of each annotation is limited to
|
||||
4096 bytes.
|
||||
|
303
format_docs/rb.txt
Normal file
@ -0,0 +1,303 @@
|
||||
Rocket eBook File Format
|
||||
------------------------
|
||||
|
||||
from http://rbmake.sourceforge.net/rb_format.html
|
||||
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
This document attempts to describe the format of a .rb file -- the book
|
||||
format that is downloaded into NuvoMedia's <http://www.nuvomedia.com>
|
||||
hand-held wonder, the Rocket eBook
|
||||
<http://www.rocket-ebook.com/enter.html>.
|
||||
|
||||
*Note:* All multi-byte integers are stored in Vax/Intel order (the
|
||||
opposite of network byte order). Most integers are 4 bytes (an int32),
|
||||
but there are some minor exceptions (as detailed below).
|
||||
|
||||
Also, the following document refers to the .rb file sections as "pages".
|
||||
|
||||
|
||||
Details
|
||||
-------
|
||||
|
||||
The first 4 bytes of the file seem to be a magic number (in hex): B0 0C
|
||||
B0 0C. I like to think of this as a hexidecimal pun on the word "book"
|
||||
(repeated). [Matt Greenwood has reported seeing a magic number of "B0 0C
|
||||
F0 0D" in another type of ReB-related file -- i.e. "book food".]
|
||||
|
||||
The next two bytes appear to be a version number, currently "02 00". I
|
||||
assume this means major version 2, minor version 0.
|
||||
|
||||
The next 4 bytes are the string "NUVO", followed by 4 bytes of 00h. (I
|
||||
have also seen an old title that had 0s in place of the "NUVO".)
|
||||
|
||||
This brings us up to offset 0Eh, at which point we have a 4-byte
|
||||
representation of the date the book was created (Matt Greenwood pointed
|
||||
this out to me -- thanks!). The year is encoded as an int16. On older
|
||||
version of the RocketLibrary was encoding the year's full value (e.g.
|
||||
1999 was "CF 07" and 2000 was "D0 07"), but a more recent version is now
|
||||
using the tm_year value verbatim -- i.e. it's storing 100 for the year
|
||||
2000 ("64 00"). The year is followed by an int8 for the 1-relative month
|
||||
number, and an int8 for the day of the month.
|
||||
|
||||
After that is 6 bytes of 00h. These may be reserved for setting the time
|
||||
of creation (at a guess).
|
||||
|
||||
Then, at offset 18h, we have an int32 that contains the absolute offset
|
||||
of the "Table of Contents" (the directory of the pages contained within
|
||||
this .rb file). In all of the .rb file's I've seen, this remains
|
||||
constant with a value of 128h. However, I have tested an atypical .rb
|
||||
file where I placed the ToC at the end of the file (after all the file
|
||||
contents), and it worked fine. (I've chosen not to build any books in
|
||||
such a non-standard format, however.)
|
||||
|
||||
Immediately following this is an int32 with the length of the .rb file
|
||||
(so we can check if the file is complete or not).
|
||||
|
||||
All the bytes from here (offset 20h) up to offset 128h appear to only be
|
||||
used by an encrypted title. In a non-encrypted title, they are always 0.
|
||||
|
||||
The table of contents typically comes next (at offset 128h). It starts
|
||||
with an int32 count of the number of "page" entries (.rb-file sections)
|
||||
in the ToC. Each entry consists of a name (zero-padded to 32 bytes),
|
||||
followed by 3 int32s: the length of this entry's data segment, the
|
||||
absolute offset of the data in the .rb file, and a flag. The known flag
|
||||
values are: 1 (encrypted), 2 (info page), and 8 (deflated). The names
|
||||
are tweaked as needed to ensure that they are all unique. The current
|
||||
RocketWriter software uses a unique 6-digit number, a dash, up to 8
|
||||
characters from the filename, and then the re-mapped suffix for the data
|
||||
(.html, .hidx, .png, .info, etc.). My rbmake library simply ensures that
|
||||
the names are no longer than 15 characters (not counting the suffix) and
|
||||
are all unique.
|
||||
|
||||
Often the first item in the ToC is the info page, but it doesn't have to
|
||||
be. This page of information contains NAME=VALUE pairs that note the
|
||||
author, title, what the root-page's name is, etc. (See appendix A). This
|
||||
data is never encrypted nor compressed, so this entry's flag value is
|
||||
always "2".
|
||||
|
||||
An image page is always stored as a B&W image in PNG format. Since it
|
||||
has its own compression, it is stored without any additional attempt at
|
||||
deflation. I have also never seen an encrypted image, so its flag value
|
||||
is always 0.
|
||||
|
||||
An HTML page contains the tags and text that were re-written into a
|
||||
consistent syntax (this presumably makes the HTML renderer in the ReB
|
||||
itself simpler). HTML pages are typically compressed (See appendix B).
|
||||
Every HTML page appears to use the suffix .html no matter what the file
|
||||
name was on import (but I have seen older files with .htm used as the
|
||||
suffix, so the rocket appears to support both).
|
||||
|
||||
For every HTML page there is a corresponding .hidx page that contains a
|
||||
summary of the paragraph formatting and the position of the anchor names
|
||||
in the associated .html page (See appendix C). This page is sometimes
|
||||
compressed, depending on length (See appendix B).
|
||||
|
||||
There are also reference titles that have a .hkey page that contains a
|
||||
list of words that can be looked up in the associated .html page (See
|
||||
appendix D).
|
||||
|
||||
Immediately following the ToC is the data for each piece mentioned in
|
||||
the ToC, in the same order as it appeared in the ToC.
|
||||
|
||||
Finally, the end of the file appears to be padded with 20 bytes of 01h.
|
||||
|
||||
|
||||
Appendix A: Info Page Format
|
||||
----------------------------
|
||||
|
||||
The info page consists of a series of lines that contain "NAME=VALUE"
|
||||
strings. Each line is terminated by a single newline. Here are the
|
||||
values that the RocketWriter generates:
|
||||
|
||||
COMMENT=Info file for <title>
|
||||
TYPE=2
|
||||
TITLE=<title>
|
||||
AUTHOR=<author>
|
||||
URL=ebook:<long, unique string used for the file's name by the librarian>
|
||||
GENERATOR=<e.g. RocketLibrarian 1.3.216>
|
||||
PARSE=1
|
||||
OUTPUT=1
|
||||
BODY=<name of root HTML page (as it appears in the ToC)>
|
||||
MENUMARK=menumark.html
|
||||
SuggestedRetailPrice=<usually empty>
|
||||
|
||||
Encrypted titles have a few more entries (including those listed above):
|
||||
|
||||
ISBN=<ISBN number, including dashes>
|
||||
REVISION=<digits>
|
||||
TITLE_LANGUAGE=<en-us>
|
||||
PUB_NAME=<Publisher's name>
|
||||
PUBSERVER_ID=<digits>
|
||||
GENERATOR=<e.g. RocketPress 1.3.121>
|
||||
VERSION=<digits>
|
||||
USERNAME=<rocket-ID>
|
||||
COPY_ID=<digits>
|
||||
COPYRIGHT=<copyright>
|
||||
COPYTITLE=<another copyright?>
|
||||
|
||||
A reference title also has an indication that there is a .hkey page
|
||||
present, and may also have a GENRE of "Reference":
|
||||
|
||||
HKEY=1
|
||||
GENRE=Reference
|
||||
|
||||
|
||||
Appendix B: The format of compressed data
|
||||
-----------------------------------------
|
||||
|
||||
Compressed pages have a data section in the .rb file with the following
|
||||
format:
|
||||
|
||||
The first int32 is a count of the number of 4096-byte chunks of data we
|
||||
broke the uncompressed page into (the last chunk can be shorter than
|
||||
4096 bytes, of course).
|
||||
|
||||
This is immediately followed by an int32 with the length of the entire
|
||||
uncompressed data.
|
||||
|
||||
After this there are <count> int32s that indicate the size of each
|
||||
chunk's compressed data.
|
||||
|
||||
Following these length int32s is the output from a deflation (the
|
||||
algorithm used in gzip) for each 4096-byte chunk of the original data.
|
||||
It appears that you must use a window-bit size of 13 and a compression
|
||||
level of "best" to be compatible with the Rocket eBook's system software.
|
||||
|
||||
|
||||
Appendix C: HTML-index Page Format
|
||||
----------------------------------
|
||||
|
||||
The .hidx page's purpose is to allow the renderer to quickly look up the
|
||||
format of each paragraph (useful for random access to the data), and the
|
||||
position of the anchor names.
|
||||
|
||||
The first section lists the various paragraph-producing tags. It is
|
||||
headed by a line of "[tags <count>]", where <count> is the number of
|
||||
tags that follow this header. The tags are listed one per line, and have
|
||||
an implied enumeration from 0 to N-1 (which the other tags and the
|
||||
upcoming paragraph sections reference).
|
||||
|
||||
The first tag is typically (always?) "<HTML> -1". The number trailing
|
||||
the tag indicates what other tag (or sequence of tags, one per line) in
|
||||
which we are nested. So, if we have a <BR> nested inside a <P
|
||||
ALIGN="center">, it would be listed separately from a <BR> that was
|
||||
nested inside a normal paragraph, and each one would have a different
|
||||
trailing index number.
|
||||
|
||||
Following the tag section is the paragraph section. The heading is
|
||||
"[paragraphs <count>]", and is followed by a line for each paragraph.
|
||||
These lines consist of a character offset into the .html page for the
|
||||
start of the paragraph followed by a 0-relative offset into the tag
|
||||
section (indicating what kind of formatting to use for the indicated
|
||||
paragraph).
|
||||
|
||||
The paragraph-section character offsets point to the first bit of text
|
||||
after the associated tag.
|
||||
|
||||
The last section details the anchor names. The heading is
|
||||
"[names <count>]", and each item that follows is a quoted string of the
|
||||
anchor name, followed by a character offset into the .html page where
|
||||
we'll find that name. If there are no names in the associated HTML
|
||||
section, the heading is included with a 0 count (i.e. "[names 0]").
|
||||
|
||||
The name-section character offsets point to the start of the anchor tag
|
||||
(not after the tag, like the offsets in the "paragraphs" section).
|
||||
|
||||
The lines are terminated by newlines (in standard unix fashion).
|
||||
|
||||
For example:
|
||||
|
||||
[tags 10]
|
||||
<HTML> -1
|
||||
<BODY> 0
|
||||
<P ALIGN="right"> 1
|
||||
<P ALIGN="left"> 1
|
||||
<P> 1
|
||||
<H3 ALIGN="center"> 1
|
||||
<P ALIGN="center"> 1
|
||||
<BR> 6
|
||||
<H2 ALIGN="center"> 1
|
||||
<BR> 1
|
||||
|
||||
[paragraphs 42]
|
||||
160 9
|
||||
164 9
|
||||
184 8
|
||||
220 8
|
||||
261 6
|
||||
316 5
|
||||
359 1
|
||||
379 6
|
||||
410 6
|
||||
460 7
|
||||
511 7
|
||||
564 7
|
||||
616 7
|
||||
668 7
|
||||
720 7
|
||||
773 7
|
||||
827 7
|
||||
880 7
|
||||
933 7
|
||||
988 7
|
||||
1043 7
|
||||
1100 7
|
||||
1157 7
|
||||
1214 7
|
||||
1270 7
|
||||
1328 7
|
||||
1385 7
|
||||
1442 7
|
||||
1497 7
|
||||
1556 7
|
||||
1561 7
|
||||
1635 1
|
||||
1656 5
|
||||
1690 6
|
||||
1737 7
|
||||
1773 5
|
||||
1798 4
|
||||
1826 3
|
||||
2663 1
|
||||
2668 4
|
||||
2689 2
|
||||
2730 8
|
||||
|
||||
[names 1]
|
||||
"ch1" 2689
|
||||
|
||||
|
||||
Appendix D: HTML-key Page Format
|
||||
--------------------------------
|
||||
|
||||
The .hkey page contains a list of words, one per line, sorted in a
|
||||
strict ASCII sequence, each one followed by a tab and the offset in the
|
||||
.html page of the word's data. I presume that the .hkey page must share
|
||||
the same name prefix as its related .html page.
|
||||
|
||||
If the names contain high-bit characters, they are translated into
|
||||
regular ASCII in the .hkey file, since this allows the user to search
|
||||
for the words using unaccented characters.
|
||||
|
||||
The lines are terminated with a newline (in standard unix fashion).
|
||||
|
||||
An example:
|
||||
|
||||
a 5
|
||||
apple 38
|
||||
b 84
|
||||
book 104
|
||||
|
||||
Each of these offsets points to a paragraph tag in the associated .html
|
||||
page. I have only seen this sequence of tags used so far:
|
||||
|
||||
<P><BIG><B>word</B></BIG> other stuff</P>
|
||||
|
||||
I have seen multiple <B>...</B> tags in the middle of the single set of
|
||||
<BIG>...</BIG> tags, but this is the basic tag format.
|
||||
|
||||
The offset in the .hkey page points to the start of the <P> tag.
|
||||
|
56
format_docs/tcr.txt
Normal file
@ -0,0 +1,56 @@
|
||||
About
|
||||
-----
|
||||
|
||||
Text compression format that can be decompressed starting at any point.
|
||||
Little-endian byte ordering is used.
|
||||
|
||||
|
||||
Header
|
||||
------
|
||||
|
||||
TCR files always start with:
|
||||
|
||||
!!8-Bit!!
|
||||
|
||||
|
||||
Layout
|
||||
------
|
||||
|
||||
Header
|
||||
256 key dictionary
|
||||
compressed text
|
||||
|
||||
|
||||
Dictionary
|
||||
----------
|
||||
|
||||
A dictionary of key and replacement string. There are a total of 256 keys,
|
||||
0 - 255. Each string is preceded with one byte that represents the length of
|
||||
the string.
|
||||
|
||||
|
||||
Compressed text
|
||||
---------------
|
||||
|
||||
The compressed text is a series of values 0-255 which correspond to a key and
|
||||
thus a string. Reassembling is replacing each key in the compressed text with
|
||||
its corresponding string.
|
||||
|
||||
|
||||
Compressor
|
||||
-----------------
|
||||
|
||||
From Andrew Giddings TCR.c (http://www.cix.co.uk/~gidds/Software/TCR.html):
|
||||
|
||||
The TCR compression format is easy to describe: after the fixed header is a
|
||||
dictionary of 256 strings, each preceded by a length byte. The rest of the
|
||||
file is a list of codes from this dictionary.
|
||||
|
||||
The compressor works by starting with each code defined as itself. While
|
||||
there's an unused code, it finds the most common two-code combination, and
|
||||
creates a new code for it, replacing all occurrences in the text with the
|
||||
new code.
|
||||
|
||||
It also searches for codes that are always followed by another, which it can
|
||||
merge, possibly freeing up some.
|
||||
|
@ -13,12 +13,12 @@
|
||||
id="Layer_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
width="134.77701"
|
||||
height="199.99901"
|
||||
viewBox="0 0 134.777 199.999"
|
||||
width="200"
|
||||
height="200"
|
||||
viewBox="0 0 199.99999 199.99999"
|
||||
enable-background="new 0 0 595.28 841.89"
|
||||
xml:space="preserve"
|
||||
inkscape:version="0.47 r22583"
|
||||
inkscape:version="0.48.0 r9654"
|
||||
sodipodi:docname="news.svg"><metadata
|
||||
id="metadata26"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
@ -38,22 +38,22 @@
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="640"
|
||||
inkscape:window-height="489"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="997"
|
||||
id="namedview22"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.28032165"
|
||||
inkscape:cx="67.389001"
|
||||
inkscape:cy="99.722002"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="41"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="30"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Layer_1" />
|
||||
<g
|
||||
id="g3"
|
||||
transform="translate(-230.25101,-320.668)">
|
||||
transform="translate(-194.57771,-320.66701)">
|
||||
<polygon
|
||||
points="360.241,366.109 345.29,359.678 345.29,343.405 329.945,343.405 324.265,329.15 309.147,335.175 297.64,323.667 286.79,334.517 272.693,328.454 266.263,343.405 249.988,343.405 249.988,358.749 235.734,364.429 241.759,379.548 230.251,391.056 241.101,401.906 235.039,416.002 249.988,422.432 249.988,438.706 265.333,438.706 271.013,452.961 277.817,450.25 277.817,475.111 252.085,475.111 297.64,520.667 343.193,475.111 317.463,475.111 317.463,451.453 322.585,453.656 329.016,438.706 345.29,438.706 345.29,423.362 359.546,417.682 353.521,402.563 365.028,391.056 354.178,380.205 "
|
||||
points="286.79,334.517 272.693,328.454 266.263,343.405 249.988,343.405 249.988,358.749 235.734,364.429 241.759,379.548 230.251,391.056 241.101,401.906 235.039,416.002 249.988,422.432 249.988,438.706 265.333,438.706 271.013,452.961 277.817,450.25 277.817,475.111 252.085,475.111 297.64,520.667 343.193,475.111 317.463,475.111 317.463,451.453 322.585,453.656 329.016,438.706 345.29,438.706 345.29,423.362 359.546,417.682 353.521,402.563 365.028,391.056 354.178,380.205 360.241,366.109 345.29,359.678 345.29,343.405 329.945,343.405 324.265,329.15 309.147,335.175 297.64,323.667 "
|
||||
id="polygon5"
|
||||
style="fill:#ffffff" />
|
||||
<linearGradient
|
||||
@ -73,7 +73,7 @@
|
||||
id="stop10" />
|
||||
</linearGradient>
|
||||
<polygon
|
||||
points="360.241,363.11 345.29,356.679 345.29,340.406 329.945,340.406 324.265,326.151 309.147,332.176 297.64,320.668 286.79,331.518 272.693,325.455 266.263,340.406 249.988,340.406 249.988,355.75 235.734,361.43 241.759,376.549 230.251,388.057 241.101,398.907 235.039,413.003 249.988,419.433 249.988,435.707 265.333,435.707 271.013,449.962 277.817,447.251 277.817,472.112 252.085,472.112 297.64,517.668 343.193,472.112 317.463,472.112 317.463,448.454 322.585,450.657 329.016,435.707 345.29,435.707 345.29,420.363 359.546,414.683 353.521,399.564 365.028,388.057 354.178,377.206 "
|
||||
points="286.79,331.518 272.693,325.455 266.263,340.406 249.988,340.406 249.988,355.75 235.734,361.43 241.759,376.549 230.251,388.057 241.101,398.907 235.039,413.003 249.988,419.433 249.988,435.707 265.333,435.707 271.013,449.962 277.817,447.251 277.817,472.112 252.085,472.112 297.64,517.668 343.193,472.112 317.463,472.112 317.463,448.454 322.585,450.657 329.016,435.707 345.29,435.707 345.29,420.363 359.546,414.683 353.521,399.564 365.028,388.057 354.178,377.206 360.241,363.11 345.29,356.679 345.29,340.406 329.945,340.406 324.265,326.151 309.147,332.176 297.64,320.668 "
|
||||
id="polygon12"
|
||||
style="fill:url(#SVGID_1_)" />
|
||||
<g
|
||||
@ -81,14 +81,16 @@
|
||||
<path
|
||||
d="m 273.311,419.168 v -56.752 h 17.935 l 9.01,17.43 c 3.115,5.641 6.399,13.22 8.926,19.873 h 0.252 c -0.842,-7.494 -1.178,-15.41 -1.178,-23.83 v -13.472 h 13.893 v 56.752 H 306.15 l -9.684,-18.861 c -3.116,-5.978 -6.82,-13.641 -9.515,-20.461 h -0.336 c 0.42,7.663 0.589,16.167 0.589,25.345 v 13.978 h -13.893 z"
|
||||
id="path16"
|
||||
style="fill:#993720" />
|
||||
style="fill:#993720"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
id="g18">
|
||||
<path
|
||||
d="m 273.311,416.873 v -56.752 h 17.935 l 9.01,17.43 c 3.115,5.641 6.399,13.22 8.926,19.873 h 0.252 c -0.842,-7.494 -1.178,-15.41 -1.178,-23.83 v -13.472 h 13.893 v 56.752 H 306.15 l -9.684,-18.861 c -3.116,-5.978 -6.82,-13.641 -9.515,-20.461 h -0.336 c 0.42,7.663 0.589,16.167 0.589,25.345 v 13.978 h -13.893 z"
|
||||
id="path20"
|
||||
style="fill:#f0efef" />
|
||||
style="fill:#f0efef"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.2 KiB |
@ -1,55 +1,19 @@
|
||||
body { background-color: white; }
|
||||
|
||||
p.title {
|
||||
margin-top:0em;
|
||||
margin-bottom:0em;
|
||||
text-align:center;
|
||||
font-style:italic;
|
||||
font-size:xx-large;
|
||||
}
|
||||
|
||||
p.series_id {
|
||||
margin-top:0em;
|
||||
margin-bottom:0em;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
a.series_id {
|
||||
font-style:normal;
|
||||
font-size:large;
|
||||
}
|
||||
|
||||
p.author {
|
||||
font-size:large;
|
||||
margin-top:0em;
|
||||
margin-bottom:0em;
|
||||
text-align: center;
|
||||
text-indent: 0em;
|
||||
}
|
||||
|
||||
p.author_index {
|
||||
font-size:large;
|
||||
font-weight:bold;
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:-2px;
|
||||
text-indent: 0em;
|
||||
}
|
||||
|
||||
p.genres {
|
||||
font-style:normal;
|
||||
margin-top:0.5em;
|
||||
margin-bottom:0em;
|
||||
text-align: left;
|
||||
text-indent: 0.0in;
|
||||
}
|
||||
|
||||
p.formats {
|
||||
font-size:90%;
|
||||
margin-top:0em;
|
||||
margin-bottom:0.5em;
|
||||
text-align: left;
|
||||
text-indent: 0.0in;
|
||||
/*
|
||||
* Minimize widows and orphans by logically grouping chunks
|
||||
* Some reports of problems with Sony (ADE) ereaders
|
||||
* ADE: page-break-inside:avoid;
|
||||
* iBooks: display:inline-block;
|
||||
* width:100%;
|
||||
*/
|
||||
div.author_logical_group {
|
||||
page-break-inside:avoid;
|
||||
}
|
||||
|
||||
div.description > p:first-child {
|
||||
@ -62,73 +26,8 @@ div.description {
|
||||
text-indent: 1em;
|
||||
}
|
||||
|
||||
/*
|
||||
* Attempt to minimize widows and orphans by logically grouping chunks
|
||||
* Recommend enabling for iPad
|
||||
* Some reports of problems with Sony ereaders, presumably ADE engines
|
||||
*/
|
||||
/*
|
||||
div.logical_group {
|
||||
display:inline-block;
|
||||
width:100%;
|
||||
}
|
||||
*/
|
||||
|
||||
p.date_index {
|
||||
font-size:x-large;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
margin-top:1em;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
|
||||
p.letter_index {
|
||||
font-size:x-large;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
margin-top:1em;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
|
||||
p.series {
|
||||
font-style:italic;
|
||||
margin-top:2px;
|
||||
margin-bottom:0px;
|
||||
margin-left:2em;
|
||||
text-align:left;
|
||||
text-indent:-2em;
|
||||
}
|
||||
|
||||
p.read_book {
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
margin-left:2em;
|
||||
text-indent:-2em;
|
||||
}
|
||||
|
||||
p.unread_book {
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
margin-left:2em;
|
||||
text-indent:-2em;
|
||||
}
|
||||
|
||||
p.wishlist_item {
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
margin-left:2em;
|
||||
text-indent:-2em;
|
||||
}
|
||||
|
||||
p.date_read {
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
margin-left:6em;
|
||||
text-indent:-6em;
|
||||
div.initial_letter {
|
||||
page-break-before:always;
|
||||
}
|
||||
|
||||
hr.annotations_divider {
|
||||
@ -164,6 +63,102 @@ hr.merged_comments_divider {
|
||||
border-left: solid white 0px;
|
||||
}
|
||||
|
||||
p.date_read {
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
margin-left:6em;
|
||||
text-indent:-6em;
|
||||
}
|
||||
|
||||
p.author {
|
||||
font-size:large;
|
||||
margin-top:0em;
|
||||
margin-bottom:0em;
|
||||
text-align: center;
|
||||
text-indent: 0em;
|
||||
}
|
||||
|
||||
p.author_index {
|
||||
font-size:large;
|
||||
font-weight:bold;
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:-2px;
|
||||
text-indent: 0em;
|
||||
}
|
||||
|
||||
p.author_title_letter_index {
|
||||
font-size:x-large;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
|
||||
p.date_index {
|
||||
font-size:x-large;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
margin-top:1em;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
|
||||
p.formats {
|
||||
font-size:90%;
|
||||
margin-top:0em;
|
||||
margin-bottom:0.5em;
|
||||
text-align: left;
|
||||
text-indent: 0.0in;
|
||||
}
|
||||
|
||||
p.genres {
|
||||
font-style:normal;
|
||||
margin-top:0.5em;
|
||||
margin-bottom:0em;
|
||||
text-align: left;
|
||||
text-indent: 0.0in;
|
||||
}
|
||||
|
||||
p.series {
|
||||
font-style:italic;
|
||||
margin-top:0.25em;
|
||||
margin-bottom:0em;
|
||||
margin-left:2em;
|
||||
text-align:left;
|
||||
text-indent:-2em;
|
||||
}
|
||||
|
||||
p.series_id {
|
||||
margin-top:0em;
|
||||
margin-bottom:0em;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
p.series_letter_index {
|
||||
font-size:x-large;
|
||||
text-align:center;
|
||||
font-weight:bold;
|
||||
margin-top:1em;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
|
||||
p.title {
|
||||
margin-top:0em;
|
||||
margin-bottom:0em;
|
||||
text-align:center;
|
||||
font-style:italic;
|
||||
font-size:xx-large;
|
||||
}
|
||||
|
||||
p.wishlist_item, p.unread_book, p.read_book {
|
||||
text-align:left;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
margin-left:2em;
|
||||
text-indent:-2em;
|
||||
}
|
||||
|
||||
td.publisher, td.date {
|
||||
font-weight:bold;
|
||||
text-align:center;
|
||||
|
@ -464,5 +464,14 @@ h2.library_name {
|
||||
max-height: 50%;
|
||||
}
|
||||
|
||||
.details a.details_category_link {
|
||||
text-decoration: none;
|
||||
color: blue
|
||||
}
|
||||
|
||||
.details a.details_category_link:hover {
|
||||
color: red
|
||||
}
|
||||
|
||||
/* }}} */
|
||||
|
||||
|
@ -108,8 +108,10 @@ function init() {
|
||||
function toplevel_layout() {
|
||||
var last = $(".toplevel li").last();
|
||||
var title = $('.toplevel h3').first();
|
||||
var bottom = last.position().top + last.height() - title.position().top;
|
||||
$("#main").height(Math.max(200, bottom+75));
|
||||
if (title && title.position()) {
|
||||
var bottom = last.position().top + last.height() - title.position().top;
|
||||
$("#main").height(Math.max(200, bottom+75));
|
||||
}
|
||||
}
|
||||
|
||||
function toplevel() {
|
||||
|
@ -10,7 +10,7 @@ you know what you are doing. If you delete this file, it will be recreated from
|
||||
defaults.
|
||||
'''
|
||||
|
||||
|
||||
#: Auto increment series index
|
||||
# The algorithm used to assign a new book in an existing series a series number.
|
||||
# New series numbers assigned using this tweak are always integer values, except
|
||||
# if a constant non-integer is specified.
|
||||
@ -29,10 +29,19 @@ defaults.
|
||||
# series_index_auto_increment = 16.5
|
||||
series_index_auto_increment = 'next'
|
||||
|
||||
#: Add separator after completing an author name
|
||||
# Should the completion separator be append
|
||||
# to the end of the completed text to
|
||||
# automatically begin a new completion operation
|
||||
# for authors.
|
||||
# Can be either True or False
|
||||
authors_completer_append_separator = False
|
||||
|
||||
|
||||
#: Author sort name algorithm
|
||||
# The algorithm used to copy author to author_sort
|
||||
# Possible values are:
|
||||
# invert: use "fn ln" -> "ln, fn" (the original algorithm)
|
||||
# invert: use "fn ln" -> "ln, fn" (the default algorithm)
|
||||
# copy : copy author to author_sort without modification
|
||||
# comma : use 'copy' if there is a ',' in the name, otherwise use 'invert'
|
||||
# nocomma : "fn ln" -> "ln fn" (without the comma)
|
||||
@ -41,6 +50,7 @@ series_index_auto_increment = 'next'
|
||||
# selecting 'manage authors', and pressing 'Recalculate all author sort values'.
|
||||
author_sort_copy_method = 'invert'
|
||||
|
||||
#: Use author sort in Tag Browser
|
||||
# Set which author field to display in the tags pane (the list of authors,
|
||||
# series, publishers etc on the left hand side). The choices are author and
|
||||
# author_sort. This tweak affects only what is displayed under the authors
|
||||
@ -55,6 +65,7 @@ author_sort_copy_method = 'invert'
|
||||
# categories_use_field_for_author_name = 'author_sort'
|
||||
categories_use_field_for_author_name = 'author'
|
||||
|
||||
#: Control partitioning of Tag Browser
|
||||
# When partitioning the tags browser, the format of the subcategory label is
|
||||
# controlled by a template: categories_collapsed_name_template if sorting by
|
||||
# name, categories_collapsed_rating_template if sorting by average rating, and
|
||||
@ -66,24 +77,25 @@ categories_use_field_for_author_name = 'author'
|
||||
# author category will be the name of the author. The sub-values available are:
|
||||
# name: the printable name of the item
|
||||
# count: the number of books that references this item
|
||||
# avg_rating: the averate rating of all the books referencing this item
|
||||
# avg_rating: the average rating of all the books referencing this item
|
||||
# sort: the sort value. For authors, this is the author_sort for that author
|
||||
# category: the category (e.g., authors, series) that the item is in.
|
||||
# Note that the "r'" in front of the { is necessary if there are backslashes
|
||||
# (\ characters) in the template. It doesn't hurt anything to leave it there
|
||||
# even if there aren't any backslashes.
|
||||
categories_collapsed_name_template = r'{first.sort:shorten(4,'',0)} - {last.sort:shorten(4,'',0)}'
|
||||
categories_collapsed_name_template = r'{first.sort:shorten(4,,0)} - {last.sort:shorten(4,,0)}'
|
||||
categories_collapsed_rating_template = r'{first.avg_rating:4.2f:ifempty(0)} - {last.avg_rating:4.2f:ifempty(0)}'
|
||||
categories_collapsed_popularity_template = r'{first.count:d} - {last.count:d}'
|
||||
|
||||
|
||||
#: Set boolean custom columns to be tristate
|
||||
# Set whether boolean custom columns are two- or three-valued.
|
||||
# Two-values for true booleans
|
||||
# three-values for yes/no/unknown
|
||||
# Set to 'yes' for three-values, 'no' for two-values
|
||||
bool_custom_columns_are_tristate = 'yes'
|
||||
|
||||
|
||||
#: Specify columns to sort the booklist by on startup
|
||||
# Provide a set of columns to be sorted on when calibre starts
|
||||
# The argument is None if saved sort history is to be used
|
||||
# otherwise it is a list of column,order pairs. Column is the
|
||||
@ -93,6 +105,7 @@ bool_custom_columns_are_tristate = 'yes'
|
||||
# title within authors.
|
||||
sort_columns_at_startup = None
|
||||
|
||||
#: Control how dates are displayed
|
||||
# Format to be used for publication date and the timestamp (date).
|
||||
# A string controlling how the publication date is displayed in the GUI
|
||||
# d the day as number without a leading zero (1 to 31)
|
||||
@ -113,25 +126,34 @@ sort_columns_at_startup = None
|
||||
gui_pubdate_display_format = 'MMM yyyy'
|
||||
gui_timestamp_display_format = 'dd MMM yyyy'
|
||||
|
||||
# Control title and series sorting in the library view.
|
||||
# If set to 'library_order', Leading articles such as The and A will be ignored.
|
||||
# If set to 'strictly_alphabetic', the titles will be sorted without processing
|
||||
# For example, with library_order, The Client will sort under 'C'. With
|
||||
# strictly_alphabetic, the book will sort under 'T'.
|
||||
#: Control sorting of titles and series in the library display
|
||||
# Control title and series sorting in the library view. If set to
|
||||
# 'library_order', the title sort field will be used instead of the title.
|
||||
# Unless you have manually edited the title sort field, leading articles such as
|
||||
# The and A will be ignored. If set to 'strictly_alphabetic', the titles will be
|
||||
# sorted as-is (sort by title instead of title sort). For example, with
|
||||
# library_order, The Client will sort under 'C'. With strictly_alphabetic, the
|
||||
# book will sort under 'T'.
|
||||
# This flag affects Calibre's library display. It has no effect on devices. In
|
||||
# addition, titles for books added before changing the flag will retain their
|
||||
# order until the title is edited. Double-clicking on a title and hitting return
|
||||
# without changing anything is sufficient to change the sort.
|
||||
title_series_sorting = 'library_order'
|
||||
|
||||
#: Control formatting of title and series when used in templates
|
||||
# Control how title and series names are formatted when saving to disk/sending
|
||||
# to device. If set to library_order, leading articles such as The and A will
|
||||
# be put at the end
|
||||
# If set to 'strictly_alphabetic', the titles will be sorted without processing
|
||||
# For example, with library_order, "The Client" will become "Client, The". With
|
||||
# strictly_alphabetic, it would remain "The Client".
|
||||
# to device. The behavior depends on the field being processed. If processing
|
||||
# title, then if this tweak is set to 'library_order', the title will be
|
||||
# replaced with title_sort. If it is set to 'strictly_alphabetic', then the
|
||||
# title will not be changed. If processing series, then if set to
|
||||
# 'library_order', articles such as 'The' and 'An' will be moved to the end. If
|
||||
# set to 'strictly_alphabetic', the series will be sent without change.
|
||||
# For example, if the tweak is set to library_order, "The Lord of the Rings"
|
||||
# will become "Lord of the Rings, The". If the tweak is set to
|
||||
# strictly_alphabetic, it would remain "The Lord of the Rings".
|
||||
save_template_title_series_sorting = 'library_order'
|
||||
|
||||
#: Set the list of words considered to be "articles" for sort strings
|
||||
# Set the list of words that are to be considered 'articles' when computing the
|
||||
# title sort strings. The list is a regular expression, with the articles
|
||||
# separated by 'or' bars. Comparisons are case insensitive, and that cannot be
|
||||
@ -141,7 +163,7 @@ save_template_title_series_sorting = 'library_order'
|
||||
# Default: '^(A|The|An)\s+'
|
||||
title_sort_articles=r'^(A|The|An)\s+'
|
||||
|
||||
|
||||
#: Specify a folder calibre should connect to at startup
|
||||
# Specify a folder that calibre should connect to at startup using
|
||||
# connect_to_folder. This must be a full path to the folder. If the folder does
|
||||
# not exist when calibre starts, it is ignored. If there are '\' characters in
|
||||
@ -151,7 +173,7 @@ title_sort_articles=r'^(A|The|An)\s+'
|
||||
# auto_connect_to_folder = '/home/dropbox/My Dropbox/someone/library'
|
||||
auto_connect_to_folder = ''
|
||||
|
||||
|
||||
#: Specify renaming rules for SONY collections
|
||||
# Specify renaming rules for sony collections. This tweak is only applicable if
|
||||
# metadata management is set to automatic. Collections on Sonys are named
|
||||
# depending upon whether the field is standard or custom. A collection derived
|
||||
@ -204,7 +226,7 @@ auto_connect_to_folder = ''
|
||||
sony_collection_renaming_rules={}
|
||||
sony_collection_name_template='{value}{category:| (|)}'
|
||||
|
||||
|
||||
#: Specify how SONY collections are sorted
|
||||
# Specify how sony collections are sorted. This tweak is only applicable if
|
||||
# metadata management is set to automatic. You can indicate which metadata is to
|
||||
# be used to sort on a collection-by-collection basis. The format of the tweak
|
||||
@ -223,28 +245,17 @@ sony_collection_name_template='{value}{category:| (|)}'
|
||||
sony_collection_sorting_rules = []
|
||||
|
||||
|
||||
# Create search terms to apply a query across several built-in search terms.
|
||||
# Syntax: {'new term':['existing term 1', 'term 2', ...], 'new':['old'...] ...}
|
||||
# Example: create the term 'myseries' that when used as myseries:foo would
|
||||
# search all of the search categories 'series', '#myseries', and '#myseries2':
|
||||
# grouped_search_terms={'myseries':['series','#myseries', '#myseries2']}
|
||||
# Example: two search terms 'a' and 'b' both that search 'tags' and '#mytags':
|
||||
# grouped_search_terms={'a':['tags','#mytags'], 'b':['tags','#mytags']}
|
||||
# Note: You cannot create a search term that is a duplicate of an existing term.
|
||||
# Such duplicates will be silently ignored. Also note that search terms ignore
|
||||
# case. 'MySearch' and 'mysearch' are the same term.
|
||||
grouped_search_terms = {}
|
||||
|
||||
|
||||
# Set this to True (not 'True') to ensure that tags in 'Tags to add when adding
|
||||
#: Control how tags are applied when copying books to another library
|
||||
# Set this to True to ensure that tags in 'Tags to add when adding
|
||||
# a book' are added when copying books to another library
|
||||
add_new_book_tags_when_importing_books = False
|
||||
|
||||
|
||||
# Set the maximum number of tags to show per book in the content server
|
||||
#: Set the maximum number of tags to show per book in the content server
|
||||
max_content_server_tags_shown=5
|
||||
|
||||
# Set custom metadata fields that the content server will or will not display.
|
||||
|
||||
#: Set custom metadata fields that the content server will or will not display.
|
||||
# content_server_will_display is a list of custom fields to be displayed.
|
||||
# content_server_wont_display is a list of custom fields not to be displayed.
|
||||
# wont_display has priority over will_display.
|
||||
@ -262,13 +273,27 @@ max_content_server_tags_shown=5
|
||||
content_server_will_display = ['*']
|
||||
content_server_wont_display = []
|
||||
|
||||
# Same as above (content server) but for the book details pane. Same syntax.
|
||||
#: Set custom metadata fields that the book details panel will or will not display.
|
||||
# book_details_will_display is a list of custom fields to be displayed.
|
||||
# book_details_wont_display is a list of custom fields not to be displayed.
|
||||
# wont_display has priority over will_display.
|
||||
# The special value '*' means all custom fields. The value [] means no entries.
|
||||
# Defaults:
|
||||
# book_details_will_display = ['*']
|
||||
# book_details_wont_display = []
|
||||
# Examples:
|
||||
# To display only the custom fields #mytags and #genre:
|
||||
# book_details_will_display = ['#mytags', '#genre']
|
||||
# book_details_wont_display = []
|
||||
# To display all fields except #mycomments:
|
||||
# book_details_will_display = ['*']
|
||||
# book_details_wont_display['#mycomments']
|
||||
# As above, this tweak affects only display of custom fields. The standard
|
||||
# fields are not affected
|
||||
book_details_will_display = ['*']
|
||||
book_details_wont_display = []
|
||||
|
||||
|
||||
#: Set the maximum number of sort 'levels'
|
||||
# Set the maximum number of sort 'levels' that calibre will use to resort the
|
||||
# library after certain operations such as searches or device insertion. Each
|
||||
# sort level adds a performance penalty. If the database is large (thousands of
|
||||
@ -276,16 +301,14 @@ book_details_wont_display = []
|
||||
# level sorts, and if you are seeing a slowdown, reduce the value of this tweak.
|
||||
maximum_resort_levels = 5
|
||||
|
||||
# Absolute path to a TTF font file to use as the font for the title and author
|
||||
# when generating a default cover. Useful if the default font (Liberation
|
||||
#: Specify which font to use when generating a default cover
|
||||
# Absolute path to .ttf font files to use as the fonts for the title, author
|
||||
# and footer when generating a default cover. Useful if the default font (Liberation
|
||||
# Serif) does not contain glyphs for the language of the books in your library.
|
||||
generate_cover_title_font = None
|
||||
|
||||
# Absolute path to a TTF font file to use as the font for the footer in the
|
||||
# default cover
|
||||
generate_cover_foot_font = None
|
||||
|
||||
|
||||
#: Control behavior of double clicks on the book list
|
||||
# Behavior of doubleclick on the books list. Choices: open_viewer, do_nothing,
|
||||
# edit_cell, edit_metadata. Selecting edit_metadata has the side effect of
|
||||
# disabling editing a field using a single click.
|
||||
@ -294,7 +317,8 @@ generate_cover_foot_font = None
|
||||
doubleclick_on_library_view = 'open_viewer'
|
||||
|
||||
|
||||
# Language to use when sorting. Setting this tweak will force sorting to use the
|
||||
#: Language to use when sorting.
|
||||
# Setting this tweak will force sorting to use the
|
||||
# collating order for the specified language. This might be useful if you run
|
||||
# calibre in English but want sorting to work in the language where you live.
|
||||
# Set the tweak to the desired ISO 639-1 language code, in lower case.
|
||||
@ -305,12 +329,13 @@ doubleclick_on_library_view = 'open_viewer'
|
||||
# Example: locale_for_sorting = 'nb' -- sort using Norwegian rules.
|
||||
locale_for_sorting = ''
|
||||
|
||||
|
||||
#: Number of columns for custom metadata in the edit metadata dialog
|
||||
# Set whether to use one or two columns for custom metadata when editing
|
||||
# metadata one book at a time. If True, then the fields are laid out using two
|
||||
# columns. If False, one column is used.
|
||||
metadata_single_use_2_cols_for_custom_fields = True
|
||||
|
||||
#: The number of seconds to wait before sending emails
|
||||
# The number of seconds to wait before sending emails when using a
|
||||
# public email server like gmail or hotmail. Default is: 5 minutes
|
||||
# Setting it to lower may cause the server's SPAM controls to kick in,
|
||||
@ -318,3 +343,9 @@ metadata_single_use_2_cols_for_custom_fields = True
|
||||
# calibre.
|
||||
public_smtp_relay_delay = 301
|
||||
|
||||
#: Remove the bright yellow lines at the edges of the book list
|
||||
# Control whether the bright yellow lines at the edges of book list are drawn
|
||||
# when a section of the user interface is hidden. Changes will take effect
|
||||
# after a restart of calibre.
|
||||
draw_hidden_section_indicators = True
|
||||
|
||||
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 6.2 KiB |
BIN
resources/images/news/20minutos.png
Normal file
After Width: | Height: | Size: 800 B |
BIN
resources/images/news/7seri.png
Normal file
After Width: | Height: | Size: 249 B |
BIN
resources/images/news/adevarul.png
Normal file
After Width: | Height: | Size: 401 B |
BIN
resources/images/news/aventurilapescuit.png
Normal file
After Width: | Height: | Size: 627 B |
BIN
resources/images/news/bighollywood.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
resources/images/news/capital.png
Normal file
After Width: | Height: | Size: 617 B |
BIN
resources/images/news/catavencu.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
resources/images/news/chipro.png
Normal file
After Width: | Height: | Size: 181 B |
BIN
resources/images/news/csid.png
Normal file
After Width: | Height: | Size: 340 B |
BIN
resources/images/news/curierulnational.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/images/news/de_standaard.png
Normal file
After Width: | Height: | Size: 834 B |
BIN
resources/images/news/descopera.png
Normal file
After Width: | Height: | Size: 686 B |
BIN
resources/images/news/ecuisine.png
Normal file
After Width: | Height: | Size: 501 B |
BIN
resources/images/news/egirl.png
Normal file
After Width: | Height: | Size: 507 B |
BIN
resources/images/news/fhmro.png
Normal file
After Width: | Height: | Size: 836 B |
BIN
resources/images/news/gandul.png
Normal file
After Width: | Height: | Size: 527 B |
BIN
resources/images/news/go4it.png
Normal file
After Width: | Height: | Size: 827 B |
BIN
resources/images/news/gsp.png
Normal file
After Width: | Height: | Size: 367 B |
BIN
resources/images/news/hotcity.png
Normal file
After Width: | Height: | Size: 722 B |
BIN
resources/images/news/hotnews.png
Normal file
After Width: | Height: | Size: 722 B |
BIN
resources/images/news/intrefete.png
Normal file
After Width: | Height: | Size: 411 B |
BIN
resources/images/news/jurnalulnational.png
Normal file
After Width: | Height: | Size: 863 B |
BIN
resources/images/news/kopalniawiedzy.png
Normal file
After Width: | Height: | Size: 466 B |
BIN
resources/images/news/korespondent.png
Normal file
After Width: | Height: | Size: 860 B |
BIN
resources/images/news/kudika.png
Normal file
After Width: | Height: | Size: 432 B |
BIN
resources/images/news/latimes.png
Normal file
After Width: | Height: | Size: 358 B |
BIN
resources/images/news/mediafax.png
Normal file
After Width: | Height: | Size: 657 B |
BIN
resources/images/news/moneyro.png
Normal file
After Width: | Height: | Size: 219 B |
BIN
resources/images/news/nationalgeoro.png
Normal file
After Width: | Height: | Size: 123 B |
BIN
resources/images/news/njuz_net.png
Normal file
After Width: | Height: | Size: 914 B |
BIN
resources/images/news/prosport.png
Normal file
After Width: | Height: | Size: 272 B |
BIN
resources/images/news/realitatea.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
resources/images/news/romanialibera.png
Normal file
After Width: | Height: | Size: 222 B |
BIN
resources/images/news/sfin.png
Normal file
After Width: | Height: | Size: 229 B |
BIN
resources/images/news/standardmoney.png
Normal file
After Width: | Height: | Size: 510 B |
BIN
resources/images/news/superbebe.png
Normal file
After Width: | Height: | Size: 307 B |
BIN
resources/images/news/tabu.png
Normal file
After Width: | Height: | Size: 441 B |
BIN
resources/images/news/unica.png
Normal file
After Width: | Height: | Size: 327 B |
BIN
resources/images/news/ziarulfinanciar.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/images/tb_folder.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
@ -113,8 +113,8 @@ table.cbj_header tr.cbj_series {
|
||||
/* display:none; */
|
||||
}
|
||||
|
||||
table.cbj_header tr.cbj_pubdate {
|
||||
/* Uncomment the next line to remove 'Published' from banner section */
|
||||
table.cbj_header tr.cbj_pubdata {
|
||||
/* Uncomment the next line to remove 'Published (year of publication)' from banner section */
|
||||
/* display:none; */
|
||||
}
|
||||
|
||||
|
@ -585,7 +585,6 @@ application/vnd.osa.netdeploy
|
||||
application/vnd.osgi.bundle
|
||||
application/vnd.osgi.dp dp
|
||||
application/vnd.otps.ct-kip+xml
|
||||
application/vnd.palm oprc pdb pqa
|
||||
application/vnd.paos.xml
|
||||
application/vnd.pg.format str
|
||||
application/vnd.pg.osasli ei6
|
||||
@ -1082,7 +1081,6 @@ chemical/x-ncbi-asn1 asn
|
||||
chemical/x-ncbi-asn1-ascii ent prt
|
||||
chemical/x-ncbi-asn1-binary aso val
|
||||
chemical/x-ncbi-asn1-spec asn
|
||||
chemical/x-pdb ent pdb
|
||||
chemical/x-rosdal ros
|
||||
chemical/x-swissprot sw
|
||||
chemical/x-vamas-iso14976 vms
|
||||
@ -1379,3 +1377,5 @@ application/x-cbr cbr
|
||||
application/x-cb7 cb7
|
||||
application/x-koboreader-ebook kobo
|
||||
image/wmf wmf
|
||||
application/ereader pdb
|
||||
|
||||
|
@ -12,7 +12,7 @@ class Noticias(BasicNewsRecipe):
|
||||
title = '180.com.uy'
|
||||
__author__ = 'Gustavo Azambuja'
|
||||
description = 'Noticias de Uruguay'
|
||||
language = 'es'
|
||||
language = 'es_UY'
|
||||
timefmt = '[%a, %d %b, %Y]'
|
||||
use_embedded_content = False
|
||||
recursion = 5
|
||||
|
@ -1,25 +1,25 @@
|
||||
# -*- coding: utf-8
|
||||
__license__ = 'GPL v3'
|
||||
__author__ = 'Luis Hernandez'
|
||||
__copyright__ = 'Luis Hernandez<tolyluis@gmail.com>'
|
||||
description = 'Periódico gratuito en español - v0.8 - 27 Jan 2011'
|
||||
__version__ = 'v0.85'
|
||||
__date__ = '31 January 2011'
|
||||
|
||||
'''
|
||||
www.20minutos.es
|
||||
'''
|
||||
|
||||
import re
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class AdvancedUserRecipe1294946868(BasicNewsRecipe):
|
||||
|
||||
title = u'20 Minutos'
|
||||
title = u'20 Minutos new'
|
||||
publisher = u'Grupo 20 Minutos'
|
||||
|
||||
__author__ = 'Luis Hernández'
|
||||
description = 'Periódico gratuito en español'
|
||||
__author__ = 'Luis Hernandez'
|
||||
description = 'Free spanish newspaper'
|
||||
cover_url = 'http://estaticos.20minutos.es/mmedia/especiales/corporativo/css/img/logotipos_grupo20minutos.gif'
|
||||
|
||||
oldest_article = 5
|
||||
oldest_article = 2
|
||||
max_articles_per_feed = 100
|
||||
|
||||
remove_javascript = True
|
||||
@ -29,6 +29,7 @@ class AdvancedUserRecipe1294946868(BasicNewsRecipe):
|
||||
encoding = 'ISO-8859-1'
|
||||
language = 'es'
|
||||
timefmt = '[%a, %d %b, %Y]'
|
||||
remove_empty_feeds = True
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='div', attrs={'id':['content','vinetas',]})
|
||||
@ -43,13 +44,21 @@ class AdvancedUserRecipe1294946868(BasicNewsRecipe):
|
||||
remove_tags = [
|
||||
dict(name='ol', attrs={'class':['navigation',]})
|
||||
,dict(name='span', attrs={'class':['action']})
|
||||
,dict(name='div', attrs={'class':['twitter comments-list hidden','related-news','col','photo-gallery','calendario','article-comment','postto estirar','otras_vinetas estirar','kment','user-actions']})
|
||||
,dict(name='div', attrs={'class':['twitter comments-list hidden','related-news','col','photo-gallery','photo-gallery side-art-block','calendario','article-comment','postto estirar','otras_vinetas estirar','kment','user-actions']})
|
||||
,dict(name='div', attrs={'id':['twitter-destacados','eco-tabs','inner','vineta_calendario','vinetistas clearfix','otras_vinetas estirar','MIN1','main','SUP1','INT']})
|
||||
,dict(name='ul', attrs={'class':['article-user-actions','stripped-list']})
|
||||
,dict(name='ul', attrs={'id':['site-links']})
|
||||
,dict(name='li', attrs={'class':['puntuacion','enviar','compartir']})
|
||||
]
|
||||
|
||||
extra_css = """
|
||||
p{text-align: justify; font-size: 100%}
|
||||
body{ text-align: left; font-size:100% }
|
||||
h3{font-family: sans-serif; font-size:150%; font-weight:bold; text-align: justify; }
|
||||
"""
|
||||
|
||||
preprocess_regexps = [(re.compile(r'<a href="http://estaticos.*?[0-999]px;" target="_blank">', re.DOTALL), lambda m: '')]
|
||||
|
||||
feeds = [
|
||||
(u'Portada' , u'http://www.20minutos.es/rss/')
|
||||
,(u'Nacional' , u'http://www.20minutos.es/rss/nacional/')
|
||||
@ -65,6 +74,6 @@ class AdvancedUserRecipe1294946868(BasicNewsRecipe):
|
||||
,(u'Empleo' , u'http://www.20minutos.es/rss/empleo/')
|
||||
,(u'Cine' , u'http://www.20minutos.es/rss/cine/')
|
||||
,(u'Musica' , u'http://www.20minutos.es/rss/musica/')
|
||||
,(u'Vinetas' , u'http://www.20minutos.es/rss/vinetas/')
|
||||
,(u'Vinetas' , u'http://www.20minutos.es/rss/vinetas/')
|
||||
,(u'Comunidad20' , u'http://www.20minutos.es/rss/zona20/')
|
||||
]
|
||||
|
68
resources/recipes/20minutos.recipe
Normal file
@ -0,0 +1,68 @@
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2011, Darko Miletic <darko.miletic at gmail.com>'
|
||||
'''
|
||||
www.20minutos.es
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class t20Minutos(BasicNewsRecipe):
|
||||
title = '20 Minutos'
|
||||
__author__ = 'Darko Miletic'
|
||||
description = 'Diario de informacion general y local mas leido de Espania, noticias de ultima hora de Espania, el mundo, local, deportes, noticias curiosas y mas'
|
||||
publisher = '20 Minutos Online SL'
|
||||
category = 'news, politics, Spain'
|
||||
oldest_article = 2
|
||||
max_articles_per_feed = 200
|
||||
no_stylesheets = True
|
||||
encoding = 'utf8'
|
||||
use_embedded_content = True
|
||||
language = 'es'
|
||||
remove_empty_feeds = True
|
||||
publication_type = 'newspaper'
|
||||
masthead_url = 'http://estaticos.20minutos.es/css4/img/ui/logo-301x54.png'
|
||||
extra_css = """
|
||||
body{font-family: Arial,Helvetica,sans-serif }
|
||||
img{margin-bottom: 0.4em; display:block}
|
||||
"""
|
||||
|
||||
conversion_options = {
|
||||
'comment' : description
|
||||
, 'tags' : category
|
||||
, 'publisher' : publisher
|
||||
, 'language' : language
|
||||
}
|
||||
|
||||
remove_tags = [dict(attrs={'class':'mf-viral'})]
|
||||
remove_attributes=['border']
|
||||
|
||||
feeds = [
|
||||
(u'Principal' , u'http://20minutos.feedsportal.com/c/32489/f/478284/index.rss')
|
||||
,(u'Cine' , u'http://20minutos.feedsportal.com/c/32489/f/478285/index.rss')
|
||||
,(u'Internacional' , u'http://20minutos.feedsportal.com/c/32489/f/492689/index.rss')
|
||||
,(u'Deportes' , u'http://20minutos.feedsportal.com/c/32489/f/478286/index.rss')
|
||||
,(u'Nacional' , u'http://20minutos.feedsportal.com/c/32489/f/492688/index.rss')
|
||||
,(u'Economia' , u'http://20minutos.feedsportal.com/c/32489/f/492690/index.rss')
|
||||
,(u'Tecnologia' , u'http://20minutos.feedsportal.com/c/32489/f/478292/index.rss')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
for item in soup.findAll(style=True):
|
||||
del item['style']
|
||||
for item in soup.findAll('a'):
|
||||
limg = item.find('img')
|
||||
if item.string is not None:
|
||||
str = item.string
|
||||
item.replaceWith(str)
|
||||
else:
|
||||
if limg:
|
||||
item.name = 'div'
|
||||
item.attrs = []
|
||||
else:
|
||||
str = self.tag_to_string(item)
|
||||
item.replaceWith(str)
|
||||
for item in soup.findAll('img'):
|
||||
if not item.has_key('alt'):
|
||||
item['alt'] = 'image'
|
||||
return soup
|
||||
|
@ -20,7 +20,7 @@ class SieteDias(BasicNewsRecipe):
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
encoding = 'utf-8'
|
||||
language = 'es'
|
||||
language = 'es_AR'
|
||||
|
||||
lang = 'es-AR'
|
||||
direction = 'ltr'
|
||||
|
51
resources/recipes/7seri.recipe
Normal file
@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
sapteseri.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class SapteSeri(BasicNewsRecipe):
|
||||
title = u'Sapte Seri'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = u'Sapte Seri'
|
||||
publisher = u'Sapte Seri'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare,Oras,Distractie,Fun'
|
||||
encoding = 'utf-8'
|
||||
remove_empty_feeds = True
|
||||
remove_javascript = True
|
||||
cover_url = 'http://www.sapteseri.ro/Images/logo.jpg'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='h1', attrs={'id':'title'})
|
||||
, dict(name='div', attrs={'class':'mt10 mb10'})
|
||||
, dict(name='div', attrs={'class':'mb20 mt10'})
|
||||
, dict(name='div', attrs={'class':'mt5 mb20'})
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'id':['entityimgworking']})
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Ce se intampla azi in Bucuresti', u'http://www.sapteseri.ro/ro/feed/ce-se-intampla-azi/bucuresti/')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
68
resources/recipes/abc_es.recipe
Normal file
@ -0,0 +1,68 @@
|
||||
__license__ = 'GPL v3'
|
||||
__author__ = 'Ricardo Jurado'
|
||||
__copyright__ = 'Ricardo Jurado'
|
||||
__version__ = 'v0.4'
|
||||
__date__ = '11 February 2011'
|
||||
|
||||
'''
|
||||
http://www.abc.es/
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class AdvancedUserRecipe1296604369(BasicNewsRecipe):
|
||||
|
||||
title = u'ABC.es'
|
||||
masthead_url = 'http://www.abc.es/img/logo-abc.gif'
|
||||
cover_url = 'http://www.abc.es/img/logo-abc.gif'
|
||||
publisher = u'Grupo VOCENTO'
|
||||
|
||||
__author__ = 'Ricardo Jurado'
|
||||
description = 'Noticias de Spain y el mundo'
|
||||
category = 'News,Spain,National,International,Economy'
|
||||
oldest_article = 2
|
||||
max_articles_per_feed = 10
|
||||
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
encoding = 'ISO-8859-1'
|
||||
remove_javascript = True
|
||||
language = 'es'
|
||||
|
||||
extra_css = """
|
||||
p{text-align: justify; font-size: 100%}
|
||||
body{ text-align: left; font-size:100% }
|
||||
h3{font-family: sans-serif; font-size:120%; font-weight:bold; text-align: justify; }
|
||||
h2{font-family: sans-serif; font-size:100%; font-weight:bold; text-align: justify; }
|
||||
h1{font-family: sans-serif; font-size:150%; font-weight:bold; text-align: justify; }
|
||||
"""
|
||||
|
||||
keep_only_tags = [
|
||||
# dict(name='h2', attrs={'class':['logos']}),
|
||||
dict(name='h3', attrs={'class':['overhead']}),
|
||||
dict(name='h1', attrs={'class':'headline'}),
|
||||
dict(name='h3', attrs={'class':['subhead']}),
|
||||
dict(name='div', attrs={'class':'datosi'}),
|
||||
dict(name='div', attrs={'class':'photo-alt1'}),
|
||||
dict(name='div', attrs={'class':'text'})
|
||||
]
|
||||
|
||||
# remove_tags_before = dict(name='div' , attrs={'id':['cabecera2']})
|
||||
|
||||
feeds = [
|
||||
(u'PORTADA', u'http://www.abc.es/rss/feeds/abcPortada.xml')
|
||||
,(u'ULTIMAS', u'http://www.abc.es/rss/feeds/abc_ultima.xml')
|
||||
,(u'NACIONAL', u'http://www.abc.es/rss/feeds/abc_EspanaEspana.xml')
|
||||
,(u'INTERNACIONAL', u'http://www.abc.es/rss/feeds/abc_Internacional.xml')
|
||||
,(u'OPINION', u'http://www.abc.es/rss/feeds/abc_opinioncompleto.xml')
|
||||
,(u'BLOGS ABC', u'http://www.abc.es/rss/feeds/blogs-abc.xml')
|
||||
,(u'ECONOMIA', u'http://www.abc.es/rss/feeds/abc_Economia.xml')
|
||||
,(u'CIENCIA Y TECNOLOGIA', u'http://www.abc.es/rss/feeds/abc_Ciencia_Tecnologia.xml')
|
||||
,(u'CULTURA', u'http://www.abc.es/rss/feeds/abc_Cultura.xml')
|
||||
,(u'LIBROS', u'http://www.abc.es/rss/feeds/abc_Libros.xml')
|
||||
,(u'MEDIOS Y REDES', u'http://www.abc.es/rss/feeds/ABC_Medios_Redes.xml')
|
||||
,(u'EVASION', u'http://www.abc.es/rss/feeds/abc_evasion.xml')
|
||||
,(u'ESPECTACULOS', u'http://www.abc.es/rss/feeds/abc_Espectaculos.xml')
|
||||
,(u'GENTE', u'http://www.abc.es/rss/feeds/abc_Gente.xml')
|
||||
,(u'DEPORTES', u'http://www.abc.es/rss/feeds/abc_Deportes.xml')
|
||||
]
|
59
resources/recipes/adevarul.recipe
Normal file
@ -0,0 +1,59 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
adevarul.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class Adevarul(BasicNewsRecipe):
|
||||
title = u'Adev\u0103rul'
|
||||
language = 'ro'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = u'\u0218tiri din Rom\u00e2nia'
|
||||
publisher = 'Adevarul'
|
||||
category = 'Ziare,Stiri,Romania'
|
||||
oldest_article = 5
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
encoding = 'utf-8'
|
||||
remove_javascript = True
|
||||
cover_url = 'http://upload.wikimedia.org/wikipedia/en/d/d6/Logo_noul_adevarul.png'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [ dict(name='div', attrs={'class':'article_header'})
|
||||
,dict(name='div', attrs={'class':'bb-tu first-t bb-article-body'})
|
||||
]
|
||||
|
||||
|
||||
remove_tags = [
|
||||
dict(name='li', attrs={'class':'author'})
|
||||
,dict(name='li', attrs={'class':'date'})
|
||||
,dict(name='li', attrs={'class':'comments'})
|
||||
,dict(name='div', attrs={'class':'bb-wg-article_related_attachements'})
|
||||
,dict(name='div', attrs={'class':'bb-md bb-md-article_comments'})
|
||||
,dict(name='form', attrs={'id':'bb-comment-create-form'})
|
||||
,dict(name='div', attrs={'id':'mediatag'})
|
||||
,dict(name='div', attrs={'id':'ft'})
|
||||
,dict(name='div', attrs={'id':'comment_wrapper'})
|
||||
]
|
||||
|
||||
remove_tags_after = [
|
||||
dict(name='div', attrs={'id':'comment_wrapper'}),
|
||||
]
|
||||
|
||||
feeds = [ (u'\u0218tiri', u'http://www.adevarul.ro/rss/latest') ]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
||||
|
@ -58,4 +58,4 @@ class Ambito(BasicNewsRecipe):
|
||||
del item['style']
|
||||
return soup
|
||||
|
||||
language = 'es'
|
||||
language = 'es_AR'
|
||||
|
@ -12,7 +12,7 @@ class AdvancedUserRecipe1290663986(BasicNewsRecipe):
|
||||
masthead_url = 'http://www.animalpolitico.com/wp-content/themes/animal_mu/images/logo.png'
|
||||
oldest_article = 1
|
||||
max_articles_per_feed = 100
|
||||
language = 'es'
|
||||
language = 'es_MX'
|
||||
|
||||
#feeds = [(u'Animal Politico', u'http://www.animalpolitico.com/feed/')]
|
||||
|
||||
|
161
resources/recipes/apple_daily.recipe
Normal file
@ -0,0 +1,161 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import re
|
||||
from calibre.web.feeds.recipes import BasicNewsRecipe
|
||||
|
||||
class AppleDaily(BasicNewsRecipe):
|
||||
|
||||
title = u'蘋果日報'
|
||||
__author__ = u'蘋果日報'
|
||||
__publisher__ = u'蘋果日報'
|
||||
description = u'蘋果日報'
|
||||
masthead_url = 'http://hk.apple.nextmedia.com/template/common/header/2009/images/atnextheader_logo_appledaily.gif'
|
||||
language = 'zh_TW'
|
||||
encoding = 'UTF-8'
|
||||
timefmt = ' [%a, %d %b, %Y]'
|
||||
needs_subscription = False
|
||||
remove_javascript = True
|
||||
remove_tags_before = dict(name=['ul', 'h1'])
|
||||
remove_tags_after = dict(name='form')
|
||||
remove_tags = [dict(attrs={'class':['articleTools', 'post-tools', 'side_tool', 'nextArticleLink clearfix']}),
|
||||
dict(id=['footer', 'toolsRight', 'articleInline', 'navigation', 'archive', 'side_search', 'blog_sidebar', 'side_tool', 'side_index']),
|
||||
dict(name=['script', 'noscript', 'style', 'form'])]
|
||||
no_stylesheets = True
|
||||
extra_css = '''
|
||||
@font-face {font-family: "uming", serif, sans-serif; src: url(res:///usr/share/fonts/truetype/arphic/uming.ttc); }\n
|
||||
body {margin-right: 8pt; font-family: 'uming', serif;}
|
||||
h1 {font-family: 'uming', serif, sans-serif}
|
||||
'''
|
||||
#extra_css = 'h1 {font: sans-serif large;}\n.byline {font:monospace;}'
|
||||
|
||||
preprocess_regexps = [
|
||||
(re.compile(r'img.php?server=(?P<server>[^&]+)&path=(?P<path>[^&]+).*', re.DOTALL|re.IGNORECASE),
|
||||
lambda match: 'http://' + match.group('server') + '/' + match.group('path')),
|
||||
]
|
||||
|
||||
def get_cover_url(self):
|
||||
return 'http://hk.apple.nextmedia.com/template/common/header/2009/images/atnextheader_logo_appledaily.gif'
|
||||
|
||||
|
||||
#def get_browser(self):
|
||||
#br = BasicNewsRecipe.get_browser()
|
||||
#if self.username is not None and self.password is not None:
|
||||
# br.open('http://www.nytimes.com/auth/login')
|
||||
# br.select_form(name='login')
|
||||
# br['USERID'] = self.username
|
||||
# br['PASSWORD'] = self.password
|
||||
# br.submit()
|
||||
#return br
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
#process all the images
|
||||
for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')):
|
||||
iurl = tag['src']
|
||||
#print 'checking image: ' + iurl
|
||||
|
||||
#img\.php?server\=(?P<server>[^&]+)&path=(?P<path>[^&]+)
|
||||
p = re.compile(r'img\.php\?server=(?P<server>[^&]+)&path=(?P<path>[^&]+)', re.DOTALL|re.IGNORECASE)
|
||||
|
||||
m = p.search(iurl)
|
||||
|
||||
if m is not None:
|
||||
iurl = 'http://' + m.group('server') + '/' + m.group('path')
|
||||
#print 'working! new url: ' + iurl
|
||||
tag['src'] = iurl
|
||||
#else:
|
||||
#print 'not good'
|
||||
|
||||
for tag in soup.findAll(lambda tag: tag.name.lower()=='a' and tag.has_key('href')):
|
||||
iurl = tag['href']
|
||||
#print 'checking image: ' + iurl
|
||||
|
||||
#img\.php?server\=(?P<server>[^&]+)&path=(?P<path>[^&]+)
|
||||
p = re.compile(r'img\.php\?server=(?P<server>[^&]+)&path=(?P<path>[^&]+)', re.DOTALL|re.IGNORECASE)
|
||||
|
||||
m = p.search(iurl)
|
||||
|
||||
if m is not None:
|
||||
iurl = 'http://' + m.group('server') + '/' + m.group('path')
|
||||
#print 'working! new url: ' + iurl
|
||||
tag['href'] = iurl
|
||||
#else:
|
||||
#print 'not good'
|
||||
|
||||
return soup
|
||||
|
||||
|
||||
def parse_index(self):
|
||||
base = 'http://news.hotpot.hk/fruit'
|
||||
soup = self.index_to_soup('http://news.hotpot.hk/fruit/index.php')
|
||||
|
||||
#def feed_title(div):
|
||||
# return ''.join(div.findAll(text=True, recursive=False)).strip()
|
||||
|
||||
articles = {}
|
||||
key = None
|
||||
ans = []
|
||||
for div in soup.findAll('li'):
|
||||
key = div.find(text=True, recursive=True);
|
||||
#if key == u'豪情':
|
||||
# continue;
|
||||
|
||||
print 'section=' + key
|
||||
|
||||
articles[key] = []
|
||||
|
||||
ans.append(key)
|
||||
|
||||
a = div.find('a', href=True)
|
||||
|
||||
if not a:
|
||||
continue
|
||||
|
||||
url = base + '/' + a['href']
|
||||
print 'url=' + url
|
||||
|
||||
if not articles.has_key(key):
|
||||
articles[key] = []
|
||||
else:
|
||||
# sub page
|
||||
subSoup = self.index_to_soup(url)
|
||||
|
||||
for subDiv in subSoup.findAll('li'):
|
||||
subA = subDiv.find('a', href=True)
|
||||
subTitle = subDiv.find(text=True, recursive=True)
|
||||
subUrl = base + '/' + subA['href']
|
||||
|
||||
print 'subUrl' + subUrl
|
||||
|
||||
articles[key].append(
|
||||
dict(title=subTitle,
|
||||
url=subUrl,
|
||||
date='',
|
||||
description='',
|
||||
content=''))
|
||||
|
||||
|
||||
# elif div['class'] in ['story', 'story headline']:
|
||||
# a = div.find('a', href=True)
|
||||
# if not a:
|
||||
# continue
|
||||
# url = re.sub(r'\?.*', '', a['href'])
|
||||
# url += '?pagewanted=all'
|
||||
# title = self.tag_to_string(a, use_alt=True).strip()
|
||||
# description = ''
|
||||
# pubdate = strftime('%a, %d %b')
|
||||
# summary = div.find(True, attrs={'class':'summary'})
|
||||
# if summary:
|
||||
# description = self.tag_to_string(summary, use_alt=False)
|
||||
#
|
||||
# feed = key if key is not None else 'Uncategorized'
|
||||
# if not articles.has_key(feed):
|
||||
# articles[feed] = []
|
||||
# if not 'podcasts' in url:
|
||||
# articles[feed].append(
|
||||
# dict(title=title, url=url, date=pubdate,
|
||||
# description=description,
|
||||
# content=''))
|
||||
# ans = self.sort_index_by(ans, {'The Front Page':-1, 'Dining In, Dining Out':1, 'Obituaries':2})
|
||||
ans = [(unicode(key), articles[key]) for key in ans if articles.has_key(key)]
|
||||
return ans
|
||||
|
||||
|
0
resources/recipes/aprospect.recipe
Executable file → Normal file
51
resources/recipes/aventurilapescuit.recipe
Normal file
@ -0,0 +1,51 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
aventurilapescuit.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class AventuriLaPescuit(BasicNewsRecipe):
|
||||
title = u'Aventuri La Pescuit'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = 'Aventuri La Pescuit'
|
||||
publisher = 'Aventuri La Pescuit'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare,Pescuit,Hobby'
|
||||
encoding = 'utf-8'
|
||||
cover_url = 'http://www.aventurilapescuit.ro/images/logo.gif'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='div', attrs={'id':'Article'})
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'class':['right option']})
|
||||
, dict(name='iframe', attrs={'scrolling':['no']})
|
||||
]
|
||||
|
||||
remove_tags_after = [
|
||||
dict(name='iframe', attrs={'scrolling':['no']})
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Feeds', u'http://www.aventurilapescuit.ro/sections/rssread/1')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
@ -17,7 +17,7 @@ class Axxon_news(BasicNewsRecipe):
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = False
|
||||
use_embedded_content = False
|
||||
language = 'es'
|
||||
language = 'es_AR'
|
||||
encoding = 'utf-8'
|
||||
publication_type = 'magazine'
|
||||
INDEX = 'http://axxon.com.ar/rev/'
|
||||
|
@ -18,7 +18,7 @@ class Axxon_news(BasicNewsRecipe):
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = False
|
||||
use_embedded_content = False
|
||||
language = 'es'
|
||||
language = 'es_AR'
|
||||
|
||||
lang = 'es-AR'
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008-2010, Darko Miletic <darko.miletic at gmail.com>'
|
||||
__copyright__ = '2008-2011, Darko Miletic <darko.miletic at gmail.com>'
|
||||
'''
|
||||
b92.net
|
||||
'''
|
||||
@ -10,7 +10,7 @@ from calibre.web.feeds.news import BasicNewsRecipe
|
||||
class B92(BasicNewsRecipe):
|
||||
title = 'B92'
|
||||
__author__ = 'Darko Miletic'
|
||||
description = 'B92 info, najnovije vesti iz Srbije, regiona i sveta'
|
||||
description = 'Najnovije vesti iz Srbije, regiona i sveta, aktuelne teme iz sveta politike, ekonomije, drustva, foto galerija, kolumne'
|
||||
publisher = 'B92'
|
||||
category = 'news, politics, Serbia'
|
||||
oldest_article = 2
|
||||
@ -20,34 +20,44 @@ class B92(BasicNewsRecipe):
|
||||
encoding = 'cp1250'
|
||||
language = 'sr'
|
||||
publication_type = 'newsportal'
|
||||
extra_css = ' @font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} body{font-family: serif1, serif} .article_description{font-family: serif1, serif} '
|
||||
masthead_url = 'http://www.b92.net/images/fp/logo.gif'
|
||||
extra_css = """
|
||||
@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)}
|
||||
@font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)}
|
||||
body{font-family: Arial,Helvetica,sans1,sans-serif}
|
||||
.articledescription{font-family: serif1, serif}
|
||||
.article-info2,.article-info1{text-transform: uppercase; font-size: small}
|
||||
"""
|
||||
|
||||
conversion_options = {
|
||||
'comment' : description
|
||||
, 'tags' : category
|
||||
, 'publisher' : publisher
|
||||
, 'language' : language
|
||||
'comment' : description
|
||||
, 'tags' : category
|
||||
, 'publisher': publisher
|
||||
, 'language' : language
|
||||
, 'linearize_tables' : True
|
||||
}
|
||||
|
||||
preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')]
|
||||
|
||||
keep_only_tags = [dict(name='table', attrs={'class':'maindocument'})]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='ul', attrs={'class':'comment-nav'})
|
||||
,dict(name=['embed','link','base'] )
|
||||
,dict(name='div', attrs={'class':'udokum'} )
|
||||
]
|
||||
keep_only_tags = [dict(attrs={'class':['article-info1','article-text']})]
|
||||
remove_attributes = ['width','height','align','hspace','vspace','border']
|
||||
remove_tags = [dict(name=['embed','link','base','meta'])]
|
||||
|
||||
feeds = [
|
||||
(u'Vesti', u'http://www.b92.net/info/rss/vesti.xml')
|
||||
,(u'Biz' , u'http://www.b92.net/info/rss/biz.xml' )
|
||||
(u'Vesti' , u'http://www.b92.net/info/rss/vesti.xml' )
|
||||
,(u'Biz' , u'http://www.b92.net/info/rss/biz.xml' )
|
||||
,(u'Sport' , u'http://www.b92.net/info/rss/sport.xml' )
|
||||
,(u'Zivot' , u'http://www.b92.net/info/rss/zivot.xml' )
|
||||
,(u'Kultura' , u'http://www.b92.net/info/rss/kultura.xml' )
|
||||
,(u'Automobili' , u'http://www.b92.net/info/rss/automobili.xml')
|
||||
,(u'Tehnopolis' , u'http://www.b92.net/info/rss/tehnopolis.xml')
|
||||
]
|
||||
|
||||
def print_version(self, url):
|
||||
return url + '&version=print'
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
||||
|
||||
for item in soup.findAll(style=True):
|
||||
del item['style']
|
||||
for alink in soup.findAll('a'):
|
||||
if alink.string is not None:
|
||||
tstr = alink.string
|
||||
alink.replaceWith(tstr)
|
||||
return soup
|
||||
|
63
resources/recipes/bighollywood.recipe
Normal file
@ -0,0 +1,63 @@
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2011, Darko Miletic <darko.miletic at gmail.com>'
|
||||
'''
|
||||
bighollywood.breitbart.com
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class BigHollywood(BasicNewsRecipe):
|
||||
title = 'Big Hollywood'
|
||||
__author__ = 'Darko Miletic'
|
||||
description = 'News and articles from the media world'
|
||||
publisher = 'Big Hollywood'
|
||||
category = 'news, media, art, literature, movies, politics, USA, Hollywood'
|
||||
oldest_article = 7
|
||||
max_articles_per_feed = 200
|
||||
no_stylesheets = True
|
||||
encoding = 'utf8'
|
||||
use_embedded_content = False
|
||||
language = 'en'
|
||||
remove_empty_feeds = True
|
||||
publication_type = 'blog'
|
||||
extra_css = """
|
||||
body{font-family: Arial,sans-serif }
|
||||
"""
|
||||
|
||||
conversion_options = {
|
||||
'comment' : description
|
||||
, 'tags' : category
|
||||
, 'publisher' : publisher
|
||||
, 'language' : language
|
||||
}
|
||||
|
||||
keep_only_tags=[dict(attrs={'class':'postcontent'})]
|
||||
remove_tags = [
|
||||
dict(name=['meta','link','link','iframe','embed','object'])
|
||||
,dict(name='p', attrs={'class':['post_meta_links','postfooter']})
|
||||
]
|
||||
remove_attributes=['original','onclick']
|
||||
|
||||
feeds = [(u'Articles', u'http://bighollywood.breitbart.com/feed/')]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
for item in soup.findAll(style=True):
|
||||
del item['style']
|
||||
for item in soup.findAll('a'):
|
||||
limg = item.find('img')
|
||||
if item.string is not None:
|
||||
str = item.string
|
||||
item.replaceWith(str)
|
||||
else:
|
||||
if limg:
|
||||
if limg['src'].endswith('BlogPrintButton.png'):
|
||||
limg.extract()
|
||||
item.name = 'div'
|
||||
item.attrs = []
|
||||
else:
|
||||
str = self.tag_to_string(item)
|
||||
item.replaceWith(str)
|
||||
for item in soup.findAll('img'):
|
||||
if not item.has_key('alt'):
|
||||
item['alt'] = 'image'
|
||||
return soup
|
@ -12,7 +12,7 @@ class General(BasicNewsRecipe):
|
||||
title = 'bitacora.com.uy'
|
||||
__author__ = 'Gustavo Azambuja'
|
||||
description = 'Noticias de Uruguay'
|
||||
language = 'es'
|
||||
language = 'es_UY'
|
||||
timefmt = '[%a, %d %b, %Y]'
|
||||
use_embedded_content = False
|
||||
recursion = 5
|
||||
|
@ -20,7 +20,7 @@ class BsAsEconomico(BasicNewsRecipe):
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
encoding = 'utf-8'
|
||||
language = 'es'
|
||||
language = 'es_AR'
|
||||
|
||||
lang = 'es-AR'
|
||||
direction = 'ltr'
|
||||
|
44
resources/recipes/capital.recipe
Normal file
@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
capital.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class Capital(BasicNewsRecipe):
|
||||
title = 'Capital'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = u'\u0218tiri din Rom\u00e2nia'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare,Stiri,Romania'
|
||||
encoding = 'utf-8'
|
||||
remove_javascript = True
|
||||
publisher = 'Capital'
|
||||
cover_url = 'http://www.mediapress.ro/imagini/sigla-capital-s16.gif'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [ dict(name='div', attrs={'class':'single one_article'})
|
||||
]
|
||||
|
||||
remove_tags = [ dict(name='div', attrs={'class':'single_details'})
|
||||
, dict(name='div', attrs={'class':'tx-addoceansbanners-pi1'})
|
||||
]
|
||||
|
||||
feeds = [(u'\u0218tiri', u'http://www.capital.ro/rss.html') ]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
53
resources/recipes/catavencu.recipe
Normal file
@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
catavencu.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class Catavencu(BasicNewsRecipe):
|
||||
title = u'Academia Ca\u0163avencu'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = 'Tagma cum laude'
|
||||
publisher = 'Catavencu'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare'
|
||||
encoding = 'utf-8'
|
||||
cover_url = 'http://upload.wikimedia.org/wikipedia/en/1/1e/Academia_Catavencu.jpg'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='ul', attrs={'class':'articles'})
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'class':['tools']})
|
||||
, dict(name='div', attrs={'class':['share']})
|
||||
, dict(name='div', attrs={'class':['category']})
|
||||
, dict(name='div', attrs={'id':['comments']})
|
||||
]
|
||||
|
||||
remove_tags_after = [
|
||||
dict(name='div', attrs={'id':'comments'})
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Feeds', u'http://catavencu.ro/feed/rss')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
52
resources/recipes/chipro.recipe
Normal file
@ -0,0 +1,52 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
chip.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class ChipRo(BasicNewsRecipe):
|
||||
title = u'Chip Online'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = 'Chip Online'
|
||||
publisher = 'Chip Online'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare,Reviste,IT'
|
||||
encoding = 'utf-8'
|
||||
cover_url = 'http://www.chip.ro/images/logo.png'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='h2', attrs={'class':'contentheading clearfix'})
|
||||
, dict(name='span', attrs={'class':'createby'})
|
||||
, dict(name='div', attrs={'class':'article-content'})
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'class':['sharemecompactbutton']})
|
||||
,dict(name='div', attrs={'align':['left']})
|
||||
,dict(name='div', attrs={'align':['center']})
|
||||
,dict(name='th', attrs={'class':['pagenav_prev']})
|
||||
,dict(name='table', attrs={'class':['pagenav']})
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Feeds', u'http://www.chip.ro/index.php?option=com_ninjarsssyndicator&feed_id=9&format=raw')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
71
resources/recipes/cinco_dias.recipe
Normal file
@ -0,0 +1,71 @@
|
||||
__license__ = 'GPL v3'
|
||||
__author__ = 'Luis Hernandez'
|
||||
__copyright__ = 'Luis Hernandez<tolyluis@gmail.com>'
|
||||
__version__ = 'v1.2'
|
||||
__date__ = '31 January 2011'
|
||||
|
||||
'''
|
||||
http://www.cincodias.com/
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class AdvancedUserRecipe1294946868(BasicNewsRecipe):
|
||||
|
||||
title = u'Cinco Dias'
|
||||
publisher = u'Grupo Prisa'
|
||||
|
||||
__author__ = 'Luis Hernandez'
|
||||
description = 'spanish web about money and bussiness, free edition'
|
||||
|
||||
cover_url = 'http://www.prisa.com/images/logos/logo_cinco_dias.gif'
|
||||
oldest_article = 2
|
||||
max_articles_per_feed = 100
|
||||
|
||||
remove_javascript = True
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
|
||||
language = 'es'
|
||||
remove_empty_feeds = True
|
||||
encoding = 'ISO-8859-1'
|
||||
timefmt = '[%a, %d %b, %Y]'
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='div', attrs={'class':['cab_articulo cab_noticia','pos_3','txt_noticia','mod_despiece']})
|
||||
,dict(name='p', attrs={'class':['cintillo']})
|
||||
]
|
||||
|
||||
remove_tags_before = dict(name='div' , attrs={'class':['publi_h']})
|
||||
remove_tags_after = dict(name='div' , attrs={'class':['tab_util util_estadisticas']})
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'class':['util-1','util-2','util-3','inner estirar','inner1','inner2','inner3','cont','tab_util util_estadisticas','tab_util util_enviar','mod_list_inf','mod_similares','mod_divisas','mod_sectores','mod_termometro','mod post','mod_img','mod_txt','nivel estirar','barra estirar','info_brujula btnBrujula','utilidad_brujula estirar']})
|
||||
,dict(name='li', attrs={'class':['lnk-fcbook','lnk-retweet','lnk-meneame','desplegable','comentarios','list-options','estirar']})
|
||||
,dict(name='ul', attrs={'class':['lista-izquierda','list-options','estirar']})
|
||||
,dict(name='p', attrs={'class':['autor']})
|
||||
]
|
||||
|
||||
extra_css = """
|
||||
p{text-align: justify; font-size: 100%}
|
||||
body{ text-align: left; font-size:100% }
|
||||
h1{font-family: sans-serif; font-size:150%; font-weight:bold; text-align: justify; }
|
||||
h3{font-family: sans-serif; font-size:100%; font-style: italic; text-align: justify; }
|
||||
"""
|
||||
|
||||
feeds = [
|
||||
(u'Ultima Hora' , u'http://www.cincodias.com/rss/feed.html?feedId=17029')
|
||||
,(u'Empresas' , u'http://www.cincodias.com/rss/feed.html?feedId=19')
|
||||
,(u'Mercados' , u'http://www.cincodias.com/rss/feed.html?feedId=20')
|
||||
,(u'Economia' , u'http://www.cincodias.com/rss/feed.html?feedId=21')
|
||||
,(u'Tecnorama' , u'http://www.cincodias.com/rss/feed.html?feedId=17230')
|
||||
,(u'Tecnologia' , u'http://www.cincodias.com/rss/feed.html?feedId=17106')
|
||||
,(u'Finanzas Personales' , u'http://www.cincodias.com/rss/feed.html?feedId=22')
|
||||
,(u'Fiscalidad' , u'http://www.cincodias.com/rss/feed.html?feedId=17107')
|
||||
,(u'Vivienda' , u'http://www.cincodias.com/rss/feed.html?feedId=17108')
|
||||
,(u'Tendencias' , u'http://www.cincodias.com/rss/feed.html?feedId=17109')
|
||||
,(u'Empleo' , u'http://www.cincodias.com/rss/feed.html?feedId=17110')
|
||||
,(u'IBEX 35' , u'http://www.cincodias.com/rss/feed.html?feedId=17125')
|
||||
,(u'Sectores' , u'http://www.cincodias.com/rss/feed.html?feedId=17126')
|
||||
,(u'Opinion' , u'http://www.cincodias.com/rss/feed.html?feedId=17105')
|
||||
]
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Lionel Bergeret <lbergeret at gmail.com>'
|
||||
__copyright__ = '2008-2011, Lionel Bergeret <lbergeret at gmail.com>'
|
||||
'''
|
||||
cinebel.be
|
||||
'''
|
||||
@ -14,14 +14,14 @@ class Cinebel(BasicNewsRecipe):
|
||||
description = u'Cinema news from Belgium in French'
|
||||
publisher = u'cinebel.be'
|
||||
category = 'news, cinema, movie, Belgium'
|
||||
oldest_article = 3
|
||||
encoding = 'utf8'
|
||||
language = 'fr_BE'
|
||||
oldest_article = 15
|
||||
language = 'fr'
|
||||
|
||||
max_articles_per_feed = 20
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
timefmt = ' [%d %b %Y]'
|
||||
filterDuplicates = True
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name = 'span', attrs = {'class': 'movieMainTitle'})
|
||||
@ -35,6 +35,13 @@ class Cinebel(BasicNewsRecipe):
|
||||
,(u'Top 10' , u'http://www.cinebel.be/Servlets/RssServlet?languageCode=fr&rssType=2' )
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
for alink in soup.findAll('a'):
|
||||
if alink.has_key('href'):
|
||||
tstr = "Site officiel: " + alink['href']
|
||||
alink.replaceWith(tstr)
|
||||
return soup
|
||||
|
||||
def get_cover_url(self):
|
||||
cover_url = 'http://www.cinebel.be/portal/resources/common/logo_index.gif'
|
||||
return cover_url
|
||||
|
@ -18,7 +18,7 @@ class Clarin(BasicNewsRecipe):
|
||||
use_embedded_content = False
|
||||
no_stylesheets = True
|
||||
encoding = 'utf8'
|
||||
language = 'es'
|
||||
language = 'es_AR'
|
||||
publication_type = 'newspaper'
|
||||
INDEX = 'http://www.clarin.com'
|
||||
masthead_url = 'http://www.clarin.com/static/CLAClarin/images/logo-clarin-print.jpg'
|
||||
|
35
resources/recipes/credit_slips.recipe
Normal file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env python
|
||||
__license__ = 'GPL 3'
|
||||
__copyright__ = 'zotzot'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
|
||||
class CreditSlips(BasicNewsRecipe):
|
||||
__license__ = 'GPL v3'
|
||||
__author__ = 'zotzot'
|
||||
language = 'en'
|
||||
version = 1
|
||||
title = u'Credit Slips.org'
|
||||
publisher = u'Bankr-L'
|
||||
category = u'Economic blog'
|
||||
description = u'All things about credit.'
|
||||
cover_url = 'http://bit.ly/hyZSTr'
|
||||
oldest_article = 50
|
||||
max_articles_per_feed = 100
|
||||
use_embedded_content = True
|
||||
|
||||
feeds = [
|
||||
(u'Credit Slips', u'http://www.creditslips.org/creditslips/atom.xml')
|
||||
]
|
||||
conversion_options = {
|
||||
'comments': description,
|
||||
'tags': category,
|
||||
'language': 'en',
|
||||
'publisher': publisher
|
||||
}
|
||||
extra_css = '''
|
||||
body{font-family:verdana,arial,helvetica,geneva,sans-serif;}
|
||||
img {float: left; margin-right: 0.5em;}
|
||||
'''
|
@ -14,7 +14,7 @@ class CriticaDigital(BasicNewsRecipe):
|
||||
description = 'Noticias de Argentina'
|
||||
oldest_article = 2
|
||||
max_articles_per_feed = 100
|
||||
language = 'es'
|
||||
language = 'es_AR'
|
||||
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
|
52
resources/recipes/csid.recipe
Normal file
@ -0,0 +1,52 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
csid.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class CSID(BasicNewsRecipe):
|
||||
title = u'Ce se \u00eent\u00e2mpl\u0103 doctore?'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = u'Ce se \u00eent\u00e2mpl\u0103 doctore?'
|
||||
publisher = 'CSID'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare,Reviste,Femei,Health,Beauty'
|
||||
encoding = 'utf-8'
|
||||
cover_url = 'http://www.csid.ro/images/default/csid.gif'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='div', attrs={'class':'content floatleft'})
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'id':['article_links']})
|
||||
, dict(name='div', attrs={'id':['tags']})
|
||||
, dict(name='p', attrs={'id':['tags']})
|
||||
]
|
||||
|
||||
remove_tags_after = [
|
||||
dict(name='p', attrs={'id':['tags']})
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Feeds', u'http://www.csid.ro/rss/')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
@ -11,7 +11,7 @@ class CubaDebate(BasicNewsRecipe):
|
||||
__author__ = 'Darko Miletic'
|
||||
description = 'Contra el Terorismo Mediatico'
|
||||
oldest_article = 15
|
||||
language = 'es'
|
||||
language = 'es_CU'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
|
54
resources/recipes/curierulnational.recipe
Normal file
@ -0,0 +1,54 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
curierulnational.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class CurierulNal(BasicNewsRecipe):
|
||||
title = u'Curierul Na\u0163ional'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = ''
|
||||
publisher = 'Curierul Na\u0163ional'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare,Stiri'
|
||||
encoding = 'utf-8'
|
||||
cover_url = 'http://www.curierulnational.ro/logo.gif'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='div', attrs={'id':'col1'})
|
||||
, dict(name='img', attrs={'id':'placeholder'})
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='p', attrs={'id':['alteArticole']})
|
||||
, dict(name='div', attrs={'id':['textSize']})
|
||||
, dict(name='ul', attrs={'class':['unit-rating']})
|
||||
, dict(name='div', attrs={'id':['comments']})
|
||||
]
|
||||
|
||||
remove_tags_after = [
|
||||
dict(name='ul', attrs={'class':'unit-rating'})
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Feeds', u'http://www.curierulnational.ro/feed.xml')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
@ -1,5 +1,5 @@
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = '2008, Darko Miletic <darko.miletic at gmail.com>'
|
||||
__copyright__ = '2008-2011, Darko Miletic <darko.miletic at gmail.com>'
|
||||
'''
|
||||
standaard.be
|
||||
'''
|
||||
@ -9,14 +9,15 @@ from calibre.web.feeds.news import BasicNewsRecipe
|
||||
class DeStandaard(BasicNewsRecipe):
|
||||
title = u'De Standaard'
|
||||
__author__ = u'Darko Miletic'
|
||||
language = 'nl_BE'
|
||||
|
||||
language = 'nl_BE'
|
||||
description = u'News from Belgium in Dutch'
|
||||
oldest_article = 7
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
encoding = 'utf-8'
|
||||
masthead_url = 'http://www.standaard.be/extra/css/images/masthead/logo_340x45.png'
|
||||
publication_type = 'newspaper'
|
||||
|
||||
keep_only_tags = [dict(name='div' , attrs={'id':['intro','continued']})]
|
||||
|
||||
@ -27,4 +28,4 @@ class DeStandaard(BasicNewsRecipe):
|
||||
return article.get('guid', None)
|
||||
|
||||
def print_version(self, url):
|
||||
return url.replace('/Detail.aspx?','/PrintArtikel.aspx?')
|
||||
return url.replace('/artikel/detail.aspx?','/Artikel/PrintArtikel.aspx?')
|
||||
|
@ -16,14 +16,9 @@ class Deadspin(BasicNewsRecipe):
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
encoding = 'utf-8'
|
||||
use_embedded_content = False
|
||||
use_embedded_content = True
|
||||
language = 'en'
|
||||
masthead_url = 'http://cache.gawkerassets.com/assets/deadspin.com/img/logo.png'
|
||||
extra_css = '''
|
||||
body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif}
|
||||
img{margin-bottom: 1em}
|
||||
h1{font-family :Arial,Helvetica,sans-serif; font-size:large}
|
||||
'''
|
||||
conversion_options = {
|
||||
'comment' : description
|
||||
, 'tags' : category
|
||||
@ -31,13 +26,11 @@ class Deadspin(BasicNewsRecipe):
|
||||
, 'language' : language
|
||||
}
|
||||
|
||||
remove_attributes = ['width','height']
|
||||
keep_only_tags = [dict(attrs={'class':'content permalink'})]
|
||||
remove_tags_before = dict(name='h1')
|
||||
remove_tags = [dict(attrs={'class':'contactinfo'})]
|
||||
remove_tags_after = dict(attrs={'class':'contactinfo'})
|
||||
remove_tags = [
|
||||
{'class': 'feedflare'},
|
||||
]
|
||||
|
||||
feeds = [(u'Articles', u'http://feeds.gawker.com/deadspin/full')]
|
||||
feeds = [(u'Articles', u'http://feeds.gawker.com/deadspin/vip?format=xml')]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
||||
|
57
resources/recipes/descopera.recipe
Normal file
@ -0,0 +1,57 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#!/usr/bin/env python
|
||||
|
||||
__license__ = 'GPL v3'
|
||||
__copyright__ = u'2011, Silviu Cotoar\u0103'
|
||||
'''
|
||||
descopera.ro
|
||||
'''
|
||||
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
class Descopera(BasicNewsRecipe):
|
||||
title = u'Descoper\u0103'
|
||||
__author__ = u'Silviu Cotoar\u0103'
|
||||
description = 'E lumea ta'
|
||||
publisher = 'Descopera'
|
||||
oldest_article = 5
|
||||
language = 'ro'
|
||||
max_articles_per_feed = 100
|
||||
no_stylesheets = True
|
||||
use_embedded_content = False
|
||||
category = 'Ziare,Reviste,Descopera'
|
||||
encoding = 'utf-8'
|
||||
cover_url = 'http://www.descopera.ro/images/header_images/logo.gif'
|
||||
|
||||
conversion_options = {
|
||||
'comments' : description
|
||||
,'tags' : category
|
||||
,'language' : language
|
||||
,'publisher' : publisher
|
||||
}
|
||||
|
||||
|
||||
keep_only_tags = [
|
||||
dict(name='h1', attrs={'style':'font-family: Arial,Helvetica,sans-serif; font-size: 18px; color: rgb(51, 51, 51); font-weight: bold; margin: 10px 0pt; clear: both; float: left;width: 610px;'})
|
||||
,dict(name='div', attrs={'style':'margin-right: 15px; margin-bottom: 15px; float: left;'})
|
||||
, dict(name='p', attrs={'id':'itemDescription'})
|
||||
,dict(name='div', attrs={'id':'itemBody'})
|
||||
]
|
||||
|
||||
remove_tags = [
|
||||
dict(name='div', attrs={'class':['tools']})
|
||||
, dict(name='div', attrs={'class':['share']})
|
||||
, dict(name='div', attrs={'class':['category']})
|
||||
, dict(name='div', attrs={'id':['comments']})
|
||||
]
|
||||
|
||||
remove_tags_after = [
|
||||
dict(name='div', attrs={'id':'comments'})
|
||||
]
|
||||
|
||||
feeds = [
|
||||
(u'Feeds', u'http://www.descopera.ro/rss')
|
||||
]
|
||||
|
||||
def preprocess_html(self, soup):
|
||||
return self.adeify_images(soup)
|
64
resources/recipes/detroit_news.recipe
Normal file
@ -0,0 +1,64 @@
|
||||
from calibre.web.feeds.news import BasicNewsRecipe
|
||||
|
||||
import re
|
||||
class AdvancedUserRecipe1297291961(BasicNewsRecipe):
|
||||
title = u'Detroit News'
|
||||
language = 'en'
|
||||
__author__ = 'DTM'
|
||||
oldest_article = 2
|
||||
max_articles_per_feed = 20
|
||||
no_stylesheets = True
|
||||
conversion_options = {
|
||||
'linearize_tables' : True,
|
||||
}
|
||||
|
||||
feeds = [
|
||||
(u'Headlines', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss&mime=xml'),
|
||||
(u'Nation/World', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss09&mime=xml'),
|
||||
(u'Metro/State', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss36&mime=xml'),
|
||||
(u'Wayne County', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss01&mime=xml'),
|
||||
(u'Oakland County', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss02&mime=xml'),
|
||||
(u'Macomb County', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss03&mime=xml'),
|
||||
(u'Livingston County', u'http://detnews.com/apps/pbcs.dll/section?category=rss04&mime=xml'),
|
||||
(u'Politics/Government', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss10&mime=xml'),
|
||||
(u'Editorials', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss07&mime=xml'),
|
||||
(u'Columnists', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss43&mime=xml'),
|
||||
(u'Charlie LeDuff', u'http://detnews.com/apps/pbcs.dll/section?category=rss54&mime=xml'),
|
||||
(u'Religion', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss11&mime=xml'),
|
||||
(u'Technology', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss12&mime=xml'),
|
||||
(u'Commuting', u'http://detnews.com/apps/pbcs.dll/section?category=rss05&mime=xml'),
|
||||
(u'Schools', u'http://detnews.com/apps/pbcs.dll/section?category=rss06&mime=xml'),
|
||||
(u'Obituaries', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss08&mime=xml'),
|
||||
(u'Autos Insider', u'http://detnews.com/apps/pbcs.dll/section?category=rss25&mime=xml'),
|
||||
(u'Drive', u'http://detnews.com/apps/pbcs.dll/section?category=rss26&mime=xml'),
|
||||
(u'Business', u'http://detnews.com/apps/pbcs.dll/section?category=rss21&mime=xml'),
|
||||
(u'Personal Finance', u'http://detnews.com/apps/pbcs.dll/section?category=rss23&mime=xml'),
|
||||
(u'Real Estate', u'http://detnews.com/apps/pbcs.dll/section?category=rss24&mime=xml'),
|
||||
(u'Movies', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss28&mime=xml'),
|
||||
(u'TV', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss40&mime=xml'),
|
||||
(u'Music/Nightlife', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss30&mime=xml'),
|
||||
(u'Celebrities', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss51&mime=xml'),
|
||||
(u'The Arts', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss27&mime=xml'),
|
||||
(u'Food', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss29&mime=xml'),
|
||||
(u'Homestyle', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss31&mime=xml'),
|
||||
(u'The Green Life', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss53&mime=xml'),
|
||||
(u'Lifestyle', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss32&mime=xml'),
|
||||
(u'Health', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss34&mime=xml'),
|
||||
(u'Travel', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss52&mime=xml'),
|
||||
(u'Advice', u'http://www.detnews.com/apps/pbcs.dll/section?category=rss50&mime=xml'),
|
||||
(u'Pistons', u'http://detnews.com/apps/pbcs.dll/section?category=rss13&mime=xml'),
|
||||
(u'Lions', u'http://detnews.com/apps/pbcs.dll/section?category=rss14&mime=xml'),
|
||||
(u'Tigers', u'http://detnews.com/apps/pbcs.dll/section?category=rss15&mime=xml'),
|
||||
(u'Red Wings', u'http://detnews.com/apps/pbcs.dll/section?category=rss16&mime=xml'),
|
||||
(u'Michigan State', u'http://detnews.com/apps/pbcs.dll/section?category=rss18&mime=xml'),
|
||||
(u'University of Michigan', u'http://detnews.com/apps/pbcs.dll/section?category=rss17&mime=xml'),
|
||||
(u'Motor Sports', u'http://detnews.com/apps/pbcs.dll/section?category=rss20&mime=xml'),
|
||||
(u'Golf', u'http://detnews.com/apps/pbcs.dll/section?category=rss47&mime=xml'),
|
||||
(u'Outdoors', u'http://detnews.com/apps/pbcs.dll/section?category=rss19&mime=xml')
|
||||
]
|
||||
|
||||
def print_version(self, url):
|
||||
p = re.compile('(/\d{4}|/-1)/(rss|ENT|LIFESTYLE|OPINION|METRO)\d*')
|
||||
m = p.search(url)
|
||||
return url.replace(m.group(), '&template=printart')
|
||||
|
@ -16,7 +16,7 @@ class DeutscheWelle_es(BasicNewsRecipe):
|
||||
max_articles_per_feed = 100
|
||||
use_embedded_content = False
|
||||
no_stylesheets = True
|
||||
language = 'es'
|
||||
language = 'de_ES'
|
||||
publication_type = 'newsportal'
|
||||
remove_empty_feeds = True
|
||||
masthead_url = 'http://www.dw-world.de/skins/std/channel1/pics/dw_logo1024.gif'
|
||||
|