summaryrefslogtreecommitdiff
path: root/dotfiles/common/.config/calibre/plugins/Comments Cleaner.zip
blob: 5a9b03caf1e0008472b4892563fbc71392991b32 (plain)
ofshex dumpascii
0000 50 4b 03 04 14 00 00 00 00 00 f2 3b 3d 57 45 cf 6c e9 01 00 00 00 01 00 00 00 27 00 00 00 70 6c PK.........;=WE.l.........'...pl
0020 75 67 69 6e 2d 69 6d 70 6f 72 74 2d 6e 61 6d 65 2d 63 6f 6d 6d 65 6e 74 73 5f 63 6c 65 61 6e 65 ugin-import-name-comments_cleane
0040 72 2e 74 78 74 20 50 4b 03 04 14 00 00 00 00 00 f4 80 93 5b bc be e0 e2 a8 71 00 00 a8 71 00 00 r.txt.PK...........[.....q...q..
0060 13 00 00 00 63 6f 6d 6d 65 6e 74 73 5f 63 6c 65 61 6e 65 72 2e 70 79 23 21 2f 75 73 72 2f 62 69 ....comments_cleaner.py#!/usr/bi
0080 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 n/env.python..__license__...=.'G
00a0 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 32 30 2c 20 75 6e PL.v3'.__copyright__.=.'2020,.un
00c0 5f 70 6f 67 61 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 69 _pogaz.<un.pogaz@gmail.com>'...i
00e0 6d 70 6f 72 74 20 75 6e 69 63 6f 64 65 64 61 74 61 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d mport.unicodedata.from.typing.im
0100 70 6f 72 74 20 4f 70 74 69 6f 6e 61 6c 0a 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 6c 69 62 72 port.Optional..from.calibre.libr
0120 61 72 79 2e 63 6f 6d 6d 65 6e 74 73 20 69 6d 70 6f 72 74 20 6d 61 72 6b 64 6f 77 6e 0a 0a 66 72 ary.comments.import.markdown..fr
0140 6f 6d 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 20 69 6d 70 6f 72 74 20 72 65 67 65 78 0a 66 72 om..common_utils.import.regex.fr
0160 6f 6d 20 2e 63 6f 6e 66 69 67 20 69 6d 70 6f 72 74 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f om..config.import.CALIBRE_VERSIO
0180 4e 53 5f 42 4f 4c 44 2c 20 43 53 53 5f 44 45 46 41 55 4c 54 2c 20 4b 45 59 2c 20 63 73 73 5f 63 NS_BOLD,.CSS_DEFAULT,.KEY,.css_c
01a0 6c 65 61 6e 5f 72 75 6c 65 73 0a 0a 4e 42 53 50 20 3d 20 27 5c 78 41 30 27 0a 0a 23 20 51 74 20 lean_rules..NBSP.=.'\xA0'..#.Qt.
01c0 53 75 70 70 6f 72 74 65 64 20 48 54 4d 4c 20 53 75 62 73 65 74 20 68 74 74 70 73 3a 2f 2f 64 6f Supported.HTML.Subset.https://do
01e0 63 2e 71 74 2e 69 6f 2f 71 74 2d 35 2f 72 69 63 68 74 65 78 74 2d 68 74 6d 6c 2d 73 75 62 73 65 c.qt.io/qt-5/richtext-html-subse
0200 74 2e 68 74 6d 6c 0a 54 41 47 53 20 3d 20 5b 0a 20 20 20 20 27 61 27 2c 0a 20 20 20 20 27 61 64 t.html.TAGS.=.[.....'a',.....'ad
0220 64 72 65 73 73 27 2c 0a 20 20 20 20 27 62 27 2c 0a 20 20 20 20 27 62 69 67 27 2c 0a 20 20 20 20 dress',.....'b',.....'big',.....
0240 27 62 6c 6f 63 6b 71 75 6f 74 65 27 2c 0a 20 20 20 20 27 62 6f 64 79 27 2c 0a 20 20 20 20 27 62 'blockquote',.....'body',.....'b
0260 72 27 2c 0a 20 20 20 20 27 63 65 6e 74 65 72 27 2c 0a 20 20 20 20 27 63 69 74 65 27 2c 0a 20 20 r',.....'center',.....'cite',...
0280 20 20 27 63 6f 64 65 27 2c 0a 20 20 20 20 27 64 64 27 2c 0a 20 20 20 20 27 64 66 6e 27 2c 0a 20 ..'code',.....'dd',.....'dfn',..
02a0 20 20 20 27 64 69 76 27 2c 0a 20 20 20 20 27 64 6c 27 2c 0a 20 20 20 20 27 64 74 27 2c 0a 20 20 ...'div',.....'dl',.....'dt',...
02c0 20 20 27 65 6d 27 2c 0a 20 20 20 20 27 66 6f 6e 74 27 2c 0a 20 20 20 20 27 68 31 27 2c 0a 20 20 ..'em',.....'font',.....'h1',...
02e0 20 20 27 68 32 27 2c 0a 20 20 20 20 27 68 33 27 2c 0a 20 20 20 20 27 68 34 27 2c 0a 20 20 20 20 ..'h2',.....'h3',.....'h4',.....
0300 27 68 35 27 2c 0a 20 20 20 20 27 68 36 27 2c 0a 20 20 20 20 27 68 65 61 64 27 2c 0a 20 20 20 20 'h5',.....'h6',.....'head',.....
0320 27 68 72 27 2c 0a 20 20 20 20 27 68 74 6d 6c 27 2c 0a 20 20 20 20 27 69 27 2c 0a 20 20 20 20 27 'hr',.....'html',.....'i',.....'
0340 69 6d 67 27 2c 0a 20 20 20 20 27 6b 62 64 27 2c 0a 20 20 20 20 27 6d 65 74 61 27 2c 0a 20 20 20 img',.....'kbd',.....'meta',....
0360 20 27 6c 69 27 2c 0a 20 20 20 20 27 6e 6f 62 72 27 2c 0a 20 20 20 20 27 6f 6c 27 2c 0a 20 20 20 .'li',.....'nobr',.....'ol',....
0380 20 27 70 27 2c 0a 20 20 20 20 27 70 72 65 27 2c 0a 20 20 20 20 27 71 74 27 2c 0a 20 20 20 20 27 .'p',.....'pre',.....'qt',.....'
03a0 73 27 2c 0a 20 20 20 20 27 73 61 6d 70 27 2c 0a 20 20 20 20 27 73 6d 61 6c 6c 27 2c 0a 20 20 20 s',.....'samp',.....'small',....
03c0 20 27 73 70 61 6e 27 2c 0a 20 20 20 20 27 73 74 72 6f 6e 67 27 2c 0a 20 20 20 20 27 73 75 62 27 .'span',.....'strong',.....'sub'
03e0 2c 0a 20 20 20 20 27 73 75 70 27 2c 0a 20 20 20 20 27 74 61 62 6c 65 27 2c 0a 20 20 20 20 27 74 ,.....'sup',.....'table',.....'t
0400 62 6f 64 79 27 2c 0a 20 20 20 20 27 74 64 27 2c 0a 20 20 20 20 27 74 66 6f 6f 74 27 2c 0a 20 20 body',.....'td',.....'tfoot',...
0420 20 20 27 74 68 27 2c 0a 20 20 20 20 27 74 68 65 61 64 27 2c 0a 20 20 20 20 27 74 69 74 6c 65 27 ..'th',.....'thead',.....'title'
0440 2c 0a 20 20 20 20 27 74 72 27 2c 0a 20 20 20 20 27 74 74 27 2c 0a 20 20 20 20 27 75 27 2c 0a 20 ,.....'tr',.....'tt',.....'u',..
0460 20 20 20 27 75 6c 27 2c 0a 20 20 20 20 27 76 61 72 27 2c 0a 5d 0a 0a 41 54 54 52 49 42 55 54 45 ...'ul',.....'var',.]..ATTRIBUTE
0480 53 20 3d 20 5b 0a 20 20 20 20 27 69 64 27 2c 0a 20 20 20 20 27 63 6c 61 73 73 27 2c 0a 20 20 20 S.=.[.....'id',.....'class',....
04a0 20 27 61 6c 69 67 6e 27 2c 0a 20 20 20 20 27 73 74 79 6c 65 27 2c 0a 20 20 20 20 27 68 72 65 66 .'align',.....'style',.....'href
04c0 27 2c 0a 20 20 20 20 27 73 72 63 27 2c 0a 20 20 20 20 27 77 69 64 74 68 27 2c 0a 20 20 20 20 27 ',.....'src',.....'width',.....'
04e0 68 65 69 67 68 74 27 2c 0a 5d 0a 0a 0a 23 20 66 69 78 20 61 20 69 6d 63 6f 6d 70 61 74 69 62 69 height',.]...#.fix.a.imcompatibi
0500 6c 69 74 79 20 62 65 74 77 65 6e 20 6d 75 6c 74 69 70 6c 65 20 43 61 6c 69 62 72 65 20 76 65 72 lity.betwen.multiple.Calibre.ver
0520 73 69 6f 6e 0a 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 53 5f 42 4f 4c 44 3a 0a 20 sion.if.CALIBRE_VERSIONS_BOLD:..
0540 20 20 20 46 4f 4e 54 5f 57 45 49 47 48 54 20 3d 20 27 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 37 ...FONT_WEIGHT.=.'font-weight:.7
0560 30 30 27 0a 65 6c 73 65 3a 0a 20 20 20 20 46 4f 4e 54 5f 57 45 49 47 48 54 20 3d 20 27 66 6f 6e 00'.else:.....FONT_WEIGHT.=.'fon
0580 74 2d 77 65 69 67 68 74 3a 20 36 30 30 27 0a 0a 0a 64 65 66 20 5f 66 69 78 5f 77 65 69 67 68 74 t-weight:.600'...def._fix_weight
05a0 28 74 65 78 74 29 3a 0a 20 20 20 20 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 53 5f (text):.....if.CALIBRE_VERSIONS_
05c0 42 4f 4c 44 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 BOLD:.........text.=.regex.loop(
05e0 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 27 2b 46 4f 4e 54 5f 57 45 49 47 48 54 2b 72 r'.style="([^"]*)'+FONT_WEIGHT+r
0600 27 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 66 6f 6e 74 2d 77 65 69 '([^"]*)"',.r'.style="\1font-wei
0620 67 68 74 3a 20 62 6f 6c 64 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 72 65 74 75 72 6e 20 ght:.bold\2"',.text).....return.
0640 74 65 78 74 0a 0a 0a 64 65 66 20 5f 73 65 74 5f 70 72 65 66 73 28 70 72 65 66 73 29 3a 0a 20 20 text...def._set_prefs(prefs):...
0660 20 20 69 66 20 6e 6f 74 20 70 72 65 66 73 3a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 2e 63 6f ..if.not.prefs:.........from..co
0680 6e 66 69 67 20 69 6d 70 6f 72 74 20 50 52 45 46 53 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 20 nfig.import.PREFS.........prefs.
06a0 3d 20 50 52 45 46 53 2e 63 6f 70 79 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 2e 70 6f 70 =.PREFS.copy().........prefs.pop
06c0 28 4b 45 59 2e 4e 4f 54 45 53 5f 53 45 54 54 49 4e 47 53 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 72 (KEY.NOTES_SETTINGS,.None).....r
06e0 65 74 75 72 6e 20 70 72 65 66 73 0a 0a 0a 64 65 66 20 63 6c 65 61 6e 5f 63 61 70 73 5f 74 61 67 eturn.prefs...def.clean_caps_tag
0700 73 28 74 65 78 74 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 0a 20 20 20 20 66 6f s(text:.str).->.str:..........fo
0720 72 20 66 69 6e 64 20 69 6e 20 72 65 67 65 78 2e 73 65 61 72 63 68 61 6c 6c 28 72 27 3c 28 3f 50 r.find.in.regex.searchall(r'<(?P
0740 3c 73 74 61 72 74 3e 2f 3f 29 28 3f 50 3c 6e 61 6d 65 3e 5c 77 2b 29 28 3f 50 3c 61 74 74 72 69 <start>/?)(?P<name>\w+)(?P<attri
0760 62 75 74 65 73 3e 7c 20 5b 5e 3e 5d 2a 29 28 3f 50 3c 65 6e 64 3e 2f 3f 29 3e 27 2c 20 74 65 78 butes>|.[^>]*)(?P<end>/?)>',.tex
0780 74 29 3a 0a 20 20 20 20 20 20 20 20 73 74 61 72 74 20 3d 20 66 69 6e 64 2e 73 74 61 72 74 28 29 t):.........start.=.find.start()
07a0 0a 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20 66 69 6e 64 2e 65 6e 64 28 29 0a 20 20 20 20 20 20 .........end.=.find.end().......
07c0 20 20 66 69 6e 64 20 3d 20 66 69 6e 64 2e 67 72 6f 75 70 64 69 63 74 28 29 0a 20 20 20 20 20 20 ..find.=.find.groupdict().......
07e0 20 20 69 66 20 66 69 6e 64 5b 27 6e 61 6d 65 27 5d 20 21 3d 20 66 69 6e 64 5b 27 6e 61 6d 65 27 ..if.find['name'].!=.find['name'
0800 5d 2e 6c 6f 77 65 72 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 ].lower():......................
0820 20 20 20 20 66 69 6e 64 5b 27 6e 61 6d 65 27 5d 20 3d 20 66 69 6e 64 5b 27 6e 61 6d 65 27 5d 2e ....find['name'].=.find['name'].
0840 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 74 74 72 69 62 75 74 65 73 20 3d lower().............attributes.=
0860 20 66 69 6e 64 5b 27 61 74 74 72 69 62 75 74 65 73 27 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 .find['attributes'].............
0880 66 6f 72 20 61 74 72 20 69 6e 20 41 54 54 52 49 42 55 54 45 53 3a 0a 20 20 20 20 20 20 20 20 20 for.atr.in.ATTRIBUTES:..........
08a0 20 20 20 20 20 20 20 66 69 6e 64 5b 27 61 74 74 72 69 62 75 74 65 73 27 5d 20 3d 20 66 69 6e 64 .......find['attributes'].=.find
08c0 5b 27 61 74 74 72 69 62 75 74 65 73 27 5d 2e 72 65 70 6c 61 63 65 28 61 74 72 2e 75 70 70 65 72 ['attributes'].replace(atr.upper
08e0 28 29 2b 27 3d 27 2c 20 61 74 72 2b 27 3d 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e ()+'=',.atr+'=').............fin
0900 64 5b 27 61 74 74 72 69 62 75 74 65 73 27 5d 20 3d 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 d['attributes'].=.attributes....
0920 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 5f 74 61 67 20 3d 20 ......................new_tag.=.
0940 27 3c 27 2b 66 69 6e 64 5b 27 73 74 61 72 74 27 5d 2b 66 69 6e 64 5b 27 6e 61 6d 65 27 5d 2b 66 '<'+find['start']+find['name']+f
0960 69 6e 64 5b 27 61 74 74 72 69 62 75 74 65 73 27 5d 2b 66 69 6e 64 5b 27 65 6e 64 27 5d 2b 27 3e ind['attributes']+find['end']+'>
0980 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 74 65 78 74 5b 3a 73 74 61 72 74 '.............text.=.text[:start
09a0 5d 20 2b 20 6e 65 77 5f 74 61 67 20 2b 20 74 65 78 74 5b 65 6e 64 3a 5d 0a 20 20 20 20 0a 20 20 ].+.new_tag.+.text[end:]........
09c0 20 20 72 65 74 75 72 6e 20 74 65 78 74 0a 0a 0a 23 20 43 6c 65 61 6e 6e 69 67 20 62 61 73 65 64 ..return.text...#.Cleannig.based
09e0 20 6f 6e 20 43 61 6c 69 62 72 65 20 34 20 61 6e 64 20 61 62 6f 76 65 20 28 51 74 57 65 62 45 6e .on.Calibre.4.and.above.(QtWebEn
0a00 67 69 6e 65 29 0a 64 65 66 20 63 6c 65 61 6e 5f 62 61 73 69 63 28 74 65 78 74 3a 20 73 74 72 29 gine).def.clean_basic(text:.str)
0a20 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 58 4d 4c 66 6f 72 6d .->.str:..........text.=.XMLform
0a40 61 74 28 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 63 6f 6e 76 65 72 74 20 74 61 67 0a at(text)..........#.convert.tag.
0a60 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 28 3f 3a ....text.=.regex.loop(r'<(/?)(?:
0a80 69 7c 63 69 74 65 7c 64 66 6e 7c 76 61 72 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c i|cite|dfn|var)(|.[^>]*)>',.r'<\
0aa0 31 65 6d 5c 32 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 1em\2>',.text).....text.=.regex.
0ac0 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 28 3f 3a 62 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 20 20 loop(r'<(/?)(?:b)(|.[^>]*)>',...
0ae0 20 20 20 20 20 20 20 20 20 20 20 72 27 3c 5c 31 73 74 72 6f 6e 67 5c 32 3e 27 2c 20 74 65 78 74 ...........r'<\1strong\2>',.text
0b00 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 28 ).....text.=.regex.loop(r'<(/?)(
0b20 3f 3a 64 65 6c 7c 73 74 72 69 6b 65 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 20 20 20 20 72 27 ?:del|strike)(|.[^>]*)>',.....r'
0b40 3c 5c 31 73 5c 32 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 <\1s\2>',.text)..........text.=.
0b60 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 28 3f 3a 62 6c 6f 63 6b 71 75 6f 74 65 7c regex.loop(r'<(/?)(?:blockquote|
0b80 64 64 7c 64 74 7c 70 72 65 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c 31 70 5c 32 3e dd|dt|pre)(|.[^>]*)>',.r'<\1p\2>
0ba0 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 63 6f 6e 76 65 72 74 20 74 61 67 20 ',.text)..........#.convert.tag.
0bc0 77 69 74 68 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f with.content.....text.=.regex.lo
0be0 6f 70 28 72 27 3c 28 63 65 6e 74 65 72 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c op(r'<(center)(|.[^>]*)>((?:(?!<
0c00 2f 70 3e 7c 3c 2f 64 69 76 3e 29 2e 29 2a 3f 29 3c 2f 5c 31 3e 27 2c 20 72 27 3c 70 20 61 6c 69 /p>|</div>).)*?)</\1>',.r'<p.ali
0c20 67 6e 3d 22 63 65 6e 74 65 72 22 20 5c 32 3e 5c 33 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 gn="center".\2>\3</p>',.text)...
0c40 20 20 0a 20 20 20 20 23 20 69 6e 76 61 6c 69 64 20 74 61 67 20 77 69 74 68 20 63 6f 6e 74 65 6e .......#.invalid.tag.with.conten
0c60 74 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 73 63 72 69 t.....text.=.regex.loop(r'<(scri
0c80 70 74 7c 73 74 79 6c 65 7c 68 65 61 64 7c 74 69 74 6c 65 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 pt|style|head|title)(|.[^>]*)>((
0ca0 3f 21 3c 2f 70 3e 7c 3c 2f 64 69 76 3e 29 2e 29 2a 3f 3c 2f 5c 31 3e 27 2c 20 72 27 27 2c 20 74 ?!</p>|</div>).)*?</\1>',.r'',.t
0cc0 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 72 65 6d 6f 76 65 20 69 6e 76 61 6c 69 64 20 74 ext)..........#.remove.invalid.t
0ce0 61 67 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 2f 3f 28 3f ag.....text.=.regex.loop(r'</?(?
0d00 21 27 2b 20 27 7c 27 2e 6a 6f 69 6e 28 54 41 47 53 29 20 2b 72 27 29 5c 77 2b 28 7c 20 5b 5e 3e !'+.'|'.join(TAGS).+r')\w+(|.[^>
0d20 5d 2a 29 2f 3f 3e 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 72 ]*)/?>',.r'',.text)..........#.r
0d40 65 6d 6f 76 65 20 6e 61 6d 65 73 70 61 63 65 64 20 61 74 74 72 69 62 75 74 0a 20 20 20 20 74 65 emove.namespaced.attribut.....te
0d60 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 5b 5c 77 5c 2d 5d 2b 3a 5b 5c 77 5c 2d xt.=.regex.loop(r'.[\w\-]+:[\w\-
0d80 5d 2b 3d 22 5b 5e 22 5d 2a 22 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 ]+="[^"]*"',.r'',.text).........
0da0 20 23 20 72 65 6d 6f 76 65 20 69 6e 76 61 6c 69 64 20 61 74 74 72 69 62 75 74 0a 20 20 20 20 74 .#.remove.invalid.attribut.....t
0dc0 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 28 3f 21 27 2b 20 27 7c 27 2e 6a 6f ext.=.regex.loop(r'.(?!'+.'|'.jo
0de0 69 6e 28 41 54 54 52 49 42 55 54 45 53 29 20 2b 72 27 29 5b 5c 77 5c 2d 5d 2b 3d 22 5b 5e 22 5d in(ATTRIBUTES).+r')[\w\-]+="[^"]
0e00 2a 22 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 66 69 6c 74 72 *"',.r'',.text)..........#.filtr
0e20 65 20 6e 6f 74 20 64 65 73 69 72 65 64 20 74 61 67 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 e.not.desired.tag.....text.=.reg
0e40 65 78 2e 6c 6f 6f 70 28 72 27 3c 2f 3f 28 66 6f 6e 74 7c 68 74 6d 6c 7c 62 6f 64 79 7c 73 65 63 ex.loop(r'</?(font|html|body|sec
0e60 74 69 6f 6e 7c 66 6f 72 6d 7c 64 6c 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 27 2c 20 74 tion|form|dl)(|.[^>]*)>',.r'',.t
0e80 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 2f 3f ext).....text.=.regex.loop(r'</?
0ea0 28 61 64 64 72 65 73 73 7c 62 69 67 7c 63 6f 64 65 7c 6b 62 64 7c 6d 65 74 61 7c 6e 6f 62 72 7c (address|big|code|kbd|meta|nobr|
0ec0 71 74 7c 73 61 6d 70 7c 73 6d 61 6c 6c 7c 74 74 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 qt|samp|small|tt)(|.[^>]*)>',.r'
0ee0 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 63 6c 65 61 6e 20 69 6d 67 0a 20 20 ',.text)..........#.clean.img...
0f00 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 69 6d 67 28 5b 5e 3e 5d 2a ..text.=.regex.loop(r'<img([^>]*
0f20 29 2f 3e 27 2c 20 72 27 3c 69 6d 67 5c 31 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 )/>',.r'<img\1>',.text).....text
0f40 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 2f 69 6d 67 5b 5e 3e 5d 2a 3e 27 2c 20 72 27 .=.regex.loop(r'</img[^>]*>',.r'
0f60 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 69 6e 76 61 6c 69 64 20 61 74 74 72 ',.text)..........#.invalid.attr
0f80 69 62 75 74 20 74 61 67 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 ibut.tag.....text.=.regex.loop(r
0fa0 27 3c 28 28 3f 21 61 29 5c 77 2b 29 28 7c 20 5b 5e 3e 5d 2a 29 20 68 72 65 66 3d 22 5b 5e 22 5d '<((?!a)\w+)(|.[^>]*).href="[^"]
0fc0 2a 22 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c 31 5c 32 5c 33 3e 27 2c 20 74 65 78 74 *"(|.[^>]*)>',.r'<\1\2\3>',.text
0fe0 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 28 3f 21 70 ).....text.=.regex.loop(r'<((?!p
1000 7c 64 69 76 7c 68 5c 64 7c 6c 69 7c 6f 6c 7c 75 6c 29 5c 77 2b 29 28 7c 20 5b 5e 3e 5d 2a 29 20 |div|h\d|li|ol|ul)\w+)(|.[^>]*).
1020 61 6c 69 67 6e 3d 22 5b 5e 22 5d 2a 22 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c 31 5c align="[^"]*"(|.[^>]*)>',.r'<\1\
1040 32 5c 33 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 63 6c 65 61 6e 20 73 70 2\3>',.text)..........#.clean.sp
1060 61 63 65 20 69 6e 20 61 74 74 72 69 62 75 74 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 ace.in.attribut.....text.=.regex
1080 2e 6c 6f 6f 70 28 72 27 20 28 5b 5c 77 5c 2d 5d 2b 29 3d 22 5c 73 2b 28 5b 5e 22 5d 2a 29 22 27 .loop(r'.([\w\-]+)="\s+([^"]*)"'
10a0 2c 20 72 27 20 5c 31 3d 22 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 ,.r'.\1="\2"',.text).....text.=.
10c0 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 28 5b 5c 77 5c 2d 5d 2b 29 3d 22 28 5b 5e 22 5d 2a 29 regex.loop(r'.([\w\-]+)="([^"]*)
10e0 5c 73 2b 22 27 2c 20 72 27 20 5c 31 3d 22 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 \s+"',.r'.\1="\2"',.text).......
1100 20 20 20 23 20 6d 61 6e 61 67 65 6d 65 6e 74 20 6f 66 20 3c 62 72 3e 0a 20 20 20 20 74 65 78 74 ...#.management.of.<br>.....text
1120 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 62 7c 68 29 72 5b 5e 3e 5d 2b 3e 27 2c 20 .=.regex.loop(r'<(b|h)r[^>]+>',.
1140 72 27 3c 5c 31 72 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 r'<\1r>',.text).....text.=.regex
1160 2e 6c 6f 6f 70 28 72 27 3c 2f 28 62 7c 68 29 72 5b 5e 3e 5d 2b 3e 27 2c 20 72 27 27 2c 20 74 65 .loop(r'</(b|h)r[^>]+>',.r'',.te
1180 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 5c 73 7c xt).....text.=.regex.loop(r'(\s|
11a0 27 2b 4e 42 53 50 2b 72 27 29 2b 3c 28 62 7c 68 29 72 3e 27 2c 20 72 27 3c 5c 32 72 3e 27 2c 20 '+NBSP+r')+<(b|h)r>',.r'<\2r>',.
11c0 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 text).....text.=.regex.loop(r'<(
11e0 62 7c 68 29 72 3e 28 5c 73 7c 27 2b 4e 42 53 50 2b 72 27 29 2b 27 2c 20 72 27 3c 5c 31 72 3e 27 b|h)r>(\s|'+NBSP+r')+',.r'<\1r>'
1200 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 ,.text).....text.=.regex.loop(r'
1220 3c 28 28 3f 3a 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 7c 73 7c 73 70 61 6e 7c <((?:em|strong|sup|sub|u|s|span|
1240 61 29 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 29 3e 3c 28 62 7c 68 29 72 3e 27 2c 20 72 27 3c 5c 32 72 a)(?:|.[^>]*))><(b|h)r>',.r'<\2r
1260 3e 3c 5c 31 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c ><\1>',.text).....text.=.regex.l
1280 6f 6f 70 28 72 27 3c 28 62 7c 68 29 72 3e 3c 2f 28 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 oop(r'<(b|h)r></(em|strong|sup|s
12a0 75 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 3e 27 2c 20 72 27 3c 2f 5c 32 3e 3c 5c 31 72 3e 27 2c ub|u|s|span|a)>',.r'</\2><\1r>',
12c0 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 65 6d 70 74 79 20 69 6e 6c 69 6e 65 0a 20 .text)..........#.empty.inline..
12e0 20 20 20 69 6e 6c 69 6e 65 53 70 61 63 65 20 3d 20 72 27 3c 28 65 6d 7c 73 74 72 6f 6e 67 7c 73 ...inlineSpace.=.r'<(em|strong|s
1300 75 70 7c 73 75 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 2b 3c up|sub|u|s|span|a)(|.[^>]*)>\s+<
1320 2f 5c 31 3e 27 0a 20 20 20 20 69 6e 6c 69 6e 65 45 6d 70 74 79 20 3d 20 72 27 3c 28 65 6d 7c 73 /\1>'.....inlineEmpty.=.r'<(em|s
1340 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 28 7c 20 5b 5e 3e 5d trong|sup|sub|u|s|span|a)(|.[^>]
1360 2a 29 3e 3c 2f 5c 31 3e 27 0a 20 20 20 20 23 20 73 61 6d 65 20 69 6e 6c 69 6e 65 0a 20 20 20 20 *)></\1>'.....#.same.inline.....
1380 73 61 6d 65 53 70 61 63 65 20 3d 20 72 27 3c 28 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 sameSpace.=.r'<(em|strong|sup|su
13a0 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 5b 5e 3c 5d 2a 29 3c 2f b|u|s|span|a)(|.[^>]*)>([^<]*)</
13c0 5c 31 3e 5c 73 2b 3c 5c 31 5c 32 3e 27 0a 20 20 20 20 73 61 6d 65 45 6d 70 74 79 20 3d 20 72 27 \1>\s+<\1\2>'.....sameEmpty.=.r'
13e0 3c 28 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 28 <(em|strong|sup|sub|u|s|span|a)(
1400 7c 20 5b 5e 3e 5d 2a 29 3e 28 5b 5e 3c 5d 2a 29 3c 2f 5c 31 3e 3c 5c 31 5c 32 3e 27 0a 20 20 20 |.[^>]*)>([^<]*)</\1><\1\2>'....
1420 20 0a 20 20 20 20 77 68 69 6c 65 20 28 72 65 67 65 78 2e 73 65 61 72 63 68 28 69 6e 6c 69 6e 65 ......while.(regex.search(inline
1440 53 70 61 63 65 2c 20 74 65 78 74 29 20 6f 72 0a 20 20 20 20 20 20 20 20 72 65 67 65 78 2e 73 65 Space,.text).or.........regex.se
1460 61 72 63 68 28 69 6e 6c 69 6e 65 45 6d 70 74 79 2c 20 74 65 78 74 29 20 6f 72 0a 20 20 20 20 20 arch(inlineEmpty,.text).or......
1480 20 20 20 72 65 67 65 78 2e 73 65 61 72 63 68 28 73 61 6d 65 53 70 61 63 65 2c 20 74 65 78 74 29 ...regex.search(sameSpace,.text)
14a0 20 6f 72 0a 20 20 20 20 20 20 20 20 72 65 67 65 78 2e 73 65 61 72 63 68 28 73 61 6d 65 45 6d 70 .or.........regex.search(sameEmp
14c0 74 79 2c 20 74 65 78 74 29 29 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 65 78 ty,.text)):..................tex
14e0 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 69 6e 6c 69 6e 65 53 70 61 63 65 2c 20 72 27 20 27 t.=.regex.loop(inlineSpace,.r'.'
1500 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f ,.text).........text.=.regex.loo
1520 70 28 69 6e 6c 69 6e 65 45 6d 70 74 79 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 p(inlineEmpty,.r'',.text).......
1540 20 20 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 73 61 6d ...........text.=.regex.loop(sam
1560 65 53 70 61 63 65 2c 20 72 27 3c 5c 31 5c 32 3e 5c 33 20 27 2c 20 74 65 78 74 29 0a 20 20 20 20 eSpace,.r'<\1\2>\3.',.text).....
1580 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 73 61 6d 65 45 6d 70 74 79 2c ....text.=.regex.loop(sameEmpty,
15a0 20 72 27 3c 5c 31 5c 32 3e 5c 33 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 73 .r'<\1\2>\3',.text)..........#.s
15c0 70 61 63 65 20 69 6e 6c 69 6e 65 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f pace.inline.....text.=.regex.loo
15e0 70 28 72 27 5c 73 2b 28 28 3f 3a 3c 28 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 p(r'\s+((?:<(em|strong|sup|sub|u
1600 7c 73 7c 73 70 61 6e 7c 61 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 29 2b 29 5c 73 2b 27 2c 20 72 27 20 |s|span|a)(|.[^>]*)>)+)\s+',.r'.
1620 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 \1',.text).....text.=.regex.loop
1640 28 72 27 5c 73 2b 28 28 3f 3a 3c 2f 28 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 (r'\s+((?:</(em|strong|sup|sub|u
1660 7c 73 7c 73 70 61 6e 7c 61 29 3e 29 2b 29 5c 73 2b 27 2c 20 72 27 5c 31 20 27 2c 20 74 65 78 74 |s|span|a)>)+)\s+',.r'\1.',.text
1680 29 0a 20 20 20 20 0a 20 20 20 20 23 20 65 6d 70 74 79 20 62 6c 6f 63 6b 0a 20 20 20 20 74 65 78 )..........#.empty.block.....tex
16a0 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 73 2a 3c 28 70 7c 64 69 76 7c 68 5c 64 7c t.=.regex.loop(r'\s*<(p|div|h\d|
16c0 6c 69 7c 6f 6c 7c 75 6c 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 2a 3c 2f 5c 31 3e 27 2c 20 72 27 li|ol|ul)(|.[^>]*)>\s*</\1>',.r'
16e0 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 ',.text).....text.=.regex.loop(r
1700 27 5c 73 2a 3c 28 70 7c 64 69 76 7c 68 5c 64 7c 6c 69 7c 6f 6c 7c 75 6c 29 28 7c 20 5b 5e 3e 5d '\s*<(p|div|h\d|li|ol|ul)(|.[^>]
1720 2a 29 2f 3e 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 64 6f 75 *)/>',.r'',.text)..........#.dou
1740 62 6c 65 20 73 70 61 63 65 20 61 6e 64 20 74 61 62 20 69 6e 20 3c 70 3e 0a 20 20 20 20 74 65 78 ble.space.and.tab.in.<p>.....tex
1760 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 28 70 7c 68 5c 64 7c 6c 69 29 28 7c 20 t.=.regex.loop(r'(<(p|h\d|li)(|.
1780 5b 5e 3e 5d 2a 29 3e 28 3f 3a 28 3f 21 3c 2f 5c 32 29 2e 29 2a 3f 29 28 5c 74 7c 5c 6e 7c 5c 73 [^>]*)>(?:(?!</\2).)*?)(\t|\n|\s
17a0 7b 32 2c 7d 29 27 2c 20 72 27 5c 31 20 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 {2,})',.r'\1.',.text)..........#
17c0 20 73 70 61 63 65 20 61 6e 64 20 3c 62 72 3e 20 62 65 66 6f 72 65 2f 61 66 74 65 72 20 3c 70 3e .space.and.<br>.before/after.<p>
17e0 0a 20 20 20 20 72 67 78 20 3d 20 72 27 28 28 3f 3a 3c 2f 3f 28 3f 3a 65 6d 7c 73 74 72 6f 6e 67 .....rgx.=.r'((?:</?(?:em|strong
1800 7c 73 75 70 7c 73 75 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 3e |sup|sub|u|s|span|a)(?:|.[^>]*)>
1820 29 2a 29 28 3c 2f 3f 28 3f 3a 70 7c 64 69 76 7c 68 5c 64 7c 6c 69 29 28 3f 3a 7c 20 5b 5e 3e 5d )*)(</?(?:p|div|h\d|li)(?:|.[^>]
1840 2a 29 3e 29 28 28 3f 3a 3c 2f 3f 28 3f 3a 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c *)>)((?:</?(?:em|strong|sup|sub|
1860 75 7c 73 7c 73 70 61 6e 7c 61 29 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 3e 29 2a 29 27 0a 20 20 20 20 u|s|span|a)(?:|.[^>]*)>)*)'.....
1880 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3f 3a 5c 73 7c 27 2b 4e 42 53 50 text.=.regex.loop(r'(?:\s|'+NBSP
18a0 2b 72 27 7c 3c 62 72 3e 29 2a 27 2b 72 67 78 2b 72 27 28 3f 3a 5c 73 7c 27 2b 4e 42 53 50 2b 72 +r'|<br>)*'+rgx+r'(?:\s|'+NBSP+r
18c0 27 7c 3c 62 72 3e 29 2b 27 2c 20 72 27 5c 31 5c 32 5c 33 27 2c 20 74 65 78 74 29 0a 20 20 20 20 '|<br>)+',.r'\1\2\3',.text).....
18e0 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3f 3a 5c 73 7c 27 2b 4e 42 53 50 text.=.regex.loop(r'(?:\s|'+NBSP
1900 2b 72 27 7c 3c 62 72 3e 29 2b 27 2b 72 67 78 2b 72 27 28 3f 3a 5c 73 7c 27 2b 4e 42 53 50 2b 72 +r'|<br>)+'+rgx+r'(?:\s|'+NBSP+r
1920 27 7c 3c 62 72 3e 29 2a 27 2c 20 72 27 5c 31 5c 32 5c 33 27 2c 20 74 65 78 74 29 0a 20 20 20 20 '|<br>)*',.r'\1\2\3',.text).....
1940 23 20 72 65 73 74 6f 72 65 20 65 6d 70 74 79 20 3c 70 3e 0a 20 20 20 20 74 65 78 74 20 3d 20 72 #.restore.empty.<p>.....text.=.r
1960 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 70 7c 64 69 76 7c 68 5c 64 7c 6c 69 29 28 7c 20 5b 5e egex.loop(r'<(p|div|h\d|li)(|.[^
1980 3e 5d 2a 29 3e 28 3c 28 3f 3a 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 7c 73 7c >]*)>(<(?:em|strong|sup|sub|u|s|
19a0 73 70 61 6e 7c 61 29 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 3e 29 2a 28 3f 3a 3c 62 72 3e 29 2a 28 3c span|a)(?:|.[^>]*)>)*(?:<br>)*(<
19c0 2f 28 3f 3a 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 /(?:em|strong|sup|sub|u|s|span|a
19e0 29 3e 29 2a 3c 2f 5c 31 3e 27 2c 20 72 27 3c 5c 31 5c 32 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 5c )>)*</\1>',.r'<\1\2>'+NBSP+r'</\
1a00 31 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 73 70 61 63 65 20 77 69 74 68 1>',.text)..........#.space.with
1a20 20 69 6e 6c 69 6e 65 20 62 65 66 6f 72 65 2f 61 66 74 65 72 20 3c 62 72 3e 0a 20 20 20 20 72 67 .inline.before/after.<br>.....rg
1a40 78 20 3d 20 72 27 28 28 3f 3a 3c 2f 28 3f 3a 65 6d 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 x.=.r'((?:</(?:em|strong|sup|sub
1a60 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 3e 29 2a 29 28 3c 62 72 3e 29 28 28 3f 3a 3c 28 3f 3a 65 6d |u|s|span|a)>)*)(<br>)((?:<(?:em
1a80 7c 73 74 72 6f 6e 67 7c 73 75 70 7c 73 75 62 7c 75 7c 73 7c 73 70 61 6e 7c 61 29 28 3f 3a 7c 20 |strong|sup|sub|u|s|span|a)(?:|.
1aa0 5b 5e 3e 5d 2a 29 3e 29 2a 29 27 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f [^>]*)>)*)'.....text.=.regex.loo
1ac0 70 28 72 27 28 3f 3a 5c 73 7c 27 2b 4e 42 53 50 2b 72 27 29 2a 27 2b 72 67 78 2b 72 27 28 3f 3a p(r'(?:\s|'+NBSP+r')*'+rgx+r'(?:
1ae0 5c 73 7c 27 2b 4e 42 53 50 2b 72 27 29 2b 27 2c 20 72 27 5c 31 5c 32 5c 33 27 2c 20 74 65 78 74 \s|'+NBSP+r')+',.r'\1\2\3',.text
1b00 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3f 3a 5c 73 7c ).....text.=.regex.loop(r'(?:\s|
1b20 27 2b 4e 42 53 50 2b 72 27 29 2b 27 2b 72 67 78 2b 72 27 28 3f 3a 5c 73 7c 27 2b 4e 42 53 50 2b '+NBSP+r')+'+rgx+r'(?:\s|'+NBSP+
1b40 72 27 29 2a 27 2c 20 72 27 5c 31 5c 32 5c 33 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 r')*',.r'\1\2\3',.text).........
1b60 20 23 20 73 70 61 63 65 20 6c 69 6e 65 20 72 65 74 75 72 6e 20 66 6f 72 20 6c 69 73 74 73 0a 20 .#.space.line.return.for.lists..
1b80 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3e 3c 28 70 7c 64 69 76 7c ...text.=.regex.loop(r'><(p|div|
1ba0 68 5c 64 7c 6c 69 7c 6f 6c 7c 75 6c 29 27 2c 20 72 27 3e 5c 6e 3c 5c 31 27 2c 20 74 65 78 74 29 h\d|li|ol|ul)',.r'>\n<\1',.text)
1bc0 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 6f 6c 7c 75 6c .....text.=.regex.loop(r'<(ol|ul
1be0 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 2b 3c 6c 69 27 2c 20 72 27 3c 5c 31 5c 32 3e 3c 6c 69 27 )(|.[^>]*)>\s+<li',.r'<\1\2><li'
1c00 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 ,.text).....text.=.regex.loop(r'
1c20 3c 2f 6c 69 3e 5c 73 2b 3c 2f 28 6f 6c 7c 75 6c 29 3e 27 2c 20 72 27 3c 2f 6c 69 3e 3c 2f 5c 31 </li>\s+</(ol|ul)>',.r'</li></\1
1c40 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 73 74 79 6c 65 3a 20 64 65 6c 20 >',.text)..........#.style:.del.
1c60 64 6f 75 62 6c 65 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 double.....text.=.regex.loop(r'.
1c80 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 3b 5c 73 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 style="([^"]*);\s*;([^"]*)"',.r'
1ca0 20 73 74 79 6c 65 3d 22 5c 31 3b 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 23 20 73 74 79 .style="\1;\2"',.text).....#.sty
1cc0 6c 65 3a 20 63 6c 65 61 6e 20 73 70 61 63 65 20 62 65 66 6f 72 65 20 3a 0a 20 20 20 20 74 65 78 le:.clean.space.before.:.....tex
1ce0 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 t.=.regex.loop(r'.style="([^"]*)
1d00 5c 73 2b 28 3b 7c 3a 29 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 5c \s+(;|:)([^"]*)"',.r'.style="\1\
1d20 32 5c 33 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 23 20 73 74 79 6c 65 3a 20 63 6c 65 61 6e 20 2\3"',.text).....#.style:.clean.
1d40 73 70 61 63 65 20 61 66 74 65 72 20 3a 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c space.after.:.....text.=.regex.l
1d60 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 28 3f 3a 3b 7c 3a 29 29 5c 73 7b 32 oop(r'.style="([^"]*(?:;|:))\s{2
1d80 2c 7d 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 20 5c 32 22 27 2c 20 ,}([^"]*)"',.r'.style="\1.\2"',.
1da0 74 65 78 74 29 0a 20 20 20 20 23 20 73 74 79 6c 65 3a 20 69 6e 73 65 72 74 20 73 70 61 63 65 20 text).....#.style:.insert.space.
1dc0 61 66 74 65 72 20 3a 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 after.:.....text.=.regex.loop(r'
1de0 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 28 3f 3a 3b 7c 3a 29 29 28 5b 5e 20 5d 5b 5e 22 5d 2a .style="([^"]*(?:;|:))([^.][^"]*
1e00 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 20 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 )"',.r'.style="\1.\2"',.text)...
1e20 20 20 23 20 73 74 79 6c 65 3a 20 72 65 6d 6f 76 65 20 6c 61 73 74 0a 20 20 20 20 74 65 78 74 20 ..#.style:.remove.last.....text.
1e40 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 3b 5c =.regex.loop(r'.style="([^"]*);\
1e60 73 2a 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 s*"',.r'.style="\1"',.text).....
1e80 0a 20 20 20 20 23 20 72 65 6d 6f 76 65 20 65 6d 70 74 79 20 61 74 74 72 69 62 75 74 0a 20 20 20 .....#.remove.empty.attribut....
1ea0 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 28 5b 5c 77 5c 2d 5d 2b 29 3d .text.=.regex.loop(r'.([\w\-]+)=
1ec0 22 5c 73 2a 22 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 73 74 "\s*"',.r'',.text)..........#.st
1ee0 72 69 70 20 3c 73 70 61 6e 3e 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 rip.<span>.....text.=.regex.loop
1f00 28 72 27 3c 73 70 61 6e 5c 73 2a 3e 28 28 28 3f 21 3c 73 70 61 6e 29 2e 29 2a 3f 29 3c 2f 73 70 (r'<span\s*>(((?!<span).)*?)</sp
1f20 61 6e 3e 27 2c 20 72 27 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 an>',.r'\1',.text).....text.=.re
1f40 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 73 70 61 6e 5c 73 2a 3e 28 28 28 3f 21 3c 73 70 61 6e 29 2e gex.loop(r'<span\s*>(((?!<span).
1f60 29 2a 3f 28 3c 73 70 61 6e 5b 5e 3e 5d 2a 3e 28 28 3f 21 3c 2f 3f 73 70 61 6e 29 2e 29 2a 3f 3c )*?(<span[^>]*>((?!</?span).)*?<
1f80 2f 73 70 61 6e 3e 28 28 3f 21 3c 2f 3f 73 70 61 6e 29 2e 29 2a 3f 29 2b 29 3c 2f 73 70 61 6e 3e /span>((?!</?span).)*?)+)</span>
1fa0 27 2c 20 72 27 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 65 6d 70 74 79 ',.r'\1',.text)..........#.empty
1fc0 20 68 79 70 65 72 6c 69 6e 6b 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 .hyperlink.....text.=.regex.loop
1fe0 28 72 27 3c 61 5c 73 2a 3e 28 2e 2a 3f 29 3c 2f 61 3e 27 2c 20 72 27 5c 31 27 2c 20 74 65 78 74 (r'<a\s*>(.*?)</a>',.r'\1',.text
2000 29 0a 20 20 20 20 0a 20 20 20 20 23 23 20 72 65 70 6c 61 63 65 73 20 74 68 65 20 69 6e 76 61 6c )..........##.replaces.the.inval
2020 69 64 20 74 72 69 70 6c 65 20 70 6f 69 6e 74 0a 20 20 20 20 23 20 74 65 78 74 20 3d 20 72 65 67 id.triple.point.....#.text.=.reg
2040 65 78 2e 73 69 6d 70 6c 65 28 72 27 5c 2e 5c 73 2a 5c 2e 5c 73 2a 5c 2e 27 2c 20 72 27 e2 80 a6 ex.simple(r'\.\s*\.\s*\.',.r'...
2060 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 ',.text).....text.=.regex.loop(r
2080 27 5c 2e 5c 73 2b 5c 2e 5c 73 2a 5c 2e 27 2c 20 72 27 e2 80 a6 27 2c 20 74 65 78 74 29 0a 20 20 '\.\s+\.\s*\.',.r'...',.text)...
20a0 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 2e 5c 73 2a 5c 2e 5c 73 2b ..text.=.regex.loop(r'\.\s*\.\s+
20c0 5c 2e 27 2c 20 72 27 e2 80 a6 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 \.',.r'...',.text)..........text
20e0 20 3d 20 58 4d 4c 66 6f 72 6d 61 74 28 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 .=.XMLformat(text)..........text
2100 20 3d 20 6f 72 64 65 72 65 64 5f 61 74 74 72 69 62 75 74 73 28 74 65 78 74 29 0a 20 20 20 20 0a .=.ordered_attributs(text)......
2120 20 20 20 20 72 65 74 75 72 6e 20 74 65 78 74 0a 0a 0a 64 65 66 20 73 74 61 6e 64 61 72 64 5f 73 ....return.text...def.standard_s
2140 74 79 6c 65 28 74 65 78 74 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 23 20 73 74 tyle(text:.str).->.str:.....#.st
2160 79 6c 65 20 73 74 61 6e 64 61 72 64 69 7a 61 74 69 6f 6e 3a 20 20 69 6e 73 65 72 74 20 3b 20 61 yle.standardization:..insert.;.a
2180 74 20 74 68 65 20 65 6e 64 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 t.the.end.....text.=.regex.loop(
21a0 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 5b 5e 22 3b 5d 29 22 27 2c 20 72 27 20 73 74 79 r'.style="([^"]*[^";])"',.r'.sty
21c0 6c 65 3d 22 5c 31 3b 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 23 20 73 74 79 6c 65 20 73 74 61 le="\1;"',.text).....#.style.sta
21e0 6e 64 61 72 64 69 7a 61 74 69 6f 6e 3a 20 69 6e 73 65 72 74 20 73 70 61 63 65 20 61 74 20 74 68 ndardization:.insert.space.at.th
2200 65 20 73 74 61 72 74 0a 20 20 20 20 74 65 78 74 20 3d 20 74 65 78 74 2e 72 65 70 6c 61 63 65 28 e.start.....text.=.text.replace(
2220 27 20 73 74 79 6c 65 3d 22 27 2c 20 27 20 73 74 79 6c 65 3d 22 20 27 29 0a 20 20 20 20 0a 20 20 '.style="',.'.style=".')........
2240 20 20 72 65 74 75 72 6e 20 74 65 78 74 0a 0a 0a 23 20 4f 72 64 65 72 65 64 20 74 68 65 20 61 74 ..return.text...#.Ordered.the.at
2260 74 72 69 62 75 74 73 0a 64 65 66 20 6f 72 64 65 72 65 64 5f 61 74 74 72 69 62 75 74 73 28 74 65 tributs.def.ordered_attributs(te
2280 78 74 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 0a 20 20 20 20 66 6f 72 20 61 74 xt:.str).->.str:..........for.at
22a0 72 20 69 6e 20 72 65 76 65 72 73 65 64 28 73 6f 72 74 65 64 28 41 54 54 52 49 42 55 54 45 53 29 r.in.reversed(sorted(ATTRIBUTES)
22c0 29 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c ):.........text.=.regex.loop(r'<
22e0 28 5c 77 2b 29 5c 73 2b 28 5b 5c 77 5c 2d 5d 2b 3d 5b 5e 3e 5d 2a 29 5c 73 2b 27 2b 61 74 72 2b (\w+)\s+([\w\-]+=[^>]*)\s+'+atr+
2300 72 27 3d 22 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 3c 5c 31 20 27 2b 61 74 72 2b 72 27 3d 22 5c r'="([^"]*)"',.r'<\1.'+atr+r'="\
2320 33 22 20 5c 32 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 74 65 3".\2',.text)..........return.te
2340 78 74 0a 0a 0a 64 65 66 20 58 4d 4c 66 6f 72 6d 61 74 28 74 65 78 74 3a 20 73 74 72 29 20 2d 3e xt...def.XMLformat(text:.str).->
2360 20 73 74 72 3a 0a 20 20 20 20 74 65 78 74 20 3d 20 27 5c 6e 27 2e 6a 6f 69 6e 28 5b 6c 2e 72 73 .str:.....text.=.'\n'.join([l.rs
2380 74 72 69 70 28 29 20 66 6f 72 20 6c 20 69 6e 20 74 65 78 74 2e 73 70 6c 69 74 6c 69 6e 65 73 28 trip().for.l.in.text.splitlines(
23a0 29 5d 29 0a 20 20 20 20 0a 20 20 20 20 23 20 58 4d 4c 20 66 6f 72 6d 61 74 0a 20 20 20 20 74 65 )])..........#.XML.format.....te
23c0 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 5b 5e 3c 3e 5d 2b 29 28 3f 3a 5c 73 xt.=.regex.loop(r'<([^<>]+)(?:\s
23e0 7b 32 2c 7d 7c 5c 6e 7c 5c 74 29 28 5b 5e 3c 3e 5d 2b 29 3e 27 2c 20 72 27 3c 5c 31 20 5c 32 3e {2,}|\n|\t)([^<>]+)>',.r'<\1.\2>
2400 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 ',.text).....text.=.regex.loop(r
2420 27 5c 73 2b 28 7c 2f 7c 5c 3f 29 5c 73 2a 3e 27 2c 20 72 27 5c 31 3e 27 2c 20 74 65 78 74 29 0a '\s+(|/|\?)\s*>',.r'\1>',.text).
2440 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 5c 73 2a 28 7c 2f 7c ....text.=.regex.loop(r'<\s*(|/|
2460 21 7c 5c 3f 29 5c 73 2b 27 2c 20 72 27 3c 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 !|\?)\s+',.r'<\1',.text)........
2480 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 22 3d 27 28 5b 5e 27 5d 2a 29 27 ..text.=.regex.loop(r"='([^']*)'
24a0 22 2c 20 72 27 3d 22 5c 31 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 ",.r'="\1"',.text)..........retu
24c0 72 6e 20 74 65 78 74 0a 0a 0a 64 65 66 20 63 61 6c 69 62 72 65 5f 65 64 69 74 6f 72 28 29 3a 0a rn.text...def.calibre_editor():.
24e0 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 63 65 20 3d 20 63 61 6c 69 62 72 65 5f 65 64 ....try:.........ce.=.calibre_ed
2500 69 74 6f 72 2e 43 6f 6d 6d 65 6e 74 73 45 64 69 74 6f 72 0a 20 20 20 20 65 78 63 65 70 74 20 41 itor.CommentsEditor.....except.A
2520 74 74 72 69 62 75 74 65 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 ttributeError:.........from.cali
2540 62 72 65 2e 67 75 69 32 2e 63 6f 6d 6d 65 6e 74 73 5f 65 64 69 74 6f 72 20 69 6d 70 6f 72 74 20 bre.gui2.comments_editor.import.
2560 45 64 69 74 6f 72 0a 20 20 20 20 20 20 20 20 63 65 20 3d 20 63 61 6c 69 62 72 65 5f 65 64 69 74 Editor.........ce.=.calibre_edit
2580 6f 72 2e 43 6f 6d 6d 65 6e 74 73 45 64 69 74 6f 72 20 3d 20 45 64 69 74 6f 72 28 29 0a 20 20 20 or.CommentsEditor.=.Editor()....
25a0 20 20 20 20 20 63 65 2e 73 65 74 56 69 73 69 62 6c 65 28 46 61 6c 73 65 29 0a 20 20 20 20 72 65 .....ce.setVisible(False).....re
25c0 74 75 72 6e 20 63 65 0a 0a 0a 64 65 66 20 63 61 6c 69 62 72 65 5f 66 6f 72 6d 61 74 28 74 65 78 turn.ce...def.calibre_format(tex
25e0 74 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 70 61 73 73 t:.str).->.str:.....'''.....pass
2600 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 69 6e 20 74 68 65 20 43 61 6c 69 62 72 65 20 63 6f 6d 6d .the.comment.in.the.Calibre.comm
2620 65 6e 74 20 65 64 69 74 6f 72 0a 20 20 20 20 66 69 78 20 73 6f 6d 65 20 6c 61 73 74 20 65 72 72 ent.editor.....fix.some.last.err
2640 6f 72 73 2c 20 62 65 74 74 65 72 20 69 6e 74 65 72 70 6f 6c 61 72 69 74 79 20 43 61 6c 69 62 72 ors,.better.interpolarity.Calibr
2660 65 20 3c 3e 20 70 6c 75 67 69 6e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 63 65 20 3d 20 63 61 6c e.<>.plugin.....'''.....ce.=.cal
2680 69 62 72 65 5f 65 64 69 74 6f 72 28 29 0a 20 20 20 20 63 65 2e 68 74 6d 6c 20 3d 20 74 65 78 74 ibre_editor().....ce.html.=.text
26a0 0a 20 20 20 20 72 65 74 75 72 6e 20 63 65 2e 68 74 6d 6c 2e 73 74 72 69 70 28 29 0a 0a 0a 64 65 .....return.ce.html.strip()...de
26c0 66 20 63 61 6c 69 62 72 65 5f 72 65 6d 6f 76 65 5f 66 6f 72 6d 61 74 28 74 65 78 74 3a 20 73 74 f.calibre_remove_format(text:.st
26e0 72 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 63 65 20 3d 20 63 61 6c 69 62 72 65 5f 65 64 69 74 r).->.str:.....ce.=.calibre_edit
2700 6f 72 28 29 0a 20 20 20 20 63 65 2e 68 74 6d 6c 20 3d 20 74 65 78 74 0a 20 20 20 20 63 65 2e 65 or().....ce.html.=.text.....ce.e
2720 64 69 74 6f 72 2e 64 6f 5f 73 65 6c 65 63 74 5f 61 6c 6c 28 29 0a 20 20 20 20 63 65 2e 65 64 69 ditor.do_select_all().....ce.edi
2740 74 6f 72 2e 64 6f 5f 72 65 6d 6f 76 65 5f 66 6f 72 6d 61 74 28 29 0a 20 20 20 20 72 65 74 75 72 tor.do_remove_format().....retur
2760 6e 20 63 65 2e 68 74 6d 6c 2e 73 74 72 69 70 28 29 0a 0a 0a 64 65 66 20 6e 6f 72 6d 61 6c 69 7a n.ce.html.strip()...def.normaliz
2780 65 5f 63 6f 6d 6d 65 6e 74 28 74 65 78 74 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 e_comment(text:.str).->.str:....
27a0 20 72 65 74 75 72 6e 20 75 6e 69 63 6f 64 65 64 61 74 61 2e 6e 6f 72 6d 61 6c 69 7a 65 28 27 4e .return.unicodedata.normalize('N
27c0 46 43 27 2c 20 74 65 78 74 29 0a 0a 0a 23 20 6d 61 69 6e 20 66 75 6e 63 74 69 6f 6e 0a 64 65 66 FC',.text)...#.main.function.def
27e0 20 63 6c 65 61 6e 5f 63 6f 6d 6d 65 6e 74 28 74 65 78 74 3a 20 73 74 72 2c 20 70 72 65 66 73 3a .clean_comment(text:.str,.prefs:
2800 20 4f 70 74 69 6f 6e 61 6c 5b 64 69 63 74 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 73 74 72 3a 0a 20 20 .Optional[dict]=None).->.str:...
2820 20 20 70 72 65 66 73 20 3d 20 5f 73 65 74 5f 70 72 65 66 73 28 70 72 65 66 73 29 0a 20 20 20 20 ..prefs.=._set_prefs(prefs).....
2840 0a 20 20 20 20 74 65 78 74 20 3d 20 74 65 78 74 2e 72 65 70 6c 61 63 65 28 27 5c 72 5c 6e 27 2c .....text.=.text.replace('\r\n',
2860 20 27 5c 6e 27 29 2e 72 65 70 6c 61 63 65 28 27 5c 72 27 2c 20 27 5c 6e 27 29 0a 20 20 20 20 0a .'\n').replace('\r',.'\n')......
2880 20 20 20 20 74 65 78 74 20 3d 20 63 6c 65 61 6e 5f 63 61 70 73 5f 74 61 67 73 28 74 65 78 74 29 ....text.=.clean_caps_tags(text)
28a0 0a 20 20 20 20 0a 20 20 20 20 23 20 69 66 20 6e 6f 20 74 61 67 20 3d 20 70 6c 61 69 6e 20 74 65 ..........#.if.no.tag.=.plain.te
28c0 78 74 0a 20 20 20 20 69 66 20 6e 6f 74 20 72 65 67 65 78 2e 73 65 61 72 63 68 28 72 27 3c 28 3f xt.....if.not.regex.search(r'<(?
28e0 21 62 72 29 5c 77 2b 28 7c 20 5b 5e 3e 5d 2a 29 2f 3f 3e 27 2c 20 74 65 78 74 29 3a 20 20 23 20 !br)\w+(|.[^>]*)/?>',.text):..#.
2900 65 78 63 6c 75 64 65 20 3c 62 72 3e 20 6f 66 20 74 68 65 20 74 65 73 74 0a 20 20 20 20 20 20 20 exclude.<br>.of.the.test........
2920 20 23 20 43 6f 6e 76 65 72 74 20 74 77 6f 20 68 79 70 68 65 6e 73 20 74 6f 20 65 6d 64 61 73 68 .#.Convert.two.hyphens.to.emdash
2940 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 74 65 78 74 2e 72 65 70 6c 61 63 65 28 27 2d 2d .........text.=.text.replace('--
2960 27 2c 20 27 e2 80 94 27 29 0a 20 20 20 20 20 20 20 20 23 20 4d 61 72 6b 64 6f 77 6e 0a 20 20 20 ',.'...').........#.Markdown....
2980 20 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 4d 41 52 4b 44 4f 57 4e 5d 20 3d 3d 20 27 .....if.prefs[KEY.MARKDOWN].==.'
29a0 74 72 79 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c try':.............text.=.regex.l
29c0 6f 6f 70 28 72 27 5e 28 5c 64 7b 34 7d 29 28 5c 2e 7c 3a 29 27 2c 20 72 27 5c 31 5c 30 5c 32 27 oop(r'^(\d{4})(\.|:)',.r'\1\0\2'
29e0 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 ,.text).............text.=.regex
2a00 2e 6c 6f 6f 70 28 72 27 5c 6e 28 5c 64 7b 34 7d 29 28 5c 2e 7c 3a 29 27 2c 20 72 27 5c 6e 5c 31 .loop(r'\n(\d{4})(\.|:)',.r'\n\1
2a20 5c 30 5c 32 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 \0\2',.text).............text.=.
2a40 6d 61 72 6b 64 6f 77 6e 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 markdown(text).............text.
2a60 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 30 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 =.regex.loop(r'\0',.r'',.text)..
2a80 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3e ...........text.=.regex.loop(r'>
2aa0 5c 6e 2b 3c 27 2c 20 27 3e 3c 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 \n+<',.'><',.text).............t
2ac0 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 62 72 28 7c 20 5b 5e 3e 5d 2a 29 2f ext.=.regex.loop(r'<br(|.[^>]*)/
2ae0 3f 3e 5c 73 2b 27 2c 20 27 3c 62 72 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 ?>\s+',.'<br>',.text)...........
2b00 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 62 72 28 7c .......text.=.regex.loop(r'<br(|
2b20 20 5b 5e 3e 5d 2a 29 2f 3f 3e 27 2c 20 72 27 5c 6e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 .[^>]*)/?>',.r'\n',.text).......
2b40 20 20 74 65 78 74 20 3d 20 27 3c 64 69 76 3e 3c 70 3e 27 20 2b 20 72 65 67 65 78 2e 6c 6f 6f 70 ..text.=.'<div><p>'.+.regex.loop
2b60 28 72 27 5c 6e 7b 32 2c 7d 27 2c 20 72 27 3c 2f 70 3e 3c 70 3e 27 2c 20 74 65 78 74 29 20 2b 20 (r'\n{2,}',.r'</p><p>',.text).+.
2b80 27 3c 2f 70 3e 3c 2f 64 69 76 3e 27 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 '</p></div>'.........text.=.rege
2ba0 78 2e 6c 6f 6f 70 28 72 27 5c 6e 27 2c 20 72 27 3c 62 72 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 x.loop(r'\n',.r'<br>',.text)....
2bc0 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 70 3e 7c 3c 62 .....text.=.regex.loop(r'(<p>|<b
2be0 72 3e 29 5c 73 2b 27 2c 20 72 27 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 r>)\s+',.r'\1',.text).........te
2c00 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 73 2b 28 3c 70 3e 7c 3c 62 72 3e 29 27 xt.=.regex.loop(r'\s+(<p>|<br>)'
2c20 2c 20 72 27 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 ,.r'\1',.text)..................
2c40 74 65 78 74 20 3d 20 63 61 6c 69 62 72 65 5f 66 6f 72 6d 61 74 28 74 65 78 74 29 0a 20 20 20 20 text.=.calibre_format(text).....
2c60 0a 20 20 20 20 23 20 64 6f 75 62 6c 65 20 70 61 73 73 65 0a 20 20 20 20 23 20 45 6d 70 69 72 69 .....#.double.passe.....#.Empiri
2c80 63 61 6c 20 74 65 73 74 73 20 68 61 76 65 20 73 68 6f 77 6e 20 74 68 61 74 20 69 74 20 77 61 73 cal.tests.have.shown.that.it.was
2ca0 20 6e 65 63 65 73 73 61 72 79 20 66 6f 72 20 73 6f 6d 65 20 76 65 72 79 20 72 61 72 65 20 61 6e .necessary.for.some.very.rare.an
2cc0 64 20 73 70 65 63 69 66 69 63 20 63 61 73 65 73 2e 0a 20 20 20 20 66 6f 72 20 70 61 73 73 65 20 d.specific.cases......for.passe.
2ce0 69 6e 20 72 61 6e 67 65 28 32 29 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 65 in.range(2):..................te
2d00 78 74 20 3d 20 63 6c 65 61 6e 5f 62 61 73 69 63 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a xt.=.clean_basic(text)..........
2d20 20 20 20 20 20 20 20 20 23 20 49 66 20 3c 64 69 76 3e 20 69 73 20 6e 6f 74 20 74 68 65 20 72 61 ........#.If.<div>.is.not.the.ra
2d40 63 69 6e 65 20 74 61 67 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 65 67 65 78 2e 73 65 cine.tag.........if.not.regex.se
2d60 61 72 63 68 28 72 27 3c 64 69 76 28 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 2a 3c 28 70 7c 64 69 76 7c arch(r'<div(|.[^>]*)>\s*<(p|div|
2d80 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 74 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 h\d)(|.[^>]*)>',.text):.........
2da0 20 20 20 20 74 65 78 74 20 3d 20 27 3c 64 69 76 3e 27 2b 74 65 78 74 2b 27 3c 2f 64 69 76 3e 27 ....text.=.'<div>'+text+'</div>'
2dc0 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 44 65 6c 20 65 6d 70 74 79 20 3c 64 ..................#.Del.empty.<d
2de0 69 76 3e 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 iv>.........text.=.regex.loop(r'
2e00 3c 64 69 76 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 2e 2a 3f 29 3c 64 69 76 28 7c 20 5b 5e 3e 5d 2a 29 <div(|.[^>]*)>(.*?)<div(|.[^>]*)
2e20 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 64 69 76 3e 27 2c 20 72 27 3c 64 69 76 3e 5c 32 27 2c 20 74 >'+NBSP+r'</div>',.r'<div>\2',.t
2e40 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 43 6f 6e 76 65 72 74 20 ext)..................#.Convert.
2e60 3c 64 69 76 3e 20 61 66 74 65 72 20 61 20 3c 64 69 76 3e 20 69 6e 20 3c 70 3e 0a 20 20 20 20 20 <div>.after.a.<div>.in.<p>......
2e80 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 64 69 76 28 7c 20 5b 5e ...text.=.regex.loop(r'<div(|.[^
2ea0 3e 5d 2a 29 3e 28 2e 2a 3f 29 3c 64 69 76 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 2e 2a 3f 29 3c 2f 64 >]*)>(.*?)<div(|.[^>]*)>(.*?)</d
2ec0 69 76 3e 27 2c 20 72 27 3c 64 69 76 3e 5c 32 3c 70 5c 33 3e 5c 34 3c 2f 70 3e 27 2c 20 74 65 78 iv>',.r'<div>\2<p\3>\4</p>',.tex
2ee0 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 3c 70 3e 20 69 6e 20 5c 73 3c t)..................#.<p>.in.\s<
2f00 70 3e 5c 73 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 p>\s.........text.=.regex.loop(r
2f20 27 3c 28 70 7c 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 2a 3c 28 70 7c 68 5c 64 29 28 7c '<(p|h\d)(|.[^>]*)>\s*<(p|h\d)(|
2f40 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 28 3f 3a 70 7c 68 5c 64 29 3e 29 2e 29 2a 3f .[^>]*)>((?:(?!</(?:p|h\d)>).)*?
2f60 29 3c 2f 5c 33 3e 5c 73 2a 3c 2f 5c 31 3e 27 2c 20 72 27 3c 5c 33 5c 34 3e 5c 35 3c 2f 5c 33 3e )</\3>\s*</\1>',.r'<\3\4>\5</\3>
2f80 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 23 20 3c 70 3e 20 69 6e 20 3f 3f 3c 70 3e 5c ',.text).........#.<p>.in.??<p>\
2fa0 73 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 70 s.........text.=.regex.loop(r'<p
2fc0 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 70 28 7c 20 (|.[^>]*)>((?:(?!</p>).)*?)<p(|.
2fe0 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 2f 70 3e 5c 73 2a 3c [^>]*)>((?:(?!</p>).)*?)</p>\s*<
3000 2f 70 3e 27 2c 20 72 27 3c 70 5c 31 3e 5c 32 3c 2f 70 3e 3c 70 5c 33 3e 5c 34 3c 2f 70 3e 27 2c /p>',.r'<p\1>\2</p><p\3>\4</p>',
3020 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 23 20 3c 70 3e 20 69 6e 20 5c 73 3c 70 3e 3f 3f 0a .text).........#.<p>.in.\s<p>??.
3040 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 70 28 7c ........text.=.regex.loop(r'<p(|
3060 20 5b 5e 3e 5d 2a 29 3e 5c 73 2a 3c 70 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f .[^>]*)>\s*<p(|.[^>]*)>((?:(?!</
3080 70 3e 29 2e 29 2a 3f 29 3c 2f 70 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 2f 70 p>).)*?)</p>((?:(?!</p>).)*?)</p
30a0 3e 27 2c 20 72 27 3c 70 5c 32 3e 5c 33 3c 2f 70 3e 3c 70 5c 31 3e 5c 34 3c 2f 70 3e 27 2c 20 74 >',.r'<p\2>\3</p><p\1>\4</p>',.t
30c0 65 78 74 29 0a 20 20 20 20 20 20 20 20 23 20 3c 70 3e 20 69 6e 20 3f 3f 3c 70 3e 3f 3f 0a 20 20 ext).........#.<p>.in.??<p>??...
30e0 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 70 28 7c 20 5b ......text.=.regex.loop(r'<p(|.[
3100 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 70 28 7c 20 5b 5e 3e 5d ^>]*)>((?:(?!</p>).)*?)<p(|.[^>]
3120 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 2f 70 3e 28 28 3f 3a 28 3f 21 3c *)>((?:(?!</p>).)*?)</p>((?:(?!<
3140 2f 70 3e 29 2e 29 2a 3f 29 3c 2f 70 3e 27 2c 20 72 27 3c 70 5c 31 3e 5c 32 3c 2f 70 3e 3c 70 5c /p>).)*?)</p>',.r'<p\1>\2</p><p\
3160 33 3e 5c 34 3c 2f 70 3e 3c 70 5c 31 3e 5c 35 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 3>\4</p><p\1>\5</p>',.text).....
3180 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 44 65 6c 20 65 6d 70 74 79 20 3c 70 3e 20 61 74 20 .............#.Del.empty.<p>.at.
31a0 74 68 65 20 73 74 61 72 74 2f 65 6e 64 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 the.start/end.........text.=.reg
31c0 65 78 2e 6c 6f 6f 70 28 72 27 3c 64 69 76 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 2a 3c 28 70 ex.loop(r'<div(?:|.[^>]*)>\s*<(p
31e0 7c 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 5c 31 3e 27 2c 20 |h\d)(|.[^>]*)>'+NBSP+r'</\1>',.
3200 72 27 3c 64 69 76 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 r'<div>',.text).........text.=.r
3220 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 70 7c 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2b egex.loop(r'<(p|h\d)(|.[^>]*)>'+
3240 4e 42 53 50 2b 72 27 3c 2f 5c 31 3e 5c 73 2a 3c 2f 64 69 76 3e 27 2c 20 72 27 3c 2f 64 69 76 3e NBSP+r'</\1>\s*</div>',.r'</div>
3260 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 43 6f 6e 76 ',.text)..................#.Conv
3280 65 72 74 20 65 6d 70 74 79 20 3c 74 61 62 6c 65 3e 74 6f 20 65 6d 70 74 79 20 3c 70 3e 0a 20 20 ert.empty.<table>to.empty.<p>...
32a0 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 74 61 62 6c 65 ......text.=.regex.loop(r'<table
32c0 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 3f 3a 5c 73 2a 3c 74 62 6f 64 79 3e 29 3f 5c 73 2a 28 3f 3a 3c (|.[^>]*)>(?:\s*<tbody>)?\s*(?:<
32e0 74 72 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 3e 28 3f 3a 5c 73 2a 3c 74 64 28 7c 20 5b 5e 3e 5d 2a 29 tr(?:|.[^>]*)>(?:\s*<td(|.[^>]*)
3300 3e 5c 73 2a 3c 2f 74 64 3e 29 2b 5c 73 2a 3c 2f 74 72 3e 29 2b 28 3f 3a 5c 73 2a 3c 2f 74 62 6f >\s*</td>)+\s*</tr>)+(?:\s*</tbo
3320 64 79 3e 29 3f 5c 73 2a 3c 2f 74 61 62 6c 65 3e 27 2c 20 72 27 3c 70 5c 31 5c 32 3e 27 2b 4e 42 dy>)?\s*</table>',.r'<p\1\2>'+NB
3340 53 50 2b 72 27 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 SP+r'</p>',.text)...............
3360 20 20 20 23 20 43 6f 6e 76 65 72 74 20 3c 74 61 62 6c 65 3e 20 77 69 74 68 20 6f 6e 6c 79 20 31 ...#.Convert.<table>.with.only.1
3380 20 72 6f 77 20 61 6e 64 20 31 20 63 65 6c 6c 20 74 6f 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 74 .row.and.1.cell.to.<p>.........t
33a0 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 74 61 62 6c 65 28 7c 20 5b 5e 3e 5d ext.=.regex.loop(r'<table(|.[^>]
33c0 2a 29 3e 28 3f 3a 5c 73 2a 3c 74 62 6f 64 79 3e 29 3f 5c 73 2a 3c 74 72 28 3f 3a 7c 20 5b 5e 3e *)>(?:\s*<tbody>)?\s*<tr(?:|.[^>
33e0 5d 2a 29 3e 5c 73 2a 3c 74 64 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 2e 2a 3f 29 3c 2f 74 64 3e 5c 73 ]*)>\s*<td(|.[^>]*)>(.*?)</td>\s
3400 2a 3c 2f 74 72 3e 28 3f 3a 5c 73 2a 3c 2f 74 62 6f 64 79 3e 29 3f 5c 73 2a 3c 2f 74 61 62 6c 65 *</tr>(?:\s*</tbody>)?\s*</table
3420 3e 27 2c 20 72 27 3c 70 5c 31 5c 32 3e 5c 33 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 >',.r'<p\1\2>\3</p>',.text).....
3440 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 4d 65 72 67 65 20 64 75 70 6c 69 63 61 74 65 20 61 .............#.Merge.duplicate.a
3460 74 74 72 69 62 75 74 73 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f ttributs.........text.=.regex.lo
3480 6f 70 28 72 27 20 28 5c 77 2b 29 3d 22 28 5b 5e 22 5d 2a 29 22 28 5b 5e 3e 5d 2a 29 20 5c 31 3d op(r'.(\w+)="([^"]*)"([^>]*).\1=
34a0 22 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 5c 31 3d 22 5c 32 20 5c 34 22 5c 33 27 2c 20 74 65 "([^"]*)"',.r'.\1="\2.\4"\3',.te
34c0 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 4d 61 72 6b 64 6f 77 6e 0a xt)..................#.Markdown.
34e0 20 20 20 20 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 4d 41 52 4b 44 4f 57 4e 5d 20 3d ........if.prefs[KEY.MARKDOWN].=
3500 3d 20 27 61 6c 77 61 79 73 27 20 61 6e 64 20 70 61 73 73 65 20 3d 3d 20 30 3a 0a 20 20 20 20 20 =.'always'.and.passe.==.0:......
3520 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 63 6c 65 61 6e 5f 6d 61 72 6b 64 6f 77 6e 28 74 65 78 .......text.=.clean_markdown(tex
3540 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 4d 75 6c 74 69 70 6c 65 20 4c t)..................#.Multiple.L
3560 69 6e 65 20 52 65 74 75 72 6e 20 3c 62 72 3e 3c 62 72 3e 0a 20 20 20 20 20 20 20 20 69 66 20 70 ine.Return.<br><br>.........if.p
3580 72 65 66 73 5b 4b 45 59 2e 44 4f 55 42 4c 45 5f 42 52 5d 20 3d 3d 20 27 6e 65 77 27 3a 0a 20 20 refs[KEY.DOUBLE_BR].==.'new':...
35a0 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 70 ..........text.=.regex.loop(r'<p
35c0 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 28 3c 62 72 3e (|.[^>]*)>((?:(?!</p>).)*?)(<br>
35e0 29 7b 32 2c 7d 27 2c 20 72 27 3c 70 5c 31 3e 5c 32 3c 2f 70 3e 3c 70 5c 31 3e 27 2c 20 74 65 78 ){2,}',.r'<p\1>\2</p><p\1>',.tex
3600 74 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 44 4f 55 42 4c 45 t).........elif.prefs[KEY.DOUBLE
3620 5f 42 52 5d 20 3d 3d 20 27 65 6d 70 74 79 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 _BR].==.'empty':.............tex
3640 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 70 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f t.=.regex.loop(r'<p(|.[^>]*)>((?
3660 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 28 3c 62 72 3e 29 7b 32 2c 7d 27 2c 20 72 27 3c 70 5c :(?!</p>).)*?)(<br>){2,}',.r'<p\
3680 31 3e 5c 32 3c 2f 70 3e 3c 70 5c 31 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 70 3e 3c 70 5c 31 3e 27 1>\2</p><p\1>'+NBSP+r'</p><p\1>'
36a0 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 53 69 6e 67 6c ,.text)..................#.Singl
36c0 65 20 4c 69 6e 65 20 52 65 74 75 72 6e 20 3c 62 72 3e 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 e.Line.Return.<br>.........if.pr
36e0 65 66 73 5b 4b 45 59 2e 53 49 4e 47 4c 45 5f 42 52 5d 20 3d 3d 20 27 73 70 61 63 65 27 3a 0a 20 efs[KEY.SINGLE_BR].==.'space':..
3700 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c ...........text.=.regex.loop(r'<
3720 70 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 62 72 3e p(|.[^>]*)>((?:(?!</p>).)*?)<br>
3740 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 2f 70 3e 27 2c 20 72 27 3c 70 5c 31 3e 5c ((?:(?!</p>).)*?)</p>',.r'<p\1>\
3760 32 20 5c 33 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 70 72 2.\3</p>',.text).........elif.pr
3780 65 66 73 5b 4b 45 59 2e 53 49 4e 47 4c 45 5f 42 52 5d 20 3d 3d 20 27 70 61 72 61 27 3a 0a 20 20 efs[KEY.SINGLE_BR].==.'para':...
37a0 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 70 ..........text.=.regex.loop(r'<p
37c0 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 62 72 3e 28 (|.[^>]*)>((?:(?!</p>).)*?)<br>(
37e0 28 3f 3a 28 3f 21 3c 2f 70 3e 29 2e 29 2a 3f 29 3c 2f 70 3e 27 2c 20 72 27 3c 70 5c 31 3e 5c 32 (?:(?!</p>).)*?)</p>',.r'<p\1>\2
3800 3c 2f 70 3e 3c 70 5c 31 3e 5c 33 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 </p><p\1>\3</p>',.text).........
3820 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 70 28 7c 20 5b 5e 3e ....text.=.regex.loop(r'<p(|.[^>
3840 5d 2a 29 3e 3c 2f 70 3e 27 2c 20 72 27 3c 70 5c 31 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 70 3e 27 ]*)></p>',.r'<p\1>'+NBSP+r'</p>'
3860 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 45 6d 70 74 79 ,.text)..................#.Empty
3880 20 70 61 72 61 67 72 61 70 68 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e .paragraph.........if.prefs[KEY.
38a0 45 4d 50 54 59 5f 50 41 52 41 5d 20 3d 3d 20 27 6d 65 72 67 65 27 3a 0a 20 20 20 20 20 20 20 20 EMPTY_PARA].==.'merge':.........
38c0 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3f 3a 3c 70 28 7c 20 ....text.=.regex.loop(r'(?:<p(|.
38e0 5b 5e 3e 5d 2a 29 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 70 3e 5c 73 2a 29 7b 32 2c 7d 27 2c 20 72 [^>]*)>'+NBSP+r'</p>\s*){2,}',.r
3900 27 3c 70 5c 31 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 '<p\1>'+NBSP+r'</p>',.text).....
3920 20 20 20 20 65 6c 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 45 4d 50 54 59 5f 50 41 52 41 5d 20 3d ....elif.prefs[KEY.EMPTY_PARA].=
3940 3d 20 27 64 65 6c 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 =.'del':.............text.=.rege
3960 78 2e 6c 6f 6f 70 28 72 27 3c 70 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f x.loop(r'<p(|.[^>]*)>'+NBSP+r'</
3980 70 3e 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 p>',.r'',.text).................
39a0 20 23 20 44 65 6c 65 74 65 20 3c 69 6d 67 3e 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 65 66 73 .#.Delete.<img>.........if.prefs
39c0 5b 4b 45 59 2e 49 4d 47 5f 54 41 47 5d 20 3d 3d 20 27 64 65 6c 27 3a 0a 20 20 20 20 20 20 20 20 [KEY.IMG_TAG].==.'del':.........
39e0 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 73 2a 3c 69 6d 67 28 ....text.=.regex.loop(r'\s*<img(
3a00 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 2a 27 2c 20 72 27 20 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 |.[^>]*)>\s*',.r'.',.text)......
3a20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 73 2a 3c 28 .......text.=.regex.loop(r'\s*<(
3a40 70 7c 6c 69 7c 64 69 76 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 20 3c 2f 5c 31 3e 5c 73 2a 27 2c 20 72 p|li|div)(|.[^>]*)>.</\1>\s*',.r
3a60 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 '',.text)..................if.pr
3a80 65 66 73 5b 4b 45 59 2e 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 5d 3a 0a 20 20 20 20 20 20 20 efs[KEY.DEL_FORMATTING]:........
3aa0 20 20 20 20 20 23 20 52 65 6d 6f 76 65 20 46 6f 72 6d 61 74 74 69 6e 67 0a 20 20 20 20 20 20 20 .....#.Remove.Formatting........
3ac0 20 20 20 20 20 74 65 78 74 20 3d 20 63 61 6c 69 62 72 65 5f 72 65 6d 6f 76 65 5f 66 6f 72 6d 61 .....text.=.calibre_remove_forma
3ae0 74 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 65 6c 73 t(text)......................els
3b00 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 44 20 61 6e 64 20 43 4c 41 53 53 20 61 74 e:.............#.ID.and.CLASS.at
3b20 74 72 69 62 75 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 27 69 64 27 20 69 6e 20 70 tributs.............if.'id'.in.p
3b40 72 65 66 73 5b 4b 45 59 2e 49 44 5f 43 4c 41 53 53 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 refs[KEY.ID_CLASS]:.............
3b60 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 69 64 3d 22 5b 5e 22 ....text.=.regex.loop(r'.id="[^"
3b80 5d 2a 22 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ]*"',.r'',.text).............if.
3ba0 27 63 6c 61 73 73 27 20 69 6e 20 70 72 65 66 73 5b 4b 45 59 2e 49 44 5f 43 4c 41 53 53 5d 3a 0a 'class'.in.prefs[KEY.ID_CLASS]:.
3bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f ................text.=.regex.loo
3be0 70 28 72 27 20 63 6c 61 73 73 3d 22 5b 5e 22 5d 2a 22 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a p(r'.class="[^"]*"',.r'',.text).
3c00 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 48 65 61 64 69 .........................#.Headi
3c20 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 48 45 41 ngs.............if.prefs[KEY.HEA
3c40 44 49 4e 47 53 5d 20 3d 3d 20 27 62 6f 6c 64 65 72 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 DINGS].==.'bolder':.............
3c60 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 68 5c 64 29 28 5b ....text.=.regex.loop(r'<(h\d)([
3c80 5e 3e 5d 2a 29 20 73 74 79 6c 65 3d 22 28 28 3f 3a 28 3f 21 66 6f 6e 74 2d 77 65 69 67 68 74 29 ^>]*).style="((?:(?!font-weight)
3ca0 5b 5e 22 5d 29 2a 29 22 28 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c 31 5c 32 20 73 74 79 6c 65 [^"])*)"([^>]*)>',.r'<\1\2.style
3cc0 3d 22 5c 33 3b 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62 6f 6c 64 22 5c 34 3e 27 2c 20 74 65 ="\3;.font-weight:.bold"\4>',.te
3ce0 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 xt).................text.=.regex
3d00 2e 6c 6f 6f 70 28 72 27 3c 28 68 5c 64 29 28 28 3f 3a 28 3f 21 20 73 74 79 6c 65 3d 29 5b 5e 3e .loop(r'<(h\d)((?:(?!.style=)[^>
3d20 5d 29 2a 29 3e 27 2c 20 72 27 3c 5c 31 5c 32 20 73 74 79 6c 65 3d 22 66 6f 6e 74 2d 77 65 69 67 ])*)>',.r'<\1\2.style="font-weig
3d40 68 74 3a 20 62 6f 6c 64 3b 22 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 ht:.bold;">',.text).............
3d60 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 48 45 41 44 49 4e 47 53 5d 20 3d 3d 20 27 63 6f 6e 76 27 if.prefs[KEY.HEADINGS].==.'conv'
3d80 20 6f 72 20 70 72 65 66 73 5b 4b 45 59 2e 48 45 41 44 49 4e 47 53 5d 20 3d 3d 20 27 62 6f 6c 64 .or.prefs[KEY.HEADINGS].==.'bold
3da0 65 72 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 er':.................text.=.rege
3dc0 78 2e 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 68 5c 64 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 x.loop(r'<(/?)h\d(|.[^>]*)>',.r'
3de0 3c 5c 31 70 5c 32 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 <\1p\2>',.text).............#.re
3e00 6d 6f 76 65 20 65 78 70 6c 69 63 69 74 20 77 65 69 67 68 74 20 66 6f 72 6d 61 74 74 69 6e 67 20 move.explicit.weight.formatting.
3e20 69 6e 20 68 65 61 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 in.headings.............text.=.r
3e40 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 68 5c 64 29 28 5b 5e 3e 5d 2a 29 20 73 74 79 6c 65 3d egex.loop(r'<(h\d)([^>]*).style=
3e60 22 28 5b 5e 22 5d 2a 29 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 5b 5c 77 5c 64 5d 2b 28 5b 5e 22 "([^"]*)font-weight:.[\w\d]+([^"
3e80 5d 2a 29 22 28 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c 31 5c 32 20 73 74 79 6c 65 3d 22 5c 33 ]*)"([^>]*)>',.r'<\1\2.style="\3
3ea0 5c 34 22 5c 35 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 \4"\5>',.text)..................
3ec0 20 20 20 20 20 20 20 20 23 20 48 79 70 65 72 6c 69 6e 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........#.Hyperlink.............
3ee0 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 4b 45 45 50 5f 55 52 4c 5d 20 3d 3d 20 27 64 65 6c 27 3a if.prefs[KEY.KEEP_URL].==.'del':
3f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f .................text.=.regex.lo
3f20 6f 70 28 72 27 3c 61 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 3e 28 2e 2a 3f 29 3c 2f 61 3e 27 2c 20 72 op(r'<a(?:|.[^>]*)>(.*?)</a>',.r
3f40 27 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 '\1',.text).....................
3f60 20 20 20 20 20 74 65 78 74 20 3d 20 63 6c 65 61 6e 5f 62 61 73 69 63 28 74 65 78 74 29 0a 20 20 .....text.=.clean_basic(text)...
3f80 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 73 74 61 6e 64 61 72 64 5f 73 74 79 6c 65 28 ..........text.=.standard_style(
3fa0 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 text)..........................t
3fc0 65 78 74 20 3d 20 63 6c 65 61 6e 5f 61 6c 69 67 6e 28 74 65 78 74 2c 20 70 72 65 66 73 29 0a 20 ext.=.clean_align(text,.prefs)..
3fe0 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 63 ........................text.=.c
4000 6c 65 61 6e 5f 73 74 79 6c 65 28 74 65 78 74 2c 20 70 72 65 66 73 29 0a 20 20 20 20 20 20 20 20 lean_style(text,.prefs).........
4020 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 44 65 6c 20 3c 73 75 70 3e 2f 3c 73 75 .................#.Del.<sup>/<su
4040 62 3e 20 70 61 72 61 67 72 61 70 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d b>.paragraphe.............text.=
4060 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 70 7c 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 3e .regex.loop(r'<(p|h\d)(|.[^>]*)>
4080 5c 73 2a 3c 73 75 28 70 7c 62 29 3e 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a \s*<su(p|b)>((?:(?:<br>)|[^<>])*
40a0 3f 29 3c 2f 73 75 5c 33 3e 5c 73 2a 3c 2f 5c 31 3e 27 2c 20 72 27 3c 5c 31 5c 32 3e 5c 34 3c 2f ?)</su\3>\s*</\1>',.r'<\1\2>\4</
40c0 5c 31 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 \1>',.text).............text.=.r
40e0 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 70 7c 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 5c 73 egex.loop(r'<(p|h\d)(|.[^>]*)>\s
4100 2a 3c 73 75 28 70 7c 62 29 3e 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f 29 *<su(p|b)>((?:(?:<br>)|[^<>])*?)
4120 3c 2f 73 75 5c 33 3e 5c 73 2a 3c 62 72 3e 5c 73 2a 3c 73 75 28 70 7c 62 29 3e 28 28 3f 3a 28 3f </su\3>\s*<br>\s*<su(p|b)>((?:(?
4140 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f 29 3c 2f 73 75 5c 35 3e 5c 73 2a 3c 2f 5c 31 3e 27 :<br>)|[^<>])*?)</su\5>\s*</\1>'
4160 2c 20 72 27 3c 5c 31 5c 32 3e 5c 34 3c 62 72 3e 5c 36 3c 2f 5c 31 3e 27 2c 20 74 65 78 74 29 0a ,.r'<\1\2>\4<br>\6</\1>',.text).
4180 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 3c 62 72 3e 20 .........................#.<br>.
41a0 69 6e 20 73 61 6d 65 20 74 61 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 in.same.tag.............text.=.r
41c0 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 28 5c 77 2b 29 28 3f 3a 7c 20 5b 5e 3e 5d 2a 29 29 3e egex.loop(r'<((\w+)(?:|.[^>]*))>
41e0 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f 29 3c 2f 5c 32 3e 3c 62 72 3e 3c ((?:(?:<br>)|[^<>])*?)</\2><br><
4200 5c 31 3e 27 2c 20 72 27 3c 5c 31 3e 5c 33 3c 62 72 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 \1>',.r'<\1>\3<br>',.text)......
4220 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 6c 20 61 74 74 69 62 75 ....................#.del.attibu
4240 74 73 20 66 6f 72 20 3c 64 69 76 3e 20 77 69 74 68 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 20 20 ts.for.<div>.with.<p>...........
4260 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 64 69 76 5b 5e 3e 5d 2b 3e ..text.=.regex.loop(r'<div[^>]+>
4280 5c 73 2a 3c 28 70 7c 68 5c 64 29 27 2c 20 72 27 3c 64 69 76 3e 5c 6e 3c 5c 31 27 2c 20 74 65 78 \s*<(p|h\d)',.r'<div>\n<\1',.tex
42a0 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 63 6c t)..........................#.cl
42c0 65 61 6e 20 74 65 78 74 20 66 75 6c 6c 20 68 65 61 64 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 ean.text.full.heading...........
42e0 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5e 5c 73 2a 3c 64 69 76 3e 5c ..text.=.regex.loop(r'^\s*<div>\
4300 73 2a 3c 68 28 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b s*<h(\d)(|.[^>]*)>((?:(?:<br>)|[
4320 5e 3c 3e 5d 29 2a 3f 29 3c 2f 68 5c 31 3e 5c 73 2a 3c 2f 64 69 76 3e 5c 73 2a 24 27 2c 20 72 27 ^<>])*?)</h\1>\s*</div>\s*$',.r'
4340 3c 64 69 76 3e 3c 70 5c 32 3e 5c 33 3c 2f 70 3e 3c 2f 64 69 76 3e 27 2c 20 74 65 78 74 29 0a 20 <div><p\2>\3</p></div>',.text)..
4360 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 63 6c 65 61 6e 20 ........................#.clean.
4380 74 65 78 74 20 66 75 6c 6c 20 62 6f 6c 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 text.full.bold.............text.
43a0 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5e 5c 73 2a 3c 64 69 76 3e 5c 73 2a 3c 70 28 5b 5e =.regex.loop(r'^\s*<div>\s*<p([^
43c0 3e 5d 2a 3f 29 66 6f 6e 74 2d 77 65 69 67 68 74 3a 5c 73 2a 5c 64 2b 28 5b 5e 3e 5d 2a 3f 29 3e >]*?)font-weight:\s*\d+([^>]*?)>
43e0 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f 29 3c 2f 70 3e 5c 73 2a 3c 2f 64 ((?:(?:<br>)|[^<>])*?)</p>\s*</d
4400 69 76 3e 5c 73 2a 24 27 2c 20 72 27 3c 64 69 76 3e 3c 70 5c 31 5c 32 3e 5c 33 3c 2f 70 3e 3c 2f iv>\s*$',.r'<div><p\1\2>\3</p></
4420 64 69 76 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 div>',.text)....................
4440 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5e 5c 73 2a 3c 64 ......text.=.regex.loop(r'^\s*<d
4460 69 76 3e 5c 73 2a 3c 70 28 5b 5e 3e 5d 2a 3f 29 3e 3c 73 74 72 6f 6e 67 28 5b 5e 3e 5d 2a 3f 29 iv>\s*<p([^>]*?)><strong([^>]*?)
4480 3e 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f 29 3c 2f 73 74 72 6f 6e 67 3e >((?:(?:<br>)|[^<>])*?)</strong>
44a0 3c 2f 70 3e 5c 73 2a 3c 2f 64 69 76 3e 5c 73 2a 24 27 2c 20 72 27 3c 64 69 76 3e 3c 70 5c 31 3e </p>\s*</div>\s*$',.r'<div><p\1>
44c0 3c 73 70 61 6e 5c 32 3e 5c 33 3c 2f 73 70 61 6e 3e 3c 2f 70 3e 3c 2f 64 69 76 3e 27 2c 20 74 65 <span\2>\3</span></p></div>',.te
44e0 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f xt).............text.=.regex.loo
4500 70 28 72 27 5e 5c 73 2a 3c 64 69 76 3e 5c 73 2a 3c 70 28 5b 5e 3e 5d 2a 3f 29 3e 3c 73 74 72 6f p(r'^\s*<div>\s*<p([^>]*?)><stro
4520 6e 67 28 5b 5e 3e 5d 2a 3f 29 3e 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f ng([^>]*?)>((?:(?:<br>)|[^<>])*?
4540 29 3c 2f 73 74 72 6f 6e 67 3e 3c 62 72 3e 3c 73 74 72 6f 6e 67 28 5b 5e 3e 5d 2a 3f 29 3e 28 28 )</strong><br><strong([^>]*?)>((
4560 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f 29 3c 2f 73 74 72 6f 6e 67 3e 3c 2f 70 ?:(?:<br>)|[^<>])*?)</strong></p
4580 3e 5c 73 2a 3c 2f 64 69 76 3e 5c 73 2a 24 27 2c 20 72 27 3c 64 69 76 3e 3c 70 5c 31 3e 3c 73 70 >\s*</div>\s*$',.r'<div><p\1><sp
45a0 61 6e 5c 32 3e 5c 33 3c 2f 73 70 61 6e 3e 3c 62 72 3e 3c 73 70 61 6e 5c 34 3e 5c 35 3c 2f 73 70 an\2>\3</span><br><span\4>\5</sp
45c0 61 6e 3e 3c 2f 70 3e 3c 2f 64 69 76 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 an></p></div>',.text)...........
45e0 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 ...............text.=.regex.loop
4600 28 72 27 5e 5c 73 2a 3c 64 69 76 3e 5c 73 2a 3c 70 28 5b 5e 3e 5d 2a 3f 29 3e 3c 28 5c 77 2b 29 (r'^\s*<div>\s*<p([^>]*?)><(\w+)
4620 28 5b 5e 3e 5d 2a 3f 29 66 6f 6e 74 2d 77 65 69 67 68 74 3a 5c 73 2a 5c 64 2b 28 5b 5e 3e 5d 2a ([^>]*?)font-weight:\s*\d+([^>]*
4640 3f 29 3e 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c 3e 5d 29 2a 3f 29 3c 2f 5c 32 3e 3c 2f ?)>((?:(?:<br>)|[^<>])*?)</\2></
4660 70 3e 5c 73 2a 3c 2f 64 69 76 3e 5c 73 2a 24 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 p>\s*</div>\s*$',...............
4680 20 20 72 27 3c 64 69 76 3e 3c 70 5c 31 3e 3c 5c 32 5c 33 5c 34 3e 5c 35 3c 2f 5c 32 3e 3c 2f 70 ..r'<div><p\1><\2\3\4>\5</\2></p
46a0 3e 3c 2f 64 69 76 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 ></div>',.text).............text
46c0 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5e 5c 73 2a 3c 64 69 76 3e 5c 73 2a 3c 70 28 5b .=.regex.loop(r'^\s*<div>\s*<p([
46e0 5e 3e 5d 2a 3f 29 66 6f 6e 74 2d 77 65 69 67 68 74 3a 5c 73 2a 5c 64 2b 28 5b 5e 3e 5d 2a 3f 29 ^>]*?)font-weight:\s*\d+([^>]*?)
4700 3e 3c 28 5c 77 2b 29 28 5b 5e 3e 5d 2a 3f 29 3e 28 28 3f 3a 28 3f 3a 3c 62 72 3e 29 7c 5b 5e 3c ><(\w+)([^>]*?)>((?:(?:<br>)|[^<
4720 3e 5d 29 2a 3f 29 3c 2f 5c 33 3e 3c 2f 70 3e 5c 73 2a 3c 2f 64 69 76 3e 5c 73 2a 24 27 2c 0a 20 >])*?)</\3></p>\s*</div>\s*$',..
4740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 27 3c 64 69 76 3e 3c 70 5c 31 5c 32 3e 3c 5c 33 ...............r'<div><p\1\2><\3
4760 5c 34 3e 5c 35 3c 2f 5c 33 3e 3c 2f 70 3e 3c 2f 64 69 76 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 \4>\5</\3></p></div>',.text)....
4780 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 63 6c 65 61 6e 5f 62 61 73 69 63 ..............text.=.clean_basic
47a0 28 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 5f 66 69 78 5f 77 65 69 67 (text)..........text.=._fix_weig
47c0 68 74 28 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c ht(text)..........text.=.regex.l
47e0 6f 6f 70 28 72 27 3c 70 28 20 5b 5e 3e 5d 2a 29 73 74 79 6c 65 3d 22 5b 5e 22 5d 2a 22 28 5b 5e oop(r'<p(.[^>]*)style="[^"]*"([^
4800 3e 5d 2a 29 3e 27 2b 4e 42 53 50 2b 72 27 3c 2f 70 3e 27 2c 20 72 27 3c 70 5c 31 5c 32 3e 27 2b >]*)>'+NBSP+r'</p>',.r'<p\1\2>'+
4820 4e 42 53 50 2b 72 27 3c 2f 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 NBSP+r'</p>',.text)..........tex
4840 74 20 3d 20 63 61 6c 69 62 72 65 5f 66 6f 72 6d 61 74 28 74 65 78 74 29 0a 20 20 20 20 0a 20 20 t.=.calibre_format(text)........
4860 20 20 23 20 63 6c 65 61 6e 20 74 68 65 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 ..#.clean.the.bold.if.all.paragr
4880 61 70 68 65 73 20 61 72 65 20 69 74 0a 20 20 20 20 66 75 6c 6c 5f 63 68 65 63 6b 20 3d 20 5b 5d aphes.are.it.....full_check.=.[]
48a0 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 46 55 4c 4c 5f 42 4f 4c 44 5d 3a 0a 20 20 .....if.prefs[KEY.FULL_BOLD]:...
48c0 20 20 20 20 20 20 66 75 6c 6c 5f 63 68 65 63 6b 2e 61 70 70 65 6e 64 28 27 66 6f 6e 74 2d 77 65 ......full_check.append('font-we
48e0 69 67 68 74 27 29 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 46 55 4c 4c 5f 49 54 41 ight').....if.prefs[KEY.FULL_ITA
4900 4c 49 43 5d 3a 0a 20 20 20 20 20 20 20 20 66 75 6c 6c 5f 63 68 65 63 6b 2e 61 70 70 65 6e 64 28 LIC]:.........full_check.append(
4920 27 66 6f 6e 74 2d 73 74 79 6c 65 27 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 66 75 6c 6c 5f 63 'font-style')..........if.full_c
4940 68 65 63 6b 3a 0a 20 20 20 20 20 20 20 20 65 64 69 74 65 64 20 3d 20 46 61 6c 73 65 0a 20 20 20 heck:.........edited.=.False....
4960 20 20 20 20 20 74 65 78 74 20 3d 20 73 74 61 6e 64 61 72 64 5f 73 74 79 6c 65 28 74 65 78 74 29 .....text.=.standard_style(text)
4980 0a 20 20 20 20 20 20 20 20 66 6f 72 20 63 68 65 63 6b 20 69 6e 20 66 75 6c 6c 5f 63 68 65 63 6b .........for.check.in.full_check
49a0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66 69 72 73 74 20 63 68 65 63 6b 20 66 6f 72 20 :.............#.first.check.for.
49c0 70 20 61 6e 64 20 6c 69 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 6e 20 63 68 65 63 p.and.li.............#.then.chec
49e0 6b 20 6f 6e 6c 79 20 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6d 20 69 6e 20 5b 27 k.only.p.............for.m.in.['
4a00 70 7c 6c 69 27 2c 20 27 70 27 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 73 74 p|li',.'p']:.................lst
4a20 5f 70 61 72 61 20 3d 20 74 75 70 6c 65 28 72 65 67 65 78 2e 73 65 61 72 63 68 61 6c 6c 28 72 66 _para.=.tuple(regex.searchall(rf
4a40 27 3c 28 7b 6d 7d 29 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 74 65 78 74 29 29 0a 20 20 20 20 20 '<({m})(|.[^>]*)>',.text))......
4a60 20 20 20 20 20 20 20 20 20 20 20 6c 73 74 5f 62 6f 6c 64 20 3d 20 74 75 70 6c 65 28 72 65 67 65 ...........lst_bold.=.tuple(rege
4a80 78 2e 73 65 61 72 63 68 61 6c 6c 28 72 66 27 3c 28 7b 6d 7d 29 28 7c 20 5b 5e 3e 5d 2a 29 7b 63 x.searchall(rf'<({m})(|.[^>]*){c
4aa0 68 65 63 6b 7d 3a 28 5b 5e 3e 5d 2a 29 3e 27 2c 20 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 heck}:([^>]*)>',.text)).........
4ac0 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 6c 73 74 5f 70 61 72 61 29 20 3d 3d 20 6c 65 6e 28 ........if.len(lst_para).==.len(
4ae0 6c 73 74 5f 62 6f 6c 64 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 lst_bold):.....................t
4b00 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 66 27 3c 28 7b 6d 7d 29 28 7c 20 5b 5e 3e ext.=.regex.loop(rf'<({m})(|.[^>
4b20 5d 2a 29 7b 63 68 65 63 6b 7d 3a 5b 5e 3b 5d 2a 3b 28 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c ]*){check}:[^;]*;([^>]*)>',.r'<\
4b40 31 5c 32 5c 33 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1\2\3>',.text)..................
4b60 20 20 20 65 64 69 74 65 64 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 ...edited.=.True................
4b80 20 20 69 66 20 65 64 69 74 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 ..if.edited:.............text.=.
4ba0 63 6c 65 61 6e 5f 62 61 73 69 63 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 clean_basic(text).............te
4bc0 78 74 20 3d 20 63 61 6c 69 62 72 65 5f 66 6f 72 6d 61 74 28 74 65 78 74 29 0a 20 20 20 20 0a 20 xt.=.calibre_format(text).......
4be0 20 20 20 23 20 64 65 6c 20 61 6c 69 67 6e 20 66 6f 72 20 6c 69 73 74 20 3c 6c 69 3e 0a 20 20 20 ...#.del.align.for.list.<li>....
4c00 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 4c 49 53 54 5f 41 4c 49 47 4e 5d 20 3d 3d 20 27 64 65 .if.prefs[KEY.LIST_ALIGN].==.'de
4c20 6c 27 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 l':.........text.=.regex.loop(r'
4c40 3c 28 6f 6c 7c 75 6c 7c 6c 69 29 28 5b 5e 3e 5d 2a 29 20 61 6c 69 67 6e 3d 22 5b 5e 22 5d 2a 22 <(ol|ul|li)([^>]*).align="[^"]*"
4c60 27 2c 20 72 27 3c 5c 31 5c 32 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 ',.r'<\1\2',.text)..........retu
4c80 72 6e 20 74 65 78 74 0a 0a 0a 64 65 66 20 63 6c 65 61 6e 5f 61 6c 69 67 6e 28 74 65 78 74 3a 20 rn.text...def.clean_align(text:.
4ca0 73 74 72 2c 20 70 72 65 66 73 3a 20 4f 70 74 69 6f 6e 61 6c 5b 64 69 63 74 5d 3d 4e 6f 6e 65 29 str,.prefs:.Optional[dict]=None)
4cc0 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 70 72 65 66 73 20 3d 20 5f 73 65 74 5f 70 72 65 66 73 28 .->.str:.....prefs.=._set_prefs(
4ce0 70 72 65 66 73 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 6f 72 64 65 72 65 64 5f 61 prefs)..........text.=.ordered_a
4d00 74 74 72 69 62 75 74 73 28 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 73 65 74 20 61 6c ttributs(text)..........#.set.al
4d20 69 67 6e 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 46 4f 52 43 45 5f 4a 55 53 54 49 ign.....if.prefs[KEY.FORCE_JUSTI
4d40 46 59 5d 20 3d 3d 20 27 64 65 6c 27 3a 0a 20 20 20 20 20 20 20 20 23 20 64 65 6c 20 61 6c 69 67 FY].==.'del':.........#.del.alig
4d60 6e 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 61 n.........text.=.regex.loop(r'.a
4d80 6c 69 67 6e 3d 22 5b 5e 22 5d 2a 22 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 lign="[^"]*"',.r'',.text).......
4da0 20 20 0a 20 20 20 20 65 6c 73 65 3a 20 20 23 20 65 6d 70 74 79 20 2f 20 61 6c 6c 20 2f 20 6e 6f .......else:..#.empty./.all./.no
4dc0 6e 65 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 69 6e 73 65 72 74 20 61 6c 69 ne..................#.insert.ali
4de0 67 6e 20 6c 65 66 74 20 66 6f 72 20 61 6c 6c 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 gn.left.for.all.........text.=.r
4e00 65 67 65 78 2e 73 69 6d 70 6c 65 28 72 27 3c 28 70 7c 64 69 76 7c 6c 69 7c 68 31 7c 68 32 7c 68 egex.simple(r'<(p|div|li|h1|h2|h
4e20 33 7c 68 34 7c 68 35 7c 68 36 29 27 2c 20 72 27 3c 5c 31 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 3|h4|h5|h6)',.r'<\1.align="left"
4e40 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 64 65 6c 65 ',.text)..................#.dele
4e60 74 65 20 61 6c 69 67 6e 20 6c 65 66 74 20 69 66 20 61 6e 6f 74 68 65 72 20 65 78 69 73 74 0a 20 te.align.left.if.another.exist..
4e80 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 70 7c 64 .......text.=.regex.loop(r'<(p|d
4ea0 69 76 7c 6c 69 7c 68 31 7c 68 32 7c 68 33 7c 68 34 7c 68 35 7c 68 36 29 20 61 6c 69 67 6e 3d 22 iv|li|h1|h2|h3|h4|h5|h6).align="
4ec0 6c 65 66 74 22 28 20 61 6c 69 67 6e 3d 22 5b 5e 22 5d 2a 22 29 27 2c 20 72 27 3c 5c 31 5c 32 27 left"(.align="[^"]*")',.r'<\1\2'
4ee0 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 73 77 61 70 20 ,.text)..................#.swap.
4f00 74 65 78 74 2d 61 6c 69 67 6e 20 74 6f 20 61 6c 69 67 6e 0a 20 20 20 20 20 20 20 20 74 65 78 74 text-align.to.align.........text
4f20 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 61 6c 69 67 6e 3d 22 5b 5e 22 5d 2a 22 28 5b .=.regex.loop(r'.align="[^"]*"([
4f40 5e 3e 5d 2a 29 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 74 65 78 74 2d 61 6c 69 67 6e 3a ^>]*).style="([^"]*).text-align:
4f60 5c 73 2a 28 5b 5e 3b 5d 2a 29 5c 73 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 61 6c 69 67 \s*([^;]*)\s*;([^"]*)"',.r'.alig
4f80 6e 3d 22 5c 33 22 5c 31 20 73 74 79 6c 65 3d 22 5c 32 5c 34 22 27 2c 20 74 65 78 74 29 0a 20 20 n="\3"\1.style="\2\4"',.text)...
4fa0 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 63 6c 65 61 6e 20 73 70 61 63 65 20 69 6e 20 ...............#.clean.space.in.
4fc0 61 74 74 72 69 62 75 74 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f attribut.........text.=.regex.lo
4fe0 6f 70 28 72 27 20 61 6c 69 67 6e 3d 22 5c 73 2b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 61 6c op(r'.align="\s+([^"]*)"',.r'.al
5000 69 67 6e 3d 22 5c 31 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 ign="\1"',.text).........text.=.
5020 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 61 6c 69 67 6e 3d 22 28 5b 5e 22 5d 2a 29 5c 73 2b 22 regex.loop(r'.align="([^"]*)\s+"
5040 27 2c 20 72 27 20 61 6c 69 67 6e 3d 22 5c 31 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 ',.r'.align="\1"',.text)........
5060 20 0a 20 20 20 20 20 20 20 20 23 20 61 6c 69 67 6e 20 76 61 6c 69 64 65 20 76 61 6c 75 65 0a 20 ..........#.align.valide.value..
5080 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 61 6c 69 67 .......text.=.regex.loop(r'.alig
50a0 6e 3d 22 6a 75 73 74 69 66 79 2d 61 6c 6c 22 27 2c 20 72 27 20 61 6c 69 67 6e 3d 22 6a 75 73 74 n="justify-all"',.r'.align="just
50c0 69 66 79 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 ify"',.text).........text.=.rege
50e0 78 2e 6c 6f 6f 70 28 72 27 20 61 6c 69 67 6e 3d 22 28 3f 21 6c 65 66 74 7c 6a 75 73 74 69 66 79 x.loop(r'.align="(?!left|justify
5100 7c 63 65 6e 74 65 72 7c 72 69 67 68 74 29 5b 5e 22 5d 2a 22 27 2c 20 72 27 20 61 6c 69 67 6e 3d |center|right)[^"]*"',.r'.align=
5120 22 6c 65 66 74 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 "left"',.text)..................
5140 23 20 61 70 70 6c 79 20 63 61 73 63 61 64 69 6e 67 20 68 65 72 69 74 61 67 65 20 66 6f 72 20 6c #.apply.cascading.heritage.for.l
5160 69 73 74 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 ist.........text.=.regex.loop(r'
5180 3c 28 6f 6c 7c 75 6c 29 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 27 2c 20 72 27 3c 5c 31 27 2c 20 <(ol|ul).align="left"',.r'<\1',.
51a0 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 text).........text.=.regex.loop(
51c0 72 27 3c 28 6f 6c 7c 75 6c 29 20 61 6c 69 67 6e 3d 22 28 5b 5e 22 5d 2a 29 22 28 5b 5e 3e 5d 2a r'<(ol|ul).align="([^"]*)"([^>]*
51e0 29 3e 28 28 3f 3a 28 3f 21 3c 2f 5c 31 3e 29 2e 29 2a 29 3c 6c 69 20 61 6c 69 67 6e 3d 22 6c 65 )>((?:(?!</\1>).)*)<li.align="le
5200 66 74 22 27 2c 20 72 27 3c 5c 31 20 61 6c 69 67 6e 3d 22 5c 32 22 5c 33 3e 5c 34 3c 6c 69 20 61 ft"',.r'<\1.align="\2"\3>\4<li.a
5220 6c 69 67 6e 3d 22 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d lign="\2"',.text).........text.=
5240 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 6f 6c 7c 75 6c 29 20 61 6c 69 67 6e 3d 22 28 5b .regex.loop(r'<(ol|ul).align="([
5260 5e 22 5d 2a 29 22 27 2c 20 72 27 3c 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a ^"]*)"',.r'<\1',.text)..........
5280 20 20 20 20 20 20 20 20 23 20 73 65 74 20 61 6c 69 67 6e 0a 20 20 20 20 20 20 20 20 69 66 20 70 ........#.set.align.........if.p
52a0 72 65 66 73 5b 4b 45 59 2e 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 5d 20 3d 3d 20 27 65 6d 70 74 refs[KEY.FORCE_JUSTIFY].==.'empt
52c0 79 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f y':.............text.=.regex.loo
52e0 70 28 72 27 20 61 6c 69 67 6e 3d 22 6c 65 66 74 22 27 2c 20 72 27 20 61 6c 69 67 6e 3d 22 6a 75 p(r'.align="left"',.r'.align="ju
5300 73 74 69 66 79 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 70 72 65 66 stify"',.text).........elif.pref
5320 73 5b 4b 45 59 2e 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 5d 20 3d 3d 20 27 61 6c 6c 27 3a 0a 20 s[KEY.FORCE_JUSTIFY].==.'all':..
5340 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 ...........text.=.regex.loop(r'.
5360 61 6c 69 67 6e 3d 22 28 6c 65 66 74 7c 63 65 6e 74 65 72 7c 72 69 67 68 74 29 22 27 2c 20 72 27 align="(left|center|right)"',.r'
5380 20 61 6c 69 67 6e 3d 22 6a 75 73 74 69 66 79 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 .align="justify"',.text)........
53a0 20 20 23 20 64 65 6c 20 74 65 78 74 2d 61 6c 69 67 6e 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 ..#.del.text-align.....text.=.re
53c0 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 74 65 78 74 2d gex.loop(r'.style="([^"]*).text-
53e0 61 6c 69 67 6e 3a 28 5b 5e 3b 5d 2a 29 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c align:([^;]*);([^"]*)"',.r'.styl
5400 65 3d 22 5c 31 5c 33 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 64 65 6c 20 e="\1\3"',.text)..........#.del.
5420 6a 75 73 74 69 66 79 20 66 6f 72 20 3c 68 31 3e 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 justify.for.<h1>.....text.=.rege
5440 78 2e 6c 6f 6f 70 28 72 27 3c 28 68 5c 64 29 20 61 6c 69 67 6e 3d 22 6a 75 73 74 69 66 79 22 27 x.loop(r'<(h\d).align="justify"'
5460 2c 20 72 27 3c 5c 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 64 65 6c 20 74 ,.r'<\1',.text)..........#.del.t
5480 65 78 74 2d 61 6c 69 67 6e 20 6c 65 66 74 20 28 64 65 66 61 75 6c 74 20 76 61 6c 75 65 29 0a 20 ext-align.left.(default.value)..
54a0 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 61 6c 69 67 6e 3d 22 6c ...text.=.regex.loop(r'.align="l
54c0 65 66 74 22 27 2c 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 eft"',.r'',.text)..........retur
54e0 6e 20 74 65 78 74 0a 0a 0a 64 65 66 20 63 6c 65 61 6e 5f 73 74 79 6c 65 28 74 65 78 74 3a 20 73 n.text...def.clean_style(text:.s
5500 74 72 2c 20 70 72 65 66 73 3a 20 4f 70 74 69 6f 6e 61 6c 5b 64 69 63 74 5d 3d 4e 6f 6e 65 29 20 tr,.prefs:.Optional[dict]=None).
5520 2d 3e 20 73 74 72 3a 0a 20 20 20 20 70 72 65 66 73 20 3d 20 5f 73 65 74 5f 70 72 65 66 73 28 70 ->.str:.....prefs.=._set_prefs(p
5540 72 65 66 73 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 6f 72 64 65 72 65 64 5f 61 74 refs)..........text.=.ordered_at
5560 74 72 69 62 75 74 73 28 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 tributs(text)..........text.=.re
5580 67 65 78 2e 6c 6f 6f 70 28 72 27 20 78 2d 73 74 79 6c 65 3d 22 5b 5e 22 5d 2a 22 27 2c 20 72 27 gex.loop(r'.x-style="[^"]*"',.r'
55a0 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 74 65 78 74 2e 72 65 70 6c 61 63 65 ',.text).....text.=.text.replace
55c0 28 27 20 73 74 79 6c 65 3d 22 27 2c 20 27 20 78 2d 73 74 79 6c 65 3d 22 22 20 73 74 79 6c 65 3d ('.style="',.'.x-style="".style=
55e0 22 20 27 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 43 53 53 5f 4b ".')..........if.prefs[KEY.CSS_K
5600 45 45 50 5f 41 43 54 49 56 45 5d 3a 0a 20 20 20 20 20 20 20 20 66 6f 72 20 72 75 6c 65 20 69 6e EEP_ACTIVE]:.........for.rule.in
5620 20 63 73 73 5f 63 6c 65 61 6e 5f 72 75 6c 65 73 28 43 53 53 5f 44 45 46 41 55 4c 54 20 2b 27 20 .css_clean_rules(CSS_DEFAULT.+'.
5640 27 2b 20 70 72 65 66 73 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5d 29 2e 73 70 6c 69 74 28 27 20 '+.prefs[KEY.CSS_KEEP]).split('.
5660 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f '):.............text.=.regex.loo
5680 70 28 72 27 20 78 2d 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 22 20 73 74 79 6c 65 3d 22 28 5b p(r'.x-style="([^"]*)".style="([
56a0 5e 22 5d 2a 29 20 27 2b 72 75 6c 65 2b 72 27 5c 73 2a 3a 5c 73 2a 28 5b 5e 3b 5d 2a 3f 29 5c 73 ^"]*).'+rule+r'\s*:\s*([^;]*?)\s
56c0 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 78 2d 73 74 79 6c 65 3d 22 5c 31 20 27 2b 72 75 *;([^"]*)"',.r'.x-style="\1.'+ru
56e0 6c 65 2b 72 27 3a 20 5c 33 3b 22 20 73 74 79 6c 65 3d 22 5c 32 20 5c 34 22 27 2c 20 74 65 78 74 le+r':.\3;".style="\2.\4"',.text
5700 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 ).....else:.........text.=.regex
5720 2e 6c 6f 6f 70 28 72 27 20 78 2d 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 22 20 73 74 79 6c 65 .loop(r'.x-style="([^"]*)".style
5740 3d 22 28 5b 5e 22 5d 2a 29 20 28 5b 5c 77 5c 2d 5d 2b 3f 29 5c 73 2a 3a 5c 73 2a 28 5b 5e 3b 5d ="([^"]*).([\w\-]+?)\s*:\s*([^;]
5760 2a 3f 29 5c 73 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 78 2d 73 74 79 6c 65 3d 22 5c 31 *?)\s*;([^"]*)"',.r'.x-style="\1
5780 20 5c 33 3a 20 5c 34 3b 22 20 73 74 79 6c 65 3d 22 5c 32 20 5c 35 22 27 2c 20 74 65 78 74 29 0a .\3:.\4;".style="\2.\5"',.text).
57a0 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 78 2d .........text.=.regex.loop(r'.x-
57c0 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 22 20 73 74 79 6c 65 3d 22 5b 5e 22 5d 2a 22 27 2c 20 style="([^"]*)".style="[^"]*"',.
57e0 72 27 20 73 74 79 6c 65 3d 22 5c 31 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d r'.style="\1"',.text).....text.=
5800 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 78 2d 73 74 79 6c 65 3d 22 5b 5e 22 5d 2a 22 27 2c .regex.loop(r'.x-style="[^"]*"',
5820 20 72 27 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 66 6f 6e 74 2d 77 65 69 67 .r'',.text)..........#.font-weig
5840 68 74 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c ht.....text.=.regex.loop(r'.styl
5860 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 28 3f 21 62 6f 6c 64 7c e="([^"]*).font-weight:.(?!bold|
5880 62 6f 6c 64 65 72 7c 5c 64 2b 29 5b 5e 3b 5d 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 bolder|\d+)[^;]*;([^"]*)"',.r'.s
58a0 74 79 6c 65 3d 22 5c 31 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 tyle="\1\2"',.text).....text.=.r
58c0 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 egex.loop(r'.style="([^"]*).font
58e0 2d 77 65 69 67 68 74 3a 20 28 62 6f 6c 64 7c 62 6f 6c 64 65 72 29 3b 28 5b 5e 22 5d 2a 29 22 27 -weight:.(bold|bolder);([^"]*)"'
5900 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 20 27 2b 46 4f 4e 54 5f 57 45 49 47 48 54 2b 72 27 3b ,.r'.style="\1.'+FONT_WEIGHT+r';
5920 5c 33 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f \3"',.text).....text.=.regex.loo
5940 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a p(r'.style="([^"]*).font-weight:
5960 20 28 5c 64 7b 34 2c 7d 29 28 3f 3a 5c 2e 5c 64 2b 29 3f 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 .(\d{4,})(?:\.\d+)?;([^"]*)"',.r
5980 27 20 73 74 79 6c 65 3d 22 5c 31 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 39 30 30 3b 5c 33 22 '.style="\1.font-weight:.900;\3"
59a0 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 ',.text).....text.=.regex.loop(r
59c0 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 28 5c '.style="([^"]*).font-weight:.(\
59e0 64 7b 31 2c 32 7d 29 28 3f 3a 5c 2e 5c 64 2b 29 3f 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 d{1,2})(?:\.\d+)?;([^"]*)"',.r'.
5a00 73 74 79 6c 65 3d 22 5c 31 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 31 30 30 3b 5c 33 22 27 2c style="\1.font-weight:.100;\3"',
5a20 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 73 69 6d 70 6c 65 28 72 .text).....text.=.regex.simple(r
5a40 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 28 5c '.style="([^"]*).font-weight:.(\
5a60 64 7b 33 7d 29 28 3f 3a 5c 2e 5c 64 2b 29 3f 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 d{3})(?:\.\d+)?;([^"]*)"',.r'.st
5a80 79 6c 65 3d 22 5c 31 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 5c 32 3b 5c 33 22 27 2c 20 74 65 yle="\1.font-weight:.\2;\3"',.te
5aa0 78 74 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 46 4f 4e 54 5f 57 xt)..........if.prefs[KEY.FONT_W
5ac0 45 49 47 48 54 5d 20 3d 3d 20 27 74 72 75 6e 63 27 20 6f 72 20 70 72 65 66 73 5b 4b 45 59 2e 46 EIGHT].==.'trunc'.or.prefs[KEY.F
5ae0 4f 4e 54 5f 57 45 49 47 48 54 5d 20 3d 3d 20 27 62 6f 6c 64 27 3a 0a 20 20 20 20 20 20 20 20 0a ONT_WEIGHT].==.'bold':..........
5b00 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 ........text.=.regex.loop(r'.sty
5b20 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 28 3f 50 3c 6e 61 6d le="([^"]*).font-weight:.(?P<nam
5b40 65 3e 5c 64 5c 64 29 30 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 e>\d\d)0;([^"]*)"',.r'.style="\1
5b60 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 5c 67 3c 6e 61 6d 65 3e 31 3b 5c 33 22 27 2c 20 74 65 .font-weight:.\g<name>1;\3"',.te
5b80 78 74 29 0a 20 20 20 20 20 20 20 20 72 65 67 78 20 3d 20 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e xt).........regx.=.r'.style="([^
5ba0 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 28 3f 50 3c 6e 61 6d 65 3e 5c 64 5c 64 5b "]*).font-weight:.(?P<name>\d\d[
5bc0 31 2d 39 5d 29 3b 28 5b 5e 22 5d 2a 29 22 27 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 72 65 1-9]);([^"]*)"'.........while.re
5be0 67 65 78 2e 73 65 61 72 63 68 28 72 65 67 78 2c 20 74 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 gex.search(regx,.text):.........
5c00 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 20 3d 20 72 65 67 65 78 2e 73 65 61 72 63 .................m.=.regex.searc
5c20 68 28 72 65 67 78 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 20 3d 20 6d 2e h(regx,.text).............d.=.m.
5c40 67 72 6f 75 70 28 27 6e 61 6d 65 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 70 6c 20 3d 20 group('name').............rpl.=.
5c60 72 65 67 65 78 2e 6c 6f 6f 70 28 72 65 67 78 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 20 66 6f regex.loop(regx,.r'.style="\1.fo
5c80 6e 74 2d 77 65 69 67 68 74 3a 20 27 2b 73 74 72 28 69 6e 74 28 72 6f 75 6e 64 28 69 6e 74 28 64 nt-weight:.'+str(int(round(int(d
5ca0 29 2c 2d 32 29 29 29 2b 72 27 3b 5c 33 22 27 2c 20 6d 2e 67 72 6f 75 70 28 30 29 29 0a 20 20 20 ),-2)))+r';\3"',.m.group(0))....
5cc0 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 74 65 78 74 2e 72 65 70 6c 61 63 65 28 6d 2e 67 .........text.=.text.replace(m.g
5ce0 72 6f 75 70 28 30 29 2c 20 72 70 6c 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b roup(0),.rpl)..........if.prefs[
5d00 4b 45 59 2e 46 4f 4e 54 5f 57 45 49 47 48 54 5d 20 3d 3d 20 27 62 6f 6c 64 27 3a 0a 20 20 20 20 KEY.FONT_WEIGHT].==.'bold':.....
5d20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 ....text.=.regex.loop(r'.style="
5d40 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 5b 36 2d 39 5d 5c 64 5c 64 3b 28 ([^"]*).font-weight:.[6-9]\d\d;(
5d60 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 20 66 6f 6e 74 2d 77 65 69 67 [^"]*)"',.r'.style="\1.font-weig
5d80 68 74 3a 20 78 78 78 3b 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 ht:.xxx;\2"',.text).........text
5da0 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 .=.regex.loop(r'.style="([^"]*).
5dc0 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 5b 31 2d 35 5d 5c 64 5c 64 3b 28 5b 5e 22 5d 2a 29 22 27 font-weight:.[1-5]\d\d;([^"]*)"'
5de0 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 ,.r'.style="\1\2"',.text).......
5e00 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b ..text.=.regex.loop(r'.style="([
5e20 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 78 78 78 3b 28 5b 5e 22 5d 2a 29 22 27 ^"]*).font-weight:.xxx;([^"]*)"'
5e40 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 20 27 2b 46 4f 4e 54 5f 57 45 49 47 48 54 2b 72 27 3b ,.r'.style="\1.'+FONT_WEIGHT+r';
5e60 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 65 6c 69 66 20 70 72 \2"',.text)..............elif.pr
5e80 65 66 73 5b 4b 45 59 2e 46 4f 4e 54 5f 57 45 49 47 48 54 5d 20 3d 3d 20 27 64 65 6c 27 3a 0a 20 efs[KEY.FONT_WEIGHT].==.'del':..
5ea0 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 .......text.=.regex.loop(r'<(/?)
5ec0 73 74 72 6f 6e 67 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c 31 73 70 61 6e 5c 32 3e 27 strong(|.[^>]*)>',.r'<\1span\2>'
5ee0 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f ,.text).........text.=.regex.loo
5f00 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a p(r'.style="([^"]*).font-weight:
5f20 5b 5e 3b 5d 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 5c 32 22 [^;]*;([^"]*)"',.r'.style="\1\2"
5f40 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 66 6f 6e 74 2d 73 74 79 6c 65 0a 20 ',.text)..........#.font-style..
5f60 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 ...text.=.regex.loop(r'.style="(
5f80 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 73 74 79 6c 65 3a 20 28 3f 21 6f 62 6c 69 71 75 65 7c 69 74 [^"]*).font-style:.(?!oblique|it
5fa0 61 6c 69 63 29 5b 5e 3b 5d 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 alic)[^;]*;([^"]*)"',.r'.style="
5fc0 5c 31 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 44 \1\2"',.text).....if.prefs[KEY.D
5fe0 45 4c 5f 49 54 41 4c 49 43 5d 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 EL_ITALIC]:.........text.=.regex
6000 2e 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 65 6d 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c .loop(r'<(/?)em(|.[^>]*)>',.r'<\
6020 31 73 70 61 6e 5c 32 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 1span\2>',.text).........text.=.
6040 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 66 6f 6e regex.loop(r'.style="([^"]*).fon
6060 74 2d 73 74 79 6c 65 3a 5b 5e 3b 5d 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c t-style:[^;]*;([^"]*)"',.r'.styl
6080 65 3d 22 5c 31 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 e="\1\2"',.text).....else:......
60a0 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 ...text.=.regex.loop(r'.style="(
60c0 5b 5e 22 5d 2a 29 20 66 6f 6e 74 2d 73 74 79 6c 65 3a 20 28 6f 62 6c 69 71 75 65 28 3f 3a 5c 73 [^"]*).font-style:.(oblique(?:\s
60e0 2b 5c 64 2b 64 65 67 29 3f 29 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 +\d+deg)?);([^"]*)"',.r'.style="
6100 5c 31 20 66 6f 6e 74 2d 73 74 79 6c 65 3a 20 69 74 61 6c 69 63 3b 5c 33 22 27 2c 20 74 65 78 74 \1.font-style:.italic;\3"',.text
6120 29 0a 20 20 20 20 0a 20 20 20 20 23 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 0a 20 20 20 )..........#.text-decoration....
6140 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e .text.=.regex.loop(r'.style="([^
6160 22 5d 2a 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 3a 5b 5e 3b 5d 2a 29 20 28 3f 3a 6e 6f "]*.text-decoration:[^;]*).(?:no
6180 6e 65 7c 62 6c 69 6e 6b 7c 6f 76 65 72 6c 69 6e 65 7c 69 6e 68 65 72 69 74 7c 69 6e 69 74 69 61 ne|blink|overline|inherit|initia
61a0 6c 7c 75 6e 73 65 74 29 28 5b 5e 3b 5d 2a 3b 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c l|unset)([^;]*;[^"]*)"',.r'.styl
61c0 65 3d 22 5c 31 5c 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 70 72 65 e="\1\2"',.text)..........if.pre
61e0 66 73 5b 4b 45 59 2e 44 45 4c 5f 55 4e 44 45 52 5d 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 fs[KEY.DEL_UNDER]:.........text.
6200 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 3c 28 2f 3f 29 75 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 =.regex.loop(r'<(/?)u(|.[^>]*)>'
6220 2c 20 72 27 3c 5c 31 73 70 61 6e 5c 32 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 ,.r'<\1span\2>',.text).........t
6240 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d ext.=.regex.loop(r'.style="([^"]
6260 2a 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 3a 5b 5e 3b 5d 2a 29 20 75 6e 64 65 72 6c 69 *.text-decoration:[^;]*).underli
6280 6e 65 28 5b 5e 3b 5d 2a 3b 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 5c ne([^;]*;[^"]*)"',.r'.style="\1\
62a0 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 44 45 4c 5f 2"',.text).....if.prefs[KEY.DEL_
62c0 53 54 52 49 4b 45 5d 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f STRIKE]:.........text.=.regex.lo
62e0 6f 70 28 72 27 3c 28 2f 3f 29 73 28 7c 20 5b 5e 3e 5d 2a 29 3e 27 2c 20 72 27 3c 5c 31 73 70 61 op(r'<(/?)s(|.[^>]*)>',.r'<\1spa
6300 6e 5c 32 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 n\2>',.text).........text.=.rege
6320 78 2e 6c 6f 6f 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 20 74 65 78 74 2d 64 65 63 x.loop(r'.style="([^"]*.text-dec
6340 6f 72 61 74 69 6f 6e 3a 5b 5e 3b 5d 2a 29 20 6c 69 6e 65 2d 74 68 72 6f 75 67 68 28 5b 5e 3b 5d oration:[^;]*).line-through([^;]
6360 2a 3b 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 5c 32 22 27 2c 20 74 65 *;[^"]*)"',.r'.style="\1\2"',.te
6380 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 xt)..........text.=.regex.loop(r
63a0 27 3c 28 70 7c 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 28 20 73 74 79 6c 65 3d 22 5b 5e 22 5d 2a '<(p|h\d)(|.[^>]*)(.style="[^"]*
63c0 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 3a 5b 5e 3b 5d 2a 29 20 75 6e 64 65 72 6c 69 6e .text-decoration:[^;]*).underlin
63e0 65 28 5b 5e 3b 5d 2a 3b 5b 5e 22 5d 2a 22 5b 5e 3e 5d 2a 29 3e 28 2e 2a 3f 29 3c 2f 5c 31 3e 27 e([^;]*;[^"]*"[^>]*)>(.*?)</\1>'
6400 2c 20 20 20 20 72 27 3c 5c 31 5c 32 5c 33 5c 34 3e 3c 75 3e 5c 35 3c 2f 75 3e 3c 2f 5c 31 3e 27 ,....r'<\1\2\3\4><u>\5</u></\1>'
6420 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 ,.text).....text.=.regex.loop(r'
6440 3c 28 70 7c 68 5c 64 29 28 7c 20 5b 5e 3e 5d 2a 29 28 20 73 74 79 6c 65 3d 22 5b 5e 22 5d 2a 20 <(p|h\d)(|.[^>]*)(.style="[^"]*.
6460 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 3a 5b 5e 3b 5d 2a 29 20 6c 69 6e 65 2d 74 68 72 6f text-decoration:[^;]*).line-thro
6480 75 67 68 28 5b 5e 3b 5d 2a 3b 5b 5e 22 5d 2a 22 5b 5e 3e 5d 2a 29 3e 28 2e 2a 3f 29 3c 2f 5c 31 ugh([^;]*;[^"]*"[^>]*)>(.*?)</\1
64a0 3e 27 2c 20 72 27 3c 5c 31 5c 32 5c 33 5c 34 3e 3c 73 3e 5c 35 3c 2f 73 3e 3c 2f 5c 31 3e 27 2c >',.r'<\1\2\3\4><s>\5</s></\1>',
64c0 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f .text)..........text.=.regex.loo
64e0 70 28 72 27 20 73 74 79 6c 65 3d 22 28 5b 5e 22 5d 2a 29 20 74 65 78 74 2d 64 65 63 6f 72 61 74 p(r'.style="([^"]*).text-decorat
6500 69 6f 6e 3a 5c 73 2a 3b 28 5b 5e 22 5d 2a 29 22 27 2c 20 72 27 20 73 74 79 6c 65 3d 22 5c 31 5c ion:\s*;([^"]*)"',.r'.style="\1\
6520 32 22 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 23 23 23 23 23 0a 20 20 20 20 72 2"',.text)..........######.....r
6540 65 74 75 72 6e 20 74 65 78 74 0a 0a 0a 23 20 54 72 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 4d 61 eturn.text...#.Try.to.convert.Ma
6560 72 6b 64 6f 77 6e 20 74 6f 20 48 54 4d 4c 0a 64 65 66 20 63 6c 65 61 6e 5f 6d 61 72 6b 64 6f 77 rkdown.to.HTML.def.clean_markdow
6580 6e 28 74 65 78 74 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 20 20 23 20 6b 65 79 20 77 6f 72 64 n(text:.str).->.str:..#.key.word
65a0 3a 20 54 52 59 21 0a 20 20 20 20 23 20 69 6d 61 67 65 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 :.TRY!.....#.image.....text.=.re
65c0 67 65 78 2e 6c 6f 6f 70 28 72 27 21 5c 5b 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 29 2e gex.loop(r'!\[((?:(?!<br>|</p>).
65e0 29 2a 3f 29 5c 5d 5c 28 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 29 2e 29 2a 3f 29 5c 29 )*?)\]\(((?:(?!<br>|</p>).)*?)\)
6600 27 2c 20 72 27 3c 69 6d 67 20 61 6c 74 22 5c 31 22 20 73 72 63 3d 22 5c 32 22 3e 27 2c 20 74 65 ',.r'<img.alt"\1".src="\2">',.te
6620 78 74 29 0a 20 20 20 20 23 20 68 79 70 65 72 6c 69 6e 6b 0a 20 20 20 20 74 65 78 74 20 3d 20 72 xt).....#.hyperlink.....text.=.r
6640 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 5b 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 29 2e egex.loop(r'\[((?:(?!<br>|</p>).
6660 29 2a 3f 29 5c 5d 5c 28 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 29 2e 29 2a 3f 29 5c 29 )*?)\]\(((?:(?!<br>|</p>).)*?)\)
6680 27 2c 20 72 27 3c 61 20 68 72 65 66 3d 22 5c 32 22 3e 5c 31 3c 2f 61 3e 27 2c 20 74 65 78 74 29 ',.r'<a.href="\2">\1</a>',.text)
66a0 0a 20 20 20 20 0a 20 20 20 20 23 20 68 65 61 64 69 6e 67 20 31 2c 20 32 0a 20 20 20 20 66 6f 72 ..........#.heading.1,.2.....for
66c0 20 68 2c 20 6e 20 69 6e 20 5b 28 27 3d 27 2c 20 27 31 27 29 2c 28 27 2d 27 2c 20 27 32 27 29 5d .h,.n.in.[('=',.'1'),('-',.'2')]
66e0 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c :.........text.=.regex.loop(r'(<
6700 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 28 2e 2a 3f 29 28 3c 62 72 3e 29 27 2b 68 2b 72 27 7b 32 2c br>|</p><p>)(.*?)(<br>)'+h+r'{2,
6720 7d 28 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 27 2c 20 72 27 3c 2f 70 3e 3c 68 27 2b 6e 2b 72 27 }(<br>|</p><p>)',.r'</p><h'+n+r'
6740 3e 5c 32 3c 2f 68 27 2b 6e 2b 72 27 3e 3c 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 >\2</h'+n+r'><p>',.text)........
6760 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c 3c 2f 70 3e 3c .text.=.regex.loop(r'(<br>|</p><
6780 70 3e 29 28 2e 2a 3f 29 28 3c 62 72 3e 29 27 2b 68 2b 72 27 7b 32 2c 7d 28 3c 2f 70 3e 29 27 20 p>)(.*?)(<br>)'+h+r'{2,}(</p>)'.
67a0 20 20 20 20 20 20 20 2c 20 72 27 3c 2f 70 3e 3c 68 27 2b 6e 2b 72 27 3e 5c 32 3c 2f 68 27 2b 6e .......,.r'</p><h'+n+r'>\2</h'+n
67c0 2b 72 27 3e 27 20 20 20 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 +r'>'...,.text).........text.=.r
67e0 65 67 65 78 2e 6c 6f 6f 70 28 20 20 20 20 20 20 20 20 20 72 27 28 3c 70 3e 29 28 2e 2a 3f 29 28 egex.loop(.........r'(<p>)(.*?)(
6800 3c 62 72 3e 29 27 2b 68 2b 72 27 7b 32 2c 7d 28 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 27 2c 20 <br>)'+h+r'{2,}(<br>|</p><p>)',.
6820 20 20 20 20 72 27 3c 68 27 2b 6e 2b 72 27 3e 5c 32 3c 2f 68 27 2b 6e 2b 72 27 3e 3c 70 3e 27 2c ....r'<h'+n+r'>\2</h'+n+r'><p>',
6840 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 .text).........text.=.regex.loop
6860 28 20 20 20 20 20 20 20 20 20 72 27 28 3c 70 3e 29 28 2e 2a 3f 29 28 3c 62 72 3e 29 27 2b 68 2b (.........r'(<p>)(.*?)(<br>)'+h+
6880 72 27 7b 32 2c 7d 28 3c 2f 70 3e 29 27 20 20 20 20 20 20 20 20 2c 20 20 20 20 20 72 27 3c 68 27 r'{2,}(</p>)'........,.....r'<h'
68a0 2b 6e 2b 72 27 3e 5c 32 3c 2f 68 27 2b 6e 2b 72 27 3e 27 20 20 20 2c 20 74 65 78 74 29 0a 20 20 +n+r'>\2</h'+n+r'>'...,.text)...
68c0 20 20 0a 20 20 20 20 23 20 68 65 61 64 69 6e 67 0a 20 20 20 20 66 6f 72 20 68 20 69 6e 20 72 61 .......#.heading.....for.h.in.ra
68e0 6e 67 65 28 31 2c 20 37 29 3a 0a 20 20 20 20 20 20 20 20 68 20 3d 20 73 74 72 28 68 29 0a 20 20 nge(1,.7):.........h.=.str(h)...
6900 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c ......text.=.regex.loop(r'(<br>|
6920 3c 2f 70 3e 3c 70 3e 29 23 7b 27 2b 68 2b 72 27 7d 5c 73 2b 28 2e 2a 3f 29 28 3c 62 72 3e 7c 3c </p><p>)#{'+h+r'}\s+(.*?)(<br>|<
6940 2f 70 3e 3c 70 3e 29 27 2c 20 72 27 3c 2f 70 3e 3c 68 27 2b 68 2b 72 27 3e 5c 32 3c 2f 68 27 2b /p><p>)',.r'</p><h'+h+r'>\2</h'+
6960 68 2b 72 27 3e 3c 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 h+r'><p>',.text).........text.=.
6980 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 23 7b 27 2b 68 regex.loop(r'(<br>|</p><p>)#{'+h
69a0 2b 72 27 7d 5c 73 2b 28 2e 2a 3f 29 28 3c 2f 70 3e 29 27 20 20 20 20 20 20 20 20 2c 20 72 27 3c +r'}\s+(.*?)(</p>)'........,.r'<
69c0 2f 70 3e 3c 68 27 2b 68 2b 72 27 3e 5c 32 3c 2f 68 27 2b 68 2b 72 27 3e 27 20 20 20 2c 20 74 65 /p><h'+h+r'>\2</h'+h+r'>'...,.te
69e0 78 74 29 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 20 20 xt).........text.=.regex.loop(..
6a00 20 20 20 20 20 20 20 72 27 28 3c 70 3e 29 23 7b 27 2b 68 2b 72 27 7d 5c 73 2b 28 2e 2a 3f 29 28 .......r'(<p>)#{'+h+r'}\s+(.*?)(
6a20 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 27 2c 20 20 20 20 20 72 27 3c 68 27 2b 68 2b 72 27 3e 5c <br>|</p><p>)',.....r'<h'+h+r'>\
6a40 32 3c 2f 68 27 2b 68 2b 72 27 3e 3c 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 74 2</h'+h+r'><p>',.text).........t
6a60 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 20 20 20 20 20 20 20 20 20 72 27 28 3c 70 3e ext.=.regex.loop(.........r'(<p>
6a80 29 23 7b 27 2b 68 2b 72 27 7d 5c 73 2b 28 2e 2a 3f 29 28 3c 2f 70 3e 29 27 20 20 20 20 20 20 20 )#{'+h+r'}\s+(.*?)(</p>)'.......
6aa0 20 2c 20 20 20 20 20 72 27 3c 68 27 2b 68 2b 72 27 3e 5c 32 3c 2f 68 27 2b 68 2b 72 27 3e 27 2c .,.....r'<h'+h+r'>\2</h'+h+r'>',
6ac0 20 20 20 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 75 20 6c 69 73 74 65 0a 20 20 20 ....text)..........#.u.liste....
6ae0 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c 3c 2f 70 3e 3c .text.=.regex.loop(r'(<br>|</p><
6b00 70 3e 29 28 3f 3a 5c 2a 7c 2d 29 5c 73 2b 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 7c 3c p>)(?:\*|-)\s+((?:(?!<br>|</p>|<
6b20 2f 6c 69 3e 29 2e 29 2a 3f 29 28 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 27 2c 20 72 27 3c 2f 70 /li>).)*?)(<br>|</p><p>)',.r'</p
6b40 3e 3c 75 6c 3e 3c 6c 69 3e 5c 32 3c 2f 6c 69 3e 3c 2f 75 6c 3e 3c 70 3e 27 2c 20 74 65 78 74 29 ><ul><li>\2</li></ul><p>',.text)
6b60 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c 3c .....text.=.regex.loop(r'(<br>|<
6b80 2f 70 3e 3c 70 3e 29 28 3f 3a 5c 2a 7c 2d 29 5c 73 2b 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f /p><p>)(?:\*|-)\s+((?:(?!<br>|</
6ba0 70 3e 7c 3c 2f 6c 69 3e 29 2e 29 2a 3f 29 28 3c 2f 70 3e 29 27 20 20 20 20 20 20 20 20 2c 20 72 p>|</li>).)*?)(</p>)'........,.r
6bc0 27 3c 2f 70 3e 3c 75 6c 3e 3c 6c 69 3e 5c 32 3c 2f 6c 69 3e 3c 2f 75 6c 3e 27 20 20 20 2c 20 74 '</p><ul><li>\2</li></ul>'...,.t
6be0 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 20 20 20 20 20 ext).....text.=.regex.loop(.....
6c00 20 20 20 20 72 27 28 3c 70 3e 29 28 3f 3a 5c 2a 7c 2d 29 5c 73 2b 28 28 3f 3a 28 3f 21 3c 62 72 ....r'(<p>)(?:\*|-)\s+((?:(?!<br
6c20 3e 7c 3c 2f 70 3e 7c 3c 2f 6c 69 3e 29 2e 29 2a 3f 29 28 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 >|</p>|</li>).)*?)(<br>|</p><p>)
6c40 27 20 20 20 20 2c 20 72 27 3c 75 6c 3e 3c 6c 69 3e 5c 32 3c 2f 6c 69 3e 3c 2f 75 6c 3e 3c 70 3e '....,.r'<ul><li>\2</li></ul><p>
6c60 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 20 ',.text).....text.=.regex.loop(.
6c80 20 20 20 20 20 20 20 20 72 27 28 3c 70 3e 29 28 3f 3a 5c 2a 7c 2d 29 5c 73 2b 28 28 3f 3a 28 3f ........r'(<p>)(?:\*|-)\s+((?:(?
6ca0 21 3c 62 72 3e 7c 3c 2f 70 3e 7c 3c 2f 6c 69 3e 29 2e 29 2a 3f 29 28 3c 2f 70 3e 29 27 20 20 20 !<br>|</p>|</li>).)*?)(</p>)'...
6cc0 20 20 20 20 20 20 20 20 20 2c 20 72 27 3c 75 6c 3e 3c 6c 69 3e 5c 32 3c 2f 6c 69 3e 3c 2f 75 6c .........,.r'<ul><li>\2</li></ul
6ce0 3e 27 20 20 20 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f >'...,.text).....text.=.regex.lo
6d00 6f 70 28 72 27 3c 2f 6c 69 3e 3c 2f 75 6c 3e 3c 75 6c 3e 3c 6c 69 3e 27 2c 20 72 27 3c 2f 6c 69 op(r'</li></ul><ul><li>',.r'</li
6d20 3e 3c 6c 69 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 6f 20 6c 69 73 74 65 ><li>',.text)..........#.o.liste
6d40 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c 3c .....text.=.regex.loop(r'(<br>|<
6d60 2f 70 3e 3c 70 3e 29 5c 64 7b 31 2c 32 7d 28 3f 3a 5c 29 7c 5c 2e 29 5c 73 2b 28 28 3f 3a 28 3f /p><p>)\d{1,2}(?:\)|\.)\s+((?:(?
6d80 21 3c 62 72 3e 7c 3c 2f 70 3e 7c 3c 2f 6c 69 3e 29 2e 29 2a 3f 29 28 3c 62 72 3e 7c 3c 2f 70 3e !<br>|</p>|</li>).)*?)(<br>|</p>
6da0 3c 70 3e 29 27 2c 20 72 27 3c 2f 70 3e 3c 6f 6c 3e 3c 6c 69 3e 5c 32 3c 2f 6c 69 3e 3c 2f 6f 6c <p>)',.r'</p><ol><li>\2</li></ol
6dc0 3e 3c 70 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f ><p>',.text).....text.=.regex.lo
6de0 6f 70 28 72 27 28 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 5c 64 7b 31 2c 32 7d 28 3f 3a 5c 29 7c op(r'(<br>|</p><p>)\d{1,2}(?:\)|
6e00 5c 2e 29 5c 73 2b 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 7c 3c 2f 6c 69 3e 29 2e 29 2a \.)\s+((?:(?!<br>|</p>|</li>).)*
6e20 3f 29 28 3c 2f 70 3e 29 27 20 20 20 20 20 20 20 20 2c 20 72 27 3c 2f 70 3e 3c 6f 6c 3e 3c 6c 69 ?)(</p>)'........,.r'</p><ol><li
6e40 3e 5c 32 3c 2f 6c 69 3e 3c 2f 6f 6c 3e 27 20 20 20 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 >\2</li></ol>'...,.text).....tex
6e60 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 20 20 20 20 20 20 20 20 20 72 27 28 3c 70 3e 29 5c t.=.regex.loop(.........r'(<p>)\
6e80 64 7b 31 2c 32 7d 28 3f 3a 5c 29 7c 5c 2e 29 5c 73 2b 28 28 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f d{1,2}(?:\)|\.)\s+((?:(?!<br>|</
6ea0 70 3e 7c 3c 2f 6c 69 3e 29 2e 29 2a 3f 29 28 3c 62 72 3e 7c 3c 2f 70 3e 3c 70 3e 29 27 2c 20 20 p>|</li>).)*?)(<br>|</p><p>)',..
6ec0 20 20 20 72 27 3c 6f 6c 3e 3c 6c 69 3e 5c 32 3c 2f 6c 69 3e 3c 2f 6f 6c 3e 3c 70 3e 27 2c 20 74 ...r'<ol><li>\2</li></ol><p>',.t
6ee0 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 20 20 20 20 20 ext).....text.=.regex.loop(.....
6f00 20 20 20 20 72 27 28 3c 70 3e 29 5c 64 7b 31 2c 32 7d 28 3f 3a 5c 29 7c 5c 2e 29 5c 73 2b 28 28 ....r'(<p>)\d{1,2}(?:\)|\.)\s+((
6f20 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 7c 3c 2f 6c 69 3e 29 2e 29 2a 3f 29 28 3c 2f 70 3e 29 ?:(?!<br>|</p>|</li>).)*?)(</p>)
6f40 27 20 20 20 20 20 20 20 20 2c 20 20 20 20 20 72 27 3c 6f 6c 3e 3c 6c 69 3e 5c 32 3c 2f 6c 69 3e '........,.....r'<ol><li>\2</li>
6f60 3c 2f 6f 6c 3e 27 20 20 20 2c 20 74 65 78 74 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 </ol>'...,.text).....text.=.rege
6f80 78 2e 6c 6f 6f 70 28 72 27 3c 2f 6c 69 3e 3c 2f 6f 6c 3e 3c 6f 6c 3e 3c 6c 69 3e 27 2c 20 72 27 x.loop(r'</li></ol><ol><li>',.r'
6fa0 3c 2f 6c 69 3e 3c 6c 69 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 20 3c 68 72 </li><li>',.text)..........#.<hr
6fc0 3e 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c >.....text.=.regex.loop(r'(<br>|
6fe0 3c 2f 70 3e 3c 70 3e 29 28 3f 3a 28 2d 7c 5c 2a 7c 5f 29 5c 73 2a 29 7b 33 2c 7d 28 3c 62 72 3e </p><p>)(?:(-|\*|_)\s*){3,}(<br>
7000 7c 3c 2f 70 3e 3c 70 3e 29 27 2c 20 72 27 3c 2f 70 3e 3c 68 72 3e 3c 70 3e 27 2c 20 74 65 78 74 |</p><p>)',.r'</p><hr><p>',.text
7020 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 28 3c 62 72 3e 7c ).....text.=.regex.loop(r'(<br>|
7040 3c 2f 70 3e 3c 70 3e 29 28 3f 3a 28 2d 7c 5c 2a 7c 5f 29 5c 73 2a 29 7b 33 2c 7d 28 3c 2f 70 3e </p><p>)(?:(-|\*|_)\s*){3,}(</p>
7060 29 27 20 20 20 20 20 20 20 20 2c 20 72 27 3c 2f 70 3e 3c 68 72 3e 27 20 20 20 2c 20 74 65 78 74 )'........,.r'</p><hr>'...,.text
7080 29 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 20 20 20 20 20 20 20 20 ).....text.=.regex.loop(........
70a0 20 72 27 28 3c 70 3e 29 28 3f 3a 28 2d 7c 5c 2a 7c 5f 29 5c 73 2a 29 7b 33 2c 7d 28 3c 62 72 3e .r'(<p>)(?:(-|\*|_)\s*){3,}(<br>
70c0 7c 3c 2f 70 3e 3c 70 3e 29 27 2c 20 20 20 20 20 72 27 3c 68 72 3e 3c 70 3e 27 2c 20 74 65 78 74 |</p><p>)',.....r'<hr><p>',.text
70e0 29 0a 20 20 20 20 0a 20 20 20 20 23 20 62 6f 6c 64 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 )..........#.bold.....text.=.reg
7100 65 78 2e 6c 6f 6f 70 28 72 27 28 5b 5e 5c 5c 5d 29 28 28 3f 3a 5f 7c 5c 2a 29 7b 32 7d 29 28 28 ex.loop(r'([^\\])((?:_|\*){2})((
7120 3f 3a 28 3f 21 3c 62 72 3e 7c 3c 2f 70 3e 29 2e 29 2a 3f 5b 5e 5c 5c 5d 29 5c 32 27 2c 20 72 27 ?:(?!<br>|</p>).)*?[^\\])\2',.r'
7140 5c 31 3c 73 74 72 6f 6e 67 3e 5c 33 3c 2f 73 74 72 6f 6e 67 3e 27 2c 20 74 65 78 74 29 0a 20 20 \1<strong>\3</strong>',.text)...
7160 20 20 23 20 69 74 61 6c 69 63 0a 20 20 20 20 74 65 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 ..#.italic.....text.=.regex.loop
7180 28 72 27 28 5b 5e 5c 5c 5d 29 28 28 3f 3a 5f 7c 5c 2a 29 7b 31 7d 29 28 28 3f 3a 28 3f 21 3c 62 (r'([^\\])((?:_|\*){1})((?:(?!<b
71a0 72 3e 7c 3c 2f 70 3e 29 2e 29 2a 3f 5b 5e 5c 5c 5d 29 5c 32 27 2c 20 72 27 5c 31 3c 65 6d 3e 5c r>|</p>).)*?[^\\])\2',.r'\1<em>\
71c0 33 3c 2f 65 6d 3e 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 23 0a 20 20 20 20 74 65 3</em>',.text)..........#.....te
71e0 78 74 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 72 27 5c 5c 28 5f 7c 5c 2a 29 27 2c 20 72 27 5c xt.=.regex.loop(r'\\(_|\*)',.r'\
7200 31 27 2c 20 74 65 78 74 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 74 65 78 74 0a 50 1',.text)..........return.text.P
7220 4b 03 04 14 00 00 00 00 00 72 51 1c 5b c6 fa b9 86 20 50 00 00 20 50 00 00 09 00 00 00 63 6f 6e K........rQ.[.....P...P......con
7240 66 69 67 2e 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c fig.py#!/usr/bin/env.python..__l
7260 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 icense__...=.'GPL.v3'.__copyrigh
7280 74 5f 5f 20 3d 20 27 32 30 32 30 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 t__.=.'2020,.un_pogaz.<un.pogaz@
72a0 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 6c 6f 61 64 5f 74 72 61 6e gmail.com>'...try:.....load_tran
72c0 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f 72 3a 0a 20 20 20 slations().except.NameError:....
72e0 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 20 61 64 64 .pass..#.load_translations().add
7300 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a 0a 66 72 6f 6d 20 63 6f 6c 6c 65 63 74 69 ed.in.calibre.1.9..from.collecti
7320 6f 6e 73 20 69 6d 70 6f 72 74 20 4f 72 64 65 72 65 64 44 69 63 74 0a 0a 74 72 79 3a 0a 20 20 20 ons.import.OrderedDict..try:....
7340 20 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 69 6d 70 6f 72 74 20 28 0a 20 20 20 20 20 20 20 20 51 .from.qt.core.import.(.........Q
7360 43 68 65 63 6b 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 46 6f 72 6d 4c 61 79 6f 75 74 2c 0a 20 CheckBox,.........QFormLayout,..
7380 20 20 20 20 20 20 20 51 47 72 69 64 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 51 47 72 6f .......QGridLayout,.........QGro
73a0 75 70 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 48 42 6f 78 4c 61 79 6f 75 74 2c 0a 20 20 20 20 upBox,.........QHBoxLayout,.....
73c0 20 20 20 20 51 4c 61 62 65 6c 2c 0a 20 20 20 20 20 20 20 20 51 4c 69 6e 65 45 64 69 74 2c 0a 20 ....QLabel,.........QLineEdit,..
73e0 20 20 20 20 20 20 20 51 50 75 73 68 42 75 74 74 6f 6e 2c 0a 20 20 20 20 20 20 20 20 51 53 63 72 .......QPushButton,.........QScr
7400 6f 6c 6c 41 72 65 61 2c 0a 20 20 20 20 20 20 20 20 51 53 69 7a 65 50 6f 6c 69 63 79 2c 0a 20 20 ollArea,.........QSizePolicy,...
7420 20 20 20 20 20 20 51 74 2c 0a 20 20 20 20 20 20 20 20 51 56 42 6f 78 4c 61 79 6f 75 74 2c 0a 20 ......Qt,.........QVBoxLayout,..
7440 20 20 20 20 20 20 20 51 57 69 64 67 65 74 2c 0a 20 20 20 20 29 0a 65 78 63 65 70 74 20 49 6d 70 .......QWidget,.....).except.Imp
7460 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 66 72 6f 6d 20 50 79 51 74 35 2e 51 74 20 69 6d 70 6f ortError:.....from.PyQt5.Qt.impo
7480 72 74 20 28 0a 20 20 20 20 20 20 20 20 51 43 68 65 63 6b 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 rt.(.........QCheckBox,.........
74a0 51 46 6f 72 6d 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 51 47 72 69 64 4c 61 79 6f 75 74 QFormLayout,.........QGridLayout
74c0 2c 0a 20 20 20 20 20 20 20 20 51 47 72 6f 75 70 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 48 42 ,.........QGroupBox,.........QHB
74e0 6f 78 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 51 4c 61 62 65 6c 2c 0a 20 20 20 20 20 20 oxLayout,.........QLabel,.......
7500 20 20 51 4c 69 6e 65 45 64 69 74 2c 0a 20 20 20 20 20 20 20 20 51 50 75 73 68 42 75 74 74 6f 6e ..QLineEdit,.........QPushButton
7520 2c 0a 20 20 20 20 20 20 20 20 51 53 63 72 6f 6c 6c 41 72 65 61 2c 0a 20 20 20 20 20 20 20 20 51 ,.........QScrollArea,.........Q
7540 53 69 7a 65 50 6f 6c 69 63 79 2c 0a 20 20 20 20 20 20 20 20 51 74 2c 0a 20 20 20 20 20 20 20 20 SizePolicy,.........Qt,.........
7560 51 56 42 6f 78 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 51 57 69 64 67 65 74 2c 0a 20 20 QVBoxLayout,.........QWidget,...
7580 20 20 29 0a 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 2e 77 69 64 67 65 74 73 32 20 ..)..from.calibre.gui2.widgets2.
75a0 69 6d 70 6f 72 74 20 44 69 61 6c 6f 67 0a 0a 66 72 6f 6d 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c import.Dialog..from..common_util
75c0 73 20 69 6d 70 6f 72 74 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 2c 20 47 55 49 2c 20 50 s.import.CALIBRE_VERSION,.GUI,.P
75e0 52 45 46 53 5f 6a 73 6f 6e 2c 20 64 65 62 75 67 5f 70 72 69 6e 74 2c 20 67 65 74 5f 69 63 6f 6e REFS_json,.debug_print,.get_icon
7600 2c 20 72 65 67 65 78 0a 66 72 6f 6d 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 64 69 61 6c 6f ,.regex.from..common_utils.dialo
7620 67 73 20 69 6d 70 6f 72 74 20 4b 65 79 62 6f 61 72 64 43 6f 6e 66 69 67 44 69 61 6c 6f 67 42 75 gs.import.KeyboardConfigDialogBu
7640 74 74 6f 6e 0a 66 72 6f 6d 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 77 69 64 67 65 74 73 20 tton.from..common_utils.widgets.
7660 69 6d 70 6f 72 74 20 49 6d 61 67 65 54 69 74 6c 65 4c 61 79 6f 75 74 2c 20 4b 65 79 56 61 6c 75 import.ImageTitleLayout,.KeyValu
7680 65 43 6f 6d 62 6f 42 6f 78 2c 20 53 65 6c 65 63 74 4e 6f 74 65 73 57 69 64 67 65 74 0a 0a 50 4c eComboBox,.SelectNotesWidget..PL
76a0 55 47 49 4e 5f 49 43 4f 4e 20 3d 20 27 69 6d 61 67 65 73 2f 70 6c 75 67 69 6e 2e 70 6e 67 27 0a UGIN_ICON.=.'images/plugin.png'.
76c0 4e 4f 54 45 53 5f 49 43 4f 4e 20 3d 20 27 69 6d 61 67 65 73 2f 6e 6f 74 65 73 2e 70 6e 67 27 0a NOTES_ICON.=.'images/notes.png'.
76e0 0a 0a 63 6c 61 73 73 20 4b 45 59 3a 0a 20 20 20 20 4b 45 45 50 5f 55 52 4c 20 3d 20 27 4b 65 65 ..class.KEY:.....KEEP_URL.=.'Kee
7700 70 55 72 6c 27 0a 20 20 20 20 48 45 41 44 49 4e 47 53 20 3d 20 27 48 65 61 64 69 6e 67 73 27 0a pUrl'.....HEADINGS.=.'Headings'.
7720 20 20 20 20 46 4f 4e 54 5f 57 45 49 47 48 54 20 3d 20 27 46 6f 6e 74 57 65 69 67 68 74 27 0a 20 ....FONT_WEIGHT.=.'FontWeight'..
7740 20 20 20 44 45 4c 5f 49 54 41 4c 49 43 20 3d 20 27 52 65 6d 6f 76 65 49 74 61 6c 69 63 27 0a 20 ...DEL_ITALIC.=.'RemoveItalic'..
7760 20 20 20 44 45 4c 5f 55 4e 44 45 52 20 3d 20 27 52 65 6d 6f 76 65 55 6e 64 65 72 6c 69 6e 65 27 ...DEL_UNDER.=.'RemoveUnderline'
7780 0a 20 20 20 20 44 45 4c 5f 53 54 52 49 4b 45 20 3d 20 27 52 65 6d 6f 76 65 53 74 72 69 6b 65 74 .....DEL_STRIKE.=.'RemoveStriket
77a0 68 72 6f 75 67 68 27 0a 20 20 20 20 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 20 3d 20 27 46 6f 72 hrough'.....FORCE_JUSTIFY.=.'For
77c0 63 65 4a 75 73 74 69 66 79 27 0a 20 20 20 20 4c 49 53 54 5f 41 4c 49 47 4e 20 3d 20 27 4c 69 73 ceJustify'.....LIST_ALIGN.=.'Lis
77e0 74 41 6c 69 67 6e 27 0a 20 20 20 20 49 44 5f 43 4c 41 53 53 20 3d 20 27 49 44 5f 43 6c 61 73 73 tAlign'.....ID_CLASS.=.'ID_Class
7800 27 0a 20 20 20 20 46 55 4c 4c 5f 42 4f 4c 44 20 3d 20 27 46 75 6c 6c 42 6f 6c 64 27 0a 20 20 20 '.....FULL_BOLD.=.'FullBold'....
7820 20 46 55 4c 4c 5f 49 54 41 4c 49 43 20 3d 20 27 46 75 6c 6c 49 74 61 6c 69 63 27 0a 20 20 20 20 .FULL_ITALIC.=.'FullItalic'.....
7840 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 20 3d 20 27 43 53 53 74 6f 4b 65 65 70 41 63 74 69 CSS_KEEP_ACTIVE.=.'CSStoKeepActi
7860 76 65 27 0a 20 20 20 20 43 53 53 5f 4b 45 45 50 20 3d 20 27 43 53 53 74 6f 4b 65 65 70 27 0a 20 ve'.....CSS_KEEP.=.'CSStoKeep'..
7880 20 20 20 0a 20 20 20 20 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 20 3d 20 27 52 65 6d 6f 76 65 ........DEL_FORMATTING.=.'Remove
78a0 46 6f 72 6d 61 74 74 69 6e 67 27 0a 20 20 20 20 0a 20 20 20 20 4d 41 52 4b 44 4f 57 4e 20 3d 20 Formatting'..........MARKDOWN.=.
78c0 27 4d 61 72 6b 64 6f 77 6e 27 0a 20 20 20 20 44 4f 55 42 4c 45 5f 42 52 20 3d 20 27 44 6f 75 62 'Markdown'.....DOUBLE_BR.=.'Doub
78e0 6c 65 42 52 27 0a 20 20 20 20 53 49 4e 47 4c 45 5f 42 52 20 3d 20 27 53 69 6e 67 6c 65 42 52 27 leBR'.....SINGLE_BR.=.'SingleBR'
7900 0a 20 20 20 20 45 4d 50 54 59 5f 50 41 52 41 20 3d 20 27 45 6d 70 74 79 50 61 72 61 67 72 61 70 .....EMPTY_PARA.=.'EmptyParagrap
7920 68 27 0a 20 20 20 20 49 4d 47 5f 54 41 47 20 3d 20 27 49 6d 67 54 61 67 27 0a 20 20 20 20 0a 20 h'.....IMG_TAG.=.'ImgTag'.......
7940 20 20 20 43 55 53 54 4f 4d 5f 43 4f 4c 55 4d 4e 20 3d 20 27 43 75 73 74 6f 6d 43 6f 6c 75 6d 6e ...CUSTOM_COLUMN.=.'CustomColumn
7960 27 0a 20 20 20 20 0a 20 20 20 20 4e 4f 54 45 53 5f 53 45 54 54 49 4e 47 53 20 3d 20 27 4e 6f 74 '..........NOTES_SETTINGS.=.'Not
7980 65 73 53 65 74 74 69 6e 67 73 27 0a 0a 0a 4b 45 45 50 5f 55 52 4c 20 3d 20 4f 72 64 65 72 65 64 esSettings'...KEEP_URL.=.Ordered
79a0 44 69 63 74 28 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6b 65 65 Dict([.....................('kee
79c0 70 27 2c 20 5f 28 27 4b 65 65 70 20 55 52 4c 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 p',._('Keep.URL')),.............
79e0 20 20 20 20 20 20 20 20 28 27 64 65 6c 27 2c 20 5f 28 27 44 65 6c 65 74 65 20 55 52 4c 27 29 29 ........('del',._('Delete.URL'))
7a00 5d 29 0a 0a 48 45 41 44 49 4e 47 53 20 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 5b 0a 20 20 20 ])..HEADINGS.=.OrderedDict([....
7a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 63 6f 6e 76 27 2c 20 5f 28 .....................('conv',._(
7a40 27 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 27 29 29 2c 0a 20 20 20 'Converte.to.a.paragraph')),....
7a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 62 6f 6c 64 65 72 27 2c 20 .....................('bolder',.
7a80 5f 28 27 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 20 62 75 74 20 6b _('Converte.to.a.paragraph.but.k
7aa0 65 65 70 20 74 68 65 20 62 6f 6c 64 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eep.the.bold')),................
7ac0 20 20 20 20 20 20 20 20 20 28 27 6e 6f 6e 65 27 2c 20 5f 28 27 4e 6f 20 63 68 61 6e 67 65 27 29 .........('none',._('No.change')
7ae0 29 5d 29 0a 0a 46 4f 4e 54 5f 57 45 49 47 48 54 20 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 5b )])..FONT_WEIGHT.=.OrderedDict([
7b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 74 72 75 6e 63 .........................('trunc
7b20 27 2c 20 5f 28 27 52 6f 75 6e 64 20 74 68 65 20 57 65 69 67 68 74 73 20 76 61 6c 75 65 20 74 6f ',._('Round.the.Weights.value.to
7b40 20 74 68 65 20 68 75 6e 64 72 65 64 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .the.hundred')),................
7b60 20 20 20 20 20 20 20 20 20 28 27 62 6f 6c 64 27 2c 20 5f 28 22 52 6f 75 6e 64 20 74 6f 20 42 6f .........('bold',._("Round.to.Bo
7b80 6c 64 20 28 76 61 6c 75 65 20 27 62 6f 6c 64 27 29 22 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 ld.(value.'bold')")),...........
7ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 6f 6e 65 27 2c 20 5f 28 27 44 6f 20 6e 6f 74 ..............('none',._('Do.not
7bc0 20 63 68 61 6e 67 65 20 74 68 65 20 57 65 69 67 68 74 73 27 29 29 2c 0a 20 20 20 20 20 20 20 20 .change.the.Weights')),.........
7be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 64 65 6c 27 2c 20 5f 28 27 44 65 6c 65 74 ................('del',._('Delet
7c00 65 20 57 65 69 67 68 74 73 27 29 29 5d 29 0a 46 4f 4e 54 5f 57 45 49 47 48 54 5f 41 4c 54 20 3d e.Weights'))]).FONT_WEIGHT_ALT.=
7c20 20 5f 28 27 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 36 30 30 29 27 29 0a ._('Round.to.Bold.(value.600)').
7c40 0a 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 20 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 5b 0a 20 .FORCE_JUSTIFY.=.OrderedDict([..
7c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 61 6c 6c 27 2c 20 5f .......................('all',._
7c80 28 27 46 6f 72 63 65 20 74 68 65 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 28 72 65 70 6c 61 ('Force.the.justification.(repla
7ca0 63 65 20 22 63 65 6e 74 65 72 22 20 61 6e 64 20 22 72 69 67 68 74 22 29 27 29 29 2c 0a 20 20 20 ce."center".and."right")')),....
7cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 65 6d 70 74 79 27 2c 20 5f .....................('empty',._
7ce0 28 27 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 66 6f 72 20 69 6e 64 65 74 65 72 6d 69 6e 61 74 ('Justification.for.indeterminat
7d00 65 20 74 65 78 74 20 28 6b 65 65 70 20 22 63 65 6e 74 65 72 22 20 61 6e 64 20 22 72 69 67 68 74 e.text.(keep."center".and."right
7d20 22 29 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 ")')),.........................(
7d40 27 6e 6f 6e 65 27 2c 20 5f 28 27 4e 6f 20 63 68 61 6e 67 65 27 29 29 2c 0a 20 20 20 20 20 20 20 'none',._('No.change')),........
7d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 64 65 6c 27 2c 20 5f 28 27 44 65 6c 65 .................('del',._('Dele
7d80 74 65 20 61 6c 6c 20 61 6c 69 67 6e 6d 65 6e 74 27 29 29 5d 29 0a 0a 4c 49 53 54 5f 41 4c 49 47 te.all.alignment'))])..LIST_ALIG
7da0 4e 20 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 N.=.OrderedDict([...............
7dc0 20 20 20 20 20 20 28 27 6b 65 65 70 27 2c 20 5f 28 22 55 73 65 20 74 68 65 20 27 4a 75 73 74 69 ......('keep',._("Use.the.'Justi
7de0 66 69 63 61 74 69 6f 6e 27 20 73 65 74 74 69 6e 67 22 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 fication'.setting")),...........
7e00 20 20 20 20 20 20 20 20 20 20 28 27 64 65 6c 27 2c 20 5f 28 27 44 65 6c 65 74 65 20 74 68 65 20 ..........('del',._('Delete.the.
7e20 61 6c 69 67 6e 6d 65 6e 74 20 69 6e 20 6c 69 73 74 73 27 29 29 5d 29 0a 0a 49 44 5f 43 4c 41 53 alignment.in.lists'))])..ID_CLAS
7e40 53 20 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 S.=.OrderedDict([...............
7e60 20 20 20 20 20 20 20 20 20 20 28 27 69 64 27 2c 20 5f 28 27 44 65 6c 65 74 65 20 22 69 64 22 20 ..........('id',._('Delete."id".
7e80 61 74 74 72 69 62 75 74 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 attribut')),....................
7ea0 20 20 20 20 20 28 27 63 6c 61 73 73 27 2c 20 5f 28 27 44 65 6c 65 74 65 20 22 63 6c 61 73 73 22 .....('class',._('Delete."class"
7ec0 20 61 74 74 72 69 62 75 74 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .attribut')),...................
7ee0 20 20 20 20 20 20 28 27 69 64 5f 63 6c 61 73 73 27 2c 20 5f 28 27 44 65 6c 65 74 65 20 22 69 64 ......('id_class',._('Delete."id
7f00 22 20 61 6e 64 20 22 63 6c 61 73 73 22 20 61 74 74 72 69 62 75 74 27 29 29 2c 0a 20 20 20 20 20 ".and."class".attribut')),......
7f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 6f 6e 65 27 2c 20 5f 28 27 4e ...................('none',._('N
7f40 6f 20 63 68 61 6e 67 65 27 29 29 5d 29 0a 0a 0a 4d 41 52 4b 44 4f 57 4e 20 3d 20 4f 72 64 65 72 o.change'))])...MARKDOWN.=.Order
7f60 65 64 44 69 63 74 28 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 edDict([........................
7f80 20 28 27 61 6c 77 61 79 73 27 2c 20 5f 28 27 43 6f 6e 76 65 72 74 20 69 6e 20 61 6c 6c 20 63 6f .('always',._('Convert.in.all.co
7fa0 6d 6d 65 6e 74 73 20 28 6e 6f 74 20 72 65 63 6f 6d 61 6e 64 65 64 29 27 29 29 2c 0a 20 20 20 20 mments.(not.recomanded)')),.....
7fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 74 72 79 27 2c 20 5f 28 27 43 ....................('try',._('C
7fe0 6f 6e 76 65 72 74 20 6f 6e 6c 79 20 66 72 6f 6d 20 61 20 70 6c 61 69 6e 20 74 65 78 74 20 63 6f onvert.only.from.a.plain.text.co
8000 6d 6d 65 6e 74 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mment')),.......................
8020 20 20 28 27 6e 6f 6e 65 27 2c 20 5f 28 27 4e 6f 20 63 68 61 6e 67 65 27 29 29 5d 29 0a 0a 44 4f ..('none',._('No.change'))])..DO
8040 55 42 4c 45 5f 42 52 20 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 5b 0a 20 20 20 20 20 20 20 20 UBLE_BR.=.OrderedDict([.........
8060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 65 6d 70 74 79 27 2c 20 5f 28 27 43 72 65 ................('empty',._('Cre
8080 61 74 65 20 61 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 27 29 29 2c 0a 20 20 20 20 20 20 ate.a.empty.paragraph')),.......
80a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 65 77 27 2c 20 5f 28 27 43 72 65 ..................('new',._('Cre
80c0 61 74 65 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 27 29 29 2c 0a 20 20 20 20 20 20 20 20 ate.a.new.paragraph')),.........
80e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 6f 6e 65 27 2c 20 5f 28 27 4e 6f 20 63 ................('none',._('No.c
8100 68 61 6e 67 65 27 29 29 5d 29 0a 0a 53 49 4e 47 4c 45 5f 42 52 20 3d 20 4f 72 64 65 72 65 64 44 hange'))])..SINGLE_BR.=.OrderedD
8120 69 63 74 28 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 ict([.........................('
8140 70 61 72 61 27 2c 20 5f 28 27 43 72 65 61 74 65 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 para',._('Create.a.new.paragraph
8160 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 73 ')),.........................('s
8180 70 61 63 65 27 2c 20 5f 28 27 52 65 70 6c 61 63 65 20 77 69 74 68 20 73 70 61 63 65 27 29 29 2c pace',._('Replace.with.space')),
81a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 6f 6e 65 27 .........................('none'
81c0 2c 20 5f 28 27 4e 6f 20 63 68 61 6e 67 65 27 29 29 5d 29 0a 0a 45 4d 50 54 59 5f 50 41 52 41 20 ,._('No.change'))])..EMPTY_PARA.
81e0 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.OrderedDict([.................
8200 20 20 20 20 20 20 20 20 28 27 6d 65 72 67 65 27 2c 20 5f 28 27 4d 65 72 67 65 20 69 6e 20 61 20 ........('merge',._('Merge.in.a.
8220 73 69 6e 67 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 27 29 29 2c 0a 20 20 20 20 20 single.empty.paragraph')),......
8240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6e 6f 6e 65 27 2c 20 5f 28 27 4e ...................('none',._('N
8260 6f 20 63 68 61 6e 67 65 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 o.change')),....................
8280 20 20 20 20 20 28 27 64 65 6c 27 2c 20 5f 28 27 44 65 6c 65 74 65 20 65 6d 70 74 79 20 70 61 72 .....('del',._('Delete.empty.par
82a0 61 67 72 61 70 68 27 29 29 5d 29 0a 0a 49 4d 47 5f 54 41 47 20 3d 20 4f 72 64 65 72 65 64 44 69 agraph'))])..IMG_TAG.=.OrderedDi
82c0 63 74 28 5b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 6b 65 65 70 27 ct([.....................('keep'
82e0 2c 20 5f 28 27 4b 65 65 70 20 69 6d 61 67 65 73 27 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ,._('Keep.images')),............
8300 20 20 20 20 20 20 20 20 20 28 27 64 65 6c 27 2c 20 5f 28 27 44 65 6c 65 74 65 20 69 6d 61 67 65 .........('del',._('Delete.image
8320 73 27 29 29 5d 29 0a 0a 0a 23 20 53 65 74 20 64 65 66 61 75 6c 74 73 0a 5f 64 65 66 61 75 6c 74 s'))])...#.Set.defaults._default
8340 73 20 3d 20 7b 7d 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 4b 45 45 50 5f 55 52 4c 5d 20 3d s.=.{}._defaults[KEY.KEEP_URL].=
8360 20 27 6b 65 65 70 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 48 45 41 44 49 4e 47 53 5d 20 .'keep'._defaults[KEY.HEADINGS].
8380 3d 20 27 6e 6f 6e 65 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 46 4f 4e 54 5f 57 45 49 47 =.'none'._defaults[KEY.FONT_WEIG
83a0 48 54 5d 20 3d 20 27 62 6f 6c 64 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 44 45 4c 5f 49 HT].=.'bold'._defaults[KEY.DEL_I
83c0 54 41 4c 49 43 5d 20 3d 20 46 61 6c 73 65 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 44 45 4c TALIC].=.False._defaults[KEY.DEL
83e0 5f 55 4e 44 45 52 5d 20 3d 20 46 61 6c 73 65 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 44 45 _UNDER].=.False._defaults[KEY.DE
8400 4c 5f 53 54 52 49 4b 45 5d 20 3d 20 46 61 6c 73 65 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e L_STRIKE].=.False._defaults[KEY.
8420 46 55 4c 4c 5f 42 4f 4c 44 5d 20 3d 20 54 72 75 65 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e FULL_BOLD].=.True._defaults[KEY.
8440 46 55 4c 4c 5f 49 54 41 4c 49 43 5d 20 3d 20 46 61 6c 73 65 0a 5f 64 65 66 61 75 6c 74 73 5b 4b FULL_ITALIC].=.False._defaults[K
8460 45 59 2e 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 5d 20 3d 20 27 65 6d 70 74 79 27 0a 5f 64 65 66 EY.FORCE_JUSTIFY].=.'empty'._def
8480 61 75 6c 74 73 5b 4b 45 59 2e 4c 49 53 54 5f 41 4c 49 47 4e 5d 20 3d 20 27 64 65 6c 27 0a 5f 64 aults[KEY.LIST_ALIGN].=.'del'._d
84a0 65 66 61 75 6c 74 73 5b 4b 45 59 2e 49 44 5f 43 4c 41 53 53 5d 20 3d 20 27 69 64 5f 63 6c 61 73 efaults[KEY.ID_CLASS].=.'id_clas
84c0 73 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 s'._defaults[KEY.CSS_KEEP_ACTIVE
84e0 5d 20 3d 20 54 72 75 65 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5d ].=.True._defaults[KEY.CSS_KEEP]
8500 20 3d 20 27 27 0a 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 44 45 4c 5f 46 4f 52 4d 41 54 54 .=.''.._defaults[KEY.DEL_FORMATT
8520 49 4e 47 5d 20 3d 20 46 61 6c 73 65 0a 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 4d 41 52 4b ING].=.False.._defaults[KEY.MARK
8540 44 4f 57 4e 5d 20 3d 20 27 74 72 79 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 44 4f 55 42 DOWN].=.'try'._defaults[KEY.DOUB
8560 4c 45 5f 42 52 5d 20 3d 20 27 6e 65 77 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 53 49 4e LE_BR].=.'new'._defaults[KEY.SIN
8580 47 4c 45 5f 42 52 5d 20 3d 20 27 6e 6f 6e 65 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 45 GLE_BR].=.'none'._defaults[KEY.E
85a0 4d 50 54 59 5f 50 41 52 41 5d 20 3d 20 27 6d 65 72 67 65 27 0a 5f 64 65 66 61 75 6c 74 73 5b 4b MPTY_PARA].=.'merge'._defaults[K
85c0 45 59 2e 49 4d 47 5f 54 41 47 5d 20 3d 20 27 64 65 6c 27 0a 0a 23 20 54 68 69 73 20 69 73 20 77 EY.IMG_TAG].=.'del'..#.This.is.w
85e0 68 65 72 65 20 61 6c 6c 20 70 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 20 74 68 69 73 20 70 6c here.all.preferences.for.this.pl
8600 75 67 69 6e 20 61 72 65 20 73 74 6f 72 65 64 0a 50 52 45 46 53 20 3d 20 50 52 45 46 53 5f 6a 73 ugin.are.stored.PREFS.=.PREFS_js
8620 6f 6e 28 29 0a 50 52 45 46 53 2e 64 65 66 61 75 6c 74 73 20 3d 20 5f 64 65 66 61 75 6c 74 73 2e on().PREFS.defaults.=._defaults.
8640 63 6f 70 79 28 29 0a 50 52 45 46 53 2e 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 43 55 53 54 4f 4d copy().PREFS.defaults[KEY.CUSTOM
8660 5f 43 4f 4c 55 4d 4e 5d 20 3d 20 46 61 6c 73 65 0a 50 52 45 46 53 2e 64 65 66 61 75 6c 74 73 5b _COLUMN].=.False.PREFS.defaults[
8680 4b 45 59 2e 4e 4f 54 45 53 5f 53 45 54 54 49 4e 47 53 5d 20 3d 20 5f 64 65 66 61 75 6c 74 73 2e KEY.NOTES_SETTINGS].=._defaults.
86a0 63 6f 70 79 28 29 0a 50 52 45 46 53 2e 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 4e 4f 54 45 53 5f copy().PREFS.defaults[KEY.NOTES_
86c0 53 45 54 54 49 4e 47 53 5d 5b 4b 45 59 2e 49 4d 47 5f 54 41 47 5d 20 3d 20 27 6b 65 65 70 27 0a SETTINGS][KEY.IMG_TAG].=.'keep'.
86e0 50 52 45 46 53 2e 64 65 66 61 75 6c 74 73 5b 4b 45 59 2e 4e 4f 54 45 53 5f 53 45 54 54 49 4e 47 PREFS.defaults[KEY.NOTES_SETTING
8700 53 5d 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5d 20 3d 20 27 66 6c 6f 61 74 27 0a 0a 43 53 53 5f S][KEY.CSS_KEEP].=.'float'..CSS_
8720 44 45 46 41 55 4c 54 20 3d 20 27 74 65 78 74 2d 61 6c 69 67 6e 20 66 6f 6e 74 2d 77 65 69 67 68 DEFAULT.=.'text-align.font-weigh
8740 74 20 66 6f 6e 74 2d 73 74 79 6c 65 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 27 0a 0a 0a t.font-style.text-decoration'...
8760 23 20 66 69 78 20 61 20 69 6d 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 65 74 77 65 6e 20 6d #.fix.a.imcompatibility.betwen.m
8780 75 6c 74 69 70 6c 65 20 43 61 6c 69 62 72 65 20 76 65 72 73 69 6f 6e 0a 43 41 4c 49 42 52 45 5f ultiple.Calibre.version.CALIBRE_
87a0 56 45 52 53 49 4f 4e 53 5f 42 4f 4c 44 20 3d 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 20 VERSIONS_BOLD.=.CALIBRE_VERSION.
87c0 3c 20 28 34 2c 30 2c 30 29 20 6f 72 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 <.(4,0,0).or.CALIBRE_VERSION.>=.
87e0 28 36 2c 30 2c 30 29 0a 0a 69 66 20 6e 6f 74 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 53 (6,0,0)..if.not.CALIBRE_VERSIONS
8800 5f 42 4f 4c 44 3a 0a 20 20 20 20 46 4f 4e 54 5f 57 45 49 47 48 54 5b 27 62 6f 6c 64 27 5d 20 3d _BOLD:.....FONT_WEIGHT['bold'].=
8820 20 46 4f 4e 54 5f 57 45 49 47 48 54 5f 41 4c 54 0a 0a 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 .FONT_WEIGHT_ALT..if.CALIBRE_VER
8840 53 49 4f 4e 20 3e 3d 20 28 36 2c 30 2c 30 29 3a 0a 20 20 20 20 64 65 6c 20 46 4f 4e 54 5f 57 45 SION.>=.(6,0,0):.....del.FONT_WE
8860 49 47 48 54 5b 27 74 72 75 6e 63 27 5d 0a 20 20 20 20 69 66 20 50 52 45 46 53 5b 4b 45 59 2e 46 IGHT['trunc'].....if.PREFS[KEY.F
8880 4f 4e 54 5f 57 45 49 47 48 54 5d 20 3d 3d 20 27 74 72 75 6e 63 27 3a 0a 20 20 20 20 20 20 20 20 ONT_WEIGHT].==.'trunc':.........
88a0 50 52 45 46 53 5b 4b 45 59 2e 46 4f 4e 54 5f 57 45 49 47 48 54 5d 20 3d 20 27 62 6f 6c 64 27 0a PREFS[KEY.FONT_WEIGHT].=.'bold'.
88c0 0a 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 28 37 2c 30 2c 30 29 3a 0a .if.CALIBRE_VERSION.>=.(7,0,0):.
88e0 20 20 20 20 43 41 4c 49 42 52 45 5f 48 41 53 5f 4e 4f 54 45 53 20 3d 20 54 72 75 65 0a 65 6c 73 ....CALIBRE_HAS_NOTES.=.True.els
8900 65 3a 0a 20 20 20 20 43 41 4c 49 42 52 45 5f 48 41 53 5f 4e 4f 54 45 53 20 3d 20 46 61 6c 73 65 e:.....CALIBRE_HAS_NOTES.=.False
8920 0a 0a 0a 64 65 66 20 63 73 73 5f 63 6c 65 61 6e 5f 72 75 6c 65 73 28 63 73 73 3a 20 73 74 72 29 ...def.css_clean_rules(css:.str)
8940 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 23 20 72 65 6d 6f 76 65 20 73 70 61 63 65 20 61 6e 64 20 .->.str:.....#.remove.space.and.
8960 69 6e 76 61 6c 69 64 20 63 68 61 72 61 63 74 65 72 0a 20 20 20 20 63 73 73 20 3d 20 72 65 67 65 invalid.character.....css.=.rege
8980 78 2e 6c 6f 6f 70 28 72 27 5b 2e 2a 21 28 29 3f 2b 3c 3e 5c 5c 5d 27 2c 20 72 27 27 2c 20 63 73 x.loop(r'[.*!()?+<>\\]',.r'',.cs
89a0 73 2e 6c 6f 77 65 72 28 29 29 0a 20 20 20 20 63 73 73 20 3d 20 72 65 67 65 78 2e 6c 6f 6f 70 28 s.lower()).....css.=.regex.loop(
89c0 72 27 28 5b 2c 3b 3a 5c 6e 5c 72 5d 7c 5c 73 7b 32 2c 7d 29 27 2c 20 72 27 20 27 2c 20 63 73 73 r'([,;:\n\r]|\s{2,})',.r'.',.css
89e0 29 0a 20 20 20 20 63 73 73 20 3d 20 72 65 67 65 78 2e 73 69 6d 70 6c 65 28 72 27 5e 5c 73 2a 28 ).....css.=.regex.simple(r'^\s*(
8a00 2e 2a 3f 29 5c 73 2a 24 27 2c 20 72 27 5c 31 27 2c 20 63 73 73 29 0a 20 20 20 20 23 20 73 70 6c .*?)\s*$',.r'\1',.css).....#.spl
8a20 69 74 20 74 6f 20 74 61 62 6c 65 2c 20 72 65 6d 6f 76 65 20 64 75 70 6c 69 63 61 74 65 20 61 6e it.to.table,.remove.duplicate.an
8a40 64 20 73 6f 72 74 65 64 0a 20 20 20 20 63 73 73 20 3d 20 73 6f 72 74 65 64 28 73 65 74 28 63 73 d.sorted.....css.=.sorted(set(cs
8a60 73 2e 73 70 6c 69 74 28 27 20 27 29 29 29 0a 20 20 20 20 23 20 72 65 74 75 72 6e 20 69 6e 74 6f s.split('.'))).....#.return.into
8a80 20 73 74 72 69 6e 67 0a 20 20 20 20 72 65 74 75 72 6e 20 27 20 27 2e 6a 6f 69 6e 28 63 73 73 29 .string.....return.'.'.join(css)
8aa0 0a 0a 0a 63 6c 61 73 73 20 43 6f 6d 6d 6f 6e 4f 70 74 69 6f 6e 73 28 51 57 69 64 67 65 74 29 3a ...class.CommonOptions(QWidget):
8ac0 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 72 65 66 73 3a 20 64 .....def.__init__(self,.prefs:.d
8ae0 69 63 74 2c 20 70 61 72 65 6e 74 3a 20 51 57 69 64 67 65 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 ict,.parent:.QWidget=None):.....
8b00 20 20 20 20 51 57 69 64 67 65 74 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 72 65 6e ....QWidget.__init__(self,.paren
8b20 74 3d 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 69 7a 65 5f t=parent)..................size_
8b40 70 6f 6c 69 63 79 20 3d 20 51 53 69 7a 65 50 6f 6c 69 63 79 28 51 53 69 7a 65 50 6f 6c 69 63 79 policy.=.QSizePolicy(QSizePolicy
8b60 2e 4d 69 6e 69 6d 75 6d 45 78 70 61 6e 64 69 6e 67 2c 20 51 53 69 7a 65 50 6f 6c 69 63 79 2e 4d .MinimumExpanding,.QSizePolicy.M
8b80 61 78 69 6d 75 6d 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 20 aximum)..................layout.
8ba0 3d 20 51 56 42 6f 78 4c 61 79 6f 75 74 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 =.QVBoxLayout(self).........self
8bc0 2e 73 65 74 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 .setLayout(layout)..............
8be0 20 20 20 20 23 20 2d 2d 20 6f 70 74 69 6f 6e 73 20 48 54 4d 4c 20 2d 2d 0a 20 20 20 20 20 20 20 ....#.--.options.HTML.--........
8c00 20 73 65 6c 66 2e 67 72 6f 75 70 62 6f 78 48 54 4d 4c 20 3d 20 67 72 6f 75 70 62 6f 78 48 54 4d .self.groupboxHTML.=.groupboxHTM
8c20 4c 20 3d 20 51 47 72 6f 75 70 42 6f 78 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f L.=.QGroupBox(self).........layo
8c40 75 74 2e 61 64 64 57 69 64 67 65 74 28 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 ut.addWidget(groupboxHTML)......
8c60 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 48 54 4d 4c 20 3d 20 51 56 42 6f 78 4c 61 ............layoutHTML.=.QVBoxLa
8c80 79 6f 75 74 28 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 67 72 6f 75 70 yout(groupboxHTML).........group
8ca0 62 6f 78 48 54 4d 4c 2e 73 65 74 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 48 54 4d 4c 29 0a 20 20 boxHTML.setLayout(layoutHTML)...
8cc0 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c 20 3d ...............layout_gridHTML.=
8ce0 20 51 47 72 69 64 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 48 54 4d .QGridLayout().........layoutHTM
8d00 4c 2e 61 64 64 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c 29 0a 20 20 20 L.addLayout(layout_gridHTML)....
8d20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 4c 49 4e 4b 20 3d 20 51 48 42 6f 78 ..............layoutLINK.=.QHBox
8d40 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c Layout().........layout_gridHTML
8d60 2e 61 64 64 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 4c 49 4e 4b 2c 20 30 2c 20 30 29 0a 20 20 20 .addLayout(layoutLINK,.0,.0)....
8d80 20 20 20 20 20 6c 61 79 6f 75 74 4c 49 4e 4b 2e 61 64 64 57 69 64 67 65 74 28 51 4c 61 62 65 6c .....layoutLINK.addWidget(QLabel
8da0 28 5f 28 27 48 79 70 65 72 6c 69 6e 6b 3a 27 29 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e (_('Hyperlink:'))).........self.
8dc0 63 6f 6d 62 6f 42 6f 78 4b 45 45 50 5f 55 52 4c 20 3d 20 4b 65 79 56 61 6c 75 65 43 6f 6d 62 6f comboBoxKEEP_URL.=.KeyValueCombo
8de0 42 6f 78 28 4b 45 45 50 5f 55 52 4c 2c 20 70 72 65 66 73 5b 4b 45 59 2e 4b 45 45 50 5f 55 52 4c Box(KEEP_URL,.prefs[KEY.KEEP_URL
8e00 5d 2c 20 70 61 72 65 6e 74 3d 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 ],.parent=groupboxHTML).........
8e20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 4b 45 45 50 5f 55 52 4c 2e 73 65 74 53 69 7a 65 50 6f 6c self.comboBoxKEEP_URL.setSizePol
8e40 69 63 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 4c icy(size_policy).........layoutL
8e60 49 4e 4b 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 4b 45 45 50 5f INK.addWidget(self.comboBoxKEEP_
8e80 55 52 4c 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 48 45 41 44 URL)..................layoutHEAD
8ea0 49 4e 47 20 3d 20 51 48 42 6f 78 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f ING.=.QHBoxLayout().........layo
8ec0 75 74 5f 67 72 69 64 48 54 4d 4c 2e 61 64 64 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 48 45 41 44 ut_gridHTML.addLayout(layoutHEAD
8ee0 49 4e 47 2c 20 30 2c 20 31 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 48 45 41 44 49 4e 47 ING,.0,.1).........layoutHEADING
8f00 2e 61 64 64 57 69 64 67 65 74 28 51 4c 61 62 65 6c 28 5f 28 27 48 65 61 64 69 6e 67 73 3a 27 29 .addWidget(QLabel(_('Headings:')
8f20 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 48 45 41 44 49 4e 47 53 )).........self.comboBoxHEADINGS
8f40 20 3d 20 4b 65 79 56 61 6c 75 65 43 6f 6d 62 6f 42 6f 78 28 48 45 41 44 49 4e 47 53 2c 20 70 72 .=.KeyValueComboBox(HEADINGS,.pr
8f60 65 66 73 5b 4b 45 59 2e 48 45 41 44 49 4e 47 53 5d 2c 20 70 61 72 65 6e 74 3d 67 72 6f 75 70 62 efs[KEY.HEADINGS],.parent=groupb
8f80 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 48 45 41 oxHTML).........self.comboBoxHEA
8fa0 44 49 4e 47 53 2e 73 65 74 53 69 7a 65 50 6f 6c 69 63 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 DINGS.setSizePolicy(size_policy)
8fc0 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 48 45 41 44 49 4e 47 2e 61 64 64 57 69 64 67 65 74 .........layoutHEADING.addWidget
8fe0 28 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 48 45 41 44 49 4e 47 53 29 0a 20 20 20 20 20 20 20 20 (self.comboBoxHEADINGS).........
9000 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c 2e 61 64 64 57 69 64 67 .........layout_gridHTML.addWidg
9020 65 74 28 51 4c 61 62 65 6c 28 27 20 27 2c 20 73 65 6c 66 29 2c 20 31 2c 20 30 29 0a 20 20 20 20 et(QLabel('.',.self),.1,.0).....
9040 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 46 4f 4e 54 5f 57 .............self.comboBoxFONT_W
9060 45 49 47 48 54 20 3d 20 4b 65 79 56 61 6c 75 65 43 6f 6d 62 6f 42 6f 78 28 46 4f 4e 54 5f 57 45 EIGHT.=.KeyValueComboBox(FONT_WE
9080 49 47 48 54 2c 20 70 72 65 66 73 5b 4b 45 59 2e 46 4f 4e 54 5f 57 45 49 47 48 54 5d 2c 20 70 61 IGHT,.prefs[KEY.FONT_WEIGHT],.pa
90a0 72 65 6e 74 3d 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 rent=groupboxHTML).........layou
90c0 74 5f 67 72 69 64 48 54 4d 4c 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 63 6f 6d 62 6f 42 t_gridHTML.addWidget(self.comboB
90e0 6f 78 46 4f 4e 54 5f 57 45 49 47 48 54 2c 20 32 2c 20 30 29 0a 20 20 20 20 20 20 20 20 0a 20 20 oxFONT_WEIGHT,.2,.0)............
9100 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 49 54 41 4c 49 43 20 3d 20 ......self.checkBoxDEL_ITALIC.=.
9120 51 43 68 65 63 6b 42 6f 78 28 5f 28 27 52 65 6d 6f 76 65 20 49 74 61 6c 69 63 27 29 2c 20 67 72 QCheckBox(_('Remove.Italic'),.gr
9140 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f oupboxHTML).........self.checkBo
9160 78 44 45 4c 5f 49 54 41 4c 49 43 2e 73 65 74 43 68 65 63 6b 65 64 28 70 72 65 66 73 5b 4b 45 59 xDEL_ITALIC.setChecked(prefs[KEY
9180 2e 44 45 4c 5f 49 54 41 4c 49 43 5d 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 67 72 69 .DEL_ITALIC]).........layout_gri
91a0 64 48 54 4d 4c 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c dHTML.addWidget(self.checkBoxDEL
91c0 5f 49 54 41 4c 49 43 2c 20 32 2c 20 31 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 _ITALIC,.2,.1)..................
91e0 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 46 55 4c 4c 5f 42 4f 4c 44 20 3d 20 51 43 68 65 63 6b 42 self.checkBoxFULL_BOLD.=.QCheckB
9200 6f 78 28 5f 28 27 52 65 6d 6f 76 65 20 74 68 65 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 72 ox(_('Remove.the.bold.if.all.par
9220 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 27 29 2c 20 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 agraphes.are.it'),.groupboxHTML)
9240 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 46 55 4c 4c 5f 42 4f 4c 44 2e .........self.checkBoxFULL_BOLD.
9260 73 65 74 43 68 65 63 6b 65 64 28 70 72 65 66 73 5b 4b 45 59 2e 46 55 4c 4c 5f 42 4f 4c 44 5d 29 setChecked(prefs[KEY.FULL_BOLD])
9280 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c 2e 61 64 64 57 69 64 67 .........layout_gridHTML.addWidg
92a0 65 74 28 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 46 55 4c 4c 5f 42 4f 4c 44 2c 20 33 2c 20 30 29 et(self.checkBoxFULL_BOLD,.3,.0)
92c0 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 46 ..................self.checkBoxF
92e0 55 4c 4c 5f 49 54 41 4c 49 43 20 3d 20 51 43 68 65 63 6b 42 6f 78 28 5f 28 27 52 65 6d 6f 76 65 ULL_ITALIC.=.QCheckBox(_('Remove
9300 20 74 68 65 20 69 74 61 6c 69 63 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 73 20 61 .the.italic.if.all.paragraphes.a
9320 72 65 20 69 74 27 29 2c 20 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 73 re.it'),.groupboxHTML).........s
9340 65 6c 66 2e 63 68 65 63 6b 42 6f 78 46 55 4c 4c 5f 49 54 41 4c 49 43 2e 73 65 74 43 68 65 63 6b elf.checkBoxFULL_ITALIC.setCheck
9360 65 64 28 70 72 65 66 73 5b 4b 45 59 2e 46 55 4c 4c 5f 49 54 41 4c 49 43 5d 29 0a 20 20 20 20 20 ed(prefs[KEY.FULL_ITALIC])......
9380 20 20 20 6c 61 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c ...layout_gridHTML.addWidget(sel
93a0 66 2e 63 68 65 63 6b 42 6f 78 46 55 4c 4c 5f 49 54 41 4c 49 43 2c 20 33 2c 20 31 29 0a 20 20 20 f.checkBoxFULL_ITALIC,.3,.1)....
93c0 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 55 ..............self.checkBoxDEL_U
93e0 4e 44 45 52 20 3d 20 51 43 68 65 63 6b 42 6f 78 28 5f 28 27 52 65 6d 6f 76 65 20 55 6e 64 65 72 NDER.=.QCheckBox(_('Remove.Under
9400 6c 69 6e 65 27 29 2c 20 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 73 65 line'),.groupboxHTML).........se
9420 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 55 4e 44 45 52 2e 73 65 74 43 68 65 63 6b 65 64 28 lf.checkBoxDEL_UNDER.setChecked(
9440 70 72 65 66 73 5b 4b 45 59 2e 44 45 4c 5f 55 4e 44 45 52 5d 29 0a 20 20 20 20 20 20 20 20 6c 61 prefs[KEY.DEL_UNDER]).........la
9460 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 63 68 65 yout_gridHTML.addWidget(self.che
9480 63 6b 42 6f 78 44 45 4c 5f 55 4e 44 45 52 2c 20 34 2c 20 30 29 0a 20 20 20 20 20 20 20 20 0a 20 ckBoxDEL_UNDER,.4,.0)...........
94a0 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 53 54 52 49 4b 45 20 3d .......self.checkBoxDEL_STRIKE.=
94c0 20 51 43 68 65 63 6b 42 6f 78 28 5f 28 27 52 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 72 6f 75 .QCheckBox(_('Remove.Strikethrou
94e0 67 68 27 29 2c 20 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 gh'),.groupboxHTML).........self
9500 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 53 54 52 49 4b 45 2e 73 65 74 43 68 65 63 6b 65 64 28 70 .checkBoxDEL_STRIKE.setChecked(p
9520 72 65 66 73 5b 4b 45 59 2e 44 45 4c 5f 53 54 52 49 4b 45 5d 29 0a 20 20 20 20 20 20 20 20 6c 61 refs[KEY.DEL_STRIKE]).........la
9540 79 6f 75 74 5f 67 72 69 64 48 54 4d 4c 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 63 68 65 yout_gridHTML.addWidget(self.che
9560 63 6b 42 6f 78 44 45 4c 5f 53 54 52 49 4b 45 2c 20 34 2c 20 31 29 0a 20 20 20 20 20 20 20 20 0a ckBoxDEL_STRIKE,.4,.1)..........
9580 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 48 54 4d 4c 2e 61 64 64 57 69 64 67 65 74 28 51 4c 61 ........layoutHTML.addWidget(QLa
95a0 62 65 6c 28 27 20 27 2c 20 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 29 0a 20 20 20 20 20 20 20 20 bel('.',.groupboxHTML)).........
95c0 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 6d 48 54 4d 4c 20 3d 20 51 46 6f 72 6d .........layout_formHTML.=.QForm
95e0 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 6d 48 54 4d 4c Layout().........layout_formHTML
9600 2e 73 65 74 46 69 65 6c 64 47 72 6f 77 74 68 50 6f 6c 69 63 79 28 51 46 6f 72 6d 4c 61 79 6f 75 .setFieldGrowthPolicy(QFormLayou
9620 74 2e 46 69 65 6c 64 47 72 6f 77 74 68 50 6f 6c 69 63 79 2e 45 78 70 61 6e 64 69 6e 67 46 69 65 t.FieldGrowthPolicy.ExpandingFie
9640 6c 64 73 47 72 6f 77 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 6d 48 54 4d 4c ldsGrow).........layout_formHTML
9660 2e 73 65 74 46 6f 72 6d 41 6c 69 67 6e 6d 65 6e 74 28 51 74 2e 41 6c 69 67 6e 52 69 67 68 74 29 .setFormAlignment(Qt.AlignRight)
9680 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 48 54 4d 4c 2e 61 64 64 4c 61 79 6f 75 74 28 6c 61 .........layoutHTML.addLayout(la
96a0 79 6f 75 74 5f 66 6f 72 6d 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 yout_formHTML)..................
96c0 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 20 3d 20 4b 65 79 self.comboBoxFORCE_JUSTIFY.=.Key
96e0 56 61 6c 75 65 43 6f 6d 62 6f 42 6f 78 28 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 2c 20 70 72 65 ValueComboBox(FORCE_JUSTIFY,.pre
9700 66 73 5b 4b 45 59 2e 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 5d 2c 20 70 61 72 65 6e 74 3d 67 72 fs[KEY.FORCE_JUSTIFY],.parent=gr
9720 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 6d 48 oupboxHTML).........layout_formH
9740 54 4d 4c 2e 61 64 64 52 6f 77 28 5f 28 27 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 3a 27 29 2c 20 TML.addRow(_('Justification:'),.
9760 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 29 0a 20 20 20 20 self.comboBoxFORCE_JUSTIFY).....
9780 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 2e 73 ....self.comboBoxFORCE_JUSTIFY.s
97a0 65 74 53 69 7a 65 50 6f 6c 69 63 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 etSizePolicy(size_policy).......
97c0 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 4c 49 53 54 5f 41 4c 49 ...........self.comboBoxLIST_ALI
97e0 47 4e 20 3d 20 4b 65 79 56 61 6c 75 65 43 6f 6d 62 6f 42 6f 78 28 4c 49 53 54 5f 41 4c 49 47 4e GN.=.KeyValueComboBox(LIST_ALIGN
9800 2c 20 70 72 65 66 73 5b 4b 45 59 2e 4c 49 53 54 5f 41 4c 49 47 4e 5d 2c 20 70 61 72 65 6e 74 3d ,.prefs[KEY.LIST_ALIGN],.parent=
9820 67 72 6f 75 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 groupboxHTML).........layout_for
9840 6d 48 54 4d 4c 2e 61 64 64 52 6f 77 28 5f 28 27 4c 69 73 74 20 61 6c 69 67 6e 6d 65 6e 74 3a 27 mHTML.addRow(_('List.alignment:'
9860 29 2c 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 4c 49 53 54 5f 41 4c 49 47 4e 29 0a 20 20 20 20 ),.self.comboBoxLIST_ALIGN).....
9880 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 4c 49 53 54 5f 41 4c 49 47 4e 2e 73 65 74 53 ....self.comboBoxLIST_ALIGN.setS
98a0 69 7a 65 50 6f 6c 69 63 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 0a izePolicy(size_policy)..........
98c0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 49 44 5f 43 4c 41 53 53 20 3d 20 ........self.comboBoxID_CLASS.=.
98e0 4b 65 79 56 61 6c 75 65 43 6f 6d 62 6f 42 6f 78 28 49 44 5f 43 4c 41 53 53 2c 20 70 72 65 66 73 KeyValueComboBox(ID_CLASS,.prefs
9900 5b 4b 45 59 2e 49 44 5f 43 4c 41 53 53 5d 2c 20 70 61 72 65 6e 74 3d 67 72 6f 75 70 62 6f 78 48 [KEY.ID_CLASS],.parent=groupboxH
9920 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 6d 48 54 4d 4c 2e 61 64 64 TML).........layout_formHTML.add
9940 52 6f 77 28 51 4c 61 62 65 6c 28 5f 28 27 49 44 20 26 20 43 4c 41 53 53 20 61 74 74 72 69 62 75 Row(QLabel(_('ID.&.CLASS.attribu
9960 74 73 3a 27 29 29 2c 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 49 44 5f 43 4c 41 53 53 29 0a 20 ts:')),.self.comboBoxID_CLASS)..
9980 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 49 44 5f 43 4c 41 53 53 2e 73 65 74 .......self.comboBoxID_CLASS.set
99a0 53 69 7a 65 50 6f 6c 69 63 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 SizePolicy(size_policy).........
99c0 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 6d 48 54 4d 4c 2e 61 64 64 57 69 64 67 .........layout_formHTML.addWidg
99e0 65 74 28 51 4c 61 62 65 6c 28 27 20 27 2c 20 73 65 6c 66 29 29 0a 20 20 20 20 20 20 20 20 0a 20 et(QLabel('.',.self))...........
9a00 20 20 20 20 20 20 20 63 73 73 5f 6b 65 65 70 5f 74 6f 6f 6c 74 69 70 20 3d 20 5f 28 27 43 75 73 .......css_keep_tooltip.=._('Cus
9a20 74 6f 6d 20 43 53 53 20 72 75 6c 65 73 20 74 6f 20 6b 65 65 70 20 69 6e 20 61 64 64 69 74 69 6f tom.CSS.rules.to.keep.in.additio
9a40 6e 20 74 6f 20 74 68 65 20 62 61 73 69 63 20 6f 6e 65 73 2e 20 52 75 6c 65 73 20 73 65 70 61 72 n.to.the.basic.ones..Rules.separ
9a60 61 74 65 64 20 62 79 20 61 20 73 70 61 63 65 2e 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e ated.by.a.space.').........self.
9a80 63 68 65 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 20 3d 20 51 43 68 65 63 6b checkBoxCSS_KEEP_ACTIVE.=.QCheck
9aa0 42 6f 78 28 5f 28 27 43 53 53 20 72 75 6c 65 20 74 6f 20 6b 65 65 70 3a 27 29 2c 20 67 72 6f 75 Box(_('CSS.rule.to.keep:'),.grou
9ac0 70 62 6f 78 48 54 4d 4c 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 43 pboxHTML).........self.checkBoxC
9ae0 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 2e 73 65 74 54 6f 6f 6c 54 69 70 28 63 73 73 5f 6b 65 SS_KEEP_ACTIVE.setToolTip(css_ke
9b00 65 70 5f 74 6f 6f 6c 74 69 70 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 ep_tooltip).........self.lineEdi
9b20 74 43 53 53 5f 4b 45 45 50 20 3d 20 51 4c 69 6e 65 45 64 69 74 28 67 72 6f 75 70 62 6f 78 48 54 tCSS_KEEP.=.QLineEdit(groupboxHT
9b40 4d 4c 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 5f 66 6f 72 6d 48 54 4d 4c 2e 61 64 64 52 ML).........layout_formHTML.addR
9b60 6f 77 28 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 2c ow(self.checkBoxCSS_KEEP_ACTIVE,
9b80 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 29 0a 20 20 20 20 20 20 20 20 .self.lineEditCSS_KEEP).........
9ba0 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 5f 69 6e 69 74 69 61 6c 5f 74 65 self.lineEditCSS_KEEP_initial_te
9bc0 78 74 20 3d 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 5f 6c 61 73 74 5f xt.=.self.lineEditCSS_KEEP_last_
9be0 74 65 78 74 20 3d 20 70 72 65 66 73 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5d 0a 20 20 20 20 20 text.=.prefs[KEY.CSS_KEEP]......
9c00 20 20 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 2e 73 65 74 54 6f 6f 6c ...self.lineEditCSS_KEEP.setTool
9c20 54 69 70 28 63 73 73 5f 6b 65 65 70 5f 74 6f 6f 6c 74 69 70 29 0a 20 20 20 20 20 20 20 20 73 65 Tip(css_keep_tooltip).........se
9c40 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 2e 73 65 74 53 69 7a 65 50 6f 6c 69 63 lf.lineEditCSS_KEEP.setSizePolic
9c60 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 69 6e 65 y(size_policy).........self.line
9c80 45 64 69 74 43 53 53 5f 4b 45 45 50 2e 73 65 74 50 6c 61 63 65 68 6f 6c 64 65 72 54 65 78 74 28 EditCSS_KEEP.setPlaceholderText(
9ca0 43 53 53 5f 44 45 46 41 55 4c 54 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 64 65 CSS_DEFAULT)..................de
9cc0 66 20 61 63 74 69 6f 6e 5f 63 68 65 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 f.action_checkBoxCSS_KEEP_ACTIVE
9ce0 28 73 74 61 74 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 20 3d 20 73 65 6c 66 2e 63 68 (state):.............b.=.self.ch
9d00 65 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 2e 69 73 43 68 65 63 6b 65 64 28 eckBoxCSS_KEEP_ACTIVE.isChecked(
9d20 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e )..........................self.
9d40 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 2e 73 65 74 45 6e 61 62 6c 65 64 28 62 29 0a 20 lineEditCSS_KEEP.setEnabled(b)..
9d60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 62 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........if.b:................
9d80 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 2e 73 65 74 54 65 78 74 28 73 .self.lineEditCSS_KEEP.setText(s
9da0 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 5f 6c 61 73 74 5f 74 65 78 74 29 0a elf.lineEditCSS_KEEP_last_text).
9dc0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ............else:...............
9de0 20 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 5f 6c 61 73 74 5f 74 65 78 ..self.lineEditCSS_KEEP_last_tex
9e00 74 20 3d 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 2e 74 65 78 74 28 29 t.=.self.lineEditCSS_KEEP.text()
9e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 .................self.lineEditCS
9e40 53 5f 4b 45 45 50 2e 73 65 74 54 65 78 74 28 5f 28 27 41 6c 6c 20 43 53 53 20 72 75 6c 65 73 20 S_KEEP.setText(_('All.CSS.rules.
9e60 61 72 65 20 6b 65 65 70 2e 27 29 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 are.keep.'))..................se
9e80 6c 66 2e 63 68 65 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 2e 73 74 61 74 65 lf.checkBoxCSS_KEEP_ACTIVE.state
9ea0 43 68 61 6e 67 65 64 2e 63 6f 6e 6e 65 63 74 28 61 63 74 69 6f 6e 5f 63 68 65 63 6b 42 6f 78 43 Changed.connect(action_checkBoxC
9ec0 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 SS_KEEP_ACTIVE).........self.che
9ee0 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 2e 73 65 74 43 68 65 63 6b 65 64 28 ckBoxCSS_KEEP_ACTIVE.setChecked(
9f00 70 72 65 66 73 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 5d 29 0a 20 20 20 20 prefs[KEY.CSS_KEEP_ACTIVE]).....
9f20 20 20 20 20 61 63 74 69 6f 6e 5f 63 68 65 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 ....action_checkBoxCSS_KEEP_ACTI
9f40 56 45 28 2d 31 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f VE(-1).........self.lineEditCSS_
9f60 4b 45 45 50 5f 6c 61 73 74 5f 74 65 78 74 20 3d 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 KEEP_last_text.=.self.lineEditCS
9f80 53 5f 4b 45 45 50 5f 69 6e 69 74 69 61 6c 5f 74 65 78 74 0a 20 20 20 20 20 20 20 20 0a 20 20 20 S_KEEP_initial_text.............
9fa0 20 20 20 20 20 64 65 66 20 61 63 74 69 6f 6e 5f 63 68 65 63 6b 42 6f 78 44 45 4c 5f 46 4f 52 4d .....def.action_checkBoxDEL_FORM
9fc0 41 54 54 49 4e 47 28 73 74 61 74 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e ATTING(state):.............self.
9fe0 67 72 6f 75 70 62 6f 78 48 54 4d 4c 2e 73 65 74 45 6e 61 62 6c 65 64 28 6e 6f 74 20 73 65 6c 66 groupboxHTML.setEnabled(not.self
a000 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 2e 69 73 43 68 65 63 6b 65 .checkBoxDEL_FORMATTING.isChecke
a020 64 28 29 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b d())..................self.check
a040 42 6f 78 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 20 3d 20 51 43 68 65 63 6b 42 6f 78 28 5f 28 BoxDEL_FORMATTING.=.QCheckBox(_(
a060 27 52 65 6d 6f 76 65 20 61 6c 6c 20 66 6f 72 6d 61 74 74 69 6e 67 27 29 2c 20 73 65 6c 66 29 0a 'Remove.all.formatting'),.self).
a080 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 46 4f 52 4d 41 54 54 ........self.checkBoxDEL_FORMATT
a0a0 49 4e 47 2e 73 74 61 74 65 43 68 61 6e 67 65 64 2e 63 6f 6e 6e 65 63 74 28 61 63 74 69 6f 6e 5f ING.stateChanged.connect(action_
a0c0 63 68 65 63 6b 42 6f 78 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 29 0a 20 20 20 20 20 20 20 20 checkBoxDEL_FORMATTING).........
a0e0 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 2e 73 65 74 43 self.checkBoxDEL_FORMATTING.setC
a100 68 65 63 6b 65 64 28 70 72 65 66 73 5b 4b 45 59 2e 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 5d hecked(prefs[KEY.DEL_FORMATTING]
a120 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e ).........layout.addWidget(self.
a140 63 68 65 63 6b 42 6f 78 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 29 0a 20 20 20 20 20 20 20 20 checkBoxDEL_FORMATTING).........
a160 0a 20 20 20 20 20 20 20 20 23 20 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 .........#.------.........layout
a180 2e 61 64 64 57 69 64 67 65 74 28 51 4c 61 62 65 6c 28 27 20 27 2c 20 73 65 6c 66 29 29 0a 20 20 .addWidget(QLabel('.',.self))...
a1a0 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 2d 2d 20 6f 70 74 69 6f 6e 73 20 54 45 58 54 ...............#.--.options.TEXT
a1c0 20 2d 2d 0a 20 20 20 20 20 20 20 20 67 72 6f 75 70 62 6f 78 54 45 58 54 20 3d 20 51 47 72 6f 75 .--.........groupboxTEXT.=.QGrou
a1e0 70 42 6f 78 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 pBox(self).........layout.addWid
a200 67 65 74 28 67 72 6f 75 70 62 6f 78 54 45 58 54 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 get(groupboxTEXT)...............
a220 20 20 20 6c 61 79 6f 75 74 54 45 58 54 20 3d 20 51 46 6f 72 6d 4c 61 79 6f 75 74 28 67 72 6f 75 ...layoutTEXT.=.QFormLayout(grou
a240 70 62 6f 78 54 45 58 54 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 54 45 58 54 2e 73 65 74 pboxTEXT).........layoutTEXT.set
a260 46 69 65 6c 64 47 72 6f 77 74 68 50 6f 6c 69 63 79 28 51 46 6f 72 6d 4c 61 79 6f 75 74 2e 46 69 FieldGrowthPolicy(QFormLayout.Fi
a280 65 6c 64 47 72 6f 77 74 68 50 6f 6c 69 63 79 2e 45 78 70 61 6e 64 69 6e 67 46 69 65 6c 64 73 47 eldGrowthPolicy.ExpandingFieldsG
a2a0 72 6f 77 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 54 45 58 54 2e 73 65 74 46 6f 72 6d 41 row).........layoutTEXT.setFormA
a2c0 6c 69 67 6e 6d 65 6e 74 28 51 74 2e 41 6c 69 67 6e 52 69 67 68 74 29 0a 20 20 20 20 20 20 20 20 lignment(Qt.AlignRight).........
a2e0 67 72 6f 75 70 62 6f 78 54 45 58 54 2e 73 65 74 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 54 45 58 groupboxTEXT.setLayout(layoutTEX
a300 54 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f T)..................self.comboBo
a320 78 4d 41 52 4b 44 4f 57 4e 20 3d 20 4b 65 79 56 61 6c 75 65 43 6f 6d 62 6f 42 6f 78 28 4d 41 52 xMARKDOWN.=.KeyValueComboBox(MAR
a340 4b 44 4f 57 4e 2c 20 70 72 65 66 73 5b 4b 45 59 2e 4d 41 52 4b 44 4f 57 4e 5d 2c 20 70 61 72 65 KDOWN,.prefs[KEY.MARKDOWN],.pare
a360 6e 74 3d 67 72 6f 75 70 62 6f 78 54 45 58 54 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 54 nt=groupboxTEXT).........layoutT
a380 45 58 54 2e 61 64 64 52 6f 77 28 5f 28 27 4d 61 72 6b 64 6f 77 6e 3a 27 29 2c 20 73 65 6c 66 2e EXT.addRow(_('Markdown:'),.self.
a3a0 63 6f 6d 62 6f 42 6f 78 4d 41 52 4b 44 4f 57 4e 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 comboBoxMARKDOWN).........self.c
a3c0 6f 6d 62 6f 42 6f 78 4d 41 52 4b 44 4f 57 4e 2e 73 65 74 54 6f 6f 6c 54 69 70 28 5f 28 27 54 72 omboBoxMARKDOWN.setToolTip(_('Tr
a3e0 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 4d 61 72 6b 64 6f 77 6e 20 73 74 72 69 6e 67 y.to.convert.the.Markdown.string
a400 73 20 74 6f 20 48 54 4d 4c 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 s.to.HTML')).........self.comboB
a420 6f 78 4d 41 52 4b 44 4f 57 4e 2e 73 65 74 53 69 7a 65 50 6f 6c 69 63 79 28 73 69 7a 65 5f 70 6f oxMARKDOWN.setSizePolicy(size_po
a440 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 licy)..................self.comb
a460 6f 42 6f 78 44 4f 55 42 4c 45 5f 42 52 20 3d 20 4b 65 79 56 61 6c 75 65 43 6f 6d 62 6f 42 6f 78 oBoxDOUBLE_BR.=.KeyValueComboBox
a480 28 44 4f 55 42 4c 45 5f 42 52 2c 20 70 72 65 66 73 5b 4b 45 59 2e 44 4f 55 42 4c 45 5f 42 52 5d (DOUBLE_BR,.prefs[KEY.DOUBLE_BR]
a4a0 2c 20 70 61 72 65 6e 74 3d 67 72 6f 75 70 62 6f 78 54 45 58 54 29 0a 20 20 20 20 20 20 20 20 6c ,.parent=groupboxTEXT).........l
a4c0 61 79 6f 75 74 54 45 58 54 2e 61 64 64 52 6f 77 28 5f 28 22 4d 75 6c 74 69 70 6c 65 20 27 4c 69 ayoutTEXT.addRow(_("Multiple.'Li
a4e0 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 3a 22 29 2c 20 73 65 ne.Return'.in.a.paragraph:"),.se
a500 6c 66 2e 63 6f 6d 62 6f 42 6f 78 44 4f 55 42 4c 45 5f 42 52 29 0a 20 20 20 20 20 20 20 20 73 65 lf.comboBoxDOUBLE_BR).........se
a520 6c 66 2e 63 6f 6d 62 6f 42 6f 78 44 4f 55 42 4c 45 5f 42 52 2e 73 65 74 53 69 7a 65 50 6f 6c 69 lf.comboBoxDOUBLE_BR.setSizePoli
a540 63 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 cy(size_policy).................
a560 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 53 49 4e 47 4c 45 5f 42 52 20 3d 20 4b 65 79 56 61 6c .self.comboBoxSINGLE_BR.=.KeyVal
a580 75 65 43 6f 6d 62 6f 42 6f 78 28 53 49 4e 47 4c 45 5f 42 52 2c 20 70 72 65 66 73 5b 4b 45 59 2e ueComboBox(SINGLE_BR,.prefs[KEY.
a5a0 53 49 4e 47 4c 45 5f 42 52 5d 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 54 45 58 54 2e 61 SINGLE_BR]).........layoutTEXT.a
a5c0 64 64 52 6f 77 28 5f 28 22 53 69 6e 67 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e ddRow(_("Single.'Line.Return'.in
a5e0 20 61 20 70 61 72 61 67 72 61 70 68 3a 22 29 2c 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 53 49 .a.paragraph:"),.self.comboBoxSI
a600 4e 47 4c 45 5f 42 52 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 53 49 NGLE_BR).........self.comboBoxSI
a620 4e 47 4c 45 5f 42 52 2e 73 65 74 54 6f 6f 6c 54 69 70 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 NGLE_BR.setToolTip(.............
a640 5f 28 27 54 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 61 70 70 6c 69 65 64 20 61 66 74 _('This.operation.is.applied.aft
a660 65 72 20 22 4d 75 6c 74 69 70 6c 65 20 5c 27 4c 69 6e 65 20 52 65 74 75 72 6e 5c 27 20 69 6e 20 er."Multiple.\'Line.Return\'.in.
a680 61 20 70 61 72 61 67 72 61 70 68 22 5c 6e 27 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 a.paragraph"\n'+...............'
a6a0 61 6e 64 20 62 65 66 6f 72 65 20 22 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 and.before."Multiple.empty.parag
a6c0 72 61 70 68 22 27 29 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 raph"').........).........self.c
a6e0 6f 6d 62 6f 42 6f 78 53 49 4e 47 4c 45 5f 42 52 2e 73 65 74 53 69 7a 65 50 6f 6c 69 63 79 28 73 omboBoxSINGLE_BR.setSizePolicy(s
a700 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c ize_policy)..................sel
a720 66 2e 63 6f 6d 62 6f 42 6f 78 45 4d 50 54 59 5f 50 41 52 41 20 3d 20 4b 65 79 56 61 6c 75 65 43 f.comboBoxEMPTY_PARA.=.KeyValueC
a740 6f 6d 62 6f 42 6f 78 28 45 4d 50 54 59 5f 50 41 52 41 2c 20 70 72 65 66 73 5b 4b 45 59 2e 45 4d omboBox(EMPTY_PARA,.prefs[KEY.EM
a760 50 54 59 5f 50 41 52 41 5d 2c 20 70 61 72 65 6e 74 3d 67 72 6f 75 70 62 6f 78 54 45 58 54 29 0a PTY_PARA],.parent=groupboxTEXT).
a780 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 54 45 58 54 2e 61 64 64 52 6f 77 28 5f 28 27 4d 75 6c ........layoutTEXT.addRow(_('Mul
a7a0 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 3a 27 29 2c 20 73 65 6c 66 2e 63 tiple.empty.paragraph:'),.self.c
a7c0 6f 6d 62 6f 42 6f 78 45 4d 50 54 59 5f 50 41 52 41 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e omboBoxEMPTY_PARA).........self.
a7e0 63 6f 6d 62 6f 42 6f 78 45 4d 50 54 59 5f 50 41 52 41 2e 73 65 74 53 69 7a 65 50 6f 6c 69 63 79 comboBoxEMPTY_PARA.setSizePolicy
a800 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 (size_policy)..................s
a820 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 49 4d 47 5f 54 41 47 20 3d 20 4b 65 79 56 61 6c 75 65 43 6f elf.comboBoxIMG_TAG.=.KeyValueCo
a840 6d 62 6f 42 6f 78 28 49 4d 47 5f 54 41 47 2c 20 70 72 65 66 73 5b 4b 45 59 2e 49 4d 47 5f 54 41 mboBox(IMG_TAG,.prefs[KEY.IMG_TA
a860 47 5d 2c 20 70 61 72 65 6e 74 3d 67 72 6f 75 70 62 6f 78 54 45 58 54 29 0a 20 20 20 20 20 20 20 G],.parent=groupboxTEXT)........
a880 20 6c 61 79 6f 75 74 54 45 58 54 2e 61 64 64 52 6f 77 28 5f 28 27 49 6d 61 67 65 73 3a 27 29 2c .layoutTEXT.addRow(_('Images:'),
a8a0 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 49 4d 47 5f 54 41 47 29 0a 20 20 20 20 20 20 20 20 73 .self.comboBoxIMG_TAG).........s
a8c0 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 49 4d 47 5f 54 41 47 2e 73 65 74 53 69 7a 65 50 6f 6c 69 63 elf.comboBoxIMG_TAG.setSizePolic
a8e0 79 28 73 69 7a 65 5f 70 6f 6c 69 63 79 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 67 65 74 5f y(size_policy)..........def.get_
a900 6f 70 74 69 6f 6e 28 73 65 6c 66 29 20 2d 3e 20 64 69 63 74 3a 0a 20 20 20 20 20 20 20 20 0a 20 option(self).->.dict:...........
a920 20 20 20 20 20 20 20 70 72 65 66 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 .......prefs.=.{}...............
a940 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 4b 45 45 50 5f 55 52 4c 5d 20 3d 20 73 65 6c 66 2e 63 6f ...prefs[KEY.KEEP_URL].=.self.co
a960 6d 62 6f 42 6f 78 4b 45 45 50 5f 55 52 4c 2e 73 65 6c 65 63 74 65 64 5f 6b 65 79 28 29 0a 20 20 mboBoxKEEP_URL.selected_key()...
a980 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 48 45 41 44 49 4e 47 53 5d 20 3d 20 73 65 6c 66 ......prefs[KEY.HEADINGS].=.self
a9a0 2e 63 6f 6d 62 6f 42 6f 78 48 45 41 44 49 4e 47 53 2e 73 65 6c 65 63 74 65 64 5f 6b 65 79 28 29 .comboBoxHEADINGS.selected_key()
a9c0 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 46 4f 4e 54 5f 57 45 49 47 48 54 5d 20 .........prefs[KEY.FONT_WEIGHT].
a9e0 3d 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 46 4f 4e 54 5f 57 45 49 47 48 54 2e 73 65 6c 65 63 =.self.comboBoxFONT_WEIGHT.selec
aa00 74 65 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 44 45 4c 5f ted_key().........prefs[KEY.DEL_
aa20 49 54 41 4c 49 43 5d 20 3d 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 49 54 41 4c 49 ITALIC].=.self.checkBoxDEL_ITALI
aa40 43 2e 69 73 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e C.isChecked().........prefs[KEY.
aa60 44 45 4c 5f 55 4e 44 45 52 5d 20 3d 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c 5f 55 4e DEL_UNDER].=.self.checkBoxDEL_UN
aa80 44 45 52 2e 69 73 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 DER.isChecked().........prefs[KE
aaa0 59 2e 44 45 4c 5f 53 54 52 49 4b 45 5d 20 3d 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 45 4c Y.DEL_STRIKE].=.self.checkBoxDEL
aac0 5f 53 54 52 49 4b 45 2e 69 73 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 _STRIKE.isChecked().........pref
aae0 73 5b 4b 45 59 2e 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 5d 20 3d 20 73 65 6c 66 2e 63 6f 6d 62 s[KEY.FORCE_JUSTIFY].=.self.comb
ab00 6f 42 6f 78 46 4f 52 43 45 5f 4a 55 53 54 49 46 59 2e 73 65 6c 65 63 74 65 64 5f 6b 65 79 28 29 oBoxFORCE_JUSTIFY.selected_key()
ab20 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 4c 49 53 54 5f 41 4c 49 47 4e 5d 20 3d .........prefs[KEY.LIST_ALIGN].=
ab40 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 4c 49 53 54 5f 41 4c 49 47 4e 2e 73 65 6c 65 63 74 65 .self.comboBoxLIST_ALIGN.selecte
ab60 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 49 44 5f 43 4c 41 d_key().........prefs[KEY.ID_CLA
ab80 53 53 5d 20 3d 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 49 44 5f 43 4c 41 53 53 2e 73 65 6c 65 SS].=.self.comboBoxID_CLASS.sele
aba0 63 74 65 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 46 55 4c cted_key().........prefs[KEY.FUL
abc0 4c 5f 42 4f 4c 44 5d 20 3d 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 46 55 4c 4c 5f 42 4f 4c 44 L_BOLD].=.self.checkBoxFULL_BOLD
abe0 2e 69 73 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 46 .isChecked().........prefs[KEY.F
ac00 55 4c 4c 5f 49 54 41 4c 49 43 5d 20 3d 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 46 55 4c 4c 5f ULL_ITALIC].=.self.checkBoxFULL_
ac20 49 54 41 4c 49 43 2e 69 73 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 ITALIC.isChecked()..............
ac40 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 5d 20 3d ....prefs[KEY.CSS_KEEP_ACTIVE].=
ac60 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 43 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 2e 69 73 .self.checkBoxCSS_KEEP_ACTIVE.is
ac80 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 65 66 73 5b 4b 45 59 2e 43 Checked().........if.prefs[KEY.C
aca0 53 53 5f 4b 45 45 50 5f 41 43 54 49 56 45 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 SS_KEEP_ACTIVE]:.............pre
acc0 66 73 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5d 20 3d 20 63 73 73 5f 63 6c 65 61 6e 5f 72 75 6c fs[KEY.CSS_KEEP].=.css_clean_rul
ace0 65 73 28 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 2e 74 65 78 74 28 29 29 es(self.lineEditCSS_KEEP.text())
ad00 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 66 73 .........else:.............prefs
ad20 5b 4b 45 59 2e 43 53 53 5f 4b 45 45 50 5d 20 3d 20 63 73 73 5f 63 6c 65 61 6e 5f 72 75 6c 65 73 [KEY.CSS_KEEP].=.css_clean_rules
ad40 28 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 43 53 53 5f 4b 45 45 50 5f 69 6e 69 74 69 61 6c 5f 74 (self.lineEditCSS_KEEP_initial_t
ad60 65 78 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e ext)..................prefs[KEY.
ad80 44 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 5d 20 3d 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 44 DEL_FORMATTING].=.self.checkBoxD
ada0 45 4c 5f 46 4f 52 4d 41 54 54 49 4e 47 2e 69 73 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 EL_FORMATTING.isChecked().......
adc0 20 20 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 4d 41 52 4b 44 4f 57 4e 5d 20 3d ...........prefs[KEY.MARKDOWN].=
ade0 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 4d 41 52 4b 44 4f 57 4e 2e 73 65 6c 65 63 74 65 64 5f .self.comboBoxMARKDOWN.selected_
ae00 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 44 4f 55 42 4c 45 5f 42 key().........prefs[KEY.DOUBLE_B
ae20 52 5d 20 3d 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 44 4f 55 42 4c 45 5f 42 52 2e 73 65 6c 65 R].=.self.comboBoxDOUBLE_BR.sele
ae40 63 74 65 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 53 49 4e cted_key().........prefs[KEY.SIN
ae60 47 4c 45 5f 42 52 5d 20 3d 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 53 49 4e 47 4c 45 5f 42 52 GLE_BR].=.self.comboBoxSINGLE_BR
ae80 2e 73 65 6c 65 63 74 65 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 .selected_key().........prefs[KE
aea0 59 2e 45 4d 50 54 59 5f 50 41 52 41 5d 20 3d 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f 78 45 4d 50 Y.EMPTY_PARA].=.self.comboBoxEMP
aec0 54 59 5f 50 41 52 41 2e 73 65 6c 65 63 74 65 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 70 TY_PARA.selected_key().........p
aee0 72 65 66 73 5b 4b 45 59 2e 49 4d 47 5f 54 41 47 5d 20 3d 20 73 65 6c 66 2e 63 6f 6d 62 6f 42 6f refs[KEY.IMG_TAG].=.self.comboBo
af00 78 49 4d 47 5f 54 41 47 2e 73 65 6c 65 63 74 65 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 xIMG_TAG.selected_key().........
af20 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 72 65 66 73 0a 0a 0a 63 6c 61 73 73 20 43 6f .........return.prefs...class.Co
af40 6e 66 69 67 57 69 64 67 65 74 28 51 57 69 64 67 65 74 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 nfigWidget(QWidget):.....def.__i
af60 6e 69 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 51 57 69 64 67 65 74 2e 5f 5f 69 nit__(self):.........QWidget.__i
af80 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 nit__(self)..................lay
afa0 6f 75 74 20 3d 20 51 56 42 6f 78 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 out.=.QVBoxLayout().........self
afc0 2e 73 65 74 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 .setLayout(layout)..............
afe0 20 20 20 20 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 20 3c 20 28 36 2c 32 36 2c 30 ....if.CALIBRE_VERSION.<.(6,26,0
b000 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4d 61 6b 65 20 64 69 61 6c 6f 67 20 62 6f 78 ):.............#.Make.dialog.box
b020 20 73 63 72 6f 6c 6c 61 62 6c 65 20 28 66 6f 72 20 73 6d 61 6c 6c 65 72 20 73 63 72 65 65 6e 73 .scrollable.(for.smaller.screens
b040 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 61 62 6c 65 20 3d 20 51 53 63 72 6f ).............scrollable.=.QScro
b060 6c 6c 41 72 65 61 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 63 6f 6e 74 65 llArea().............scrollconte
b080 6e 74 20 3d 20 51 57 69 64 67 65 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 6c nt.=.QWidget().............scrol
b0a0 6c 61 62 6c 65 2e 73 65 74 57 69 64 67 65 74 28 73 63 72 6f 6c 6c 63 6f 6e 74 65 6e 74 29 0a 20 lable.setWidget(scrollcontent)..
b0c0 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 61 62 6c 65 2e 73 65 74 57 69 64 67 65 74 52 ...........scrollable.setWidgetR
b0e0 65 73 69 7a 61 62 6c 65 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 79 6f 75 esizable(True).............layou
b100 74 2e 61 64 64 57 69 64 67 65 74 28 73 63 72 6f 6c 6c 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 t.addWidget(scrollable).........
b120 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 20 3d 20 51 56 42 6f 78 4c .................layout.=.QVBoxL
b140 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 63 6f 6e 74 65 6e ayout().............scrollconten
b160 74 2e 73 65 74 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 t.setLayout(layout).............
b180 20 20 20 20 20 74 69 74 6c 65 5f 6c 61 79 6f 75 74 20 3d 20 49 6d 61 67 65 54 69 74 6c 65 4c 61 .....title_layout.=.ImageTitleLa
b1a0 79 6f 75 74 28 50 4c 55 47 49 4e 5f 49 43 4f 4e 2c 20 5f 28 27 43 6f 6d 6d 65 6e 74 73 20 43 6c yout(PLUGIN_ICON,._('Comments.Cl
b1c0 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 27 29 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e eaner.Options')).........layout.
b1e0 61 64 64 4c 61 79 6f 75 74 28 74 69 74 6c 65 5f 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 addLayout(title_layout).........
b200 0a 20 20 20 20 20 20 20 20 23 20 2d 2d 2d 20 6f 70 74 69 6f 6e 73 20 2d 2d 2d 0a 20 20 20 20 20 .........#.---.options.---......
b220 20 20 20 73 65 6c 66 2e 6f 70 74 69 6f 6e 73 20 3d 20 43 6f 6d 6d 6f 6e 4f 70 74 69 6f 6e 73 28 ...self.options.=.CommonOptions(
b240 50 52 45 46 53 2c 20 70 61 72 65 6e 74 3d 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f PREFS,.parent=self).........layo
b260 75 74 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 6f 70 74 69 6f 6e 73 29 0a 20 20 20 20 20 ut.addWidget(self.options)......
b280 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 2d 2d 2d 20 43 75 73 74 6f 6d 20 63 6f 6c 75 6d 6e 73 ............#.---.Custom.columns
b2a0 20 2d 2d 2d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 43 55 53 54 4f 4d .---.........self.checkBoxCUSTOM
b2c0 5f 43 4f 4c 55 4d 4e 20 3d 20 51 43 68 65 63 6b 42 6f 78 28 5f 28 27 41 70 70 6c 79 20 74 6f 20 _COLUMN.=.QCheckBox(_('Apply.to.
b2e0 6f 74 68 65 72 73 20 63 75 73 74 6f 6d 20 48 54 4d 4c 20 63 6f 6c 75 6d 6e 73 27 29 2c 20 73 65 others.custom.HTML.columns'),.se
b300 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 43 55 53 54 4f 4d 5f lf).........self.checkBoxCUSTOM_
b320 43 4f 4c 55 4d 4e 2e 73 65 74 43 68 65 63 6b 65 64 28 50 52 45 46 53 5b 4b 45 59 2e 43 55 53 54 COLUMN.setChecked(PREFS[KEY.CUST
b340 4f 4d 5f 43 4f 4c 55 4d 4e 5d 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 OM_COLUMN]).........layout.addWi
b360 64 67 65 74 28 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 43 55 53 54 4f 4d 5f 43 4f 4c 55 4d 4e 29 dget(self.checkBoxCUSTOM_COLUMN)
b380 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 2d 2d 2d 20 42 75 74 74 6f 6e 73 20 ..................#.---.Buttons.
b3a0 2d 2d 2d 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 51 4c 61 ---.........layout.addWidget(QLa
b3c0 62 65 6c 28 27 20 27 2c 20 73 65 6c 66 29 29 0a 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 5f 6c bel('.',.self)).........button_l
b3e0 61 79 6f 75 74 20 3d 20 51 48 42 6f 78 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 ayout.=.QHBoxLayout().........la
b400 79 6f 75 74 2e 61 64 64 4c 61 79 6f 75 74 28 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 29 0a 20 20 yout.addLayout(button_layout)...
b420 20 20 20 20 20 20 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 4b 65 ......button_layout.addWidget(Ke
b440 79 62 6f 61 72 64 43 6f 6e 66 69 67 44 69 61 6c 6f 67 42 75 74 74 6f 6e 28 70 61 72 65 6e 74 3d yboardConfigDialogButton(parent=
b460 73 65 6c 66 29 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 43 41 4c 49 42 self))..................if.CALIB
b480 52 45 5f 48 41 53 5f 4e 4f 54 45 53 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e RE_HAS_NOTES:.............button
b4a0 5f 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 4e 6f 74 65 43 6f 6e 66 69 67 44 69 61 6c _layout.addWidget(NoteConfigDial
b4c0 6f 67 42 75 74 74 6f 6e 28 73 65 6c 66 29 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 ogButton(self)).................
b4e0 20 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 2e 61 64 64 53 74 72 65 74 63 68 28 2d 31 29 0a 20 20 .button_layout.addStretch(-1)...
b500 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 53 74 72 65 74 63 68 ...............layout.addStretch
b520 28 2d 31 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 61 76 65 5f 73 65 74 74 69 6e 67 73 28 (-1)..........def.save_settings(
b540 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 50 52 45 46 53 3a 0a 20 20 20 20 20 self):.........with.PREFS:......
b560 20 20 20 20 20 20 20 70 72 65 66 73 20 3d 20 73 65 6c 66 2e 6f 70 74 69 6f 6e 73 2e 67 65 74 5f .......prefs.=.self.options.get_
b580 6f 70 74 69 6f 6e 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 66 73 5b 4b 45 59 2e 43 option().............prefs[KEY.C
b5a0 55 53 54 4f 4d 5f 43 4f 4c 55 4d 4e 5d 20 3d 20 73 65 6c 66 2e 63 68 65 63 6b 42 6f 78 43 55 53 USTOM_COLUMN].=.self.checkBoxCUS
b5c0 54 4f 4d 5f 43 4f 4c 55 4d 4e 2e 69 73 43 68 65 63 6b 65 64 28 29 0a 20 20 20 20 20 20 20 20 20 TOM_COLUMN.isChecked()..........
b5e0 20 20 20 50 52 45 46 53 2e 75 70 64 61 74 65 28 70 72 65 66 73 29 0a 20 20 20 20 20 20 20 20 0a ...PREFS.update(prefs)..........
b600 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 27 53 61 76 65 20 73 65 74 74 69 6e ........debug_print('Save.settin
b620 67 73 3a 27 2c 20 70 72 65 66 73 2c 20 27 5c 6e 27 29 0a 0a 0a 63 6c 61 73 73 20 4e 6f 74 65 43 gs:',.prefs,.'\n')...class.NoteC
b640 6f 6e 66 69 67 44 69 61 6c 6f 67 42 75 74 74 6f 6e 28 51 50 75 73 68 42 75 74 74 6f 6e 29 3a 0a onfigDialogButton(QPushButton):.
b660 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 72 65 .........def.__init__(self,.pare
b680 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 51 50 75 73 68 42 75 74 74 6f 6e 2e 5f 5f nt=None):.........QPushButton.__
b6a0 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 67 65 74 5f 69 63 6f 6e 28 4e 4f 54 45 53 5f 49 43 4f 4e init__(self,.get_icon(NOTES_ICON
b6c0 29 2c 20 5f 28 27 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 27 29 2c 20 70 ),._('Notes.Cleaner.Options'),.p
b6e0 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 54 6f 6f 6c 54 69 70 28 5f arent).........self.setToolTip(_
b700 28 27 45 64 69 74 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6e 6f 74 65 73 ('Edit.the.options.for.the.notes
b720 20 63 6c 65 61 6e 65 72 20 61 63 74 69 6f 6e 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e .cleaner.action')).........self.
b740 63 6c 69 63 6b 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 65 64 69 74 5f 6e 6f 74 65 73 5f clicked.connect(self.edit_notes_
b760 6f 70 74 69 6f 6e 73 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 65 64 69 74 5f 6e 6f 74 65 73 options)..........def.edit_notes
b780 5f 6f 70 74 69 6f 6e 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 64 20 3d 20 43 6f 6e 66 _options(self):.........d.=.Conf
b7a0 69 67 4e 6f 74 65 73 44 69 61 6c 6f 67 28 29 0a 20 20 20 20 20 20 20 20 64 2e 65 78 65 63 28 29 igNotesDialog().........d.exec()
b7c0 0a 0a 0a 63 6c 61 73 73 20 43 6f 6e 66 69 67 4e 6f 74 65 73 44 69 61 6c 6f 67 28 44 69 61 6c 6f ...class.ConfigNotesDialog(Dialo
b7e0 67 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 g):.....def.__init__(self):.....
b800 20 20 20 20 44 69 61 6c 6f 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 0a 20 20 20 20 20 20 ....Dialog.__init__(self,.......
b820 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 27 43 75 73 74 6f 6d 69 7a 65 27 29 20 2b 20 27 20 27 ......title=_('Customize').+.'.'
b840 20 2b 20 5f 28 27 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 27 29 2c 0a 20 20 20 20 20 20 20 20 20 .+._('Notes.Cleaner'),..........
b860 20 20 20 6e 61 6d 65 3d 27 70 6c 75 67 69 6e 20 63 6f 6e 66 69 67 20 64 69 61 6c 6f 67 3a 55 73 ...name='plugin.config.dialog:Us
b880 65 72 20 41 63 74 69 6f 6e 20 49 6e 74 65 72 66 61 63 65 3a 4e 6f 74 65 73 20 43 6c 65 61 6e 65 er.Action.Interface:Notes.Cleane
b8a0 72 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3d 47 55 49 2c 0a 20 20 20 20 r',.............parent=GUI,.....
b8c0 20 20 20 20 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 74 75 70 5f 75 69 28 73 65 6c 66 ....)..........def.setup_ui(self
b8e0 29 3a 0a 20 20 20 20 20 20 20 20 76 20 3d 20 51 56 42 6f 78 4c 61 79 6f 75 74 28 73 65 6c 66 29 ):.........v.=.QVBoxLayout(self)
b900 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 61 62 6c 65 20 3d 20 51 ..................scrollable.=.Q
b920 53 63 72 6f 6c 6c 41 72 65 61 28 29 0a 20 20 20 20 20 20 20 20 76 2e 61 64 64 57 69 64 67 65 74 ScrollArea().........v.addWidget
b940 28 73 63 72 6f 6c 6c 61 62 6c 65 29 0a 20 20 20 20 20 20 20 20 76 2e 61 64 64 57 69 64 67 65 74 (scrollable).........v.addWidget
b960 28 73 65 6c 66 2e 62 62 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 4d 61 6b (self.bb)..................#.Mak
b980 65 20 64 69 61 6c 6f 67 20 62 6f 78 20 73 63 72 6f 6c 6c 61 62 6c 65 20 28 66 6f 72 20 73 6d 61 e.dialog.box.scrollable.(for.sma
b9a0 6c 6c 65 72 20 73 63 72 65 65 6e 73 29 0a 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 63 6f 6e 74 ller.screens).........scrollcont
b9c0 65 6e 74 20 3d 20 51 57 69 64 67 65 74 28 29 0a 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 61 62 ent.=.QWidget().........scrollab
b9e0 6c 65 2e 73 65 74 57 69 64 67 65 74 28 73 63 72 6f 6c 6c 63 6f 6e 74 65 6e 74 29 0a 20 20 20 20 le.setWidget(scrollcontent).....
ba00 20 20 20 20 73 63 72 6f 6c 6c 61 62 6c 65 2e 73 65 74 57 69 64 67 65 74 52 65 73 69 7a 61 62 6c ....scrollable.setWidgetResizabl
ba20 65 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 20 3d 20 51 56 42 6f 78 4c 61 e(True).........layout.=.QVBoxLa
ba40 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 73 63 72 6f 6c 6c 63 6f 6e 74 65 6e 74 2e 73 65 74 yout().........scrollcontent.set
ba60 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 Layout(layout)..................
ba80 74 69 74 6c 65 5f 6c 61 79 6f 75 74 20 3d 20 49 6d 61 67 65 54 69 74 6c 65 4c 61 79 6f 75 74 28 title_layout.=.ImageTitleLayout(
baa0 4e 4f 54 45 53 5f 49 43 4f 4e 2c 20 5f 28 27 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 20 4f 70 74 NOTES_ICON,._('Notes.Cleaner.Opt
bac0 69 6f 6e 73 27 29 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 4c 61 79 6f 75 74 ions')).........layout.addLayout
bae0 28 74 69 74 6c 65 5f 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 (title_layout)..................
bb00 70 72 65 66 73 20 3d 20 50 52 45 46 53 5b 4b 45 59 2e 4e 4f 54 45 53 5f 53 45 54 54 49 4e 47 53 prefs.=.PREFS[KEY.NOTES_SETTINGS
bb20 5d 2e 63 6f 70 79 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 2d 2d 2d 20 ].copy()..................#.---.
bb40 6f 70 74 69 6f 6e 73 20 2d 2d 2d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6f 70 74 69 6f 6e 73 options.---.........self.options
bb60 20 3d 20 43 6f 6d 6d 6f 6e 4f 70 74 69 6f 6e 73 28 70 72 65 66 73 2c 20 70 61 72 65 6e 74 3d 73 .=.CommonOptions(prefs,.parent=s
bb80 65 6c 66 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 73 65 elf).........layout.addWidget(se
bba0 6c 66 2e 6f 70 74 69 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 2d lf.options)..................#.-
bbc0 2d 2d 20 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 20 2d 2d 2d 0a 20 20 20 20 20 20 --.Keyboard.shortcuts.---.......
bbe0 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 51 4c 61 62 65 6c 28 27 20 27 2c 20 73 ..layout.addWidget(QLabel('.',.s
bc00 65 6c 66 29 29 0a 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 20 3d 20 51 48 elf)).........button_layout.=.QH
bc20 42 6f 78 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 4c 61 BoxLayout().........layout.addLa
bc40 79 6f 75 74 28 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 62 75 74 74 yout(button_layout).........butt
bc60 6f 6e 5f 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 4b 65 79 62 6f 61 72 64 43 6f 6e 66 on_layout.addWidget(KeyboardConf
bc80 69 67 44 69 61 6c 6f 67 42 75 74 74 6f 6e 28 70 61 72 65 6e 74 3d 73 65 6c 66 29 29 0a 20 20 20 igDialogButton(parent=self))....
bca0 20 20 20 20 20 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 2e 61 64 64 53 74 72 65 74 63 68 28 2d 31 .....button_layout.addStretch(-1
bcc0 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 53 74 72 65 74 63 68 28 2d 31 29 0a ).........layout.addStretch(-1).
bce0 20 20 20 20 0a 20 20 20 20 64 65 66 20 61 63 63 65 70 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 .........def.accept(self):......
bd00 20 20 20 77 69 74 68 20 50 52 45 46 53 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 66 73 ...with.PREFS:.............prefs
bd20 20 3d 20 73 65 6c 66 2e 6f 70 74 69 6f 6e 73 2e 67 65 74 5f 6f 70 74 69 6f 6e 28 29 0a 20 20 20 .=.self.options.get_option()....
bd40 20 20 20 20 20 20 20 20 20 50 52 45 46 53 5b 4b 45 59 2e 4e 4f 54 45 53 5f 53 45 54 54 49 4e 47 .........PREFS[KEY.NOTES_SETTING
bd60 53 5d 2e 75 70 64 61 74 65 28 70 72 65 66 73 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 S].update(prefs)................
bd80 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 27 4e 6f 74 65 73 20 73 65 74 74 69 6e 67 73 3a 27 2c ..debug_print('Notes.settings:',
bda0 20 70 72 65 66 73 2c 20 27 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 2e 61 63 63 .prefs,.'\n').........Dialog.acc
bdc0 65 70 74 28 73 65 6c 66 29 0a 0a 0a 63 6c 61 73 73 20 53 65 6c 65 63 74 4e 6f 74 65 73 44 69 61 ept(self)...class.SelectNotesDia
bde0 6c 6f 67 28 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 log(Dialog):.....def.__init__(se
be00 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 3d 5b 5d 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 lf,.book_ids=[]):.........self.b
be20 6f 6f 6b 5f 69 64 73 20 3d 20 62 6f 6f 6b 5f 69 64 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e ook_ids.=.book_ids.........self.
be40 73 65 6c 65 63 74 65 64 5f 6e 6f 74 65 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 selected_notes.=.{}.............
be60 20 20 20 20 20 44 69 61 6c 6f 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 0a 20 20 20 20 20 .....Dialog.__init__(self,......
be80 20 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 27 53 65 6c 65 63 74 20 4e 6f 74 65 73 20 74 6f 20 .......title=_('Select.Notes.to.
bea0 63 6c 65 61 6e 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 70 6c 75 67 69 clean'),.............name='plugi
bec0 6e 20 63 6f 6e 66 69 67 20 64 69 61 6c 6f 67 3a 55 73 65 72 20 41 63 74 69 6f 6e 20 49 6e 74 65 n.config.dialog:User.Action.Inte
bee0 72 66 61 63 65 3a 53 65 6c 65 63 74 20 4e 6f 74 65 73 20 74 6f 20 63 6c 65 61 6e 27 2c 0a 20 20 rface:Select.Notes.to.clean',...
bf00 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3d 47 55 49 2c 0a 20 20 20 20 20 20 20 20 29 0a ..........parent=GUI,.........).
bf20 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 74 75 70 5f 75 69 28 73 65 6c 66 29 3a 0a 20 20 20 .........def.setup_ui(self):....
bf40 20 20 20 20 20 6c 61 79 6f 75 74 20 3d 20 51 56 42 6f 78 4c 61 79 6f 75 74 28 73 65 6c 66 29 0a .....layout.=.QVBoxLayout(self).
bf60 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 72 65 65 5f 76 69 65 77 20 .................self.tree_view.
bf80 3d 20 53 65 6c 65 63 74 4e 6f 74 65 73 57 69 64 67 65 74 28 62 6f 6f 6b 5f 69 64 73 3d 73 65 6c =.SelectNotesWidget(book_ids=sel
bfa0 66 2e 62 6f 6f 6b 5f 69 64 73 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 f.book_ids).........layout.addWi
bfc0 64 67 65 74 28 73 65 6c 66 2e 74 72 65 65 5f 76 69 65 77 29 0a 20 20 20 20 20 20 20 20 73 65 6c dget(self.tree_view).........sel
bfe0 66 2e 74 72 65 65 5f 76 69 65 77 2e 75 70 64 61 74 65 5f 74 65 78 74 73 28 0a 20 20 20 20 20 20 f.tree_view.update_texts(.......
c000 20 20 20 20 20 20 74 6f 6f 6c 74 69 70 3d 5f 28 27 53 75 62 73 65 74 20 6f 66 20 4e 6f 74 65 73 ......tooltip=_('Subset.of.Notes
c020 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 73 65 6c 65 .associate.to.the.currently.sele
c040 63 74 65 64 20 62 6f 6f 6b 73 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7a 65 72 6f 5f 62 cted.books'),.............zero_b
c060 6f 6f 6b 3d 5f 28 27 4e 6f 20 62 6f 6f 6b 73 20 73 65 6c 65 63 74 65 64 27 29 2c 0a 20 20 20 20 ook=_('No.books.selected'),.....
c080 20 20 20 20 20 20 20 20 7a 65 72 6f 5f 76 61 6c 75 65 73 3d 5f 28 27 4e 6f 20 6e 6f 74 65 73 20 ........zero_values=_('No.notes.
c0a0 66 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 27 29 2c 0a 20 20 20 20 20 for.{:d}.selected.books'),......
c0c0 20 20 20 20 20 20 20 68 61 73 5f 62 6f 6f 6b 5f 76 61 6c 75 65 73 3d 5f 28 27 4e 6f 74 65 73 20 .......has_book_values=_('Notes.
c0e0 66 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 27 29 2c 0a 20 20 20 20 20 for.{:d}.selected.books'),......
c100 20 20 20 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 5f 6c 61 79 ...)..................button_lay
c120 6f 75 74 20 3d 20 51 48 42 6f 78 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f out.=.QHBoxLayout().........layo
c140 75 74 2e 61 64 64 4c 61 79 6f 75 74 28 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 29 0a 20 20 20 20 ut.addLayout(button_layout).....
c160 20 20 20 20 0a 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 2e 61 64 64 57 69 .............button_layout.addWi
c180 64 67 65 74 28 4e 6f 74 65 43 6f 6e 66 69 67 44 69 61 6c 6f 67 42 75 74 74 6f 6e 28 73 65 6c 66 dget(NoteConfigDialogButton(self
c1a0 29 29 0a 20 20 20 20 20 20 20 20 62 75 74 74 6f 6e 5f 6c 61 79 6f 75 74 2e 61 64 64 53 74 72 65 )).........button_layout.addStre
c1c0 74 63 68 28 2d 31 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e tch(-1)..................layout.
c1e0 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 62 62 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 addWidget(self.bb)..........def.
c200 61 63 63 65 70 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 6c 65 63 accept(self):.........self.selec
c220 74 65 64 5f 6e 6f 74 65 73 20 3d 20 73 65 6c 66 2e 74 72 65 65 5f 76 69 65 77 2e 67 65 74 5f 73 ted_notes.=.self.tree_view.get_s
c240 65 6c 65 63 74 65 64 28 29 0a 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 2e 61 63 63 65 70 74 28 elected().........Dialog.accept(
c260 73 65 6c 66 29 0a 50 4b 03 04 14 00 00 00 00 00 f2 76 35 5c fd bd 42 c8 be 31 00 00 be 31 00 00 self).PK.........v5\..B..1...1..
c280 09 00 00 00 61 63 74 69 6f 6e 2e 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 ....action.py#!/usr/bin/env.pyth
c2a0 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f 63 on..__license__...=.'GPL.v3'.__c
c2c0 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 32 30 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e opyright__.=.'2020,.un_pogaz.<un
c2e0 2e 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 6c 6f .pogaz@gmail.com>'...try:.....lo
c300 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 ad_translations().except.NameErr
c320 6f 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e or:.....pass..#.load_translation
c340 73 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a 0a 66 72 6f 6d 20 63 s().added.in.calibre.1.9..from.c
c360 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 64 65 66 61 75 6c 74 64 69 63 74 0a 66 72 ollections.import.defaultdict.fr
c380 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 4c 69 73 74 0a 0a 74 72 79 3a 0a 20 20 20 20 om.typing.import.List..try:.....
c3a0 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 69 6d 70 6f 72 74 20 51 4d 65 6e 75 2c 20 51 54 69 6d 65 from.qt.core.import.QMenu,.QTime
c3c0 72 2c 20 51 54 6f 6f 6c 42 75 74 74 6f 6e 0a 65 78 63 65 70 74 20 49 6d 70 6f 72 74 45 72 72 6f r,.QToolButton.except.ImportErro
c3e0 72 3a 0a 20 20 20 20 66 72 6f 6d 20 50 79 51 74 35 2e 51 74 20 69 6d 70 6f 72 74 20 51 4d 65 6e r:.....from.PyQt5.Qt.import.QMen
c400 75 2c 20 51 54 69 6d 65 72 2c 20 51 54 6f 6f 6c 42 75 74 74 6f 6e 0a 0a 66 72 6f 6d 20 63 61 6c u,.QTimer,.QToolButton..from.cal
c420 69 62 72 65 2e 67 75 69 32 2e 61 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 49 6e 74 65 72 66 61 ibre.gui2.actions.import.Interfa
c440 63 65 41 63 74 69 6f 6e 0a 0a 66 72 6f 6d 20 2e 63 6f 6d 6d 65 6e 74 73 5f 63 6c 65 61 6e 65 72 ceAction..from..comments_cleaner
c460 20 69 6d 70 6f 72 74 20 63 6c 65 61 6e 5f 63 6f 6d 6d 65 6e 74 2c 20 6e 6f 72 6d 61 6c 69 7a 65 .import.clean_comment,.normalize
c480 5f 63 6f 6d 6d 65 6e 74 0a 66 72 6f 6d 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 20 69 6d 70 6f _comment.from..common_utils.impo
c4a0 72 74 20 47 55 49 2c 20 50 4c 55 47 49 4e 5f 4e 41 4d 45 2c 20 64 65 62 75 67 5f 70 72 69 6e 74 rt.GUI,.PLUGIN_NAME,.debug_print
c4c0 2c 20 67 65 74 5f 69 63 6f 6e 0a 66 72 6f 6d 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 63 6f ,.get_icon.from..common_utils.co
c4e0 6c 75 6d 6e 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 68 74 6d 6c 0a 66 72 6f 6d 20 2e 63 6f 6d 6d lumns.import.get_html.from..comm
c500 6f 6e 5f 75 74 69 6c 73 2e 64 69 61 6c 6f 67 73 20 69 6d 70 6f 72 74 20 50 72 6f 67 72 65 73 73 on_utils.dialogs.import.Progress
c520 44 69 61 6c 6f 67 2c 20 63 75 73 74 6f 6d 5f 65 78 63 65 70 74 69 6f 6e 5f 64 69 61 6c 6f 67 0a Dialog,.custom_exception_dialog.
c540 66 72 6f 6d 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 6c 69 62 72 61 72 79 73 20 69 6d 70 6f from..common_utils.librarys.impo
c560 72 74 20 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 73 65 6c 65 63 74 65 64 0a 66 72 6f 6d 20 2e 63 6f rt.get_BookIds_selected.from..co
c580 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 6d 65 6e 75 73 20 69 6d 70 6f 72 74 20 63 72 65 61 74 65 5f 6d mmon_utils.menus.import.create_m
c5a0 65 6e 75 5f 61 63 74 69 6f 6e 5f 75 6e 69 71 75 65 0a 66 72 6f 6d 20 2e 63 6f 6e 66 69 67 20 69 enu_action_unique.from..config.i
c5c0 6d 70 6f 72 74 20 43 41 4c 49 42 52 45 5f 48 41 53 5f 4e 4f 54 45 53 2c 20 4b 45 59 2c 20 4e 4f mport.CALIBRE_HAS_NOTES,.KEY,.NO
c5e0 54 45 53 5f 49 43 4f 4e 2c 20 50 4c 55 47 49 4e 5f 49 43 4f 4e 2c 20 50 52 45 46 53 2c 20 53 65 TES_ICON,.PLUGIN_ICON,.PREFS,.Se
c600 6c 65 63 74 4e 6f 74 65 73 44 69 61 6c 6f 67 0a 0a 0a 63 6c 61 73 73 20 43 6f 6d 6d 65 6e 74 73 lectNotesDialog...class.Comments
c620 43 6c 65 61 6e 65 72 41 63 74 69 6f 6e 28 49 6e 74 65 72 66 61 63 65 41 63 74 69 6f 6e 29 3a 0a CleanerAction(InterfaceAction):.
c640 20 20 20 20 0a 20 20 20 20 6e 61 6d 65 20 3d 20 50 4c 55 47 49 4e 5f 4e 41 4d 45 0a 20 20 20 20 .........name.=.PLUGIN_NAME.....
c660 23 20 43 72 65 61 74 65 20 6f 75 72 20 74 6f 70 2d 6c 65 76 65 6c 20 6d 65 6e 75 2f 74 6f 6f 6c #.Create.our.top-level.menu/tool
c680 62 61 72 20 61 63 74 69 6f 6e 20 28 74 65 78 74 2c 20 69 63 6f 6e 5f 70 61 74 68 2c 20 74 6f 6f bar.action.(text,.icon_path,.too
c6a0 6c 74 69 70 2c 20 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 29 0a 20 20 20 20 61 63 74 ltip,.keyboard.shortcut).....act
c6c0 69 6f 6e 5f 73 70 65 63 20 3d 20 28 50 4c 55 47 49 4e 5f 4e 41 4d 45 2c 20 4e 6f 6e 65 2c 20 5f ion_spec.=.(PLUGIN_NAME,.None,._
c6e0 28 27 52 65 6d 6f 76 65 20 74 68 65 20 73 63 72 61 70 73 20 43 53 53 20 69 6e 20 48 54 4d 4c 20 ('Remove.the.scraps.CSS.in.HTML.
c700 63 6f 6d 6d 65 6e 74 73 27 29 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 70 6f 70 75 70 5f 74 79 70 65 comments'),.None).....popup_type
c720 20 3d 20 51 54 6f 6f 6c 42 75 74 74 6f 6e 2e 4d 65 6e 75 42 75 74 74 6f 6e 50 6f 70 75 70 0a 20 .=.QToolButton.MenuButtonPopup..
c740 20 20 20 61 63 74 69 6f 6e 5f 74 79 70 65 20 3d 20 27 63 75 72 72 65 6e 74 27 0a 20 20 20 20 64 ...action_type.=.'current'.....d
c760 6f 6e 74 5f 61 64 64 5f 74 6f 20 3d 20 66 72 6f 7a 65 6e 73 65 74 28 5b 27 63 6f 6e 74 65 78 74 ont_add_to.=.frozenset(['context
c780 2d 6d 65 6e 75 2d 64 65 76 69 63 65 27 5d 29 0a 20 20 20 20 61 63 63 65 70 74 73 5f 64 72 6f 70 -menu-device']).....accepts_drop
c7a0 73 20 3d 20 54 72 75 65 0a 0a 20 20 20 20 64 65 66 20 67 65 6e 65 73 69 73 28 73 65 6c 66 29 3a s.=.True......def.genesis(self):
c7c0 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 65 6e 75 20 3d 20 51 4d 65 6e 75 28 47 55 49 29 0a .........self.menu.=.QMenu(GUI).
c7e0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 71 61 63 74 69 6f 6e 2e 73 65 74 4d 65 6e 75 28 73 65 6c ........self.qaction.setMenu(sel
c800 66 2e 6d 65 6e 75 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 71 61 63 74 69 6f 6e 2e 73 65 74 f.menu).........self.qaction.set
c820 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 50 4c 55 47 49 4e 5f 49 43 4f 4e 29 29 0a 20 20 20 20 Icon(get_icon(PLUGIN_ICON)).....
c840 20 20 20 20 73 65 6c 66 2e 71 61 63 74 69 6f 6e 2e 74 72 69 67 67 65 72 65 64 2e 63 6f 6e 6e 65 ....self.qaction.triggered.conne
c860 63 74 28 73 65 6c 66 2e 74 6f 6f 6c 62 61 72 5f 74 72 69 67 67 65 72 65 64 29 0a 20 20 20 20 20 ct(self.toolbar_triggered)......
c880 20 20 20 73 65 6c 66 2e 72 65 62 75 69 6c 64 5f 6d 65 6e 75 73 28 29 0a 20 20 20 20 0a 20 20 20 ...self.rebuild_menus().........
c8a0 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 5f 63 6f 6d 70 6c 65 74 65 28 73 65 6c .def.initialization_complete(sel
c8c0 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 f):.........return..........def.
c8e0 72 65 62 75 69 6c 64 5f 6d 65 6e 75 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 6d 20 3d rebuild_menus(self):.........m.=
c900 20 73 65 6c 66 2e 6d 65 6e 75 0a 20 20 20 20 20 20 20 20 6d 2e 63 6c 65 61 72 28 29 0a 20 20 20 .self.menu.........m.clear()....
c920 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 63 72 65 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e ..............create_menu_action
c940 5f 75 6e 69 71 75 65 28 73 65 6c 66 2c 20 6d 2c 20 5f 28 27 43 6c 65 61 6e 20 74 68 65 20 73 65 _unique(self,.m,._('Clean.the.se
c960 6c 65 63 74 65 64 20 26 63 6f 6d 6d 65 6e 74 73 27 29 2c 20 50 4c 55 47 49 4e 5f 49 43 4f 4e 2c lected.&comments'),.PLUGIN_ICON,
c980 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
c9a0 20 20 20 20 20 20 20 20 20 74 72 69 67 67 65 72 65 64 3d 73 65 6c 66 2e 63 6c 65 61 6e 5f 63 6f .........triggered=self.clean_co
c9c0 6d 6d 65 6e 74 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 mments,.........................
c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 69 71 75 65 5f 6e 61 6d 65 3d 27 43 6c 65 ................unique_name='Cle
ca00 61 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 26 63 6f 6d 6d 65 6e 74 73 27 29 0a 20 20 20 20 an.the.selected.&comments').....
ca20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 43 41 4c 49 42 52 45 5f 48 41 53 5f 4e 4f 54 45 .............if.CALIBRE_HAS_NOTE
ca40 53 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 72 65 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 6f S:.............create_menu_actio
ca60 6e 5f 75 6e 69 71 75 65 28 73 65 6c 66 2c 20 6d 2c 20 5f 28 27 43 6c 65 61 6e 20 63 61 74 65 67 n_unique(self,.m,._('Clean.categ
ca80 6f 72 79 20 26 6e 6f 74 65 73 27 29 2c 20 4e 4f 54 45 53 5f 49 43 4f 4e 2c 0a 20 20 20 20 20 20 ory.&notes'),.NOTES_ICON,.......
caa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
cac0 20 20 74 72 69 67 67 65 72 65 64 3d 73 65 6c 66 2e 63 6c 65 61 6e 5f 6e 6f 74 65 73 2c 0a 20 20 ..triggered=self.clean_notes,...
cae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
cb00 20 20 20 20 20 20 75 6e 69 71 75 65 5f 6e 61 6d 65 3d 27 43 6c 65 61 6e 20 63 61 74 65 67 6f 72 ......unique_name='Clean.categor
cb20 79 20 26 6e 6f 74 65 73 27 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 y.&notes')..................self
cb40 2e 6d 65 6e 75 2e 61 64 64 53 65 70 61 72 61 74 6f 72 28 29 0a 20 20 20 20 20 20 20 20 63 72 65 .menu.addSeparator().........cre
cb60 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 5f 75 6e 69 71 75 65 28 73 65 6c 66 2c 20 6d 2c 20 ate_menu_action_unique(self,.m,.
cb80 5f 28 27 26 43 75 73 74 6f 6d 69 7a 65 20 70 6c 75 67 69 6e e2 80 a6 27 29 2c 20 27 63 6f 6e 66 _('&Customize.plugin...'),.'conf
cba0 69 67 2e 70 6e 67 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ig.png',........................
cbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 69 67 67 65 72 65 64 3d 73 65 6c 66 2e .................triggered=self.
cbe0 73 68 6f 77 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 show_configuration,.............
cc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 69 71 ............................uniq
cc20 75 65 5f 6e 61 6d 65 3d 27 26 43 75 73 74 6f 6d 69 7a 65 20 70 6c 75 67 69 6e 27 2c 0a 20 20 20 ue_name='&Customize.plugin',....
cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
cc60 20 20 20 20 20 73 68 6f 72 74 63 75 74 3d 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 .....shortcut=False)............
cc80 20 20 20 20 20 20 47 55 49 2e 6b 65 79 62 6f 61 72 64 2e 66 69 6e 61 6c 69 7a 65 28 29 0a 20 20 ......GUI.keyboard.finalize()...
cca0 20 20 0a 20 20 20 20 64 65 66 20 74 6f 6f 6c 62 61 72 5f 74 72 69 67 67 65 72 65 64 28 73 65 6c .......def.toolbar_triggered(sel
ccc0 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 61 6e 5f 63 6f 6d 6d 65 6e 74 73 28 f):.........self.clean_comments(
cce0 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 68 6f 77 5f 63 6f 6e 66 69 67 75 72 61 74 69 6f )..........def.show_configuratio
cd00 6e 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 74 65 72 66 61 63 65 5f n(self):.........self.interface_
cd20 61 63 74 69 6f 6e 5f 62 61 73 65 5f 70 6c 75 67 69 6e 2e 64 6f 5f 75 73 65 72 5f 63 6f 6e 66 69 action_base_plugin.do_user_confi
cd40 67 28 47 55 49 29 0a 20 20 20 20 0a 20 20 20 20 6d 69 6d 65 20 3d 20 27 61 70 70 6c 69 63 61 74 g(GUI)..........mime.=.'applicat
cd60 69 6f 6e 2f 63 61 6c 69 62 72 65 2b 66 72 6f 6d 5f 6c 69 62 72 61 72 79 27 0a 20 20 20 20 0a 20 ion/calibre+from_library'.......
cd80 20 20 20 64 65 66 20 61 63 63 65 70 74 5f 65 6e 74 65 72 5f 65 76 65 6e 74 28 73 65 6c 66 2c 20 ...def.accept_enter_event(self,.
cda0 65 76 65 6e 74 2c 20 6d 69 6d 65 5f 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6d 69 event,.mime_data):.........if.mi
cdc0 6d 65 5f 64 61 74 61 2e 68 61 73 46 6f 72 6d 61 74 28 73 65 6c 66 2e 6d 69 6d 65 29 3a 0a 20 20 me_data.hasFormat(self.mime):...
cde0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 72 65 ..........return.True.........re
ce00 74 75 72 6e 20 46 61 6c 73 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 61 63 63 65 70 74 5f 64 turn.False..........def.accept_d
ce20 72 61 67 5f 6d 6f 76 65 5f 65 76 65 6e 74 28 73 65 6c 66 2c 20 65 76 65 6e 74 2c 20 6d 69 6d 65 rag_move_event(self,.event,.mime
ce40 5f 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6d 69 6d 65 5f 64 61 74 61 2e 68 61 73 _data):.........if.mime_data.has
ce60 46 6f 72 6d 61 74 28 73 65 6c 66 2e 6d 69 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 Format(self.mime):.............r
ce80 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a eturn.True.........return.False.
cea0 20 20 20 20 0a 20 20 20 20 64 65 66 20 64 72 6f 70 5f 65 76 65 6e 74 28 73 65 6c 66 2c 20 65 76 .........def.drop_event(self,.ev
cec0 65 6e 74 2c 20 6d 69 6d 65 5f 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6d 69 6d 65 ent,.mime_data):.........if.mime
cee0 5f 64 61 74 61 2e 68 61 73 46 6f 72 6d 61 74 28 73 65 6c 66 2e 6d 69 6d 65 29 3a 0a 20 20 20 20 _data.hasFormat(self.mime):.....
cf00 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 72 6f 70 70 65 64 5f 69 64 73 20 3d 20 74 75 70 6c 65 ........self.dropped_ids.=.tuple
cf20 28 6d 61 70 28 69 6e 74 2c 20 6d 69 6d 65 5f 64 61 74 61 2e 64 61 74 61 28 73 65 6c 66 2e 6d 69 (map(int,.mime_data.data(self.mi
cf40 6d 65 29 2e 64 61 74 61 28 29 2e 73 70 6c 69 74 28 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 me).data().split()))............
cf60 20 51 54 69 6d 65 72 2e 73 69 6e 67 6c 65 53 68 6f 74 28 31 2c 20 73 65 6c 66 2e 64 6f 5f 64 72 .QTimer.singleShot(1,.self.do_dr
cf80 6f 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 op).............return.True.....
cfa0 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 64 6f ....return.False..........def.do
cfc0 5f 64 72 6f 70 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 62 6f 6f 6b 5f 69 64 73 20 3d 20 _drop(self):.........book_ids.=.
cfe0 73 65 6c 66 2e 64 72 6f 70 70 65 64 5f 69 64 73 0a 20 20 20 20 20 20 20 20 64 65 6c 20 73 65 6c self.dropped_ids.........del.sel
d000 66 2e 64 72 6f 70 70 65 64 5f 69 64 73 0a 20 20 20 20 20 20 20 20 69 66 20 62 6f 6f 6b 5f 69 64 f.dropped_ids.........if.book_id
d020 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 6c 65 61 6e 5f 63 6f 6d 6d 65 s:.............self._clean_comme
d040 6e 74 73 28 62 6f 6f 6b 5f 69 64 73 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 63 6c 65 61 6e nts(book_ids)..........def.clean
d060 5f 63 6f 6d 6d 65 6e 74 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 _comments(self):.........self._c
d080 6c 65 61 6e 5f 63 6f 6d 6d 65 6e 74 73 28 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 73 65 6c 65 63 74 lean_comments(get_BookIds_select
d0a0 65 64 28 73 68 6f 77 5f 65 72 72 6f 72 3d 54 72 75 65 29 29 0a 20 20 20 20 0a 20 20 20 20 64 65 ed(show_error=True))..........de
d0c0 66 20 63 6c 65 61 6e 5f 6e 6f 74 65 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c f.clean_notes(self):.........sel
d0e0 66 2e 5f 63 6c 65 61 6e 5f 6e 6f 74 65 73 28 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 73 65 6c 65 63 f._clean_notes(get_BookIds_selec
d100 74 65 64 28 73 68 6f 77 5f 65 72 72 6f 72 3d 46 61 6c 73 65 29 29 0a 20 20 20 20 0a 20 20 20 20 ted(show_error=False))..........
d120 64 65 66 20 5f 63 6c 65 61 6e 5f 63 6f 6d 6d 65 6e 74 73 28 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 def._clean_comments(self,.book_i
d140 64 73 3a 20 4c 69 73 74 5b 69 6e 74 5d 29 3a 0a 20 20 20 20 20 20 20 20 43 6c 65 61 6e 65 72 50 ds:.List[int]):.........CleanerP
d160 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 28 62 6f 6f 6b 5f 69 64 73 29 0a 20 20 20 20 0a 20 20 20 rogressDialog(book_ids).........
d180 20 64 65 66 20 5f 63 6c 65 61 6e 5f 6e 6f 74 65 73 28 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 .def._clean_notes(self,.book_ids
d1a0 3a 20 4c 69 73 74 5b 69 6e 74 5d 29 3a 0a 20 20 20 20 20 20 20 20 64 20 3d 20 53 65 6c 65 63 74 :.List[int]):.........d.=.Select
d1c0 4e 6f 74 65 73 44 69 61 6c 6f 67 28 62 6f 6f 6b 5f 69 64 73 29 0a 20 20 20 20 20 20 20 20 69 66 NotesDialog(book_ids).........if
d1e0 20 64 2e 65 78 65 63 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 73 5f 6c 73 74 .d.exec():.............notes_lst
d200 20 3d 20 64 2e 73 65 6c 65 63 74 65 64 5f 6e 6f 74 65 73 0a 20 20 20 20 20 20 20 20 65 6c 73 65 .=.d.selected_notes.........else
d220 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 27 43 6c 65 61 6e :.............debug_print('Clean
d240 69 6e 67 20 6e 6f 74 65 73 20 61 62 6f 72 74 65 64 2e 20 53 65 6c 65 63 74 69 6f 6e 20 64 69 61 ing.notes.aborted..Selection.dia
d260 6c 6f 67 20 63 6c 6f 73 65 64 2e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e log.closed.').............return
d280 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 43 6c 65 61 6e 65 72 4e 6f 74 65 50 72 6f ..................CleanerNotePro
d2a0 67 72 65 73 73 44 69 61 6c 6f 67 28 6e 6f 74 65 73 5f 6c 73 74 29 0a 0a 0a 64 65 66 20 64 65 62 gressDialog(notes_lst)...def.deb
d2c0 75 67 5f 74 65 78 74 28 70 72 65 2c 20 74 65 78 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 64 65 62 ug_text(pre,.text=None):.....deb
d2e0 75 67 5f 70 72 69 6e 74 28 70 72 65 2b 27 3a 3a 3a 27 29 0a 20 20 20 20 69 66 20 74 65 78 74 3a ug_print(pre+':::').....if.text:
d300 0a 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 74 65 78 74 2c 20 70 72 65 3d 4e .........debug_print(text,.pre=N
d320 6f 6e 65 29 0a 20 20 20 20 70 72 69 6e 74 28 29 0a 0a 0a 63 6c 61 73 73 20 43 6c 65 61 6e 65 72 one).....print()...class.Cleaner
d340 50 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 28 50 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 29 3a 0a ProgressDialog(ProgressDialog):.
d360 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 74 75 70 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 .........def.setup_progress(self
d380 2c 20 2a 2a 6b 76 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 ,.**kvargs):..................se
d3a0 6c 66 2e 75 73 65 64 5f 70 72 65 66 73 20 3d 20 50 52 45 46 53 2e 63 6f 70 79 28 29 0a 20 20 20 lf.used_prefs.=.PREFS.copy()....
d3c0 20 20 20 20 20 73 65 6c 66 2e 75 73 65 64 5f 70 72 65 66 73 2e 70 6f 70 28 4b 45 59 2e 4e 4f 54 .....self.used_prefs.pop(KEY.NOT
d3e0 45 53 5f 53 45 54 54 49 4e 47 53 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 ES_SETTINGS,.None)..............
d400 20 20 20 20 23 20 62 6f 6f 6b 20 63 6f 6d 6d 65 6e 74 20 6d 61 70 0a 20 20 20 20 20 20 20 20 73 ....#.book.comment.map.........s
d420 65 6c 66 2e 62 6f 6f 6b 73 5f 63 6f 6d 6d 65 6e 74 73 5f 6d 61 70 20 3d 20 7b 27 63 6f 6d 6d 65 elf.books_comments_map.=.{'comme
d440 6e 74 73 27 3a 7b 7d 7d 0a 20 20 20 20 20 20 20 20 23 20 62 6f 6f 6b 20 63 75 73 74 6f 6d 20 63 nts':{}}.........#.book.custom.c
d460 6f 6c 75 6d 6e 73 20 64 69 63 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 75 73 65 64 5f olumns.dic.........if.self.used_
d480 70 72 65 66 73 5b 4b 45 59 2e 43 55 53 54 4f 4d 5f 43 4f 4c 55 4d 4e 5d 3a 0a 20 20 20 20 20 20 prefs[KEY.CUSTOM_COLUMN]:.......
d4a0 20 20 20 20 20 20 73 65 6c 66 2e 62 6f 6f 6b 73 5f 63 6f 6d 6d 65 6e 74 73 5f 6d 61 70 2e 75 70 ......self.books_comments_map.up
d4c0 64 61 74 65 28 7b 63 63 3a 7b 7d 20 66 6f 72 20 63 63 20 69 6e 20 67 65 74 5f 68 74 6d 6c 28 54 date({cc:{}.for.cc.in.get_html(T
d4e0 72 75 65 29 7d 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 43 6f 75 6e 74 20 rue)})..................#.Count.
d500 6f 66 20 63 6c 65 61 6e 65 64 20 63 6f 6d 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 of.cleaned.comments.........self
d520 2e 62 6f 6f 6b 73 5f 63 6c 65 61 6e 20 3d 20 30 0a 20 20 20 20 20 20 20 20 23 20 45 78 63 65 70 .books_clean.=.0.........#.Excep
d540 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 78 63 65 70 74 69 6f 6e 20 3d 20 4e 6f tion.........self.exception.=.No
d560 6e 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 65 6e 64 5f 70 72 6f 67 72 65 73 73 28 73 65 6c ne..........def.end_progress(sel
d580 66 29 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 77 61 73 f):..................if.self.was
d5a0 43 61 6e 63 65 6c 65 64 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 Canceled():.............debug_pr
d5c0 69 6e 74 28 27 43 6c 65 61 6e 69 6e 67 20 63 6f 6d 6d 65 6e 74 73 20 61 73 20 63 61 6e 63 65 6c int('Cleaning.comments.as.cancel
d5e0 6c 65 64 2e 20 4e 6f 20 63 68 61 6e 67 65 2e 27 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 led..No.change.').........elif.s
d600 65 6c 66 2e 65 78 63 65 70 74 69 6f 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 elf.exception:.............debug
d620 5f 70 72 69 6e 74 28 27 43 6c 65 61 6e 69 6e 67 20 63 6f 6d 6d 65 6e 74 73 20 61 73 20 63 61 6e _print('Cleaning.comments.as.can
d640 63 65 6c 6c 65 64 2e 20 41 6e 20 65 78 63 65 70 74 69 6f 6e 20 68 61 73 20 6f 63 63 75 72 72 65 celled..An.exception.has.occurre
d660 64 3a 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 73 65 6c d:').............debug_print(sel
d680 66 2e 65 78 63 65 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 75 73 74 6f 6d 5f f.exception).............custom_
d6a0 65 78 63 65 70 74 69 6f 6e 5f 64 69 61 6c 6f 67 28 73 65 6c 66 2e 65 78 63 65 70 74 69 6f 6e 29 exception_dialog(self.exception)
d6c0 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 .........else:.............debug
d6e0 5f 70 72 69 6e 74 28 27 53 65 74 74 69 6e 67 73 3a 27 2c 20 73 65 6c 66 2e 75 73 65 64 5f 70 72 _print('Settings:',.self.used_pr
d700 65 66 73 2c 20 27 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 efs,.'\n').............debug_pri
d720 6e 74 28 66 27 43 6c 65 61 6e 69 6e 67 20 6c 61 75 6e 63 68 65 64 20 66 6f 72 20 7b 73 65 6c 66 nt(f'Cleaning.launched.for.{self
d740 2e 62 6f 6f 6b 5f 63 6f 75 6e 74 7d 20 62 6f 6f 6b 73 2e 27 29 0a 20 20 20 20 20 20 20 20 20 20 .book_count}.books.')...........
d760 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 66 27 43 6c 65 61 6e 69 6e 67 20 70 65 72 66 6f 72 6d ..debug_print(f'Cleaning.perform
d780 65 64 20 66 6f 72 20 7b 73 65 6c 66 2e 62 6f 6f 6b 73 5f 63 6c 65 61 6e 7d 20 63 6f 6d 6d 65 6e ed.for.{self.books_clean}.commen
d7a0 74 73 2e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 66 27 ts.').............debug_print(f'
d7c0 43 6c 65 61 6e 69 6e 67 20 65 78 65 63 75 74 65 20 69 6e 20 7b 73 65 6c 66 2e 74 69 6d 65 5f 65 Cleaning.execute.in.{self.time_e
d7e0 78 65 63 75 74 3a 30 2e 33 66 7d 20 73 65 63 6f 6e 64 73 2e 5c 6e 27 29 0a 20 20 20 20 0a 20 20 xecut:0.3f}.seconds.\n')........
d800 20 20 64 65 66 20 6a 6f 62 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 ..def.job_progress(self):.......
d820 20 20 0a 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 66 27 4c 61 75 6e 63 68 20 ...........debug_print(f'Launch.
d840 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 20 66 6f 72 20 7b 73 65 6c 66 2e 62 6f 6f 6b 5f Comments.Cleaner.for.{self.book_
d860 63 6f 75 6e 74 7d 20 62 6f 6f 6b 73 2e 27 29 0a 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 count}.books.').........debug_pr
d880 69 6e 74 28 73 65 6c 66 2e 75 73 65 64 5f 70 72 65 66 73 29 0a 20 20 20 20 20 20 20 20 70 72 69 int(self.used_prefs).........pri
d8a0 6e 74 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 nt()..................try:......
d8c0 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 62 6f 6f 6b 5f 69 64 20 ....................for.book_id.
d8e0 69 6e 20 73 65 6c 66 2e 62 6f 6f 6b 5f 69 64 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in.self.book_ids:...............
d900 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 77 61 73 43 61 ...................if.self.wasCa
d920 6e 63 65 6c 65 64 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 nceled():.....................re
d940 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 turn............................
d960 20 20 20 20 20 20 23 20 75 70 64 61 74 65 20 50 72 6f 67 72 65 73 73 0a 20 20 20 20 20 20 20 20 ......#.update.Progress.........
d980 20 20 20 20 20 20 20 20 6e 75 6d 20 3d 20 73 65 6c 66 2e 69 6e 63 72 65 6d 65 6e 74 28 29 0a 20 ........num.=.self.increment()..
d9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
d9c0 23 20 67 65 74 20 74 68 65 20 63 6f 6d 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #.get.the.comment...............
d9e0 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 41 20 3d 20 73 65 6c 66 2e 64 62 ...................miA.=.self.db
da00 41 50 49 2e 67 65 74 5f 70 72 6f 78 79 5f 6d 65 74 61 64 61 74 61 28 62 6f 6f 6b 5f 69 64 29 0a API.get_proxy_metadata(book_id).
da20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
da40 20 23 20 62 6f 6f 6b 5f 69 6e 66 6f 20 3d 20 22 74 69 74 6c 65 22 20 28 61 75 74 68 6f 72 20 26 .#.book_info.=."title".(author.&
da60 20 61 75 74 68 6f 72 29 20 5b 62 6f 6f 6b 3a 20 6e 75 6d 2f 62 6f 6f 6b 5f 63 6f 75 6e 74 5d 7b .author).[book:.num/book_count]{
da80 69 64 3a 20 62 6f 6f 6b 5f 69 64 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f id:.book_id}.................boo
daa0 6b 5f 69 6e 66 6f 20 3d 20 27 22 7b 74 69 74 6c 65 7d 22 20 28 7b 61 75 74 68 6f 72 73 7d 29 20 k_info.=.'"{title}".({authors}).
dac0 5b 62 6f 6f 6b 3a 20 7b 6e 75 6d 7d 2f 7b 62 6f 6f 6b 5f 63 6f 75 6e 74 7d 5d 7b 7b 69 64 3a 20 [book:.{num}/{book_count}]{{id:.
dae0 7b 62 6f 6f 6b 5f 69 64 7d 7d 7d 27 2e 66 6f 72 6d 61 74 28 0a 20 20 20 20 20 20 20 20 20 20 20 {book_id}}}'.format(............
db00 20 20 20 20 20 20 20 20 20 74 69 74 6c 65 3d 6d 69 41 2e 67 65 74 28 27 74 69 74 6c 65 27 29 2c .........title=miA.get('title'),
db20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 6f 72 73 3d 27 20 26 .....................authors='.&
db40 20 27 2e 6a 6f 69 6e 28 6d 69 41 2e 67 65 74 28 27 61 75 74 68 6f 72 73 27 29 29 2c 0a 20 20 20 .'.join(miA.get('authors')),....
db60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 3d 6e 75 6d 2c 0a 20 20 20 20 20 20 .................num=num,.......
db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6b 5f 63 6f 75 6e 74 3d 73 65 6c 66 2e 62 6f ..............book_count=self.bo
dba0 6f 6b 5f 63 6f 75 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f ok_count,.....................bo
dbc0 6f 6b 5f 69 64 3d 62 6f 6f 6b 5f 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 ok_id=book_id,.................)
dbe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
dc00 20 20 23 20 70 72 6f 63 65 73 73 20 74 68 65 20 63 6f 6d 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 ..#.process.the.comments........
dc20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 20 69 6e 20 73 65 6c 66 2e 62 6f 6f 6b 73 .........for.field.in.self.books
dc40 5f 63 6f 6d 6d 65 6e 74 73 5f 6d 61 70 2e 6b 65 79 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 _comments_map.keys():...........
dc60 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 20 3d 20 6d 69 41 2e 67 65 74 28 66 69 65 6c ..........comment.=.miA.get(fiel
dc80 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6d 6d 65 6e d).....................if.commen
dca0 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.is.not.None:..................
dcc0 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 66 69 65 6c 64 2b 27 20 66 6f 72 20 27 2b .......debug_text(field+'.for.'+
dce0 62 6f 6f 6b 5f 69 6e 66 6f 2c 20 63 6f 6d 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 book_info,.comment).............
dd00 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 5f 6e 6f 72 6d 20 3d 20 6e 6f 72 6d 61 ............comment_norm.=.norma
dd20 6c 69 7a 65 5f 63 6f 6d 6d 65 6e 74 28 63 6f 6d 6d 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 lize_comment(comment)...........
dd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d 65 6e 74 5f 6f 75 74 20 3d 20 63 6c 65 61 ..............comment_out.=.clea
dd60 6e 5f 63 6f 6d 6d 65 6e 74 28 63 6f 6d 6d 65 6e 74 5f 6e 6f 72 6d 2c 20 73 65 6c 66 2e 75 73 65 n_comment(comment_norm,.self.use
dd80 64 5f 70 72 65 66 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d_prefs)........................
dda0 20 69 66 20 63 6f 6d 6d 65 6e 74 20 3d 3d 20 63 6f 6d 6d 65 6e 74 5f 6f 75 74 3a 0a 20 20 20 20 .if.comment.==.comment_out:.....
ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 ........................debug_te
dde0 78 74 28 27 55 6e 63 68 61 6e 67 65 64 20 27 2b 66 69 65 6c 64 29 0a 20 20 20 20 20 20 20 20 20 xt('Unchanged.'+field)..........
de00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ...............else:............
de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6d 6d 65 6e 74 20 21 3d 20 63 .................if.comment.!=.c
de40 6f 6d 6d 65 6e 74 5f 6e 6f 72 6d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 omment_norm:....................
de60 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 27 4e 6f 72 6d 61 6c 69 .............debug_text('Normali
de80 7a 65 20 27 20 2b 20 66 69 65 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ze.'.+.field)...................
dea0 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6d 6d 65 6e 74 5f 6e 6f 72 6d 20 21 3d 20 63 6f 6d ..........if.comment_norm.!=.com
dec0 6d 65 6e 74 5f 6f 75 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ment_out:.......................
dee0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 66 69 65 6c 64 2b 27 20 6f 75 74 ..........debug_text(field+'.out
df00 27 2c 20 63 6f 6d 6d 65 6e 74 5f 6f 75 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ',.comment_out).................
df20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6f 6f 6b 73 5f 63 6f 6d 6d 65 6e 74 73 5f ............self.books_comments_
df40 6d 61 70 5b 66 69 65 6c 64 5d 5b 62 6f 6f 6b 5f 69 64 5d 20 3d 20 63 6f 6d 6d 65 6e 74 5f 6f 75 map[field][book_id].=.comment_ou
df60 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 t...............................
df80 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........else:................
dfa0 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 27 45 6d 70 74 79 20 27 2b 66 69 65 .........debug_text('Empty.'+fie
dfc0 6c 64 2b 27 20 27 2b 62 6f 6f 6b 5f 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 ld+'.'+book_info)...............
dfe0 20 20 20 20 20 20 20 20 20 20 20 69 64 73 20 3d 20 73 65 74 28 29 0a 20 20 20 20 20 20 20 20 20 ...........ids.=.set()..........
e000 20 20 20 66 6f 72 20 63 63 62 76 20 69 6e 20 73 65 6c 66 2e 62 6f 6f 6b 73 5f 63 6f 6d 6d 65 6e ...for.ccbv.in.self.books_commen
e020 74 73 5f 6d 61 70 2e 76 61 6c 75 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ts_map.values():................
e040 20 69 64 73 2e 75 70 64 61 74 65 28 63 63 62 76 2e 6b 65 79 73 28 29 29 0a 20 20 20 20 20 20 20 .ids.update(ccbv.keys())........
e060 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6b 73 5f 65 64 69 74 5f 63 6f 75 ..................books_edit_cou
e080 6e 74 20 3d 20 6c 65 6e 28 69 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 62 6f 6f nt.=.len(ids).............if.boo
e0a0 6b 73 5f 65 64 69 74 5f 63 6f 75 6e 74 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ks_edit_count.>.0:..............
e0c0 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 ....................debug_print(
e0e0 66 27 55 70 64 61 74 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 7b 62 6f 6f 6b 73 f'Update.the.database.for.{books
e100 5f 65 64 69 74 5f 63 6f 75 6e 74 7d 20 62 6f 6f 6b 73 e2 80 a6 5c 6e 27 29 0a 20 20 20 20 20 20 _edit_count}.books...\n').......
e120 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 76 61 6c 75 65 28 2d 31 2c 20 74 65 78 ..........self.set_value(-1,.tex
e140 74 3d 5f 28 27 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d t=_('Update.the.library.for.{:d}
e160 20 62 6f 6f 6b 73 e2 80 a6 27 29 2e 66 6f 72 6d 61 74 28 62 6f 6f 6b 73 5f 65 64 69 74 5f 63 6f .books...').format(books_edit_co
e180 75 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 unt))...........................
e1a0 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6f 6f 6b 73 5f 63 6c 65 61 6e 20 3d 20 62 6f 6f 6b 73 5f .......self.books_clean.=.books_
e1c0 65 64 69 74 5f 63 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 edit_count......................
e1e0 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 73 65 6c 66 2e 64 62 41 50 49 2e 62 61 63 6b ............with.self.dbAPI.back
e200 65 6e 64 2e 63 6f 6e 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f end.conn:.....................fo
e220 72 20 66 69 65 6c 64 2c 69 64 5f 76 61 6c 20 69 6e 20 73 65 6c 66 2e 62 6f 6f 6b 73 5f 63 6f 6d r.field,id_val.in.self.books_com
e240 6d 65 6e 74 73 5f 6d 61 70 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ments_map.items():..............
e260 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 62 41 50 49 2e 73 65 74 5f 66 69 65 6c 64 28 ...........self.dbAPI.set_field(
e280 66 69 65 6c 64 2c 69 64 5f 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 field,id_val)...................
e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 55 49 2e 69 61 63 74 69 6f 6e 73 5b 27 45 64 69 ...............GUI.iactions['Edi
e2c0 74 20 4d 65 74 61 64 61 74 61 27 5d 2e 72 65 66 72 65 73 68 5f 67 75 69 28 69 64 73 2c 20 63 6f t.Metadata'].refresh_gui(ids,.co
e2e0 76 65 72 73 5f 63 68 61 6e 67 65 64 3d 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 vers_changed=False).............
e300 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e else:.................debug_prin
e320 74 28 27 4e 6f 20 62 6f 6f 6b 20 74 6f 20 75 70 64 61 74 65 20 69 6e 73 69 64 65 20 74 68 65 20 t('No.book.to.update.inside.the.
e340 64 61 74 61 62 61 73 65 2e 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 database.\n')...................
e360 20 20 20 65 78 63 65 70 74 20 45 78 63 65 70 74 69 6f 6e 20 61 73 20 65 3a 0a 20 20 20 20 20 20 ...except.Exception.as.e:.......
e380 20 20 20 20 20 20 73 65 6c 66 2e 65 78 63 65 70 74 69 6f 6e 20 3d 20 65 0a 0a 0a 63 6c 61 73 73 ......self.exception.=.e...class
e3a0 20 43 6c 65 61 6e 65 72 4e 6f 74 65 50 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 28 50 72 6f 67 72 .CleanerNoteProgressDialog(Progr
e3c0 65 73 73 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 0a 20 20 20 20 69 63 6f 6e 20 3d 20 4e 4f 54 45 essDialog):..........icon.=.NOTE
e3e0 53 5f 49 43 4f 4e 0a 20 20 20 20 74 69 74 6c 65 20 3d 20 5f 28 27 7b 50 4c 55 47 49 4e 5f 4e 41 S_ICON.....title.=._('{PLUGIN_NA
e400 4d 45 7d 20 70 72 6f 67 72 65 73 73 27 29 2e 66 6f 72 6d 61 74 28 50 4c 55 47 49 4e 5f 4e 41 4d ME}.progress').format(PLUGIN_NAM
e420 45 3d 27 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 27 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 E='Notes.Cleaner')..........def.
e440 73 65 74 75 70 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 2c 20 2a 2a 6b 76 61 72 67 73 29 3a 0a setup_progress(self,.**kvargs):.
e460 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 73 65 64 5f 70 72 65 66 73 .................self.used_prefs
e480 20 3d 20 50 52 45 46 53 5b 4b 45 59 2e 4e 4f 54 45 53 5f 53 45 54 54 49 4e 47 53 5d 2e 63 6f 70 .=.PREFS[KEY.NOTES_SETTINGS].cop
e4a0 79 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 6f 74 65 5f 73 y()..................self.note_s
e4c0 72 63 20 3d 20 73 65 6c 66 2e 62 6f 6f 6b 5f 69 64 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e rc.=.self.book_ids.........self.
e4e0 6e 6f 74 65 5f 63 6f 75 6e 74 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 76 20 69 6e note_count.=.[].........for.v.in
e500 20 73 65 6c 66 2e 6e 6f 74 65 5f 73 72 63 2e 76 61 6c 75 65 73 28 29 3a 0a 20 20 20 20 20 20 20 .self.note_src.values():........
e520 20 20 20 20 20 73 65 6c 66 2e 6e 6f 74 65 5f 63 6f 75 6e 74 2e 65 78 74 65 6e 64 28 76 29 0a 20 .....self.note_count.extend(v)..
e540 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 6f 74 65 5f 63 6f 75 6e 74 20 ................self.note_count.
e560 3d 20 6c 65 6e 28 73 65 6c 66 2e 6e 6f 74 65 5f 63 6f 75 6e 74 29 0a 20 20 20 20 20 20 20 20 0a =.len(self.note_count)..........
e580 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 6f 74 65 5f 63 6c 65 61 6e 20 3d 20 30 0a 20 20 20 20 ........self.note_clean.=.0.....
e5a0 20 20 20 20 73 65 6c 66 2e 66 69 65 6c 64 5f 69 64 5f 6e 6f 74 65 73 20 3d 20 64 65 66 61 75 6c ....self.field_id_notes.=.defaul
e5c0 74 64 69 63 74 28 64 69 63 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 45 tdict(dict)..................#.E
e5e0 78 63 65 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 78 63 65 70 74 69 6f 6e 20 xception.........self.exception.
e600 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 =.None..................return.s
e620 65 6c 66 2e 6e 6f 74 65 5f 63 6f 75 6e 74 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 72 6f 67 elf.note_count..........def.prog
e640 72 65 73 73 5f 74 65 78 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ress_text(self):.........return.
e660 5f 28 27 4e 6f 74 65 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 27 29 2e 66 6f 72 6d 61 74 28 73 65 _('Note.{:d}.of.{:d}').format(se
e680 6c 66 2e 76 61 6c 75 65 28 29 2c 20 73 65 6c 66 2e 6e 6f 74 65 5f 63 6f 75 6e 74 29 0a 20 20 20 lf.value(),.self.note_count)....
e6a0 20 0a 20 20 20 20 64 65 66 20 65 6e 64 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 29 3a 0a 20 20 ......def.end_progress(self):...
e6c0 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 77 61 73 43 61 6e 63 65 6c ...............if.self.wasCancel
e6e0 65 64 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 27 43 ed():.............debug_print('C
e700 6c 65 61 6e 69 6e 67 20 6e 6f 74 65 73 20 61 73 20 63 61 6e 63 65 6c 6c 65 64 2e 20 4e 6f 20 63 leaning.notes.as.cancelled..No.c
e720 68 61 6e 67 65 2e 27 29 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 65 78 63 65 70 hange.').........elif.self.excep
e740 74 69 6f 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 27 43 tion:.............debug_print('C
e760 6c 65 61 6e 69 6e 67 20 6e 6f 74 65 73 20 61 73 20 63 61 6e 63 65 6c 6c 65 64 2e 20 41 6e 20 65 leaning.notes.as.cancelled..An.e
e780 78 63 65 70 74 69 6f 6e 20 68 61 73 20 6f 63 63 75 72 72 65 64 3a 27 29 0a 20 20 20 20 20 20 20 xception.has.occurred:')........
e7a0 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 73 65 6c 66 2e 65 78 63 65 70 74 69 6f 6e 29 .....debug_print(self.exception)
e7c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 75 73 74 6f 6d 5f 65 78 63 65 70 74 69 6f 6e 5f 64 69 .............custom_exception_di
e7e0 61 6c 6f 67 28 73 65 6c 66 2e 65 78 63 65 70 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 65 6c 73 alog(self.exception).........els
e800 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 27 53 65 74 74 e:.............debug_print('Sett
e820 69 6e 67 73 3a 27 2c 20 73 65 6c 66 2e 75 73 65 64 5f 70 72 65 66 73 2c 27 5c 6e 27 29 0a 20 20 ings:',.self.used_prefs,'\n')...
e840 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 66 27 43 6c 65 61 6e 69 6e 67 ..........debug_print(f'Cleaning
e860 20 6c 61 75 6e 63 68 65 64 20 66 6f 72 20 7b 73 65 6c 66 2e 6e 6f 74 65 5f 63 6f 75 6e 74 7d 20 .launched.for.{self.note_count}.
e880 6e 6f 74 65 73 2e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 notes.').............debug_print
e8a0 28 66 27 43 6c 65 61 6e 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 66 6f 72 20 7b 73 65 6c 66 2e (f'Cleaning.performed.for.{self.
e8c0 6e 6f 74 65 5f 63 6c 65 61 6e 7d 20 6e 6f 74 65 73 2e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 note_clean}.notes.')............
e8e0 20 64 65 62 75 67 5f 70 72 69 6e 74 28 66 27 43 6c 65 61 6e 69 6e 67 20 65 78 65 63 75 74 65 20 .debug_print(f'Cleaning.execute.
e900 69 6e 20 7b 73 65 6c 66 2e 74 69 6d 65 5f 65 78 65 63 75 74 3a 30 2e 33 66 7d 20 73 65 63 6f 6e in.{self.time_execut:0.3f}.secon
e920 64 73 2e 5c 6e 27 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 6a 6f 62 5f 70 72 6f 67 72 65 73 ds.\n')..........def.job_progres
e940 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 66 27 4c s(self):.........debug_print(f'L
e960 61 75 6e 63 68 20 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 20 66 6f 72 20 7b 73 65 6c 66 2e 6e 6f aunch.Notes.Cleaner.for.{self.no
e980 74 65 5f 63 6f 75 6e 74 7d 20 6e 6f 74 65 73 2e 27 29 0a 20 20 20 20 20 20 20 20 64 65 62 75 67 te_count}.notes.').........debug
e9a0 5f 70 72 69 6e 74 28 73 65 6c 66 2e 75 73 65 64 5f 70 72 65 66 73 29 0a 20 20 20 20 20 20 20 20 _print(self.used_prefs).........
e9c0 70 72 69 6e 74 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 print()..................try:...
e9e0 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 .......................for.field
ea00 2c 69 74 65 6d 73 20 69 6e 20 73 65 6c 66 2e 6e 6f 74 65 5f 73 72 63 2e 69 74 65 6d 73 28 29 3a ,items.in.self.note_src.items():
ea20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 6c 75 65 2c 20 69 74 65 .................for.(value,.ite
ea40 6d 5f 69 64 29 20 69 6e 20 69 74 65 6d 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 m_id).in.items:.................
ea60 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 .........................if.self
ea80 2e 77 61 73 43 61 6e 63 65 6c 65 64 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .wasCanceled():.................
eaa0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ........return..................
eac0 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 75 70 64 61 74 65 ........................#.update
eae0 20 50 72 6f 67 72 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 .Progress.....................nu
eb00 6d 20 3d 20 73 65 6c 66 2e 69 6e 63 72 65 6d 65 6e 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 m.=.self.increment()............
eb20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 ..............................#.
eb40 67 65 74 20 74 68 65 20 6e 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 get.the.note....................
eb60 20 69 74 65 6d 5f 6e 61 6d 65 20 3d 20 73 65 6c 66 2e 64 62 41 50 49 2e 67 65 74 5f 69 74 65 6d .item_name.=.self.dbAPI.get_item
eb80 5f 6e 61 6d 65 28 66 69 65 6c 64 2c 20 69 74 65 6d 5f 69 64 29 0a 20 20 20 20 20 20 20 20 20 20 _name(field,.item_id)...........
eba0 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 5f 64 61 74 61 20 3d 20 73 65 6c 66 2e 64 62 41 50 49 ..........note_data.=.self.dbAPI
ebc0 2e 6e 6f 74 65 73 5f 64 61 74 61 5f 66 6f 72 28 66 69 65 6c 64 2c 20 69 74 65 6d 5f 69 64 29 0a .notes_data_for(field,.item_id).
ebe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 20 3d 20 6e 6f 74 65 5f ....................note.=.note_
ec00 64 61 74 61 2e 67 65 74 28 27 64 6f 63 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 data.get('doc',.None)...........
ec20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e ...............................n
ec40 6f 74 65 5f 69 6e 66 6f 20 3d 20 66 69 65 6c 64 2b 27 3a 27 2b 69 74 65 6d 5f 6e 61 6d 65 2b 27 ote_info.=.field+':'+item_name+'
ec60 20 5b 6e 6f 74 65 3a 20 27 2b 73 74 72 28 6e 75 6d 29 2b 27 2f 27 2b 73 74 72 28 73 65 6c 66 2e .[note:.'+str(num)+'/'+str(self.
ec80 6e 6f 74 65 5f 63 6f 75 6e 74 29 2b 27 5d 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 note_count)+']'.................
eca0 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 72 6f 63 65 .........................#.proce
ecc0 73 73 20 74 68 65 20 6e 6f 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ss.the.note.....................
ece0 69 66 20 6e 6f 74 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 if.note.is.not.None:............
ed00 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 27 4e 6f 74 65 20 66 6f .............debug_text('Note.fo
ed20 72 20 27 2b 6e 6f 74 65 5f 69 6e 66 6f 2c 20 6e 6f 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 r.'+note_info,.note)............
ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 5f 6e 6f 72 6d 20 3d 20 6e 6f 72 6d 61 6c 69 .............note_norm.=.normali
ed60 7a 65 5f 63 6f 6d 6d 65 6e 74 28 6e 6f 74 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ze_comment(note)................
ed80 20 20 20 20 20 20 20 20 20 6e 6f 74 65 5f 6f 75 74 20 3d 20 63 6c 65 61 6e 5f 63 6f 6d 6d 65 6e .........note_out.=.clean_commen
eda0 74 28 6e 6f 74 65 5f 6e 6f 72 6d 2c 20 73 65 6c 66 2e 75 73 65 64 5f 70 72 65 66 73 29 0a 20 20 t(note_norm,.self.used_prefs)...
edc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 65 20 3d 3d ......................if.note.==
ede0 20 6e 6f 74 65 5f 6f 75 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .note_out:......................
ee00 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 27 55 6e 63 68 61 6e 67 65 64 20 6e 6f 74 .......debug_text('Unchanged.not
ee20 65 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 e').........................else
ee40 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 :.............................if
ee60 20 6e 6f 74 65 20 21 3d 20 6e 6f 74 65 5f 6e 6f 72 6d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 .note.!=.note_norm:.............
ee80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 27 ....................debug_text('
eea0 4e 6f 72 6d 61 6c 69 7a 65 20 6e 6f 74 65 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Normalize.note')................
eec0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 65 5f 6e 6f 72 6d 20 21 3d 20 6e 6f 74 .............if.note_norm.!=.not
eee0 65 5f 6f 75 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e_out:..........................
ef00 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 27 4e 6f 74 65 20 6f 75 74 27 2c 20 6e 6f .......debug_text('Note.out',.no
ef20 74 65 5f 6f 75 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 te_out).........................
ef40 20 20 20 20 6e 6f 74 65 5f 64 61 74 61 5b 27 64 6f 63 27 5d 20 3d 20 6e 6f 74 65 5f 6f 75 74 0a ....note_data['doc'].=.note_out.
ef60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ............................self
ef80 2e 66 69 65 6c 64 5f 69 64 5f 6e 6f 74 65 73 5b 66 69 65 6c 64 5d 5b 69 74 65 6d 5f 69 64 5d 20 .field_id_notes[field][item_id].
efa0 3d 20 6e 6f 74 65 5f 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.note_data.....................
efc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 .....................else:......
efe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 74 65 78 74 28 27 45 ...................debug_text('E
f000 6d 70 74 79 20 6e 6f 74 65 20 27 2b 6e 6f 74 65 5f 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 mpty.note.'+note_info)..........
f020 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 64 73 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 ................ids.=.[]........
f040 20 20 20 20 20 66 6f 72 20 76 20 69 6e 20 73 65 6c 66 2e 66 69 65 6c 64 5f 69 64 5f 6e 6f 74 65 .....for.v.in.self.field_id_note
f060 73 2e 76 61 6c 75 65 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 64 73 2e s.values():.................ids.
f080 65 78 74 65 6e 64 28 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 5f 65 64 69 74 5f extend(v).............note_edit_
f0a0 63 6f 75 6e 74 20 3d 20 6c 65 6e 28 69 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 count.=.len(ids).............if.
f0c0 6e 6f 74 65 5f 65 64 69 74 5f 63 6f 75 6e 74 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 note_edit_count.>.0:............
f0e0 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e ......................debug_prin
f100 74 28 66 27 55 70 64 61 74 65 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 7b 6e 6f 74 t(f'Update.the.database.for.{not
f120 65 5f 65 64 69 74 5f 63 6f 75 6e 74 7d 20 6e 6f 74 65 73 e2 80 a6 5c 6e 27 29 0a 20 20 20 20 20 e_edit_count}.notes...\n')......
f140 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 76 61 6c 75 65 28 2d 31 2c 20 74 65 ...........self.set_value(-1,.te
f160 78 74 3d 5f 28 27 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 xt=_('Update.the.library.for.{:d
f180 7d 20 6e 6f 74 65 73 e2 80 a6 27 29 2e 66 6f 72 6d 61 74 28 6e 6f 74 65 5f 65 64 69 74 5f 63 6f }.notes...').format(note_edit_co
f1a0 75 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 unt))...........................
f1c0 20 20 20 20 20 20 20 77 69 74 68 20 73 65 6c 66 2e 64 62 41 50 49 2e 62 61 63 6b 65 6e 64 2e 63 .......with.self.dbAPI.backend.c
f1e0 6f 6e 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 onn:.....................for.fie
f200 6c 64 2c 76 61 6c 75 65 73 20 69 6e 20 73 65 6c 66 2e 66 69 65 6c 64 5f 69 64 5f 6e 6f 74 65 73 ld,values.in.self.field_id_notes
f220 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .items():.......................
f240 20 20 66 6f 72 20 69 74 65 6d 5f 69 64 2c 6e 6f 74 65 5f 64 61 74 61 20 69 6e 20 76 61 6c 75 65 ..for.item_id,note_data.in.value
f260 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s.items():......................
f280 20 20 20 20 20 20 20 73 65 6c 66 2e 64 62 41 50 49 2e 73 65 74 5f 6e 6f 74 65 73 5f 66 6f 72 28 .......self.dbAPI.set_notes_for(
f2a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
f2c0 20 66 69 65 6c 64 2c 20 69 74 65 6d 5f 69 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .field,.item_id,................
f2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 74 65 5f 64 61 74 61 5b 27 64 6f 63 27 .................note_data['doc'
f300 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ],..............................
f320 20 20 20 73 65 61 72 63 68 61 62 6c 65 5f 74 65 78 74 3d 6e 6f 74 65 5f 64 61 74 61 5b 27 73 65 ...searchable_text=note_data['se
f340 61 72 63 68 61 62 6c 65 5f 74 65 78 74 27 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 archable_text'],................
f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 6f 75 72 63 65 5f 68 61 73 68 65 73 .................resource_hashes
f380 3d 6e 6f 74 65 5f 64 61 74 61 5b 27 72 65 73 6f 75 72 63 65 5f 68 61 73 68 65 73 27 5d 2c 0a 20 =note_data['resource_hashes'],..
f3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 ...........................)....
f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 ..............................se
f3e0 6c 66 2e 6e 6f 74 65 5f 63 6c 65 61 6e 20 3d 20 6e 6f 74 65 5f 65 64 69 74 5f 63 6f 75 6e 74 0a lf.note_clean.=.note_edit_count.
f400 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 45 78 63 65 .....................except.Exce
f420 70 74 69 6f 6e 20 61 73 20 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 78 63 ption.as.e:.............self.exc
f440 65 70 74 69 6f 6e 20 3d 20 65 0a 50 4b 03 04 14 00 00 00 00 00 ea 6e 3f 5c 39 de 95 48 f3 0c 00 eption.=.e.PK.........n?\9..H...
f460 00 f3 0c 00 00 0b 00 00 00 5f 5f 69 6e 69 74 5f 5f 2e 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 .........__init__.py#!/usr/bin/e
f480 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 nv.python..__license__...=.'GPL.
f4a0 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 32 30 2c 20 75 6e 5f 70 6f v3'.__copyright__.=.'2020,.un_po
f4c0 67 61 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a gaz.<un.pogaz@gmail.com>'...try:
f4e0 0a 20 20 20 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 .....load_translations().except.
f500 4e 61 6d 65 45 72 72 6f 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e NameError:.....pass..#.load_tran
f520 73 6c 61 74 69 6f 6e 73 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a slations().added.in.calibre.1.9.
f540 0a 23 20 54 68 65 20 63 6c 61 73 73 20 74 68 61 74 20 61 6c 6c 20 49 6e 74 65 72 66 61 63 65 20 .#.The.class.that.all.Interface.
f560 41 63 74 69 6f 6e 20 70 6c 75 67 69 6e 20 77 72 61 70 70 65 72 73 20 6d 75 73 74 20 69 6e 68 65 Action.plugin.wrappers.must.inhe
f580 72 69 74 20 66 72 6f 6d 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 63 75 73 74 6f 6d 69 7a 65 20 rit.from.from.calibre.customize.
f5a0 69 6d 70 6f 72 74 20 49 6e 74 65 72 66 61 63 65 41 63 74 69 6f 6e 42 61 73 65 0a 0a 0a 63 6c 61 import.InterfaceActionBase...cla
f5c0 73 73 20 41 63 74 69 6f 6e 43 6f 6d 6d 65 6e 74 73 43 6c 65 61 6e 65 72 28 49 6e 74 65 72 66 61 ss.ActionCommentsCleaner(Interfa
f5e0 63 65 41 63 74 69 6f 6e 42 61 73 65 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 54 68 69 73 20 ceActionBase):.....'''.....This.
f600 63 6c 61 73 73 20 69 73 20 61 20 73 69 6d 70 6c 65 20 77 72 61 70 70 65 72 20 74 68 61 74 20 70 class.is.a.simple.wrapper.that.p
f620 72 6f 76 69 64 65 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 74 68 65 20 61 63 rovides.information.about.the.ac
f640 74 75 61 6c 0a 20 20 20 20 70 6c 75 67 69 6e 20 63 6c 61 73 73 2e 20 54 68 65 20 61 63 74 75 61 tual.....plugin.class..The.actua
f660 6c 20 69 6e 74 65 72 66 61 63 65 20 70 6c 75 67 69 6e 20 63 6c 61 73 73 20 69 73 20 63 61 6c 6c l.interface.plugin.class.is.call
f680 65 64 20 49 6e 74 65 72 66 61 63 65 50 6c 75 67 69 6e 0a 20 20 20 20 61 6e 64 20 69 73 20 64 65 ed.InterfacePlugin.....and.is.de
f6a0 66 69 6e 65 64 20 69 6e 20 74 68 65 20 75 69 2e 70 79 20 66 69 6c 65 2c 20 61 73 20 73 70 65 63 fined.in.the.ui.py.file,.as.spec
f6c0 69 66 69 65 64 20 69 6e 20 74 68 65 20 61 63 74 75 61 6c 5f 70 6c 75 67 69 6e 20 66 69 65 6c 64 ified.in.the.actual_plugin.field
f6e0 0a 20 20 20 20 62 65 6c 6f 77 2e 0a 20 20 20 20 0a 20 20 20 20 54 68 65 20 72 65 61 73 6f 6e 20 .....below...........The.reason.
f700 66 6f 72 20 68 61 76 69 6e 67 20 74 77 6f 20 63 6c 61 73 73 65 73 20 69 73 20 74 68 61 74 20 69 for.having.two.classes.is.that.i
f720 74 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0a 20 20 20 20 63 61 t.allows.the.command.line.....ca
f740 6c 69 62 72 65 20 75 74 69 6c 69 74 69 65 73 20 74 6f 20 72 75 6e 20 77 69 74 68 6f 75 74 20 6e libre.utilities.to.run.without.n
f760 65 65 64 69 6e 67 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 47 55 49 20 6c 69 62 72 61 72 69 65 73 eeding.to.load.the.GUI.libraries
f780 2e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6e 61 6d 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ......'''.....name..............
f7a0 20 20 20 20 20 20 3d 20 27 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 27 0a 20 20 20 20 64 ......=.'Comments.Cleaner'.....d
f7c0 65 73 63 72 69 70 74 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 5f 28 27 52 65 6d 6f escription.............=._('Remo
f7e0 76 65 20 74 68 65 20 73 63 72 61 70 73 20 43 53 53 20 69 6e 20 48 54 4d 4c 20 63 6f 6d 6d 65 6e ve.the.scraps.CSS.in.HTML.commen
f800 74 73 27 29 0a 20 20 20 20 73 75 70 70 6f 72 74 65 64 5f 70 6c 61 74 66 6f 72 6d 73 20 20 20 20 ts').....supported_platforms....
f820 20 3d 20 5b 27 77 69 6e 64 6f 77 73 27 2c 20 27 6f 73 78 27 2c 20 27 6c 69 6e 75 78 27 5d 0a 20 .=.['windows',.'osx',.'linux']..
f840 20 20 20 61 75 74 68 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 27 75 6e ...author..................=.'un
f860 5f 70 6f 67 61 7a 27 0a 20 20 20 20 76 65 72 73 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 _pogaz'.....version.............
f880 20 20 20 20 3d 20 28 31 2c 20 31 38 2c 20 32 29 0a 20 20 20 20 6d 69 6e 69 6d 75 6d 5f 63 61 6c ....=.(1,.18,.2).....minimum_cal
f8a0 69 62 72 65 5f 76 65 72 73 69 6f 6e 20 3d 20 28 35 2c 20 30 2c 20 30 29 0a 20 20 20 20 0a 20 20 ibre_version.=.(5,.0,.0)........
f8c0 20 20 23 20 54 68 69 73 20 66 69 65 6c 64 20 64 65 66 69 6e 65 73 20 74 68 65 20 47 55 49 20 70 ..#.This.field.defines.the.GUI.p
f8e0 6c 75 67 69 6e 20 63 6c 61 73 73 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 61 6c 6c 20 74 68 lugin.class.that.contains.all.th
f900 65 20 63 6f 64 65 0a 20 20 20 20 23 20 74 68 61 74 20 61 63 74 75 61 6c 6c 79 20 64 6f 65 73 20 e.code.....#.that.actually.does.
f920 73 6f 6d 65 74 68 69 6e 67 2e 20 49 74 73 20 66 6f 72 6d 61 74 20 69 73 20 6d 6f 64 75 6c 65 5f something..Its.format.is.module_
f940 70 61 74 68 3a 63 6c 61 73 73 5f 6e 61 6d 65 0a 20 20 20 20 23 20 54 68 65 20 73 70 65 63 69 66 path:class_name.....#.The.specif
f960 69 65 64 20 63 6c 61 73 73 20 6d 75 73 74 20 62 65 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 ied.class.must.be.defined.in.the
f980 20 73 70 65 63 69 66 69 65 64 20 6d 6f 64 75 6c 65 2e 0a 20 20 20 20 61 63 74 75 61 6c 5f 70 6c .specified.module......actual_pl
f9a0 75 67 69 6e 20 20 20 20 20 20 20 20 20 20 20 3d 20 5f 5f 6e 61 6d 65 5f 5f 2b 27 2e 61 63 74 69 ugin...........=.__name__+'.acti
f9c0 6f 6e 3a 43 6f 6d 6d 65 6e 74 73 43 6c 65 61 6e 65 72 41 63 74 69 6f 6e 27 0a 20 20 20 20 0a 20 on:CommentsCleanerAction'.......
f9e0 20 20 20 64 65 66 20 69 73 5f 63 75 73 74 6f 6d 69 7a 61 62 6c 65 28 73 65 6c 66 29 3a 0a 20 20 ...def.is_customizable(self):...
fa00 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 6d 75 ......'''.........This.method.mu
fa20 73 74 20 72 65 74 75 72 6e 20 54 72 75 65 20 74 6f 20 65 6e 61 62 6c 65 20 63 75 73 74 6f 6d 69 st.return.True.to.enable.customi
fa40 7a 61 74 69 6f 6e 20 76 69 61 0a 20 20 20 20 20 20 20 20 50 72 65 66 65 72 65 6e 63 65 73 2d 3e zation.via.........Preferences->
fa60 50 6c 75 67 69 6e 73 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 Plugins.........'''.........retu
fa80 72 6e 20 54 72 75 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 63 6f 6e 66 69 67 5f 77 69 64 67 rn.True..........def.config_widg
faa0 65 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 49 6d et(self):.........'''.........Im
fac0 70 6c 65 6d 65 6e 74 20 74 68 69 73 20 6d 65 74 68 6f 64 20 61 6e 64 20 3a 6d 65 74 68 3a 60 73 plement.this.method.and.:meth:`s
fae0 61 76 65 5f 73 65 74 74 69 6e 67 73 60 20 69 6e 20 79 6f 75 72 20 70 6c 75 67 69 6e 20 74 6f 0a ave_settings`.in.your.plugin.to.
fb00 20 20 20 20 20 20 20 20 75 73 65 20 61 20 63 75 73 74 6f 6d 20 63 6f 6e 66 69 67 75 72 61 74 69 ........use.a.custom.configurati
fb20 6f 6e 20 64 69 61 6c 6f 67 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 54 68 69 73 on.dialog...................This
fb40 20 6d 65 74 68 6f 64 2c 20 69 66 20 69 6d 70 6c 65 6d 65 6e 74 65 64 2c 20 6d 75 73 74 20 72 65 .method,.if.implemented,.must.re
fb60 74 75 72 6e 20 61 20 51 57 69 64 67 65 74 2e 20 54 68 65 20 77 69 64 67 65 74 20 63 61 6e 20 68 turn.a.QWidget..The.widget.can.h
fb80 61 76 65 0a 20 20 20 20 20 20 20 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 6d 65 74 68 6f 64 20 76 ave.........an.optional.method.v
fba0 61 6c 69 64 61 74 65 28 29 20 74 68 61 74 20 74 61 6b 65 73 20 6e 6f 20 61 72 67 75 6d 65 6e 74 alidate().that.takes.no.argument
fbc0 73 20 61 6e 64 20 69 73 20 63 61 6c 6c 65 64 0a 20 20 20 20 20 20 20 20 69 6d 6d 65 64 69 61 74 s.and.is.called.........immediat
fbe0 65 6c 79 20 61 66 74 65 72 20 74 68 65 20 75 73 65 72 20 63 6c 69 63 6b 73 20 4f 4b 2e 20 43 68 ely.after.the.user.clicks.OK..Ch
fc00 61 6e 67 65 73 20 61 72 65 20 61 70 70 6c 69 65 64 20 69 66 20 61 6e 64 20 6f 6e 6c 79 0a 20 20 anges.are.applied.if.and.only...
fc20 20 20 20 20 20 20 69 66 20 74 68 65 20 6d 65 74 68 6f 64 20 72 65 74 75 72 6e 73 20 54 72 75 65 ......if.the.method.returns.True
fc40 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 49 66 20 66 6f 72 20 73 6f 6d 65 20 72 ...................If.for.some.r
fc60 65 61 73 6f 6e 20 79 6f 75 20 63 61 6e 6e 6f 74 20 70 65 72 66 6f 72 6d 20 74 68 65 20 63 6f 6e eason.you.cannot.perform.the.con
fc80 66 69 67 75 72 61 74 69 6f 6e 20 61 74 20 74 68 69 73 20 74 69 6d 65 2c 0a 20 20 20 20 20 20 20 figuration.at.this.time,........
fca0 20 72 65 74 75 72 6e 20 61 20 74 75 70 6c 65 20 6f 66 20 74 77 6f 20 73 74 72 69 6e 67 73 20 28 .return.a.tuple.of.two.strings.(
fcc0 6d 65 73 73 61 67 65 2c 20 64 65 74 61 69 6c 73 29 2c 20 74 68 65 73 65 20 77 69 6c 6c 20 62 65 message,.details),.these.will.be
fce0 0a 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 65 64 20 61 73 20 61 20 77 61 72 6e 69 6e 67 20 .........displayed.as.a.warning.
fd00 64 69 61 6c 6f 67 20 74 6f 20 74 68 65 20 75 73 65 72 20 61 6e 64 20 74 68 65 20 70 72 6f 63 65 dialog.to.the.user.and.the.proce
fd20 73 73 20 77 69 6c 6c 20 62 65 0a 20 20 20 20 20 20 20 20 61 62 6f 72 74 65 64 2e 0a 20 20 20 20 ss.will.be.........aborted......
fd40 20 20 20 20 0a 20 20 20 20 20 20 20 20 54 68 65 20 62 61 73 65 20 63 6c 61 73 73 20 69 6d 70 6c .............The.base.class.impl
fd60 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 6d 65 74 68 6f 64 20 72 61 69 73 65 73 ementation.of.this.method.raises
fd80 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 0a 20 20 20 20 20 20 20 20 73 6f 20 .NotImplementedError.........so.
fda0 62 79 20 64 65 66 61 75 6c 74 20 6e 6f 20 75 73 65 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e by.default.no.user.configuration
fdc0 20 69 73 20 70 6f 73 73 69 62 6c 65 2e 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 .is.possible..........'''.......
fde0 20 20 23 20 49 74 20 69 73 20 69 6d 70 6f 72 74 61 6e 74 20 74 6f 20 70 75 74 20 74 68 69 73 20 ..#.It.is.important.to.put.this.
fe00 69 6d 70 6f 72 74 20 73 74 61 74 65 6d 65 6e 74 20 68 65 72 65 20 72 61 74 68 65 72 20 74 68 61 import.statement.here.rather.tha
fe20 6e 20 61 74 20 74 68 65 0a 20 20 20 20 20 20 20 20 23 20 74 6f 70 20 6f 66 20 74 68 65 20 6d 6f n.at.the.........#.top.of.the.mo
fe40 64 75 6c 65 20 61 73 20 69 6d 70 6f 72 74 69 6e 67 20 74 68 65 20 63 6f 6e 66 69 67 20 63 6c 61 dule.as.importing.the.config.cla
fe60 73 73 20 77 69 6c 6c 20 61 6c 73 6f 20 63 61 75 73 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 23 ss.will.also.cause.the.........#
fe80 20 47 55 49 20 6c 69 62 72 61 72 69 65 73 20 74 6f 20 62 65 20 6c 6f 61 64 65 64 2c 20 77 68 69 .GUI.libraries.to.be.loaded,.whi
fea0 63 68 20 77 65 20 64 6f 20 6e 6f 74 20 77 61 6e 74 20 77 68 65 6e 20 75 73 69 6e 67 20 63 61 6c ch.we.do.not.want.when.using.cal
fec0 69 62 72 65 0a 20 20 20 20 20 20 20 20 23 20 66 72 6f 6d 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 ibre.........#.from.the.command.
fee0 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 61 63 74 75 61 6c 5f 70 6c 75 67 line.........if.self.actual_plug
ff00 69 6e 5f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 20 2e 63 6f 6e 66 69 67 20 69 6d in_:.............from..config.im
ff20 70 6f 72 74 20 43 6f 6e 66 69 67 57 69 64 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 port.ConfigWidget.............re
ff40 74 75 72 6e 20 43 6f 6e 66 69 67 57 69 64 67 65 74 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 turn.ConfigWidget()..........def
ff60 20 73 61 76 65 5f 73 65 74 74 69 6e 67 73 28 73 65 6c 66 2c 20 63 6f 6e 66 69 67 5f 77 69 64 67 .save_settings(self,.config_widg
ff80 65 74 29 3a 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 53 61 76 65 20 74 68 et):.........'''.........Save.th
ffa0 65 20 73 65 74 74 69 6e 67 73 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20 75 73 65 72 e.settings.specified.by.the.user
ffc0 20 77 69 74 68 20 63 6f 6e 66 69 67 5f 77 69 64 67 65 74 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 .with.config_widget.............
ffe0 20 20 20 20 20 20 3a 70 61 72 61 6d 20 63 6f 6e 66 69 67 5f 77 69 64 67 65 74 3a 20 54 68 65 20 ......:param.config_widget:.The.
10000 77 69 64 67 65 74 20 72 65 74 75 72 6e 65 64 20 62 79 20 3a 6d 65 74 68 3a 60 63 6f 6e 66 69 67 widget.returned.by.:meth:`config
10020 5f 77 69 64 67 65 74 60 2e 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 63 6f _widget`..........'''.........co
10040 6e 66 69 67 5f 77 69 64 67 65 74 2e 73 61 76 65 5f 73 65 74 74 69 6e 67 73 28 29 0a 0a 0a 23 20 nfig_widget.save_settings()...#.
10060 46 6f 72 20 74 65 73 74 69 6e 67 2c 20 72 75 6e 20 66 72 6f 6d 20 63 6f 6d 6d 61 6e 64 20 6c 69 For.testing,.run.from.command.li
10080 6e 65 20 77 69 74 68 20 74 68 69 73 3a 0a 23 20 63 61 6c 69 62 72 65 2d 64 65 62 75 67 20 2d 65 ne.with.this:.#.calibre-debug.-e
100a0 20 5f 5f 69 6e 69 74 5f 5f 2e 70 79 0a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 27 5f 5f 6d .__init__.py.if.__name__.==.'__m
100c0 61 69 6e 5f 5f 27 3a 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 20 69 6d ain__':.....from.calibre.gui2.im
100e0 70 6f 72 74 20 41 70 70 6c 69 63 61 74 69 6f 6e 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 port.Application.....from.calibr
10100 65 2e 67 75 69 32 2e 70 72 65 66 65 72 65 6e 63 65 73 20 69 6d 70 6f 72 74 20 74 65 73 74 5f 77 e.gui2.preferences.import.test_w
10120 69 64 67 65 74 0a 20 20 20 20 61 70 70 20 3d 20 41 70 70 6c 69 63 61 74 69 6f 6e 28 5b 5d 29 0a idget.....app.=.Application([]).
10140 20 20 20 20 74 65 73 74 5f 77 69 64 67 65 74 28 27 41 64 76 61 6e 63 65 64 27 2c 20 27 50 6c 75 ....test_widget('Advanced',.'Plu
10160 67 69 6e 73 27 29 0a 50 4b 03 04 14 00 00 00 00 00 f6 93 8c 59 04 15 ac d4 f6 05 00 00 f6 05 00 gins').PK...........Y...........
10180 00 1d 00 00 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e .....common_utils/compatibility.
101a0 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e py#!/usr/bin/env.python..__licen
101c0 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 se__...=.'GPL.v3'.__copyright__.
101e0 3d 20 27 32 30 32 33 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 67 6d 61 69 =.'2023,.un_pogaz.<un.pogaz@gmai
10200 6c 2e 63 6f 6d 3e 27 0a 5f 5f 64 6f 63 5f 5f 20 20 20 20 20 20 20 3d 20 27 76 61 72 69 6f 75 73 l.com>'.__doc__.......=.'various
10220 20 62 61 63 6b 77 61 72 64 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 69 6d 70 6c 65 6d 65 6e .backward.compatibility.implemen
10240 74 61 74 69 6f 6e 27 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e tation'...try:.....from.calibre.
10260 64 62 2e 63 61 74 65 67 6f 72 69 65 73 20 69 6d 70 6f 72 74 20 63 61 74 65 67 6f 72 79 5f 64 69 db.categories.import.category_di
10280 73 70 6c 61 79 5f 6f 72 64 65 72 0a 65 78 63 65 70 74 3a 0a 20 20 20 20 64 65 66 20 63 61 74 65 splay_order.except:.....def.cate
102a0 67 6f 72 79 5f 64 69 73 70 6c 61 79 5f 6f 72 64 65 72 28 6f 72 64 65 72 65 64 5f 63 61 74 73 2c gory_display_order(ordered_cats,
102c0 20 61 6c 6c 5f 63 61 74 73 29 3a 0a 20 20 20 20 20 20 20 20 64 65 66 20 69 73 5f 73 74 61 6e 64 .all_cats):.........def.is_stand
102e0 61 72 64 5f 63 61 74 65 67 6f 72 79 28 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ard_category(key):.............r
10300 65 74 75 72 6e 20 6e 6f 74 20 28 6b 65 79 2e 73 74 61 72 74 73 77 69 74 68 28 27 40 27 29 20 6f eturn.not.(key.startswith('@').o
10320 72 20 6b 65 79 20 3d 3d 20 27 73 65 61 72 63 68 27 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 r.key.==.'search')..............
10340 20 20 20 20 23 20 6f 72 64 65 72 65 64 5f 63 61 74 73 20 69 73 20 74 68 65 20 64 65 73 69 72 65 ....#.ordered_cats.is.the.desire
10360 64 20 6f 72 64 65 72 2e 20 61 6c 6c 5f 63 61 74 73 20 69 73 20 74 68 65 20 6c 69 73 74 20 6f 66 d.order..all_cats.is.the.list.of
10380 20 6b 65 79 73 20 72 65 74 75 72 6e 65 64 0a 20 20 20 20 20 20 20 20 23 20 62 79 20 67 65 74 5f .keys.returned.........#.by.get_
103a0 63 61 74 65 67 6f 72 69 65 73 2c 20 77 68 69 63 68 20 69 73 20 69 6e 20 74 68 65 20 64 65 66 61 categories,.which.is.in.the.defa
103c0 75 6c 74 20 6f 72 64 65 72 0a 20 20 20 20 20 20 20 20 63 61 74 5f 6f 72 64 20 3d 20 5b 5d 0a 20 ult.order.........cat_ord.=.[]..
103e0 20 20 20 20 20 20 20 61 6c 6c 5f 63 61 74 5f 73 65 74 20 3d 20 66 72 6f 7a 65 6e 73 65 74 28 61 .......all_cat_set.=.frozenset(a
10400 6c 6c 5f 63 61 74 73 29 0a 20 20 20 20 20 20 20 20 23 20 44 6f 20 74 68 65 20 73 74 61 6e 64 61 ll_cats).........#.Do.the.standa
10420 72 64 20 63 61 74 65 67 6f 72 69 65 73 20 66 69 72 73 74 0a 20 20 20 20 20 20 20 20 23 20 56 65 rd.categories.first.........#.Ve
10440 72 69 66 79 20 61 6c 6c 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 6f 72 64 65 72 65 64 5f rify.all.the.columns.in.ordered_
10460 63 61 74 73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 69 6e 20 61 6c 6c 5f 63 61 74 73 0a 20 20 cats.are.actually.in.all_cats...
10480 20 20 20 20 20 20 66 6f 72 20 6b 65 79 20 69 6e 20 6f 72 64 65 72 65 64 5f 63 61 74 73 3a 0a 20 ......for.key.in.ordered_cats:..
104a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 73 5f 73 74 61 6e 64 61 72 64 5f 63 61 74 65 67 6f ...........if.is_standard_catego
104c0 72 79 28 6b 65 79 29 20 61 6e 64 20 6b 65 79 20 69 6e 20 61 6c 6c 5f 63 61 74 5f 73 65 74 3a 0a ry(key).and.key.in.all_cat_set:.
104e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 5f 6f 72 64 2e 61 70 70 65 6e 64 28 6b ................cat_ord.append(k
10500 65 79 29 0a 20 20 20 20 20 20 20 20 23 20 41 64 64 20 61 6e 79 20 6e 65 77 20 73 74 61 6e 64 61 ey).........#.Add.any.new.standa
10520 72 64 20 63 61 74 73 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 73 74 0a 20 rd.cats.at.the.end.of.the.list..
10540 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 20 69 6e 20 61 6c 6c 5f 63 61 74 73 3a 0a 20 20 20 20 .......for.key.in.all_cats:.....
10560 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 20 6e 6f 74 20 69 6e 20 63 61 74 5f 6f 72 64 20 61 6e ........if.key.not.in.cat_ord.an
10580 64 20 69 73 5f 73 74 61 6e 64 61 72 64 5f 63 61 74 65 67 6f 72 79 28 6b 65 79 29 3a 0a 20 20 20 d.is_standard_category(key):....
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 5f 6f 72 64 2e 61 70 70 65 6e 64 28 6b 65 79 29 .............cat_ord.append(key)
105c0 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 77 20 61 64 64 20 74 68 65 20 6e 6f 6e 2d 73 74 61 6e 64 .........#.Now.add.the.non-stand
105e0 61 72 64 20 63 61 74 73 20 28 75 73 65 72 20 63 61 74 73 20 61 6e 64 20 73 65 61 72 63 68 29 0a ard.cats.(user.cats.and.search).
10600 20 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 20 69 6e 20 61 6c 6c 5f 63 61 74 73 3a 0a 20 20 20 ........for.key.in.all_cats:....
10620 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 5f 73 74 61 6e 64 61 72 64 5f 63 61 74 65 .........if.not.is_standard_cate
10640 67 6f 72 79 28 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 5f 6f gory(key):.................cat_o
10660 72 64 2e 61 70 70 65 6e 64 28 6b 65 79 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 61 rd.append(key).........return.ca
10680 74 5f 6f 72 64 0a 0a 74 72 79 3a 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 75 74 69 t_ord..try:.....from.calibre.uti
106a0 6c 73 2e 64 61 74 65 20 69 6d 70 6f 72 74 20 71 74 5f 66 72 6f 6d 5f 64 74 0a 65 78 63 65 70 74 ls.date.import.qt_from_dt.except
106c0 3a 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 :.....try:.........from.qt.core.
106e0 69 6d 70 6f 72 74 20 51 44 61 74 65 54 69 6d 65 0a 20 20 20 20 65 78 63 65 70 74 20 49 6d 70 6f import.QDateTime.....except.Impo
10700 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 50 79 51 74 35 2e 51 74 20 69 rtError:.........from.PyQt5.Qt.i
10720 6d 70 6f 72 74 20 51 44 61 74 65 54 69 6d 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 71 74 5f mport.QDateTime..........def.qt_
10740 66 72 6f 6d 5f 64 74 28 64 2c 20 61 73 5f 75 74 63 3a 20 62 6f 6f 6c 20 3d 20 46 61 6c 73 65 2c from_dt(d,.as_utc:.bool.=.False,
10760 20 61 73 73 75 6d 65 5f 75 74 63 3a 20 62 6f 6f 6c 20 3d 20 46 61 6c 73 65 29 3a 0a 20 20 20 20 .assume_utc:.bool.=.False):.....
10780 20 20 20 20 72 65 74 75 72 6e 20 51 44 61 74 65 54 69 6d 65 28 64 29 0a 50 4b 03 04 14 00 00 00 ....return.QDateTime(d).PK......
107a0 00 00 54 63 35 5a 55 00 bd df b7 18 00 00 b7 18 00 00 18 00 00 00 63 6f 6d 6d 6f 6e 5f 75 74 69 ..Tc5ZU...............common_uti
107c0 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 ls/librarys.py#!/usr/bin/env.pyt
107e0 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f hon..__license__...=.'GPL.v3'.__
10800 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 31 31 2c 20 47 72 61 6e 74 20 44 72 61 6b 65 copyright__.=.'2011,.Grant.Drake
10820 20 3c 67 72 61 6e 74 2e 64 72 61 6b 65 40 67 6d 61 69 6c 2e 63 6f 6d 3e 20 3b 20 32 30 32 30 2c .<grant.drake@gmail.com>.;.2020,
10840 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a .un_pogaz.<un.pogaz@gmail.com>'.
10860 0a 0a 74 72 79 3a 0a 20 20 20 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 ..try:.....load_translations().e
10880 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 xcept.NameError:.....pass..#.loa
108a0 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 d_translations().added.in.calibr
108c0 65 20 31 2e 39 0a 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 4c 69 73 74 0a 0a e.1.9..from.typing.import.List..
108e0 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 20 69 6d 70 6f 72 74 20 65 72 72 6f 72 5f 64 from.calibre.gui2.import.error_d
10900 69 61 6c 6f 67 0a 0a 66 72 6f 6d 20 2e 20 69 6d 70 6f 72 74 20 47 55 49 2c 20 50 4c 55 47 49 4e ialog..from...import.GUI,.PLUGIN
10920 5f 4e 41 4d 45 2c 20 63 75 72 72 65 6e 74 5f 64 62 0a 66 72 6f 6d 20 2e 63 6f 6c 75 6d 6e 73 20 _NAME,.current_db.from..columns.
10940 69 6d 70 6f 72 74 20 67 65 74 5f 63 61 74 65 67 6f 72 69 65 73 0a 66 72 6f 6d 20 2e 63 6f 6d 70 import.get_categories.from..comp
10960 61 74 69 62 69 6c 69 74 79 20 69 6d 70 6f 72 74 20 63 61 74 65 67 6f 72 79 5f 64 69 73 70 6c 61 atibility.import.category_displa
10980 79 5f 6f 72 64 65 72 0a 0a 74 72 79 3a 0a 20 20 20 20 69 6d 70 6f 72 74 20 72 65 0a 20 20 20 20 y_order..try:.....import.re.....
109a0 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 75 74 69 6c 73 2e 63 6f 6e 66 69 67 20 69 .....from.calibre.utils.config.i
109c0 6d 70 6f 72 74 20 74 77 65 61 6b 73 0a 20 20 20 20 61 75 74 68 6f 72 73 5f 73 70 6c 69 74 5f 72 mport.tweaks.....authors_split_r
109e0 65 67 65 78 20 3d 20 74 77 65 61 6b 73 5b 27 61 75 74 68 6f 72 73 5f 73 70 6c 69 74 5f 72 65 67 egex.=.tweaks['authors_split_reg
10a00 65 78 27 5d 0a 20 20 20 20 72 65 2e 63 6f 6d 70 69 6c 65 28 61 75 74 68 6f 72 73 5f 73 70 6c 69 ex'].....re.compile(authors_spli
10a20 74 5f 72 65 67 65 78 29 0a 20 20 20 20 64 65 6c 20 72 65 2c 20 74 77 65 61 6b 73 0a 65 78 63 65 t_regex).....del.re,.tweaks.exce
10a40 70 74 20 45 78 63 65 70 74 69 6f 6e 3a 0a 20 20 20 20 61 75 74 68 6f 72 73 5f 73 70 6c 69 74 5f pt.Exception:.....authors_split_
10a60 72 65 67 65 78 20 3d 20 72 27 28 3f 69 29 2c 3f 5c 73 2b 28 61 6e 64 7c 77 69 74 68 29 5c 73 2b regex.=.r'(?i),?\s+(and|with)\s+
10a80 27 0a 20 20 20 20 27 27 27 74 77 65 61 6b 73 20 73 70 6c 69 74 20 72 65 67 65 78 20 66 6f 72 20 '.....'''tweaks.split.regex.for.
10aa0 61 75 74 68 6f 72 73 27 27 27 0a 0a 0a 64 65 66 20 73 74 72 69 6e 67 5f 74 6f 5f 61 75 74 68 6f authors'''...def.string_to_autho
10ac0 72 73 28 72 61 77 5f 73 74 72 69 6e 67 3a 20 73 74 72 29 20 2d 3e 20 4c 69 73 74 5b 73 74 72 5d rs(raw_string:.str).->.List[str]
10ae0 3a 0a 20 20 20 20 27 53 70 6c 69 74 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 6c 69 73 :.....'Split.a.string.into.a.lis
10b00 74 20 6f 66 20 61 75 74 68 6f 72 73 27 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 65 t.of.authors'.....from.calibre.e
10b20 62 6f 6f 6b 73 2e 6d 65 74 61 64 61 74 61 20 69 6d 70 6f 72 74 20 73 74 72 69 6e 67 5f 74 6f 5f books.metadata.import.string_to_
10b40 61 75 74 68 6f 72 73 0a 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 69 6e 67 5f 74 6f 5f 61 75 74 authors.....return.string_to_aut
10b60 68 6f 72 73 28 72 61 77 5f 73 74 72 69 6e 67 29 0a 0a 0a 64 65 66 20 6e 6f 5f 6c 61 75 6e 63 68 hors(raw_string)...def.no_launch
10b80 5f 65 72 72 6f 72 28 74 69 74 6c 65 2c 20 6e 61 6d 65 3a 20 73 74 72 3d 4e 6f 6e 65 2c 20 6d 73 _error(title,.name:.str=None,.ms
10ba0 67 3a 20 73 74 72 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 27 53 68 6f 77 20 61 20 65 72 72 6f 72 20 g:.str=None):.....'Show.a.error.
10bc0 64 69 61 6c 6f 67 20 20 66 6f 72 20 61 6e 20 6f 70 65 72 61 74 69 6f 6e 20 74 68 61 74 20 63 61 dialog..for.an.operation.that.ca
10be0 6e 6e 6f 74 20 62 65 20 6c 61 75 6e 63 68 65 64 27 0a 20 20 20 20 0a 20 20 20 20 69 66 20 6d 73 nnot.be.launched'..........if.ms
10c00 67 20 61 6e 64 20 6c 65 6e 28 6d 73 67 29 20 3e 20 30 3a 0a 20 20 20 20 20 20 20 20 6d 73 67 20 g.and.len(msg).>.0:.........msg.
10c20 3d 20 27 5c 6e 27 2b 6d 73 67 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 6d 73 67 =.'\n'+msg.....else:.........msg
10c40 20 3d 20 27 27 0a 20 20 20 20 0a 20 20 20 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 28 0a 20 20 20 .=.''..........error_dialog(....
10c60 20 20 20 20 20 47 55 49 2c 0a 20 20 20 20 20 20 20 20 74 69 74 6c 65 2c 0a 20 20 20 20 20 20 20 .....GUI,.........title,........
10c80 20 28 74 69 74 6c 65 20 2b 27 2e 5c 6e 27 2b 20 5f 28 27 43 6f 75 6c 64 20 6e 6f 74 20 74 6f 20 .(title.+'.\n'+._('Could.not.to.
10ca0 6c 61 75 6e 63 68 20 7b 3a 73 7d 27 29 2e 66 6f 72 6d 61 74 28 50 4c 55 47 49 4e 5f 4e 41 4d 45 launch.{:s}').format(PLUGIN_NAME
10cc0 20 6f 72 20 6e 61 6d 65 29 20 2b 20 6d 73 67 29 2c 0a 20 20 20 20 20 20 20 20 73 68 6f 77 3d 54 .or.name).+.msg),.........show=T
10ce0 72 75 65 2c 0a 20 20 20 20 20 20 20 20 73 68 6f 77 5f 63 6f 70 79 5f 62 75 74 74 6f 6e 3d 46 61 rue,.........show_copy_button=Fa
10d00 6c 73 65 2c 0a 20 20 20 20 29 0a 0a 0a 64 65 66 20 5f 42 6f 6f 6b 49 64 73 5f 65 72 72 6f 72 28 lse,.....)...def._BookIds_error(
10d20 62 6f 6f 6b 5f 69 64 73 3a 20 4c 69 73 74 5b 69 6e 74 5d 2c 20 73 68 6f 77 5f 65 72 72 6f 72 3a book_ids:.List[int],.show_error:
10d40 20 62 6f 6f 6c 2c 20 74 69 74 6c 65 3a 20 73 74 72 2c 20 6e 61 6d 65 3a 20 73 74 72 3d 4e 6f 6e .bool,.title:.str,.name:.str=Non
10d60 65 29 3a 0a 20 20 20 20 69 66 20 6e 6f 74 20 62 6f 6f 6b 5f 69 64 73 20 61 6e 64 20 73 68 6f 77 e):.....if.not.book_ids.and.show
10d80 5f 65 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 6e 6f 5f 6c 61 75 6e 63 68 5f 65 72 72 6f 72 28 _error:.........no_launch_error(
10da0 74 69 74 6c 65 2c 20 6e 61 6d 65 3d 6e 61 6d 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f title,.name=name).....return.boo
10dc0 6b 5f 69 64 73 0a 0a 0a 64 65 66 20 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 73 65 6c 65 63 74 65 64 k_ids...def.get_BookIds_selected
10de0 28 73 68 6f 77 5f 65 72 72 6f 72 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 27 27 27 72 65 74 75 72 (show_error=False):.....'''retur
10e00 6e 20 74 68 65 20 62 6f 6f 6b 73 20 69 64 20 73 65 6c 65 63 74 65 64 20 69 6e 20 74 68 65 20 67 n.the.books.id.selected.in.the.g
10e20 75 69 27 27 27 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 69 64 73 20 3d 20 47 55 49 ui'''.....try:.........ids.=.GUI
10e40 2e 6c 69 62 72 61 72 79 5f 76 69 65 77 2e 67 65 74 5f 73 65 6c 65 63 74 65 64 5f 69 64 73 28 29 .library_view.get_selected_ids()
10e60 0a 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 69 64 73 20 3d 20 5b 5d 0a 20 20 .....except:.........ids.=.[]...
10e80 20 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 42 6f 6f 6b 49 64 73 5f 65 72 72 6f 72 28 69 64 73 2c ......return._BookIds_error(ids,
10ea0 20 73 68 6f 77 5f 65 72 72 6f 72 2c 20 5f 28 27 4e 6f 20 62 6f 6f 6b 20 73 65 6c 65 63 74 65 64 .show_error,._('No.book.selected
10ec0 27 29 29 0a 0a 0a 64 65 66 20 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 61 6c 6c 28 73 68 6f 77 5f 65 '))...def.get_BookIds_all(show_e
10ee0 72 72 6f 72 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 27 27 27 72 65 74 75 72 6e 20 61 6c 6c 20 62 rror=False):.....'''return.all.b
10f00 6f 6f 6b 73 20 69 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 27 27 27 0a 20 20 20 20 69 64 ooks.id.in.the.library'''.....id
10f20 73 20 3d 20 63 75 72 72 65 6e 74 5f 64 62 28 29 2e 61 6c 6c 5f 69 64 73 28 29 0a 20 20 20 20 72 s.=.current_db().all_ids().....r
10f40 65 74 75 72 6e 20 5f 42 6f 6f 6b 49 64 73 5f 65 72 72 6f 72 28 69 64 73 2c 20 73 68 6f 77 5f 65 eturn._BookIds_error(ids,.show_e
10f60 72 72 6f 72 2c 20 5f 28 27 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 27 rror,._('No.book.in.the.library'
10f80 29 29 0a 0a 0a 64 65 66 20 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 76 69 72 74 75 61 6c 28 73 68 6f ))...def.get_BookIds_virtual(sho
10fa0 77 5f 65 72 72 6f 72 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 27 27 27 72 65 74 75 72 6e 20 74 68 w_error=False):.....'''return.th
10fc0 65 20 62 6f 6f 6b 73 20 69 64 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 e.books.id.of.the.virtual.librar
10fe0 79 20 28 77 69 74 68 6f 75 74 20 73 65 61 72 63 68 20 72 65 73 74 72 69 63 74 69 6f 6e 29 27 27 y.(without.search.restriction)''
11000 27 0a 20 20 20 20 69 64 73 20 3d 20 67 65 74 5f 42 6f 6f 6b 49 64 73 28 27 27 2c 20 75 73 65 5f '.....ids.=.get_BookIds('',.use_
11020 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e 3d 46 61 6c 73 65 2c 20 75 73 65 5f 76 69 search_restriction=False,.use_vi
11040 72 74 75 61 6c 5f 6c 69 62 72 61 72 79 3d 54 72 75 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 5f rtual_library=True).....return._
11060 42 6f 6f 6b 49 64 73 5f 65 72 72 6f 72 28 69 64 73 2c 20 73 68 6f 77 5f 65 72 72 6f 72 2c 20 5f BookIds_error(ids,.show_error,._
11080 28 27 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 79 ('No.book.in.the.virtual.library
110a0 27 29 29 0a 0a 0a 64 65 66 20 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 66 69 6c 74 65 72 65 64 28 73 '))...def.get_BookIds_filtered(s
110c0 68 6f 77 5f 65 72 72 6f 72 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 27 27 27 72 65 74 75 72 6e 20 how_error=False):.....'''return.
110e0 74 68 65 20 62 6f 6f 6b 73 20 69 64 20 6f 66 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 the.books.id.of.the.virtual.libr
11100 61 72 79 20 41 4e 44 20 73 65 61 72 63 68 20 72 65 73 74 72 69 63 74 69 6f 6e 20 61 70 70 6c 69 ary.AND.search.restriction.appli
11120 65 64 2e 0a 20 20 20 20 54 68 69 73 20 69 73 20 74 68 65 20 73 74 72 69 63 74 65 73 74 20 72 65 ed......This.is.the.strictest.re
11140 73 75 6c 74 27 27 27 0a 20 20 20 20 69 64 73 20 3d 20 67 65 74 5f 42 6f 6f 6b 49 64 73 28 27 27 sult'''.....ids.=.get_BookIds(''
11160 2c 20 75 73 65 5f 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e 3d 54 72 75 65 2c 20 75 ,.use_search_restriction=True,.u
11180 73 65 5f 76 69 72 74 75 61 6c 5f 6c 69 62 72 61 72 79 3d 54 72 75 65 29 0a 20 20 20 20 72 65 74 se_virtual_library=True).....ret
111a0 75 72 6e 20 5f 42 6f 6f 6b 49 64 73 5f 65 72 72 6f 72 28 69 64 73 2c 20 73 68 6f 77 5f 65 72 72 urn._BookIds_error(ids,.show_err
111c0 6f 72 2c 20 5f 28 27 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 or,._('No.book.in.the.virtual.li
111e0 62 72 61 72 79 27 29 29 0a 0a 0a 64 65 66 20 67 65 74 5f 42 6f 6f 6b 49 64 73 5f 73 65 61 72 63 brary'))...def.get_BookIds_searc
11200 68 28 73 68 6f 77 5f 65 72 72 6f 72 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 27 27 27 72 65 74 75 h(show_error=False):.....'''retu
11220 72 6e 20 74 68 65 20 62 6f 6f 6b 73 20 69 64 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 rn.the.books.id.of.the.current.s
11240 65 61 72 63 68 27 27 27 0a 20 20 20 20 69 64 73 20 3d 20 67 65 74 5f 42 6f 6f 6b 49 64 73 28 67 earch'''.....ids.=.get_BookIds(g
11260 65 74 5f 63 75 72 65 6e 74 5f 73 65 61 72 63 68 28 29 2c 20 75 73 65 5f 73 65 61 72 63 68 5f 72 et_curent_search(),.use_search_r
11280 65 73 74 72 69 63 74 69 6f 6e 3d 54 72 75 65 2c 20 75 73 65 5f 76 69 72 74 75 61 6c 5f 6c 69 62 estriction=True,.use_virtual_lib
112a0 72 61 72 79 3d 54 72 75 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 42 6f 6f 6b 49 64 73 5f 65 rary=True).....return._BookIds_e
112c0 72 72 6f 72 28 69 64 73 2c 20 73 68 6f 77 5f 65 72 72 6f 72 2c 20 5f 28 27 4e 6f 20 62 6f 6f 6b rror(ids,.show_error,._('No.book
112e0 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 61 72 63 68 27 29 29 0a 0a 0a 64 65 66 20 .in.the.current.search'))...def.
11300 67 65 74 5f 42 6f 6f 6b 49 64 73 28 71 75 65 72 79 2c 20 75 73 65 5f 73 65 61 72 63 68 5f 72 65 get_BookIds(query,.use_search_re
11320 73 74 72 69 63 74 69 6f 6e 3d 54 72 75 65 2c 20 75 73 65 5f 76 69 72 74 75 61 6c 5f 6c 69 62 72 striction=True,.use_virtual_libr
11340 61 72 79 3d 54 72 75 65 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 74 68 ary=True):.....'''.....return.th
11360 65 20 62 6f 6f 6b 73 20 69 64 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 e.books.id.corresponding.to.the.
11380 71 75 65 72 79 0a 20 20 20 20 0a 20 20 20 20 71 75 65 72 79 3a 0a 20 20 20 20 20 20 20 20 53 65 query..........query:.........Se
113a0 61 72 63 68 20 71 75 65 72 79 20 6f 66 20 77 61 6e 74 65 64 20 62 6f 6f 6b 73 0a 20 20 20 20 0a arch.query.of.wanted.books......
113c0 20 20 20 20 75 73 65 5f 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e 3a 0a 20 20 20 20 ....use_search_restriction:.....
113e0 20 20 20 20 4c 69 6d 69 74 20 74 68 65 20 73 65 61 72 63 68 20 74 6f 20 74 68 65 20 61 63 74 75 ....Limit.the.search.to.the.actu
11400 61 6c 20 73 65 61 72 63 68 20 72 65 73 74 72 69 63 74 69 6f 6e 0a 20 20 20 20 0a 20 20 20 20 75 al.search.restriction..........u
11420 73 65 5f 76 69 72 74 75 61 6c 5f 6c 69 62 72 61 72 79 3a 0a 20 20 20 20 20 20 20 20 4c 69 6d 69 se_virtual_library:.........Limi
11440 74 20 74 68 65 20 73 65 61 72 63 68 20 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 76 69 72 74 75 t.the.search.to.the.actual.virtu
11460 61 6c 20 6c 69 62 72 61 72 79 0a 20 20 20 20 27 27 27 0a 20 20 20 20 64 61 74 61 20 3d 20 63 75 al.library.....'''.....data.=.cu
11480 72 72 65 6e 74 5f 64 62 28 29 2e 64 61 74 61 0a 20 20 20 20 71 75 65 72 79 20 3d 20 71 75 65 72 rrent_db().data.....query.=.quer
114a0 79 20 6f 72 20 27 27 0a 20 20 20 20 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e 20 3d y.or.''.....search_restriction.=
114c0 20 64 61 74 61 2e 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e 20 69 66 20 75 73 65 5f .data.search_restriction.if.use_
114e0 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e 20 65 6c 73 65 20 27 27 0a 20 20 20 20 72 search_restriction.else.''.....r
11500 65 74 75 72 6e 20 64 61 74 61 2e 73 65 61 72 63 68 5f 67 65 74 74 69 6e 67 5f 69 64 73 28 0a 20 eturn.data.search_getting_ids(..
11520 20 20 20 20 20 20 20 71 75 65 72 79 2c 20 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e .......query,.search_restriction
11540 2c 0a 20 20 20 20 20 20 20 20 73 65 74 5f 72 65 73 74 72 69 63 74 69 6f 6e 5f 63 6f 75 6e 74 3d ,.........set_restriction_count=
11560 46 61 6c 73 65 2c 20 75 73 65 5f 76 69 72 74 75 61 6c 5f 6c 69 62 72 61 72 79 3d 75 73 65 5f 76 False,.use_virtual_library=use_v
11580 69 72 74 75 61 6c 5f 6c 69 62 72 61 72 79 2c 20 73 6f 72 74 5f 72 65 73 75 6c 74 73 3d 54 72 75 irtual_library,.sort_results=Tru
115a0 65 2c 0a 20 20 20 20 29 0a 0a 0a 64 65 66 20 67 65 74 5f 63 75 72 65 6e 74 5f 73 65 61 72 63 68 e,.....)...def.get_curent_search
115c0 28 29 3a 0a 20 20 20 20 27 27 27 47 65 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 61 72 63 ():.....'''Get.the.current.searc
115e0 68 20 73 74 72 69 6e 67 2e 20 43 61 6e 20 62 65 20 69 6e 76 61 6c 69 64 27 27 27 0a 20 20 20 20 h.string..Can.be.invalid'''.....
11600 72 65 74 75 72 6e 20 47 55 49 2e 73 65 61 72 63 68 2e 63 75 72 72 65 6e 74 5f 74 65 78 74 0a 0a return.GUI.search.current_text..
11620 0a 64 65 66 20 67 65 74 5f 6c 61 73 74 5f 73 65 61 72 63 68 28 29 3a 0a 20 20 20 20 27 27 27 47 .def.get_last_search():.....'''G
11640 65 74 20 6c 61 73 74 20 73 65 61 72 63 68 20 73 74 72 69 6e 67 20 70 65 72 66 6f 72 6d 65 64 20 et.last.search.string.performed.
11660 77 69 74 68 20 73 75 63 63 65 73 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 47 55 49 2e 6c 69 with.succes'''.....return.GUI.li
11680 62 72 61 72 79 5f 76 69 65 77 2e 6d 6f 64 65 6c 28 29 2e 6c 61 73 74 5f 73 65 61 72 63 68 0a 0a brary_view.model().last_search..
116a0 0a 64 65 66 20 67 65 74 5f 63 75 72 65 6e 74 5f 76 69 72 74 75 61 6c 28 29 3a 0a 20 20 20 20 27 .def.get_curent_virtual():.....'
116c0 27 27 54 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 79 2c 20 63 61 6e 27 74 20 62 65 20 ''The.virtual.library,.can't.be.
116e0 61 20 74 65 6d 70 6f 72 61 72 79 20 56 4c 27 27 27 0a 20 20 20 20 64 61 74 61 20 3d 20 63 75 72 a.temporary.VL'''.....data.=.cur
11700 72 65 6e 74 5f 64 62 28 29 2e 64 61 74 61 0a 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 2e 67 rent_db().data.....return.data.g
11720 65 74 5f 62 61 73 65 5f 72 65 73 74 72 69 63 74 69 6f 6e 5f 6e 61 6d 65 28 29 2c 20 64 61 74 61 et_base_restriction_name(),.data
11740 2e 67 65 74 5f 62 61 73 65 5f 72 65 73 74 72 69 63 74 69 6f 6e 28 29 0a 0a 0a 64 65 66 20 67 65 .get_base_restriction()...def.ge
11760 74 5f 63 75 72 65 6e 74 5f 72 65 73 74 72 69 63 74 69 6f 6e 5f 73 65 61 72 63 68 28 29 3a 0a 20 t_curent_restriction_search():..
11780 20 20 20 27 27 27 54 68 65 20 73 65 61 72 63 68 20 72 65 73 74 72 69 63 74 69 6f 6e 20 69 73 20 ...'''The.search.restriction.is.
117a0 61 20 74 6f 70 20 6c 65 76 65 6c 20 66 69 6c 74 72 65 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 a.top.level.filtre,.based.on.the
117c0 20 73 61 76 65 64 20 73 65 61 72 63 68 65 73 27 27 27 0a 20 20 20 20 64 61 74 61 20 3d 20 63 75 .saved.searches'''.....data.=.cu
117e0 72 72 65 6e 74 5f 64 62 28 29 2e 64 61 74 61 0a 20 20 20 20 6e 61 6d 65 20 3d 20 64 61 74 61 2e rrent_db().data.....name.=.data.
11800 67 65 74 5f 73 65 61 72 63 68 5f 72 65 73 74 72 69 63 74 69 6f 6e 5f 6e 61 6d 65 28 29 0a 20 20 get_search_restriction_name()...
11820 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 2c 20 67 65 74 5f 73 61 76 65 64 5f 73 65 61 72 63 68 65 ..return.name,.get_saved_searche
11840 73 28 29 2e 67 65 74 28 6e 61 6d 65 2c 20 64 61 74 61 2e 73 65 61 72 63 68 5f 72 65 73 74 72 69 s().get(name,.data.search_restri
11860 63 74 69 6f 6e 29 0a 0a 0a 64 65 66 20 67 65 74 5f 76 69 72 74 75 61 6c 5f 6c 69 62 72 61 72 69 ction)...def.get_virtual_librari
11880 65 73 28 29 3a 0a 20 20 20 20 27 27 27 47 65 74 20 61 6c 6c 20 76 69 72 74 75 61 6c 20 6c 69 62 es():.....'''Get.all.virtual.lib
118a0 72 61 72 79 20 73 65 74 20 69 6e 20 74 68 65 20 64 61 74 61 62 61 73 65 27 27 27 0a 20 20 20 20 rary.set.in.the.database'''.....
118c0 72 65 74 75 72 6e 20 63 75 72 72 65 6e 74 5f 64 62 28 29 2e 70 72 65 66 73 2e 67 65 74 28 27 76 return.current_db().prefs.get('v
118e0 69 72 74 75 61 6c 5f 6c 69 62 72 61 72 69 65 73 27 2c 20 7b 7d 29 0a 0a 0a 64 65 66 20 67 65 74 irtual_libraries',.{})...def.get
11900 5f 73 61 76 65 64 5f 73 65 61 72 63 68 65 73 28 29 3a 0a 20 20 20 20 27 27 27 47 65 74 20 61 6c _saved_searches():.....'''Get.al
11920 6c 20 73 61 76 65 64 20 73 65 61 72 63 68 65 73 20 73 65 74 20 69 6e 20 74 68 65 20 64 61 74 61 l.saved.searches.set.in.the.data
11940 62 61 73 65 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 63 75 72 72 65 6e 74 5f 64 62 28 29 2e base'''.....return.current_db().
11960 70 72 65 66 73 2e 67 65 74 28 27 73 61 76 65 64 5f 73 65 61 72 63 68 65 73 27 2c 20 7b 7d 29 0a prefs.get('saved_searches',.{}).
11980 0a 0a 64 65 66 20 67 65 74 5f 6d 61 72 6b 65 64 28 6c 61 62 65 6c 3a 20 73 74 72 3d 4e 6f 6e 65 ..def.get_marked(label:.str=None
119a0 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 47 65 74 20 74 68 65 20 6d 61 72 6b 65 64 20 62 6f ):.....'''.....Get.the.marked.bo
119c0 6f 6b 73 0a 20 20 20 20 0a 20 20 20 20 6c 61 62 65 6c 3a 0a 20 20 20 20 20 20 20 20 46 69 6c 74 oks..........label:.........Filt
119e0 72 65 20 74 6f 20 6f 6e 6c 79 20 6c 61 62 65 6c 2e 20 4e 6f 20 63 61 73 65 20 73 65 6e 73 69 74 re.to.only.label..No.case.sensit
11a00 69 76 65 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 3a 20 7b 20 6c 61 62 65 6c 20 3a 20 5b ive..........return:.{.label.:.[
11a20 69 64 2c 5d 20 7d 0a 20 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 72 73 6c 74 20 3d 20 7b id,].}.....'''..........rslt.=.{
11a40 7d 0a 20 20 20 20 66 6f 72 20 6b 2c 76 20 69 6e 20 63 75 72 72 65 6e 74 5f 64 62 28 29 2e 64 61 }.....for.k,v.in.current_db().da
11a60 74 61 2e 6d 61 72 6b 65 64 5f 69 64 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 76 ta.marked_ids.items():.........v
11a80 20 3d 20 73 74 72 28 76 29 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 76 20 6e .=.str(v).lower().........if.v.n
11aa0 6f 74 20 69 6e 20 72 73 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b 76 5d 20 ot.in.rslt:.............rslt[v].
11ac0 3d 20 5b 6b 5d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 =.[k].........else:.............
11ae0 72 73 6c 74 5b 76 5d 2e 61 70 70 65 6e 64 28 6b 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 6c 61 rslt[v].append(k)..........if.la
11b00 62 65 6c 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 bel.is.None:.........return.rslt
11b20 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 6c 61 62 65 6c 20 3d 20 73 74 72 28 6c .....else:.........label.=.str(l
11b40 61 62 65 6c 29 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 6c 61 abel).lower().........return.{la
11b60 62 65 6c 3a 72 73 6c 74 5b 6c 61 62 65 6c 5d 7d 0a 0a 0a 64 65 66 20 73 65 74 5f 6d 61 72 6b 65 bel:rslt[label]}...def.set_marke
11b80 64 28 6c 61 62 65 6c 3a 20 73 74 72 2c 20 62 6f 6f 6b 5f 69 64 73 3a 20 4c 69 73 74 5b 69 6e 74 d(label:.str,.book_ids:.List[int
11ba0 5d 2c 20 61 70 70 65 6e 64 3d 46 61 6c 73 65 2c 20 72 65 73 65 74 3d 46 61 6c 73 65 29 3a 0a 20 ],.append=False,.reset=False):..
11bc0 20 20 20 27 27 27 0a 20 20 20 20 53 65 74 20 74 68 65 20 6d 61 72 6b 65 64 20 62 6f 6f 6b 73 0a ...'''.....Set.the.marked.books.
11be0 20 20 20 20 0a 20 20 20 20 6c 61 62 65 6c 3a 0a 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 20 6c .........label:.........String.l
11c00 61 62 65 6c 2e 20 4e 6f 20 63 61 73 65 20 73 65 6e 73 69 74 69 76 65 0a 20 20 20 20 0a 20 20 20 abel..No.case.sensitive.........
11c20 20 62 6f 6f 6b 5f 69 64 73 3a 0a 20 20 20 20 20 20 20 20 42 6f 6f 6b 20 69 64 20 74 6f 20 61 66 .book_ids:.........Book.id.to.af
11c40 66 65 63 74 20 74 68 65 20 6c 61 62 65 6c 0a 20 20 20 20 0a 20 20 20 20 61 70 70 65 6e 64 3a 0a fect.the.label..........append:.
11c60 20 20 20 20 20 20 20 20 41 70 70 65 6e 64 20 74 68 65 20 62 6f 6f 6b 20 69 64 20 74 6f 20 74 68 ........Append.the.book.id.to.th
11c80 65 20 62 6f 6f 6b 73 20 74 68 61 74 20 61 6c 72 65 61 64 79 20 74 68 69 73 20 6c 61 62 65 6c 2e e.books.that.already.this.label.
11ca0 0a 20 20 20 20 20 20 20 20 42 79 20 64 65 66 61 75 6c 74 20 63 6c 65 61 72 20 74 68 65 20 70 72 .........By.default.clear.the.pr
11cc0 65 76 69 6f 75 73 20 62 6f 6f 6b 20 77 69 74 68 20 74 68 69 73 20 6c 61 62 6c 65 2e 0a 20 20 20 evious.book.with.this.lable.....
11ce0 20 0a 20 20 20 20 62 6f 6f 6b 5f 69 64 73 3a 0a 20 20 20 20 20 20 20 20 42 6f 6f 6b 20 69 64 20 ......book_ids:.........Book.id.
11d00 74 6f 20 61 66 66 65 63 74 20 74 68 65 20 6c 61 62 65 6c 0a 20 20 20 20 27 27 27 0a 20 20 20 20 to.affect.the.label.....'''.....
11d20 6c 61 62 65 6c 20 3d 20 73 74 72 28 6c 61 62 65 6c 29 2e 6c 6f 77 65 72 28 29 0a 20 20 20 20 6d label.=.str(label).lower().....m
11d40 61 72 6b 65 64 20 3d 20 7b 7d 20 69 66 20 72 65 73 65 74 20 65 6c 73 65 20 63 75 72 72 65 6e 74 arked.=.{}.if.reset.else.current
11d60 5f 64 62 28 29 2e 64 61 74 61 2e 6d 61 72 6b 65 64 5f 69 64 73 2e 63 6f 70 79 28 29 0a 20 20 20 _db().data.marked_ids.copy()....
11d80 20 0a 20 20 20 20 69 66 20 6e 6f 74 20 61 70 70 65 6e 64 3a 0a 20 20 20 20 20 20 20 20 64 65 6c ......if.not.append:.........del
11da0 5f 69 64 20 3d 20 5b 5d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 76 20 69 6e 20 6d 61 72 6b _id.=.[].........for.k,v.in.mark
11dc0 65 64 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 76 20 3d 3d 20 ed.items():.............if.v.==.
11de0 6c 61 62 65 6c 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 5f 69 64 2e 61 70 label:.................del_id.ap
11e00 70 65 6e 64 28 6b 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 20 69 pend(k)..................for.k.i
11e20 6e 20 64 65 6c 5f 69 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 6d 61 72 6b 65 64 n.del_id:.............del.marked
11e40 5b 6b 5d 0a 20 20 20 20 0a 20 20 20 20 6d 61 72 6b 65 64 2e 75 70 64 61 74 65 28 7b 69 64 78 3a [k]..........marked.update({idx:
11e60 6c 61 62 65 6c 20 66 6f 72 20 69 64 78 20 69 6e 20 62 6f 6f 6b 5f 69 64 73 7d 29 0a 20 20 20 20 label.for.idx.in.book_ids}).....
11e80 63 75 72 72 65 6e 74 5f 64 62 28 29 2e 64 61 74 61 2e 73 65 74 5f 6d 61 72 6b 65 64 5f 69 64 73 current_db().data.set_marked_ids
11ea0 28 6d 61 72 6b 65 64 29 0a 0a 0a 64 65 66 20 67 65 74 5f 63 61 74 65 67 6f 72 79 5f 69 63 6f 6e (marked)...def.get_category_icon
11ec0 73 5f 6d 61 70 28 29 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 47 55 49 2e 74 61 67 73 5f 76 69 65 s_map():.....return.GUI.tags_vie
11ee0 77 2e 6d 6f 64 65 6c 28 29 2e 63 61 74 65 67 6f 72 79 5f 63 75 73 74 6f 6d 5f 69 63 6f 6e 73 0a w.model().category_custom_icons.
11f00 0a 0a 64 65 66 20 67 65 74 5f 74 61 67 73 5f 62 72 6f 77 73 61 62 6c 65 5f 66 69 65 6c 64 73 28 ..def.get_tags_browsable_fields(
11f20 75 73 65 5f 64 65 66 61 75 6c 74 73 3d 46 61 6c 73 65 2c 20 6f 72 64 65 72 5f 6f 76 65 72 72 69 use_defaults=False,.order_overri
11f40 64 65 3a 20 4c 69 73 74 5b 73 74 72 5d 3d 4e 6f 6e 65 2c 20 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 de:.List[str]=None,.include_comp
11f60 6f 73 69 74 65 3d 54 72 75 65 29 3a 0a 20 20 20 20 69 66 20 75 73 65 5f 64 65 66 61 75 6c 74 73 osite=True):.....if.use_defaults
11f80 3a 0a 20 20 20 20 20 20 20 20 74 62 6f 20 3d 20 5b 5d 0a 20 20 20 20 65 6c 69 66 20 6f 72 64 65 :.........tbo.=.[].....elif.orde
11fa0 72 5f 6f 76 65 72 72 69 64 65 3a 0a 20 20 20 20 20 20 20 20 74 62 6f 20 3d 20 6f 72 64 65 72 5f r_override:.........tbo.=.order_
11fc0 6f 76 65 72 72 69 64 65 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 74 62 6f 20 3d override.....else:.........tbo.=
11fe0 20 63 75 72 72 65 6e 74 5f 64 62 28 29 2e 6e 65 77 5f 61 70 69 2e 70 72 65 66 28 27 74 61 67 5f .current_db().new_api.pref('tag_
12000 62 72 6f 77 73 65 72 5f 63 61 74 65 67 6f 72 79 5f 6f 72 64 65 72 27 2c 20 5b 5d 29 0a 20 20 20 browser_category_order',.[])....
12020 20 0a 20 20 20 20 72 65 74 75 72 6e 20 63 61 74 65 67 6f 72 79 5f 64 69 73 70 6c 61 79 5f 6f 72 ......return.category_display_or
12040 64 65 72 28 74 62 6f 2c 20 67 65 74 5f 63 61 74 65 67 6f 72 69 65 73 28 69 6e 63 6c 75 64 65 5f der(tbo,.get_categories(include_
12060 63 6f 6d 70 6f 73 69 74 65 3d 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 29 2e 6b 65 79 composite=include_composite).key
12080 73 28 29 29 0a 50 4b 03 04 14 00 00 00 00 00 8d 5d 35 5a 03 4b 8a c7 b9 17 00 00 b9 17 00 00 15 s()).PK.........]5Z.K...........
120a0 00 00 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6d 65 6e 75 73 2e 70 79 23 21 2f 75 73 72 2f 62 ...common_utils/menus.py#!/usr/b
120c0 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 in/env.python..__license__...=.'
120e0 47 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 31 31 2c 20 47 GPL.v3'.__copyright__.=.'2011,.G
12100 72 61 6e 74 20 44 72 61 6b 65 20 3c 67 72 61 6e 74 2e 64 72 61 6b 65 40 67 6d 61 69 6c 2e 63 6f rant.Drake.<grant.drake@gmail.co
12120 6d 3e 20 3b 20 32 30 32 30 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 67 6d m>.;.2020,.un_pogaz.<un.pogaz@gm
12140 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 6c 6f 61 64 5f 74 72 61 6e 73 6c ail.com>'...try:.....load_transl
12160 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f 72 3a 0a 20 20 20 20 70 ations().except.NameError:.....p
12180 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 20 61 64 64 65 64 ass..#.load_translations().added
121a0 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 .in.calibre.1.9..from.typing.imp
121c0 6f 72 74 20 41 6e 79 2c 20 43 61 6c 6c 61 62 6c 65 2c 20 4f 70 74 69 6f 6e 61 6c 0a 0a 74 72 79 ort.Any,.Callable,.Optional..try
121e0 3a 0a 20 20 20 20 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 69 6d 70 6f 72 74 20 51 41 63 74 69 6f :.....from.qt.core.import.QActio
12200 6e 2c 20 51 4d 65 6e 75 0a 65 78 63 65 70 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 n,.QMenu.except.ImportError:....
12220 20 66 72 6f 6d 20 50 79 51 74 35 2e 51 74 20 69 6d 70 6f 72 74 20 51 41 63 74 69 6f 6e 2c 20 51 .from.PyQt5.Qt.import.QAction,.Q
12240 4d 65 6e 75 0a 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 2e 61 63 74 69 6f 6e 73 20 Menu..from.calibre.gui2.actions.
12260 69 6d 70 6f 72 74 20 49 6e 74 65 72 66 61 63 65 41 63 74 69 6f 6e 2c 20 6d 65 6e 75 5f 61 63 74 import.InterfaceAction,.menu_act
12280 69 6f 6e 5f 75 6e 69 71 75 65 5f 6e 61 6d 65 0a 0a 66 72 6f 6d 20 2e 20 69 6d 70 6f 72 74 20 43 ion_unique_name..from...import.C
122a0 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 2c 20 47 55 49 2c 20 67 65 74 5f 69 63 6f 6e 0a 0a 23 ALIBRE_VERSION,.GUI,.get_icon..#
122c0 20 47 6c 6f 62 61 6c 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 6f 75 72 20 6d 65 6e 75 20 61 .Global.definition.of.our.menu.a
122e0 63 74 69 6f 6e 73 2e 20 55 73 65 64 20 74 6f 20 65 6e 73 75 72 65 20 77 65 20 63 61 6e 20 63 6c ctions..Used.to.ensure.we.can.cl
12300 65 61 6e 6c 79 20 75 6e 72 65 67 69 73 74 65 72 0a 23 20 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 eanly.unregister.#.keyboard.shor
12320 74 63 75 74 73 20 77 68 65 6e 20 72 65 62 75 69 6c 64 69 6e 67 20 6f 75 72 20 6d 65 6e 75 73 2e tcuts.when.rebuilding.our.menus.
12340 0a 70 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 20 3d 20 5b 5d 0a 0a 0a 64 65 66 20 .plugin_menu_actions.=.[]...def.
12360 75 6e 72 65 67 69 73 74 65 72 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 28 29 3a 0a 20 20 20 20 27 unregister_menu_actions():.....'
12380 27 27 0a 20 20 20 20 46 6f 72 20 70 6c 75 67 69 6e 73 20 74 68 61 74 20 64 79 6e 61 6d 69 63 61 ''.....For.plugins.that.dynamica
123a0 6c 6c 79 20 72 65 62 75 69 6c 64 20 74 68 65 69 72 20 6d 65 6e 75 73 2c 20 77 65 20 6e 65 65 64 lly.rebuild.their.menus,.we.need
123c0 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 61 6e 79 0a 20 20 20 20 6b 65 79 62 6f 61 72 64 .to.ensure.that.any.....keyboard
123e0 20 73 68 6f 72 74 63 75 74 73 20 61 72 65 20 75 6e 72 65 67 69 73 74 65 72 65 64 20 66 6f 72 20 .shortcuts.are.unregistered.for.
12400 74 68 65 6d 20 65 61 63 68 20 74 69 6d 65 2e 0a 20 20 20 20 4d 61 6b 65 20 73 75 72 65 20 74 6f them.each.time......Make.sure.to
12420 20 63 61 6c 6c 20 74 68 69 73 20 62 65 66 6f 72 65 20 2e 63 6c 65 61 72 28 29 20 6f 66 20 74 68 .call.this.before..clear().of.th
12440 65 20 6d 65 6e 75 20 69 74 65 6d 73 2e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 67 6c 6f 62 61 6c e.menu.items......'''.....global
12460 20 70 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 0a 20 20 20 20 66 6f 72 20 61 63 74 .plugin_menu_actions.....for.act
12480 69 6f 6e 20 69 6e 20 70 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 3a 0a 20 20 20 20 ion.in.plugin_menu_actions:.....
124a0 20 20 20 20 69 66 20 68 61 73 61 74 74 72 28 61 63 74 69 6f 6e 2c 20 27 63 61 6c 69 62 72 65 5f ....if.hasattr(action,.'calibre_
124c0 73 68 6f 72 74 63 75 74 5f 75 6e 69 71 75 65 5f 6e 61 6d 65 27 29 3a 0a 20 20 20 20 20 20 20 20 shortcut_unique_name'):.........
124e0 20 20 20 20 47 55 49 2e 6b 65 79 62 6f 61 72 64 2e 75 6e 72 65 67 69 73 74 65 72 5f 73 68 6f 72 ....GUI.keyboard.unregister_shor
12500 74 63 75 74 28 61 63 74 69 6f 6e 2e 63 61 6c 69 62 72 65 5f 73 68 6f 72 74 63 75 74 5f 75 6e 69 tcut(action.calibre_shortcut_uni
12520 71 75 65 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 23 20 73 74 61 72 74 69 6e 67 20 69 6e 20 que_name).........#.starting.in.
12540 63 61 6c 69 62 72 65 20 32 2e 31 30 2e 30 2c 20 61 63 74 69 6f 6e 73 20 61 72 65 20 72 65 67 69 calibre.2.10.0,.actions.are.regi
12560 73 74 65 72 73 20 61 74 0a 20 20 20 20 20 20 20 20 23 20 74 68 65 20 74 6f 70 20 67 75 69 20 6c sters.at.........#.the.top.gui.l
12580 65 76 65 6c 20 66 6f 72 20 4f 53 58 27 20 62 65 6e 65 66 69 74 2e 0a 20 20 20 20 20 20 20 20 69 evel.for.OSX'.benefit..........i
125a0 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 28 32 2c 31 30 2c 30 29 3a 0a 20 f.CALIBRE_VERSION.>=.(2,10,0):..
125c0 20 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...........try:.................
125e0 47 55 49 2e 72 65 6d 6f 76 65 41 63 74 69 6f 6e 28 61 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 GUI.removeAction(action)........
12600 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 .....except:.................pas
12620 73 0a 20 20 20 20 70 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 20 3d 20 5b 5d 0a 0a s.....plugin_menu_actions.=.[]..
12640 0a 64 65 66 20 63 72 65 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 5f 75 6e 69 71 75 65 28 0a .def.create_menu_action_unique(.
12660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 61 3a 20 ............................ia:.
12680 49 6e 74 65 72 66 61 63 65 41 63 74 69 6f 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 InterfaceAction,................
126a0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 5f 6d 65 6e 75 3a 20 51 4d 65 6e 75 2c .............parent_menu:.QMenu,
126c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6e .............................men
126e0 75 5f 74 65 78 74 3a 20 73 74 72 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 u_text:.str,....................
12700 20 20 20 20 20 20 20 20 20 69 6d 61 67 65 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 .........image:.str=None,.......
12720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 74 69 70 3a 20 73 ......................tooltip:.s
12740 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 tr=None,........................
12760 20 20 20 20 20 73 68 6f 72 74 63 75 74 3a 20 41 6e 79 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 .....shortcut:.Any=None,........
12780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 63 75 74 5f 6e 61 .....................shortcut_na
127a0 6d 65 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 me=None,........................
127c0 20 20 20 20 20 74 72 69 67 67 65 72 65 64 3a 20 43 61 6c 6c 61 62 6c 65 3d 4e 6f 6e 65 2c 0a 20 .....triggered:.Callable=None,..
127e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 5f 63 68 ...........................is_ch
12800 65 63 6b 65 64 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 2c 0a 20 20 20 20 ecked:.Optional[bool]=None,.....
12820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 69 71 75 65 5f 6e ........................unique_n
12840 61 6d 65 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ame:.str=None,..................
12860 20 20 20 20 20 20 20 20 20 20 20 66 61 76 6f 75 72 69 74 65 73 5f 6d 65 6e 75 5f 75 6e 69 71 75 ...........favourites_menu_uniqu
12880 65 5f 6e 61 6d 65 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e_name:.str=None,...............
128a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 2d 3e 20 51 41 63 74 69 6f 6e 3a 0a 20 20 20 20 ..............).->.QAction:.....
128c0 27 27 27 0a 20 20 20 20 43 72 65 61 74 65 20 61 20 6d 65 6e 75 20 61 63 74 69 6f 6e 20 77 69 74 '''.....Create.a.menu.action.wit
128e0 68 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 63 72 69 74 65 72 69 61 20 61 6e 64 20 61 63 74 h.the.specified.criteria.and.act
12900 69 6f 6e 2c 20 75 73 69 6e 67 20 74 68 65 20 6e 65 77 0a 20 20 20 20 49 6e 74 65 72 66 61 63 65 ion,.using.the.new.....Interface
12920 41 63 74 69 6f 6e 2e 63 72 65 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 28 29 20 66 75 6e 63 Action.create_menu_action().func
12940 74 69 6f 6e 20 77 68 69 63 68 20 65 6e 73 75 72 65 73 20 74 68 61 74 20 72 65 67 61 72 64 6c 65 tion.which.ensures.that.regardle
12960 73 73 20 6f 66 0a 20 20 20 20 77 68 65 74 68 65 72 20 61 20 73 68 6f 72 74 63 75 74 20 69 73 20 ss.of.....whether.a.shortcut.is.
12980 73 70 65 63 69 66 69 65 64 20 69 74 20 77 69 6c 6c 20 61 70 70 65 61 72 20 69 6e 20 50 72 65 66 specified.it.will.appear.in.Pref
129a0 65 72 65 6e 63 65 73 2d 3e 4b 65 79 62 6f 61 72 64 0a 20 20 20 20 0a 20 20 20 20 46 6f 72 20 61 erences->Keyboard..........For.a
129c0 20 66 75 6c 6c 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 .full.description.of.the.paramet
129e0 65 72 73 2c 20 73 65 65 3a 20 63 61 6c 69 62 72 65 2f 67 75 69 32 2f 61 63 74 69 6f 6e 73 2f 5f ers,.see:.calibre/gui2/actions/_
12a00 5f 69 6e 69 74 5f 5f 2e 70 79 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 72 69 67 5f 73 68 6f 72 _init__.py.....'''.....orig_shor
12a20 74 63 75 74 20 3d 20 73 68 6f 72 74 63 75 74 0a 20 20 20 20 6b 62 20 3d 20 69 61 2e 67 75 69 2e tcut.=.shortcut.....kb.=.ia.gui.
12a40 6b 65 79 62 6f 61 72 64 0a 20 20 20 20 69 66 20 75 6e 69 71 75 65 5f 6e 61 6d 65 20 69 73 20 4e keyboard.....if.unique_name.is.N
12a60 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 75 6e 69 71 75 65 5f 6e 61 6d 65 20 3d 20 6d 65 6e 75 5f one:.........unique_name.=.menu_
12a80 74 65 78 74 0a 20 20 20 20 69 66 20 73 68 6f 72 74 63 75 74 20 69 73 20 6e 6f 74 20 46 61 6c 73 text.....if.shortcut.is.not.Fals
12aa0 65 3a 0a 20 20 20 20 20 20 20 20 66 75 6c 6c 5f 75 6e 69 71 75 65 5f 6e 61 6d 65 20 3d 20 6d 65 e:.........full_unique_name.=.me
12ac0 6e 75 5f 61 63 74 69 6f 6e 5f 75 6e 69 71 75 65 5f 6e 61 6d 65 28 69 61 2c 20 75 6e 69 71 75 65 nu_action_unique_name(ia,.unique
12ae0 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 66 75 6c 6c 5f 75 6e 69 71 75 65 5f 6e 61 _name).........if.full_unique_na
12b00 6d 65 20 69 6e 20 6b 62 2e 73 68 6f 72 74 63 75 74 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 me.in.kb.shortcuts:.............
12b20 73 68 6f 72 74 63 75 74 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 shortcut.=.False.........else:..
12b40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 68 6f 72 74 63 75 74 20 69 73 20 6e 6f 74 20 4e 6f ...........if.shortcut.is.not.No
12b60 6e 65 20 61 6e 64 20 73 68 6f 72 74 63 75 74 20 69 73 20 6e 6f 74 20 46 61 6c 73 65 3a 0a 20 20 ne.and.shortcut.is.not.False:...
12b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 73 68 6f 72 74 63 75 74 29 20 3d ..............if.len(shortcut).=
12ba0 3d 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 63 75 =.0:.....................shortcu
12bc0 74 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 0a 20 20 20 20 69 66 20 73 68 6f 72 74 63 75 74 5f 6e 61 t.=.None..........if.shortcut_na
12be0 6d 65 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 73 68 6f 72 74 63 75 74 5f 6e 61 6d me.is.None:.........shortcut_nam
12c00 65 20 3d 20 6d 65 6e 75 5f 74 65 78 74 2e 72 65 70 6c 61 63 65 28 27 26 27 2c 27 27 29 0a 20 20 e.=.menu_text.replace('&','')...
12c20 20 20 0a 20 20 20 20 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 28 35 2c .......if.CALIBRE_VERSION.>=.(5,
12c40 34 2c 30 29 3a 0a 20 20 20 20 20 20 20 20 23 20 54 68 65 20 70 65 72 73 69 73 74 5f 73 68 6f 72 4,0):.........#.The.persist_shor
12c60 74 63 75 74 20 70 61 72 61 6d 65 74 65 72 20 6f 6e 6c 79 20 61 64 64 65 64 20 66 72 6f 6d 20 35 tcut.parameter.only.added.from.5
12c80 2e 34 2e 30 20 6f 6e 77 61 72 64 73 2e 0a 20 20 20 20 20 20 20 20 23 20 55 73 65 64 20 73 6f 20 .4.0.onwards..........#.Used.so.
12ca0 74 68 61 74 20 73 68 6f 72 74 63 75 74 73 20 73 70 65 63 69 66 69 63 20 74 6f 20 6f 74 68 65 72 that.shortcuts.specific.to.other
12cc0 20 6c 69 62 72 61 72 69 65 73 20 61 72 65 6e 27 74 20 64 69 73 63 61 72 64 65 64 2e 0a 20 20 20 .libraries.aren't.discarded.....
12ce0 20 20 20 20 20 61 63 20 3d 20 69 61 2e 63 72 65 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 28 .....ac.=.ia.create_menu_action(
12d00 70 61 72 65 6e 74 5f 6d 65 6e 75 2c 20 75 6e 69 71 75 65 5f 6e 61 6d 65 2c 20 6d 65 6e 75 5f 74 parent_menu,.unique_name,.menu_t
12d20 65 78 74 2c 20 69 63 6f 6e 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ext,.icon=None,.................
12d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 63 75 74 3d 73 68 6f 72 ...................shortcut=shor
12d60 74 63 75 74 2c 20 64 65 73 63 72 69 70 74 69 6f 6e 3d 74 6f 6f 6c 74 69 70 2c 0a 20 20 20 20 20 tcut,.description=tooltip,......
12d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 ..............................tr
12da0 69 67 67 65 72 65 64 3d 74 72 69 67 67 65 72 65 64 2c 20 73 68 6f 72 74 63 75 74 5f 6e 61 6d 65 iggered=triggered,.shortcut_name
12dc0 3d 73 68 6f 72 74 63 75 74 5f 6e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =shortcut_name,.................
12de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65 72 73 69 73 74 5f 73 68 6f 72 74 ...................persist_short
12e00 63 75 74 3d 54 72 75 65 29 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 61 63 20 3d cut=True).....else:.........ac.=
12e20 20 69 61 2e 63 72 65 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 28 70 61 72 65 6e 74 5f 6d 65 .ia.create_menu_action(parent_me
12e40 6e 75 2c 20 75 6e 69 71 75 65 5f 6e 61 6d 65 2c 20 6d 65 6e 75 5f 74 65 78 74 2c 20 69 63 6f 6e nu,.unique_name,.menu_text,.icon
12e60 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =None,..........................
12e80 20 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 63 75 74 3d 73 68 6f 72 74 63 75 74 2c 20 64 65 73 ..........shortcut=shortcut,.des
12ea0 63 72 69 70 74 69 6f 6e 3d 74 6f 6f 6c 74 69 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cription=tooltip,...............
12ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 69 67 67 65 72 65 64 3d 74 .....................triggered=t
12ee0 72 69 67 67 65 72 65 64 2c 20 73 68 6f 72 74 63 75 74 5f 6e 61 6d 65 3d 73 68 6f 72 74 63 75 74 riggered,.shortcut_name=shortcut
12f00 5f 6e 61 6d 65 29 0a 20 20 20 20 69 66 20 73 68 6f 72 74 63 75 74 20 69 73 20 46 61 6c 73 65 20 _name).....if.shortcut.is.False.
12f20 61 6e 64 20 6f 72 69 67 5f 73 68 6f 72 74 63 75 74 20 69 73 20 6e 6f 74 20 46 61 6c 73 65 3a 0a and.orig_shortcut.is.not.False:.
12f40 20 20 20 20 20 20 20 20 69 66 20 61 63 2e 63 61 6c 69 62 72 65 5f 73 68 6f 72 74 63 75 74 5f 75 ........if.ac.calibre_shortcut_u
12f60 6e 69 71 75 65 5f 6e 61 6d 65 20 69 6e 20 69 61 2e 67 75 69 2e 6b 65 79 62 6f 61 72 64 2e 73 68 nique_name.in.ia.gui.keyboard.sh
12f80 6f 72 74 63 75 74 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 62 2e 72 65 70 6c 61 63 65 5f ortcuts:.............kb.replace_
12fa0 61 63 74 69 6f 6e 28 61 63 2e 63 61 6c 69 62 72 65 5f 73 68 6f 72 74 63 75 74 5f 75 6e 69 71 75 action(ac.calibre_shortcut_uniqu
12fc0 65 5f 6e 61 6d 65 2c 20 61 63 29 0a 20 20 20 20 69 66 20 69 6d 61 67 65 3a 0a 20 20 20 20 20 20 e_name,.ac).....if.image:.......
12fe0 20 20 61 63 2e 73 65 74 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 69 6d 61 67 65 29 29 0a 20 20 ..ac.setIcon(get_icon(image))...
13000 20 20 69 66 20 69 73 5f 63 68 65 63 6b 65 64 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 ..if.is_checked.is.not.None:....
13020 20 20 20 20 20 61 63 2e 73 65 74 43 68 65 63 6b 61 62 6c 65 28 54 72 75 65 29 0a 20 20 20 20 20 .....ac.setCheckable(True)......
13040 20 20 20 69 66 20 69 73 5f 63 68 65 63 6b 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 ...if.is_checked:.............ac
13060 2e 73 65 74 43 68 65 63 6b 65 64 28 54 72 75 65 29 0a 20 20 20 20 23 20 46 6f 72 20 75 73 65 20 .setChecked(True).....#.For.use.
13080 62 79 20 74 68 65 20 46 61 76 6f 75 72 69 74 65 73 20 4d 65 6e 75 20 70 6c 75 67 69 6e 2e 20 49 by.the.Favourites.Menu.plugin..I
130a0 66 20 74 68 69 73 20 6d 65 6e 75 20 61 63 74 69 6f 6e 20 68 61 73 20 74 65 78 74 0a 20 20 20 20 f.this.menu.action.has.text.....
130c0 23 20 74 68 61 74 20 69 73 20 6e 6f 74 20 63 6f 6e 73 74 61 6e 74 20 74 68 72 6f 75 67 68 20 74 #.that.is.not.constant.through.t
130e0 68 65 20 6c 69 66 65 20 6f 66 20 74 68 69 73 20 70 6c 75 67 69 6e 2c 20 74 68 65 6e 20 77 65 20 he.life.of.this.plugin,.then.we.
13100 6e 65 65 64 0a 20 20 20 20 23 20 74 6f 20 61 74 74 72 69 62 75 74 65 20 69 74 20 77 69 74 68 20 need.....#.to.attribute.it.with.
13120 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 63 6f 6e 73 74 61 6e 74 20 something.that.will.be.constant.
13140 74 68 61 74 20 74 68 65 0a 20 20 20 20 23 20 46 61 76 6f 75 72 69 74 65 73 20 4d 65 6e 75 20 70 that.the.....#.Favourites.Menu.p
13160 6c 75 67 69 6e 20 63 61 6e 20 75 73 65 20 74 6f 20 69 64 65 6e 74 69 66 79 20 69 74 2e 0a 20 20 lugin.can.use.to.identify.it....
13180 20 20 69 66 20 66 61 76 6f 75 72 69 74 65 73 5f 6d 65 6e 75 5f 75 6e 69 71 75 65 5f 6e 61 6d 65 ..if.favourites_menu_unique_name
131a0 3a 0a 20 20 20 20 20 20 20 20 61 63 2e 66 61 76 6f 75 72 69 74 65 73 5f 6d 65 6e 75 5f 75 6e 69 :.........ac.favourites_menu_uni
131c0 71 75 65 5f 6e 61 6d 65 20 3d 20 66 61 76 6f 75 72 69 74 65 73 5f 6d 65 6e 75 5f 75 6e 69 71 75 que_name.=.favourites_menu_uniqu
131e0 65 5f 6e 61 6d 65 0a 20 20 20 20 0a 20 20 20 20 23 20 41 70 70 65 6e 64 20 74 6f 20 6f 75 72 20 e_name..........#.Append.to.our.
13200 6c 69 73 74 20 6f 66 20 61 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 20 list.of.actions.for.this.plugin.
13220 74 6f 20 75 6e 72 65 67 69 73 74 65 72 20 77 68 65 6e 20 6d 65 6e 75 20 72 65 62 75 69 6c 74 0a to.unregister.when.menu.rebuilt.
13240 20 20 20 20 67 6c 6f 62 61 6c 20 70 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 0a 20 ....global.plugin_menu_actions..
13260 20 20 20 70 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 2e 61 70 70 65 6e 64 28 61 63 ...plugin_menu_actions.append(ac
13280 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 61 63 0a 0a 0a 64 65 66 20 63 72 65 61 74 )..........return.ac...def.creat
132a0 65 5f 6d 65 6e 75 5f 69 74 65 6d 28 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e_menu_item(....................
132c0 20 69 61 3a 20 49 6e 74 65 72 66 61 63 65 41 63 74 69 6f 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 .ia:.InterfaceAction,...........
132e0 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 5f 6d 65 6e 75 3a 20 51 4d 65 6e 75 2c 0a 20 20 ..........parent_menu:.QMenu,...
13300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 6e 75 5f 74 65 78 74 3a 20 73 74 72 ..................menu_text:.str
13320 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6d 61 67 65 3a 20 73 74 72 ,.....................image:.str
13340 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 74 =None,.....................toolt
13360 69 70 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ip:.str=None,...................
13380 20 20 73 68 6f 72 74 63 75 74 3a 20 41 6e 79 3d 28 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..shortcut:.Any=(),.............
133a0 20 20 20 20 20 20 20 20 74 72 69 67 67 65 72 65 64 3a 20 43 61 6c 6c 61 62 6c 65 3d 4e 6f 6e 65 ........triggered:.Callable=None
133c0 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 5f 63 68 65 63 6b 65 64 ,.....................is_checked
133e0 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 :.Optional[bool]=None,..........
13400 20 20 20 20 20 20 20 20 20 20 20 29 20 2d 3e 20 51 41 63 74 69 6f 6e 3a 0a 20 20 20 20 27 27 27 ...........).->.QAction:.....'''
13420 0a 20 20 20 20 43 72 65 61 74 65 20 61 20 6d 65 6e 75 20 61 63 74 69 6f 6e 20 77 69 74 68 20 74 .....Create.a.menu.action.with.t
13440 68 65 20 73 70 65 63 69 66 69 65 64 20 63 72 69 74 65 72 69 61 20 61 6e 64 20 61 63 74 69 6f 6e he.specified.criteria.and.action
13460 0a 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 69 66 20 6e 6f 20 73 68 6f 72 74 63 75 74 20 69 73 .....Note.that.if.no.shortcut.is
13480 20 73 70 65 63 69 66 69 65 64 2c 20 77 69 6c 6c 20 6e 6f 74 20 61 70 70 65 61 72 20 69 6e 20 50 .specified,.will.not.appear.in.P
134a0 72 65 66 65 72 65 6e 63 65 73 2d 3e 4b 65 79 62 6f 61 72 64 0a 20 20 20 20 54 68 69 73 20 6d 65 references->Keyboard.....This.me
134c0 74 68 6f 64 20 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 66 6f 72 20 61 63 74 thod.should.only.be.used.for.act
134e0 69 6f 6e 73 20 77 68 69 63 68 20 65 69 74 68 65 72 20 68 61 76 65 20 6e 6f 20 73 68 6f 72 74 63 ions.which.either.have.no.shortc
13500 75 74 73 2c 0a 20 20 20 20 6f 72 20 72 65 67 69 73 74 65 72 20 74 68 65 69 72 20 6d 65 6e 75 73 uts,.....or.register.their.menus
13520 20 6f 6e 6c 79 20 6f 6e 63 65 2e 20 55 73 65 20 63 72 65 61 74 65 5f 6d 65 6e 75 5f 61 63 74 69 .only.once..Use.create_menu_acti
13540 6f 6e 5f 75 6e 69 71 75 65 20 66 6f 72 20 61 6c 6c 20 65 6c 73 65 2e 0a 0a 20 20 20 20 43 75 72 on_unique.for.all.else.......Cur
13560 72 65 6e 74 6c 79 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 75 73 65 rently.this.function.is.only.use
13580 64 20 62 79 20 6f 70 65 6e 5f 77 69 74 68 20 61 6e 64 20 73 65 61 72 63 68 5f 74 68 65 5f 69 6e d.by.open_with.and.search_the_in
135a0 74 65 72 6e 65 74 20 70 6c 75 67 69 6e 73 0a 20 20 20 20 61 6e 64 20 77 6f 75 6c 64 20 6c 69 6b ternet.plugins.....and.would.lik
135c0 65 20 74 6f 20 69 6e 76 65 73 74 69 67 61 74 65 20 6f 6e 65 20 64 61 79 20 69 66 20 69 74 20 63 e.to.investigate.one.day.if.it.c
135e0 61 6e 20 62 65 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 74 68 65 6d 2e 0a 20 20 20 20 27 27 27 an.be.removed.from.them......'''
13600 0a 20 20 20 20 69 66 20 73 68 6f 72 74 63 75 74 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 .....if.shortcut.is.not.None:...
13620 20 20 20 20 20 20 69 66 20 6c 65 6e 28 73 68 6f 72 74 63 75 74 29 20 3d 3d 20 30 3a 0a 20 20 20 ......if.len(shortcut).==.0:....
13640 20 20 20 20 20 20 20 20 20 73 68 6f 72 74 63 75 74 20 3d 20 28 29 0a 20 20 20 20 61 63 20 3d 20 .........shortcut.=.().....ac.=.
13660 69 61 2e 63 72 65 61 74 65 5f 61 63 74 69 6f 6e 28 73 70 65 63 3d 28 6d 65 6e 75 5f 74 65 78 74 ia.create_action(spec=(menu_text
13680 2c 20 4e 6f 6e 65 2c 20 74 6f 6f 6c 74 69 70 2c 20 73 68 6f 72 74 63 75 74 29 2c 0a 20 20 20 20 ,.None,.tooltip,.shortcut),.....
136a0 20 20 20 20 61 74 74 72 3d 6d 65 6e 75 5f 74 65 78 74 29 0a 20 20 20 20 69 66 20 69 6d 61 67 65 ....attr=menu_text).....if.image
136c0 3a 0a 20 20 20 20 20 20 20 20 61 63 2e 73 65 74 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 69 6d :.........ac.setIcon(get_icon(im
136e0 61 67 65 29 29 0a 20 20 20 20 69 66 20 74 72 69 67 67 65 72 65 64 20 69 73 20 6e 6f 74 20 4e 6f age)).....if.triggered.is.not.No
13700 6e 65 3a 0a 20 20 20 20 20 20 20 20 61 63 2e 74 72 69 67 67 65 72 65 64 2e 63 6f 6e 6e 65 63 74 ne:.........ac.triggered.connect
13720 28 74 72 69 67 67 65 72 65 64 29 0a 20 20 20 20 69 66 20 69 73 5f 63 68 65 63 6b 65 64 20 69 73 (triggered).....if.is_checked.is
13740 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 61 63 2e 73 65 74 43 68 65 63 6b 61 62 .not.None:.........ac.setCheckab
13760 6c 65 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 5f 63 68 65 63 6b 65 64 3a 0a le(True).........if.is_checked:.
13780 20 20 20 20 20 20 20 20 20 20 20 20 61 63 2e 73 65 74 43 68 65 63 6b 65 64 28 54 72 75 65 29 0a ............ac.setChecked(True).
137a0 20 20 20 20 0a 20 20 20 20 70 61 72 65 6e 74 5f 6d 65 6e 75 2e 61 64 64 41 63 74 69 6f 6e 28 61 .........parent_menu.addAction(a
137c0 63 29 0a 20 20 20 20 0a 20 20 20 20 23 20 41 70 70 65 6e 64 20 74 6f 20 6f 75 72 20 6c 69 73 74 c)..........#.Append.to.our.list
137e0 20 6f 66 20 61 63 74 69 6f 6e 73 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 20 74 6f 20 75 .of.actions.for.this.plugin.to.u
13800 6e 72 65 67 69 73 74 65 72 20 77 68 65 6e 20 6d 65 6e 75 20 72 65 62 75 69 6c 74 0a 20 20 20 20 nregister.when.menu.rebuilt.....
13820 67 6c 6f 62 61 6c 20 70 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 0a 20 20 20 20 70 global.plugin_menu_actions.....p
13840 6c 75 67 69 6e 5f 6d 65 6e 75 5f 61 63 74 69 6f 6e 73 2e 61 70 70 65 6e 64 28 61 63 29 0a 20 20 lugin_menu_actions.append(ac)...
13860 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 61 63 0a 50 4b 03 04 14 00 00 00 00 00 97 a5 38 5a 0f .......return.ac.PK..........8Z.
13880 3e 42 c6 57 07 00 00 57 07 00 00 1a 00 00 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 73 61 76 65 >B.W...W.......common_utils/save
138a0 64 5f 63 6f 64 65 2e 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a d_code.py#!/usr/bin/env.python..
138c0 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 __license__...=.'GPL.v3'.__copyr
138e0 69 67 68 74 5f 5f 20 3d 20 27 32 30 32 34 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e 2e 70 6f 67 ight__.=.'2024,.un_pogaz.<un.pog
13900 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 23 20 6e 6f 74 20 22 69 6d 70 6c 65 6d 65 6e 74 az@gmail.com>'..#.not."implement
13920 65 64 22 20 63 6f 64 65 2c 20 6e 65 65 64 20 74 6f 20 62 65 20 63 6f 70 79 2f 70 61 73 74 20 69 ed".code,.need.to.be.copy/past.i
13940 6e 74 6f 20 74 68 65 20 61 63 74 75 61 6c 20 70 6c 75 67 69 6e 0a 23 20 74 68 69 73 20 66 75 6e nto.the.actual.plugin.#.this.fun
13960 63 74 69 6f 6e 73 20 63 61 6e 6e 6f 74 20 62 65 20 69 6d 70 6f 72 74 65 64 20 61 6e 64 20 63 61 ctions.cannot.be.imported.and.ca
13980 6c 6c 65 64 20 64 69 72 65 63 74 6c 79 20 66 72 6f 6d 20 74 68 65 20 70 6c 75 67 69 6e 0a 23 20 lled.directly.from.the.plugin.#.
139a0 3c 45 78 63 65 70 74 69 6f 6e 3a 20 63 69 72 63 75 6c 61 72 20 69 6d 70 6f 72 74 3e 0a 0a 0a 66 <Exception:.circular.import>...f
139c0 72 6f 6d 20 63 61 6c 69 62 72 65 2e 63 75 73 74 6f 6d 69 7a 65 20 69 6d 70 6f 72 74 20 50 6c 75 rom.calibre.customize.import.Plu
139e0 67 69 6e 0a 0a 0a 63 6c 61 73 73 20 4d 61 69 6e 50 6c 75 67 69 6e 28 50 6c 75 67 69 6e 29 3a 0a gin...class.MainPlugin(Plugin):.
13a00 20 20 20 20 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 5f 65 6d 62 65 64 64 65 64 .........def.initialize_embedded
13a20 5f 70 6c 75 67 69 6e 28 73 65 6c 66 2c 20 70 6c 75 67 69 6e 2c 20 6e 61 6d 65 3a 20 73 74 72 3d _plugin(self,.plugin,.name:.str=
13a40 4e 6f 6e 65 2c 20 64 65 73 63 72 69 70 74 69 6f 6e 3a 20 73 74 72 3d 4e 6f 6e 65 29 3a 0a 20 20 None,.description:.str=None):...
13a60 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 41 20 43 61 6c 69 62 72 65 20 70 6c 75 67 ......'''.........A.Calibre.plug
13a80 69 6e 20 63 61 6e 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 6c 79 20 63 6f 6e 74 61 69 6e 20 6f 6e 65 in.can.normally.only.contain.one
13aa0 20 50 6c 75 67 69 6e 20 63 6c 61 73 73 2e 0a 20 20 20 20 20 20 20 20 49 6e 20 6f 75 72 20 63 61 .Plugin.class..........In.our.ca
13ac0 73 65 2c 20 74 68 69 73 20 77 6f 75 6c 64 20 62 65 20 74 68 65 20 66 69 6c 65 20 74 79 70 65 20 se,.this.would.be.the.file.type.
13ae0 63 6c 61 73 73 2e 0a 20 20 20 20 20 20 20 20 48 6f 77 65 76 65 72 2c 20 77 65 20 77 61 6e 74 20 class..........However,.we.want.
13b00 74 6f 20 6c 6f 61 64 20 74 68 65 20 47 55 49 20 70 6c 75 67 69 6e 2c 20 74 6f 6f 2c 20 73 6f 20 to.load.the.GUI.plugin,.too,.so.
13b20 77 65 20 68 61 76 65 20 74 6f 20 74 72 69 63 6b 0a 20 20 20 20 20 20 20 20 43 61 6c 69 62 72 65 we.have.to.trick.........Calibre
13b40 20 69 6e 74 6f 20 62 65 6c 69 65 76 69 6e 67 20 74 68 61 74 20 74 68 65 72 65 27 73 20 61 63 74 .into.believing.that.there's.act
13b60 75 61 6c 6c 79 20 61 20 32 6e 64 20 70 6c 75 67 69 6e 2e 0a 20 20 20 20 20 20 20 20 27 27 27 0a ually.a.2nd.plugin..........'''.
13b80 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 63 75 .................from.calibre.cu
13ba0 73 74 6f 6d 69 7a 65 2e 75 69 20 69 6d 70 6f 72 74 20 5f 69 6e 69 74 69 61 6c 69 7a 65 64 5f 70 stomize.ui.import._initialized_p
13bc0 6c 75 67 69 6e 73 2c 20 69 6e 69 74 69 61 6c 69 7a 65 5f 70 6c 75 67 69 6e 0a 20 20 20 20 20 20 lugins,.initialize_plugin.......
13be0 20 20 0a 20 20 20 20 20 20 20 20 66 6f 72 20 70 20 69 6e 20 5f 69 6e 69 74 69 61 6c 69 7a 65 64 ...........for.p.in._initialized
13c00 5f 70 6c 75 67 69 6e 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 _plugins:.............if.isinsta
13c20 6e 63 65 28 70 2c 20 70 6c 75 67 69 6e 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nce(p,.plugin):.................
13c40 72 65 74 75 72 6e 20 70 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 70 6c 75 67 69 6e return.p..................plugin
13c60 2e 6e 61 6d 65 20 3d 20 6e 61 6d 65 20 6f 72 20 73 74 72 28 70 6c 75 67 69 6e 2e 5f 5f 6e 61 6d .name.=.name.or.str(plugin.__nam
13c80 65 5f 5f 29 0a 20 20 20 20 20 20 20 20 70 6c 75 67 69 6e 2e 64 65 73 63 72 69 70 74 69 6f 6e 20 e__).........plugin.description.
13ca0 3d 20 64 65 73 63 72 69 70 74 69 6f 6e 20 6f 72 20 73 65 6c 66 2e 64 65 73 63 72 69 70 74 69 6f =.description.or.self.descriptio
13cc0 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 70 6c 75 67 69 6e 2e 76 65 72 73 69 6f n..................plugin.versio
13ce0 6e 20 3d 20 73 65 6c 66 2e 76 65 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 70 6c 75 67 69 6e 2e n.=.self.version.........plugin.
13d00 6d 69 6e 69 6d 75 6d 5f 63 61 6c 69 62 72 65 5f 76 65 72 73 69 6f 6e 20 3d 20 73 65 6c 66 2e 6d minimum_calibre_version.=.self.m
13d20 69 6e 69 6d 75 6d 5f 63 61 6c 69 62 72 65 5f 76 65 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 70 inimum_calibre_version.........p
13d40 6c 75 67 69 6e 2e 73 75 70 70 6f 72 74 65 64 5f 70 6c 61 74 66 6f 72 6d 73 20 3d 20 73 65 6c 66 lugin.supported_platforms.=.self
13d60 2e 73 75 70 70 6f 72 74 65 64 5f 70 6c 61 74 66 6f 72 6d 73 0a 20 20 20 20 20 20 20 20 70 6c 75 .supported_platforms.........plu
13d80 67 69 6e 2e 61 75 74 68 6f 72 20 3d 20 73 65 6c 66 2e 61 75 74 68 6f 72 0a 20 20 20 20 20 20 20 gin.author.=.self.author........
13da0 20 0a 20 20 20 20 20 20 20 20 70 6c 75 67 69 6e 2e 66 69 6c 65 5f 74 79 70 65 73 20 3d 20 67 65 ..........plugin.file_types.=.ge
13dc0 74 61 74 74 72 28 73 65 6c 66 2c 20 27 66 69 6c 65 5f 74 79 70 65 73 27 2c 20 4e 6f 6e 65 29 0a tattr(self,.'file_types',.None).
13de0 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 5f 74 79 .................installation_ty
13e00 70 65 20 3d 20 67 65 74 61 74 74 72 28 73 65 6c 66 2c 20 27 69 6e 73 74 61 6c 6c 61 74 69 6f 6e pe.=.getattr(self,.'installation
13e20 5f 74 79 70 65 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 _type',.None)..................t
13e40 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 5f ry:.............if.installation_
13e60 74 79 70 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 type.is.not.None:...............
13e80 20 20 70 20 3d 20 69 6e 69 74 69 61 6c 69 7a 65 5f 70 6c 75 67 69 6e 28 70 6c 75 67 69 6e 2c 20 ..p.=.initialize_plugin(plugin,.
13ea0 73 65 6c 66 2e 70 6c 75 67 69 6e 5f 70 61 74 68 2c 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 5f 74 self.plugin_path,.installation_t
13ec0 79 70 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 ype).............else:..........
13ee0 20 20 20 20 20 20 20 70 20 3d 20 69 6e 69 74 69 61 6c 69 7a 65 5f 70 6c 75 67 69 6e 28 70 6c 75 .......p.=.initialize_plugin(plu
13f00 67 69 6e 2c 20 73 65 6c 66 2e 70 6c 75 67 69 6e 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 gin,.self.plugin_path)..........
13f20 20 20 20 5f 69 6e 69 74 69 61 6c 69 7a 65 64 5f 70 6c 75 67 69 6e 73 2e 61 70 70 65 6e 64 28 70 ..._initialized_plugins.append(p
13f40 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 0a 20 20 20 20 20 20 20 20 65 ).............return.p.........e
13f60 78 63 65 70 74 20 45 78 63 65 70 74 69 6f 6e 20 61 73 20 65 72 72 3a 0a 20 20 20 20 20 20 20 20 xcept.Exception.as.err:.........
13f80 20 20 20 20 70 72 69 6e 74 28 66 27 7b 73 65 6c 66 2e 6e 61 6d 65 7d 3a 20 45 72 72 6f 72 20 64 ....print(f'{self.name}:.Error.d
13fa0 75 72 69 6e 67 20 74 68 65 20 69 6e 69 74 69 61 6c 69 7a 65 20 6f 66 20 74 68 65 20 65 6d 62 65 uring.the.initialize.of.the.embe
13fc0 64 64 65 64 20 70 6c 75 67 69 6e 20 22 7b 70 6c 75 67 69 6e 2e 6e 61 6d 65 7d 22 3a 5c 6e 7b 65 dded.plugin."{plugin.name}":\n{e
13fe0 72 72 7d 5c 6e 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a rr}\n').............return.None.
14000 50 4b 03 04 14 00 00 00 00 00 8d 5d 35 5a 1d cb 38 46 1f 0e 00 00 1f 0e 00 00 19 00 00 00 63 6f PK.........]5Z..8F............co
14020 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 23 21 2f 75 73 72 2f 62 69 mmon_utils/templates.py#!/usr/bi
14040 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 n/env.python..__license__...=.'G
14060 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 32 30 2c 20 41 68 PL.v3'.__copyright__.=.'2020,.Ah
14080 6d 65 64 20 5a 61 6b 69 20 3c 61 7a 61 6b 69 30 30 2e 64 65 76 40 67 6d 61 69 6c 2e 63 6f 6d 3e med.Zaki.<azaki00.dev@gmail.com>
140a0 20 3b 20 61 64 6a 75 73 74 6d 65 6e 74 20 32 30 32 30 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e .;.adjustment.2020,.un_pogaz.<un
140c0 2e 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 6c 6f .pogaz@gmail.com>'...try:.....lo
140e0 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 ad_translations().except.NameErr
14100 6f 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e or:.....pass..#.load_translation
14120 73 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a 0a 66 72 6f 6d 20 74 s().added.in.calibre.1.9..from.t
14140 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 4c 69 73 74 2c 20 54 75 70 6c 65 0a 0a 74 72 79 3a 0a 20 yping.import.List,.Tuple..try:..
14160 20 20 20 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 69 6d 70 6f 72 74 20 51 50 75 73 68 42 75 74 74 ...from.qt.core.import.QPushButt
14180 6f 6e 0a 65 78 63 65 70 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 66 72 6f 6d 20 on.except.ImportError:.....from.
141a0 50 79 51 74 35 2e 51 74 20 69 6d 70 6f 72 74 20 51 50 75 73 68 42 75 74 74 6f 6e 0a 0a 66 72 6f PyQt5.Qt.import.QPushButton..fro
141c0 6d 20 63 61 6c 69 62 72 65 2e 64 62 2e 6c 61 7a 79 20 69 6d 70 6f 72 74 20 4d 65 74 61 64 61 74 m.calibre.db.lazy.import.Metadat
141e0 61 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 65 62 6f 6f 6b 73 2e 6d 65 74 61 64 61 74 61 20 69 a.from.calibre.ebooks.metadata.i
14200 6d 70 6f 72 74 20 4d 65 74 61 49 6e 66 6f 72 6d 61 74 69 6f 6e 0a 66 72 6f 6d 20 63 61 6c 69 62 mport.MetaInformation.from.calib
14220 72 65 2e 65 62 6f 6f 6b 73 2e 6d 65 74 61 64 61 74 61 2e 62 6f 6f 6b 2e 66 6f 72 6d 61 74 74 65 re.ebooks.metadata.book.formatte
14240 72 20 69 6d 70 6f 72 74 20 53 61 66 65 46 6f 72 6d 61 74 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 r.import.SafeFormat.from.calibre
14260 2e 67 75 69 32 20 69 6d 70 6f 72 74 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 0a 66 72 6f 6d 20 63 .gui2.import.error_dialog.from.c
14280 61 6c 69 62 72 65 2e 67 75 69 32 2e 64 69 61 6c 6f 67 73 2e 74 65 6d 70 6c 61 74 65 5f 64 69 61 alibre.gui2.dialogs.template_dia
142a0 6c 6f 67 20 69 6d 70 6f 72 74 20 54 65 6d 70 6c 61 74 65 44 69 61 6c 6f 67 0a 66 72 6f 6d 20 63 log.import.TemplateDialog.from.c
142c0 61 6c 69 62 72 65 2e 67 75 69 32 2e 77 69 64 67 65 74 73 32 20 69 6d 70 6f 72 74 20 44 69 61 6c alibre.gui2.widgets2.import.Dial
142e0 6f 67 0a 0a 66 72 6f 6d 20 2e 20 69 6d 70 6f 72 74 20 47 55 49 2c 20 63 75 72 72 65 6e 74 5f 64 og..from...import.GUI,.current_d
14300 62 2c 20 67 65 74 5f 69 63 6f 6e 0a 0a 54 45 4d 50 4c 41 54 45 5f 50 52 45 46 49 58 20 3d 20 27 b,.get_icon..TEMPLATE_PREFIX.=.'
14320 54 45 4d 50 4c 41 54 45 3a 20 27 0a 54 45 4d 50 4c 41 54 45 5f 45 52 52 4f 52 20 3d 20 27 54 45 TEMPLATE:.'.TEMPLATE_ERROR.=.'TE
14340 4d 50 4c 41 54 45 5f 45 52 52 4f 52 3a 20 27 0a 54 45 4d 50 4c 41 54 45 5f 46 49 45 4c 44 20 3d MPLATE_ERROR:.'.TEMPLATE_FIELD.=
14360 20 27 7b 74 65 6d 70 6c 61 74 65 7d 27 0a 0a 0a 64 65 66 20 63 68 65 63 6b 5f 74 65 6d 70 6c 61 .'{template}'...def.check_templa
14380 74 65 28 74 65 6d 70 6c 61 74 65 2c 20 73 68 6f 77 5f 65 72 72 6f 72 3d 46 61 6c 73 65 29 20 2d te(template,.show_error=False).-
143a0 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 64 62 20 3d 20 63 75 72 72 65 6e 74 5f 64 62 28 29 0a 20 20 >.bool:.....db.=.current_db()...
143c0 20 20 65 72 72 6f 72 5f 6d 73 67 73 20 3d 20 5b 0a 20 20 20 20 20 20 20 20 54 45 4d 50 4c 41 54 ..error_msgs.=.[.........TEMPLAT
143e0 45 5f 45 52 52 4f 52 2c 0a 20 20 20 20 20 20 20 20 27 75 6e 6b 6e 6f 77 6e 20 66 75 6e 63 74 69 E_ERROR,.........'unknown.functi
14400 6f 6e 27 2c 0a 20 20 20 20 20 20 20 20 27 75 6e 6b 6e 6f 77 6e 20 69 64 65 6e 74 69 66 69 65 72 on',.........'unknown.identifier
14420 27 2c 0a 20 20 20 20 20 20 20 20 27 75 6e 6b 6e 6f 77 6e 20 66 69 65 6c 64 27 2c 0a 20 20 20 20 ',.........'unknown.field',.....
14440 20 20 20 20 27 61 73 73 69 67 6e 20 72 65 71 75 69 72 65 73 20 74 68 65 20 66 69 72 73 74 20 70 ....'assign.requires.the.first.p
14460 61 72 61 6d 65 74 65 72 20 62 65 20 61 6e 20 69 64 27 2c 0a 20 20 20 20 20 20 20 20 27 6d 69 73 arameter.be.an.id',.........'mis
14480 73 69 6e 67 20 63 6c 6f 73 69 6e 67 20 70 61 72 65 6e 74 68 65 73 69 73 27 2c 0a 20 20 20 20 20 sing.closing.parenthesis',......
144a0 20 20 20 27 69 6e 63 6f 72 72 65 63 74 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 ...'incorrect.number.of.argument
144c0 73 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e 27 2c 0a 20 20 20 20 20 20 20 20 27 65 78 70 72 65 73 s.for.function',.........'expres
144e0 73 69 6f 6e 20 69 73 20 6e 6f 74 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 63 6f 6e 73 74 61 6e 74 sion.is.not.function.or.constant
14500 27 0a 20 20 20 20 5d 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 62 6f 6f 6b 5f 69 64 '.....].....try:.........book_id
14520 20 3d 20 6c 69 73 74 28 64 62 2e 61 6c 6c 5f 69 64 73 28 29 29 5b 30 5d 0a 20 20 20 20 20 20 20 .=.list(db.all_ids())[0]........
14540 20 6d 69 20 3d 20 64 62 2e 67 65 74 5f 6d 65 74 61 64 61 74 61 28 62 6f 6f 6b 5f 69 64 2c 20 69 .mi.=.db.get_metadata(book_id,.i
14560 6e 64 65 78 5f 69 73 5f 69 64 3d 54 72 75 65 2c 20 67 65 74 5f 75 73 65 72 5f 63 61 74 65 67 6f ndex_is_id=True,.get_user_catego
14580 72 69 65 73 3d 54 72 75 65 29 0a 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 6d ries=True).....except:.........m
145a0 69 20 3d 20 4d 65 74 61 49 6e 66 6f 72 6d 61 74 69 6f 6e 28 5f 28 27 55 6e 6b 6e 6f 77 6e 27 29 i.=.MetaInformation(_('Unknown')
145c0 29 0a 20 20 20 20 0a 20 20 20 20 6f 75 74 70 75 74 20 3d 20 53 61 66 65 46 6f 72 6d 61 74 28 29 )..........output.=.SafeFormat()
145e0 2e 73 61 66 65 5f 66 6f 72 6d 61 74 28 74 65 6d 70 6c 61 74 65 2c 20 6d 69 2c 20 54 45 4d 50 4c .safe_format(template,.mi,.TEMPL
14600 41 54 45 5f 45 52 52 4f 52 2c 20 6d 69 29 0a 20 20 20 20 66 6f 72 20 6d 73 67 20 69 6e 20 65 72 ATE_ERROR,.mi).....for.msg.in.er
14620 72 6f 72 5f 6d 73 67 73 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6f 75 74 70 75 74 2e 6c 6f 77 65 ror_msgs:.........if.output.lowe
14640 72 28 29 2e 66 69 6e 64 28 6d 73 67 2e 6c 6f 77 65 72 28 29 29 20 21 3d 20 2d 31 3a 0a 20 20 20 r().find(msg.lower()).!=.-1:....
14660 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 6f 75 74 70 75 74 2e 6c 73 74 72 69 70 28 54 .........error.=.output.lstrip(T
14680 45 4d 50 4c 41 54 45 5f 45 52 52 4f 52 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 68 EMPLATE_ERROR).............if.sh
146a0 6f 77 5f 65 72 72 6f 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 5f ow_error:.................error_
146c0 64 69 61 6c 6f 67 28 47 55 49 2c 20 5f 28 27 54 65 6d 70 6c 61 74 65 20 45 72 72 6f 72 27 29 2c dialog(GUI,._('Template.Error'),
146e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 27 52 75 6e 6e ........................._('Runn
14700 69 6e 67 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 72 65 74 75 72 6e 65 64 20 61 6e 20 65 72 72 ing.the.template.returned.an.err
14720 6f 72 3a 27 29 20 2b 27 5c 6e 27 2b 20 73 74 72 28 65 72 72 6f 72 29 2c 0a 20 20 20 20 20 20 20 or:').+'\n'+.str(error),........
14740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 77 3d 54 72 75 65 29 0a 20 20 20 20 .................show=True).....
14760 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 0a 20 20 20 20 72 65 74 75 72 6e 20 ........return.error.....return.
14780 54 72 75 65 0a 0a 0a 63 6c 61 73 73 20 54 65 6d 70 6c 61 74 65 45 64 69 74 6f 72 44 69 61 6c 6f True...class.TemplateEditorDialo
147a0 67 28 54 65 6d 70 6c 61 74 65 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 g(TemplateDialog):.....def.__ini
147c0 74 5f 5f 28 73 65 6c 66 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 2c 20 6d 69 3d 4e 6f 6e 65 2c 20 t__(self,.parent=None,.mi=None,.
147e0 66 6d 3d 4e 6f 6e 65 2c 20 74 65 6d 70 6c 61 74 65 5f 74 65 78 74 3d 27 27 29 3a 0a 20 20 20 20 fm=None,.template_text=''):.....
14800 20 20 20 20 73 65 6c 66 2e 64 62 20 3d 20 63 75 72 72 65 6e 74 5f 64 62 28 29 0a 20 20 20 20 20 ....self.db.=.current_db()......
14820 20 20 20 73 65 6c 66 2e 74 65 6d 70 6c 61 74 65 20 3d 20 74 65 6d 70 6c 61 74 65 5f 74 65 78 74 ...self.template.=.template_text
14840 0a 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 20 3d 20 70 61 72 65 6e 74 20 6f 72 20 47 55 49 0a .........parent.=.parent.or.GUI.
14860 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 74 65 6d 70 6c 61 74 65 .................if.not.template
14880 5f 74 65 78 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 5f 28 27 45 6e 74 _text:.............text.=._('Ent
148a0 65 72 20 61 20 74 65 6d 70 6c 61 74 65 20 74 6f 20 74 65 73 74 20 75 73 69 6e 67 20 64 61 74 61 er.a.template.to.test.using.data
148c0 20 66 72 6f 6d 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 27 29 0a 20 20 20 20 20 20 .from.the.selected.book').......
148e0 20 20 20 20 20 20 74 65 78 74 5f 69 73 5f 70 6c 61 63 65 68 6f 6c 64 65 72 20 3d 20 54 72 75 65 ......text_is_placeholder.=.True
14900 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 .........else:.............text.
14920 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 5f 69 73 5f 70 6c 61 63 65 =.None.............text_is_place
14940 68 6f 6c 64 65 72 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 holder.=.False..................
14960 20 54 65 6d 70 6c 61 74 65 44 69 61 6c 6f 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 .TemplateDialog.__init__(self,.p
14980 61 72 65 6e 74 2c 20 74 65 78 74 2c 20 6d 69 3d 6d 69 2c 20 66 6d 3d 66 6d 2c 20 74 65 78 74 5f arent,.text,.mi=mi,.fm=fm,.text_
149a0 69 73 5f 70 6c 61 63 65 68 6f 6c 64 65 72 3d 74 65 78 74 5f 69 73 5f 70 6c 61 63 65 68 6f 6c 64 is_placeholder=text_is_placehold
149c0 65 72 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 57 69 6e 64 6f 77 54 69 74 6c 65 28 er).........self.setWindowTitle(
149e0 5f 28 27 54 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 _('Template.editor')).........se
14a00 6c 66 2e 73 65 74 57 69 6e 64 6f 77 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 27 74 65 6d 70 6c lf.setWindowIcon(get_icon('templ
14a20 61 74 65 5f 66 75 6e 63 73 2e 70 6e 67 27 29 29 0a 20 20 20 20 20 20 20 20 69 66 20 74 65 6d 70 ate_funcs.png')).........if.temp
14a40 6c 61 74 65 5f 74 65 78 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 65 78 74 late_text:.............self.text
14a60 62 6f 78 2e 69 6e 73 65 72 74 50 6c 61 69 6e 54 65 78 74 28 74 65 6d 70 6c 61 74 65 5f 74 65 78 box.insertPlainText(template_tex
14a80 74 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 74 65 6d 70 6c 61 74 65 5f 69 73 5f 76 61 6c 69 t)..........def.template_is_vali
14aa0 64 65 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 68 65 63 6b 5f 74 de(self):.........return.check_t
14ac0 65 6d 70 6c 61 74 65 28 73 65 6c 66 2e 74 65 6d 70 6c 61 74 65 29 20 69 73 20 54 72 75 65 0a 20 emplate(self.template).is.True..
14ae0 20 20 20 0a 20 20 20 20 64 65 66 20 61 63 63 65 70 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 ........def.accept(self):.......
14b00 20 20 73 65 6c 66 2e 74 65 6d 70 6c 61 74 65 20 3d 20 73 65 6c 66 2e 74 65 78 74 62 6f 78 2e 74 ..self.template.=.self.textbox.t
14b20 6f 50 6c 61 69 6e 54 65 78 74 28 29 2e 72 73 74 72 69 70 28 29 0a 20 20 20 20 20 20 20 20 54 65 oPlainText().rstrip().........Te
14b40 6d 70 6c 61 74 65 44 69 61 6c 6f 67 2e 61 63 63 65 70 74 28 73 65 6c 66 29 0a 0a 0a 64 65 66 20 mplateDialog.accept(self)...def.
14b60 6f 70 65 6e 5f 74 65 6d 70 6c 61 74 65 5f 64 69 61 6c 6f 67 28 0a 20 20 20 20 6d 69 3a 20 4c 69 open_template_dialog(.....mi:.Li
14b80 73 74 5b 4d 65 74 61 64 61 74 61 5d 3d 4e 6f 6e 65 2c 0a 20 20 20 20 74 65 6d 70 6c 61 74 65 5f st[Metadata]=None,.....template_
14ba0 74 65 78 74 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 2c text:.str=None,.....parent=None,
14bc0 0a 29 20 2d 3e 20 54 75 70 6c 65 5b 44 69 61 6c 6f 67 2e 44 69 61 6c 6f 67 43 6f 64 65 2c 20 73 .).->.Tuple[Dialog.DialogCode,.s
14be0 74 72 5d 3a 0a 20 20 20 20 64 20 3d 20 54 65 6d 70 6c 61 74 65 45 64 69 74 6f 72 44 69 61 6c 6f tr]:.....d.=.TemplateEditorDialo
14c00 67 28 70 61 72 65 6e 74 3d 70 61 72 65 6e 74 2c 20 6d 69 3d 6d 69 20 6f 72 20 5b 5d 2c 20 74 65 g(parent=parent,.mi=mi.or.[],.te
14c20 6d 70 6c 61 74 65 5f 74 65 78 74 3d 74 65 6d 70 6c 61 74 65 5f 74 65 78 74 20 6f 72 20 27 27 29 mplate_text=template_text.or.'')
14c40 0a 20 20 20 20 72 73 6c 74 20 3d 20 64 2e 65 78 65 63 28 29 0a 20 20 20 20 72 65 74 75 72 6e 20 .....rslt.=.d.exec().....return.
14c60 72 73 6c 74 2c 20 64 2e 74 65 6d 70 6c 61 74 65 0a 0a 0a 63 6c 61 73 73 20 54 65 6d 70 6c 61 74 rslt,.d.template...class.Templat
14c80 65 45 64 69 74 6f 72 44 69 61 6c 6f 67 42 75 74 74 6f 6e 28 51 50 75 73 68 42 75 74 74 6f 6e 29 eEditorDialogButton(QPushButton)
14ca0 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 68 6f 77 5f 69 63 :.....def.__init__(self,.show_ic
14cc0 6f 6e 3d 54 72 75 65 2c 20 73 68 6f 77 5f 74 65 78 74 3d 54 72 75 65 2c 20 70 61 72 65 6e 74 3d on=True,.show_text=True,.parent=
14ce0 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 68 6f 77 5f 69 63 6f 6e 20 None):.........if.not.show_icon.
14d00 61 6e 64 20 6e 6f 74 20 73 68 6f 77 5f 74 65 78 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 and.not.show_text:.............r
14d20 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 27 4e 65 65 64 20 61 74 20 6c 65 61 73 74 20 74 aise.ValueError('Need.at.least.t
14d40 68 65 20 69 63 6f 6e 20 6f 72 20 74 65 78 74 27 29 0a 20 20 20 20 20 20 20 20 51 50 75 73 68 42 he.icon.or.text').........QPushB
14d60 75 74 74 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 utton.__init__(self,............
14d80 20 67 65 74 5f 69 63 6f 6e 28 27 74 65 6d 70 6c 61 74 65 5f 66 75 6e 63 73 2e 70 6e 67 27 20 69 .get_icon('template_funcs.png'.i
14da0 66 20 73 68 6f 77 5f 69 63 6f 6e 20 65 6c 73 65 20 4e 6f 6e 65 29 2c 0a 20 20 20 20 20 20 20 20 f.show_icon.else.None),.........
14dc0 20 20 20 20 28 5f 28 27 4f 70 65 6e 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 ....(_('Open.the.template.editor
14de0 27 29 20 69 66 20 73 68 6f 77 5f 74 65 78 74 20 65 6c 73 65 20 27 27 29 2c 0a 20 20 20 20 20 20 ').if.show_text.else.''),.......
14e00 20 20 20 20 20 20 70 61 72 65 6e 74 3d 70 61 72 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 ......parent=parent,.........)..
14e20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 54 6f 6f 6c 54 69 70 28 5f 28 27 4f 70 65 6e 20 74 .......self.setToolTip(_('Open.t
14e40 68 65 20 74 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 27 29 29 0a 50 4b 03 04 14 00 00 00 00 00 he.template.editor')).PK........
14e60 a4 64 35 5a 4b fb 3b 6c 00 6c 00 00 00 6c 00 00 17 00 00 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 .d5ZK.;l.l...l......common_utils
14e80 2f 77 69 64 67 65 74 73 2e 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e /widgets.py#!/usr/bin/env.python
14ea0 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 ..__license__...=.'GPL.v3'.__cop
14ec0 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 31 31 2c 20 47 72 61 6e 74 20 44 72 61 6b 65 20 3c 67 yright__.=.'2011,.Grant.Drake.<g
14ee0 72 61 6e 74 2e 64 72 61 6b 65 40 67 6d 61 69 6c 2e 63 6f 6d 3e 20 3b 20 32 30 32 30 2c 20 75 6e rant.drake@gmail.com>.;.2020,.un
14f00 5f 70 6f 67 61 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 _pogaz.<un.pogaz@gmail.com>'...t
14f20 72 79 3a 0a 20 20 20 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 ry:.....load_translations().exce
14f40 70 74 20 4e 61 6d 65 45 72 72 6f 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 pt.NameError:.....pass..#.load_t
14f60 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 ranslations().added.in.calibre.1
14f80 2e 39 0a 0a 66 72 6f 6d 20 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 4f 72 64 65 .9..from.collections.import.Orde
14fa0 72 65 64 44 69 63 74 2c 20 64 65 66 61 75 6c 74 64 69 63 74 0a 66 72 6f 6d 20 74 79 70 69 6e 67 redDict,.defaultdict.from.typing
14fc0 20 69 6d 70 6f 72 74 20 44 69 63 74 2c 20 4c 69 73 74 2c 20 54 75 70 6c 65 2c 20 55 6e 69 6f 6e .import.Dict,.List,.Tuple,.Union
14fe0 0a 0a 74 72 79 3a 0a 20 20 20 20 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 69 6d 70 6f 72 74 20 28 ..try:.....from.qt.core.import.(
15000 0a 20 20 20 20 20 20 20 20 51 41 62 73 74 72 61 63 74 49 74 65 6d 56 69 65 77 2c 0a 20 20 20 20 .........QAbstractItemView,.....
15020 20 20 20 20 51 43 6f 6d 62 6f 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 46 6f 6e 74 2c 0a 20 20 ....QComboBox,.........QFont,...
15040 20 20 20 20 20 20 51 48 42 6f 78 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 51 49 63 6f 6e ......QHBoxLayout,.........QIcon
15060 2c 0a 20 20 20 20 20 20 20 20 51 4c 61 62 65 6c 2c 0a 20 20 20 20 20 20 20 20 51 4c 69 6e 65 45 ,.........QLabel,.........QLineE
15080 64 69 74 2c 0a 20 20 20 20 20 20 20 20 51 53 69 7a 65 2c 0a 20 20 20 20 20 20 20 20 51 53 74 79 dit,.........QSize,.........QSty
150a0 6c 65 64 49 74 65 6d 44 65 6c 65 67 61 74 65 2c 0a 20 20 20 20 20 20 20 20 51 74 2c 0a 20 20 20 ledItemDelegate,.........Qt,....
150c0 20 20 20 20 20 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 2c 0a 20 20 20 20 20 20 20 20 51 .....QTableWidgetItem,.........Q
150e0 54 72 65 65 57 69 64 67 65 74 2c 0a 20 20 20 20 20 20 20 20 51 54 72 65 65 57 69 64 67 65 74 49 TreeWidget,.........QTreeWidgetI
15100 74 65 6d 2c 0a 20 20 20 20 20 20 20 20 70 79 71 74 53 69 67 6e 61 6c 2c 0a 20 20 20 20 29 0a 65 tem,.........pyqtSignal,.....).e
15120 78 63 65 70 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 66 72 6f 6d 20 50 79 51 74 xcept.ImportError:.....from.PyQt
15140 35 2e 51 74 20 69 6d 70 6f 72 74 20 28 0a 20 20 20 20 20 20 20 20 51 41 62 73 74 72 61 63 74 49 5.Qt.import.(.........QAbstractI
15160 74 65 6d 56 69 65 77 2c 0a 20 20 20 20 20 20 20 20 51 43 6f 6d 62 6f 42 6f 78 2c 0a 20 20 20 20 temView,.........QComboBox,.....
15180 20 20 20 20 51 46 6f 6e 74 2c 0a 20 20 20 20 20 20 20 20 51 48 42 6f 78 4c 61 79 6f 75 74 2c 0a ....QFont,.........QHBoxLayout,.
151a0 20 20 20 20 20 20 20 20 51 49 63 6f 6e 2c 0a 20 20 20 20 20 20 20 20 51 4c 61 62 65 6c 2c 0a 20 ........QIcon,.........QLabel,..
151c0 20 20 20 20 20 20 20 51 4c 69 6e 65 45 64 69 74 2c 0a 20 20 20 20 20 20 20 20 51 53 69 7a 65 2c .......QLineEdit,.........QSize,
151e0 0a 20 20 20 20 20 20 20 20 51 53 74 79 6c 65 64 49 74 65 6d 44 65 6c 65 67 61 74 65 2c 0a 20 20 .........QStyledItemDelegate,...
15200 20 20 20 20 20 20 51 74 2c 0a 20 20 20 20 20 20 20 20 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 ......Qt,.........QTableWidgetIt
15220 65 6d 2c 0a 20 20 20 20 20 20 20 20 51 54 72 65 65 57 69 64 67 65 74 2c 0a 20 20 20 20 20 20 20 em,.........QTreeWidget,........
15240 20 51 54 72 65 65 57 69 64 67 65 74 49 74 65 6d 2c 0a 20 20 20 20 20 20 20 20 70 79 71 74 53 69 .QTreeWidgetItem,.........pyqtSi
15260 67 6e 61 6c 2c 0a 20 20 20 20 29 0a 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 65 62 6f 6f 6b 73 gnal,.....)..from.calibre.ebooks
15280 2e 6d 65 74 61 64 61 74 61 20 69 6d 70 6f 72 74 20 72 61 74 69 6e 67 5f 74 6f 5f 73 74 61 72 73 .metadata.import.rating_to_stars
152a0 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 20 69 6d 70 6f 72 74 20 55 4e 44 45 46 49 .from.calibre.gui2.import.UNDEFI
152c0 4e 45 44 5f 51 44 41 54 45 54 49 4d 45 2c 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 0a 66 72 6f 6d NED_QDATETIME,.error_dialog.from
152e0 20 63 61 6c 69 62 72 65 2e 67 75 69 32 2e 64 6e 64 20 69 6d 70 6f 72 74 20 64 6e 64 5f 67 65 74 .calibre.gui2.dnd.import.dnd_get
15300 5f 66 69 6c 65 73 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 2e 6c 69 62 72 61 72 79 _files.from.calibre.gui2.library
15320 2e 64 65 6c 65 67 61 74 65 73 20 69 6d 70 6f 72 74 20 44 61 74 65 44 65 6c 65 67 61 74 65 20 61 .delegates.import.DateDelegate.a
15340 73 20 5f 44 61 74 65 44 65 6c 65 67 61 74 65 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 75 74 69 s._DateDelegate.from.calibre.uti
15360 6c 73 2e 64 61 74 65 20 69 6d 70 6f 72 74 20 55 4e 44 45 46 49 4e 45 44 5f 44 41 54 45 2c 20 64 ls.date.import.UNDEFINED_DATE,.d
15380 61 74 65 74 69 6d 65 2c 20 66 6f 72 6d 61 74 5f 64 61 74 65 2c 20 6e 6f 77 0a 0a 66 72 6f 6d 20 atetime,.format_date,.now..from.
153a0 2e 20 69 6d 70 6f 72 74 20 47 55 49 2c 20 63 75 72 72 65 6e 74 5f 64 62 2c 20 64 65 62 75 67 5f ..import.GUI,.current_db,.debug_
153c0 70 72 69 6e 74 2c 20 67 65 74 5f 64 61 74 65 5f 66 6f 72 6d 61 74 2c 20 67 65 74 5f 69 63 6f 6e print,.get_date_format,.get_icon
153e0 2c 20 67 65 74 5f 70 69 78 6d 61 70 2c 20 72 65 74 75 72 6e 5f 6c 69 6e 65 5f 6c 6f 6e 67 5f 74 ,.get_pixmap,.return_line_long_t
15400 65 78 74 0a 66 72 6f 6d 20 2e 63 6f 6c 75 6d 6e 73 20 69 6d 70 6f 72 74 20 43 6f 6c 75 6d 6e 4d ext.from..columns.import.ColumnM
15420 65 74 61 64 61 74 61 2c 20 67 65 74 5f 61 6c 6c 5f 69 64 65 6e 74 69 66 69 65 72 73 0a 66 72 6f etadata,.get_all_identifiers.fro
15440 6d 20 2e 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 69 6d 70 6f 72 74 20 71 74 5f 66 72 6f 6d 5f m..compatibility.import.qt_from_
15460 64 74 0a 66 72 6f 6d 20 2e 6c 69 62 72 61 72 79 73 20 69 6d 70 6f 72 74 20 67 65 74 5f 63 61 74 dt.from..librarys.import.get_cat
15480 65 67 6f 72 79 5f 69 63 6f 6e 73 5f 6d 61 70 2c 20 67 65 74 5f 74 61 67 73 5f 62 72 6f 77 73 61 egory_icons_map,.get_tags_browsa
154a0 62 6c 65 5f 66 69 65 6c 64 73 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ble_fields..#.------------------
154c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 20 ----------------------------.#..
154e0 20 20 20 20 20 20 20 20 20 20 20 20 20 57 69 64 67 65 74 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d .............Widgets.#.---------
15500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
15520 2d 2d 2d 2d 2d 0a 0a 0a 63 6c 61 73 73 20 49 6d 61 67 65 54 69 74 6c 65 4c 61 79 6f 75 74 28 51 -----...class.ImageTitleLayout(Q
15540 48 42 6f 78 4c 61 79 6f 75 74 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 41 20 72 65 75 73 61 HBoxLayout):.....'''.....A.reusa
15560 62 6c 65 20 6c 61 79 6f 75 74 20 77 69 64 67 65 74 20 64 69 73 70 6c 61 79 69 6e 67 20 61 6e 20 ble.layout.widget.displaying.an.
15580 69 6d 61 67 65 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 74 69 74 6c 65 0a 20 20 20 20 27 27 image.followed.by.a.title.....''
155a0 27 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 69 63 6f 6e 5f 6e 61 '.....def.__init__(self,.icon_na
155c0 6d 65 3a 20 73 74 72 2c 20 74 69 74 6c 65 3a 20 73 74 72 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 me:.str,.title:.str,.parent=None
155e0 29 3a 0a 20 20 20 20 20 20 20 20 51 48 42 6f 78 4c 61 79 6f 75 74 2e 5f 5f 69 6e 69 74 5f 5f 28 ):.........QHBoxLayout.__init__(
15600 73 65 6c 66 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 69 74 6c 65 self,.parent).........self.title
15620 5f 69 6d 61 67 65 5f 6c 61 62 65 6c 20 3d 20 51 4c 61 62 65 6c 28 70 61 72 65 6e 74 29 0a 20 20 _image_label.=.QLabel(parent)...
15640 20 20 20 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 5f 74 69 74 6c 65 5f 69 63 6f 6e 28 69 63 6f ......self.update_title_icon(ico
15660 6e 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 57 69 64 67 65 74 28 73 n_name).........self.addWidget(s
15680 65 6c 66 2e 74 69 74 6c 65 5f 69 6d 61 67 65 5f 6c 61 62 65 6c 29 0a 20 20 20 20 20 20 20 20 0a elf.title_image_label)..........
156a0 20 20 20 20 20 20 20 20 74 69 74 6c 65 5f 66 6f 6e 74 20 3d 20 51 46 6f 6e 74 28 29 0a 20 20 20 ........title_font.=.QFont()....
156c0 20 20 20 20 20 74 69 74 6c 65 5f 66 6f 6e 74 2e 73 65 74 50 6f 69 6e 74 53 69 7a 65 28 31 36 29 .....title_font.setPointSize(16)
156e0 0a 20 20 20 20 20 20 20 20 73 68 65 6c 66 5f 6c 61 62 65 6c 20 3d 20 51 4c 61 62 65 6c 28 74 69 .........shelf_label.=.QLabel(ti
15700 74 6c 65 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 68 65 6c 66 5f 6c 61 62 65 6c tle,.parent).........shelf_label
15720 2e 73 65 74 46 6f 6e 74 28 74 69 74 6c 65 5f 66 6f 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c .setFont(title_font).........sel
15740 66 2e 61 64 64 57 69 64 67 65 74 28 73 68 65 6c 66 5f 6c 61 62 65 6c 29 0a 20 20 20 20 20 20 20 f.addWidget(shelf_label)........
15760 20 73 65 6c 66 2e 69 6e 73 65 72 74 53 74 72 65 74 63 68 28 2d 31 29 0a 20 20 20 20 0a 20 20 20 .self.insertStretch(-1).........
15780 20 64 65 66 20 75 70 64 61 74 65 5f 74 69 74 6c 65 5f 69 63 6f 6e 28 73 65 6c 66 2c 20 69 63 6f .def.update_title_icon(self,.ico
157a0 6e 5f 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 70 69 78 6d 61 70 20 3d 20 67 65 74 5f 70 69 n_name):.........pixmap.=.get_pi
157c0 78 6d 61 70 28 69 63 6f 6e 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 70 69 78 6d 61 xmap(icon_name).........if.pixma
157e0 70 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 5f 64 69 61 p.is.None:.............error_dia
15800 6c 6f 67 28 73 65 6c 66 2e 70 61 72 65 6e 74 28 29 2c 20 5f 28 27 52 65 73 74 61 72 74 20 72 65 log(self.parent(),._('Restart.re
15820 71 75 69 72 65 64 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 quired'),.......................
15840 20 20 20 5f 28 27 54 69 74 6c 65 20 69 6d 61 67 65 20 6e 6f 74 20 66 6f 75 6e 64 20 2d 20 79 6f ..._('Title.image.not.found.-.yo
15860 75 20 6d 75 73 74 20 72 65 73 74 61 72 74 20 43 61 6c 69 62 72 65 20 62 65 66 6f 72 65 20 75 73 u.must.restart.Calibre.before.us
15880 69 6e 67 20 74 68 69 73 20 70 6c 75 67 69 6e 21 27 29 2c 20 73 68 6f 77 3d 54 72 75 65 29 0a 20 ing.this.plugin!'),.show=True)..
158a0 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 69 .......else:.............self.ti
158c0 74 6c 65 5f 69 6d 61 67 65 5f 6c 61 62 65 6c 2e 73 65 74 50 69 78 6d 61 70 28 70 69 78 6d 61 70 tle_image_label.setPixmap(pixmap
158e0 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 69 74 6c 65 5f 69 6d 61 67 65 5f 6c 61 62 65 6c ).........self.title_image_label
15900 2e 73 65 74 4d 61 78 69 6d 75 6d 53 69 7a 65 28 33 32 2c 20 33 32 29 0a 20 20 20 20 20 20 20 20 .setMaximumSize(32,.32).........
15920 73 65 6c 66 2e 74 69 74 6c 65 5f 69 6d 61 67 65 5f 6c 61 62 65 6c 2e 73 65 74 53 63 61 6c 65 64 self.title_image_label.setScaled
15940 43 6f 6e 74 65 6e 74 73 28 54 72 75 65 29 0a 0a 0a 63 6c 61 73 73 20 43 68 65 63 6b 61 62 6c 65 Contents(True)...class.Checkable
15960 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 28 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d TableWidgetItem(QTableWidgetItem
15980 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 46 6f 72 20 75 73 65 20 69 6e 20 61 20 74 61 62 6c ):.....'''.....For.use.in.a.tabl
159a0 65 20 63 65 6c 6c 2c 20 64 69 73 70 6c 61 79 73 20 61 20 63 68 65 63 6b 62 6f 78 20 74 68 61 74 e.cell,.displays.a.checkbox.that
159c0 20 63 61 6e 20 70 6f 74 65 6e 74 69 61 6c 6c 79 20 62 65 20 74 72 69 73 74 61 74 65 0a 20 20 20 .can.potentially.be.tristate....
159e0 20 27 27 27 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 63 68 65 63 .'''.....def.__init__(self,.chec
15a00 6b 65 64 3a 20 62 6f 6f 6c 3d 46 61 6c 73 65 2c 20 74 65 78 74 3a 20 73 74 72 3d 27 27 2c 20 69 ked:.bool=False,.text:.str='',.i
15a20 73 5f 74 72 69 73 74 61 74 65 3d 46 61 6c 73 65 2c 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 3d 46 s_tristate=False,.is_read_only=F
15a40 61 6c 73 65 29 3a 0a 20 20 20 20 20 20 20 20 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 2e alse):.........QTableWidgetItem.
15a60 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c __init__(self,.text).........sel
15a80 66 2e 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 20 3d 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 0a 20 20 f.is_read_only.=.is_read_only...
15aa0 20 20 20 20 20 20 69 66 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 ......if.is_read_only:..........
15ac0 20 20 20 73 65 6c 66 2e 73 65 74 46 6c 61 67 73 28 51 74 2e 49 74 65 6d 46 6c 61 67 2e 49 74 65 ...self.setFlags(Qt.ItemFlag.Ite
15ae0 6d 49 73 53 65 6c 65 63 74 61 62 6c 65 20 7c 20 51 74 2e 49 74 65 6d 46 6c 61 67 2e 49 74 65 6d mIsSelectable.|.Qt.ItemFlag.Item
15b00 49 73 45 6e 61 62 6c 65 64 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 IsEnabled).........else:........
15b20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 46 6c 61 67 73 28 51 74 2e 49 74 65 6d 46 6c 61 67 2e 49 .....self.setFlags(Qt.ItemFlag.I
15b40 74 65 6d 49 73 53 65 6c 65 63 74 61 62 6c 65 20 7c 20 51 74 2e 49 74 65 6d 46 6c 61 67 2e 49 74 temIsSelectable.|.Qt.ItemFlag.It
15b60 65 6d 49 73 55 73 65 72 43 68 65 63 6b 61 62 6c 65 20 7c 20 51 74 2e 49 74 65 6d 46 6c 61 67 2e emIsUserCheckable.|.Qt.ItemFlag.
15b80 49 74 65 6d 49 73 45 6e 61 62 6c 65 64 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 ItemIsEnabled)..................
15ba0 69 66 20 69 73 5f 74 72 69 73 74 61 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 if.is_tristate:.............self
15bc0 2e 73 65 74 46 6c 61 67 73 28 73 65 6c 66 2e 66 6c 61 67 73 28 29 20 7c 20 51 74 2e 49 74 65 6d .setFlags(self.flags().|.Qt.Item
15be0 46 6c 61 67 2e 49 74 65 6d 49 73 55 73 65 72 54 72 69 73 74 61 74 65 29 0a 20 20 20 20 20 20 20 Flag.ItemIsUserTristate)........
15c00 20 69 66 20 63 68 65 63 6b 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 .if.checked:.............self.se
15c20 74 43 68 65 63 6b 53 74 61 74 65 28 51 74 2e 43 68 65 63 6b 65 64 29 0a 20 20 20 20 20 20 20 20 tCheckState(Qt.Checked).........
15c40 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 73 5f 74 72 69 73 74 61 74 65 else:.............if.is_tristate
15c60 20 61 6e 64 20 63 68 65 63 6b 65 64 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 .and.checked.is.None:...........
15c80 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 43 68 65 63 6b 53 74 61 74 65 28 51 74 2e 43 68 65 63 ......self.setCheckState(Qt.Chec
15ca0 6b 53 74 61 74 65 2e 50 61 72 74 69 61 6c 6c 79 43 68 65 63 6b 65 64 29 0a 20 20 20 20 20 20 20 kState.PartiallyChecked)........
15cc0 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e .....else:.................self.
15ce0 73 65 74 43 68 65 63 6b 53 74 61 74 65 28 51 74 2e 43 68 65 63 6b 53 74 61 74 65 2e 55 6e 63 68 setCheckState(Qt.CheckState.Unch
15d00 65 63 6b 65 64 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 67 65 74 5f 62 6f 6f 6c 65 61 6e 5f ecked)..........def.get_boolean_
15d20 76 61 6c 75 65 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 27 27 27 value(self).->.bool:.........'''
15d40 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 61 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 20 .........Return.a.boolean.value.
15d60 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 74 68 65 72 20 63 68 65 63 6b 62 6f 78 20 69 73 20 63 indicating.whether.checkbox.is.c
15d80 68 65 63 6b 65 64 0a 20 20 20 20 20 20 20 20 49 66 20 74 68 69 73 20 69 73 20 61 20 74 72 69 73 hecked.........If.this.is.a.tris
15da0 74 61 74 65 20 63 68 65 63 6b 62 6f 78 2c 20 61 20 70 61 72 74 69 61 6c 6c 79 20 63 68 65 63 6b tate.checkbox,.a.partially.check
15dc0 65 64 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72 6e 65 64 20 61 73 20 4e 6f 6e 65 0a 20 20 20 ed.value.is.returned.as.None....
15de0 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 63 68 65 63 6b 53 74 .....'''.........if.self.checkSt
15e00 61 74 65 28 29 20 3d 3d 20 51 74 2e 50 61 72 74 69 61 6c 6c 79 43 68 65 63 6b 65 64 3a 0a 20 20 ate().==.Qt.PartiallyChecked:...
15e20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 65 6c ..........return.None.........el
15e40 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 63 68 65 63 se:.............return.self.chec
15e60 6b 53 74 61 74 65 28 29 20 3d 3d 20 51 74 2e 43 68 65 63 6b 65 64 0a 0a 0a 63 6c 61 73 73 20 44 kState().==.Qt.Checked...class.D
15e80 61 74 65 44 65 6c 65 67 61 74 65 28 5f 44 61 74 65 44 65 6c 65 67 61 74 65 29 3a 0a 20 20 20 20 ateDelegate(_DateDelegate):.....
15ea0 27 27 27 0a 20 20 20 20 44 65 6c 65 67 61 74 65 20 66 6f 72 20 64 61 74 65 73 2e 20 42 65 63 61 '''.....Delegate.for.dates..Beca
15ec0 75 73 65 20 74 68 69 73 20 64 65 6c 65 67 61 74 65 20 73 74 6f 72 65 73 20 74 68 65 0a 20 20 20 use.this.delegate.stores.the....
15ee0 20 66 6f 72 6d 61 74 20 61 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 2c .format.as.an.instance.variable,
15f00 20 61 20 6e 65 77 20 69 6e 73 74 61 6e 63 65 20 6d 75 73 74 20 62 65 20 63 72 65 61 74 65 64 20 .a.new.instance.must.be.created.
15f20 66 6f 72 20 65 61 63 68 0a 20 20 20 20 63 6f 6c 75 6d 6e 2e 20 54 68 69 73 20 64 69 66 66 65 72 for.each.....column..This.differ
15f40 73 20 66 72 6f 6d 20 61 6c 6c 20 74 68 65 20 6f 74 68 65 72 20 64 65 6c 65 67 61 74 65 73 2e 0a s.from.all.the.other.delegates..
15f60 20 20 20 20 27 27 27 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 66 ....'''.....def.__init__(self,.f
15f80 6d 74 3d 27 64 64 20 4d 4d 4d 20 79 79 79 79 27 2c 20 64 65 66 61 75 6c 74 5f 74 6f 5f 74 6f 64 mt='dd.MMM.yyyy',.default_to_tod
15fa0 61 79 3d 54 72 75 65 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 44 ay=True,.parent=None):.........D
15fc0 61 74 65 44 65 6c 65 67 61 74 65 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 72 65 6e ateDelegate.__init__(self,.paren
15fe0 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 6f 72 6d 61 74 20 3d 20 67 65 74 5f 64 61 74 t).........self.format.=.get_dat
16000 65 5f 66 6f 72 6d 61 74 28 64 65 66 61 75 6c 74 5f 66 6d 74 3d 66 6d 74 29 0a 20 20 20 20 20 20 e_format(default_fmt=fmt).......
16020 20 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 5f 74 6f 5f 74 6f 64 61 79 20 3d 20 64 65 66 61 75 6c ..self.default_to_today.=.defaul
16040 74 5f 74 6f 5f 74 6f 64 61 79 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 72 65 6e 74 20 3d t_to_today.........self.parent.=
16060 20 70 61 72 65 6e 74 0a 0a 20 20 20 20 64 65 66 20 63 72 65 61 74 65 45 64 69 74 6f 72 28 73 65 .parent......def.createEditor(se
16080 6c 66 2c 20 6f 70 74 69 6f 6e 2c 20 69 6e 64 65 78 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a lf,.option,.index,.parent=None):
160a0 0a 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 20 3d 20 70 61 72 65 6e 74 20 6f 72 20 73 65 6c 66 .........parent.=.parent.or.self
160c0 2e 70 61 72 65 6e 74 20 6f 72 20 47 55 49 0a 20 20 20 20 20 20 20 20 71 64 65 20 3d 20 51 53 74 .parent.or.GUI.........qde.=.QSt
160e0 79 6c 65 64 49 74 65 6d 44 65 6c 65 67 61 74 65 2e 63 72 65 61 74 65 45 64 69 74 6f 72 28 73 65 yledItemDelegate.createEditor(se
16100 6c 66 2c 20 70 61 72 65 6e 74 2c 20 6f 70 74 69 6f 6e 2c 20 69 6e 64 65 78 29 0a 20 20 20 20 20 lf,.parent,.option,.index)......
16120 20 20 20 71 64 65 2e 73 65 74 44 69 73 70 6c 61 79 46 6f 72 6d 61 74 28 73 65 6c 66 2e 66 6f 72 ...qde.setDisplayFormat(self.for
16140 6d 61 74 29 0a 20 20 20 20 20 20 20 20 71 64 65 2e 73 65 74 4d 69 6e 69 6d 75 6d 44 61 74 65 54 mat).........qde.setMinimumDateT
16160 69 6d 65 28 55 4e 44 45 46 49 4e 45 44 5f 51 44 41 54 45 54 49 4d 45 29 0a 20 20 20 20 20 20 20 ime(UNDEFINED_QDATETIME)........
16180 20 71 64 65 2e 73 65 74 53 70 65 63 69 61 6c 56 61 6c 75 65 54 65 78 74 28 5f 28 27 55 6e 64 65 .qde.setSpecialValueText(_('Unde
161a0 66 69 6e 65 64 27 29 29 0a 20 20 20 20 20 20 20 20 71 64 65 2e 73 65 74 43 61 6c 65 6e 64 61 72 fined')).........qde.setCalendar
161c0 50 6f 70 75 70 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 71 64 65 0a 0a Popup(True).........return.qde..
161e0 20 20 20 20 64 65 66 20 73 65 74 45 64 69 74 6f 72 44 61 74 61 28 73 65 6c 66 2c 20 65 64 69 74 ....def.setEditorData(self,.edit
16200 6f 72 2c 20 69 6e 64 65 78 29 3a 0a 20 20 20 20 20 20 20 20 76 61 6c 20 3d 20 69 6e 64 65 78 2e or,.index):.........val.=.index.
16220 6d 6f 64 65 6c 28 29 2e 64 61 74 61 28 69 6e 64 65 78 2c 20 51 74 2e 44 69 73 70 6c 61 79 52 6f model().data(index,.Qt.DisplayRo
16240 6c 65 29 0a 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 72 69 6e 74 28 27 73 65 74 45 64 69 74 le).........debug_print('setEdit
16260 6f 72 44 61 74 61 20 76 61 6c 3a 27 2c 76 61 6c 29 0a 20 20 20 20 20 20 20 20 69 66 20 76 61 6c orData.val:',val).........if.val
16280 20 69 73 20 4e 6f 6e 65 20 6f 72 20 76 61 6c 20 3d 3d 20 55 4e 44 45 46 49 4e 45 44 5f 51 44 41 .is.None.or.val.==.UNDEFINED_QDA
162a0 54 45 54 49 4d 45 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 64 65 66 61 TETIME:.............if.self.defa
162c0 75 6c 74 5f 74 6f 5f 74 6f 64 61 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 ult_to_today:.................va
162e0 6c 20 3d 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 5f 64 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 l.=.self.default_date...........
16300 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 20 3d 20 55 4e ..else:.................val.=.UN
16320 44 45 46 49 4e 45 44 5f 51 44 41 54 45 54 49 4d 45 0a 20 20 20 20 20 20 20 20 65 64 69 74 6f 72 DEFINED_QDATETIME.........editor
16340 2e 73 65 74 44 61 74 65 54 69 6d 65 28 71 74 5f 66 72 6f 6d 5f 64 74 28 76 61 6c 29 29 0a 0a 20 .setDateTime(qt_from_dt(val))...
16360 20 20 20 64 65 66 20 73 65 74 4d 6f 64 65 6c 44 61 74 61 28 73 65 6c 66 2c 20 65 64 69 74 6f 72 ...def.setModelData(self,.editor
16380 2c 20 6d 6f 64 65 6c 2c 20 69 6e 64 65 78 29 3a 0a 20 20 20 20 20 20 20 20 76 61 6c 20 3d 20 65 ,.model,.index):.........val.=.e
163a0 64 69 74 6f 72 2e 64 61 74 65 54 69 6d 65 28 29 0a 20 20 20 20 20 20 20 20 64 65 62 75 67 5f 70 ditor.dateTime().........debug_p
163c0 72 69 6e 74 28 27 73 65 74 4d 6f 64 65 6c 44 61 74 61 3a 20 27 2c 76 61 6c 29 0a 20 20 20 20 20 rint('setModelData:.',val)......
163e0 20 20 20 69 66 20 76 61 6c 20 3c 3d 20 55 4e 44 45 46 49 4e 45 44 5f 51 44 41 54 45 54 49 4d 45 ...if.val.<=.UNDEFINED_QDATETIME
16400 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 6f 64 65 6c 2e 73 65 74 44 61 74 61 28 69 6e 64 65 :.............model.setData(inde
16420 78 2c 20 55 4e 44 45 46 49 4e 45 44 5f 51 44 41 54 45 54 49 4d 45 2c 20 51 74 2e 45 64 69 74 52 x,.UNDEFINED_QDATETIME,.Qt.EditR
16440 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d ole).........else:.............m
16460 6f 64 65 6c 2e 73 65 74 44 61 74 61 28 69 6e 64 65 78 2c 20 71 74 5f 66 72 6f 6d 5f 64 74 28 76 odel.setData(index,.qt_from_dt(v
16480 61 6c 29 2c 20 51 74 2e 45 64 69 74 52 6f 6c 65 29 0a 0a 0a 63 6c 61 73 73 20 44 61 74 65 54 61 al),.Qt.EditRole)...class.DateTa
164a0 62 6c 65 57 69 64 67 65 74 49 74 65 6d 28 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 29 3a bleWidgetItem(QTableWidgetItem):
164c0 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 61 74 65 5f 72 65 61 .....def.__init__(self,.date_rea
164e0 64 3a 20 64 61 74 65 74 69 6d 65 2c 20 64 65 66 61 75 6c 74 5f 74 6f 5f 74 6f 64 61 79 3d 46 61 d:.datetime,.default_to_today=Fa
16500 6c 73 65 2c 20 66 6d 74 3d 4e 6f 6e 65 2c 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 3d 46 61 6c 73 lse,.fmt=None,.is_read_only=Fals
16520 65 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 65 5f 72 65 61 64 20 69 73 20 4e 6f 6e 65 e):.........if.date_read.is.None
16540 20 6f 72 20 28 64 61 74 65 5f 72 65 61 64 20 3d 3d 20 55 4e 44 45 46 49 4e 45 44 5f 44 41 54 45 .or.(date_read.==.UNDEFINED_DATE
16560 20 61 6e 64 20 64 65 66 61 75 6c 74 5f 74 6f 5f 74 6f 64 61 79 29 3a 0a 20 20 20 20 20 20 20 20 .and.default_to_today):.........
16580 20 20 20 20 64 61 74 65 5f 72 65 61 64 20 3d 20 6e 6f 77 28 29 0a 20 20 20 20 20 20 20 20 73 65 ....date_read.=.now().........se
165a0 6c 66 2e 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 20 3d 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 0a 20 lf.is_read_only.=.is_read_only..
165c0 20 20 20 20 20 20 20 69 66 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 3a 0a 20 20 20 20 20 20 20 20 .......if.is_read_only:.........
165e0 20 20 20 20 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 ....QTableWidgetItem.__init__(se
16600 6c 66 2c 20 66 6f 72 6d 61 74 5f 64 61 74 65 28 64 61 74 65 5f 72 65 61 64 2c 20 66 6d 74 29 29 lf,.format_date(date_read,.fmt))
16620 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 46 6c 61 67 73 28 51 74 2e 49 74 .............self.setFlags(Qt.It
16640 65 6d 46 6c 61 67 2e 49 74 65 6d 49 73 53 65 6c 65 63 74 61 62 6c 65 20 7c 20 51 74 2e 49 74 65 emFlag.ItemIsSelectable.|.Qt.Ite
16660 6d 46 6c 61 67 2e 49 74 65 6d 49 73 45 6e 61 62 6c 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 mFlag.ItemIsEnabled)............
16680 20 73 65 6c 66 2e 73 65 74 44 61 74 61 28 51 74 2e 44 69 73 70 6c 61 79 52 6f 6c 65 2c 20 71 74 .self.setData(Qt.DisplayRole,.qt
166a0 5f 66 72 6f 6d 5f 64 74 28 64 61 74 65 5f 72 65 61 64 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 _from_dt(date_read)).........els
166c0 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 2e e:.............QTableWidgetItem.
166e0 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 27 27 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 __init__(self,.'').............s
16700 65 6c 66 2e 73 65 74 44 61 74 61 28 51 74 2e 44 69 73 70 6c 61 79 52 6f 6c 65 2c 20 71 74 5f 66 elf.setData(Qt.DisplayRole,.qt_f
16720 72 6f 6d 5f 64 74 28 64 61 74 65 5f 72 65 61 64 29 29 0a 0a 0a 63 6c 61 73 73 20 52 61 74 69 6e rom_dt(date_read))...class.Ratin
16740 67 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 28 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 gTableWidgetItem(QTableWidgetIte
16760 6d 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 72 61 74 69 6e m):.....def.__init__(self,.ratin
16780 67 3a 20 69 6e 74 2c 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 3d 46 61 6c 73 65 29 3a 0a 20 20 20 g:.int,.is_read_only=False):....
167a0 20 20 20 20 20 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 2e 5f 5f 69 6e 69 74 5f 5f 28 73 .....QTableWidgetItem.__init__(s
167c0 65 6c 66 2c 20 27 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 44 61 74 61 28 51 74 elf,.'').........self.setData(Qt
167e0 2e 44 69 73 70 6c 61 79 52 6f 6c 65 2c 20 72 61 74 69 6e 67 29 0a 20 20 20 20 20 20 20 20 73 65 .DisplayRole,.rating).........se
16800 6c 66 2e 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 20 3d 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 0a 20 lf.is_read_only.=.is_read_only..
16820 20 20 20 20 20 20 20 69 66 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 3a 0a 20 20 20 20 20 20 20 20 .......if.is_read_only:.........
16840 20 20 20 20 73 65 6c 66 2e 73 65 74 46 6c 61 67 73 28 51 74 2e 49 74 65 6d 46 6c 61 67 2e 49 74 ....self.setFlags(Qt.ItemFlag.It
16860 65 6d 49 73 53 65 6c 65 63 74 61 62 6c 65 20 7c 20 51 74 2e 49 74 65 6d 46 6c 61 67 2e 49 74 65 emIsSelectable.|.Qt.ItemFlag.Ite
16880 6d 49 73 45 6e 61 62 6c 65 64 29 0a 0a 0a 63 6c 61 73 73 20 54 65 78 74 49 63 6f 6e 57 69 64 67 mIsEnabled)...class.TextIconWidg
168a0 65 74 49 74 65 6d 28 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 29 3a 0a 20 20 20 20 64 65 etItem(QTableWidgetItem):.....de
168c0 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 65 78 74 3a 20 73 74 72 2c 20 69 63 6f 6e f.__init__(self,.text:.str,.icon
168e0 5f 6e 61 6d 65 3a 20 73 74 72 2c 20 74 6f 6f 6c 74 69 70 3d 4e 6f 6e 65 2c 20 69 73 5f 72 65 61 _name:.str,.tooltip=None,.is_rea
16900 64 5f 6f 6e 6c 79 3d 46 61 6c 73 65 29 3a 0a 20 20 20 20 20 20 20 20 51 54 61 62 6c 65 57 69 64 d_only=False):.........QTableWid
16920 67 65 74 49 74 65 6d 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 65 78 74 29 0a 20 20 20 getItem.__init__(self,.text)....
16940 20 20 20 20 20 73 65 6c 66 2e 73 65 74 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 69 63 6f 6e 5f .....self.setIcon(get_icon(icon_
16960 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 54 6f 6f 6c 54 69 70 28 74 name)).........self.setToolTip(t
16980 6f 6f 6c 74 69 70 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 73 5f 72 65 61 64 5f 6f 6e 6c ooltip).........self.is_read_onl
169a0 79 20 3d 20 69 73 5f 72 65 61 64 5f 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 5f 72 y.=.is_read_only.........if.is_r
169c0 65 61 64 5f 6f 6e 6c 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 46 6c ead_only:.............self.setFl
169e0 61 67 73 28 51 74 2e 49 74 65 6d 49 73 53 65 6c 65 63 74 61 62 6c 65 20 7c 20 51 74 2e 49 74 65 ags(Qt.ItemIsSelectable.|.Qt.Ite
16a00 6d 49 73 45 6e 61 62 6c 65 64 29 0a 0a 0a 63 6c 61 73 73 20 52 65 61 64 4f 6e 6c 79 54 61 62 6c mIsEnabled)...class.ReadOnlyTabl
16a20 65 57 69 64 67 65 74 49 74 65 6d 28 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 29 3a 0a 20 eWidgetItem(QTableWidgetItem):..
16a40 20 20 20 27 27 27 0a 20 20 20 20 46 6f 72 20 75 73 65 20 69 6e 20 61 20 74 61 62 6c 65 20 63 65 ...'''.....For.use.in.a.table.ce
16a60 6c 6c 2c 20 64 69 73 70 6c 61 79 73 20 74 65 78 74 20 74 68 65 20 75 73 65 72 20 63 61 6e 6e 6f ll,.displays.text.the.user.canno
16a80 74 20 73 65 6c 65 63 74 20 6f 72 20 6d 6f 64 69 66 79 2e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 t.select.or.modify......'''.....
16aa0 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 65 78 74 3a 20 73 74 72 29 3a 0a 20 def.__init__(self,.text:.str):..
16ac0 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 74 65 78 74 20 6f 72 20 27 27 0a 20 20 20 20 20 20 20 .......text.=.text.or.''........
16ae0 20 51 54 61 62 6c 65 57 69 64 67 65 74 49 74 65 6d 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c .QTableWidgetItem.__init__(self,
16b00 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 46 6c 61 67 73 28 51 74 2e .text).........self.setFlags(Qt.
16b20 49 74 65 6d 46 6c 61 67 2e 49 74 65 6d 49 73 53 65 6c 65 63 74 61 62 6c 65 20 7c 20 51 74 2e 49 ItemFlag.ItemIsSelectable.|.Qt.I
16b40 74 65 6d 46 6c 61 67 2e 49 74 65 6d 49 73 45 6e 61 62 6c 65 64 29 0a 0a 0a 63 6c 61 73 73 20 46 temFlag.ItemIsEnabled)...class.F
16b60 69 65 6c 64 73 56 61 6c 75 65 54 72 65 65 57 69 64 67 65 74 28 51 54 72 65 65 57 69 64 67 65 74 ieldsValueTreeWidget(QTreeWidget
16b80 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 ):.....def.__init__(self,.book_i
16ba0 64 73 3a 20 4c 69 73 74 5b 69 6e 74 5d 3d 4e 6f 6e 65 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 ds:.List[int]=None,.parent=None)
16bc0 3a 0a 20 20 20 20 20 20 20 20 27 49 66 20 62 6f 6f 6b 5f 69 64 73 20 69 73 20 6e 6f 74 20 4e 6f :.........'If.book_ids.is.not.No
16be0 6e 65 2c 20 64 69 73 70 6c 61 79 20 61 20 65 6e 74 72 79 20 74 68 61 74 20 63 6f 6e 74 61 69 6e ne,.display.a.entry.that.contain
16c00 20 61 20 73 75 62 73 65 74 20 6f 66 20 4e 6f 74 65 73 20 66 6f 72 20 6c 69 73 74 65 64 20 62 6f .a.subset.of.Notes.for.listed.bo
16c20 6f 6b 73 27 0a 20 20 20 20 20 20 20 20 51 54 72 65 65 57 69 64 67 65 74 2e 5f 5f 69 6e 69 74 5f oks'.........QTreeWidget.__init_
16c40 5f 28 73 65 6c 66 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 _(self,.parent).................
16c60 20 73 65 6c 66 2e 73 65 74 49 63 6f 6e 53 69 7a 65 28 51 53 69 7a 65 28 32 30 2c 20 32 30 29 29 .self.setIconSize(QSize(20,.20))
16c80 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 65 61 64 65 72 28 29 2e 68 69 64 65 28 29 0a 20 20 .........self.header().hide()...
16ca0 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 53 65 6c 65 63 74 69 6f 6e 4d 6f 64 65 28 51 41 62 73 ......self.setSelectionMode(QAbs
16cc0 74 72 61 63 74 49 74 65 6d 56 69 65 77 2e 4d 75 6c 74 69 53 65 6c 65 63 74 69 6f 6e 29 0a 20 20 tractItemView.MultiSelection)...
16ce0 20 20 20 20 20 20 73 65 6c 66 2e 69 74 65 6d 43 68 61 6e 67 65 64 2e 63 6f 6e 6e 65 63 74 28 73 ......self.itemChanged.connect(s
16d00 65 6c 66 2e 69 74 65 6d 5f 63 68 61 6e 67 65 64 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 elf.item_changed)...............
16d20 20 20 20 73 65 6c 66 2e 5f 64 62 41 50 49 20 3d 20 63 75 72 72 65 6e 74 5f 64 62 28 29 2e 6e 65 ...self._dbAPI.=.current_db().ne
16d40 77 5f 61 70 69 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 62 6f 6f 6b 5f 69 74 65 6d 20 3d 20 w_api.........self._book_item.=.
16d60 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 65 70 61 72 61 74 6f 72 5f 69 74 65 None.........self._separator_ite
16d80 6d 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 m.=.None..................self.p
16da0 6f 70 75 6c 61 74 65 5f 74 72 65 65 28 62 6f 6f 6b 5f 69 64 73 3d 62 6f 6f 6b 5f 69 64 73 29 0a opulate_tree(book_ids=book_ids).
16dc0 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 62 75 69 6c 64 5f 63 6f 6e 74 65 6e 74 5f 6d 61 70 28 .........def._build_content_map(
16de0 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 3a 20 55 6e 69 6f 6e 5b 4c 69 73 74 5b 69 6e 74 5d 2c self,.book_ids:.Union[List[int],
16e00 20 4e 6f 6e 65 5d 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 4c 69 73 74 5b 54 75 70 6c 65 5b .None]).->.Dict[str,.List[Tuple[
16e20 73 74 72 2c 20 69 6e 74 5d 5d 5d 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4e 6f 74 49 6d str,.int]]]:.........raise.NotIm
16e40 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 6f plementedError()..........def.po
16e60 70 75 6c 61 74 65 5f 74 72 65 65 28 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 3a 20 4c 69 73 74 pulate_tree(self,.book_ids:.List
16e80 5b 69 6e 74 5d 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 [int]=None):..................se
16ea0 6c 66 2e 63 6f 6e 74 65 6e 74 5f 6d 61 70 20 3d 20 63 6f 6e 74 65 6e 74 5f 6d 61 70 20 3d 20 73 lf.content_map.=.content_map.=.s
16ec0 65 6c 66 2e 5f 62 75 69 6c 64 5f 63 6f 6e 74 65 6e 74 5f 6d 61 70 28 4e 6f 6e 65 29 0a 20 20 20 elf._build_content_map(None)....
16ee0 20 20 20 20 20 73 65 6c 66 2e 62 6f 6f 6b 5f 69 64 73 20 3d 20 62 6f 6f 6b 5f 69 64 73 0a 20 20 .....self.book_ids.=.book_ids...
16f00 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 62 6f 6f 6b 5f 69 74 65 6d 20 3d ...............self._book_item.=
16f20 20 62 6f 6f 6b 5f 69 74 65 6d 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f .book_item.=.None.........self._
16f40 73 65 70 61 72 61 74 6f 72 5f 69 74 65 6d 20 3d 20 73 65 70 61 72 61 74 6f 72 20 3d 20 4e 6f 6e separator_item.=.separator.=.Non
16f60 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 61 6b 65 54 6f 70 4c 65 76 65 6c 49 74 65 6d 28 e.........self.takeTopLevelItem(
16f80 2d 31 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 69 65 6c 64 73 5f 6f 72 64 65 -1)..................fields_orde
16fa0 72 20 3d 20 67 65 74 5f 74 61 67 73 5f 62 72 6f 77 73 61 62 6c 65 5f 66 69 65 6c 64 73 28 29 0a r.=.get_tags_browsable_fields().
16fc0 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 63 61 74 65 67 6f 72 79 5f 69 63 6f 6e 73 20 .................category_icons.
16fe0 3d 20 67 65 74 5f 63 61 74 65 67 6f 72 79 5f 69 63 6f 6e 73 5f 6d 61 70 28 29 0a 20 20 20 20 20 =.get_category_icons_map()......
17000 20 20 20 0a 20 20 20 20 20 20 20 20 64 65 66 20 63 72 65 61 74 65 5f 74 72 65 65 5f 69 74 65 6d ............def.create_tree_item
17020 28 70 61 72 65 6e 74 2c 20 74 65 78 74 2c 20 64 61 74 61 2c 20 69 63 6f 6e 29 3a 0a 20 20 20 20 (parent,.text,.data,.icon):.....
17040 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 51 54 72 65 65 57 69 64 67 65 74 49 74 65 6d 28 70 ........rslt.=.QTreeWidgetItem(p
17060 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 2e 73 65 74 54 65 78 74 28 arent).............rslt.setText(
17080 30 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 2e 73 65 74 44 61 74 0,.text).............rslt.setDat
170a0 61 28 30 2c 20 51 74 2e 55 73 65 72 52 6f 6c 65 2c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 a(0,.Qt.UserRole,.data).........
170c0 20 20 20 20 72 73 6c 74 2e 73 65 74 46 6c 61 67 73 28 51 74 2e 49 74 65 6d 49 73 45 6e 61 62 6c ....rslt.setFlags(Qt.ItemIsEnabl
170e0 65 64 20 7c 20 51 74 2e 49 74 65 6d 49 73 55 73 65 72 43 68 65 63 6b 61 62 6c 65 29 0a 20 20 20 ed.|.Qt.ItemIsUserCheckable)....
17100 20 20 20 20 20 20 20 20 20 72 73 6c 74 2e 73 65 74 43 68 65 63 6b 53 74 61 74 65 28 30 2c 20 51 .........rslt.setCheckState(0,.Q
17120 74 2e 55 6e 63 68 65 63 6b 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 2e 73 65 t.Unchecked).............rslt.se
17140 74 49 63 6f 6e 28 30 2c 20 69 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 tIcon(0,.icon).............retur
17160 6e 20 72 73 6c 74 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 64 65 66 20 63 72 65 61 n.rslt..................def.crea
17180 74 65 5f 72 6f 6f 74 5f 69 74 65 6d 28 70 61 72 65 6e 74 2c 20 66 69 65 6c 64 2c 20 69 74 65 6d te_root_item(parent,.field,.item
171a0 73 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 63 6f 6e 20 3d 20 63 61 74 65 67 6f 72 79 5f s):.............icon.=.category_
171c0 69 63 6f 6e 73 5b 66 69 65 6c 64 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 icons[field].............name.=.
171e0 73 65 6c 66 2e 5f 64 62 41 50 49 2e 66 69 65 6c 64 5f 6d 65 74 61 64 61 74 61 5b 66 69 65 6c 64 self._dbAPI.field_metadata[field
17200 5d 5b 27 6e 61 6d 65 27 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 20 3d 20 63 72 65 ]['name'].............root.=.cre
17220 61 74 65 5f 74 72 65 65 5f 69 74 65 6d 28 70 61 72 65 6e 74 2c 20 66 27 7b 6e 61 6d 65 7d 20 28 ate_tree_item(parent,.f'{name}.(
17240 7b 66 69 65 6c 64 7d 29 27 2c 20 66 69 65 6c 64 2c 20 69 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 {field})',.field,.icon).........
17260 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 64 61 74 61 20 69 6e 20 69 74 65 .................for.data.in.ite
17280 6d 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 64 62 41 ms:.................if.self._dbA
172a0 50 49 2e 66 69 65 6c 64 5f 6d 65 74 61 64 61 74 61 5b 66 69 65 6c 64 5d 5b 27 64 61 74 61 74 79 PI.field_metadata[field]['dataty
172c0 70 65 27 5d 20 3d 3d 20 27 72 61 74 69 6e 67 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 pe'].==.'rating':...............
172e0 20 20 20 20 20 20 74 65 78 74 20 3d 20 72 61 74 69 6e 67 5f 74 6f 5f 73 74 61 72 73 28 64 61 74 ......text.=.rating_to_stars(dat
17300 61 5b 30 5d 2c 20 61 6c 6c 6f 77 5f 68 61 6c 66 5f 73 74 61 72 73 3d 54 72 75 65 29 0a 20 20 20 a[0],.allow_half_stars=True)....
17320 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .............else:..............
17340 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 64 61 74 61 5b 30 5d 0a 20 20 20 20 20 20 20 20 20 20 .......text.=.data[0]...........
17360 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20 3d 20 63 72 65 61 .......................ch.=.crea
17380 74 65 5f 74 72 65 65 5f 69 74 65 6d 28 72 6f 6f 74 2c 20 74 65 78 74 2c 20 64 61 74 61 2c 20 69 te_tree_item(root,.text,.data,.i
173a0 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74 2e 61 64 64 43 68 69 con).................root.addChi
173c0 6c 64 28 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 ld(ch)..........................
173e0 72 6f 6f 74 2e 73 6f 72 74 43 68 69 6c 64 72 65 6e 28 30 2c 20 51 74 2e 41 73 63 65 6e 64 69 6e root.sortChildren(0,.Qt.Ascendin
17400 67 4f 72 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 6f 6f 74 0a gOrder).............return.root.
17420 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 6f 6e 74 65 6e 74 5f .................if.not.content_
17440 6d 61 70 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 65 70 61 72 61 74 6f 72 map:.............self._separator
17460 5f 69 74 65 6d 20 3d 20 73 65 70 61 72 61 74 6f 72 20 3d 20 51 54 72 65 65 57 69 64 67 65 74 49 _item.=.separator.=.QTreeWidgetI
17480 74 65 6d 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e tem(self).............separator.
174a0 73 65 74 46 6c 61 67 73 28 51 74 2e 4e 6f 49 74 65 6d 46 6c 61 67 73 29 0a 20 20 20 20 20 20 20 setFlags(Qt.NoItemFlags)........
174c0 20 20 20 20 20 73 65 6c 66 2e 61 64 64 54 6f 70 4c 65 76 65 6c 49 74 65 6d 28 73 65 70 61 72 61 .....self.addTopLevelItem(separa
174e0 74 6f 72 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 62 6f 6f 6b 5f tor)..................elif.book_
17500 69 64 73 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c ids.is.not.None:.............sel
17520 66 2e 5f 62 6f 6f 6b 5f 69 74 65 6d 20 3d 20 62 6f 6f 6b 5f 69 74 65 6d 20 3d 20 51 54 72 65 65 f._book_item.=.book_item.=.QTree
17540 57 69 64 67 65 74 49 74 65 6d 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f WidgetItem(self).............boo
17560 6b 5f 69 74 65 6d 2e 73 65 74 46 6c 61 67 73 28 51 74 2e 49 74 65 6d 49 73 45 6e 61 62 6c 65 64 k_item.setFlags(Qt.ItemIsEnabled
17580 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6b 5f 69 74 65 6d 2e 73 65 74 49 63 6f 6e 28 ).............book_item.setIcon(
175a0 30 2c 20 67 65 74 5f 69 63 6f 6e 28 27 62 6f 6f 6b 2e 70 6e 67 27 29 29 0a 20 20 20 20 20 20 20 0,.get_icon('book.png'))........
175c0 20 20 20 20 20 73 65 6c 66 2e 61 64 64 54 6f 70 4c 65 76 65 6c 49 74 65 6d 28 62 6f 6f 6b 5f 69 .....self.addTopLevelItem(book_i
175e0 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f tem)..........................bo
17600 6f 6b 5f 66 69 65 6c 64 73 5f 69 64 73 20 3d 20 73 65 6c 66 2e 5f 62 75 69 6c 64 5f 63 6f 6e 74 ok_fields_ids.=.self._build_cont
17620 65 6e 74 5f 6d 61 70 28 62 6f 6f 6b 5f 69 64 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 ent_map(book_ids)...............
17640 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 20 69 6e 20 66 69 65 6c 64 73 5f 6f ...........for.field.in.fields_o
17660 72 64 65 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 6d 73 20 3d 20 62 6f rder:.................items.=.bo
17680 6f 6b 5f 66 69 65 6c 64 73 5f 69 64 73 2e 67 65 74 28 66 69 65 6c 64 2c 20 4e 6f 6e 65 29 0a 20 ok_fields_ids.get(field,.None)..
176a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 74 65 6d 73 3a 0a 20 20 20 20 20 20 20 ...............if.items:........
176c0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6b 5f 69 74 65 6d 2e 61 64 64 43 68 69 6c 64 28 .............book_item.addChild(
176e0 63 72 65 61 74 65 5f 72 6f 6f 74 5f 69 74 65 6d 28 62 6f 6f 6b 5f 69 74 65 6d 2c 20 66 69 65 6c create_root_item(book_item,.fiel
17700 64 2c 20 69 74 65 6d 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 d,.items))......................
17720 20 20 20 20 73 65 6c 66 2e 5f 73 65 70 61 72 61 74 6f 72 5f 69 74 65 6d 20 3d 20 73 65 70 61 72 ....self._separator_item.=.separ
17740 61 74 6f 72 20 3d 20 51 54 72 65 65 57 69 64 67 65 74 49 74 65 6d 28 73 65 6c 66 29 0a 20 20 20 ator.=.QTreeWidgetItem(self)....
17760 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 2e 73 65 74 46 6c 61 67 73 28 51 74 2e 4e .........separator.setFlags(Qt.N
17780 6f 49 74 65 6d 46 6c 61 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 oItemFlags).............self.add
177a0 54 6f 70 4c 65 76 65 6c 49 74 65 6d 28 73 65 70 61 72 61 74 6f 72 29 0a 20 20 20 20 20 20 20 20 TopLevelItem(separator).........
177c0 0a 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 20 69 6e 20 66 69 65 6c 64 73 5f 6f 72 64 .........for.field.in.fields_ord
177e0 65 72 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 6d 73 20 3d 20 63 6f 6e 74 65 6e 74 5f er:.............items.=.content_
17800 6d 61 70 2e 67 65 74 28 66 69 65 6c 64 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 map.get(field,.None)............
17820 20 69 66 20 69 74 65 6d 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e .if.items:.................self.
17840 61 64 64 54 6f 70 4c 65 76 65 6c 49 74 65 6d 28 63 72 65 61 74 65 5f 72 6f 6f 74 5f 69 74 65 6d addTopLevelItem(create_root_item
17860 28 73 65 6c 66 2c 20 66 69 65 6c 64 2c 20 69 74 65 6d 73 29 29 0a 20 20 20 20 20 20 20 20 0a 20 (self,.field,.items))...........
17880 20 20 20 20 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 5f 74 65 78 74 73 28 0a 20 20 20 20 20 20 .......self.update_texts(.......
178a0 20 20 20 20 20 20 65 6d 70 74 79 3d 27 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 ......empty='',.............sepa
178c0 72 61 74 6f 72 3d 27 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 27 2c 0a 20 20 20 20 20 20 20 20 rator='--------------',.........
178e0 20 20 20 20 74 6f 6f 6c 74 69 70 3d 5f 28 27 53 75 62 73 65 74 20 6f 66 20 76 61 6c 75 65 73 20 ....tooltip=_('Subset.of.values.
17900 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 65 20 62 6f 6f 6b 73 27 29 2c 0a 20 20 20 20 20 20 associate.to.the.books'),.......
17920 20 20 20 20 20 20 7a 65 72 6f 5f 62 6f 6f 6b 3d 5f 28 27 4e 6f 20 62 6f 6f 6b 73 27 29 2c 0a 20 ......zero_book=_('No.books'),..
17940 20 20 20 20 20 20 20 20 20 20 20 7a 65 72 6f 5f 76 61 6c 75 65 73 3d 5f 28 27 7b 3a 64 7d 20 62 ...........zero_values=_('{:d}.b
17960 6f 6f 6b 73 20 28 6e 6f 20 76 61 6c 75 65 73 29 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ooks.(no.values)'),.............
17980 68 61 73 5f 62 6f 6f 6b 5f 76 61 6c 75 65 73 3d 5f 28 27 7b 3a 64 7d 20 62 6f 6f 6b 73 27 29 2c has_book_values=_('{:d}.books'),
179a0 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 5f 74 .........)..........def.update_t
179c0 65 78 74 73 28 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6d 70 74 79 3a 20 73 74 exts(self,.............empty:.st
179e0 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 70 61 72 61 74 6f 72 3a 20 73 r=None,.............separator:.s
17a00 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6f 6c 74 69 70 3a 20 73 74 tr=None,.............tooltip:.st
17a20 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7a 65 72 6f 5f 62 6f 6f 6b 3a 20 73 r=None,.............zero_book:.s
17a40 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7a 65 72 6f 5f 76 61 6c 75 65 73 tr=None,.............zero_values
17a60 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 61 73 5f 62 6f 6f 6b :.str=None,.............has_book
17a80 5f 76 61 6c 75 65 73 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 29 3a 0a 20 20 _values:.str=None,.........):...
17aa0 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 63 6f 6e 74 65 6e 74 5f 6d 61 70 3a 0a 20 ......if.not.self.content_map:..
17ac0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 65 6d 70 74 79 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a ...........if.empty.is.not.None:
17ae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 65 70 61 72 61 74 6f 72 .................self._separator
17b00 5f 69 74 65 6d 2e 73 65 74 54 65 78 74 28 30 2c 20 65 6d 70 74 79 29 0a 20 20 20 20 20 20 20 20 _item.setText(0,.empty).........
17b20 0a 20 20 20 20 20 20 20 20 65 6c 69 66 20 73 65 6c 66 2e 62 6f 6f 6b 5f 69 64 73 20 69 73 20 6e .........elif.self.book_ids.is.n
17b40 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 6f 6f 6c 74 69 70 20 ot.None:.............if.tooltip.
17b60 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c is.not.None:.................sel
17b80 66 2e 5f 62 6f 6f 6b 5f 69 74 65 6d 2e 73 65 74 54 6f 6f 6c 54 69 70 28 30 2c 20 74 6f 6f 6c 74 f._book_item.setToolTip(0,.toolt
17ba0 69 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 ip)..........................if.
17bc0 6e 6f 74 20 73 65 6c 66 2e 62 6f 6f 6b 5f 69 64 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 not.self.book_ids:..............
17be0 20 20 20 6d 73 67 20 3d 20 7a 65 72 6f 5f 62 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 ...msg.=.zero_book.............e
17c00 6c 69 66 20 6e 6f 74 20 73 65 6c 66 2e 5f 62 6f 6f 6b 5f 69 74 65 6d 2e 63 68 69 6c 64 43 6f 75 lif.not.self._book_item.childCou
17c20 6e 74 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 7a 65 72 6f nt():.................msg.=.zero
17c40 5f 76 61 6c 75 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 _values.............else:.......
17c60 20 20 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 68 61 73 5f 62 6f 6f 6b 5f 76 61 6c 75 65 73 0a ..........msg.=.has_book_values.
17c80 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6d 73 67 20 .........................if.msg.
17ca0 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c is.not.None:.................sel
17cc0 66 2e 5f 62 6f 6f 6b 5f 69 74 65 6d 2e 73 65 74 54 65 78 74 28 30 2c 20 6d 73 67 2e 66 6f 72 6d f._book_item.setText(0,.msg.form
17ce0 61 74 28 6c 65 6e 28 73 65 6c 66 2e 62 6f 6f 6b 5f 69 64 73 29 29 29 0a 20 20 20 20 20 20 20 20 at(len(self.book_ids))).........
17d00 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 70 61 72 61 74 6f 72 20 69 73 .................if.separator.is
17d20 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e .not.None:.................self.
17d40 5f 73 65 70 61 72 61 74 6f 72 5f 69 74 65 6d 2e 73 65 74 54 65 78 74 28 30 2c 20 73 65 70 61 72 _separator_item.setText(0,.separ
17d60 61 74 6f 72 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 69 74 65 6d 5f 63 68 61 6e 67 65 64 28 ator)..........def.item_changed(
17d80 73 65 6c 66 2c 20 69 74 65 6d 3a 20 51 54 72 65 65 57 69 64 67 65 74 49 74 65 6d 2c 20 63 6f 6c self,.item:.QTreeWidgetItem,.col
17da0 75 6d 6e 3a 20 69 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 53 69 67 umn:.int):.........self.blockSig
17dc0 6e 61 6c 73 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 70 61 72 65 nals(True)..................pare
17de0 6e 74 20 3d 20 69 74 65 6d 2e 70 61 72 65 6e 74 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 nt.=.item.parent().........if.is
17e00 69 6e 73 74 61 6e 63 65 28 70 61 72 65 6e 74 2c 20 51 54 72 65 65 57 69 64 67 65 74 49 74 65 6d instance(parent,.QTreeWidgetItem
17e20 29 20 61 6e 64 20 70 61 72 65 6e 74 2e 64 61 74 61 28 63 6f 6c 75 6d 6e 2c 20 51 74 2e 55 73 65 ).and.parent.data(column,.Qt.Use
17e40 72 52 6f 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 46 61 6c 73 rRole):.............state.=.Fals
17e60 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 69 6e 20 72 61 6e 67 65 28 70 e.............for.idx.in.range(p
17e80 61 72 65 6e 74 2e 63 68 69 6c 64 43 6f 75 6e 74 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 arent.childCount()):............
17ea0 20 20 20 20 20 69 66 20 70 61 72 65 6e 74 2e 63 68 69 6c 64 28 69 64 78 29 2e 63 68 65 63 6b 53 .....if.parent.child(idx).checkS
17ec0 74 61 74 65 28 63 6f 6c 75 6d 6e 29 20 3d 3d 20 51 74 2e 43 68 65 63 6b 53 74 61 74 65 2e 43 68 tate(column).==.Qt.CheckState.Ch
17ee0 65 63 6b 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 ecked:.....................state
17f00 20 3d 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 .=.True.....................brea
17f20 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 2e 73 65 74 43 68 65 63 6b 53 74 61 k.............parent.setCheckSta
17f40 74 65 28 63 6f 6c 75 6d 6e 2c 20 51 74 2e 43 68 65 63 6b 53 74 61 74 65 2e 50 61 72 74 69 61 6c te(column,.Qt.CheckState.Partial
17f60 6c 79 43 68 65 63 6b 65 64 20 69 66 20 73 74 61 74 65 20 65 6c 73 65 20 51 74 2e 43 68 65 63 6b lyChecked.if.state.else.Qt.Check
17f80 53 74 61 74 65 2e 55 6e 63 68 65 63 6b 65 64 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 State.Unchecked).........else:..
17fa0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 74 65 6d 2e 63 68 65 63 6b 53 74 61 74 65 28 63 6f ...........if.item.checkState(co
17fc0 6c 75 6d 6e 29 20 3d 3d 20 51 74 2e 43 68 65 63 6b 53 74 61 74 65 2e 43 68 65 63 6b 65 64 3a 0a lumn).==.Qt.CheckState.Checked:.
17fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 51 74 2e 49 74 65 6d 49 ................state.=.Qt.ItemI
18000 73 55 73 65 72 43 68 65 63 6b 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a sUserCheckable.............else:
18020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 51 74 2e 49 74 65 6d .................state.=.Qt.Item
18040 49 73 45 6e 61 62 6c 65 64 20 7c 20 51 74 2e 49 74 65 6d 49 73 55 73 65 72 43 68 65 63 6b 61 62 IsEnabled.|.Qt.ItemIsUserCheckab
18060 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 69 6e 20 72 61 6e 67 65 28 le.............for.idx.in.range(
18080 69 74 65 6d 2e 63 68 69 6c 64 43 6f 75 6e 74 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 item.childCount()):.............
180a0 20 20 20 20 69 74 65 6d 2e 63 68 69 6c 64 28 69 64 78 29 2e 73 65 74 46 6c 61 67 73 28 73 74 61 ....item.child(idx).setFlags(sta
180c0 74 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 53 te)..................self.blockS
180e0 69 67 6e 61 6c 73 28 46 61 6c 73 65 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 67 65 74 5f 73 ignals(False)..........def.get_s
18100 65 6c 65 63 74 65 64 28 73 65 6c 66 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 4c 69 73 74 5b elected(self).->.Dict[str,.List[
18120 74 75 70 6c 65 5d 5d 3a 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 64 65 66 61 75 6c 74 64 tuple]]:.........rslt.=.defaultd
18140 69 63 74 28 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 64 65 66 20 70 ict(list)..................def.p
18160 61 72 73 65 5f 74 72 65 65 5f 69 74 65 6d 28 69 74 65 6d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 arse_tree_item(item):...........
18180 20 20 66 69 65 6c 64 20 3d 20 69 74 65 6d 2e 64 61 74 61 28 30 2c 20 51 74 2e 55 73 65 72 52 6f ..field.=.item.data(0,.Qt.UserRo
181a0 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 5f 66 69 65 6c 64 20 3d 20 46 61 6c 73 le).............all_field.=.Fals
181c0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 74 65 6d 2e 63 68 65 63 6b 53 74 61 74 65 e.............if.item.checkState
181e0 28 30 29 20 3d 3d 20 51 74 2e 43 68 65 63 6b 53 74 61 74 65 2e 43 68 65 63 6b 65 64 3a 0a 20 20 (0).==.Qt.CheckState.Checked:...
18200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 5f 66 69 65 6c 64 20 3d 20 54 72 75 65 0a 20 ..............all_field.=.True..
18220 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 ........................for.idx.
18240 69 6e 20 72 61 6e 67 65 28 69 74 65 6d 2e 63 68 69 6c 64 43 6f 75 6e 74 28 29 29 3a 0a 20 20 20 in.range(item.childCount()):....
18260 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 20 3d 20 69 74 65 6d 2e 63 68 69 6c 64 28 .............child.=.item.child(
18280 69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 61 6c 6c 5f 66 69 65 6c idx).................if.all_fiel
182a0 64 20 6f 72 20 63 68 69 6c 64 2e 63 68 65 63 6b 53 74 61 74 65 28 30 29 20 3d 3d 20 51 74 2e 43 d.or.child.checkState(0).==.Qt.C
182c0 68 65 63 6b 53 74 61 74 65 2e 43 68 65 63 6b 65 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 heckState.Checked:..............
182e0 20 20 20 20 20 20 20 72 73 6c 74 5b 66 69 65 6c 64 5d 2e 61 70 70 65 6e 64 28 63 68 69 6c 64 2e .......rslt[field].append(child.
18300 64 61 74 61 28 30 2c 20 51 74 2e 55 73 65 72 52 6f 6c 65 29 29 0a 20 20 20 20 20 20 20 20 0a 20 data(0,.Qt.UserRole))...........
18320 20 20 20 20 20 20 20 66 6f 72 20 69 64 78 20 69 6e 20 72 61 6e 67 65 28 73 65 6c 66 2e 74 6f 70 .......for.idx.in.range(self.top
18340 4c 65 76 65 6c 49 74 65 6d 43 6f 75 6e 74 28 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 LevelItemCount()):.............i
18360 74 65 6d 20 3d 20 73 65 6c 66 2e 74 6f 70 4c 65 76 65 6c 49 74 65 6d 28 69 64 78 29 0a 20 20 20 tem.=.self.topLevelItem(idx)....
18380 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 74 65 6d 2e 64 61 ......................if.item.da
183a0 74 61 28 30 2c 20 51 74 2e 55 73 65 72 52 6f 6c 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ta(0,.Qt.UserRole):.............
183c0 20 20 20 20 70 61 72 73 65 5f 74 72 65 65 5f 69 74 65 6d 28 69 74 65 6d 29 0a 20 20 20 20 20 20 ....parse_tree_item(item).......
183e0 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 ......else:.................for.
18400 69 64 78 20 69 6e 20 72 61 6e 67 65 28 69 74 65 6d 2e 63 68 69 6c 64 43 6f 75 6e 74 28 29 29 3a idx.in.range(item.childCount()):
18420 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 20 3d 20 69 74 65 6d 2e 63 .....................ch.=.item.c
18440 68 69 6c 64 28 69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 hild(idx).....................pa
18460 72 73 65 5f 74 72 65 65 5f 69 74 65 6d 28 63 68 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 rse_tree_item(ch)...............
18480 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 0a 0a 63 6c 61 73 73 20 53 65 6c 65 63 74 46 69 65 ...return.rslt...class.SelectFie
184a0 6c 64 56 61 6c 75 65 73 57 69 64 67 65 74 28 46 69 65 6c 64 73 56 61 6c 75 65 54 72 65 65 57 69 ldValuesWidget(FieldsValueTreeWi
184c0 64 67 65 74 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 62 6f dget):.....def.__init__(self,.bo
184e0 6f 6b 5f 69 64 73 3a 20 4c 69 73 74 5b 69 6e 74 5d 3d 4e 6f 6e 65 2c 20 70 61 72 65 6e 74 3d 4e ok_ids:.List[int]=None,.parent=N
18500 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 27 49 66 20 62 6f 6f 6b 5f 69 64 73 20 69 73 20 6e 6f one):.........'If.book_ids.is.no
18520 74 20 4e 6f 6e 65 2c 20 64 69 73 70 6c 61 79 20 61 20 65 6e 74 72 79 20 74 68 61 74 20 63 6f 6e t.None,.display.a.entry.that.con
18540 74 61 69 6e 20 61 20 73 75 62 73 65 74 20 6f 66 20 4e 6f 74 65 73 20 66 6f 72 20 6c 69 73 74 65 tain.a.subset.of.Notes.for.liste
18560 64 20 62 6f 6f 6b 73 27 0a 20 20 20 20 20 20 20 20 46 69 65 6c 64 73 56 61 6c 75 65 54 72 65 65 d.books'.........FieldsValueTree
18580 57 69 64 67 65 74 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 3d 62 Widget.__init__(self,.book_ids=b
185a0 6f 6f 6b 5f 69 64 73 2c 20 70 61 72 65 6e 74 3d 70 61 72 65 6e 74 29 0a 20 20 20 20 0a 20 20 20 ook_ids,.parent=parent).........
185c0 20 64 65 66 20 5f 62 75 69 6c 64 5f 63 6f 6e 74 65 6e 74 5f 6d 61 70 28 73 65 6c 66 2c 20 62 6f .def._build_content_map(self,.bo
185e0 6f 6b 5f 69 64 73 3a 20 55 6e 69 6f 6e 5b 4c 69 73 74 5b 69 6e 74 5d 2c 20 4e 6f 6e 65 5d 29 20 ok_ids:.Union[List[int],.None]).
18600 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 4c 69 73 74 5b 54 75 70 6c 65 5b 73 74 72 2c 20 69 6e 74 ->.Dict[str,.List[Tuple[str,.int
18620 5d 5d 5d 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 6c 69 73 74 5f 66 69 65 6c 64 ]]]:..................list_field
18640 20 3d 20 67 65 74 5f 74 61 67 73 5f 62 72 6f 77 73 61 62 6c 65 5f 66 69 65 6c 64 73 28 69 6e 63 .=.get_tags_browsable_fields(inc
18660 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 3d 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 66 6f lude_composite=False).........fo
18680 72 20 66 20 69 6e 20 5b 27 6e 65 77 73 27 2c 20 27 66 6f 72 6d 61 74 73 27 5d 3a 0a 20 20 20 20 r.f.in.['news',.'formats']:.....
186a0 20 20 20 20 20 20 20 20 69 66 20 66 20 69 6e 20 6c 69 73 74 5f 66 69 65 6c 64 3a 0a 20 20 20 20 ........if.f.in.list_field:.....
186c0 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 5f 66 69 65 6c 64 2e 72 65 6d 6f 76 65 28 66 29 ............list_field.remove(f)
186e0 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 64 65 66 61 75 6c 74 ..................rslt.=.default
18700 64 69 63 74 28 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 62 6f 6f 6b 5f 69 64 73 20 69 dict(list).........if.book_ids.i
18720 73 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 20 69 6e s.None:.............for.field.in
18740 20 6c 69 73 74 5f 66 69 65 6c 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 .list_field:.................for
18760 20 28 69 64 2c 20 76 61 6c 75 65 29 20 69 6e 20 73 65 6c 66 2e 5f 64 62 41 50 49 2e 67 65 74 5f .(id,.value).in.self._dbAPI.get_
18780 69 64 5f 6d 61 70 28 66 69 65 6c 64 29 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 id_map(field).items():..........
187a0 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b 66 69 65 6c 64 5d 2e 61 70 70 65 6e 64 28 28 76 ...........rslt[field].append((v
187c0 61 6c 75 65 2c 20 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 alue,.id))......................
187e0 20 20 20 20 69 64 65 6e 74 69 66 69 65 72 73 20 3d 20 6c 69 73 74 28 67 65 74 5f 61 6c 6c 5f 69 ....identifiers.=.list(get_all_i
18800 64 65 6e 74 69 66 69 65 72 73 28 29 2e 6b 65 79 73 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 dentifiers().keys())............
18820 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 20 69 6e 20 69 64 65 6e 74 69 66 69 ..............for.id.in.identifi
18840 65 72 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b 27 69 64 65 6e 74 ers:.................rslt['ident
18860 69 66 69 65 72 73 27 5d 2e 61 70 70 65 6e 64 28 28 69 64 2c 20 69 64 29 29 0a 20 20 20 20 20 20 ifiers'].append((id,.id)).......
18880 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 20 69 6e ..else:.............for.field.in
188a0 20 6c 69 73 74 5f 66 69 65 6c 64 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 .list_field:.................for
188c0 20 62 6f 6f 6b 5f 69 64 20 69 6e 20 62 6f 6f 6b 5f 69 64 73 3a 0a 20 20 20 20 20 20 20 20 20 20 .book_id.in.book_ids:...........
188e0 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b 66 69 65 6c 64 5d 2e 65 78 74 65 6e 64 28 73 65 6c ..........rslt[field].extend(sel
18900 66 2e 5f 64 62 41 50 49 2e 66 69 65 6c 64 5f 69 64 73 5f 66 6f 72 28 66 69 65 6c 64 2c 20 62 6f f._dbAPI.field_ids_for(field,.bo
18920 6f 6b 5f 69 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 ok_id)).........................
18940 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b 66 69 65 6c 64 5d 20 3d 20 6c 69 73 74 28 73 65 74 28 .........rslt[field].=.list(set(
18960 72 73 6c 74 5b 66 69 65 6c 64 5d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f rslt[field])).................fo
18980 72 20 69 64 78 2c 69 64 5f 66 69 65 6c 64 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 72 73 6c 74 r.idx,id_field.in.enumerate(rslt
189a0 5b 66 69 65 6c 64 5d 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 [field]):.....................if
189c0 20 66 69 65 6c 64 20 3d 3d 20 27 69 64 65 6e 74 69 66 69 65 72 73 27 3a 0a 20 20 20 20 20 20 20 .field.==.'identifiers':........
189e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 69 64 5f 66 69 65 6c .................value.=.id_fiel
18a00 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 d.....................else:.....
18a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 73 65 6c 66 ....................value.=.self
18a40 2e 5f 64 62 41 50 49 2e 67 65 74 5f 69 74 65 6d 5f 6e 61 6d 65 28 66 69 65 6c 64 2c 20 69 64 5f ._dbAPI.get_item_name(field,.id_
18a60 66 69 65 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b field).....................rslt[
18a80 66 69 65 6c 64 5d 5b 69 64 78 5d 20 3d 20 28 76 61 6c 75 65 2c 20 69 64 5f 66 69 65 6c 64 29 0a field][idx].=.(value,.id_field).
18aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ................................
18ac0 20 69 66 20 6e 6f 74 20 6c 65 6e 28 72 73 6c 74 5b 66 69 65 6c 64 5d 29 3a 0a 20 20 20 20 20 20 .if.not.len(rslt[field]):.......
18ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 20 72 73 6c 74 5b 66 69 65 6c 64 5d 0a 20 20 ..............del.rslt[field]...
18b00 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 0a 0a 63 6c 61 ...............return.rslt...cla
18b20 73 73 20 53 65 6c 65 63 74 4e 6f 74 65 73 57 69 64 67 65 74 28 46 69 65 6c 64 73 56 61 6c 75 65 ss.SelectNotesWidget(FieldsValue
18b40 54 72 65 65 57 69 64 67 65 74 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 TreeWidget):.....def.__init__(se
18b60 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 3a 20 4c 69 73 74 5b 69 6e 74 5d 3d 4e 6f 6e 65 2c 20 70 61 lf,.book_ids:.List[int]=None,.pa
18b80 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 27 49 66 20 62 6f 6f 6b 5f 69 64 73 rent=None):.........'If.book_ids
18ba0 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 2c 20 64 69 73 70 6c 61 79 20 61 20 65 6e 74 72 79 20 74 68 .is.not.None,.display.a.entry.th
18bc0 61 74 20 63 6f 6e 74 61 69 6e 20 61 20 73 75 62 73 65 74 20 6f 66 20 4e 6f 74 65 73 20 66 6f 72 at.contain.a.subset.of.Notes.for
18be0 20 6c 69 73 74 65 64 20 62 6f 6f 6b 73 27 0a 20 20 20 20 20 20 20 20 46 69 65 6c 64 73 56 61 6c .listed.books'.........FieldsVal
18c00 75 65 54 72 65 65 57 69 64 67 65 74 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 62 6f 6f 6b ueTreeWidget.__init__(self,.book
18c20 5f 69 64 73 3d 62 6f 6f 6b 5f 69 64 73 2c 20 70 61 72 65 6e 74 3d 70 61 72 65 6e 74 29 0a 20 20 _ids=book_ids,.parent=parent)...
18c40 20 20 20 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 5f 74 65 78 74 73 28 65 6d 70 74 79 3d 5f 28 ......self.update_texts(empty=_(
18c60 27 4e 6f 20 6e 6f 74 65 73 27 29 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 62 75 69 6c 64 'No.notes'))..........def._build
18c80 5f 63 6f 6e 74 65 6e 74 5f 6d 61 70 28 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 3a 20 55 6e 69 _content_map(self,.book_ids:.Uni
18ca0 6f 6e 5b 4c 69 73 74 5b 69 6e 74 5d 2c 20 4e 6f 6e 65 5d 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 on[List[int],.None]).->.Dict[str
18cc0 2c 20 4c 69 73 74 5b 54 75 70 6c 65 5b 73 74 72 2c 20 69 6e 74 5d 5d 5d 3a 0a 20 20 20 20 20 20 ,.List[Tuple[str,.int]]]:.......
18ce0 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 20 69 74 65 6d 5f 69 64 73 20 66 6f ..'''.........Return.item_ids.fo
18d00 72 20 69 74 65 6d 73 20 74 68 61 74 20 68 61 76 65 20 6e 6f 74 65 73 20 69 6e 20 74 68 65 20 73 r.items.that.have.notes.in.the.s
18d20 70 65 63 69 66 69 65 64 20 66 69 65 6c 64 20 6f 72 20 61 6c 6c 20 66 69 65 6c 64 73 20 69 66 20 pecified.field.or.all.fields.if.
18d40 66 69 65 6c 64 5f 6e 61 6d 65 20 69 73 20 4e 6f 6e 65 2e 0a 20 20 20 20 20 20 20 20 49 66 20 62 field_name.is.None..........If.b
18d60 6f 6f 6b 5f 69 64 73 20 69 66 20 70 61 73 73 65 64 2c 20 72 65 74 75 72 6e 20 66 6f 72 20 65 6e ook_ids.if.passed,.return.for.en
18d80 74 72 79 20 6f 6e 6c 79 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 69 73 20 62 6f 6f 6b 20 6c try.only.relative.to.this.book.l
18da0 69 73 74 2e 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 ist..........'''................
18dc0 20 20 69 74 65 6d 73 5f 6d 61 70 20 3d 20 73 65 6c 66 2e 5f 64 62 41 50 49 2e 67 65 74 5f 61 6c ..items_map.=.self._dbAPI.get_al
18de0 6c 5f 69 74 65 6d 73 5f 74 68 61 74 5f 68 61 76 65 5f 6e 6f 74 65 73 28 29 0a 20 20 20 20 20 20 l_items_that_have_notes().......
18e00 20 20 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 64 65 66 61 75 6c 74 64 69 63 74 28 6c 69 ...........rslt.=.defaultdict(li
18e20 73 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 62 6f 6f 6b 5f 69 64 73 20 69 73 20 4e 6f 6e 65 3a st).........if.book_ids.is.None:
18e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 2c 69 74 65 6d 73 20 69 6e 20 .............for.field,items.in.
18e60 69 74 65 6d 73 5f 6d 61 70 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 items_map.items():..............
18e80 20 20 20 69 64 5f 6d 61 70 20 3d 20 73 65 6c 66 2e 5f 64 62 41 50 49 2e 67 65 74 5f 69 64 5f 6d ...id_map.=.self._dbAPI.get_id_m
18ea0 61 70 28 66 69 65 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 ap(field).................for.id
18ec0 20 69 6e 20 69 74 65 6d 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 .in.items:.....................r
18ee0 73 6c 74 5b 66 69 65 6c 64 5d 2e 61 70 70 65 6e 64 28 28 69 64 5f 6d 61 70 5b 69 64 5d 2c 20 69 slt[field].append((id_map[id],.i
18f00 64 29 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 d)).........else:.............ma
18f20 70 20 3d 20 64 65 66 61 75 6c 74 64 69 63 74 28 64 69 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 p.=.defaultdict(dict)...........
18f40 20 20 66 6f 72 20 62 6f 6f 6b 5f 69 64 20 69 6e 20 62 6f 6f 6b 5f 69 64 73 3a 0a 20 20 20 20 20 ..for.book_id.in.book_ids:......
18f60 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 2c 69 74 65 6d 73 20 69 6e 20 69 74 ...........for.field,items.in.it
18f80 65 6d 73 5f 6d 61 70 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ems_map.items():................
18fa0 20 20 20 20 20 66 6f 72 20 69 64 5f 66 69 65 6c 64 20 69 6e 20 73 65 6c 66 2e 5f 64 62 41 50 49 .....for.id_field.in.self._dbAPI
18fc0 2e 66 69 65 6c 64 5f 69 64 73 5f 66 6f 72 28 66 69 65 6c 64 2c 20 62 6f 6f 6b 5f 69 64 29 3a 0a .field_ids_for(field,.book_id):.
18fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 64 5f 66 69 ........................if.id_fi
19000 65 6c 64 20 69 6e 20 69 74 65 6d 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 eld.in.items:...................
19020 20 20 20 20 20 20 20 20 20 20 6d 61 70 5b 66 69 65 6c 64 5d 5b 69 64 5f 66 69 65 6c 64 5d 20 3d ..........map[field][id_field].=
19040 20 73 65 6c 66 2e 5f 64 62 41 50 49 2e 67 65 74 5f 69 74 65 6d 5f 6e 61 6d 65 28 66 69 65 6c 64 .self._dbAPI.get_item_name(field
19060 2c 20 69 64 5f 66 69 65 6c 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 ,.id_field).....................
19080 20 20 20 20 20 66 6f 72 20 66 69 65 6c 64 2c 69 74 65 6d 73 20 69 6e 20 6d 61 70 2e 69 74 65 6d .....for.field,items.in.map.item
190a0 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 69 64 2c 76 61 6c 20 s():.................for.id,val.
190c0 69 6e 20 69 74 65 6d 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 in.items.items():...............
190e0 20 20 20 20 20 20 72 73 6c 74 5b 66 69 65 6c 64 5d 2e 61 70 70 65 6e 64 28 28 76 61 6c 2c 20 69 ......rslt[field].append((val,.i
19100 64 29 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 d))..................return.rslt
19120 0a 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...#.---------------------------
19140 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 20 20 20 20 20 20 20 20 20 20 -------------------.#...........
19160 20 20 20 20 43 6f 6e 74 72 6f 6c 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....Controls.#.-----------------
19180 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 63 -----------------------------..c
191a0 6c 61 73 73 20 52 65 61 64 4f 6e 6c 79 4c 69 6e 65 45 64 69 74 28 51 4c 69 6e 65 45 64 69 74 29 lass.ReadOnlyLineEdit(QLineEdit)
191c0 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 65 78 74 3a 20 73 :.....def.__init__(self,.text:.s
191e0 74 72 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 74 65 78 74 20 3d tr,.parent=None):.........text.=
19200 20 74 65 78 74 20 6f 72 20 27 27 0a 20 20 20 20 20 20 20 20 51 4c 69 6e 65 45 64 69 74 2e 5f 5f .text.or.''.........QLineEdit.__
19220 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 65 78 74 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 init__(self,.text,.parent)......
19240 20 20 20 73 65 6c 66 2e 73 65 74 45 6e 61 62 6c 65 64 28 46 61 6c 73 65 29 0a 0a 0a 63 6c 61 73 ...self.setEnabled(False)...clas
19260 73 20 4e 6f 57 68 65 65 6c 43 6f 6d 62 6f 42 6f 78 28 51 43 6f 6d 62 6f 42 6f 78 29 3a 0a 20 20 s.NoWheelComboBox(QComboBox):...
19280 20 20 27 27 27 0a 20 20 20 20 46 6f 72 20 63 6f 6d 62 6f 62 6f 78 20 64 69 73 70 6c 61 79 65 64 ..'''.....For.combobox.displayed
192a0 20 69 6e 20 61 20 74 61 62 6c 65 20 63 65 6c 6c 20 75 73 69 6e 67 20 74 68 65 20 6d 6f 75 73 65 .in.a.table.cell.using.the.mouse
192c0 20 77 68 65 65 6c 20 68 61 73 20 6e 61 73 74 79 20 69 6e 74 65 72 61 63 74 69 6f 6e 73 0a 20 20 .wheel.has.nasty.interactions...
192e0 20 20 64 75 65 20 74 6f 20 74 68 65 20 63 6f 6e 66 6c 69 63 74 20 62 65 74 77 65 65 6e 20 73 63 ..due.to.the.conflict.between.sc
19300 72 6f 6c 6c 69 6e 67 20 74 68 65 20 74 61 62 6c 65 20 76 73 20 73 63 72 6f 6c 6c 69 6e 67 20 74 rolling.the.table.vs.scrolling.t
19320 68 65 20 63 6f 6d 62 6f 62 6f 78 20 69 74 65 6d 2e 0a 20 20 20 20 49 6e 68 65 72 69 74 20 66 72 he.combobox.item......Inherit.fr
19340 6f 6d 20 74 68 69 73 20 63 6c 61 73 73 20 74 6f 20 64 69 73 61 62 6c 65 20 74 68 65 20 63 6f 6d om.this.class.to.disable.the.com
19360 62 6f 62 6f 78 20 63 68 61 6e 67 69 6e 67 20 76 61 6c 75 65 20 77 69 74 68 20 6d 6f 75 73 65 20 bobox.changing.value.with.mouse.
19380 77 68 65 65 6c 2e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 64 65 66 20 77 68 65 65 6c 45 76 65 6e wheel......'''.....def.wheelEven
193a0 74 28 73 65 6c 66 2c 20 65 76 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 65 76 65 6e 74 2e 69 67 t(self,.event):.........event.ig
193c0 6e 6f 72 65 28 29 0a 0a 0a 63 6c 61 73 73 20 49 6d 61 67 65 43 6f 6d 62 6f 42 6f 78 28 4e 6f 57 nore()...class.ImageComboBox(NoW
193e0 68 65 65 6c 43 6f 6d 62 6f 42 6f 78 29 3a 0a 20 20 20 20 0a 20 20 20 20 43 4f 4d 42 4f 5f 49 4d heelComboBox):..........COMBO_IM
19400 41 47 45 5f 41 44 44 20 3d 20 5f 28 27 41 64 64 20 4e 65 77 20 49 6d 61 67 65 e2 80 a6 27 29 0a AGE_ADD.=._('Add.New.Image...').
19420 20 20 20 20 0a 20 20 20 20 6e 65 77 5f 69 6d 61 67 65 5f 61 64 64 65 64 20 3d 20 70 79 71 74 53 .........new_image_added.=.pyqtS
19440 69 67 6e 61 6c 28 73 74 72 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f ignal(str)..........def.__init__
19460 28 73 65 6c 66 2c 20 69 6d 61 67 65 5f 6d 61 70 2c 20 73 65 6c 65 63 74 65 64 5f 69 6d 61 67 65 (self,.image_map,.selected_image
19480 5f 6e 61 6d 65 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 4e 6f 57 68 65 65 6c 43 6f 6d 62 _name=None):.........NoWheelComb
194a0 6f 42 6f 78 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 oBox.__init__(self).........self
194c0 2e 70 6f 70 75 6c 61 74 65 5f 63 6f 6d 62 6f 28 69 6d 61 67 65 5f 6d 61 70 2c 20 73 65 6c 65 63 .populate_combo(image_map,.selec
194e0 74 65 64 5f 69 6d 61 67 65 5f 6e 61 6d 65 3d 73 65 6c 65 63 74 65 64 5f 69 6d 61 67 65 5f 6e 61 ted_image_name=selected_image_na
19500 6d 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 49 6e 64 65 78 43 68 61 me).........self.currentIndexCha
19520 6e 67 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 69 6e 64 65 78 5f 63 68 61 6e 67 65 64 29 nged.connect(self.index_changed)
19540 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 6f 70 75 6c 61 74 65 5f 63 6f 6d 62 6f 28 73 65 6c ..........def.populate_combo(sel
19560 66 2c 20 69 6d 61 67 65 5f 6d 61 70 3a 20 44 69 63 74 5b 73 74 72 2c 20 51 49 63 6f 6e 5d 2c 20 f,.image_map:.Dict[str,.QIcon],.
19580 73 65 6c 65 63 74 65 64 5f 69 6d 61 67 65 5f 6e 61 6d 65 3a 20 73 74 72 3d 4e 6f 6e 65 29 3a 0a selected_image_name:.str=None):.
195a0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c ........self.clear().........sel
195c0 66 2e 69 6d 61 67 65 5f 6d 61 70 20 3d 20 69 6d 61 67 65 5f 6d 61 70 20 6f 72 20 7b 7d 0a 20 20 f.image_map.=.image_map.or.{}...
195e0 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 6d 61 67 65 5f 6e 61 6d 65 73 20 3d 20 73 6f 72 ...............image_names.=.sor
19600 74 65 64 28 69 6d 61 67 65 5f 6d 61 70 2e 6b 65 79 73 28 29 29 0a 20 20 20 20 20 20 20 20 23 20 ted(image_map.keys()).........#.
19620 41 64 64 20 61 20 62 6c 61 6e 6b 20 69 74 65 6d 20 61 74 20 74 68 65 20 62 65 67 69 6e 6e 69 6e Add.a.blank.item.at.the.beginnin
19640 67 20 6f 66 20 74 68 65 20 6c 69 73 74 2c 20 61 6e 64 20 61 20 62 6c 61 6e 6b 20 74 68 65 6e 20 g.of.the.list,.and.a.blank.then.
19660 73 70 65 63 69 61 6c 20 27 41 64 64 22 20 69 74 65 6d 20 61 74 20 65 6e 64 0a 20 20 20 20 20 20 special.'Add".item.at.end.......
19680 20 20 69 6d 61 67 65 5f 6e 61 6d 65 73 2e 69 6e 73 65 72 74 28 30 2c 20 27 27 29 0a 20 20 20 20 ..image_names.insert(0,.'').....
196a0 20 20 20 20 69 6d 61 67 65 5f 6e 61 6d 65 73 2e 61 70 70 65 6e 64 28 27 27 29 0a 20 20 20 20 20 ....image_names.append('')......
196c0 20 20 20 69 6d 61 67 65 5f 6e 61 6d 65 73 2e 61 70 70 65 6e 64 28 49 6d 61 67 65 43 6f 6d 62 6f ...image_names.append(ImageCombo
196e0 42 6f 78 2e 43 4f 4d 42 4f 5f 49 4d 41 47 45 5f 41 44 44 29 0a 20 20 20 20 20 20 20 20 0a 20 20 Box.COMBO_IMAGE_ADD)............
19700 20 20 20 20 20 20 66 6f 72 20 69 2c 20 69 6d 61 67 65 20 69 6e 20 65 6e 75 6d 65 72 61 74 65 28 ......for.i,.image.in.enumerate(
19720 69 6d 61 67 65 5f 6e 61 6d 65 73 2c 20 30 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c image_names,.0):.............sel
19740 66 2e 69 6e 73 65 72 74 49 74 65 6d 28 69 2c 20 69 6d 61 67 65 5f 6d 61 70 2e 67 65 74 28 69 6d f.insertItem(i,.image_map.get(im
19760 61 67 65 2c 20 69 6d 61 67 65 29 2c 20 69 6d 61 67 65 29 0a 20 20 20 20 20 20 20 20 69 64 78 20 age,.image),.image).........idx.
19780 3d 20 73 65 6c 66 2e 66 69 6e 64 54 65 78 74 28 73 65 6c 65 63 74 65 64 5f 69 6d 61 67 65 5f 6e =.self.findText(selected_image_n
197a0 61 6d 65 20 6f 72 20 27 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 43 75 72 72 65 ame.or.'').........self.setCurre
197c0 6e 74 49 6e 64 65 78 28 69 64 78 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 49 74 65 ntIndex(idx).........self.setIte
197e0 6d 44 61 74 61 28 30 2c 20 69 64 78 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 69 6e 64 65 78 mData(0,.idx)..........def.index
19800 5f 63 68 61 6e 67 65 64 28 73 65 6c 66 2c 20 69 64 78 3a 20 69 6e 74 29 3a 0a 20 20 20 20 20 20 _changed(self,.idx:.int):.......
19820 20 20 69 66 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 54 65 78 74 28 29 20 3d 3d 20 49 6d 61 67 65 ..if.self.currentText().==.Image
19840 43 6f 6d 62 6f 42 6f 78 2e 43 4f 4d 42 4f 5f 49 4d 41 47 45 5f 41 44 44 3a 0a 20 20 20 20 20 20 ComboBox.COMBO_IMAGE_ADD:.......
19860 20 20 20 20 20 20 73 65 6c 66 2e 62 6c 6f 63 6b 53 69 67 6e 61 6c 73 28 54 72 75 65 29 0a 20 20 ......self.blockSignals(True)...
19880 20 20 20 20 20 20 20 20 20 20 23 20 53 70 65 63 69 61 6c 20 69 74 65 6d 20 69 6e 20 74 68 65 20 ..........#.Special.item.in.the.
198a0 63 6f 6d 62 6f 20 66 6f 72 20 63 68 6f 6f 73 69 6e 67 20 61 20 6e 65 77 20 69 6d 61 67 65 20 74 combo.for.choosing.a.new.image.t
198c0 6f 20 61 64 64 20 74 6f 20 43 61 6c 69 62 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f o.add.to.Calibre.............fro
198e0 6d 20 2e 64 69 61 6c 6f 67 73 20 69 6d 70 6f 72 74 20 49 6d 61 67 65 44 69 61 6c 6f 67 0a 20 20 m..dialogs.import.ImageDialog...
19900 20 20 20 20 20 20 20 20 20 20 64 20 3d 20 49 6d 61 67 65 44 69 61 6c 6f 67 28 65 78 69 73 74 69 ..........d.=.ImageDialog(existi
19920 6e 67 5f 69 6d 61 67 65 73 3d 73 65 6c 66 2e 69 6d 61 67 65 5f 6d 61 70 2e 6b 65 79 73 28 29 29 ng_images=self.image_map.keys())
19940 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 2e 65 ..........................if.d.e
19960 78 65 63 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6d 61 67 xec():.................self.imag
19980 65 5f 6d 61 70 5b 64 2e 69 6d 61 67 65 5f 6e 61 6d 65 5d 20 3d 20 67 65 74 5f 69 63 6f 6e 28 64 e_map[d.image_name].=.get_icon(d
199a0 2e 69 6d 61 67 65 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c .image_name).................sel
199c0 66 2e 70 6f 70 75 6c 61 74 65 5f 63 6f 6d 62 6f 28 73 65 6c 66 2e 69 6d 61 67 65 5f 6d 61 70 2c f.populate_combo(self.image_map,
199e0 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 54 65 78 74 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 .self.currentText())............
19a00 20 20 20 20 20 23 20 53 65 6c 65 63 74 20 74 68 65 20 6e 65 77 6c 79 20 61 64 64 65 64 20 69 74 .....#.Select.the.newly.added.it
19a20 65 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 64 78 20 3d 20 73 65 6c 66 2e 66 69 em.................idx.=.self.fi
19a40 6e 64 54 65 78 74 28 64 2e 69 6d 61 67 65 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 ndText(d.image_name)............
19a60 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 55 73 65 72 20 63 61 .else:.................#.User.ca
19a80 6e 63 65 6c 6c 65 64 20 74 68 65 20 61 64 64 20 6f 70 65 72 61 74 69 6f 6e 20 6f 72 20 61 6e 20 ncelled.the.add.operation.or.an.
19aa0 65 72 72 6f 72 20 2d 20 73 65 74 20 74 6f 20 70 72 65 76 69 6f 75 73 20 69 64 78 20 76 61 6c 75 error.-.set.to.previous.idx.valu
19ac0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 64 78 20 3d 20 73 65 6c 66 2e 69 74 65 e.................idx.=.self.ite
19ae0 6d 44 61 74 61 28 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 43 75 72 mData(0).............self.setCur
19b00 72 65 6e 74 49 6e 64 65 78 28 69 64 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e rentIndex(idx).............self.
19b20 62 6c 6f 63 6b 53 69 67 6e 61 6c 73 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 blockSignals(False).............
19b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 2e 72 65 73 75 6c 74 28 29 3a 0a 20 20 20 20 .............if.d.result():.....
19b60 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 6f 77 2c 20 65 6d 69 74 20 74 68 65 20 65 76 65 6e ............#.Now,.emit.the.even
19b80 74 20 74 68 61 6e 20 75 73 65 72 20 68 61 73 20 61 64 64 65 64 20 61 20 6e 65 77 20 69 6d 61 67 t.than.user.has.added.a.new.imag
19ba0 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 6f 20 77 65 20 6e 65 65 64 20 74 e.................#.so.we.need.t
19bc0 6f 20 72 65 70 6f 70 75 6c 61 74 65 20 65 76 65 72 79 20 63 6f 6d 62 6f 20 77 69 74 68 20 6e 65 o.repopulate.every.combo.with.ne
19be0 77 20 73 6f 72 74 65 64 20 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 w.sorted.list.................se
19c00 6c 66 2e 6e 65 77 5f 69 6d 61 67 65 5f 61 64 64 65 64 2e 65 6d 69 74 28 64 2e 69 6d 61 67 65 5f lf.new_image_added.emit(d.image_
19c20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 53 74 6f name)......................#.Sto
19c40 72 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 69 6e 64 65 78 20 61 73 20 69 74 65 6d 20 64 61 74 re.the.current.index.as.item.dat
19c60 61 20 69 6e 20 69 6e 64 65 78 20 30 20 69 6e 20 63 61 73 65 20 75 73 65 72 20 63 61 6e 63 65 6c a.in.index.0.in.case.user.cancel
19c80 73 20 64 69 61 6c 6f 67 20 69 6e 20 66 75 74 75 72 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e s.dialog.in.future.........self.
19ca0 73 65 74 49 74 65 6d 44 61 74 61 28 30 2c 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 49 6e 64 65 78 setItemData(0,.self.currentIndex
19cc0 28 29 29 0a 0a 0a 63 6c 61 73 73 20 4c 69 73 74 43 6f 6d 62 6f 42 6f 78 28 51 43 6f 6d 62 6f 42 ())...class.ListComboBox(QComboB
19ce0 6f 78 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 76 61 6c 75 ox):.....def.__init__(self,.valu
19d00 65 73 3a 20 4c 69 73 74 5b 73 74 72 5d 2c 20 73 65 6c 65 63 74 65 64 5f 76 61 6c 75 65 3a 20 73 es:.List[str],.selected_value:.s
19d20 74 72 3d 4e 6f 6e 65 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 51 tr=None,.parent=None):.........Q
19d40 43 6f 6d 62 6f 42 6f 78 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 72 65 6e 74 29 0a ComboBox.__init__(self,.parent).
19d60 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 70 75 6c 61 74 65 5f 63 6f 6d 62 6f 28 76 61 6c 75 ........self.populate_combo(valu
19d80 65 73 3d 76 61 6c 75 65 73 2c 20 73 65 6c 65 63 74 65 64 5f 76 61 6c 75 65 3d 73 65 6c 65 63 74 es=values,.selected_value=select
19da0 65 64 5f 76 61 6c 75 65 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 6f 70 75 6c 61 74 65 5f ed_value)..........def.populate_
19dc0 63 6f 6d 62 6f 28 73 65 6c 66 2c 20 76 61 6c 75 65 73 3a 20 4c 69 73 74 5b 73 74 72 5d 2c 20 73 combo(self,.values:.List[str],.s
19de0 65 6c 65 63 74 65 64 5f 76 61 6c 75 65 3a 20 73 74 72 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 elected_value:.str=None):.......
19e00 20 20 73 65 6c 66 2e 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 65 64 5f ..self.clear().........selected_
19e20 69 64 78 20 3d 20 30 0a 20 20 20 20 20 20 20 20 66 6f 72 20 76 61 6c 75 65 20 69 6e 20 76 61 6c idx.=.0.........for.value.in.val
19e40 75 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 49 74 65 6d 28 76 61 ues:.............self.addItem(va
19e60 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 76 61 6c 75 65 20 3d 3d 20 73 65 6c lue).............if.value.==.sel
19e80 65 63 74 65 64 5f 76 61 6c 75 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c ected_value:.................sel
19ea0 65 63 74 65 64 5f 69 64 78 20 3d 20 73 65 6c 66 2e 63 6f 75 6e 74 28 29 2d 31 0a 20 20 20 20 20 ected_idx.=.self.count()-1......
19ec0 20 20 20 73 65 6c 66 2e 73 65 74 43 75 72 72 65 6e 74 49 6e 64 65 78 28 73 65 6c 65 63 74 65 64 ...self.setCurrentIndex(selected
19ee0 5f 69 64 78 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 6c 65 63 74 65 64 5f 76 61 6c 75 _idx)..........def.selected_valu
19f00 65 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 e(self).->.str:.........return.s
19f20 65 6c 66 2e 63 75 72 72 65 6e 74 54 65 78 74 28 29 0a 0a 0a 63 6c 61 73 73 20 4b 65 79 56 61 6c elf.currentText()...class.KeyVal
19f40 75 65 43 6f 6d 62 6f 42 6f 78 28 51 43 6f 6d 62 6f 42 6f 78 29 3a 0a 20 20 20 20 64 65 66 20 5f ueComboBox(QComboBox):.....def._
19f60 5f 69 6e 69 74 5f 5f 28 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 6b _init__(.........self,.........k
19f80 65 79 5f 74 65 78 74 5f 6d 61 70 3a 20 44 69 63 74 5b 73 74 72 2c 20 73 74 72 5d 2c 0a 20 20 20 ey_text_map:.Dict[str,.str],....
19fa0 20 20 20 20 20 73 65 6c 65 63 74 65 64 5f 6b 65 79 3a 20 73 74 72 3d 4e 6f 6e 65 2c 0a 20 20 20 .....selected_key:.str=None,....
19fc0 20 20 20 20 20 74 6f 6f 6c 74 69 70 5f 6d 61 70 3a 20 44 69 63 74 5b 73 74 72 2c 20 73 74 72 5d .....tooltip_map:.Dict[str,.str]
19fe0 3d 4e 6f 6e 65 2c 0a 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 2c 0a 20 20 20 20 =None,.........parent=None,.....
1a000 29 3a 0a 20 20 20 20 20 20 20 20 51 43 6f 6d 62 6f 42 6f 78 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 ):.........QComboBox.__init__(se
1a020 6c 66 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 70 75 6c 61 74 lf,.parent).........self.populat
1a040 65 5f 63 6f 6d 62 6f 28 6b 65 79 5f 74 65 78 74 5f 6d 61 70 2c 20 73 65 6c 65 63 74 65 64 5f 6b e_combo(key_text_map,.selected_k
1a060 65 79 2c 20 74 6f 6f 6c 74 69 70 5f 6d 61 70 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 75 ey,.tooltip_map).........self.cu
1a080 72 72 65 6e 74 49 6e 64 65 78 43 68 61 6e 67 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 6b rrentIndexChanged.connect(self.k
1a0a0 65 79 5f 76 61 6c 75 65 5f 63 68 61 6e 67 65 64 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b ey_value_changed).........self.k
1a0c0 65 79 5f 76 61 6c 75 65 5f 63 68 61 6e 67 65 64 28 2d 31 29 0a 20 20 20 20 0a 20 20 20 20 64 65 ey_value_changed(-1)..........de
1a0e0 66 20 70 6f 70 75 6c 61 74 65 5f 63 6f 6d 62 6f 28 73 65 6c 66 2c 20 6b 65 79 5f 74 65 78 74 5f f.populate_combo(self,.key_text_
1a100 6d 61 70 3a 20 44 69 63 74 5b 73 74 72 2c 20 73 74 72 5d 2c 20 73 65 6c 65 63 74 65 64 5f 6b 65 map:.Dict[str,.str],.selected_ke
1a120 79 3a 20 73 74 72 3d 4e 6f 6e 65 2c 20 74 6f 6f 6c 74 69 70 5f 6d 61 70 3a 20 44 69 63 74 5b 73 y:.str=None,.tooltip_map:.Dict[s
1a140 74 72 2c 20 73 74 72 5d 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 tr,.str]=None):.........self.cle
1a160 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 5f 74 65 78 74 5f 6d 61 70 20 3d ar().........self.key_text_map.=
1a180 20 6b 65 79 5f 74 65 78 74 5f 6d 61 70 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 6f 6f 6c 74 .key_text_map.........self.toolt
1a1a0 69 70 5f 6d 61 70 20 3d 20 74 6f 6f 6c 74 69 70 5f 6d 61 70 20 6f 72 20 7b 7d 0a 20 20 20 20 20 ip_map.=.tooltip_map.or.{}......
1a1c0 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 65 64 5f 69 64 78 20 3d 20 30 0a 20 20 20 ............selected_idx.=.0....
1a1e0 20 20 20 20 20 66 6f 72 20 6b 65 79 2c 20 76 61 6c 75 65 20 69 6e 20 73 65 6c 66 2e 6b 65 79 5f .....for.key,.value.in.self.key_
1a200 74 65 78 74 5f 6d 61 70 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 text_map.items():.............se
1a220 6c 66 2e 61 64 64 49 74 65 6d 28 76 61 6c 75 65 2c 20 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 lf.addItem(value,.key)..........
1a240 20 20 20 69 66 20 6b 65 79 20 3d 3d 20 73 65 6c 65 63 74 65 64 5f 6b 65 79 3a 0a 20 20 20 20 20 ...if.key.==.selected_key:......
1a260 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 65 64 5f 69 64 78 20 3d 20 73 65 6c 66 2e 63 ...........selected_idx.=.self.c
1a280 6f 75 6e 74 28 29 2d 31 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 43 75 72 72 65 6e 74 ount()-1.........self.setCurrent
1a2a0 49 6e 64 65 78 28 73 65 6c 65 63 74 65 64 5f 69 64 78 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 Index(selected_idx)..........def
1a2c0 20 73 65 6c 65 63 74 65 64 5f 65 6e 74 72 79 28 73 65 6c 66 29 20 2d 3e 20 54 75 70 6c 65 5b 73 .selected_entry(self).->.Tuple[s
1a2e0 74 72 2c 20 73 74 72 5d 3a 0a 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 73 65 6c 66 2e 73 65 6c tr,.str]:.........key.=.self.sel
1a300 65 63 74 65 64 5f 6b 65 79 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 3a 0a 20 20 20 20 ected_key().........if.key:.....
1a320 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 2c 20 73 65 6c 66 2e 6b 65 79 5f 74 65 78 ........return.key,.self.key_tex
1a340 74 5f 6d 61 70 5b 6b 65 79 5d 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 6c 65 63 74 65 64 t_map[key]..........def.selected
1a360 5f 6b 65 79 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 6b 65 79 20 3d _key(self).->.str:.........key.=
1a380 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 44 61 74 61 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6b .self.currentData().........if.k
1a3a0 65 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 0a 20 20 20 20 0a ey:.............return.key......
1a3c0 20 20 20 20 64 65 66 20 73 65 6c 65 63 74 65 64 5f 74 65 78 74 28 73 65 6c 66 29 20 2d 3e 20 73 ....def.selected_text(self).->.s
1a3e0 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6b 65 79 5f 74 65 78 74 tr:.........return.self.key_text
1a400 5f 6d 61 70 2e 67 65 74 28 73 65 6c 66 2e 73 65 6c 65 63 74 65 64 5f 6b 65 79 28 29 2c 20 4e 6f _map.get(self.selected_key(),.No
1a420 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 6b 65 79 5f 76 61 6c 75 65 5f 63 68 61 6e 67 ne)..........def.key_value_chang
1a440 65 64 28 73 65 6c 66 2c 20 69 64 78 3a 20 69 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 ed(self,.idx:.int):.........self
1a460 2e 73 65 74 54 6f 6f 6c 54 69 70 28 72 65 74 75 72 6e 5f 6c 69 6e 65 5f 6c 6f 6e 67 5f 74 65 78 .setToolTip(return_line_long_tex
1a480 74 28 73 65 6c 66 2e 74 6f 6f 6c 74 69 70 5f 6d 61 70 2e 67 65 74 28 73 65 6c 66 2e 73 65 6c 65 t(self.tooltip_map.get(self.sele
1a4a0 63 74 65 64 5f 6b 65 79 28 29 2c 20 27 27 29 29 29 0a 0a 0a 63 6c 61 73 73 20 43 75 73 74 6f 6d cted_key(),.'')))...class.Custom
1a4c0 43 6f 6c 75 6d 6e 43 6f 6d 62 6f 42 6f 78 28 51 43 6f 6d 62 6f 42 6f 78 29 3a 0a 20 20 20 20 64 ColumnComboBox(QComboBox):.....d
1a4e0 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 63 75 73 74 6f 6d 5f 63 6f 6c 75 6d 6e 73 ef.__init__(self,.custom_columns
1a500 3a 20 44 69 63 74 5b 73 74 72 20 2c 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 2c 20 73 65 6c :.Dict[str.,ColumnMetadata],.sel
1a520 65 63 74 65 64 5f 63 6f 6c 75 6d 6e 3a 20 73 74 72 3d 27 27 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e ected_column:.str='',.parent=Non
1a540 65 29 3a 0a 20 20 20 20 20 20 20 20 51 43 6f 6d 62 6f 42 6f 78 2e 5f 5f 69 6e 69 74 5f 5f 28 73 e):.........QComboBox.__init__(s
1a560 65 6c 66 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 6f 70 75 6c 61 elf,.parent).........self.popula
1a580 74 65 5f 63 6f 6d 62 6f 28 63 75 73 74 6f 6d 5f 63 6f 6c 75 6d 6e 73 3d 63 75 73 74 6f 6d 5f 63 te_combo(custom_columns=custom_c
1a5a0 6f 6c 75 6d 6e 73 2c 20 73 65 6c 65 63 74 65 64 5f 63 6f 6c 75 6d 6e 3d 73 65 6c 65 63 74 65 64 olumns,.selected_column=selected
1a5c0 5f 63 6f 6c 75 6d 6e 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 49 6e 64 _column).........self.currentInd
1a5e0 65 78 43 68 61 6e 67 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 63 6f 6c 75 6d 6e 5f 63 68 exChanged.connect(self.column_ch
1a600 61 6e 67 65 64 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6c 75 6d 6e 5f 63 68 61 6e 67 anged).........self.column_chang
1a620 65 64 28 2d 31 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 6f 70 75 6c 61 74 65 5f 63 6f 6d ed(-1)..........def.populate_com
1a640 62 6f 28 73 65 6c 66 2c 20 63 75 73 74 6f 6d 5f 63 6f 6c 75 6d 6e 73 3a 20 44 69 63 74 5b 73 74 bo(self,.custom_columns:.Dict[st
1a660 72 20 2c 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 2c 20 73 65 6c 65 63 74 65 64 5f 63 6f 6c r.,ColumnMetadata],.selected_col
1a680 75 6d 6e 3a 20 73 74 72 3d 27 27 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 61 72 umn:.str=''):.........self.clear
1a6a0 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 75 73 74 6f 6d 5f 63 6f 6c 75 6d 6e 73 20 3d ().........self.custom_columns.=
1a6c0 20 63 63 20 3d 20 4f 72 64 65 72 65 64 44 69 63 74 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 .cc.=.OrderedDict().........self
1a6e0 2e 63 75 73 74 6f 6d 5f 63 6f 6c 75 6d 6e 73 5b 27 27 5d 3d 27 27 0a 20 20 20 20 20 20 20 20 73 .custom_columns['']=''.........s
1a700 65 6c 66 2e 64 65 73 63 72 69 70 74 69 6f 6e 5f 6d 61 70 20 3d 20 74 74 20 3d 20 4f 72 64 65 72 elf.description_map.=.tt.=.Order
1a720 65 64 44 69 63 74 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 65 73 63 72 69 70 74 69 6f edDict().........self.descriptio
1a740 6e 5f 6d 61 70 5b 27 27 5d 3d 27 27 0a 20 20 20 20 20 20 20 20 66 6f 72 20 65 6e 74 72 79 20 69 n_map['']=''.........for.entry.i
1a760 6e 20 63 75 73 74 6f 6d 5f 63 6f 6c 75 6d 6e 73 2e 76 61 6c 75 65 73 28 29 3a 0a 20 20 20 20 20 n.custom_columns.values():......
1a780 20 20 20 20 20 20 20 69 66 20 65 6e 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .......if.entry:................
1a7a0 20 63 63 5b 65 6e 74 72 79 2e 6e 61 6d 65 5d 20 3d 20 66 27 7b 65 6e 74 72 79 2e 64 69 73 70 6c .cc[entry.name].=.f'{entry.displ
1a7c0 61 79 5f 6e 61 6d 65 7d 20 28 7b 65 6e 74 72 79 2e 6e 61 6d 65 7d 29 27 0a 20 20 20 20 20 20 20 ay_name}.({entry.name})'........
1a7e0 20 20 20 20 20 20 20 20 20 74 74 5b 65 6e 74 72 79 2e 6e 61 6d 65 5d 20 3d 20 65 6e 74 72 79 2e .........tt[entry.name].=.entry.
1a800 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c description..................sel
1a820 65 63 74 65 64 5f 69 64 78 20 3d 20 30 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 2c 20 76 ected_idx.=.0.........for.key,.v
1a840 61 6c 75 65 20 69 6e 20 63 63 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 alue.in.cc.items():.............
1a860 73 65 6c 66 2e 61 64 64 49 74 65 6d 28 76 61 6c 75 65 2c 20 6b 65 79 29 0a 20 20 20 20 20 20 20 self.addItem(value,.key)........
1a880 20 20 20 20 20 69 66 20 6b 65 79 20 3d 3d 20 73 65 6c 65 63 74 65 64 5f 63 6f 6c 75 6d 6e 3a 0a .....if.key.==.selected_column:.
1a8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 65 64 5f 69 64 78 20 3d 20 73 ................selected_idx.=.s
1a8c0 65 6c 66 2e 63 6f 75 6e 74 28 29 2d 31 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 43 75 elf.count()-1.........self.setCu
1a8e0 72 72 65 6e 74 49 6e 64 65 78 28 73 65 6c 65 63 74 65 64 5f 69 64 78 29 0a 20 20 20 20 0a 20 20 rrentIndex(selected_idx)........
1a900 20 20 64 65 66 20 73 65 6c 65 63 74 65 64 5f 6e 61 6d 65 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 ..def.selected_name(self).->.str
1a920 3a 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 44 61 74 :.........name.=.self.currentDat
1a940 61 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 a().........if.name:............
1a960 20 72 65 74 75 72 6e 20 6e 61 6d 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 6c 65 63 74 .return.name..........def.select
1a980 65 64 5f 65 6e 74 72 79 28 73 65 6c 66 29 20 2d 3e 20 54 75 70 6c 65 5b 73 74 72 20 2c 43 6f 6c ed_entry(self).->.Tuple[str.,Col
1a9a0 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 73 65 6c umnMetadata]:.........name.=.sel
1a9c0 66 2e 73 65 6c 65 63 74 65 64 5f 6e 61 6d 65 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d f.selected_name().........if.nam
1a9e0 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 2c 20 73 65 6c 66 e:.............return.name,.self
1aa00 2e 63 75 73 74 6f 6d 5f 63 6f 6c 75 6d 6e 73 2e 67 65 74 28 6e 61 6d 65 2c 20 4e 6f 6e 65 29 0a .custom_columns.get(name,.None).
1aa20 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 6c 65 63 74 65 64 5f 63 6f 6c 75 6d 6e 28 73 65 6c .........def.selected_column(sel
1aa40 66 29 20 2d 3e 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 3a 0a 20 20 20 20 20 20 20 20 6b 76 f).->.ColumnMetadata:.........kv
1aa60 20 3d 20 73 65 6c 66 2e 73 65 6c 65 63 74 65 64 5f 65 6e 74 72 79 28 29 0a 20 20 20 20 20 20 20 .=.self.selected_entry()........
1aa80 20 69 66 20 6b 76 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 76 5b 31 5d .if.kv:.............return.kv[1]
1aaa0 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 63 6f 6c 75 6d 6e 5f 63 68 61 6e 67 65 64 28 73 65 6c ..........def.column_changed(sel
1aac0 66 2c 20 69 64 78 3a 20 69 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 54 6f f,.idx:.int):.........self.setTo
1aae0 6f 6c 54 69 70 28 72 65 74 75 72 6e 5f 6c 69 6e 65 5f 6c 6f 6e 67 5f 74 65 78 74 28 73 65 6c 66 olTip(return_line_long_text(self
1ab00 2e 64 65 73 63 72 69 70 74 69 6f 6e 5f 6d 61 70 2e 67 65 74 28 73 65 6c 66 2e 73 65 6c 65 63 74 .description_map.get(self.select
1ab20 65 64 5f 6e 61 6d 65 28 29 2c 20 27 27 29 29 29 0a 0a 0a 63 6c 61 73 73 20 52 65 6f 72 64 65 72 ed_name(),.'')))...class.Reorder
1ab40 65 64 43 6f 6d 62 6f 42 6f 78 28 51 43 6f 6d 62 6f 42 6f 78 29 3a 0a 20 20 20 20 64 65 66 20 5f edComboBox(QComboBox):.....def._
1ab60 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 73 74 72 69 70 5f 69 74 65 6d 73 3d 54 72 75 65 2c 20 _init__(self,.strip_items=True,.
1ab80 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 51 43 6f 6d 62 6f 42 6f 78 2e parent=None):.........QComboBox.
1aba0 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 __init__(self,.parent).........s
1abc0 65 6c 66 2e 73 74 72 69 70 5f 69 74 65 6d 73 20 3d 20 73 74 72 69 70 5f 69 74 65 6d 73 0a 20 20 elf.strip_items.=.strip_items...
1abe0 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 45 64 69 74 61 62 6c 65 28 54 72 75 65 29 0a 20 20 20 ......self.setEditable(True)....
1ac00 20 20 20 20 20 73 65 6c 66 2e 73 65 74 4d 61 78 43 6f 75 6e 74 28 31 30 29 0a 20 20 20 20 20 20 .....self.setMaxCount(10).......
1ac20 20 20 73 65 6c 66 2e 73 65 74 49 6e 73 65 72 74 50 6f 6c 69 63 79 28 51 43 6f 6d 62 6f 42 6f 78 ..self.setInsertPolicy(QComboBox
1ac40 2e 49 6e 73 65 72 74 41 74 54 6f 70 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 6f 70 75 6c .InsertAtTop)..........def.popul
1ac60 61 74 65 5f 69 74 65 6d 73 28 73 65 6c 66 2c 20 69 74 65 6d 73 3a 20 4c 69 73 74 5b 73 74 72 5d ate_items(self,.items:.List[str]
1ac80 2c 20 73 65 6c 5f 69 74 65 6d 3a 20 73 74 72 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 ,.sel_item:.str):.........self.b
1aca0 6c 6f 63 6b 53 69 67 6e 61 6c 73 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 lockSignals(True).........self.c
1acc0 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 61 72 45 64 69 74 54 65 78 lear().........self.clearEditTex
1ace0 74 28 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 74 65 78 74 20 69 6e 20 69 74 65 6d 73 3a 0a 20 t().........for.text.in.items:..
1ad00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 74 65 78 74 20 21 3d 20 73 65 6c 5f 69 74 65 6d 3a 0a ...........if.text.!=.sel_item:.
1ad20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 61 64 64 49 74 65 6d 28 74 65 78 ................self.addItem(tex
1ad40 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 5f 69 74 65 6d 3a 0a 20 20 20 20 20 20 20 20 t).........if.sel_item:.........
1ad60 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 72 74 49 74 65 6d 28 30 2c 20 73 65 6c 5f 69 74 65 6d 29 ....self.insertItem(0,.sel_item)
1ad80 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 43 75 72 72 65 6e 74 49 6e 64 65 .............self.setCurrentInde
1ada0 78 28 30 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 x(0).........else:.............s
1adc0 65 6c 66 2e 73 65 74 45 64 69 74 54 65 78 74 28 27 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 elf.setEditText('').........self
1ade0 2e 62 6c 6f 63 6b 53 69 67 6e 61 6c 73 28 46 61 6c 73 65 29 0a 20 20 20 20 0a 20 20 20 20 64 65 .blockSignals(False)..........de
1ae00 66 20 72 65 6f 72 64 65 72 5f 69 74 65 6d 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 f.reorder_items(self):.........s
1ae20 65 6c 66 2e 62 6c 6f 63 6b 53 69 67 6e 61 6c 73 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 74 elf.blockSignals(True).........t
1ae40 65 78 74 20 3d 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 54 65 78 74 28 29 0a 20 20 20 20 20 20 20 ext.=.self.currentText()........
1ae60 20 69 66 20 73 65 6c 66 2e 73 74 72 69 70 5f 69 74 65 6d 73 3a 0a 20 20 20 20 20 20 20 20 20 20 .if.self.strip_items:...........
1ae80 20 20 74 65 78 74 20 3d 20 74 65 78 74 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20 20 20 20 69 66 ..text.=.text.strip().........if
1aea0 20 6e 6f 74 20 74 65 78 74 2e 73 74 72 69 70 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 .not.text.strip():.............r
1aec0 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 65 78 69 73 74 69 6e 67 5f 69 6e 64 65 78 20 3d 20 73 eturn.........existing_index.=.s
1aee0 65 6c 66 2e 66 69 6e 64 54 65 78 74 28 74 65 78 74 2c 20 51 74 2e 4d 61 74 63 68 45 78 61 63 74 elf.findText(text,.Qt.MatchExact
1af00 6c 79 29 0a 20 20 20 20 20 20 20 20 69 66 20 65 78 69 73 74 69 6e 67 5f 69 6e 64 65 78 3a 0a 20 ly).........if.existing_index:..
1af20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 6d 6f 76 65 49 74 65 6d 28 65 78 69 73 74 ...........self.removeItem(exist
1af40 69 6e 67 5f 69 6e 64 65 78 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 69 6e 73 65 ing_index).............self.inse
1af60 72 74 49 74 65 6d 28 30 2c 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 rtItem(0,.text).............self
1af80 2e 73 65 74 43 75 72 72 65 6e 74 49 6e 64 65 78 28 30 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 .setCurrentIndex(0).........self
1afa0 2e 62 6c 6f 63 6b 53 69 67 6e 61 6c 73 28 46 61 6c 73 65 29 0a 20 20 20 20 0a 20 20 20 20 64 65 .blockSignals(False)..........de
1afc0 66 20 67 65 74 5f 69 74 65 6d 73 5f 6c 69 73 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 f.get_items_list(self):.........
1afe0 69 66 20 73 65 6c 66 2e 73 74 72 69 70 5f 69 74 65 6d 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 if.self.strip_items:............
1b000 20 72 65 74 75 72 6e 20 5b 73 65 6c 66 2e 69 74 65 6d 54 65 78 74 28 69 29 2e 73 74 72 69 70 28 .return.[self.itemText(i).strip(
1b020 29 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 65 28 73 65 6c 66 2e 63 6f 75 6e 74 28 29 29 5d 0a ).for.i.in.range(self.count())].
1b040 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ........else:.............return
1b060 20 5b 73 65 6c 66 2e 69 74 65 6d 54 65 78 74 28 69 29 20 66 6f 72 20 69 20 69 6e 20 72 61 6e 67 .[self.itemText(i).for.i.in.rang
1b080 65 28 73 65 6c 66 2e 63 6f 75 6e 74 28 29 29 5d 0a 0a 0a 63 6c 61 73 73 20 44 72 61 67 44 72 6f e(self.count())]...class.DragDro
1b0a0 70 4c 69 6e 65 45 64 69 74 28 51 4c 69 6e 65 45 64 69 74 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 pLineEdit(QLineEdit):.....'''...
1b0c0 20 20 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 20 74 68 65 72 65 20 69 73 20 61 20 66 6c 61 77 20 ..Unfortunately.there.is.a.flaw.
1b0e0 69 6e 20 74 68 65 20 51 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 77 68 69 63 68 20 6d in.the.Qt.implementation.which.m
1b100 65 61 6e 73 20 74 68 61 74 0a 20 20 20 20 77 68 65 6e 20 74 68 65 20 51 43 6f 6d 62 6f 42 6f 78 eans.that.....when.the.QComboBox
1b120 20 69 73 20 69 6e 20 65 64 69 74 61 62 6c 65 20 6d 6f 64 65 20 74 68 61 74 20 64 72 6f 70 45 76 .is.in.editable.mode.that.dropEv
1b140 65 6e 74 20 69 73 20 6e 6f 74 20 66 69 72 65 64 0a 20 20 20 20 69 66 20 79 6f 75 20 64 72 61 67 ent.is.not.fired.....if.you.drag
1b160 20 69 6e 74 6f 20 74 68 65 20 65 64 69 74 61 62 6c 65 20 74 65 78 74 20 61 72 65 61 2e 20 57 6f .into.the.editable.text.area..Wo
1b180 72 6b 69 6e 67 20 61 72 6f 75 6e 64 20 74 68 69 73 20 62 79 20 68 61 76 69 6e 67 0a 20 20 20 20 rking.around.this.by.having.....
1b1a0 61 20 63 75 73 74 6f 6d 20 4c 69 6e 65 45 64 69 74 28 29 20 73 65 74 20 66 6f 72 20 74 68 65 20 a.custom.LineEdit().set.for.the.
1b1c0 70 61 72 65 6e 74 20 63 6f 6d 62 6f 62 6f 78 2e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 64 65 66 parent.combobox......'''.....def
1b1e0 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 72 6f 70 5f 6d 6f 64 65 3a 20 73 74 72 2c 20 .__init__(self,.drop_mode:.str,.
1b200 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 51 4c 69 6e 65 45 64 69 74 2e parent=None):.........QLineEdit.
1b220 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 __init__(self,.parent).........s
1b240 65 6c 66 2e 64 72 6f 70 5f 6d 6f 64 65 20 3d 20 64 72 6f 70 5f 6d 6f 64 65 0a 20 20 20 20 20 20 elf.drop_mode.=.drop_mode.......
1b260 20 20 73 65 6c 66 2e 73 65 74 41 63 63 65 70 74 44 72 6f 70 73 28 54 72 75 65 29 0a 20 20 20 20 ..self.setAcceptDrops(True).....
1b280 0a 20 20 20 20 64 65 66 20 64 72 61 67 4d 6f 76 65 45 76 65 6e 74 28 73 65 6c 66 2c 20 65 76 65 .....def.dragMoveEvent(self,.eve
1b2a0 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 65 76 65 6e 74 2e 61 63 63 65 70 74 50 72 6f 70 6f 73 65 nt):.........event.acceptPropose
1b2c0 64 41 63 74 69 6f 6e 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 64 72 61 67 45 6e 74 65 72 dAction()..........def.dragEnter
1b2e0 45 76 65 6e 74 28 73 65 6c 66 2c 20 65 76 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 65 76 65 6e Event(self,.event):.........even
1b300 74 5f 63 6f 64 65 20 3d 20 69 6e 74 28 65 76 65 6e 74 2e 70 6f 73 73 69 62 6c 65 41 63 74 69 6f t_code.=.int(event.possibleActio
1b320 6e 73 28 29 20 26 20 51 74 2e 43 6f 70 79 41 63 74 69 6f 6e 29 20 2b 20 69 6e 74 28 65 76 65 6e ns().&.Qt.CopyAction).+.int(even
1b340 74 2e 70 6f 73 73 69 62 6c 65 41 63 74 69 6f 6e 73 28 29 20 26 20 51 74 2e 4d 6f 76 65 41 63 74 t.possibleActions().&.Qt.MoveAct
1b360 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 69 66 20 65 76 65 6e 74 5f 63 6f 64 65 20 3d 3d 20 30 3a ion).........if.event_code.==.0:
1b380 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 64 61 74 61 .............return.........data
1b3a0 20 3d 20 73 65 6c 66 2e 5f 67 65 74 5f 64 61 74 61 5f 66 72 6f 6d 5f 65 76 65 6e 74 28 65 76 65 .=.self._get_data_from_event(eve
1b3c0 6e 74 29 0a 20 20 20 20 20 20 20 20 69 66 20 64 61 74 61 3a 0a 20 20 20 20 20 20 20 20 20 20 20 nt).........if.data:............
1b3e0 20 65 76 65 6e 74 2e 61 63 63 65 70 74 50 72 6f 70 6f 73 65 64 41 63 74 69 6f 6e 28 29 0a 20 20 .event.acceptProposedAction()...
1b400 20 20 0a 20 20 20 20 64 65 66 20 64 72 6f 70 45 76 65 6e 74 28 73 65 6c 66 2c 20 65 76 65 6e 74 .......def.dropEvent(self,.event
1b420 29 3a 0a 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 73 65 6c 66 2e 5f 67 65 74 5f 64 61 74 61 ):.........data.=.self._get_data
1b440 5f 66 72 6f 6d 5f 65 76 65 6e 74 28 65 76 65 6e 74 29 0a 20 20 20 20 20 20 20 20 65 76 65 6e 74 _from_event(event).........event
1b460 2e 73 65 74 44 72 6f 70 41 63 74 69 6f 6e 28 51 74 2e 43 6f 70 79 41 63 74 69 6f 6e 29 0a 20 20 .setDropAction(Qt.CopyAction)...
1b480 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 54 65 78 74 28 64 61 74 61 5b 30 5d 29 0a 20 20 20 20 ......self.setText(data[0]).....
1b4a0 0a 20 20 20 20 64 65 66 20 5f 67 65 74 5f 64 61 74 61 5f 66 72 6f 6d 5f 65 76 65 6e 74 28 73 65 .....def._get_data_from_event(se
1b4c0 6c 66 2c 20 65 76 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 6d 64 20 3d 20 65 76 65 6e 74 2e 6d lf,.event):.........md.=.event.m
1b4e0 69 6d 65 44 61 74 61 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 64 72 6f 70 5f 6d imeData().........if.self.drop_m
1b500 6f 64 65 20 3d 3d 20 27 66 69 6c 65 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 73 2c ode.==.'file':.............urls,
1b520 20 66 69 6c 65 6e 61 6d 65 73 20 3d 20 64 6e 64 5f 67 65 74 5f 66 69 6c 65 73 28 6d 64 2c 20 5b .filenames.=.dnd_get_files(md,.[
1b540 27 63 73 76 27 2c 20 27 74 78 74 27 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 'csv',.'txt']).............if.no
1b560 74 20 75 72 6c 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4e 6f 74 68 69 6e t.urls:.................#.Nothin
1b580 67 20 66 6f 75 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 g.found.................return..
1b5a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 66 69 6c 65 6e 61 6d 65 73 3a 0a 20 20 20 ...........if.not.filenames:....
1b5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4c 6f 63 61 6c 20 66 69 6c 65 73 0a 20 20 20 20 20 .............#.Local.files......
1b5e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 72 6c 73 0a 20 20 20 20 20 20 20 20 20 ...........return.urls..........
1b600 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 52 65 6d 6f 74 ...else:.................#.Remot
1b620 65 20 66 69 6c 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 e.files.................return.f
1b640 69 6c 65 6e 61 6d 65 73 0a 20 20 20 20 20 20 20 20 69 66 20 65 76 65 6e 74 2e 6d 69 6d 65 44 61 ilenames.........if.event.mimeDa
1b660 74 61 28 29 2e 68 61 73 46 6f 72 6d 61 74 28 27 74 65 78 74 2f 75 72 69 2d 6c 69 73 74 27 29 3a ta().hasFormat('text/uri-list'):
1b680 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 72 6c 73 20 3d 20 5b 75 2e 74 6f 53 74 72 69 6e 67 28 .............urls.=.[u.toString(
1b6a0 29 2e 73 74 72 69 70 28 29 20 66 6f 72 20 75 20 69 6e 20 6d 64 2e 75 72 6c 73 28 29 5d 0a 20 20 ).strip().for.u.in.md.urls()]...
1b6c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 72 6c 73 0a 0a 0a 63 6c 61 73 73 20 44 72 ..........return.urls...class.Dr
1b6e0 61 67 44 72 6f 70 43 6f 6d 62 6f 42 6f 78 28 52 65 6f 72 64 65 72 65 64 43 6f 6d 62 6f 42 6f 78 agDropComboBox(ReorderedComboBox
1b700 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 20 74 68 65 ):.....'''.....Unfortunately.the
1b720 72 65 20 69 73 20 61 20 66 6c 61 77 20 69 6e 20 74 68 65 20 51 74 20 69 6d 70 6c 65 6d 65 6e 74 re.is.a.flaw.in.the.Qt.implement
1b740 61 74 69 6f 6e 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 61 74 0a 20 20 20 20 77 68 65 6e 20 ation.which.means.that.....when.
1b760 74 68 65 20 51 43 6f 6d 62 6f 42 6f 78 20 69 73 20 69 6e 20 65 64 69 74 61 62 6c 65 20 6d 6f 64 the.QComboBox.is.in.editable.mod
1b780 65 20 74 68 61 74 20 64 72 6f 70 45 76 65 6e 74 20 69 73 20 6e 6f 74 20 66 69 72 65 64 0a 20 20 e.that.dropEvent.is.not.fired...
1b7a0 20 20 69 66 20 79 6f 75 20 64 72 61 67 20 69 6e 74 6f 20 74 68 65 20 65 64 69 74 61 62 6c 65 20 ..if.you.drag.into.the.editable.
1b7c0 74 65 78 74 20 61 72 65 61 2e 20 57 6f 72 6b 69 6e 67 20 61 72 6f 75 6e 64 20 74 68 69 73 20 62 text.area..Working.around.this.b
1b7e0 79 20 68 61 76 69 6e 67 0a 20 20 20 20 61 20 63 75 73 74 6f 6d 20 4c 69 6e 65 45 64 69 74 28 29 y.having.....a.custom.LineEdit()
1b800 20 73 65 74 20 66 6f 72 20 74 68 65 20 70 61 72 65 6e 74 20 63 6f 6d 62 6f 62 6f 78 2e 0a 20 20 .set.for.the.parent.combobox....
1b820 20 20 27 27 27 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 72 6f ..'''.....def.__init__(self,.dro
1b840 70 5f 6d 6f 64 65 3d 27 75 72 6c 27 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 p_mode='url',.parent=None):.....
1b860 20 20 20 20 52 65 6f 72 64 65 72 65 64 43 6f 6d 62 6f 42 6f 78 2e 5f 5f 69 6e 69 74 5f 5f 28 73 ....ReorderedComboBox.__init__(s
1b880 65 6c 66 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 72 6f 70 5f 6c elf,.parent).........self.drop_l
1b8a0 69 6e 65 5f 65 64 69 74 20 3d 20 44 72 61 67 44 72 6f 70 4c 69 6e 65 45 64 69 74 28 64 72 6f 70 ine_edit.=.DragDropLineEdit(drop
1b8c0 5f 6d 6f 64 65 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 4c _mode,.parent).........self.setL
1b8e0 69 6e 65 45 64 69 74 28 73 65 6c 66 2e 64 72 6f 70 5f 6c 69 6e 65 5f 65 64 69 74 29 0a 20 20 20 ineEdit(self.drop_line_edit)....
1b900 20 20 20 20 20 73 65 6c 66 2e 73 65 74 41 63 63 65 70 74 44 72 6f 70 73 28 54 72 75 65 29 0a 20 .....self.setAcceptDrops(True)..
1b920 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 45 64 69 74 61 62 6c 65 28 54 72 75 65 29 0a 20 20 .......self.setEditable(True)...
1b940 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 4d 61 78 43 6f 75 6e 74 28 31 30 29 0a 20 20 20 20 20 ......self.setMaxCount(10)......
1b960 20 20 20 73 65 6c 66 2e 73 65 74 49 6e 73 65 72 74 50 6f 6c 69 63 79 28 51 43 6f 6d 62 6f 42 6f ...self.setInsertPolicy(QComboBo
1b980 78 2e 49 6e 73 65 72 74 41 74 54 6f 70 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 64 72 61 67 x.InsertAtTop)..........def.drag
1b9a0 4d 6f 76 65 45 76 65 6e 74 28 73 65 6c 66 2c 20 65 76 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 MoveEvent(self,.event):.........
1b9c0 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 28 29 2e 64 72 61 67 4d 6f 76 65 45 76 65 6e 74 28 65 76 self.lineEdit().dragMoveEvent(ev
1b9e0 65 6e 74 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 64 72 61 67 45 6e 74 65 72 45 76 65 6e 74 ent)..........def.dragEnterEvent
1ba00 28 73 65 6c 66 2c 20 65 76 65 6e 74 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 69 6e 65 (self,.event):.........self.line
1ba20 45 64 69 74 28 29 2e 64 72 61 67 45 6e 74 65 72 45 76 65 6e 74 28 65 76 65 6e 74 29 0a 20 20 20 Edit().dragEnterEvent(event)....
1ba40 20 0a 20 20 20 20 64 65 66 20 64 72 6f 70 45 76 65 6e 74 28 73 65 6c 66 2c 20 65 76 65 6e 74 29 ......def.dropEvent(self,.event)
1ba60 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 69 6e 65 45 64 69 74 28 29 2e 64 72 6f 70 45 76 :.........self.lineEdit().dropEv
1ba80 65 6e 74 28 65 76 65 6e 74 29 0a 50 4b 03 04 14 00 00 00 00 00 91 9e 3d 5b 99 eb 7d f7 aa 52 00 ent(event).PK..........=[..}..R.
1baa0 00 aa 52 00 00 17 00 00 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 ..R......common_utils/dialogs.py
1bac0 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 #!/usr/bin/env.python..__license
1bae0 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 __...=.'GPL.v3'.__copyright__.=.
1bb00 27 32 30 31 31 2c 20 47 72 61 6e 74 20 44 72 61 6b 65 20 3c 67 72 61 6e 74 2e 64 72 61 6b 65 40 '2011,.Grant.Drake.<grant.drake@
1bb20 67 6d 61 69 6c 2e 63 6f 6d 3e 20 3b 20 32 30 32 30 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e 2e gmail.com>.;.2020,.un_pogaz.<un.
1bb40 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 6c 6f 61 pogaz@gmail.com>'...try:.....loa
1bb60 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f d_translations().except.NameErro
1bb80 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 r:.....pass..#.load_translations
1bba0 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a 0a 69 6d 70 6f 72 74 20 ().added.in.calibre.1.9..import.
1bbc0 6f 73 0a 69 6d 70 6f 72 74 20 73 68 75 74 69 6c 0a 69 6d 70 6f 72 74 20 73 79 73 0a 69 6d 70 6f os.import.shutil.import.sys.impo
1bbe0 72 74 20 74 69 6d 65 0a 66 72 6f 6d 20 6c 6f 63 61 6c 65 20 69 6d 70 6f 72 74 20 45 72 72 6f 72 rt.time.from.locale.import.Error
1bc00 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 41 6e 79 2c 20 4c 69 73 74 0a 0a 74 .from.typing.import.Any,.List..t
1bc20 72 79 3a 0a 20 20 20 20 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 69 6d 70 6f 72 74 20 28 0a 20 20 ry:.....from.qt.core.import.(...
1bc40 20 20 20 20 20 20 51 41 62 73 74 72 61 63 74 49 74 65 6d 56 69 65 77 2c 0a 20 20 20 20 20 20 20 ......QAbstractItemView,........
1bc60 20 51 41 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 20 20 20 20 20 20 20 20 51 44 69 61 6c 6f 67 42 75 .QApplication,.........QDialogBu
1bc80 74 74 6f 6e 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 46 69 6c 65 44 69 61 6c 6f 67 2c 0a 20 20 ttonBox,.........QFileDialog,...
1bca0 20 20 20 20 20 20 51 47 72 69 64 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 51 47 72 6f 75 ......QGridLayout,.........QGrou
1bcc0 70 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 48 42 6f 78 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 pBox,.........QHBoxLayout,......
1bce0 20 20 20 51 4c 61 62 65 6c 2c 0a 20 20 20 20 20 20 20 20 51 4c 69 6e 65 45 64 69 74 2c 0a 20 20 ...QLabel,.........QLineEdit,...
1bd00 20 20 20 20 20 20 51 4c 69 73 74 57 69 64 67 65 74 2c 0a 20 20 20 20 20 20 20 20 51 50 72 6f 67 ......QListWidget,.........QProg
1bd20 72 65 73 73 44 69 61 6c 6f 67 2c 0a 20 20 20 20 20 20 20 20 51 50 75 73 68 42 75 74 74 6f 6e 2c ressDialog,.........QPushButton,
1bd40 0a 20 20 20 20 20 20 20 20 51 52 61 64 69 6f 42 75 74 74 6f 6e 2c 0a 20 20 20 20 20 20 20 20 51 .........QRadioButton,.........Q
1bd60 53 69 7a 65 2c 0a 20 20 20 20 20 20 20 20 51 74 2c 0a 20 20 20 20 20 20 20 20 51 54 65 78 74 42 Size,.........Qt,.........QTextB
1bd80 72 6f 77 73 65 72 2c 0a 20 20 20 20 20 20 20 20 51 54 65 78 74 45 64 69 74 2c 0a 20 20 20 20 20 rowser,.........QTextEdit,......
1bda0 20 20 20 51 54 69 6d 65 72 2c 0a 20 20 20 20 20 20 20 20 51 56 42 6f 78 4c 61 79 6f 75 74 2c 0a ...QTimer,.........QVBoxLayout,.
1bdc0 20 20 20 20 20 20 20 20 70 79 71 74 53 69 67 6e 61 6c 2c 0a 20 20 20 20 29 0a 65 78 63 65 70 74 ........pyqtSignal,.....).except
1bde0 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 66 72 6f 6d 20 50 79 51 74 35 2e 51 74 20 .ImportError:.....from.PyQt5.Qt.
1be00 69 6d 70 6f 72 74 20 28 0a 20 20 20 20 20 20 20 20 51 41 62 73 74 72 61 63 74 49 74 65 6d 56 69 import.(.........QAbstractItemVi
1be20 65 77 2c 0a 20 20 20 20 20 20 20 20 51 41 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 20 20 20 20 20 20 ew,.........QApplication,.......
1be40 20 20 51 44 69 61 6c 6f 67 42 75 74 74 6f 6e 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 46 69 6c ..QDialogButtonBox,.........QFil
1be60 65 44 69 61 6c 6f 67 2c 0a 20 20 20 20 20 20 20 20 51 47 72 69 64 4c 61 79 6f 75 74 2c 0a 20 20 eDialog,.........QGridLayout,...
1be80 20 20 20 20 20 20 51 47 72 6f 75 70 42 6f 78 2c 0a 20 20 20 20 20 20 20 20 51 48 42 6f 78 4c 61 ......QGroupBox,.........QHBoxLa
1bea0 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 51 4c 61 62 65 6c 2c 0a 20 20 20 20 20 20 20 20 51 4c yout,.........QLabel,.........QL
1bec0 69 6e 65 45 64 69 74 2c 0a 20 20 20 20 20 20 20 20 51 4c 69 73 74 57 69 64 67 65 74 2c 0a 20 20 ineEdit,.........QListWidget,...
1bee0 20 20 20 20 20 20 51 50 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 2c 0a 20 20 20 20 20 20 20 20 51 ......QProgressDialog,.........Q
1bf00 50 75 73 68 42 75 74 74 6f 6e 2c 0a 20 20 20 20 20 20 20 20 51 52 61 64 69 6f 42 75 74 74 6f 6e PushButton,.........QRadioButton
1bf20 2c 0a 20 20 20 20 20 20 20 20 51 53 69 7a 65 2c 0a 20 20 20 20 20 20 20 20 51 74 2c 0a 20 20 20 ,.........QSize,.........Qt,....
1bf40 20 20 20 20 20 51 54 65 78 74 42 72 6f 77 73 65 72 2c 0a 20 20 20 20 20 20 20 20 51 54 65 78 74 .....QTextBrowser,.........QText
1bf60 45 64 69 74 2c 0a 20 20 20 20 20 20 20 20 51 54 69 6d 65 72 2c 0a 20 20 20 20 20 20 20 20 51 56 Edit,.........QTimer,.........QV
1bf80 42 6f 78 4c 61 79 6f 75 74 2c 0a 20 20 20 20 20 20 20 20 70 79 71 74 53 69 67 6e 61 6c 2c 0a 20 BoxLayout,.........pyqtSignal,..
1bfa0 20 20 20 29 0a 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 20 69 6d 70 6f 72 74 20 46 ...)..from.calibre.gui2.import.F
1bfc0 69 6c 65 44 69 61 6c 6f 67 2c 20 63 68 6f 6f 73 65 5f 66 69 6c 65 73 2c 20 65 72 72 6f 72 5f 64 ileDialog,.choose_files,.error_d
1bfe0 69 61 6c 6f 67 2c 20 71 75 65 73 74 69 6f 6e 5f 64 69 61 6c 6f 67 0a 66 72 6f 6d 20 63 61 6c 69 ialog,.question_dialog.from.cali
1c000 62 72 65 2e 67 75 69 32 2e 61 63 74 69 6f 6e 73 20 69 6d 70 6f 72 74 20 49 6e 74 65 72 66 61 63 bre.gui2.actions.import.Interfac
1c020 65 41 63 74 69 6f 6e 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 2e 6b 65 79 62 6f 61 eAction.from.calibre.gui2.keyboa
1c040 72 64 20 69 6d 70 6f 72 74 20 53 68 6f 72 74 63 75 74 43 6f 6e 66 69 67 0a 66 72 6f 6d 20 63 61 rd.import.ShortcutConfig.from.ca
1c060 6c 69 62 72 65 2e 67 75 69 32 2e 77 69 64 67 65 74 73 32 20 69 6d 70 6f 72 74 20 44 69 61 6c 6f libre.gui2.widgets2.import.Dialo
1c080 67 0a 0a 66 72 6f 6d 20 2e 20 69 6d 70 6f 72 74 20 47 55 49 2c 20 50 4c 55 47 49 4e 5f 4e 41 4d g..from...import.GUI,.PLUGIN_NAM
1c0a0 45 2c 20 50 52 45 46 53 5f 4e 41 4d 45 53 50 41 43 45 2c 20 63 75 72 72 65 6e 74 5f 64 62 2c 20 E,.PREFS_NAMESPACE,.current_db,.
1c0c0 64 65 62 75 67 5f 70 72 69 6e 74 2c 20 67 65 74 5f 69 63 6f 6e 2c 20 6c 6f 63 61 6c 5f 72 65 73 debug_print,.get_icon,.local_res
1c0e0 6f 75 72 63 65 0a 0a 0a 63 6c 61 73 73 20 4b 65 79 62 6f 61 72 64 43 6f 6e 66 69 67 44 69 61 6c ource...class.KeyboardConfigDial
1c100 6f 67 28 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 54 68 69 73 20 64 69 61 og(Dialog):.....'''.....This.dia
1c120 6c 6f 67 20 69 73 20 75 73 65 64 20 74 6f 20 61 6c 6c 6f 77 20 65 64 69 74 69 6e 67 20 6f 66 20 log.is.used.to.allow.editing.of.
1c140 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 2e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 keyboard.shortcuts......'''.....
1c160 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 67 72 6f 75 70 5f 6e 61 6d 65 3a 20 73 def.__init__(self,.group_name:.s
1c180 74 72 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 67 tr,.parent=None):.........self.g
1c1a0 72 6f 75 70 5f 6e 61 6d 65 20 3d 20 67 72 6f 75 70 5f 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 44 roup_name.=.group_name.........D
1c1c0 69 61 6c 6f 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ialog.__init__(self,............
1c1e0 20 74 69 74 6c 65 3d 5f 28 27 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 27 29 2c 0a .title=_('Keyboard.shortcuts'),.
1c200 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 70 6c 75 67 69 6e 2e 63 6f 6d 6d 6f 6e 5f ............name='plugin.common_
1c220 75 74 69 6c 73 3a 6b 65 79 62 6f 61 72 64 5f 73 68 6f 72 74 63 75 74 5f 64 69 61 6c 6f 67 27 2c utils:keyboard_shortcut_dialog',
1c240 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3d 70 61 72 65 6e 74 20 6f 72 20 47 55 .............parent=parent.or.GU
1c260 49 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 74 75 70 5f I,.........)..........def.setup_
1c280 75 69 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 57 69 6e 64 6f 77 ui(self):.........self.setWindow
1c2a0 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 27 6b 65 79 62 6f 61 72 64 2d 70 72 65 66 73 2e 70 6e Icon(get_icon('keyboard-prefs.pn
1c2c0 67 27 29 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 20 3d 20 51 56 42 6f 78 4c 61 79 6f 75 g')).........layout.=.QVBoxLayou
1c2e0 74 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 4c 61 79 6f 75 74 28 6c t(self).........self.setLayout(l
1c300 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 ayout)..................self.key
1c320 62 6f 61 72 64 5f 77 69 64 67 65 74 20 3d 20 53 68 6f 72 74 63 75 74 43 6f 6e 66 69 67 28 73 65 board_widget.=.ShortcutConfig(se
1c340 6c 66 29 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c lf).........layout.addWidget(sel
1c360 66 2e 6b 65 79 62 6f 61 72 64 5f 77 69 64 67 65 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 f.keyboard_widget)..............
1c380 20 20 20 20 73 65 6c 66 2e 6b 65 79 62 6f 61 72 64 5f 77 69 64 67 65 74 2e 69 6e 69 74 69 61 6c ....self.keyboard_widget.initial
1c3a0 69 7a 65 28 47 55 49 2e 6b 65 79 62 6f 61 72 64 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b ize(GUI.keyboard).........self.k
1c3c0 65 79 62 6f 61 72 64 5f 77 69 64 67 65 74 2e 68 69 67 68 6c 69 67 68 74 5f 67 72 6f 75 70 28 73 eyboard_widget.highlight_group(s
1c3e0 65 6c 66 2e 67 72 6f 75 70 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 elf.group_name).................
1c400 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 62 62 29 0a 20 20 20 20 0a .layout.addWidget(self.bb)......
1c420 20 20 20 20 64 65 66 20 61 63 63 65 70 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 ....def.accept(self):.........se
1c440 6c 66 2e 6b 65 79 62 6f 61 72 64 5f 77 69 64 67 65 74 2e 63 6f 6d 6d 69 74 28 29 0a 20 20 20 20 lf.keyboard_widget.commit().....
1c460 20 20 20 20 44 69 61 6c 6f 67 2e 61 63 63 65 70 74 28 73 65 6c 66 29 0a 0a 0a 64 65 66 20 65 64 ....Dialog.accept(self)...def.ed
1c480 69 74 5f 6b 65 79 62 6f 61 72 64 5f 73 68 6f 72 74 63 75 74 73 5f 64 69 61 6c 6f 67 28 70 6c 75 it_keyboard_shortcuts_dialog(plu
1c4a0 67 69 6e 5f 61 63 74 69 6f 6e 3a 20 49 6e 74 65 72 66 61 63 65 41 63 74 69 6f 6e 2c 20 70 61 72 gin_action:.InterfaceAction,.par
1c4c0 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 67 65 74 61 74 74 72 28 70 6c 75 67 69 6e 5f 61 63 ent=None):.....getattr(plugin_ac
1c4e0 74 69 6f 6e 2c 20 27 72 65 62 75 69 6c 64 5f 6d 65 6e 75 73 27 2c 20 28 29 29 28 29 0a 20 20 20 tion,.'rebuild_menus',.())()....
1c500 20 64 20 3d 20 4b 65 79 62 6f 61 72 64 43 6f 6e 66 69 67 44 69 61 6c 6f 67 28 70 6c 75 67 69 6e .d.=.KeyboardConfigDialog(plugin
1c520 5f 61 63 74 69 6f 6e 2e 61 63 74 69 6f 6e 5f 73 70 65 63 5b 30 5d 2c 20 70 61 72 65 6e 74 3d 70 _action.action_spec[0],.parent=p
1c540 61 72 65 6e 74 29 0a 20 20 20 20 69 66 20 64 2e 65 78 65 63 28 29 3a 0a 20 20 20 20 20 20 20 20 arent).....if.d.exec():.........
1c560 47 55 49 2e 6b 65 79 62 6f 61 72 64 2e 66 69 6e 61 6c 69 7a 65 28 29 0a 0a 0a 63 6c 61 73 73 20 GUI.keyboard.finalize()...class.
1c580 4b 65 79 62 6f 61 72 64 43 6f 6e 66 69 67 44 69 61 6c 6f 67 42 75 74 74 6f 6e 28 51 50 75 73 68 KeyboardConfigDialogButton(QPush
1c5a0 42 75 74 74 6f 6e 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 Button):.....def.__init__(self,.
1c5c0 73 68 6f 77 5f 69 63 6f 6e 3d 54 72 75 65 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 show_icon=True,.parent=None):...
1c5e0 20 20 20 20 20 20 51 50 75 73 68 42 75 74 74 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c ......QPushButton.__init__(self,
1c600 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 69 63 6f 6e 28 27 6b 65 79 62 6f 61 72 64 2d .............get_icon('keyboard-
1c620 70 72 65 66 73 2e 70 6e 67 27 20 69 66 20 73 68 6f 77 5f 69 63 6f 6e 20 65 6c 73 65 20 4e 6f 6e prefs.png'.if.show_icon.else.Non
1c640 65 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 27 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 e),............._('Keyboard.shor
1c660 74 63 75 74 73 27 29 2b 27 e2 80 a6 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e tcuts')+'...',.............paren
1c680 74 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 54 6f 6f t,.........).........self.setToo
1c6a0 6c 54 69 70 28 5f 28 27 45 64 69 74 20 74 68 65 20 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 lTip(_('Edit.the.keyboard.shortc
1c6c0 75 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 70 6c 75 67 69 6e 27 uts.associated.with.this.plugin'
1c6e0 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 69 63 6b 65 64 2e 63 6f 6e 6e 65 63 74 28 )).........self.clicked.connect(
1c700 73 65 6c 66 2e 65 64 69 74 5f 73 68 6f 72 74 63 75 74 73 29 0a 0a 20 20 20 20 64 65 66 20 65 64 self.edit_shortcuts)......def.ed
1c720 69 74 5f 73 68 6f 72 74 63 75 74 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d it_shortcuts(self):.........from
1c740 20 2e 20 69 6d 70 6f 72 74 20 50 4c 55 47 49 4e 5f 49 4e 53 54 41 4e 43 45 0a 20 20 20 20 20 20 ...import.PLUGIN_INSTANCE.......
1c760 20 20 70 6c 75 67 69 6e 5f 61 63 74 69 6f 6e 20 3d 20 50 4c 55 47 49 4e 5f 49 4e 53 54 41 4e 43 ..plugin_action.=.PLUGIN_INSTANC
1c780 45 2e 6c 6f 61 64 5f 61 63 74 75 61 6c 5f 70 6c 75 67 69 6e 28 47 55 49 29 0a 20 20 20 20 20 20 E.load_actual_plugin(GUI).......
1c7a0 20 20 65 64 69 74 5f 6b 65 79 62 6f 61 72 64 5f 73 68 6f 72 74 63 75 74 73 5f 64 69 61 6c 6f 67 ..edit_keyboard_shortcuts_dialog
1c7c0 28 70 6c 75 67 69 6e 5f 61 63 74 69 6f 6e 29 0a 0a 0a 63 6c 61 73 73 20 4c 69 62 72 61 72 79 50 (plugin_action)...class.LibraryP
1c7e0 72 65 66 73 56 69 65 77 65 72 44 69 61 6c 6f 67 28 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 64 65 refsViewerDialog(Dialog):.....de
1c800 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 6e 61 6d 65 73 70 61 63 65 3a 20 73 74 72 2c f.__init__(self,.namespace:.str,
1c820 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 62 20 3d .parent=None):.........self.db.=
1c840 20 63 75 72 72 65 6e 74 5f 64 62 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6e 61 6d 65 73 .current_db().........self.names
1c860 70 61 63 65 20 3d 20 6e 61 6d 65 73 70 61 63 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 pace.=.namespace.........self.pr
1c880 65 66 73 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 5f 6b 65 efs.=.{}.........self.current_ke
1c8a0 79 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 2e 5f 5f 69 6e 69 74 5f 5f y.=.None.........Dialog.__init__
1c8c0 28 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 27 50 72 65 66 (self,.............title=_('Pref
1c8e0 65 72 65 6e 63 65 73 20 66 6f 72 3a 27 29 2b 27 20 27 2b 6e 61 6d 65 73 70 61 63 65 2c 0a 20 20 erences.for:')+'.'+namespace,...
1c900 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 70 6c 75 67 69 6e 2e 63 6f 6d 6d 6f 6e 5f 75 74 ..........name='plugin.common_ut
1c920 69 6c 73 3a 6c 69 62 72 61 72 79 5f 70 72 65 66 73 5f 76 69 65 77 65 72 5f 64 69 61 6c 6f 67 27 ils:library_prefs_viewer_dialog'
1c940 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3d 70 61 72 65 6e 74 20 6f 72 20 47 ,.............parent=parent.or.G
1c960 55 49 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 5f 62 75 74 74 6f 6e 73 3d UI,.............default_buttons=
1c980 51 44 69 61 6c 6f 67 42 75 74 74 6f 6e 42 6f 78 2e 4f 6b 20 7c 20 51 44 69 61 6c 6f 67 42 75 74 QDialogButtonBox.Ok.|.QDialogBut
1c9a0 74 6f 6e 42 6f 78 2e 43 61 6e 63 65 6c 20 7c 20 51 44 69 61 6c 6f 67 42 75 74 74 6f 6e 42 6f 78 tonBox.Cancel.|.QDialogButtonBox
1c9c0 2e 52 65 73 65 74 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 .Reset,.........)..........def.s
1c9e0 65 74 75 70 5f 75 69 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 20 3d 20 etup_ui(self):.........layout.=.
1ca00 51 56 42 6f 78 4c 61 79 6f 75 74 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 QVBoxLayout(self).........self.s
1ca20 65 74 4c 61 79 6f 75 74 28 6c 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 etLayout(layout)................
1ca40 20 20 6d 6c 20 3d 20 51 48 42 6f 78 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 61 79 ..ml.=.QHBoxLayout().........lay
1ca60 6f 75 74 2e 61 64 64 4c 61 79 6f 75 74 28 6d 6c 2c 20 31 29 0a 20 20 20 20 20 20 20 20 0a 20 20 out.addLayout(ml,.1)............
1ca80 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 20 3d 20 51 4c 69 73 74 57 69 64 67 ......self.keys_list.=.QListWidg
1caa0 65 74 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e et(self).........self.keys_list.
1cac0 73 65 74 53 65 6c 65 63 74 69 6f 6e 4d 6f 64 65 28 51 41 62 73 74 72 61 63 74 49 74 65 6d 56 69 setSelectionMode(QAbstractItemVi
1cae0 65 77 2e 53 69 6e 67 6c 65 53 65 6c 65 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 ew.SingleSelection).........self
1cb00 2e 6b 65 79 73 5f 6c 69 73 74 2e 73 65 74 46 69 78 65 64 57 69 64 74 68 28 31 35 30 29 0a 20 20 .keys_list.setFixedWidth(150)...
1cb20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 73 65 74 41 6c 74 65 72 6e 61 74 ......self.keys_list.setAlternat
1cb40 69 6e 67 52 6f 77 43 6f 6c 6f 72 73 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 6d 6c 2e 61 64 ingRowColors(True).........ml.ad
1cb60 64 57 69 64 67 65 74 28 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 dWidget(self.keys_list).........
1cb80 73 65 6c 66 2e 76 61 6c 75 65 5f 74 65 78 74 20 3d 20 51 54 65 78 74 45 64 69 74 28 73 65 6c 66 self.value_text.=.QTextEdit(self
1cba0 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 76 61 6c 75 65 5f 74 65 78 74 2e 73 65 74 52 65 61 ).........self.value_text.setRea
1cbc0 64 4f 6e 6c 79 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 6d 6c 2e 61 64 64 57 69 64 67 65 dOnly(False).........ml.addWidge
1cbe0 74 28 73 65 6c 66 2e 76 61 6c 75 65 5f 74 65 78 74 2c 20 31 29 0a 20 20 20 20 20 20 20 20 0a 20 t(self.value_text,.1)...........
1cc00 20 20 20 20 20 20 20 72 65 73 65 74 5f 62 75 74 74 6f 6e 20 3d 20 73 65 6c 66 2e 62 62 2e 62 75 .......reset_button.=.self.bb.bu
1cc20 74 74 6f 6e 28 51 44 69 61 6c 6f 67 42 75 74 74 6f 6e 42 6f 78 2e 52 65 73 65 74 29 0a 20 20 20 tton(QDialogButtonBox.Reset)....
1cc40 20 20 20 20 20 72 65 73 65 74 5f 62 75 74 74 6f 6e 2e 73 65 74 54 6f 6f 6c 54 69 70 28 5f 28 27 .....reset_button.setToolTip(_('
1cc60 43 6c 65 61 72 20 61 6c 6c 20 73 65 74 74 69 6e 67 73 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 Clear.all.settings.for.this.plug
1cc80 69 6e 27 29 29 0a 20 20 20 20 20 20 20 20 72 65 73 65 74 5f 62 75 74 74 6f 6e 2e 63 6c 69 63 6b in')).........reset_button.click
1cca0 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 5f 72 65 73 65 74 5f 73 65 74 74 69 6e 67 73 29 ed.connect(self._reset_settings)
1ccc0 0a 20 20 20 20 20 20 20 20 6c 61 79 6f 75 74 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 62 .........layout.addWidget(self.b
1cce0 62 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 6f 70 75 6c 61 b)..................self._popula
1cd00 74 65 5f 73 65 74 74 69 6e 67 73 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 te_settings()..................i
1cd20 66 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 63 6f 75 6e 74 28 29 3a 0a 20 20 20 20 20 20 f.self.keys_list.count():.......
1cd40 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 73 65 74 43 75 72 72 65 6e 74 52 ......self.keys_list.setCurrentR
1cd60 6f 77 28 30 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 70 6f 70 75 6c 61 74 65 5f 73 65 74 ow(0)..........def._populate_set
1cd80 74 69 6e 67 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 65 66 73 2e tings(self):.........self.prefs.
1cda0 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 63 clear().........self.keys_list.c
1cdc0 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 6e 73 5f 70 72 65 66 69 78 20 3d 20 27 6e 61 6d 65 lear().........ns_prefix.=.'name
1cde0 73 70 61 63 65 64 3a 27 2b 73 65 6c 66 2e 6e 61 6d 65 73 70 61 63 65 2b 27 3a 27 0a 20 20 20 20 spaced:'+self.namespace+':'.....
1ce00 20 20 20 20 6e 73 5f 6c 65 6e 20 3d 20 6c 65 6e 28 6e 73 5f 70 72 65 66 69 78 29 0a 20 20 20 20 ....ns_len.=.len(ns_prefix).....
1ce20 20 20 20 20 66 6f 72 20 6b 65 79 20 69 6e 20 73 6f 72 74 65 64 28 5b 6b 5b 6e 73 5f 6c 65 6e 3a ....for.key.in.sorted([k[ns_len:
1ce40 5d 20 66 6f 72 20 6b 20 69 6e 20 73 65 6c 66 2e 64 62 2e 70 72 65 66 73 2e 6b 65 79 73 28 29 20 ].for.k.in.self.db.prefs.keys().
1ce60 69 66 20 6b 2e 73 74 61 72 74 73 77 69 74 68 28 6e 73 5f 70 72 65 66 69 78 29 5d 29 3a 0a 20 20 if.k.startswith(ns_prefix)]):...
1ce80 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 61 64 64 49 74 65 6d ..........self.keys_list.addItem
1cea0 28 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 6c 20 3d 20 73 65 6c 66 2e 64 62 2e (key).............val.=.self.db.
1cec0 70 72 65 66 73 2e 67 65 74 5f 6e 61 6d 65 73 70 61 63 65 64 28 73 65 6c 66 2e 6e 61 6d 65 73 70 prefs.get_namespaced(self.namesp
1cee0 61 63 65 2c 20 6b 65 79 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 ace,.key,.None).............self
1cf00 2e 70 72 65 66 73 5b 6b 65 79 5d 20 3d 20 73 65 6c 66 2e 64 62 2e 70 72 65 66 73 2e 74 6f 5f 72 .prefs[key].=.self.db.prefs.to_r
1cf20 61 77 28 76 61 6c 29 20 69 66 20 76 61 6c 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 20 65 6c 73 65 20 aw(val).if.val.is.not.None.else.
1cf40 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 73 65 74 4d None.........self.keys_list.setM
1cf60 69 6e 69 6d 75 6d 57 69 64 74 68 28 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 73 69 7a 65 48 inimumWidth(self.keys_list.sizeH
1cf80 69 6e 74 46 6f 72 43 6f 6c 75 6d 6e 28 30 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6b 65 intForColumn(0)).........self.ke
1cfa0 79 73 5f 6c 69 73 74 2e 63 75 72 72 65 6e 74 52 6f 77 43 68 61 6e 67 65 64 5b 69 6e 74 5d 2e 63 ys_list.currentRowChanged[int].c
1cfc0 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 5f 63 75 72 72 65 6e 74 5f 72 6f 77 5f 63 68 61 6e 67 65 64 onnect(self._current_row_changed
1cfe0 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 73 61 76 65 5f 63 75 72 72 65 6e 74 5f 72 6f 77 )..........def._save_current_row
1d000 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 63 75 72 72 65 6e 74 5f (self):.........if.self.current_
1d020 6b 65 79 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c key.is.not.None:.............sel
1d040 66 2e 70 72 65 66 73 5b 73 65 6c 66 2e 63 75 72 72 65 6e 74 5f 6b 65 79 5d 20 3d 20 73 65 6c 66 f.prefs[self.current_key].=.self
1d060 2e 76 61 6c 75 65 5f 74 65 78 74 2e 74 6f 50 6c 61 69 6e 54 65 78 74 28 29 0a 20 20 20 20 0a 20 .value_text.toPlainText().......
1d080 20 20 20 64 65 66 20 5f 63 75 72 72 65 6e 74 5f 72 6f 77 5f 63 68 61 6e 67 65 64 28 73 65 6c 66 ...def._current_row_changed(self
1d0a0 2c 20 6e 65 77 5f 72 6f 77 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 61 76 65 5f 63 ,.new_row):.........self._save_c
1d0c0 75 72 72 65 6e 74 5f 72 6f 77 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 urrent_row()..................if
1d0e0 20 6e 65 77 5f 72 6f 77 20 3c 20 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 76 .new_row.<.0:.............self.v
1d100 61 6c 75 65 5f 74 65 78 74 2e 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 alue_text.clear().............se
1d120 6c 66 2e 63 75 72 72 65 6e 74 5f 6b 65 79 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 lf.current_key.=.None...........
1d140 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 ..return..................self.c
1d160 75 72 72 65 6e 74 5f 6b 65 79 20 3d 20 73 65 6c 66 2e 6b 65 79 73 5f 6c 69 73 74 2e 63 75 72 72 urrent_key.=.self.keys_list.curr
1d180 65 6e 74 49 74 65 6d 28 29 2e 74 65 78 74 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 76 61 entItem().text().........self.va
1d1a0 6c 75 65 5f 74 65 78 74 2e 73 65 74 50 6c 61 69 6e 54 65 78 74 28 73 65 6c 66 2e 70 72 65 66 73 lue_text.setPlainText(self.prefs
1d1c0 5b 73 65 6c 66 2e 63 75 72 72 65 6e 74 5f 6b 65 79 5d 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 [self.current_key])..........def
1d1e0 20 61 63 63 65 70 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 61 76 .accept(self):.........self._sav
1d200 65 5f 63 75 72 72 65 6e 74 5f 72 6f 77 28 29 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 76 20 e_current_row().........for.k,v.
1d220 69 6e 20 73 65 6c 66 2e 70 72 65 66 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 in.self.prefs.items():..........
1d240 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 62 2e ...try:.................self.db.
1d260 70 72 65 66 73 2e 72 61 77 5f 74 6f 5f 6f 62 6a 65 63 74 28 76 29 0a 20 20 20 20 20 20 20 20 20 prefs.raw_to_object(v)..........
1d280 20 20 20 65 78 63 65 70 74 20 45 78 63 65 70 74 69 6f 6e 20 61 73 20 65 78 3a 0a 20 20 20 20 20 ...except.Exception.as.ex:......
1d2a0 20 20 20 20 20 20 20 20 20 20 20 63 75 73 74 6f 6d 5f 65 78 63 65 70 74 69 6f 6e 5f 64 69 61 6c ...........custom_exception_dial
1d2c0 6f 67 28 65 78 2c 20 61 64 64 69 74 69 6f 6e 61 6c 5f 6d 73 67 3d 5f 28 27 54 68 65 20 63 68 61 og(ex,.additional_msg=_('The.cha
1d2e0 6e 67 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 61 70 70 6c 69 65 64 2e 27 29 2c 20 73 68 6f 77 5f nges.cannot.be.applied.'),.show_
1d300 64 65 74 61 69 6c 3d 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 detail=False).................re
1d320 74 75 72 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 turn..................from.calib
1d340 72 65 2e 67 75 69 32 2e 64 69 61 6c 6f 67 73 2e 63 6f 6e 66 69 72 6d 5f 64 65 6c 65 74 65 20 69 re.gui2.dialogs.confirm_delete.i
1d360 6d 70 6f 72 74 20 63 6f 6e 66 69 72 6d 0a 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 3d 20 mport.confirm.........message.=.
1d380 28 27 3c 70 3e 27 2b 5f 28 27 41 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 ('<p>'+_('Are.you.sure.you.want.
1d3a0 74 6f 20 63 68 61 6e 67 65 20 79 6f 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 to.change.your.settings.in.this.
1d3c0 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 3f 27 29 2b 27 3c 2f 70 3e library.for.this.plugin?')+'</p>
1d3e0 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 3c 70 3e 27 2b 5f 28 27 41 6e '....................'<p>'+_('An
1d400 79 20 73 65 74 74 69 6e 67 73 20 69 6e 20 6f 74 68 65 72 20 6c 69 62 72 61 72 69 65 73 20 6f 72 y.settings.in.other.libraries.or
1d420 20 73 74 6f 72 65 64 20 69 6e 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 69 6e 20 79 6f 75 72 20 63 .stored.in.a.JSON.file.in.your.c
1d440 61 6c 69 62 72 65 20 70 6c 75 67 69 6e 73 20 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alibre.plugins.'................
1d460 20 20 20 20 27 66 6f 6c 64 65 72 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 74 6f 75 63 68 65 64 2e ....'folder.will.not.be.touched.
1d480 27 29 2b 27 3c 2f 70 3e 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 6f 6e 66 69 72 ')+'</p>').........if.not.confir
1d4a0 6d 28 6d 65 73 73 61 67 65 2c 20 27 6c 69 62 72 61 72 79 5f 70 72 65 66 73 5f 76 69 65 77 65 72 m(message,.'library_prefs_viewer
1d4c0 5f 64 69 61 6c 6f 67 5f 61 70 70 6c 79 5f 73 65 74 74 69 6e 67 73 3a 27 2b 73 65 6c 66 2e 6e 61 _dialog_apply_settings:'+self.na
1d4e0 6d 65 73 70 61 63 65 2c 20 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 mespace,.self):.............retu
1d500 72 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 76 20 69 6e 20 73 rn..................for.k,v.in.s
1d520 65 6c 66 2e 70 72 65 66 73 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 elf.prefs.items():.............s
1d540 65 6c 66 2e 64 62 2e 70 72 65 66 73 2e 73 65 74 5f 6e 61 6d 65 73 70 61 63 65 64 28 73 65 6c 66 elf.db.prefs.set_namespaced(self
1d560 2e 6e 61 6d 65 73 70 61 63 65 2c 20 6b 2c 20 73 65 6c 66 2e 64 62 2e 70 72 65 66 73 2e 72 61 77 .namespace,.k,.self.db.prefs.raw
1d580 5f 74 6f 5f 6f 62 6a 65 63 74 28 76 29 29 0a 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 2e 61 63 _to_object(v)).........Dialog.ac
1d5a0 63 65 70 74 28 73 65 6c 66 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 72 65 73 65 74 5f 73 cept(self)..........def._reset_s
1d5c0 65 74 74 69 6e 67 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 ettings(self):.........from.cali
1d5e0 62 72 65 2e 67 75 69 32 2e 64 69 61 6c 6f 67 73 2e 63 6f 6e 66 69 72 6d 5f 64 65 6c 65 74 65 20 bre.gui2.dialogs.confirm_delete.
1d600 69 6d 70 6f 72 74 20 63 6f 6e 66 69 72 6d 0a 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 3d import.confirm.........message.=
1d620 20 28 27 3c 70 3e 27 2b 5f 28 27 41 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 .('<p>'+_('Are.you.sure.you.want
1d640 20 74 6f 20 63 6c 65 61 72 20 79 6f 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 .to.clear.your.settings.in.this.
1d660 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 3f 27 29 2b 27 3c 2f 70 3e library.for.this.plugin?')+'</p>
1d680 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 3c 70 3e 27 2b 5f 28 27 41 6e '....................'<p>'+_('An
1d6a0 79 20 73 65 74 74 69 6e 67 73 20 69 6e 20 6f 74 68 65 72 20 6c 69 62 72 61 72 69 65 73 20 6f 72 y.settings.in.other.libraries.or
1d6c0 20 73 74 6f 72 65 64 20 69 6e 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 69 6e 20 79 6f 75 72 20 63 .stored.in.a.JSON.file.in.your.c
1d6e0 61 6c 69 62 72 65 20 70 6c 75 67 69 6e 73 20 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 alibre.plugins.'................
1d700 20 20 20 20 27 66 6f 6c 64 65 72 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 74 6f 75 63 68 65 64 2e ....'folder.will.not.be.touched.
1d720 27 29 2b 27 3c 2f 70 3e 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 63 6f 6e 66 69 72 ')+'</p>').........if.not.confir
1d740 6d 28 6d 65 73 73 61 67 65 2c 20 27 6c 69 62 72 61 72 79 5f 70 72 65 66 73 5f 76 69 65 77 65 72 m(message,.'library_prefs_viewer
1d760 5f 64 69 61 6c 6f 67 5f 72 65 73 65 74 5f 73 65 74 74 69 6e 67 73 3a 27 2b 73 65 6c 66 2e 6e 61 _dialog_reset_settings:'+self.na
1d780 6d 65 73 70 61 63 65 2c 20 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 mespace,.self):.............retu
1d7a0 72 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 20 69 6e 20 73 65 6c rn..................for.k.in.sel
1d7c0 66 2e 70 72 65 66 73 2e 6b 65 79 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 f.prefs.keys():.............self
1d7e0 2e 70 72 65 66 73 5b 6b 5d 20 3d 20 27 7b 7d 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c .prefs[k].=.'{}'.............sel
1d800 66 2e 64 62 2e 70 72 65 66 73 2e 73 65 74 5f 6e 61 6d 65 73 70 61 63 65 64 28 73 65 6c 66 2e 6e f.db.prefs.set_namespaced(self.n
1d820 61 6d 65 73 70 61 63 65 2c 20 6b 2c 20 73 65 6c 66 2e 64 62 2e 70 72 65 66 73 2e 72 61 77 5f 74 amespace,.k,.self.db.prefs.raw_t
1d840 6f 5f 6f 62 6a 65 63 74 28 27 7b 7d 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 70 6f o_object('{}')).........self._po
1d860 70 75 6c 61 74 65 5f 73 65 74 74 69 6e 67 73 28 29 0a 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 pulate_settings().........Dialog
1d880 2e 61 63 63 65 70 74 28 73 65 6c 66 29 0a 0a 0a 64 65 66 20 6c 69 62 72 61 72 79 5f 70 72 65 66 .accept(self)...def.library_pref
1d8a0 73 5f 64 69 61 6c 6f 67 28 70 72 65 66 73 5f 6e 61 6d 65 73 70 61 63 65 3a 20 73 74 72 3d 50 52 s_dialog(prefs_namespace:.str=PR
1d8c0 45 46 53 5f 4e 41 4d 45 53 50 41 43 45 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 20 2d 3e 20 44 EFS_NAMESPACE,.parent=None).->.D
1d8e0 69 61 6c 6f 67 2e 44 69 61 6c 6f 67 43 6f 64 65 3a 0a 20 20 20 20 64 20 3d 20 4c 69 62 72 61 72 ialog.DialogCode:.....d.=.Librar
1d900 79 50 72 65 66 73 56 69 65 77 65 72 44 69 61 6c 6f 67 28 70 72 65 66 73 5f 6e 61 6d 65 73 70 61 yPrefsViewerDialog(prefs_namespa
1d920 63 65 2c 20 70 61 72 65 6e 74 29 0a 20 20 20 20 72 65 74 75 72 6e 20 64 2e 65 78 65 63 28 29 0a ce,.parent).....return.d.exec().
1d940 0a 0a 63 6c 61 73 73 20 4c 69 62 72 61 72 79 50 72 65 66 73 56 69 65 77 65 72 44 69 61 6c 6f 67 ..class.LibraryPrefsViewerDialog
1d960 42 75 74 74 6f 6e 28 51 50 75 73 68 42 75 74 74 6f 6e 29 3a 0a 20 20 20 20 0a 20 20 20 20 6c 69 Button(QPushButton):..........li
1d980 62 72 61 72 79 5f 70 72 65 66 73 5f 63 68 61 6e 67 65 64 20 3d 20 70 79 71 74 53 69 67 6e 61 6c brary_prefs_changed.=.pyqtSignal
1d9a0 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 70 ()..........def.__init__(self,.p
1d9c0 72 65 66 73 5f 6e 61 6d 65 73 70 61 63 65 3a 20 73 74 72 3d 50 52 45 46 53 5f 4e 41 4d 45 53 50 refs_namespace:.str=PREFS_NAMESP
1d9e0 41 43 45 2c 20 73 68 6f 77 5f 69 63 6f 6e 3d 46 61 6c 73 65 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e ACE,.show_icon=False,.parent=Non
1da00 65 29 3a 0a 20 20 20 20 20 20 20 20 51 50 75 73 68 42 75 74 74 6f 6e 2e 5f 5f 69 6e 69 74 5f 5f e):.........QPushButton.__init__
1da20 28 73 65 6c 66 2c 20 67 65 74 5f 69 63 6f 6e 28 27 6c 74 2e 70 6e 67 27 20 69 66 20 73 68 6f 77 (self,.get_icon('lt.png'.if.show
1da40 5f 69 63 6f 6e 20 65 6c 73 65 20 4e 6f 6e 65 29 2c 20 5f 28 27 56 69 65 77 20 6c 69 62 72 61 72 _icon.else.None),._('View.librar
1da60 79 20 70 72 65 66 65 72 65 6e 63 65 73 27 29 2b 27 e2 80 a6 27 2c 20 70 61 72 65 6e 74 29 0a 20 y.preferences')+'...',.parent)..
1da80 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 54 6f 6f 6c 54 69 70 28 5f 28 27 56 69 65 77 20 64 .......self.setToolTip(_('View.d
1daa0 61 74 61 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 64 61 74 61 62 61 ata.stored.in.the.library.databa
1dac0 73 65 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 se.for.this.plugin')).........se
1dae0 6c 66 2e 63 6c 69 63 6b 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 6c 69 62 72 61 72 79 5f lf.clicked.connect(self.library_
1db00 70 72 65 66 73 5f 64 69 61 6c 6f 67 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 65 66 73 prefs_dialog).........self.prefs
1db20 5f 6e 61 6d 65 73 70 61 63 65 20 3d 20 70 72 65 66 73 5f 6e 61 6d 65 73 70 61 63 65 0a 20 20 20 _namespace.=.prefs_namespace....
1db40 20 20 20 20 20 73 65 6c 66 2e 70 61 72 65 6e 74 20 3d 20 70 61 72 65 6e 74 0a 0a 20 20 20 20 64 .....self.parent.=.parent......d
1db60 65 66 20 6c 69 62 72 61 72 79 5f 70 72 65 66 73 5f 64 69 61 6c 6f 67 28 73 65 6c 66 29 3a 0a 20 ef.library_prefs_dialog(self):..
1db80 20 20 20 20 20 20 20 69 66 20 6c 69 62 72 61 72 79 5f 70 72 65 66 73 5f 64 69 61 6c 6f 67 28 73 .......if.library_prefs_dialog(s
1dba0 65 6c 66 2e 70 72 65 66 73 5f 6e 61 6d 65 73 70 61 63 65 2c 20 73 65 6c 66 2e 70 61 72 65 6e 74 elf.prefs_namespace,.self.parent
1dbc0 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 69 62 72 61 72 79 5f 70 72 65 66 ):.............self.library_pref
1dbe0 73 5f 63 68 61 6e 67 65 64 2e 65 6d 69 74 28 29 0a 0a 0a 63 6c 61 73 73 20 50 72 6f 67 72 65 73 s_changed.emit()...class.Progres
1dc00 73 44 69 61 6c 6f 67 28 51 50 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 0a 20 sDialog(QProgressDialog):.......
1dc20 20 20 20 69 63 6f 6e 3d 4e 6f 6e 65 0a 20 20 20 20 74 69 74 6c 65 3d 4e 6f 6e 65 0a 20 20 20 20 ...icon=None.....title=None.....
1dc40 63 61 6e 63 65 6c 5f 74 65 78 74 3d 4e 6f 6e 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f cancel_text=None..........def.__
1dc60 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 62 6f 6f 6b 5f 69 64 73 3a 20 41 6e 79 2c 20 70 61 72 65 init__(self,.book_ids:.Any,.pare
1dc80 6e 74 3d 4e 6f 6e 65 2c 20 2a 2a 6b 76 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 nt=None,.**kvargs):.............
1dca0 20 20 20 20 20 23 20 44 42 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 64 62 20 3d 20 63 75 72 72 .....#.DB.........self.db.=.curr
1dcc0 65 6e 74 5f 64 62 28 29 0a 20 20 20 20 20 20 20 20 23 20 44 42 20 41 50 49 0a 20 20 20 20 20 20 ent_db().........#.DB.API.......
1dce0 20 20 73 65 6c 66 2e 64 62 41 50 49 20 3d 20 73 65 6c 66 2e 64 62 2e 6e 65 77 5f 61 70 69 0a 20 ..self.dbAPI.=.self.db.new_api..
1dd00 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 6c 69 73 74 20 6f 66 20 62 6f 6f 6b 20 69 ................#.list.of.book.i
1dd20 64 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 62 6f 6f 6b 5f 69 64 73 20 3d 20 62 6f 6f 6b 5f 69 d.........self.book_ids.=.book_i
1dd40 64 73 0a 20 20 20 20 20 20 20 20 23 20 43 6f 75 6e 74 20 62 6f 6f 6b 0a 20 20 20 20 20 20 20 20 ds.........#.Count.book.........
1dd60 73 65 6c 66 2e 62 6f 6f 6b 5f 63 6f 75 6e 74 20 3d 20 6c 65 6e 28 73 65 6c 66 2e 62 6f 6f 6b 5f self.book_count.=.len(self.book_
1dd80 69 64 73 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 76 61 6c 75 65 5f 6d 61 78 20 ids)..................value_max.
1dda0 3d 20 73 65 6c 66 2e 73 65 74 75 70 5f 70 72 6f 67 72 65 73 73 28 2a 2a 6b 76 61 72 67 73 29 20 =.self.setup_progress(**kvargs).
1ddc0 6f 72 20 73 65 6c 66 2e 62 6f 6f 6b 5f 63 6f 75 6e 74 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 or.self.book_count..............
1dde0 20 20 20 20 63 61 6e 63 65 6c 5f 74 65 78 74 20 3d 20 6b 76 61 72 67 73 2e 67 65 74 28 27 63 61 ....cancel_text.=.kvargs.get('ca
1de00 6e 63 65 6c 5f 74 65 78 74 27 2c 20 4e 6f 6e 65 29 20 6f 72 20 73 65 6c 66 2e 63 61 6e 63 65 6c ncel_text',.None).or.self.cancel
1de20 5f 74 65 78 74 20 6f 72 20 5f 28 27 43 61 6e 63 65 6c 27 29 0a 20 20 20 20 20 20 20 20 51 50 72 _text.or._('Cancel').........QPr
1de40 6f 67 72 65 73 73 44 69 61 6c 6f 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 27 27 2c 20 ogressDialog.__init__(self,.'',.
1de60 63 61 6e 63 65 6c 5f 74 65 78 74 2c 20 30 2c 20 76 61 6c 75 65 5f 6d 61 78 2c 20 70 61 72 65 6e cancel_text,.0,.value_max,.paren
1de80 74 20 6f 72 20 47 55 49 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e t.or.GUI)..................self.
1dea0 73 65 74 4d 69 6e 69 6d 75 6d 57 69 64 74 68 28 35 30 30 29 0a 20 20 20 20 20 20 20 20 73 65 6c setMinimumWidth(500).........sel
1dec0 66 2e 73 65 74 4d 69 6e 69 6d 75 6d 48 65 69 67 68 74 28 31 30 30 29 0a 20 20 20 20 20 20 20 20 f.setMinimumHeight(100).........
1dee0 73 65 6c 66 2e 73 65 74 4d 69 6e 69 6d 75 6d 44 75 72 61 74 69 6f 6e 28 31 30 30 29 0a 20 20 20 self.setMinimumDuration(100)....
1df00 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 41 75 74 6f 43 6c 6f 73 65 28 ..............self.setAutoClose(
1df20 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 41 75 74 6f 52 65 73 65 74 28 True).........self.setAutoReset(
1df40 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 69 74 6c 65 20 3d 20 False)..................title.=.
1df60 6b 76 61 72 67 73 2e 67 65 74 28 27 74 69 74 6c 65 27 2c 20 4e 6f 6e 65 29 20 6f 72 20 73 65 6c kvargs.get('title',.None).or.sel
1df80 66 2e 74 69 74 6c 65 20 6f 72 20 5f 28 27 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 f.title.or._('{PLUGIN_NAME}.prog
1dfa0 72 65 73 73 27 29 2e 66 6f 72 6d 61 74 28 50 4c 55 47 49 4e 5f 4e 41 4d 45 3d 50 4c 55 47 49 4e ress').format(PLUGIN_NAME=PLUGIN
1dfc0 5f 4e 41 4d 45 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 57 69 6e 64 6f 77 54 69 74 _NAME).........self.setWindowTit
1dfe0 6c 65 28 74 69 74 6c 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 le(title)..................for.i
1e000 63 6f 6e 20 69 6e 20 5b 6b 76 61 72 67 73 2e 67 65 74 28 27 69 63 6f 6e 27 2c 20 4e 6f 6e 65 29 con.in.[kvargs.get('icon',.None)
1e020 2c 20 73 65 6c 66 2e 69 63 6f 6e 2c 20 27 69 6d 61 67 65 73 2f 70 6c 75 67 69 6e 2e 70 6e 67 27 ,.self.icon,.'images/plugin.png'
1e040 2c 20 27 6c 74 2e 70 6e 67 27 5d 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 63 6f 6e 20 3d 20 ,.'lt.png']:.............icon.=.
1e060 67 65 74 5f 69 63 6f 6e 28 69 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f get_icon(icon).............if.no
1e080 74 20 69 63 6f 6e 2e 69 73 4e 75 6c 6c 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 t.icon.isNull():................
1e0a0 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 57 69 6e 64 6f 77 49 63 6f .break.........self.setWindowIco
1e0c0 6e 28 69 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 74 n(icon)..................self.st
1e0e0 61 72 74 20 3d 20 74 69 6d 65 2e 74 69 6d 65 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 art.=.time.time().........self.t
1e100 69 6d 65 5f 65 78 65 63 75 74 20 3d 20 30 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 ime_execut.=.0..................
1e120 69 66 20 6e 6f 74 20 62 6f 6f 6b 5f 69 64 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 if.not.book_ids:.............deb
1e140 75 67 5f 70 72 69 6e 74 28 27 4e 6f 20 62 6f 6f 6b 5f 69 64 73 20 70 61 73 73 65 64 20 74 6f 20 ug_print('No.book_ids.passed.to.
1e160 27 2b 20 73 74 72 28 73 65 6c 66 2e 5f 5f 63 6c 61 73 73 5f 5f 2e 5f 5f 6e 61 6d 65 5f 5f 29 20 '+.str(self.__class__.__name__).
1e180 2b 27 2e 20 53 6b 69 70 65 64 2e 27 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 +'..Skiped.').........else:.....
1e1a0 20 20 20 20 20 20 20 20 51 54 69 6d 65 72 2e 73 69 6e 67 6c 65 53 68 6f 74 28 31 2c 20 73 65 6c ........QTimer.singleShot(1,.sel
1e1c0 66 2e 5f 6a 6f 62 5f 70 72 6f 67 72 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c f._job_progress).............sel
1e1e0 66 2e 65 78 65 63 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 f.exec()........................
1e200 20 20 73 65 6c 66 2e 64 62 2e 63 6c 65 61 6e 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 ..self.db.clean()...............
1e220 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 69 6d 65 5f 65 78 65 63 75 74 20 3d 20 72 6f ...........self.time_execut.=.ro
1e240 75 6e 64 28 74 69 6d 65 2e 74 69 6d 65 28 29 20 2d 20 73 65 6c 66 2e 73 74 61 72 74 2c 20 33 29 und(time.time().-.self.start,.3)
1e260 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 65 ..........................self.e
1e280 6e 64 5f 70 72 6f 67 72 65 73 73 28 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 nd_progress()..................s
1e2a0 65 6c 66 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 74 5f 76 61 6c elf.close()..........def.set_val
1e2c0 75 65 28 73 65 6c 66 2c 20 76 61 6c 75 65 3a 20 69 6e 74 2c 20 74 65 78 74 3a 20 73 74 72 3d 4e ue(self,.value:.int,.text:.str=N
1e2e0 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 76 61 6c 75 65 20 3c 20 30 3a 0a 20 20 20 20 one):.........if.value.<.0:.....
1e300 20 20 20 20 20 20 20 20 76 61 6c 75 65 20 3d 20 73 65 6c 66 2e 6d 61 78 69 6d 75 6d 28 29 0a 20 ........value.=.self.maximum()..
1e320 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 56 61 6c 75 65 28 76 61 6c 75 65 29 0a 20 20 20 20 .......self.setValue(value).....
1e340 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 74 65 78 74 3a 0a 20 20 20 20 20 20 .............if.not.text:.......
1e360 20 20 20 20 20 20 69 66 20 63 61 6c 6c 61 62 6c 65 28 73 65 6c 66 2e 70 72 6f 67 72 65 73 73 5f ......if.callable(self.progress_
1e380 74 65 78 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 73 65 text):.................text.=.se
1e3a0 6c 66 2e 70 72 6f 67 72 65 73 73 5f 74 65 78 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 lf.progress_text().............e
1e3c0 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 20 3d 20 73 65 6c 66 lse:.................text.=.self
1e3e0 2e 70 72 6f 67 72 65 73 73 5f 74 65 78 74 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 .progress_text..................
1e400 73 65 6c 66 2e 73 65 74 4c 61 62 65 6c 54 65 78 74 28 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 self.setLabelText(text).........
1e420 69 66 20 73 65 6c 66 2e 6d 61 78 69 6d 75 6d 28 29 20 3c 20 31 30 30 3a 0a 20 20 20 20 20 20 20 if.self.maximum().<.100:........
1e440 20 20 20 20 20 73 65 6c 66 2e 68 69 64 65 28 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 .....self.hide().........else:..
1e460 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 68 6f 77 28 29 0a 20 20 20 20 0a 20 20 20 20 ...........self.show()..........
1e480 64 65 66 20 69 6e 63 72 65 6d 65 6e 74 28 73 65 6c 66 2c 20 76 61 6c 75 65 3a 20 69 6e 74 3d 31 def.increment(self,.value:.int=1
1e4a0 2c 20 74 65 78 74 3a 20 73 74 72 3d 4e 6f 6e 65 29 20 2d 3e 20 69 6e 74 3a 0a 20 20 20 20 20 20 ,.text:.str=None).->.int:.......
1e4c0 20 20 72 73 6c 74 20 3d 20 73 65 6c 66 2e 76 61 6c 75 65 28 29 20 2b 20 76 61 6c 75 65 0a 20 20 ..rslt.=.self.value().+.value...
1e4e0 20 20 20 20 20 20 69 66 20 72 73 6c 74 20 3e 20 73 65 6c 66 2e 6d 61 78 69 6d 75 6d 28 29 3a 0a ......if.rslt.>.self.maximum():.
1e500 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 73 65 6c 66 2e 6d 61 78 69 6d 75 6d 28 ............rslt.=.self.maximum(
1e520 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 76 61 6c 75 65 28 72 73 6c 74 2c 20 74 ).........self.set_value(rslt,.t
1e540 65 78 74 3d 74 65 78 74 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 20 20 ext=text).........return.rslt...
1e560 20 20 0a 20 20 20 20 64 65 66 20 5f 6a 6f 62 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 29 3a 0a .......def._job_progress(self):.
1e580 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 5f 76 61 6c 75 65 28 30 29 0a 20 20 20 20 20 20 ........self.set_value(0).......
1e5a0 20 20 73 65 6c 66 2e 6a 6f 62 5f 70 72 6f 67 72 65 73 73 28 29 0a 20 20 20 20 20 20 20 20 73 65 ..self.job_progress().........se
1e5c0 6c 66 2e 68 69 64 65 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 72 6f 67 72 65 73 73 5f lf.hide()..........def.progress_
1e5e0 74 65 78 74 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 text(self).->.str:.........retur
1e600 6e 20 5f 28 27 42 6f 6f 6b 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 27 29 2e 66 6f 72 6d 61 74 28 n._('Book.{:d}.of.{:d}').format(
1e620 73 65 6c 66 2e 76 61 6c 75 65 28 29 2c 20 73 65 6c 66 2e 62 6f 6f 6b 5f 63 6f 75 6e 74 29 0a 20 self.value(),.self.book_count)..
1e640 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 74 75 70 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 2c ........def.setup_progress(self,
1e660 20 2a 2a 6b 76 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4e 6f 74 49 6d 70 .**kvargs):.........raise.NotImp
1e680 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 65 6e 64 lementedError()..........def.end
1e6a0 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4e _progress(self):.........raise.N
1e6c0 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 otImplementedError()..........de
1e6e0 66 20 6a 6f 62 5f 70 72 6f 67 72 65 73 73 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 61 f.job_progress(self):.........ra
1e700 69 73 65 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 28 29 0a 0a 0a 63 6c 61 73 ise.NotImplementedError()...clas
1e720 73 20 56 69 65 77 4c 6f 67 44 69 61 6c 6f 67 28 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 64 65 66 s.ViewLogDialog(Dialog):.....def
1e740 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 74 69 74 6c 65 3a 20 73 74 72 2c 20 68 74 6d 6c .__init__(self,.title:.str,.html
1e760 3a 20 73 74 72 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c :.str,.parent=None):.........sel
1e780 66 2e 73 72 63 5f 68 74 6d 6c 20 3d 20 68 74 6d 6c 20 6f 72 20 27 27 0a 20 20 20 20 20 20 20 20 f.src_html.=.html.or.''.........
1e7a0 44 69 61 6c 6f 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 Dialog.__init__(self,...........
1e7c0 20 20 74 69 74 6c 65 3d 74 69 74 6c 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 3d ..title=title,.............name=
1e7e0 27 70 6c 75 67 69 6e 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 3a 6c 6f 67 5f 76 69 65 77 65 72 5f 'plugin.common_utils:log_viewer_
1e800 64 69 61 6c 6f 67 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3d 70 61 72 65 dialog',.............parent=pare
1e820 6e 74 20 6f 72 20 47 55 49 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 0a 20 20 20 20 64 65 nt.or.GUI,.........)..........de
1e840 66 20 73 65 74 75 70 5f 75 69 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 f.setup_ui(self):.........self.s
1e860 65 74 57 69 6e 64 6f 77 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 27 64 65 62 75 67 2e 70 6e 67 etWindowIcon(get_icon('debug.png
1e880 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6c 20 3d 20 6c 20 3d 20 51 56 42 6f 78 4c 61 ')).........self.l.=.l.=.QVBoxLa
1e8a0 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 4c 61 79 6f 75 74 28 6c 29 yout().........self.setLayout(l)
1e8c0 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 62 20 3d 20 51 54 65 78 ..................self.tb.=.QTex
1e8e0 74 42 72 6f 77 73 65 72 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 51 41 70 70 6c 69 63 61 74 tBrowser(self).........QApplicat
1e900 69 6f 6e 2e 73 65 74 4f 76 65 72 72 69 64 65 43 75 72 73 6f 72 28 51 74 2e 57 61 69 74 43 75 72 ion.setOverrideCursor(Qt.WaitCur
1e920 73 6f 72 29 0a 20 20 20 20 20 20 20 20 23 20 52 61 74 68 65 72 20 74 68 61 6e 20 66 6f 72 6d 61 sor).........#.Rather.than.forma
1e940 74 74 69 6e 67 20 74 68 65 20 74 65 78 74 20 69 6e 20 3c 70 72 65 3e 20 62 6c 6f 63 6b 73 20 6c tting.the.text.in.<pre>.blocks.l
1e960 69 6b 65 20 74 68 65 20 63 61 6c 69 62 72 65 0a 20 20 20 20 20 20 20 20 23 20 56 69 65 77 4c 6f ike.the.calibre.........#.ViewLo
1e980 67 20 64 6f 65 73 2c 20 69 6e 73 74 65 61 64 20 6a 75 73 74 20 66 6f 72 6d 61 74 20 69 74 20 69 g.does,.instead.just.format.it.i
1e9a0 6e 73 69 64 65 20 64 69 76 73 20 74 6f 20 6b 65 65 70 20 73 74 79 6c 65 20 66 6f 72 6d 61 74 74 nside.divs.to.keep.style.formatt
1e9c0 69 6e 67 0a 20 20 20 20 20 20 20 20 68 74 6d 6c 20 3d 20 73 65 6c 66 2e 73 72 63 5f 68 74 6d 6c ing.........html.=.self.src_html
1e9e0 2e 72 65 70 6c 61 63 65 28 27 5c 74 27 2c 27 26 6e 62 73 70 3b 26 6e 62 73 70 3b 26 6e 62 73 70 .replace('\t','&nbsp;&nbsp;&nbsp
1ea00 3b 26 6e 62 73 70 3b 27 29 2e 72 65 70 6c 61 63 65 28 27 5c 6e 27 2c 20 27 3c 62 72 2f 3e 27 29 ;&nbsp;').replace('\n',.'<br/>')
1ea20 0a 20 20 20 20 20 20 20 20 68 74 6d 6c 20 3d 20 68 74 6d 6c 2e 72 65 70 6c 61 63 65 28 27 3e 20 .........html.=.html.replace('>.
1ea40 27 2c 27 3e 26 6e 62 73 70 3b 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 74 62 2e 73 65 74 ','>&nbsp;').........self.tb.set
1ea60 48 74 6d 6c 28 27 3c 64 69 76 3e 27 2b 68 74 6d 6c 2b 27 3c 2f 64 69 76 3e 27 29 0a 20 20 20 20 Html('<div>'+html+'</div>').....
1ea80 20 20 20 20 51 41 70 70 6c 69 63 61 74 69 6f 6e 2e 72 65 73 74 6f 72 65 4f 76 65 72 72 69 64 65 ....QApplication.restoreOverride
1eaa0 43 75 72 73 6f 72 28 29 0a 20 20 20 20 20 20 20 20 6c 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c Cursor().........l.addWidget(sel
1eac0 66 2e 74 62 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 f.tb)..................self.copy
1eae0 5f 62 75 74 74 6f 6e 20 3d 20 73 65 6c 66 2e 62 62 2e 61 64 64 42 75 74 74 6f 6e 28 5f 28 27 43 _button.=.self.bb.addButton(_('C
1eb00 6f 70 79 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 27 29 2c 20 73 65 6c 66 2e 62 62 2e 41 63 74 69 opy.to.clipboard'),.self.bb.Acti
1eb20 6f 6e 52 6f 6c 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 5f 62 75 74 74 6f 6e onRole).........self.copy_button
1eb40 2e 73 65 74 49 63 6f 6e 28 67 65 74 5f 69 63 6f 6e 28 27 65 64 69 74 2d 63 6f 70 79 2e 70 6e 67 .setIcon(get_icon('edit-copy.png
1eb60 27 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 70 79 5f 62 75 74 74 6f 6e 2e 63 6c 69 ')).........self.copy_button.cli
1eb80 63 6b 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 63 6f 70 79 5f 74 6f 5f 63 6c 69 70 62 6f cked.connect(self.copy_to_clipbo
1eba0 61 72 64 29 0a 20 20 20 20 20 20 20 20 6c 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 62 62 ard).........l.addWidget(self.bb
1ebc0 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 4d 6f 64 61 6c )..................self.setModal
1ebe0 28 46 61 6c 73 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 28 51 53 69 7a (False).........self.resize(QSiz
1ec00 65 28 37 30 30 2c 20 35 30 30 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 68 6f 77 28 29 e(700,.500)).........self.show()
1ec20 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 63 6f 70 79 5f 74 6f 5f 63 6c 69 70 62 6f 61 72 64 28 ..........def.copy_to_clipboard(
1ec40 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 74 78 74 20 3d 20 73 65 6c 66 2e 74 62 2e 74 6f 50 self):.........txt.=.self.tb.toP
1ec60 6c 61 69 6e 54 65 78 74 28 29 0a 20 20 20 20 20 20 20 20 51 41 70 70 6c 69 63 61 74 69 6f 6e 2e lainText().........QApplication.
1ec80 63 6c 69 70 62 6f 61 72 64 28 29 2e 73 65 74 54 65 78 74 28 74 78 74 29 0a 0a 0a 63 6c 61 73 73 clipboard().setText(txt)...class
1eca0 20 49 6d 61 67 65 44 69 61 6c 6f 67 28 44 69 61 6c 6f 67 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f .ImageDialog(Dialog):.....def.__
1ecc0 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 65 78 69 73 74 69 6e 67 5f 69 6d 61 67 65 73 3a 20 4c 69 init__(self,.existing_images:.Li
1ece0 73 74 5b 73 74 72 5d 3d 4e 6f 6e 65 2c 20 72 65 73 6f 75 72 63 65 73 5f 64 69 72 3a 20 73 74 72 st[str]=None,.resources_dir:.str
1ed00 3d 4e 6f 6e 65 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c =None,.parent=None):.........sel
1ed20 66 2e 72 65 73 6f 75 72 63 65 73 5f 64 69 72 20 3d 20 72 65 73 6f 75 72 63 65 73 5f 64 69 72 20 f.resources_dir.=.resources_dir.
1ed40 6f 72 20 6c 6f 63 61 6c 5f 72 65 73 6f 75 72 63 65 2e 49 4d 41 47 45 53 0a 20 20 20 20 20 20 20 or.local_resource.IMAGES........
1ed60 20 73 65 6c 66 2e 65 78 69 73 74 69 6e 67 5f 69 6d 61 67 65 73 20 3d 20 65 78 69 73 74 69 6e 67 .self.existing_images.=.existing
1ed80 5f 69 6d 61 67 65 73 20 6f 72 20 5b 5d 0a 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 2e 5f 5f 69 _images.or.[].........Dialog.__i
1eda0 6e 69 74 5f 5f 28 73 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 nit__(self,.............title=_(
1edc0 27 41 64 64 20 4e 65 77 20 49 6d 61 67 65 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 'Add.New.Image'),.............na
1ede0 6d 65 3d 27 70 6c 75 67 69 6e 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 3a 61 64 64 5f 6e 65 77 5f me='plugin.common_utils:add_new_
1ee00 69 6d 61 67 65 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 3d 70 61 72 65 6e image',.............parent=paren
1ee20 74 20 6f 72 20 47 55 49 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 t.or.GUI,.........)..........def
1ee40 20 73 65 74 75 70 5f 75 69 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 76 20 3d 20 51 56 42 .setup_ui(self):.........v.=.QVB
1ee60 6f 78 4c 61 79 6f 75 74 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 oxLayout(self)..................
1ee80 67 72 6f 75 70 5f 62 6f 78 20 3d 20 51 47 72 6f 75 70 42 6f 78 28 5f 28 27 26 53 65 6c 65 63 74 group_box.=.QGroupBox(_('&Select
1eea0 20 69 6d 61 67 65 20 73 6f 75 72 63 65 27 29 2c 20 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 76 .image.source'),.self).........v
1eec0 2e 61 64 64 57 69 64 67 65 74 28 67 72 6f 75 70 5f 62 6f 78 29 0a 20 20 20 20 20 20 20 20 67 72 .addWidget(group_box).........gr
1eee0 69 64 20 3d 20 51 47 72 69 64 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e id.=.QGridLayout().........self.
1ef00 5f 72 61 64 69 6f 5f 77 65 62 20 3d 20 51 52 61 64 69 6f 42 75 74 74 6f 6e 28 5f 28 27 46 72 6f _radio_web.=.QRadioButton(_('Fro
1ef20 6d 20 26 77 65 62 20 64 6f 6d 61 69 6e 20 66 61 76 69 63 6f 6e 27 29 2c 20 73 65 6c 66 29 0a 20 m.&web.domain.favicon'),.self)..
1ef40 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 72 61 64 69 6f 5f 77 65 62 2e 73 65 74 43 68 65 63 6b 65 .......self._radio_web.setChecke
1ef60 64 28 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 77 65 62 5f 64 6f 6d 61 69 6e d(True).........self._web_domain
1ef80 5f 65 64 69 74 20 3d 20 51 4c 69 6e 65 45 64 69 74 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 _edit.=.QLineEdit(self).........
1efa0 73 65 6c 66 2e 5f 72 61 64 69 6f 5f 77 65 62 2e 73 65 74 46 6f 63 75 73 50 72 6f 78 79 28 73 65 self._radio_web.setFocusProxy(se
1efc0 6c 66 2e 5f 77 65 62 5f 64 6f 6d 61 69 6e 5f 65 64 69 74 29 0a 20 20 20 20 20 20 20 20 67 72 69 lf._web_domain_edit).........gri
1efe0 64 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 5f 72 61 64 69 6f 5f 77 65 62 2c 20 30 2c 20 d.addWidget(self._radio_web,.0,.
1f000 30 29 0a 20 20 20 20 20 20 20 20 67 72 69 64 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 5f 0).........grid.addWidget(self._
1f020 77 65 62 5f 64 6f 6d 61 69 6e 5f 65 64 69 74 2c 20 30 2c 20 31 29 0a 20 20 20 20 20 20 20 20 67 web_domain_edit,.0,.1).........g
1f040 72 69 64 2e 61 64 64 57 69 64 67 65 74 28 51 4c 61 62 65 6c 28 27 65 2e 67 2e 20 77 77 77 2e 61 rid.addWidget(QLabel('e.g..www.a
1f060 6d 61 7a 6f 6e 2e 63 6f 6d 27 29 2c 20 30 2c 20 32 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e mazon.com'),.0,.2).........self.
1f080 5f 72 61 64 69 6f 5f 66 69 6c 65 20 3d 20 51 52 61 64 69 6f 42 75 74 74 6f 6e 28 5f 28 27 46 72 _radio_file.=.QRadioButton(_('Fr
1f0a0 6f 6d 20 2e 70 6e 67 20 26 66 69 6c 65 27 29 2c 20 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 om..png.&file'),.self).........s
1f0c0 65 6c 66 2e 5f 69 6e 70 75 74 5f 66 69 6c 65 5f 65 64 69 74 20 3d 20 51 4c 69 6e 65 45 64 69 74 elf._input_file_edit.=.QLineEdit
1f0e0 28 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 69 6e 70 75 74 5f 66 69 6c 65 5f (self).........self._input_file_
1f100 65 64 69 74 2e 73 65 74 4d 69 6e 69 6d 75 6d 53 69 7a 65 28 32 30 30 2c 20 30 29 0a 20 20 20 20 edit.setMinimumSize(200,.0).....
1f120 20 20 20 20 73 65 6c 66 2e 5f 72 61 64 69 6f 5f 66 69 6c 65 2e 73 65 74 46 6f 63 75 73 50 72 6f ....self._radio_file.setFocusPro
1f140 78 79 28 73 65 6c 66 2e 5f 69 6e 70 75 74 5f 66 69 6c 65 5f 65 64 69 74 29 0a 20 20 20 20 20 20 xy(self._input_file_edit).......
1f160 20 20 70 69 63 6b 5f 62 75 74 74 6f 6e 20 3d 20 51 50 75 73 68 42 75 74 74 6f 6e 28 67 65 74 5f ..pick_button.=.QPushButton(get_
1f180 69 63 6f 6e 28 27 64 6f 63 75 6d 65 6e 74 5f 6f 70 65 6e 2e 70 6e 67 27 29 2c 27 27 2c 20 73 65 icon('document_open.png'),'',.se
1f1a0 6c 66 29 0a 20 20 20 20 20 20 20 20 70 69 63 6b 5f 62 75 74 74 6f 6e 2e 73 65 74 4d 61 78 69 6d lf).........pick_button.setMaxim
1f1c0 75 6d 53 69 7a 65 28 32 34 2c 20 32 30 29 0a 20 20 20 20 20 20 20 20 70 69 63 6b 5f 62 75 74 74 umSize(24,.20).........pick_butt
1f1e0 6f 6e 2e 63 6c 69 63 6b 65 64 2e 63 6f 6e 6e 65 63 74 28 73 65 6c 66 2e 70 69 63 6b 5f 66 69 6c on.clicked.connect(self.pick_fil
1f200 65 5f 74 6f 5f 69 6d 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 67 72 69 64 2e 61 64 64 57 69 64 e_to_import).........grid.addWid
1f220 67 65 74 28 73 65 6c 66 2e 5f 72 61 64 69 6f 5f 66 69 6c 65 2c 20 31 2c 20 30 29 0a 20 20 20 20 get(self._radio_file,.1,.0).....
1f240 20 20 20 20 67 72 69 64 2e 61 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 5f 69 6e 70 75 74 5f 66 ....grid.addWidget(self._input_f
1f260 69 6c 65 5f 65 64 69 74 2c 20 31 2c 20 31 29 0a 20 20 20 20 20 20 20 20 67 72 69 64 2e 61 64 64 ile_edit,.1,.1).........grid.add
1f280 57 69 64 67 65 74 28 70 69 63 6b 5f 62 75 74 74 6f 6e 2c 20 31 2c 20 32 29 0a 20 20 20 20 20 20 Widget(pick_button,.1,.2).......
1f2a0 20 20 67 72 6f 75 70 5f 62 6f 78 2e 73 65 74 4c 61 79 6f 75 74 28 67 72 69 64 29 0a 20 20 20 20 ..group_box.setLayout(grid).....
1f2c0 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 61 76 65 5f 6c 61 79 6f 75 74 20 3d 20 51 48 42 6f 78 .............save_layout.=.QHBox
1f2e0 4c 61 79 6f 75 74 28 29 0a 20 20 20 20 20 20 20 20 6c 62 6c 5f 66 69 6c 65 6e 61 6d 65 20 3d 20 Layout().........lbl_filename.=.
1f300 51 4c 61 62 65 6c 28 5f 28 27 26 53 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 3a 27 29 2c 20 QLabel(_('&Save.as.filename:'),.
1f320 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 6c 62 6c 5f 66 69 6c 65 6e 61 6d 65 2e 73 65 74 4d 69 self).........lbl_filename.setMi
1f340 6e 69 6d 75 6d 53 69 7a 65 28 31 35 35 2c 20 30 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f nimumSize(155,.0).........self._
1f360 73 61 76 65 5f 61 73 5f 65 64 69 74 20 3d 20 51 4c 69 6e 65 45 64 69 74 28 27 27 2c 20 73 65 6c save_as_edit.=.QLineEdit('',.sel
1f380 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 61 76 65 5f 61 73 5f 65 64 69 74 2e 73 65 f).........self._save_as_edit.se
1f3a0 74 4d 69 6e 69 6d 75 6d 53 69 7a 65 28 32 30 30 2c 20 30 29 0a 20 20 20 20 20 20 20 20 6c 62 6c tMinimumSize(200,.0).........lbl
1f3c0 5f 66 69 6c 65 6e 61 6d 65 2e 73 65 74 42 75 64 64 79 28 73 65 6c 66 2e 5f 73 61 76 65 5f 61 73 _filename.setBuddy(self._save_as
1f3e0 5f 65 64 69 74 29 0a 20 20 20 20 20 20 20 20 6c 62 6c 5f 65 78 74 20 3d 20 51 4c 61 62 65 6c 28 _edit).........lbl_ext.=.QLabel(
1f400 27 2e 70 6e 67 27 2c 20 73 65 6c 66 29 0a 20 20 20 20 20 20 20 20 73 61 76 65 5f 6c 61 79 6f 75 '.png',.self).........save_layou
1f420 74 2e 61 64 64 57 69 64 67 65 74 28 6c 62 6c 5f 66 69 6c 65 6e 61 6d 65 2c 20 30 2c 20 51 74 2e t.addWidget(lbl_filename,.0,.Qt.
1f440 41 6c 69 67 6e 4c 65 66 74 29 0a 20 20 20 20 20 20 20 20 73 61 76 65 5f 6c 61 79 6f 75 74 2e 61 AlignLeft).........save_layout.a
1f460 64 64 57 69 64 67 65 74 28 73 65 6c 66 2e 5f 73 61 76 65 5f 61 73 5f 65 64 69 74 2c 20 30 2c 20 ddWidget(self._save_as_edit,.0,.
1f480 51 74 2e 41 6c 69 67 6e 4c 65 66 74 29 0a 20 20 20 20 20 20 20 20 73 61 76 65 5f 6c 61 79 6f 75 Qt.AlignLeft).........save_layou
1f4a0 74 2e 61 64 64 57 69 64 67 65 74 28 6c 62 6c 5f 65 78 74 2c 20 31 2c 20 51 74 2e 41 6c 69 67 6e t.addWidget(lbl_ext,.1,.Qt.Align
1f4c0 4c 65 66 74 29 0a 20 20 20 20 20 20 20 20 76 2e 61 64 64 4c 61 79 6f 75 74 28 73 61 76 65 5f 6c Left).........v.addLayout(save_l
1f4e0 61 79 6f 75 74 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 76 2e 61 64 64 57 69 64 ayout)..................v.addWid
1f500 67 65 74 28 73 65 6c 66 2e 62 62 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 73 69 7a 65 get(self.bb).........self.resize
1f520 28 73 65 6c 66 2e 73 69 7a 65 48 69 6e 74 28 29 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f (self.sizeHint()).........self._
1f540 77 65 62 5f 64 6f 6d 61 69 6e 5f 65 64 69 74 2e 73 65 74 46 6f 63 75 73 28 29 0a 20 20 20 20 20 web_domain_edit.setFocus()......
1f560 20 20 20 73 65 6c 66 2e 6e 65 77 5f 69 6d 61 67 65 5f 6e 61 6d 65 20 3d 20 4e 6f 6e 65 0a 20 20 ...self.new_image_name.=.None...
1f580 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 69 6d 61 67 65 5f 6e .......@property.....def.image_n
1f5a0 61 6d 65 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ame(self).->.str:.........return
1f5c0 20 73 65 6c 66 2e 6e 65 77 5f 69 6d 61 67 65 5f 6e 61 6d 65 0a 20 20 20 20 0a 20 20 20 20 64 65 .self.new_image_name..........de
1f5e0 66 20 70 69 63 6b 5f 66 69 6c 65 5f 74 6f 5f 69 6d 70 6f 72 74 28 73 65 6c 66 29 3a 0a 20 20 20 f.pick_file_to_import(self):....
1f600 20 20 20 20 20 69 6d 61 67 65 73 20 3d 20 63 68 6f 6f 73 65 5f 66 69 6c 65 73 28 4e 6f 6e 65 2c .....images.=.choose_files(None,
1f620 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 6d 65 6e 75 5f 69 63 6f 6e 5f 64 69 61 .............name='menu_icon_dia
1f640 6c 6f 67 27 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 27 53 65 6c 65 63 log',.............title=_('Selec
1f660 74 20 61 20 2e 70 6e 67 20 66 69 6c 65 20 66 6f 72 20 74 68 65 20 6d 65 6e 75 20 69 63 6f 6e 27 t.a..png.file.for.the.menu.icon'
1f680 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 73 3d 5b 28 27 50 4e 47 20 49 6d ),.............filters=[('PNG.Im
1f6a0 61 67 65 20 46 69 6c 65 73 27 2c 20 5b 27 70 6e 67 27 5d 29 5d 2c 0a 20 20 20 20 20 20 20 20 20 age.Files',.['png'])],..........
1f6c0 20 20 20 61 6c 6c 5f 66 69 6c 65 73 3d 46 61 6c 73 65 2c 20 73 65 6c 65 63 74 5f 6f 6e 6c 79 5f ...all_files=False,.select_only_
1f6e0 73 69 6e 67 6c 65 5f 66 69 6c 65 3d 54 72 75 65 2c 0a 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 single_file=True,.........).....
1f700 20 20 20 20 69 66 20 6e 6f 74 20 69 6d 61 67 65 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 ....if.not.images:.............r
1f720 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 66 20 3d 20 69 6d 61 67 65 73 5b 30 5d 0a 20 20 20 20 eturn.........f.=.images[0].....
1f740 20 20 20 20 69 66 20 6e 6f 74 20 66 2e 6c 6f 77 65 72 28 29 2e 65 6e 64 73 77 69 74 68 28 27 2e ....if.not.f.lower().endswith('.
1f760 70 6e 67 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 5f png'):.............return.error_
1f780 64 69 61 6c 6f 67 28 73 65 6c 66 2c 20 5f 28 27 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d dialog(self,._('Cannot.import.im
1f7a0 61 67 65 27 29 2c 20 5f 28 27 53 6f 75 72 63 65 20 69 6d 61 67 65 20 6d 75 73 74 20 62 65 20 61 age'),._('Source.image.must.be.a
1f7c0 20 2e 70 6e 67 20 66 69 6c 65 2e 27 29 2c 20 73 68 6f 77 3d 54 72 75 65 29 0a 20 20 20 20 20 20 ..png.file.'),.show=True).......
1f7e0 20 20 73 65 6c 66 2e 5f 69 6e 70 75 74 5f 66 69 6c 65 5f 65 64 69 74 2e 73 65 74 54 65 78 74 28 ..self._input_file_edit.setText(
1f800 66 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 73 61 76 65 5f 61 73 5f 65 64 69 74 2e 73 65 f).........self._save_as_edit.se
1f820 74 54 65 78 74 28 6f 73 2e 70 61 74 68 2e 73 70 6c 69 74 65 78 74 28 6f 73 2e 70 61 74 68 2e 62 tText(os.path.splitext(os.path.b
1f840 61 73 65 6e 61 6d 65 28 66 29 29 5b 30 5d 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 72 61 asename(f))[0]).........self._ra
1f860 64 69 6f 5f 66 69 6c 65 2e 63 6c 69 63 6b 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 61 63 dio_file.click()..........def.ac
1f880 63 65 70 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 56 61 6c 69 64 61 74 65 20 61 cept(self):.........#.Validate.a
1f8a0 6c 6c 20 74 68 65 20 69 6e 70 75 74 73 0a 20 20 20 20 20 20 20 20 73 61 76 65 5f 6e 61 6d 65 20 ll.the.inputs.........save_name.
1f8c0 3d 20 73 65 6c 66 2e 5f 73 61 76 65 5f 61 73 5f 65 64 69 74 2e 74 65 78 74 28 29 2e 73 74 72 69 =.self._save_as_edit.text().stri
1f8e0 70 28 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 61 76 65 5f 6e 61 6d 65 3a 0a 20 20 p().........if.not.save_name:...
1f900 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 28 73 65 ..........return.error_dialog(se
1f920 6c 66 2c 20 5f 28 27 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 27 29 2c 20 5f 28 lf,._('Cannot.import.image'),._(
1f940 27 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 'You.must.specify.a.filename.to.
1f960 73 61 76 65 20 61 73 2e 27 29 2c 20 73 68 6f 77 3d 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 73 save.as.'),.show=True).........s
1f980 65 6c 66 2e 6e 65 77 5f 69 6d 61 67 65 5f 6e 61 6d 65 20 3d 20 6f 73 2e 70 61 74 68 2e 73 70 6c elf.new_image_name.=.os.path.spl
1f9a0 69 74 65 78 74 28 73 61 76 65 5f 6e 61 6d 65 29 5b 30 5d 20 2b 20 27 2e 70 6e 67 27 0a 20 20 20 itext(save_name)[0].+.'.png'....
1f9c0 20 20 20 20 20 69 66 20 73 61 76 65 5f 6e 61 6d 65 2e 66 69 6e 64 28 27 5c 5c 27 29 20 3e 20 2d .....if.save_name.find('\\').>.-
1f9e0 31 20 6f 72 20 73 61 76 65 5f 6e 61 6d 65 2e 66 69 6e 64 28 27 2f 27 29 20 3e 20 2d 31 3a 0a 20 1.or.save_name.find('/').>.-1:..
1fa00 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 28 73 ...........return.error_dialog(s
1fa20 65 6c 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 27 43 61 6e 6e 6f 74 20 69 elf,................._('Cannot.i
1fa40 6d 70 6f 72 74 20 69 6d 61 67 65 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f mport.image'),................._
1fa60 28 27 54 68 65 20 73 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 20 73 68 6f 75 6c 64 20 63 6f ('The.save.as.filename.should.co
1fa80 6e 73 69 73 74 20 6f 66 20 61 20 66 69 6c 65 6e 61 6d 65 20 6f 6e 6c 79 2e 27 29 2c 0a 20 20 20 nsist.of.a.filename.only.'),....
1faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 68 6f 77 3d 54 72 75 65 2c 0a 20 20 20 20 20 20 20 20 .............show=True,.........
1fac0 20 20 20 20 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6f 73 2e 70 61 74 68 2e 65 78 69 ....).........if.not.os.path.exi
1fae0 73 74 73 28 73 65 6c 66 2e 72 65 73 6f 75 72 63 65 73 5f 64 69 72 29 3a 0a 20 20 20 20 20 20 20 sts(self.resources_dir):........
1fb00 20 20 20 20 20 6f 73 2e 6d 61 6b 65 64 69 72 73 28 73 65 6c 66 2e 72 65 73 6f 75 72 63 65 73 5f .....os.makedirs(self.resources_
1fb20 64 69 72 29 0a 20 20 20 20 20 20 20 20 64 65 73 74 5f 70 61 74 68 20 3d 20 6f 73 2e 70 61 74 68 dir).........dest_path.=.os.path
1fb40 2e 6a 6f 69 6e 28 73 65 6c 66 2e 72 65 73 6f 75 72 63 65 73 5f 64 69 72 2c 20 73 65 6c 66 2e 6e .join(self.resources_dir,.self.n
1fb60 65 77 5f 69 6d 61 67 65 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 61 76 65 5f 6e ew_image_name).........if.save_n
1fb80 61 6d 65 20 69 6e 20 73 65 6c 66 2e 65 78 69 73 74 69 6e 67 5f 69 6d 61 67 65 73 20 6f 72 20 6f ame.in.self.existing_images.or.o
1fba0 73 2e 70 61 74 68 2e 65 78 69 73 74 73 28 64 65 73 74 5f 70 61 74 68 29 3a 0a 20 20 20 20 20 20 s.path.exists(dest_path):.......
1fbc0 20 20 20 20 20 20 69 66 20 6e 6f 74 20 71 75 65 73 74 69 6f 6e 5f 64 69 61 6c 6f 67 28 73 65 6c ......if.not.question_dialog(sel
1fbe0 66 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 27 41 72 65 20 79 6f 75 20 73 75 f,................._('Are.you.su
1fc00 72 65 3f 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5f 28 27 41 6e 20 69 6d 61 re?'),................._('An.ima
1fc20 67 65 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 ge.with.this.name.already.exists
1fc40 20 2d 20 6f 76 65 72 77 72 69 74 65 20 69 74 3f 27 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 .-.overwrite.it?'),.............
1fc60 20 20 20 20 73 68 6f 77 5f 63 6f 70 79 5f 62 75 74 74 6f 6e 3d 46 61 6c 73 65 2c 0a 20 20 20 20 ....show_copy_button=False,.....
1fc80 20 20 20 20 20 20 20 20 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 ........):.................retur
1fca0 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 72 61 64 69 n..................if.self._radi
1fcc0 6f 5f 77 65 62 2e 69 73 43 68 65 63 6b 65 64 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 o_web.isChecked():.............t
1fce0 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 2e ry:.................from.urllib.
1fd00 72 65 71 75 65 73 74 20 69 6d 70 6f 72 74 20 75 72 6c 72 65 74 72 69 65 76 65 0a 20 20 20 20 20 request.import.urlretrieve......
1fd20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 49 6d 70 6f 72 74 45 72 72 6f 72 3a 0a 20 20 20 20 20 .......except.ImportError:......
1fd40 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 20 75 72 6c 6c 69 62 20 69 6d 70 6f 72 74 20 75 72 ...........from.urllib.import.ur
1fd60 6c 72 65 74 72 69 65 76 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 6d 61 69 6e 20 3d 20 73 lretrieve.............domain.=.s
1fd80 65 6c 66 2e 5f 77 65 62 5f 64 6f 6d 61 69 6e 5f 65 64 69 74 2e 74 65 78 74 28 29 2e 73 74 72 69 elf._web_domain_edit.text().stri
1fda0 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 64 6f 6d 61 69 6e 3a 0a 20 p().............if.not.domain:..
1fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 5f 64 69 61 6c ...............return.error_dial
1fde0 6f 67 28 73 65 6c 66 2c 20 5f 28 27 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 27 og(self,._('Cannot.import.image'
1fe00 29 2c 20 5f 28 27 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 77 65 62 20 64 6f 6d ),._('You.must.specify.a.web.dom
1fe20 61 69 6e 20 75 72 6c 27 29 2c 20 73 68 6f 77 3d 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 ain.url'),.show=True)...........
1fe40 20 20 75 72 6c 20 3d 20 27 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6f 6f 67 6c 65 2e 63 6f 6d 2f 73 ..url.=.'http://www.google.com/s
1fe60 32 2f 66 61 76 69 63 6f 6e 73 3f 64 6f 6d 61 69 6e 3d 27 20 2b 20 64 6f 6d 61 69 6e 0a 20 20 20 2/favicons?domain='.+.domain....
1fe80 20 20 20 20 20 20 20 20 20 75 72 6c 72 65 74 72 69 65 76 65 28 75 72 6c 2c 20 64 65 73 74 5f 70 .........urlretrieve(url,.dest_p
1fea0 61 74 68 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ath).........else:.............s
1fec0 6f 75 72 63 65 5f 66 69 6c 65 5f 70 61 74 68 20 3d 20 73 65 6c 66 2e 5f 69 6e 70 75 74 5f 66 69 ource_file_path.=.self._input_fi
1fee0 6c 65 5f 65 64 69 74 2e 74 65 78 74 28 29 2e 73 74 72 69 70 28 29 0a 20 20 20 20 20 20 20 20 20 le_edit.text().strip()..........
1ff00 20 20 20 69 66 20 6e 6f 74 20 73 6f 75 72 63 65 5f 66 69 6c 65 5f 70 61 74 68 3a 0a 20 20 20 20 ...if.not.source_file_path:.....
1ff20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 28 ............return.error_dialog(
1ff40 73 65 6c 66 2c 20 5f 28 27 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 27 29 2c 20 self,._('Cannot.import.image'),.
1ff60 5f 28 27 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 73 6f 75 72 63 65 20 66 69 6c _('You.must.specify.a.source.fil
1ff80 65 2e 27 29 2c 20 73 68 6f 77 3d 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 e.'),.show=True).............if.
1ffa0 6e 6f 74 20 73 6f 75 72 63 65 5f 66 69 6c 65 5f 70 61 74 68 2e 6c 6f 77 65 72 28 29 2e 65 6e 64 not.source_file_path.lower().end
1ffc0 73 77 69 74 68 28 27 2e 70 6e 67 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 swith('.png'):.................r
1ffe0 65 74 75 72 6e 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 28 73 65 6c 66 2c 20 5f 28 27 43 61 6e 6e eturn.error_dialog(self,._('Cann
20000 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 27 29 2c 20 5f 28 27 53 6f 75 72 63 65 20 69 6d 61 ot.import.image'),._('Source.ima
20020 67 65 20 6d 75 73 74 20 62 65 20 61 20 2e 70 6e 67 20 66 69 6c 65 2e 27 29 2c 20 73 68 6f 77 3d ge.must.be.a..png.file.'),.show=
20040 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 6f 73 2e 70 61 74 68 True).............if.not.os.path
20060 2e 65 78 69 73 74 73 28 73 6f 75 72 63 65 5f 66 69 6c 65 5f 70 61 74 68 29 3a 0a 20 20 20 20 20 .exists(source_file_path):......
20080 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 5f 64 69 61 6c 6f 67 28 73 ...........return.error_dialog(s
200a0 65 6c 66 2c 20 5f 28 27 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 27 29 2c 20 5f elf,._('Cannot.import.image'),._
200c0 28 27 53 6f 75 72 63 65 20 69 6d 61 67 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 21 27 29 ('Source.image.does.not.exist!')
200e0 2c 20 73 68 6f 77 3d 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 68 75 74 69 6c 2e ,.show=True).............shutil.
20100 63 6f 70 79 66 69 6c 65 28 73 6f 75 72 63 65 5f 66 69 6c 65 5f 70 61 74 68 2c 20 64 65 73 74 5f copyfile(source_file_path,.dest_
20120 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 2e 61 63 63 65 70 74 28 73 65 6c 66 path).........Dialog.accept(self
20140 29 0a 0a 0a 64 65 66 20 70 69 63 6b 5f 61 72 63 68 69 76 65 5f 74 6f 5f 69 6d 70 6f 72 74 28 70 )...def.pick_archive_to_import(p
20160 61 72 65 6e 74 3d 4e 6f 6e 65 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 61 72 63 68 69 76 65 73 arent=None).->.str:.....archives
20180 20 3d 20 63 68 6f 6f 73 65 5f 66 69 6c 65 73 28 70 61 72 65 6e 74 20 6f 72 20 47 55 49 2c 0a 20 .=.choose_files(parent.or.GUI,..
201a0 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 6f 77 69 70 20 61 72 63 68 69 76 65 20 64 69 61 6c 6f 67 .......name='owip.archive.dialog
201c0 27 2c 0a 20 20 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 27 53 65 6c 65 63 74 20 61 20 5a 49 50 ',.........title=_('Select.a.ZIP
201e0 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 27 29 2c 0a 20 20 .archive.file.to.import...'),...
20200 20 20 20 20 20 20 66 69 6c 74 65 72 73 3d 5b 28 27 4f 57 49 50 20 46 69 6c 65 73 27 2c 20 5b 27 ......filters=[('OWIP.Files',.['
20220 6f 77 69 70 27 2c 27 6f 77 69 70 2e 7a 69 70 27 5d 29 2c 20 28 27 5a 49 50 20 46 69 6c 65 73 27 owip','owip.zip']),.('ZIP.Files'
20240 2c 20 5b 27 6f 77 69 70 27 2c 27 7a 69 70 27 5d 29 5d 2c 0a 20 20 20 20 20 20 20 20 61 6c 6c 5f ,.['owip','zip'])],.........all_
20260 66 69 6c 65 73 3d 46 61 6c 73 65 2c 20 73 65 6c 65 63 74 5f 6f 6e 6c 79 5f 73 69 6e 67 6c 65 5f files=False,.select_only_single_
20280 66 69 6c 65 3d 54 72 75 65 2c 0a 20 20 20 20 29 0a 20 20 20 20 69 66 20 6e 6f 74 20 61 72 63 68 file=True,.....).....if.not.arch
202a0 69 76 65 73 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 72 65 ives:.........return.None.....re
202c0 74 75 72 6e 20 61 72 63 68 69 76 65 73 5b 30 5d 0a 0a 0a 64 65 66 20 70 69 63 6b 5f 61 72 63 68 turn.archives[0]...def.pick_arch
202e0 69 76 65 5f 74 6f 5f 65 78 70 6f 72 74 28 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 20 2d 3e 20 73 74 ive_to_export(parent=None).->.st
20300 72 3a 0a 20 20 20 20 66 64 20 3d 20 46 69 6c 65 44 69 61 6c 6f 67 28 70 61 72 65 6e 74 3d 70 61 r:.....fd.=.FileDialog(parent=pa
20320 72 65 6e 74 20 6f 72 20 47 55 49 2c 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 6f 77 69 70 20 rent.or.GUI,.........name='owip.
20340 61 72 63 68 69 76 65 20 64 69 61 6c 6f 67 27 2c 0a 20 20 20 20 20 20 20 20 74 69 74 6c 65 3d 5f archive.dialog',.........title=_
20360 28 27 53 61 76 65 20 5a 49 50 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 61 73 e2 80 a6 27 29 2c ('Save.ZIP.archive.file.as...'),
20380 0a 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 73 3d 5b 28 27 4f 57 49 50 20 46 69 6c 65 73 27 2c .........filters=[('OWIP.Files',
203a0 20 5b 27 6f 77 69 70 2e 7a 69 70 27 5d 29 2c 20 28 27 5a 49 50 20 46 69 6c 65 73 27 2c 20 5b 27 .['owip.zip']),.('ZIP.Files',.['
203c0 7a 69 70 27 5d 29 5d 2c 0a 20 20 20 20 20 20 20 20 61 64 64 5f 61 6c 6c 5f 66 69 6c 65 73 5f 66 zip'])],.........add_all_files_f
203e0 69 6c 74 65 72 3d 46 61 6c 73 65 2c 20 6d 6f 64 65 3d 51 46 69 6c 65 44 69 61 6c 6f 67 2e 46 69 ilter=False,.mode=QFileDialog.Fi
20400 6c 65 4d 6f 64 65 2e 41 6e 79 46 69 6c 65 2c 0a 20 20 20 20 29 0a 20 20 20 20 66 64 2e 73 65 74 leMode.AnyFile,.....).....fd.set
20420 50 61 72 65 6e 74 28 4e 6f 6e 65 29 0a 20 20 20 20 69 66 20 6e 6f 74 20 66 64 2e 61 63 63 65 70 Parent(None).....if.not.fd.accep
20440 74 65 64 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 72 65 74 ted:.........return.None.....ret
20460 75 72 6e 20 66 64 2e 67 65 74 5f 66 69 6c 65 73 28 29 5b 30 5d 0a 0a 0a 64 65 66 20 70 69 63 6b urn.fd.get_files()[0]...def.pick
20480 5f 6a 73 6f 6e 5f 74 6f 5f 69 6d 70 6f 72 74 28 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 20 2d 3e 20 _json_to_import(parent=None).->.
204a0 73 74 72 3a 0a 20 20 20 20 61 72 63 68 69 76 65 73 20 3d 20 63 68 6f 6f 73 65 5f 66 69 6c 65 73 str:.....archives.=.choose_files
204c0 28 70 61 72 65 6e 74 20 6f 72 20 47 55 49 2c 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 6a 73 (parent.or.GUI,.........name='js
204e0 6f 6e 20 64 69 61 6c 6f 67 27 2c 0a 20 20 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 27 53 65 6c on.dialog',.........title=_('Sel
20500 65 63 74 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 27 29 2c 0a ect.a.JSON.file.to.import...'),.
20520 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 73 3d 5b 28 27 4a 53 4f 4e 20 46 69 6c 65 73 27 2c 20 ........filters=[('JSON.Files',.
20540 5b 27 6a 73 6f 6e 27 5d 29 5d 2c 0a 20 20 20 20 20 20 20 20 61 6c 6c 5f 66 69 6c 65 73 3d 46 61 ['json'])],.........all_files=Fa
20560 6c 73 65 2c 20 73 65 6c 65 63 74 5f 6f 6e 6c 79 5f 73 69 6e 67 6c 65 5f 66 69 6c 65 3d 54 72 75 lse,.select_only_single_file=Tru
20580 65 2c 0a 20 20 20 20 29 0a 20 20 20 20 69 66 20 6e 6f 74 20 61 72 63 68 69 76 65 73 3a 0a 20 20 e,.....).....if.not.archives:...
205a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 72 65 74 75 72 6e 20 61 72 63 ......return.None.....return.arc
205c0 68 69 76 65 73 5b 30 5d 0a 0a 0a 64 65 66 20 70 69 63 6b 5f 6a 73 6f 6e 5f 74 6f 5f 65 78 70 6f hives[0]...def.pick_json_to_expo
205e0 72 74 28 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 66 64 20 3d rt(parent=None).->.str:.....fd.=
20600 20 46 69 6c 65 44 69 61 6c 6f 67 28 70 61 72 65 6e 74 3d 70 61 72 65 6e 74 20 6f 72 20 47 55 49 .FileDialog(parent=parent.or.GUI
20620 2c 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 3d 27 6a 73 6f 6e 20 64 69 61 6c 6f 67 27 2c 0a 20 20 ,.........name='json.dialog',...
20640 20 20 20 20 20 20 74 69 74 6c 65 3d 5f 28 27 53 61 76 65 20 74 68 65 20 4a 53 4f 4e 20 66 69 6c ......title=_('Save.the.JSON.fil
20660 65 20 61 73 e2 80 a6 27 29 2c 0a 20 20 20 20 20 20 20 20 66 69 6c 74 65 72 73 3d 5b 28 27 4a 53 e.as...'),.........filters=[('JS
20680 4f 4e 20 46 69 6c 65 73 27 2c 20 5b 27 6a 73 6f 6e 27 5d 29 5d 2c 0a 20 20 20 20 20 20 20 20 61 ON.Files',.['json'])],.........a
206a0 64 64 5f 61 6c 6c 5f 66 69 6c 65 73 5f 66 69 6c 74 65 72 3d 46 61 6c 73 65 2c 20 6d 6f 64 65 3d dd_all_files_filter=False,.mode=
206c0 51 46 69 6c 65 44 69 61 6c 6f 67 2e 46 69 6c 65 4d 6f 64 65 2e 41 6e 79 46 69 6c 65 2c 0a 20 20 QFileDialog.FileMode.AnyFile,...
206e0 20 20 29 0a 20 20 20 20 66 64 2e 73 65 74 50 61 72 65 6e 74 28 4e 6f 6e 65 29 0a 20 20 20 20 69 ..).....fd.setParent(None).....i
20700 66 20 6e 6f 74 20 66 64 2e 61 63 63 65 70 74 65 64 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 f.not.fd.accepted:.........retur
20720 6e 20 4e 6f 6e 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 64 2e 67 65 74 5f 66 69 6c 65 73 28 29 n.None.....return.fd.get_files()
20740 5b 30 5d 0a 0a 0a 64 65 66 20 63 75 73 74 6f 6d 5f 65 78 63 65 70 74 69 6f 6e 5f 64 69 61 6c 6f [0]...def.custom_exception_dialo
20760 67 28 65 78 63 65 70 74 69 6f 6e 3a 20 45 72 72 6f 72 2c 20 61 64 64 69 74 69 6f 6e 61 6c 5f 6d g(exception:.Error,.additional_m
20780 73 67 3a 20 73 74 72 3d 4e 6f 6e 65 2c 20 74 69 74 6c 65 3a 20 73 74 72 3d 4e 6f 6e 65 2c 20 73 sg:.str=None,.title:.str=None,.s
207a0 68 6f 77 5f 64 65 74 61 69 6c 3d 54 72 75 65 2c 20 70 61 72 65 6e 74 3d 4e 6f 6e 65 29 3a 0a 20 how_detail=True,.parent=None):..
207c0 20 20 20 0a 20 20 20 20 69 6d 70 6f 72 74 20 74 72 61 63 65 62 61 63 6b 0a 20 20 20 20 0a 20 20 ........import.traceback........
207e0 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 20 69 6d 70 6f 72 74 20 66 6f 72 63 65 5f 75 6e 69 63 ..from.calibre.import.force_unic
20800 6f 64 65 2c 20 70 72 65 70 61 72 65 5f 73 74 72 69 6e 67 5f 66 6f 72 5f 78 6d 6c 2c 20 70 72 69 ode,.prepare_string_for_xml,.pri
20820 6e 74 73 0a 20 20 20 20 66 72 6f 6d 20 70 6f 6c 79 67 6c 6f 74 2e 69 6f 20 69 6d 70 6f 72 74 20 nts.....from.polyglot.io.import.
20840 50 6f 6c 79 67 6c 6f 74 53 74 72 69 6e 67 49 4f 0a 20 20 20 20 0a 20 20 20 20 73 69 6f 20 3d 20 PolyglotStringIO..........sio.=.
20860 50 6f 6c 79 67 6c 6f 74 53 74 72 69 6e 67 49 4f 28 65 72 72 6f 72 73 3d 27 72 65 70 6c 61 63 65 PolyglotStringIO(errors='replace
20880 27 29 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 ').....try:.........from.calibre
208a0 2e 64 65 62 75 67 20 69 6d 70 6f 72 74 20 70 72 69 6e 74 5f 62 61 73 69 63 5f 64 65 62 75 67 5f .debug.import.print_basic_debug_
208c0 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 5f 62 61 73 69 63 5f 64 65 62 75 67 5f 69 info.........print_basic_debug_i
208e0 6e 66 6f 28 6f 75 74 3d 73 69 6f 29 0a 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 nfo(out=sio).....except:........
20900 20 70 61 73 73 0a 20 20 20 20 74 72 61 63 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 65 70 74 .pass.....traceback.print_except
20920 69 6f 6e 28 65 78 63 65 70 74 69 6f 6e 2e 5f 5f 63 6c 61 73 73 5f 5f 2c 20 65 78 63 65 70 74 69 ion(exception.__class__,.excepti
20940 6f 6e 2c 20 65 78 63 65 70 74 69 6f 6e 2e 5f 5f 74 72 61 63 65 62 61 63 6b 5f 5f 2c 20 66 69 6c on,.exception.__traceback__,.fil
20960 65 3d 73 69 6f 29 0a 20 20 20 20 69 66 20 67 65 74 61 74 74 72 28 65 78 63 65 70 74 69 6f 6e 2c e=sio).....if.getattr(exception,
20980 20 27 6c 6f 63 6b 69 6e 67 5f 64 65 62 75 67 5f 6d 73 67 27 2c 20 4e 6f 6e 65 29 3a 0a 20 20 20 .'locking_debug_msg',.None):....
209a0 20 20 20 20 20 70 72 69 6e 74 73 28 65 78 63 65 70 74 69 6f 6e 2e 6c 6f 63 6b 69 6e 67 5f 64 65 .....prints(exception.locking_de
209c0 62 75 67 5f 6d 73 67 2c 20 66 69 6c 65 3d 73 69 6f 29 0a 20 20 20 20 66 65 20 3d 20 73 69 6f 2e bug_msg,.file=sio).....fe.=.sio.
209e0 67 65 74 76 61 6c 75 65 28 29 0a 20 20 20 20 70 72 69 6e 74 73 28 66 65 2c 20 66 69 6c 65 3d 73 getvalue().....prints(fe,.file=s
20a00 79 73 2e 73 74 64 65 72 72 29 0a 20 20 20 20 66 65 20 3d 20 66 6f 72 63 65 5f 75 6e 69 63 6f 64 ys.stderr).....fe.=.force_unicod
20a20 65 28 66 65 29 0a 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 69 66 20 67 65 74 61 74 74 e(fe).....try:.........if.getatt
20a40 72 28 47 55 49 2c 20 27 73 68 6f 77 5f 70 6f 73 73 69 62 6c 65 5f 73 68 61 72 69 6e 67 5f 76 69 r(GUI,.'show_possible_sharing_vi
20a60 6f 6c 61 74 69 6f 6e 27 2c 20 6c 61 6d 62 64 61 20 2a 61 3a 20 4e 6f 6e 65 29 28 65 78 63 65 70 olation',.lambda.*a:.None)(excep
20a80 74 69 6f 6e 2c 20 64 65 74 5f 6d 73 67 3d 66 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 tion,.det_msg=fe):.............r
20aa0 65 74 75 72 6e 0a 20 20 20 20 65 78 63 65 70 74 20 45 78 63 65 70 74 69 6f 6e 3a 0a 20 20 20 20 eturn.....except.Exception:.....
20ac0 20 20 20 20 74 72 61 63 65 62 61 63 6b 2e 70 72 69 6e 74 5f 65 78 63 28 29 0a 20 20 20 20 0a 20 ....traceback.print_exc().......
20ae0 20 20 20 6d 73 67 20 3d 20 5b 5d 0a 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 27 3c 73 70 61 ...msg.=.[].....msg.append('<spa
20b00 6e 3e 27 20 2b 20 70 72 65 70 61 72 65 5f 73 74 72 69 6e 67 5f 66 6f 72 5f 78 6d 6c 28 0a 20 20 n>'.+.prepare_string_for_xml(...
20b20 20 20 20 20 20 20 5f 28 27 54 68 65 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 6c 75 67 69 ......_('The.{PLUGIN_NAME}.plugi
20b40 6e 20 68 61 73 20 65 6e 63 6f 75 6e 74 65 72 20 61 20 75 6e 68 61 6e 64 6c 65 64 20 65 78 63 65 n.has.encounter.a.unhandled.exce
20b60 70 74 69 6f 6e 2e 27 29 2e 66 6f 72 6d 61 74 28 50 4c 55 47 49 4e 5f 4e 41 4d 45 3d 50 4c 55 47 ption.').format(PLUGIN_NAME=PLUG
20b80 49 4e 5f 4e 41 4d 45 29 0a 20 20 20 20 29 29 0a 20 20 20 20 69 66 20 61 64 64 69 74 69 6f 6e 61 IN_NAME).....)).....if.additiona
20ba0 6c 5f 6d 73 67 3a 0a 20 20 20 20 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 61 64 64 69 74 69 l_msg:.........msg.append(additi
20bc0 6f 6e 61 6c 5f 6d 73 67 29 0a 20 20 20 20 69 66 20 65 78 63 65 70 74 69 6f 6e 3a 0a 20 20 20 20 onal_msg).....if.exception:.....
20be0 20 20 20 20 6d 73 67 2e 61 70 70 65 6e 64 28 66 27 3c 62 3e 7b 65 78 63 65 70 74 69 6f 6e 2e 5f ....msg.append(f'<b>{exception._
20c00 5f 63 6c 61 73 73 5f 5f 2e 5f 5f 6e 61 6d 65 5f 5f 3a 73 7d 3c 2f 62 3e 3a 20 27 20 2b 20 70 72 _class__.__name__:s}</b>:.'.+.pr
20c20 65 70 61 72 65 5f 73 74 72 69 6e 67 5f 66 6f 72 5f 78 6d 6c 28 73 74 72 28 65 78 63 65 70 74 69 epare_string_for_xml(str(excepti
20c40 6f 6e 29 29 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 73 68 6f 77 5f 64 65 74 61 69 6c 3a 0a 20 on)))..........if.show_detail:..
20c60 20 20 20 20 20 20 20 64 65 74 5f 6d 73 67 3d 66 65 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 .......det_msg=fe.....else:.....
20c80 20 20 20 20 64 65 74 5f 6d 73 67 3d 4e 6f 6e 65 0a 20 20 20 20 0a 20 20 20 20 65 72 72 6f 72 5f ....det_msg=None..........error_
20ca0 64 69 61 6c 6f 67 28 0a 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 20 6f 72 20 47 55 49 2c 0a 20 dialog(.........parent.or.GUI,..
20cc0 20 20 20 20 20 20 20 74 69 74 6c 65 20 6f 72 20 5f 28 27 55 6e 68 61 6e 64 6c 65 64 20 65 78 63 .......title.or._('Unhandled.exc
20ce0 65 70 74 69 6f 6e 27 29 2c 0a 20 20 20 20 20 20 20 20 27 5c 6e 27 2e 6a 6f 69 6e 28 6d 73 67 29 eption'),.........'\n'.join(msg)
20d00 2e 72 65 70 6c 61 63 65 28 27 5c 6e 27 2c 20 27 3c 62 72 3e 27 29 2c 0a 20 20 20 20 20 20 20 20 .replace('\n',.'<br>'),.........
20d20 64 65 74 5f 6d 73 67 3d 64 65 74 5f 6d 73 67 2c 20 73 68 6f 77 3d 54 72 75 65 2c 0a 20 20 20 20 det_msg=det_msg,.show=True,.....
20d40 20 20 20 20 73 68 6f 77 5f 63 6f 70 79 5f 62 75 74 74 6f 6e 3d 62 6f 6f 6c 28 64 65 74 5f 6d 73 ....show_copy_button=bool(det_ms
20d60 67 29 2c 0a 20 20 20 20 29 0a 50 4b 03 04 14 00 00 00 00 00 b3 48 37 5c f8 69 b9 05 7d 4f 00 00 g),.....).PK.........H7\.i..}O..
20d80 7d 4f 00 00 18 00 00 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 5f 5f 69 6e 69 74 5f 5f 2e 70 79 }O......common_utils/__init__.py
20da0 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 #!/usr/bin/env.python..__license
20dc0 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 __...=.'GPL.v3'.__copyright__.=.
20de0 27 32 30 31 31 2c 20 47 72 61 6e 74 20 44 72 61 6b 65 20 3c 67 72 61 6e 74 2e 64 72 61 6b 65 40 '2011,.Grant.Drake.<grant.drake@
20e00 67 6d 61 69 6c 2e 63 6f 6d 3e 20 3b 20 32 30 32 32 2c 20 75 6e 5f 70 6f 67 61 7a 20 3c 75 6e 2e gmail.com>.;.2022,.un_pogaz.<un.
20e20 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a 0a 20 20 20 20 6c 6f 61 pogaz@gmail.com>'...try:.....loa
20e40 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 4e 61 6d 65 45 72 72 6f d_translations().except.NameErro
20e60 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 r:.....pass..#.load_translations
20e80 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a 0a 69 6d 70 6f 72 74 20 ().added.in.calibre.1.9..import.
20ea0 63 6f 70 79 0a 69 6d 70 6f 72 74 20 6f 73 0a 66 72 6f 6d 20 63 6f 6c 6c 65 63 74 69 6f 6e 73 2e copy.import.os.from.collections.
20ec0 61 62 63 20 69 6d 70 6f 72 74 20 49 74 65 72 61 74 6f 72 0a 66 72 6f 6d 20 66 75 6e 63 74 6f 6f abc.import.Iterator.from.functoo
20ee0 6c 73 20 69 6d 70 6f 72 74 20 6c 72 75 5f 63 61 63 68 65 0a 66 72 6f 6d 20 74 79 70 69 6e 67 20 ls.import.lru_cache.from.typing.
20f00 69 6d 70 6f 72 74 20 41 6e 79 2c 20 44 69 63 74 2c 20 49 74 65 72 61 62 6c 65 2c 20 4c 69 73 74 import.Any,.Dict,.Iterable,.List
20f20 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 75 70 6c 65 2c 20 55 6e 69 6f 6e 0a 0a 74 72 79 3a 0a 20 ,.Optional,.Tuple,.Union..try:..
20f40 20 20 20 66 72 6f 6d 20 71 74 2e 63 6f 72 65 20 69 6d 70 6f 72 74 20 51 41 70 70 6c 69 63 61 74 ...from.qt.core.import.QApplicat
20f60 69 6f 6e 2c 20 51 49 63 6f 6e 2c 20 51 50 69 78 6d 61 70 0a 65 78 63 65 70 74 20 49 6d 70 6f 72 ion,.QIcon,.QPixmap.except.Impor
20f80 74 45 72 72 6f 72 3a 0a 20 20 20 20 66 72 6f 6d 20 50 79 51 74 35 2e 51 74 20 69 6d 70 6f 72 74 tError:.....from.PyQt5.Qt.import
20fa0 20 51 41 70 70 6c 69 63 61 74 69 6f 6e 2c 20 51 49 63 6f 6e 2c 20 51 50 69 78 6d 61 70 0a 0a 66 .QApplication,.QIcon,.QPixmap..f
20fc0 72 6f 6d 20 63 61 6c 69 62 72 65 20 69 6d 70 6f 72 74 20 70 72 69 6e 74 73 0a 66 72 6f 6d 20 63 rom.calibre.import.prints.from.c
20fe0 61 6c 69 62 72 65 2e 63 6f 6e 73 74 61 6e 74 73 20 69 6d 70 6f 72 74 20 44 45 42 55 47 2c 20 69 alibre.constants.import.DEBUG,.i
21000 73 77 69 6e 64 6f 77 73 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 63 6f 6e 73 74 61 6e 74 73 20 swindows.from.calibre.constants.
21020 69 6d 70 6f 72 74 20 6e 75 6d 65 72 69 63 5f 76 65 72 73 69 6f 6e 20 61 73 20 43 41 4c 49 42 52 import.numeric_version.as.CALIBR
21040 45 5f 56 45 52 53 49 4f 4e 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 63 75 73 74 6f 6d 69 7a 65 E_VERSION.from.calibre.customize
21060 2e 75 69 20 69 6d 70 6f 72 74 20 66 69 6e 64 5f 70 6c 75 67 69 6e 0a 66 72 6f 6d 20 63 61 6c 69 .ui.import.find_plugin.from.cali
21080 62 72 65 2e 64 62 2e 6c 65 67 61 63 79 20 69 6d 70 6f 72 74 20 4c 69 62 72 61 72 79 44 61 74 61 bre.db.legacy.import.LibraryData
210a0 62 61 73 65 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 20 69 6d 70 6f 72 74 20 73 68 base.from.calibre.gui2.import.sh
210c0 6f 77 5f 72 65 73 74 61 72 74 5f 77 61 72 6e 69 6e 67 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e ow_restart_warning.from.calibre.
210e0 67 75 69 32 2e 75 69 20 69 6d 70 6f 72 74 20 4d 61 69 6e 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 gui2.ui.import.Main.from.calibre
21100 2e 75 74 69 6c 73 2e 63 6f 6e 66 69 67 20 69 6d 70 6f 72 74 20 44 79 6e 61 6d 69 63 43 6f 6e 66 .utils.config.import.DynamicConf
21120 69 67 2c 20 4a 53 4f 4e 43 6f 6e 66 69 67 2c 20 63 6f 6e 66 69 67 5f 64 69 72 0a 66 72 6f 6d 20 ig,.JSONConfig,.config_dir.from.
21140 63 61 6c 69 62 72 65 2e 75 74 69 6c 73 2e 6d 6f 6e 6f 74 6f 6e 69 63 20 69 6d 70 6f 72 74 20 6d calibre.utils.monotonic.import.m
21160 6f 6e 6f 74 6f 6e 69 63 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 75 74 69 6c 73 2e 7a 69 70 66 onotonic.from.calibre.utils.zipf
21180 69 6c 65 20 69 6d 70 6f 72 74 20 5a 69 70 46 69 6c 65 0a 0a 0a 64 65 66 20 67 65 74 5f 67 75 69 ile.import.ZipFile...def.get_gui
211a0 28 29 20 2d 3e 20 4d 61 69 6e 3a 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 ().->.Main:.....from.calibre.gui
211c0 32 2e 75 69 20 69 6d 70 6f 72 74 20 67 65 74 5f 67 75 69 0a 20 20 20 20 72 65 74 75 72 6e 20 67 2.ui.import.get_gui.....return.g
211e0 65 74 5f 67 75 69 28 29 0a 0a 0a 47 55 49 20 3d 20 67 65 74 5f 67 75 69 28 29 0a 0a 0a 64 65 66 et_gui()...GUI.=.get_gui()...def
21200 20 63 75 72 72 65 6e 74 5f 64 62 28 29 20 2d 3e 20 4c 69 62 72 61 72 79 44 61 74 61 62 61 73 65 .current_db().->.LibraryDatabase
21220 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 47 55 49 2c 27 63 75 72 72 65 6e :.....return.getattr(GUI,'curren
21240 74 5f 64 62 27 2c 20 4e 6f 6e 65 29 0a 0a 0a 50 4c 55 47 49 4e 5f 43 4c 41 53 53 45 20 3d 20 4e t_db',.None)...PLUGIN_CLASSE.=.N
21260 6f 6e 65 0a 0a 0a 64 65 66 20 67 65 74 5f 70 6c 75 67 69 6e 5f 61 74 74 72 69 62 75 74 28 6e 61 one...def.get_plugin_attribut(na
21280 6d 65 3a 20 73 74 72 2c 20 64 65 66 61 75 6c 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 27 27 27 52 me:.str,.default=None):.....'''R
212a0 65 74 72 69 65 76 65 20 61 20 61 74 74 72 69 62 75 74 20 6f 6e 20 74 68 65 20 6d 61 69 6e 20 70 etrieve.a.attribut.on.the.main.p
212c0 6c 75 67 69 6e 20 63 6c 61 73 73 27 27 27 0a 20 20 20 20 0a 20 20 20 20 67 6c 6f 62 61 6c 20 50 lugin.class'''..........global.P
212e0 4c 55 47 49 4e 5f 43 4c 41 53 53 45 0a 20 20 20 20 69 66 20 6e 6f 74 20 50 4c 55 47 49 4e 5f 43 LUGIN_CLASSE.....if.not.PLUGIN_C
21300 4c 41 53 53 45 3a 0a 20 20 20 20 20 20 20 20 69 6d 70 6f 72 74 20 69 6d 70 6f 72 74 6c 69 62 0a LASSE:.........import.importlib.
21320 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 63 75 .................from.calibre.cu
21340 73 74 6f 6d 69 7a 65 20 69 6d 70 6f 72 74 20 50 6c 75 67 69 6e 0a 20 20 20 20 20 20 20 20 0a 20 stomize.import.Plugin...........
21360 20 20 20 20 20 20 20 70 6c 75 67 69 6e 5f 63 6c 61 73 73 65 73 20 3d 20 5b 5d 0a 20 20 20 20 20 .......plugin_classes.=.[]......
21380 20 20 20 66 6f 72 20 6f 62 6a 20 69 6e 20 69 6d 70 6f 72 74 6c 69 62 2e 69 6d 70 6f 72 74 5f 6d ...for.obj.in.importlib.import_m
213a0 6f 64 75 6c 65 28 27 2e 27 2e 6a 6f 69 6e 28 5f 5f 6e 61 6d 65 5f 5f 2e 73 70 6c 69 74 28 27 2e odule('.'.join(__name__.split('.
213c0 27 29 5b 3a 2d 31 5d 29 29 2e 5f 5f 64 69 63 74 5f 5f 2e 76 61 6c 75 65 73 28 29 3a 0a 20 20 20 ')[:-1])).__dict__.values():....
213e0 20 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 6f 62 6a 2c 20 74 79 70 65 .........if.isinstance(obj,.type
21400 29 20 61 6e 64 20 69 73 73 75 62 63 6c 61 73 73 28 6f 62 6a 2c 20 50 6c 75 67 69 6e 29 20 61 6e ).and.issubclass(obj,.Plugin).an
21420 64 20 6f 62 6a 2e 6e 61 6d 65 20 21 3d 20 27 54 72 69 76 69 61 6c 20 50 6c 75 67 69 6e 27 3a 0a d.obj.name.!=.'Trivial.Plugin':.
21440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6c 75 67 69 6e 5f 63 6c 61 73 73 65 73 2e 61 ................plugin_classes.a
21460 70 70 65 6e 64 28 6f 62 6a 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 70 6c 75 67 ppend(obj)..................plug
21480 69 6e 5f 63 6c 61 73 73 65 73 2e 73 6f 72 74 28 6b 65 79 3d 6c 61 6d 62 64 61 20 63 3a 28 67 65 in_classes.sort(key=lambda.c:(ge
214a0 74 61 74 74 72 28 63 2c 20 27 5f 5f 6d 6f 64 75 6c 65 5f 5f 27 2c 20 4e 6f 6e 65 29 20 6f 72 20 tattr(c,.'__module__',.None).or.
214c0 27 27 29 2e 63 6f 75 6e 74 28 27 2e 27 29 29 0a 20 20 20 20 20 20 20 20 50 4c 55 47 49 4e 5f 43 '').count('.')).........PLUGIN_C
214e0 4c 41 53 53 45 20 3d 20 70 6c 75 67 69 6e 5f 63 6c 61 73 73 65 73 5b 30 5d 0a 20 20 20 20 0a 20 LASSE.=.plugin_classes[0].......
21500 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 50 4c 55 47 49 4e 5f 43 4c 41 53 53 45 2c ...return.getattr(PLUGIN_CLASSE,
21520 20 6e 61 6d 65 2c 20 64 65 66 61 75 6c 74 29 0a 0a 0a 52 4f 4f 54 20 3d 20 5f 5f 6e 61 6d 65 5f .name,.default)...ROOT.=.__name_
21540 5f 2e 73 70 6c 69 74 28 27 2e 27 29 5b 31 5d 0a 0a 23 20 47 6c 6f 62 61 6c 20 64 65 66 69 6e 69 _.split('.')[1]..#.Global.defini
21560 74 69 6f 6e 20 6f 66 20 6f 75 72 20 70 6c 75 67 69 6e 20 6e 61 6d 65 2e 20 55 73 65 64 20 66 6f tion.of.our.plugin.name..Used.fo
21580 72 20 63 6f 6d 6d 6f 6e 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 72 65 71 75 69 72 65 20 r.common.functions.that.require.
215a0 74 68 69 73 2e 0a 50 4c 55 47 49 4e 5f 4e 41 4d 45 20 3d 20 67 65 74 5f 70 6c 75 67 69 6e 5f 61 this..PLUGIN_NAME.=.get_plugin_a
215c0 74 74 72 69 62 75 74 28 27 6e 61 6d 65 27 2c 20 52 4f 4f 54 29 0a 50 52 45 46 53 5f 4e 41 4d 45 ttribut('name',.ROOT).PREFS_NAME
215e0 53 50 41 43 45 20 3d 20 67 65 74 5f 70 6c 75 67 69 6e 5f 61 74 74 72 69 62 75 74 28 27 50 52 45 SPACE.=.get_plugin_attribut('PRE
21600 46 53 5f 4e 41 4d 45 53 50 41 43 45 27 2c 20 52 4f 4f 54 29 0a 44 45 42 55 47 5f 50 52 45 20 3d FS_NAMESPACE',.ROOT).DEBUG_PRE.=
21620 20 67 65 74 5f 70 6c 75 67 69 6e 5f 61 74 74 72 69 62 75 74 28 27 44 45 42 55 47 5f 50 52 45 27 .get_plugin_attribut('DEBUG_PRE'
21640 2c 20 50 4c 55 47 49 4e 5f 4e 41 4d 45 29 0a 0a 23 20 50 6c 75 67 69 6e 20 69 6e 73 74 61 6e 63 ,.PLUGIN_NAME)..#.Plugin.instanc
21660 65 2e 0a 50 4c 55 47 49 4e 5f 49 4e 53 54 41 4e 43 45 20 3d 20 66 69 6e 64 5f 70 6c 75 67 69 6e e..PLUGIN_INSTANCE.=.find_plugin
21680 28 50 4c 55 47 49 4e 5f 4e 41 4d 45 29 0a 0a 42 41 53 45 5f 54 49 4d 45 20 3d 20 6d 6f 6e 6f 74 (PLUGIN_NAME)..BASE_TIME.=.monot
216a0 6f 6e 69 63 28 29 0a 0a 0a 64 65 66 20 64 65 62 75 67 5f 70 72 69 6e 74 28 2a 61 72 67 73 2c 20 onic()...def.debug_print(*args,.
216c0 2a 2a 6b 77 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 50 72 69 6e 74 20 61 20 6f 75 74 70 75 **kw):.....'''.....Print.a.outpu
216e0 74 20 61 73 73 69 67 6e 65 64 20 74 6f 20 74 68 65 20 70 6c 75 67 69 6e 0a 20 20 20 20 0a 20 20 t.assigned.to.the.plugin........
21700 20 20 2a 2a 6b 77 0a 20 20 20 20 73 65 70 3a 20 73 65 70 61 72 61 74 6f 72 20 62 65 74 77 65 65 ..**kw.....sep:.separator.betwee
21720 6e 20 65 61 63 68 20 2a 61 72 67 73 0a 20 20 20 20 65 6e 64 3a 20 65 6e 64 20 6f 66 20 6c 69 6e n.each.*args.....end:.end.of.lin
21740 65 20 63 68 61 72 61 63 74 65 72 0a 20 20 20 20 0a 20 20 20 20 70 72 65 3a 20 70 72 65 66 69 78 e.character..........pre:.prefix
21760 20 74 6f 20 74 68 65 20 70 72 69 6e 74 65 64 20 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 65 6c .to.the.printed.line..........el
21780 73 65 20 75 73 65 20 44 45 42 55 47 5f 50 52 45 20 6f 72 20 74 68 65 20 70 6c 75 67 69 6e 20 6e se.use.DEBUG_PRE.or.the.plugin.n
217a0 61 6d 65 0a 20 20 20 20 0a 20 20 20 20 66 69 6c 65 3a 20 6f 75 74 70 75 74 20 66 69 6c 65 2c 20 ame..........file:.output.file,.
217c0 65 6c 73 65 20 73 74 64 6f 75 74 0a 20 20 20 20 66 6c 75 73 68 3a 20 66 6c 75 73 68 20 62 75 66 else.stdout.....flush:.flush.buf
217e0 66 65 72 0a 20 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 69 66 20 44 45 42 55 47 3a 0a 20 fer.....'''..........if.DEBUG:..
21800 20 20 20 20 20 20 20 70 72 65 20 3d 20 6b 77 2e 67 65 74 28 27 70 72 65 27 2c 20 44 45 42 55 47 .......pre.=.kw.get('pre',.DEBUG
21820 5f 50 52 45 29 0a 20 20 20 20 20 20 20 20 74 69 6d 65 5f 66 6f 72 6d 61 74 20 3d 20 6b 77 2e 67 _PRE).........time_format.=.kw.g
21840 65 74 28 27 74 69 6d 65 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 74 69 6d 65 et('time',.None).........if.time
21860 5f 66 6f 72 6d 61 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e _format:.............if.not.isin
21880 73 74 61 6e 63 65 28 74 69 6d 65 5f 66 6f 72 6d 61 74 2c 20 73 74 72 29 3a 0a 20 20 20 20 20 20 stance(time_format,.str):.......
218a0 20 20 20 20 20 20 20 20 20 20 74 69 6d 65 5f 66 6f 72 6d 61 74 20 3d 20 27 2e 32 66 27 0a 20 20 ..........time_format.=.'.2f'...
218c0 20 20 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 ..........try:.................t
218e0 69 6d 65 5f 66 6f 72 6d 61 74 20 3d 20 28 6d 6f 6e 6f 74 6f 6e 69 63 28 29 2d 42 41 53 45 5f 54 ime_format.=.(monotonic()-BASE_T
21900 49 4d 45 29 2e 5f 5f 66 6f 72 6d 61 74 5f 5f 28 74 69 6d 65 5f 66 6f 72 6d 61 74 29 0a 20 20 20 IME).__format__(time_format)....
21920 20 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .........except:................
21940 20 74 69 6d 65 5f 66 6f 72 6d 61 74 20 3d 20 28 6d 6f 6e 6f 74 6f 6e 69 63 28 29 2d 42 41 53 45 .time_format.=.(monotonic()-BASE
21960 5f 54 49 4d 45 29 2e 5f 5f 66 6f 72 6d 61 74 5f 5f 28 27 2e 32 66 27 29 0a 20 20 20 20 20 20 20 _TIME).__format__('.2f')........
21980 20 20 20 20 20 74 69 6d 65 5f 66 6f 72 6d 61 74 20 3d 20 20 66 27 5b 7b 74 69 6d 65 5f 66 6f 72 .....time_format.=..f'[{time_for
219a0 6d 61 74 7d 5d 27 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 70 72 65 20 6f mat}]'..................if.pre.o
219c0 72 20 74 69 6d 65 5f 66 6f 72 6d 61 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 r.time_format:.............if.pr
219e0 65 20 61 6e 64 20 74 69 6d 65 5f 66 6f 72 6d 61 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 e.and.time_format:..............
21a00 20 20 20 70 72 65 20 3d 20 66 27 7b 74 69 6d 65 5f 66 6f 72 6d 61 74 7d 20 7b 70 72 65 7d 27 0a ...pre.=.f'{time_format}.{pre}'.
21a20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 72 65 3a .........................if.pre:
21a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 70 72 65 2e 65 6e 64 73 .................if.not.pre.ends
21a60 77 69 74 68 28 27 3a 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 with(':'):.....................p
21a80 72 65 20 3d 20 70 72 65 2b 27 3a 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 re.=.pre+':'.............else:..
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 20 3d 20 74 69 6d 65 5f 66 6f 72 6d 61 74 ...............pre.=.time_format
21ac0 2b 27 20 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 +'.'..........................pr
21ae0 69 6e 74 73 28 70 72 65 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 29 0a 20 20 20 20 20 20 20 20 65 ints(pre,.*args,.**kw).........e
21b00 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 2a 61 72 67 73 2c 20 2a lse:.............prints(*args,.*
21b20 2a 6b 77 29 0a 20 20 20 20 20 20 20 20 23 20 70 72 69 6e 74 73 28 44 45 42 55 47 5f 50 52 45 2c *kw).........#.prints(DEBUG_PRE,
21b40 27 5b 7b 3a 2e 32 66 7d 5d 27 2e 66 6f 72 6d 61 74 28 6d 6f 6e 6f 74 6f 6e 69 63 28 29 2d 42 41 '[{:.2f}]'.format(monotonic()-BA
21b60 53 45 5f 54 49 4d 45 29 2c 27 3a 27 2c 20 2a 61 72 67 73 2c 20 2a 2a 6b 77 29 0a 0a 0a 23 20 2d SE_TIME),':',.*args,.**kw)...#.-
21b80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
21ba0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 20 20 20 20 20 20 20 20 20 49 63 6f 6e 20 4d 61 -------------.#..........Icon.Ma
21bc0 6e 61 67 65 6d 65 6e 74 20 66 75 6e 63 74 69 6f 6e 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d nagement.functions.#.-----------
21be0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
21c00 2d 2d 2d 0a 0a 54 48 45 4d 45 5f 43 4f 4c 4f 52 20 3d 20 5b 27 27 2c 20 27 64 61 72 6b 27 2c 20 ---..THEME_COLOR.=.['',.'dark',.
21c20 27 6c 69 67 68 74 27 5d 0a 0a 0a 64 65 66 20 67 65 74 5f 74 68 65 6d 65 5f 6e 61 6d 65 28 29 20 'light']...def.get_theme_name().
21c40 2d 3e 20 73 74 72 3a 0a 20 20 20 20 27 27 27 47 65 74 20 74 68 65 20 74 68 65 6d 65 20 63 6f 6c ->.str:.....'''Get.the.theme.col
21c60 6f 72 20 6f 66 20 43 61 6c 69 62 72 65 27 27 27 0a 20 20 20 20 69 66 20 43 41 4c 49 42 52 45 5f or.of.Calibre'''.....if.CALIBRE_
21c80 56 45 52 53 49 4f 4e 20 3e 3d 20 28 36 2c 30 2c 30 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 VERSION.>=.(6,0,0):.........retu
21ca0 72 6e 20 54 48 45 4d 45 5f 43 4f 4c 4f 52 5b 31 5d 20 69 66 20 51 41 70 70 6c 69 63 61 74 69 6f rn.THEME_COLOR[1].if.QApplicatio
21cc0 6e 2e 69 6e 73 74 61 6e 63 65 28 29 2e 69 73 5f 64 61 72 6b 5f 74 68 65 6d 65 20 65 6c 73 65 20 n.instance().is_dark_theme.else.
21ce0 54 48 45 4d 45 5f 43 4f 4c 4f 52 5b 32 5d 0a 20 20 20 20 72 65 74 75 72 6e 20 54 48 45 4d 45 5f THEME_COLOR[2].....return.THEME_
21d00 43 4f 4c 4f 52 5b 30 5d 0a 0a 0a 64 65 66 20 6c 69 6e 75 78 28 70 61 74 68 3a 20 73 74 72 29 20 COLOR[0]...def.linux(path:.str).
21d20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 70 61 74 68 2e 72 65 70 6c 61 63 65 28 ->.str:.....return.path.replace(
21d40 27 5c 5c 27 2c 20 27 2f 27 29 0a 0a 0a 64 65 66 20 67 65 74 5f 69 63 6f 6e 5f 74 68 65 6d 65 64 '\\',.'/')...def.get_icon_themed
21d60 5f 6e 61 6d 65 73 28 69 63 6f 6e 5f 6e 61 6d 65 29 20 2d 3e 20 4c 69 73 74 5b 73 74 72 5d 3a 0a _names(icon_name).->.List[str]:.
21d80 20 20 20 20 23 20 69 6d 61 67 65 73 2f 3c 69 63 6f 6e 5f 6e 61 6d 65 3e 2d 66 6f 72 2d 64 61 72 ....#.images/<icon_name>-for-dar
21da0 6b 2d 74 68 65 6d 65 2e 70 6e 67 0a 20 20 20 20 23 20 69 6d 61 67 65 73 2f 64 61 72 6b 2f 3c 69 k-theme.png.....#.images/dark/<i
21dc0 63 6f 6e 5f 6e 61 6d 65 3e 2e 70 6e 67 0a 20 20 20 20 23 20 69 6d 61 67 65 73 2f 3c 69 63 6f 6e con_name>.png.....#.images/<icon
21de0 5f 6e 61 6d 65 3e 2e 70 6e 67 0a 20 20 20 20 72 73 6c 74 20 3d 20 5b 5d 0a 20 20 20 20 74 68 65 _name>.png.....rslt.=.[].....the
21e00 6d 65 5f 6e 61 6d 65 20 3d 20 67 65 74 5f 74 68 65 6d 65 5f 6e 61 6d 65 28 29 0a 20 20 20 20 69 me_name.=.get_theme_name().....i
21e20 66 20 74 68 65 6d 65 5f 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 70 61 74 68 2c 20 65 78 74 20 f.theme_name:.........path,.ext.
21e40 3d 20 6f 73 2e 70 61 74 68 2e 73 70 6c 69 74 65 78 74 28 6c 69 6e 75 78 28 69 63 6f 6e 5f 6e 61 =.os.path.splitext(linux(icon_na
21e60 6d 65 29 2e 73 74 72 69 70 28 27 2f 27 29 29 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6f me).strip('/')).........name.=.o
21e80 73 2e 70 61 74 68 2e 62 61 73 65 6e 61 6d 65 28 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 64 69 s.path.basename(path).........di
21ea0 72 20 3d 20 6f 73 2e 70 61 74 68 2e 64 69 72 6e 61 6d 65 28 70 61 74 68 29 2e 73 74 72 69 70 28 r.=.os.path.dirname(path).strip(
21ec0 27 2f 27 29 0a 20 20 20 20 20 20 20 20 72 73 6c 74 2e 61 70 70 65 6e 64 28 66 27 7b 64 69 72 7d '/').........rslt.append(f'{dir}
21ee0 2f 7b 6e 61 6d 65 7d 2d 66 6f 72 2d 7b 74 68 65 6d 65 5f 6e 61 6d 65 7d 2d 74 68 65 6d 65 7b 65 /{name}-for-{theme_name}-theme{e
21f00 78 74 7d 27 29 0a 20 20 20 20 20 20 20 20 72 73 6c 74 2e 61 70 70 65 6e 64 28 66 27 7b 64 69 72 xt}').........rslt.append(f'{dir
21f20 7d 2f 7b 74 68 65 6d 65 5f 6e 61 6d 65 7d 2f 7b 6e 61 6d 65 7d 7b 65 78 74 7d 27 29 0a 20 20 20 }/{theme_name}/{name}{ext}')....
21f40 20 0a 20 20 20 20 72 73 6c 74 2e 61 70 70 65 6e 64 28 69 63 6f 6e 5f 6e 61 6d 65 29 0a 20 20 20 ......rslt.append(icon_name)....
21f60 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 0a 0a 69 66 20 6e 6f 74 20 68 61 73 61 74 74 72 28 51 49 .return.rslt...if.not.hasattr(QI
21f80 63 6f 6e 2c 20 27 69 63 27 29 3a 0a 20 20 20 20 51 49 63 6f 6e 2e 69 63 20 3d 20 6c 61 6d 62 64 con,.'ic'):.....QIcon.ic.=.lambd
21fa0 61 20 78 3a 20 51 49 63 6f 6e 28 49 28 78 29 29 0a 0a 0a 40 6c 72 75 5f 63 61 63 68 65 28 6d 61 a.x:.QIcon(I(x))...@lru_cache(ma
21fc0 78 73 69 7a 65 3d 33 32 29 0a 64 65 66 20 67 65 74 5f 69 63 6f 6e 5f 63 61 63 68 65 64 28 69 63 xsize=32).def.get_icon_cached(ic
21fe0 6f 6e 5f 6e 61 6d 65 3a 20 73 74 72 29 20 2d 3e 20 51 49 63 6f 6e 3a 0a 20 20 20 20 23 20 73 65 on_name:.str).->.QIcon:.....#.se
22000 70 61 72 61 74 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 6e 6f 74 20 64 75 70 6c 69 63 61 74 65 parate.function.to.not.duplicate
22020 0a 20 20 20 20 23 20 43 61 6c 69 62 72 65 27 73 20 69 6d 61 67 65 20 63 61 63 68 65 0a 20 20 20 .....#.Calibre's.image.cache....
22040 20 70 69 78 6d 61 70 20 3d 20 67 65 74 5f 70 69 78 6d 61 70 28 69 63 6f 6e 5f 6e 61 6d 65 29 0a .pixmap.=.get_pixmap(icon_name).
22060 20 20 20 20 72 65 74 75 72 6e 20 51 49 63 6f 6e 28 70 69 78 6d 61 70 29 20 69 66 20 70 69 78 6d ....return.QIcon(pixmap).if.pixm
22080 61 70 20 65 6c 73 65 20 51 49 63 6f 6e 28 29 0a 0a 0a 64 65 66 20 67 65 74 5f 69 63 6f 6e 28 69 ap.else.QIcon()...def.get_icon(i
220a0 63 6f 6e 5f 6e 61 6d 65 3a 20 73 74 72 29 20 2d 3e 20 51 49 63 6f 6e 3a 0a 20 20 20 20 27 27 27 con_name:.str).->.QIcon:.....'''
220c0 0a 20 20 20 20 52 65 74 72 69 65 76 65 20 61 20 51 49 63 6f 6e 20 66 6f 72 20 74 68 65 20 6e 61 .....Retrieve.a.QIcon.for.the.na
220e0 6d 65 64 20 69 6d 61 67 65 20 66 72 6f 6d 20 74 68 65 20 7a 69 70 20 66 69 6c 65 20 69 66 20 69 med.image.from.the.zip.file.if.i
22100 74 20 65 78 69 73 74 73 2c 0a 20 20 20 20 6f 72 20 69 66 20 6e 6f 74 20 74 68 65 6e 20 66 72 6f t.exists,.....or.if.not.then.fro
22120 6d 20 43 61 6c 69 62 72 65 27 73 20 69 6d 61 67 65 20 63 61 63 68 65 2e 0a 20 20 20 20 27 27 27 m.Calibre's.image.cache......'''
22140 0a 20 20 20 20 0a 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 69 63 6f 6e 5f 6e 61 6d ..........if.isinstance(icon_nam
22160 65 2c 20 51 49 63 6f 6e 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 63 6f 6e 5f 6e e,.QIcon):.........return.icon_n
22180 61 6d 65 0a 20 20 20 20 0a 20 20 20 20 69 66 20 69 63 6f 6e 5f 6e 61 6d 65 3a 0a 20 20 20 20 20 ame..........if.icon_name:......
221a0 20 20 20 69 63 6f 6e 5f 6e 61 6d 65 20 3d 20 6c 69 6e 75 78 28 69 63 6f 6e 5f 6e 61 6d 65 29 2e ...icon_name.=.linux(icon_name).
221c0 73 74 72 69 70 28 27 2f 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 63 6f 6e 5f 6e strip('/').........if.not.icon_n
221e0 61 6d 65 2e 73 74 61 72 74 73 77 69 74 68 28 27 69 6d 61 67 65 73 2f 27 29 3a 0a 20 20 20 20 20 ame.startswith('images/'):......
22200 20 20 20 20 20 20 20 23 20 57 65 20 6b 6e 6f 77 20 74 68 69 73 20 69 73 20 64 65 66 69 6e 69 74 .......#.We.know.this.is.definit
22220 65 6c 79 20 6e 6f 74 20 61 6e 20 69 63 6f 6e 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 69 ely.not.an.icon.belonging.to.thi
22240 73 20 70 6c 75 67 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 51 49 63 6f s.plugin.............return.QIco
22260 6e 2e 69 63 28 69 63 6f 6e 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 n.ic(icon_name).................
22280 20 72 65 74 75 72 6e 20 67 65 74 5f 69 63 6f 6e 5f 63 61 63 68 65 64 28 69 63 6f 6e 5f 6e 61 6d .return.get_icon_cached(icon_nam
222a0 65 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 51 49 63 6f 6e 28 29 0a 0a 0a 64 65 66 e)..........return.QIcon()...def
222c0 20 67 65 74 5f 70 69 78 6d 61 70 28 69 63 6f 6e 5f 6e 61 6d 65 3a 20 73 74 72 29 20 2d 3e 20 51 .get_pixmap(icon_name:.str).->.Q
222e0 50 69 78 6d 61 70 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 52 65 74 72 69 65 76 65 20 61 20 51 Pixmap:.....'''.....Retrieve.a.Q
22300 50 69 78 6d 61 70 20 66 6f 72 20 74 68 65 20 6e 61 6d 65 64 20 69 6d 61 67 65 0a 20 20 20 20 41 Pixmap.for.the.named.image.....A
22320 6e 79 20 69 63 6f 6e 73 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 65 20 70 6c 75 67 69 6e ny.icons.belonging.to.the.plugin
22340 20 6d 75 73 74 20 62 65 20 70 72 65 66 69 78 65 64 20 77 69 74 68 20 27 69 6d 61 67 65 73 2f 27 .must.be.prefixed.with.'images/'
22360 0a 20 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 69 66 20 69 63 6f 6e 5f 6e 61 6d 65 3a 0a .....'''..........if.icon_name:.
22380 20 20 20 20 20 20 20 20 69 63 6f 6e 5f 6e 61 6d 65 20 3d 20 6c 69 6e 75 78 28 69 63 6f 6e 5f 6e ........icon_name.=.linux(icon_n
223a0 61 6d 65 29 2e 73 74 72 69 70 28 27 2f 27 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 ame).strip('/').................
223c0 20 64 65 66 20 66 72 6f 6d 5f 72 65 73 6f 75 72 63 65 73 28 73 65 61 72 63 68 5f 6e 61 6d 65 29 .def.from_resources(search_name)
223e0 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 77 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 :.............raw.=.None........
22400 20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 69 6e 20 67 65 74 5f 69 63 6f 6e 5f 74 68 65 6d 65 64 .....for.name.in.get_icon_themed
22420 5f 6e 61 6d 65 73 28 73 65 61 72 63 68 5f 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 _names(search_name):............
22440 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 .....try:.....................ra
22460 77 20 3d 20 49 28 6e 61 6d 65 2c 20 64 61 74 61 3d 54 72 75 65 2c 20 61 6c 6c 6f 77 5f 75 73 65 w.=.I(name,.data=True,.allow_use
22480 72 5f 6f 76 65 72 72 69 64 65 3d 54 72 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r_override=True)................
224a0 20 65 78 63 65 70 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 .except:.....................pas
224c0 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s...............................
224e0 20 20 20 69 66 20 72 61 77 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 ...if.raw:.....................r
22500 73 6c 74 20 3d 20 51 50 69 78 6d 61 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 slt.=.QPixmap().................
22520 20 20 20 20 72 73 6c 74 2e 6c 6f 61 64 46 72 6f 6d 44 61 74 61 28 72 61 77 29 0a 20 20 20 20 20 ....rslt.loadFromData(raw)......
22540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 20 20 20 20 20 ...............return.rslt......
22560 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 .......return.None..............
22580 20 20 20 20 69 66 20 6e 6f 74 20 69 63 6f 6e 5f 6e 61 6d 65 2e 73 74 61 72 74 73 77 69 74 68 28 ....if.not.icon_name.startswith(
225a0 27 69 6d 61 67 65 73 2f 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57 65 20 6b 6e 6f 'images/'):.............#.We.kno
225c0 77 20 74 68 69 73 20 69 73 20 64 65 66 69 6e 69 74 65 6c 79 20 6e 6f 74 20 61 6e 20 69 63 6f 6e w.this.is.definitely.not.an.icon
225e0 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f 20 74 68 69 73 20 70 6c 75 67 69 6e 0a 20 20 20 20 20 20 .belonging.to.this.plugin.......
22600 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 72 6f 6d 5f 72 65 73 6f 75 72 63 65 73 28 69 63 6f 6e ......return.from_resources(icon
22620 5f 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 74 65 73 74 20 75 _name)..................#.test.u
22640 73 65 72 20 6f 76 65 72 69 64 65 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 66 72 6f 6d 5f ser.overide.........rslt.=.from_
22660 72 65 73 6f 75 72 63 65 73 28 6f 73 2e 70 61 74 68 2e 6a 6f 69 6e 28 50 4c 55 47 49 4e 5f 4e 41 resources(os.path.join(PLUGIN_NA
22680 4d 45 2c 20 69 63 6f 6e 5f 6e 61 6d 65 2e 73 70 6c 69 74 28 27 2f 27 2c 20 31 29 5b 2d 31 5d 29 ME,.icon_name.split('/',.1)[-1])
226a0 29 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 72 73 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 ).........if.not.rslt:..........
226c0 20 20 20 23 20 69 6e 73 69 64 65 20 70 6c 75 67 69 6e 20 5a 49 50 0a 20 20 20 20 20 20 20 20 20 ...#.inside.plugin.ZIP..........
226e0 20 20 20 77 69 74 68 20 50 4c 55 47 49 4e 5f 52 45 53 4f 55 52 43 45 53 3a 0a 20 20 20 20 20 20 ...with.PLUGIN_RESOURCES:.......
22700 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6e 61 6d 65 20 69 6e 20 67 65 74 5f 69 63 6f 6e 5f 74 ..........for.name.in.get_icon_t
22720 68 65 6d 65 64 5f 6e 61 6d 65 73 28 69 63 6f 6e 5f 6e 61 6d 65 29 3a 0a 20 20 20 20 20 20 20 20 hemed_names(icon_name):.........
22740 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 20 69 6e 20 50 4c 55 47 49 4e 5f 52 45 ............if.name.in.PLUGIN_RE
22760 53 4f 55 52 43 45 53 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 SOURCES:........................
22780 20 72 73 6c 74 20 3d 20 51 50 69 78 6d 61 70 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .rslt.=.QPixmap()...............
227a0 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 2e 6c 6f 61 64 46 72 6f 6d 44 61 74 61 28 50 4c 55 47 ..........rslt.loadFromData(PLUG
227c0 49 4e 5f 52 45 53 4f 55 52 43 45 53 5b 6e 61 6d 65 5d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 IN_RESOURCES[name]).............
227e0 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 ............break...............
22800 20 20 20 69 66 20 72 73 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 ...if.rslt:.............return.r
22820 73 6c 74 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 0a 64 65 66 20 6c slt..........return.None...def.l
22840 6f 63 61 6c 5f 72 65 73 6f 75 72 63 65 28 2a 73 75 62 66 6f 6c 64 65 72 73 3a 20 4f 70 74 69 6f ocal_resource(*subfolders:.Optio
22860 6e 61 6c 5b 4c 69 73 74 5b 73 74 72 5d 5d 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 27 27 27 0a nal[List[str]]).->.str:.....'''.
22880 20 20 20 20 52 65 74 75 72 6e 73 20 61 20 70 61 74 68 20 74 6f 20 74 68 65 20 75 73 65 72 27 73 ....Returns.a.path.to.the.user's
228a0 20 6c 6f 63 61 6c 20 72 65 73 6f 75 72 63 65 73 20 66 6f 6c 64 65 72 0a 20 20 20 20 49 66 20 61 .local.resources.folder.....If.a
228c0 20 73 75 62 66 6f 6c 64 65 72 20 6e 61 6d 65 20 70 61 72 61 6d 65 74 65 72 20 69 73 20 73 70 65 .subfolder.name.parameter.is.spe
228e0 63 69 66 69 65 64 2c 20 61 70 70 65 6e 64 73 20 74 68 69 73 20 74 6f 20 74 68 65 20 70 61 74 68 cified,.appends.this.to.the.path
22900 0a 20 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 72 73 6c 74 20 3d 20 6f 73 2e 70 61 74 68 .....'''..........rslt.=.os.path
22920 2e 6a 6f 69 6e 28 63 6f 6e 66 69 67 5f 64 69 72 2c 20 27 72 65 73 6f 75 72 63 65 73 27 2c 20 2a .join(config_dir,.'resources',.*
22940 5b 66 2e 72 65 70 6c 61 63 65 28 27 2f 27 2c 27 2d 27 29 2e 72 65 70 6c 61 63 65 28 27 5c 5c 27 [f.replace('/','-').replace('\\'
22960 2c 27 2d 27 29 20 66 6f 72 20 66 20 69 6e 20 73 75 62 66 6f 6c 64 65 72 73 5d 29 0a 20 20 20 20 ,'-').for.f.in.subfolders]).....
22980 69 66 20 69 73 77 69 6e 64 6f 77 73 3a 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 6f 73 2e if.iswindows:.........rslt.=.os.
229a0 70 61 74 68 2e 6e 6f 72 6d 70 61 74 68 28 72 73 6c 74 29 0a 20 20 20 20 72 65 74 75 72 6e 20 6c path.normpath(rslt).....return.l
229c0 69 6e 75 78 28 72 73 6c 74 29 0a 0a 0a 6c 6f 63 61 6c 5f 72 65 73 6f 75 72 63 65 2e 49 4d 41 47 inux(rslt)...local_resource.IMAG
229e0 45 53 20 3d 20 6c 6f 63 61 6c 5f 72 65 73 6f 75 72 63 65 28 27 69 6d 61 67 65 73 27 29 2b 27 2f ES.=.local_resource('images')+'/
22a00 27 0a 0a 0a 63 6c 61 73 73 20 5a 69 70 52 65 73 6f 75 72 63 65 73 3a 0a 20 20 20 20 64 65 66 20 '...class.ZipResources:.....def.
22a20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 7a 69 70 5f 70 61 74 68 3a 20 73 74 72 29 3a 0a 20 __init__(self,.zip_path:.str):..
22a40 20 20 20 20 20 20 20 73 65 6c 66 2e 7a 69 70 5f 70 61 74 68 20 3d 20 6c 69 6e 75 78 28 7a 69 70 .......self.zip_path.=.linux(zip
22a60 5f 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 69 6e 73 74 61 6e 63 65 3a 20 5a _path).........self._instance:.Z
22a80 69 70 46 69 6c 65 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 65 65 70 ipFile.=.None.........self._deep
22aa0 3a 20 69 6e 74 20 3d 20 30 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 72 65 70 72 5f 5f 28 :.int.=.0..........def.__repr__(
22ac0 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 27 3c 7b 73 65 6c 66 2e 5f self):.........return.f'<{self._
22ae0 5f 63 6c 61 73 73 5f 5f 2e 5f 5f 6e 61 6d 65 5f 5f 7d 28 7b 73 65 6c 66 2e 7a 69 70 5f 70 61 74 _class__.__name__}({self.zip_pat
22b00 68 21 72 7d 29 3e 27 0a 20 20 20 20 0a 20 20 20 20 5f 5f 73 74 72 5f 5f 20 3d 20 5f 5f 72 65 70 h!r})>'..........__str__.=.__rep
22b20 72 5f 5f 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 6b 65 79 73 28 73 65 6c 66 29 20 2d 3e 20 54 r__..........def.keys(self).->.T
22b40 75 70 6c 65 5b 73 74 72 5d 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 75 70 6c 65 28 uple[str]:.........return.tuple(
22b60 6d 61 70 28 6c 69 6e 75 78 2c 20 73 65 6c 66 2e 69 6e 73 74 61 6e 63 65 2e 6e 61 6d 65 6c 69 73 map(linux,.self.instance.namelis
22b80 74 28 29 29 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 63 6f 6e 74 61 69 6e 73 5f 5f 28 t()))..........def.__contains__(
22ba0 73 65 6c 66 2c 20 6b 65 79 3a 20 73 74 72 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 self,.key:.str).->.bool:........
22bc0 20 72 65 74 75 72 6e 20 6b 65 79 20 69 6e 20 73 65 6c 66 2e 6b 65 79 73 28 29 0a 20 20 20 20 0a .return.key.in.self.keys()......
22be0 20 20 20 20 64 65 66 20 5f 5f 69 74 65 72 5f 5f 28 73 65 6c 66 29 20 2d 3e 20 49 74 65 72 61 74 ....def.__iter__(self).->.Iterat
22c00 6f 72 5b 73 74 72 5d 3a 0a 20 20 20 20 20 20 20 20 79 69 65 6c 64 20 66 72 6f 6d 20 73 65 6c 66 or[str]:.........yield.from.self
22c20 2e 6b 65 79 73 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f .keys()..........def.__getitem__
22c40 28 73 65 6c 66 2c 20 6b 65 79 3a 20 73 74 72 29 20 2d 3e 20 55 6e 69 6f 6e 5b 62 79 74 65 73 2c (self,.key:.str).->.Union[bytes,
22c60 20 41 6e 79 5d 3a 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 73 65 6c 66 3a 0a 20 20 20 20 20 20 .Any]:.........with.self:.......
22c80 20 20 20 20 20 20 69 66 20 6b 65 79 20 6e 6f 74 20 69 6e 20 73 65 6c 66 3a 0a 20 20 20 20 20 20 ......if.key.not.in.self:.......
22ca0 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 4b 65 79 45 72 72 6f 72 28 6b 65 79 29 0a 20 20 ..........raise.KeyError(key)...
22cc0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6c 6f 61 64 5f 6d 61 6e 79 28 ..........return.self.load_many(
22ce0 5b 6b 65 79 5d 29 5b 6b 65 79 5d 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 67 65 74 28 73 65 6c [key])[key]..........def.get(sel
22d00 66 2c 20 6b 65 79 3a 20 73 74 72 2c 20 64 65 66 61 75 6c 74 3a 20 41 6e 79 29 20 2d 3e 20 41 6e f,.key:.str,.default:.Any).->.An
22d20 79 3a 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 73 65 6c 66 3a 0a 20 20 20 20 20 20 20 20 20 20 y:.........with.self:...........
22d40 20 20 69 66 20 6b 65 79 20 6e 6f 74 20 69 6e 20 73 65 6c 66 3a 0a 20 20 20 20 20 20 20 20 20 20 ..if.key.not.in.self:...........
22d60 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 ......return.default............
22d80 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 6b 65 79 29 0a 20 20 .return.self.__getitem__(key)...
22da0 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 65 6e 74 65 72 5f 5f 28 73 65 6c 66 29 20 2d 3e 20 27 5a .......def.__enter__(self).->.'Z
22dc0 69 70 52 65 73 6f 75 72 63 65 73 27 3a 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c ipResources':.........if.not.sel
22de0 66 2e 5f 69 6e 73 74 61 6e 63 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 69 f._instance:.............self._i
22e00 6e 73 74 61 6e 63 65 20 3d 20 5a 69 70 46 69 6c 65 28 73 65 6c 66 2e 7a 69 70 5f 70 61 74 68 2c nstance.=.ZipFile(self.zip_path,
22e20 20 27 72 27 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 65 65 70 20 2b 3d 20 31 0a 20 20 .'r').........self._deep.+=.1...
22e40 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f ......return.self..........def._
22e60 5f 65 78 69 74 5f 5f 28 73 65 6c 66 2c 20 2a 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 69 66 _exit__(self,.*args):.........if
22e80 20 6e 6f 74 20 73 65 6c 66 2e 5f 69 6e 73 74 61 6e 63 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 .not.self._instance:............
22ea0 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 65 65 70 20 2d 3d 20 31 0a .return.........self._deep.-=.1.
22ec0 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 64 65 65 70 20 3e 20 30 3a 0a 20 20 20 20 20 ........if.self._deep.>.0:......
22ee0 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 65 65 70 .......return.........self._deep
22f00 20 3d 20 30 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 69 6e 73 74 61 6e 63 65 2e 63 6c 6f 73 .=.0.........self._instance.clos
22f20 65 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 69 6e 73 74 61 6e 63 65 20 3d 20 4e 6f 6e e().........self._instance.=.Non
22f40 65 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 69 6e 73 e..........@property.....def.ins
22f60 74 61 6e 63 65 28 73 65 6c 66 29 20 2d 3e 20 5a 69 70 46 69 6c 65 3a 0a 20 20 20 20 20 20 20 20 tance(self).->.ZipFile:.........
22f80 69 66 20 73 65 6c 66 2e 5f 69 6e 73 74 61 6e 63 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 if.self._instance:.............r
22fa0 65 74 75 72 6e 20 73 65 6c 66 2e 5f 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20 77 69 74 eturn.self._instance.........wit
22fc0 68 20 73 65 6c 66 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e h.self:.............return.self.
22fe0 5f 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 6c 6f 61 64 5f 6d 61 6e 79 _instance..........def.load_many
23000 28 73 65 6c 66 2c 20 6b 65 79 73 3a 20 4c 69 73 74 5b 73 74 72 5d 29 20 2d 3e 20 44 69 63 74 5b (self,.keys:.List[str]).->.Dict[
23020 73 74 72 2c 20 55 6e 69 6f 6e 5b 62 79 74 65 73 2c 20 73 74 72 5d 5d 3a 0a 20 20 20 20 20 20 20 str,.Union[bytes,.str]]:........
23040 20 72 73 6c 74 20 3d 20 7b 7d 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 73 65 6c 66 3a 0a 20 20 .rslt.=.{}.........with.self:...
23060 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 65 6e 74 72 79 20 69 6e 20 6d 61 70 28 6c 69 6e 75 78 ..........for.entry.in.map(linux
23080 2c 20 66 69 6c 74 65 72 28 4e 6f 6e 65 2c 20 6b 65 79 73 29 29 3a 0a 20 20 20 20 20 20 20 20 20 ,.filter(None,.keys)):..........
230a0 20 20 20 20 20 20 20 69 66 20 65 6e 74 72 79 20 69 6e 20 73 65 6c 66 3a 0a 20 20 20 20 20 20 20 .......if.entry.in.self:........
230c0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 20 3d 20 73 65 6c 66 2e 69 6e 73 74 61 6e 63 .............data.=.self.instanc
230e0 65 2e 72 65 61 64 28 65 6e 74 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e.read(entry)...................
23100 20 20 72 73 6c 74 5b 65 6e 74 72 79 5d 20 3d 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 72 65 74 ..rslt[entry].=.data.........ret
23120 75 72 6e 20 72 73 6c 74 0a 0a 0a 23 20 47 6c 6f 62 61 6c 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f urn.rslt...#.Global.definition.o
23140 66 20 6f 75 72 20 70 6c 75 67 69 6e 20 72 65 73 6f 75 72 63 65 73 2e 20 55 73 65 64 20 74 6f 20 f.our.plugin.resources..Used.to.
23160 73 68 61 72 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 78 78 78 41 63 74 69 6f 6e 20 61 6e 64 20 share.between.the.xxxAction.and.
23180 78 78 78 42 61 73 65 0a 23 20 63 6c 61 73 73 65 73 20 69 66 20 79 6f 75 20 6e 65 65 64 20 61 6e xxxBase.#.classes.if.you.need.an
231a0 79 20 7a 69 70 20 69 6d 61 67 65 73 20 74 6f 20 62 65 20 64 69 73 70 6c 61 79 65 64 20 6f 6e 20 y.zip.images.to.be.displayed.on.
231c0 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 64 69 61 6c 6f 67 2e 0a 50 4c 55 47 49 4e the.configuration.dialog..PLUGIN
231e0 5f 52 45 53 4f 55 52 43 45 53 20 3d 20 5a 69 70 52 65 73 6f 75 72 63 65 73 28 50 4c 55 47 49 4e _RESOURCES.=.ZipResources(PLUGIN
23200 5f 49 4e 53 54 41 4e 43 45 2e 70 6c 75 67 69 6e 5f 70 61 74 68 29 0a 77 69 74 68 20 50 4c 55 47 _INSTANCE.plugin_path).with.PLUG
23220 49 4e 5f 52 45 53 4f 55 52 43 45 53 3a 0a 20 20 20 20 66 6f 72 20 65 6e 74 72 79 20 69 6e 20 50 IN_RESOURCES:.....for.entry.in.P
23240 4c 55 47 49 4e 5f 52 45 53 4f 55 52 43 45 53 3a 0a 20 20 20 20 20 20 20 20 69 66 20 65 6e 74 72 LUGIN_RESOURCES:.........if.entr
23260 79 2e 73 74 61 72 74 73 77 69 74 68 28 27 69 6d 61 67 65 73 2f 27 29 20 61 6e 64 20 6f 73 2e 70 y.startswith('images/').and.os.p
23280 61 74 68 2e 73 70 6c 69 74 65 78 74 28 65 6e 74 72 79 29 5b 31 5d 2e 6c 6f 77 65 72 28 29 20 3d ath.splitext(entry)[1].lower().=
232a0 3d 20 27 2e 70 6e 67 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 69 63 6f 6e 28 65 =.'.png':.............get_icon(e
232c0 6e 74 72 79 29 0a 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ntry)...#.----------------------
232e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 20 20 20 20 20 ------------------------.#......
23300 20 20 20 20 20 20 20 20 20 46 75 6e 63 74 69 6f 6e 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .........Functions.#.-----------
23320 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
23340 2d 2d 2d 0a 0a 64 65 66 20 67 65 74 5f 64 61 74 65 5f 66 6f 72 6d 61 74 28 74 77 65 61 6b 5f 6e ---..def.get_date_format(tweak_n
23360 61 6d 65 3a 20 73 74 72 3d 27 67 75 69 5f 74 69 6d 65 73 74 61 6d 70 5f 64 69 73 70 6c 61 79 5f ame:.str='gui_timestamp_display_
23380 66 6f 72 6d 61 74 27 2c 20 64 65 66 61 75 6c 74 5f 66 6d 74 3a 20 4f 70 74 69 6f 6e 61 6c 5b 73 format',.default_fmt:.Optional[s
233a0 74 72 5d 3d 27 64 64 20 4d 4d 4d 20 79 79 79 79 27 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 66 tr]='dd.MMM.yyyy').->.str:.....f
233c0 72 6f 6d 20 63 61 6c 69 62 72 65 2e 75 74 69 6c 73 2e 63 6f 6e 66 69 67 20 69 6d 70 6f 72 74 20 rom.calibre.utils.config.import.
233e0 74 77 65 61 6b 73 0a 20 20 20 20 66 6f 72 6d 61 74 20 3d 20 74 77 65 61 6b 73 5b 74 77 65 61 6b tweaks.....format.=.tweaks[tweak
23400 5f 6e 61 6d 65 5d 0a 20 20 20 20 69 66 20 66 6f 72 6d 61 74 20 69 73 20 4e 6f 6e 65 3a 0a 20 20 _name].....if.format.is.None:...
23420 20 20 20 20 20 20 66 6f 72 6d 61 74 20 3d 20 64 65 66 61 75 6c 74 5f 66 6d 74 0a 20 20 20 20 72 ......format.=.default_fmt.....r
23440 65 74 75 72 6e 20 66 6f 72 6d 61 74 0a 0a 0a 64 65 66 20 74 72 75 6e 63 61 74 65 5f 74 69 74 6c eturn.format...def.truncate_titl
23460 65 28 74 69 74 6c 65 3a 20 73 74 72 2c 20 6d 61 78 5f 6c 65 6e 67 74 68 3a 20 69 6e 74 3d 37 35 e(title:.str,.max_length:.int=75
23480 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 28 74 69 74 6c 65 5b 3a 6d 61 78 ).->.str:.....return.(title[:max
234a0 5f 6c 65 6e 67 74 68 5d 20 2b 20 27 e2 80 a6 27 29 20 69 66 20 6c 65 6e 28 74 69 74 6c 65 29 20 _length].+.'...').if.len(title).
234c0 3e 20 6d 61 78 5f 6c 65 6e 67 74 68 20 65 6c 73 65 20 74 69 74 6c 65 0a 0a 0a 64 65 66 20 67 65 >.max_length.else.title...def.ge
234e0 74 5f 69 6d 61 67 65 5f 6d 61 70 28 73 75 62 64 69 72 3a 20 73 74 72 3d 4e 6f 6e 65 29 20 2d 3e t_image_map(subdir:.str=None).->
23500 20 44 69 63 74 5b 73 74 72 2c 20 51 49 63 6f 6e 5d 3a 0a 20 20 20 20 72 73 6c 74 20 3d 20 7b 7d .Dict[str,.QIcon]:.....rslt.=.{}
23520 0a 20 20 20 20 72 65 73 6f 75 72 63 65 73 5f 64 69 72 20 3d 20 6f 73 2e 70 61 74 68 2e 6a 6f 69 .....resources_dir.=.os.path.joi
23540 6e 28 63 6f 6e 66 69 67 5f 64 69 72 2c 20 27 72 65 73 6f 75 72 63 65 73 27 2c 20 27 69 6d 61 67 n(config_dir,.'resources',.'imag
23560 65 73 27 2c 20 73 75 62 64 69 72 20 6f 72 20 27 27 29 0a 20 20 20 20 69 66 20 6f 73 2e 70 61 74 es',.subdir.or.'').....if.os.pat
23580 68 2e 65 78 69 73 74 73 28 72 65 73 6f 75 72 63 65 73 5f 64 69 72 29 3a 0a 20 20 20 20 20 20 20 h.exists(resources_dir):........
235a0 20 23 20 47 65 74 20 74 68 65 20 6e 61 6d 65 73 20 6f 66 20 61 6e 79 20 2e 70 6e 67 20 69 6d 61 .#.Get.the.names.of.any..png.ima
235c0 67 65 73 20 69 6e 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 0a 20 20 20 20 20 20 20 20 66 6f ges.in.this.directory.........fo
235e0 72 20 66 20 69 6e 20 73 6f 72 74 65 64 28 6f 73 2e 6c 69 73 74 64 69 72 28 72 65 73 6f 75 72 63 r.f.in.sorted(os.listdir(resourc
23600 65 73 5f 64 69 72 29 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 66 2e 6c 6f 77 65 72 es_dir)):.............if.f.lower
23620 28 29 2e 65 6e 64 73 77 69 74 68 28 27 2e 70 6e 67 27 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ().endswith('.png'):............
23640 20 20 20 20 20 6e 61 6d 65 20 3d 20 6f 73 2e 70 61 74 68 2e 62 61 73 65 6e 61 6d 65 28 66 29 0a .....name.=.os.path.basename(f).
23660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b 6c 69 6e 75 78 28 6e 61 6d 65 29 ................rslt[linux(name)
23680 5d 20 3d 20 67 65 74 5f 69 63 6f 6e 28 6e 61 6d 65 29 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 ].=.get_icon(name)..........retu
236a0 72 6e 20 72 73 6c 74 0a 0a 0a 64 65 66 20 73 70 6c 69 74 5f 6c 6f 6e 67 5f 74 65 78 74 28 74 65 rn.rslt...def.split_long_text(te
236c0 78 74 3a 20 73 74 72 2c 20 6d 61 78 5f 6c 65 6e 67 74 68 3a 20 69 6e 74 3d 37 30 29 20 2d 3e 20 xt:.str,.max_length:.int=70).->.
236e0 4c 69 73 74 5b 73 74 72 5d 3a 0a 20 20 20 20 27 53 70 6c 69 74 20 61 20 6c 6f 6e 67 20 74 65 78 List[str]:.....'Split.a.long.tex
23700 74 20 74 6f 20 76 61 72 69 6f 75 73 20 6c 69 6e 65 73 20 77 69 74 68 20 61 20 6d 61 78 20 6c 65 t.to.various.lines.with.a.max.le
23720 6e 67 68 74 20 66 6f 72 20 65 61 63 68 20 6f 6e 65 27 0a 20 20 20 20 74 65 78 74 5f 6c 65 6e 67 nght.for.each.one'.....text_leng
23740 68 74 20 3d 20 6c 65 6e 28 74 65 78 74 29 0a 20 20 20 20 69 66 20 74 65 78 74 5f 6c 65 6e 67 68 ht.=.len(text).....if.text_lengh
23760 74 20 3c 20 6d 61 78 5f 6c 65 6e 67 74 68 2b 31 30 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 t.<.max_length+10:.........retur
23780 6e 20 5b 74 65 78 74 5d 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 70 6c 69 74 5f 74 6f 5f 73 n.[text]..........def.split_to_s
237a0 70 61 63 65 28 73 72 63 5f 74 65 78 74 3a 20 73 74 72 2c 20 6c 65 6e 74 67 68 3a 20 69 6e 74 29 pace(src_text:.str,.lentgh:.int)
237c0 20 2d 3e 20 54 75 70 6c 65 5b 73 74 72 2c 20 73 74 72 5d 3a 0a 20 20 20 20 20 20 20 20 69 66 20 .->.Tuple[str,.str]:.........if.
237e0 6c 65 6e 28 73 72 63 5f 74 65 78 74 29 20 3c 20 6c 65 6e 74 67 68 3a 0a 20 20 20 20 20 20 20 20 len(src_text).<.lentgh:.........
23800 20 20 20 20 72 65 74 75 72 6e 20 73 72 63 5f 74 65 78 74 2c 20 4e 6f 6e 65 0a 20 20 20 20 20 20 ....return.src_text,.None.......
23820 20 20 0a 20 20 20 20 20 20 20 20 65 6e 64 20 3d 20 73 72 63 5f 74 65 78 74 5b 6c 65 6e 74 67 68 ...........end.=.src_text[lentgh
23840 3a 5d 0a 20 20 20 20 20 20 20 20 69 66 20 27 20 27 20 6e 6f 74 20 69 6e 20 65 6e 64 3a 0a 20 20 :].........if.'.'.not.in.end:...
23860 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 72 63 5f 74 65 78 74 2c 20 4e 6f 6e 65 0a ..........return.src_text,.None.
23880 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 70 6c 69 74 5f 6c 65 6e 74 67 68 20 3d 20 .................split_lentgh.=.
238a0 6c 65 6e 74 67 68 20 2b 20 65 6e 64 2e 69 6e 64 65 78 28 27 20 27 29 0a 20 20 20 20 20 20 20 20 lentgh.+.end.index('.').........
238c0 72 65 74 75 72 6e 20 73 72 63 5f 74 65 78 74 5b 3a 73 70 6c 69 74 5f 6c 65 6e 74 67 68 5d 2c 20 return.src_text[:split_lentgh],.
238e0 73 72 63 5f 74 65 78 74 5b 73 70 6c 69 74 5f 6c 65 6e 74 67 68 2b 31 3a 5d 0a 20 20 20 20 0a 20 src_text[split_lentgh+1:].......
23900 20 20 20 66 6f 72 20 73 70 6c 69 74 69 6e 67 20 69 6e 20 72 61 6e 67 65 28 32 2c 20 31 31 29 3a ...for.spliting.in.range(2,.11):
23920 0a 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 5f 61 74 74 65 6d 70 74 20 3d 20 74 65 78 74 5f 6c .........length_attempt.=.text_l
23940 65 6e 67 68 74 20 2f 2f 20 73 70 6c 69 74 69 6e 67 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d enght.//.spliting.........rslt.=
23960 20 5b 5d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 61 64 64 69 6e 67 5f 6c 69 6e 65 .[]..................adding_line
23980 2c 20 6e 65 78 74 5f 6c 69 6e 65 20 3d 20 4e 6f 6e 65 2c 20 74 65 78 74 0a 20 20 20 20 20 20 20 ,.next_line.=.None,.text........
239a0 20 77 68 69 6c 65 20 6e 65 78 74 5f 6c 69 6e 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 64 .while.next_line:.............ad
239c0 64 69 6e 67 5f 6c 69 6e 65 2c 20 6e 65 78 74 5f 6c 69 6e 65 20 3d 20 73 70 6c 69 74 5f 74 6f 5f ding_line,.next_line.=.split_to_
239e0 73 70 61 63 65 28 6e 65 78 74 5f 6c 69 6e 65 2c 20 6c 65 6e 67 74 68 5f 61 74 74 65 6d 70 74 29 space(next_line,.length_attempt)
23a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 2e 61 70 70 65 6e 64 28 61 64 64 69 6e 67 5f .............rslt.append(adding_
23a20 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 74 6f 5f 6c 6f 6e 67 20 3d line)..................to_long.=
23a40 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6c 20 69 6e 20 72 73 6c 74 3a 0a 20 20 .False.........for.l.in.rslt:...
23a60 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 65 6e 28 6c 29 20 3e 20 6d 61 78 5f 6c 65 6e 67 74 68 ..........if.len(l).>.max_length
23a80 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 5f 6c 6f 6e 67 20 3d 20 54 72 75 65 :.................to_long.=.True
23aa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20 0a .................break..........
23ac0 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 74 6f 5f 6c 6f 6e 67 3a 0a 20 20 20 20 20 20 20 20 ........if.not.to_long:.........
23ae0 20 20 20 20 62 72 65 61 6b 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 0a ....break..........return.rslt..
23b00 0a 64 65 66 20 72 65 74 75 72 6e 5f 6c 69 6e 65 5f 6c 6f 6e 67 5f 74 65 78 74 28 74 65 78 74 3a .def.return_line_long_text(text:
23b20 20 73 74 72 2c 20 6d 61 78 5f 6c 65 6e 67 74 68 3a 20 69 6e 74 3d 37 30 29 20 2d 3e 20 73 74 72 .str,.max_length:.int=70).->.str
23b40 3a 0a 20 20 20 20 72 65 74 75 72 6e 20 27 5c 6e 27 2e 6a 6f 69 6e 28 73 70 6c 69 74 5f 6c 6f 6e :.....return.'\n'.join(split_lon
23b60 67 5f 74 65 78 74 28 74 65 78 74 3d 74 65 78 74 2c 20 6d 61 78 5f 6c 65 6e 67 74 68 3d 6d 61 78 g_text(text=text,.max_length=max
23b80 5f 6c 65 6e 67 74 68 29 29 0a 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d _length))...#.------------------
23ba0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 20 ----------------------------.#..
23bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 4f 68 74 65 72 73 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .............Ohters.#.----------
23be0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --------------------------------
23c00 2d 2d 2d 2d 0a 0a 64 65 66 20 68 61 73 5f 72 65 73 74 61 72 74 5f 70 65 6e 64 69 6e 67 28 73 68 ----..def.has_restart_pending(sh
23c20 6f 77 5f 77 61 72 6e 69 6e 67 3d 54 72 75 65 2c 20 6d 73 67 5f 77 61 72 6e 69 6e 67 3d 4e 6f 6e ow_warning=True,.msg_warning=Non
23c40 65 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 72 65 73 74 61 72 74 5f 70 65 6e 64 69 6e 67 20 e).->.bool:.....restart_pending.
23c60 3d 20 47 55 49 2e 6d 75 73 74 5f 72 65 73 74 61 72 74 5f 62 65 66 6f 72 65 5f 63 6f 6e 66 69 67 =.GUI.must_restart_before_config
23c80 0a 20 20 20 20 69 66 20 72 65 73 74 61 72 74 5f 70 65 6e 64 69 6e 67 20 61 6e 64 20 73 68 6f 77 .....if.restart_pending.and.show
23ca0 5f 77 61 72 6e 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 6d 73 67 20 3d 20 6d 73 67 5f 77 61 72 6e _warning:.........msg.=.msg_warn
23cc0 69 6e 67 20 6f 72 20 5f 28 27 59 6f 75 20 63 61 6e 6e 6f 74 20 63 6f 6e 66 69 67 75 72 65 20 74 ing.or._('You.cannot.configure.t
23ce0 68 69 73 20 70 6c 75 67 69 6e 20 62 65 66 6f 72 65 20 63 61 6c 69 62 72 65 20 69 73 20 72 65 73 his.plugin.before.calibre.is.res
23d00 74 61 72 74 65 64 2e 27 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 68 6f 77 5f 72 65 73 74 61 72 tarted.').........if.show_restar
23d20 74 5f 77 61 72 6e 69 6e 67 28 6d 73 67 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 55 49 2e t_warning(msg):.............GUI.
23d40 71 75 69 74 28 72 65 73 74 61 72 74 3d 54 72 75 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 quit(restart=True).....return.re
23d60 73 74 61 72 74 5f 70 65 6e 64 69 6e 67 0a 0a 0a 64 65 66 20 64 75 70 6c 69 63 61 74 65 5f 65 6e start_pending...def.duplicate_en
23d80 74 72 79 28 6c 73 74 3a 20 49 74 65 72 61 62 6c 65 29 20 2d 3e 20 4c 69 73 74 3a 0a 20 20 20 20 try(lst:.Iterable).->.List:.....
23da0 27 72 65 74 72 69 65 76 65 20 74 68 65 20 65 6e 74 72 79 20 69 6e 20 64 6f 75 62 6c 65 20 69 6e 'retrieve.the.entry.in.double.in
23dc0 73 69 64 65 20 61 20 69 74 65 72 61 62 6c 65 27 0a 20 20 20 20 72 65 74 75 72 6e 20 6c 69 73 74 side.a.iterable'.....return.list
23de0 28 7b 78 20 66 6f 72 20 78 20 69 6e 20 6c 73 74 20 69 66 20 6c 73 74 2e 63 6f 75 6e 74 28 78 29 ({x.for.x.in.lst.if.lst.count(x)
23e00 20 3e 20 31 7d 29 0a 0a 0a 64 65 66 20 72 65 66 72 65 73 68 5f 67 75 69 28 6c 73 74 5f 69 64 3a .>.1})...def.refresh_gui(lst_id:
23e20 20 4c 69 73 74 5b 69 6e 74 5d 2c 20 63 6f 76 65 72 73 5f 63 68 61 6e 67 65 64 3d 54 72 75 65 2c .List[int],.covers_changed=True,
23e40 20 74 61 67 5f 62 72 6f 77 73 65 72 5f 63 68 61 6e 67 65 64 3d 54 72 75 65 29 3a 0a 20 20 20 20 .tag_browser_changed=True):.....
23e60 47 55 49 2e 69 61 63 74 69 6f 6e 73 5b 27 45 64 69 74 20 4d 65 74 61 64 61 74 61 27 5d 2e 72 65 GUI.iactions['Edit.Metadata'].re
23e80 66 72 65 73 68 5f 67 75 69 28 0a 20 20 20 20 20 20 20 20 6c 73 74 5f 69 64 2c 0a 20 20 20 20 20 fresh_gui(.........lst_id,......
23ea0 20 20 20 63 6f 76 65 72 73 5f 63 68 61 6e 67 65 64 3d 63 6f 76 65 72 73 5f 63 68 61 6e 67 65 64 ...covers_changed=covers_changed
23ec0 2c 0a 20 20 20 20 20 20 20 20 74 61 67 5f 62 72 6f 77 73 65 72 5f 63 68 61 6e 67 65 64 3d 74 61 ,.........tag_browser_changed=ta
23ee0 67 5f 62 72 6f 77 73 65 72 5f 63 68 61 6e 67 65 64 2c 0a 20 20 20 20 29 0a 0a 0a 64 65 66 20 6c g_browser_changed,.....)...def.l
23f00 69 62 72 61 72 79 5f 6e 61 6d 65 28 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 72 65 74 75 72 6e ibrary_name().->.str:.....return
23f20 20 47 55 49 2e 69 61 63 74 69 6f 6e 73 5b 27 43 68 6f 6f 73 65 20 4c 69 62 72 61 72 79 27 5d 2e .GUI.iactions['Choose.Library'].
23f40 6c 69 62 72 61 72 79 5f 6e 61 6d 65 28 29 0a 0a 0a 23 20 53 69 6d 70 6c 65 20 52 65 67 65 78 0a library_name()...#.Simple.Regex.
23f60 63 6c 61 73 73 20 72 65 67 65 78 3a 0a 20 20 20 20 69 6d 70 6f 72 74 20 72 65 20 61 73 20 5f 72 class.regex:.....import.re.as._r
23f80 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 66 6c e..........def.__init__(self,.fl
23fa0 61 67 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 23 20 73 65 74 ag=None):..................#.set
23fc0 20 74 68 65 20 64 65 66 61 75 6c 74 20 66 6c 61 67 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 .the.default.flag.........self.f
23fe0 6c 61 67 20 3d 20 66 6c 61 67 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 66 lag.=.flag.........if.not.self.f
24000 6c 61 67 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 66 6c 61 67 20 3d 20 72 65 67 lag:.............self.flag.=.reg
24020 65 78 2e 5f 72 65 2e 41 53 43 49 49 20 2b 20 72 65 67 65 78 2e 5f 72 65 2e 4d 55 4c 54 49 4c 49 ex._re.ASCII.+.regex._re.MULTILI
24040 4e 45 20 2b 20 72 65 67 65 78 2e 5f 72 65 2e 44 4f 54 41 4c 4c 0a 20 20 20 20 20 20 20 20 20 20 NE.+.regex._re.DOTALL...........
24060 20 20 23 20 63 61 6c 69 62 72 65 20 35 20 2f 2f 20 72 65 2e 41 53 43 49 49 20 66 6f 72 20 50 79 ..#.calibre.5.//.re.ASCII.for.Py
24080 74 68 6f 6e 33 20 6f 6e 6c 79 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 63 61 6c 6c 5f 5f thon3.only..........def.__call__
240a0 28 73 65 6c 66 2c 20 66 6c 61 67 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 (self,.flag=None):.........retur
240c0 6e 20 73 65 6c 66 2e 5f 5f 63 6c 61 73 73 5f 5f 28 66 6c 61 67 29 0a 20 20 20 20 0a 20 20 20 20 n.self.__class__(flag)..........
240e0 64 65 66 20 6d 61 74 63 68 28 73 65 6c 66 2c 20 70 61 74 74 65 72 6e 2c 20 73 74 72 69 6e 67 2c def.match(self,.pattern,.string,
24100 20 66 6c 61 67 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 66 6c 61 67 20 3d 20 66 6c 61 67 .flag=None):.........flag.=.flag
24120 20 6f 72 20 73 65 6c 66 2e 66 6c 61 67 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67 .or.self.flag.........return.reg
24140 65 78 2e 5f 72 65 2e 66 75 6c 6c 6d 61 74 63 68 28 70 61 74 74 65 72 6e 2c 20 73 74 72 69 6e 67 ex._re.fullmatch(pattern,.string
24160 2c 20 66 6c 61 67 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 61 72 63 68 28 73 65 6c 66 ,.flag)..........def.search(self
24180 2c 20 70 61 74 74 65 72 6e 2c 20 73 74 72 69 6e 67 2c 20 66 6c 61 67 3d 4e 6f 6e 65 29 3a 0a 20 ,.pattern,.string,.flag=None):..
241a0 20 20 20 20 20 20 20 66 6c 61 67 20 3d 20 66 6c 61 67 20 6f 72 20 73 65 6c 66 2e 66 6c 61 67 0a .......flag.=.flag.or.self.flag.
241c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67 65 78 2e 5f 72 65 2e 73 65 61 72 63 68 28 ........return.regex._re.search(
241e0 70 61 74 74 65 72 6e 2c 20 73 74 72 69 6e 67 2c 20 66 6c 61 67 29 0a 20 20 20 20 0a 20 20 20 20 pattern,.string,.flag)..........
24200 64 65 66 20 73 65 61 72 63 68 61 6c 6c 28 73 65 6c 66 2c 20 70 61 74 74 65 72 6e 2c 20 73 74 72 def.searchall(self,.pattern,.str
24220 69 6e 67 2c 20 66 6c 61 67 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 66 6c 61 67 20 3d 20 ing,.flag=None):.........flag.=.
24240 66 6c 61 67 20 6f 72 20 73 65 6c 66 2e 66 6c 61 67 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e flag.or.self.flag.........return
24260 20 72 65 67 65 78 2e 5f 72 65 2e 66 69 6e 64 69 74 65 72 28 70 61 74 74 65 72 6e 2c 20 73 74 72 .regex._re.finditer(pattern,.str
24280 69 6e 67 2c 20 66 6c 61 67 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 70 6c 69 74 28 73 65 ing,.flag)..........def.split(se
242a0 6c 66 2c 20 70 61 74 74 65 72 6e 2c 20 73 74 72 69 6e 67 2c 20 6d 61 78 73 70 6c 69 74 3d 30 2c lf,.pattern,.string,.maxsplit=0,
242c0 20 66 6c 61 67 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 66 6c 61 67 20 3d 20 66 6c 61 67 .flag=None):.........flag.=.flag
242e0 20 6f 72 20 73 65 6c 66 2e 66 6c 61 67 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67 .or.self.flag.........return.reg
24300 65 78 2e 5f 72 65 2e 73 70 6c 69 74 28 70 61 74 74 65 72 6e 2c 20 73 74 72 69 6e 67 2c 20 6d 61 ex._re.split(pattern,.string,.ma
24320 78 73 70 6c 69 74 2c 20 66 6c 61 67 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 69 6d 70 6c xsplit,.flag)..........def.simpl
24340 65 28 73 65 6c 66 2c 20 70 61 74 74 65 72 6e 2c 20 72 65 70 6c 2c 20 73 74 72 69 6e 67 2c 20 66 e(self,.pattern,.repl,.string,.f
24360 6c 61 67 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 66 6c 61 67 20 3d 20 66 6c 61 67 20 6f lag=None):.........flag.=.flag.o
24380 72 20 73 65 6c 66 2e 66 6c 61 67 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67 65 78 r.self.flag.........return.regex
243a0 2e 5f 72 65 2e 73 75 62 28 70 61 74 74 65 72 6e 2c 20 72 65 70 6c 2c 20 73 74 72 69 6e 67 2c 20 ._re.sub(pattern,.repl,.string,.
243c0 30 2c 20 66 6c 61 67 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 6c 6f 6f 70 28 73 65 6c 66 2c 0,.flag)..........def.loop(self,
243e0 20 70 61 74 74 65 72 6e 2c 20 72 65 70 6c 2c 20 73 74 72 69 6e 67 2c 20 66 6c 61 67 3d 4e 6f 6e .pattern,.repl,.string,.flag=Non
24400 65 29 3a 0a 20 20 20 20 20 20 20 20 66 6c 61 67 20 3d 20 66 6c 61 67 20 6f 72 20 73 65 6c 66 2e e):.........flag.=.flag.or.self.
24420 66 6c 61 67 0a 20 20 20 20 20 20 20 20 69 20 3d 20 30 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 69 flag.........i.=.0.........compi
24440 6c 65 20 3d 20 72 65 67 65 78 2e 5f 72 65 2e 63 6f 6d 70 69 6c 65 28 70 61 74 74 65 72 6e 2c 20 le.=.regex._re.compile(pattern,.
24460 66 6c 61 67 29 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 63 6f 6d 70 69 6c 65 2e 73 65 61 72 flag).........while.compile.sear
24480 63 68 28 73 74 72 69 6e 67 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 69 20 3e 20 31 ch(string):.............if.i.>.1
244a0 30 30 30 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 52 65 67 65 78 000:.................raise.Regex
244c0 45 78 63 65 70 74 69 6f 6e 28 27 54 68 65 20 70 61 74 74 65 72 6e 20 61 6e 64 20 73 75 62 73 74 Exception('The.pattern.and.subst
244e0 69 74 75 74 69 6f 6e 20 73 74 72 69 6e 67 20 63 61 75 73 65 64 20 61 6e 20 69 6e 66 69 6e 69 74 itution.string.caused.an.infinit
24500 65 20 6c 6f 6f 70 27 2c 20 70 61 74 74 65 72 6e 2c 20 72 65 70 6c 29 0a 20 20 20 20 20 20 20 20 e.loop',.pattern,.repl).........
24520 20 20 20 20 73 74 72 69 6e 67 20 3d 20 63 6f 6d 70 69 6c 65 2e 73 75 62 28 72 65 70 6c 2c 20 73 ....string.=.compile.sub(repl,.s
24540 74 72 69 6e 67 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 2b 3d 31 0a 20 20 20 20 20 20 20 20 tring).............i+=1.........
24560 72 65 74 75 72 6e 20 73 74 72 69 6e 67 0a 0a 0a 63 6c 61 73 73 20 52 65 67 65 78 45 78 63 65 70 return.string...class.RegexExcep
24580 74 69 6f 6e 28 45 78 63 65 70 74 69 6f 6e 29 3a 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f tion(Exception):.....def.__init_
245a0 5f 28 73 65 6c 66 2c 20 6d 73 67 2c 20 70 61 74 74 65 72 6e 3d 4e 6f 6e 65 2c 20 72 65 70 6c 3d _(self,.msg,.pattern=None,.repl=
245c0 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 45 78 63 65 70 74 69 6f 6e 2e 5f 5f 69 6e 69 74 5f None):.........Exception.__init_
245e0 5f 28 73 65 6c 66 2c 20 6d 73 67 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 61 74 74 65 72 _(self,.msg).........self.patter
24600 6e 20 3d 20 70 61 74 74 65 72 6e 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 70 6c 20 3d 20 n.=.pattern.........self.repl.=.
24620 72 65 70 6c 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 6d 73 67 20 3d 20 6d 73 67 0a 0a 0a 72 65 repl.........self.msg.=.msg...re
24640 67 65 78 20 3d 20 72 65 67 65 78 28 29 0a 27 27 27 45 61 73 79 20 52 65 67 65 78 27 27 27 0a 0a gex.=.regex().'''Easy.Regex'''..
24660 0a 63 6c 61 73 73 20 50 52 45 46 53 5f 6a 73 6f 6e 28 4a 53 4f 4e 43 6f 6e 66 69 67 29 3a 0a 20 .class.PREFS_json(JSONConfig):..
24680 20 20 20 27 27 27 0a 20 20 20 20 55 73 65 20 70 6c 75 67 69 6e 20 6e 61 6d 65 20 74 6f 20 63 72 ...'''.....Use.plugin.name.to.cr
246a0 65 61 74 65 20 61 20 4a 53 4f 4e 43 6f 6e 66 69 67 20 66 69 6c 65 0a 20 20 20 20 74 6f 20 73 74 eate.a.JSONConfig.file.....to.st
246c0 6f 72 65 20 74 68 65 20 70 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 20 70 6c 75 67 69 6e 0a 20 ore.the.preferences.for.plugin..
246e0 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c ...'''..........def.__init__(sel
24700 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 69 73 5f 69 6e 69 74 20 3d 20 54 72 75 65 f):.........self._is_init.=.True
24720 0a 20 20 20 20 20 20 20 20 4a 53 4f 4e 43 6f 6e 66 69 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c .........JSONConfig.__init__(sel
24740 66 2c 20 27 70 6c 75 67 69 6e 73 2f 27 2b 50 4c 55 47 49 4e 5f 4e 41 4d 45 29 0a 20 20 20 20 20 f,.'plugins/'+PLUGIN_NAME)......
24760 20 20 20 73 65 6c 66 2e 5f 69 73 5f 69 6e 69 74 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 0a 20 20 ...self._is_init.=.False........
24780 20 20 64 65 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 ..def.__getitem__(self,.key):...
247a0 20 20 20 20 20 20 64 20 3d 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 73 2e 67 65 74 28 6b 65 79 2c ......d.=.self.defaults.get(key,
247c0 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 64 2c 20 .None).........if.isinstance(d,.
247e0 64 69 63 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 64 69 63 74 2e 5f dict):.............if.not.dict._
24800 5f 63 6f 6e 74 61 69 6e 73 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 _contains__(self,.key):.........
24820 20 20 20 20 20 20 20 20 64 69 63 74 2e 5f 5f 73 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b ........dict.__setitem__(self,.k
24840 65 79 2c 20 7b 7d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 ey,.{}).........................
24860 20 72 73 6c 74 20 3d 20 64 69 63 74 2e 67 65 74 28 73 65 6c 66 2c 20 6b 65 79 2c 20 7b 7d 29 0a .rslt.=.dict.get(self,.key,.{}).
24880 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 76 .........................for.k,v
248a0 20 69 6e 20 64 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 .in.d.items():.................i
248c0 66 20 6b 20 6e 6f 74 20 69 6e 20 72 73 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f.k.not.in.rslt:................
248e0 20 20 20 20 20 72 73 6c 74 5b 6b 5d 20 3d 20 63 6f 70 79 2e 63 6f 70 79 28 76 29 0a 20 20 20 20 .....rslt[k].=.copy.copy(v).....
24900 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 .....................return.rslt
24920 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 .........else:.............retur
24940 6e 20 4a 53 4f 4e 43 6f 6e 66 69 67 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b n.JSONConfig.__getitem__(self,.k
24960 65 79 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 28 73 65 6c 66 2c 20 6f 74 ey)..........def.update(self,.ot
24980 68 65 72 2c 20 2a 2a 6b 76 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 4a 53 4f 4e 43 6f 6e 66 her,.**kvargs):.........JSONConf
249a0 69 67 2e 75 70 64 61 74 65 28 73 65 6c 66 2c 20 6f 74 68 65 72 2c 20 2a 2a 6b 76 61 72 67 73 29 ig.update(self,.other,.**kvargs)
249c0 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 66 2e 5f 69 73 5f 69 6e 69 74 3a 0a 20 .........if.not.self._is_init:..
249e0 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 6d 69 74 28 29 0a 20 20 20 20 0a 20 20 ...........self.commit()........
24a00 20 20 64 65 66 20 5f 5f 63 61 6c 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 ..def.__call__(self):.........se
24a20 6c 66 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 lf.refresh().........return.self
24a40 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 63 6f 70 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 ..........def.copy(self):.......
24a60 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 67 65 74 20 61 20 63 6f 70 79 20 64 69 63 74 20 6f 66 ..'''.........get.a.copy.dict.of
24a80 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 .this.instance.........'''......
24aa0 20 20 20 72 73 6c 74 20 3d 20 7b 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 28 6b 29 3a 63 6f 70 79 ...rslt.=.{copy.deepcopy(k):copy
24ac0 2e 64 65 65 70 63 6f 70 79 28 76 29 20 66 6f 72 20 6b 2c 76 20 69 6e 20 73 65 6c 66 2e 69 74 65 .deepcopy(v).for.k,v.in.self.ite
24ae0 6d 73 28 29 7d 0a 20 20 20 20 20 20 20 20 72 73 6c 74 2e 75 70 64 61 74 65 28 7b 63 6f 70 79 2e ms()}.........rslt.update({copy.
24b00 64 65 65 70 63 6f 70 79 28 6b 29 3a 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 28 76 29 20 66 6f 72 deepcopy(k):copy.deepcopy(v).for
24b20 20 6b 2c 76 20 69 6e 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 73 2e 69 74 65 6d 73 28 29 20 69 66 .k,v.in.self.defaults.items().if
24b40 20 6b 20 6e 6f 74 20 69 6e 20 72 73 6c 74 7d 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .k.not.in.rslt}).........return.
24b60 72 73 6c 74 0a 0a 0a 63 6c 61 73 73 20 50 52 45 46 53 5f 64 79 6e 61 6d 69 63 28 44 79 6e 61 6d rslt...class.PREFS_dynamic(Dynam
24b80 69 63 43 6f 6e 66 69 67 29 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 55 73 65 20 70 6c 75 67 69 icConfig):.....'''.....Use.plugi
24ba0 6e 20 6e 61 6d 65 20 74 6f 20 63 72 65 61 74 65 20 61 20 44 79 6e 61 6d 69 63 43 6f 6e 66 69 67 n.name.to.create.a.DynamicConfig
24bc0 20 66 69 6c 65 0a 20 20 20 20 74 6f 20 73 74 6f 72 65 20 74 68 65 20 70 72 65 66 65 72 65 6e 63 .file.....to.store.the.preferenc
24be0 65 73 20 66 6f 72 20 70 6c 75 67 69 6e 0a 20 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 64 es.for.plugin.....'''..........d
24c00 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e ef.__init__(self):.........self.
24c20 5f 6e 6f 5f 63 6f 6d 6d 69 74 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 44 79 6e 61 6d _no_commit.=.False.........Dynam
24c40 69 63 43 6f 6e 66 69 67 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 27 70 6c 75 67 69 6e 73 icConfig.__init__(self,.'plugins
24c60 2f 27 2b 50 4c 55 47 49 4e 5f 4e 41 4d 45 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 63 6f 6d /'+PLUGIN_NAME)..........def.com
24c80 6d 69 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 6e 6f 5f 63 mit(self):.........if.self._no_c
24ca0 6f 6d 6d 69 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 ommit:.............return.......
24cc0 20 20 44 79 6e 61 6d 69 63 43 6f 6e 66 69 67 2e 63 6f 6d 6d 69 74 28 73 65 6c 66 29 0a 20 20 20 ..DynamicConfig.commit(self)....
24ce0 20 0a 20 20 20 20 64 65 66 20 5f 5f 65 6e 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 ......def.__enter__(self):......
24d00 20 20 20 73 65 6c 66 2e 5f 6e 6f 5f 63 6f 6d 6d 69 74 20 3d 20 54 72 75 65 0a 0a 20 20 20 20 64 ...self._no_commit.=.True......d
24d20 65 66 20 5f 5f 65 78 69 74 5f 5f 28 73 65 6c 66 2c 20 2a 61 72 67 73 29 3a 0a 20 20 20 20 20 20 ef.__exit__(self,.*args):.......
24d40 20 20 73 65 6c 66 2e 5f 6e 6f 5f 63 6f 6d 6d 69 74 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 ..self._no_commit.=.False.......
24d60 20 20 73 65 6c 66 2e 63 6f 6d 6d 69 74 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 63 ..self.commit()..........def.__c
24d80 61 6c 6c 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 72 65 73 all__(self):.........self.refres
24da0 68 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 0a 20 20 20 20 0a 20 20 20 h().........return.self.........
24dc0 20 64 65 66 20 75 70 64 61 74 65 28 73 65 6c 66 2c 20 6f 74 68 65 72 2c 20 2a 2a 6b 76 61 72 67 .def.update(self,.other,.**kvarg
24de0 73 29 3a 0a 20 20 20 20 20 20 20 20 44 79 6e 61 6d 69 63 43 6f 6e 66 69 67 2e 75 70 64 61 74 65 s):.........DynamicConfig.update
24e00 28 73 65 6c 66 2c 20 6f 74 68 65 72 2c 20 2a 2a 6b 76 61 72 67 73 29 0a 20 20 20 20 20 20 20 20 (self,.other,.**kvargs).........
24e20 73 65 6c 66 2e 63 6f 6d 6d 69 74 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 63 6f 70 79 28 self.commit()..........def.copy(
24e40 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 67 65 74 20 61 self):.........'''.........get.a
24e60 20 63 6f 70 79 20 64 69 63 74 20 6f 66 20 74 68 69 73 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 .copy.dict.of.this.instance.....
24e80 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 7b 7d 0a 20 20 20 20 20 20 ....'''.........rslt.=.{}.......
24ea0 20 20 66 6f 72 20 6b 2c 76 20 69 6e 20 73 65 6c 66 2e 69 74 65 6d 73 28 29 3a 0a 20 20 20 20 20 ..for.k,v.in.self.items():......
24ec0 20 20 20 20 20 20 20 72 73 6c 74 5b 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 28 6b 29 5d 20 3d 20 .......rslt[copy.deepcopy(k)].=.
24ee0 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 28 76 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 copy.deepcopy(v)................
24f00 20 20 66 6f 72 20 6b 2c 20 76 20 69 6e 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 73 2e 69 74 65 6d ..for.k,.v.in.self.defaults.item
24f20 73 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 20 6e 6f 74 20 69 6e 20 72 73 6c s():.............if.k.not.in.rsl
24f40 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 5b 6b 5d 20 3d 20 63 6f 70 t:.................rslt[k].=.cop
24f60 79 2e 64 65 65 70 63 6f 70 79 28 76 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c y.deepcopy(v).........return.rsl
24f80 74 0a 0a 0a 63 6c 61 73 73 20 50 52 45 46 53 5f 6c 69 62 72 61 72 79 28 64 69 63 74 29 3a 0a 20 t...class.PREFS_library(dict):..
24fa0 20 20 20 27 27 27 0a 20 20 20 20 43 72 65 61 74 65 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 6f ...'''.....Create.a.dictionary.o
24fc0 66 20 70 72 65 66 65 72 65 6e 63 65 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 f.preference.stored.in.the.libra
24fe0 72 79 0a 20 20 20 20 0a 20 20 20 20 44 65 66 69 6e 65 64 20 61 20 63 75 73 74 6f 6d 20 6e 61 6d ry..........Defined.a.custom.nam
25000 65 73 70 61 63 65 64 20 61 74 20 74 68 65 20 72 6f 6f 74 20 6f 66 20 5f 5f 69 6e 69 74 5f 5f 2e espaced.at.the.root.of.__init__.
25020 70 79 20 2f 2f 20 5f 5f 69 6e 69 74 5f 5f 2e 50 52 45 46 53 5f 4e 41 4d 45 53 50 41 43 45 0a 20 py.//.__init__.PREFS_NAMESPACE..
25040 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c ...'''..........def.__init__(sel
25060 66 2c 20 6b 65 79 3d 27 73 65 74 74 69 6e 67 73 27 2c 20 64 65 66 61 75 6c 74 73 3d 7b 7d 29 3a f,.key='settings',.defaults={}):
25080 0a 20 20 20 20 20 20 20 20 64 69 63 74 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 29 0a 20 20 20 .........dict.__init__(self)....
250a0 20 20 20 20 20 73 65 6c 66 2e 5f 6e 6f 5f 63 6f 6d 6d 69 74 20 3d 20 46 61 6c 73 65 0a 20 20 20 .....self._no_commit.=.False....
250c0 20 20 20 20 20 73 65 6c 66 2e 5f 64 62 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 73 65 6c .....self._db.=.None.........sel
250e0 66 2e 6b 65 79 20 3d 20 6b 65 79 20 69 66 20 6b 65 79 20 65 6c 73 65 20 27 27 0a 20 20 20 20 20 f.key.=.key.if.key.else.''......
25100 20 20 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 73 20 3d 20 64 65 66 61 75 6c 74 73 20 69 66 20 64 ...self.defaults.=.defaults.if.d
25120 65 66 61 75 6c 74 73 20 65 6c 73 65 20 7b 7d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 efaults.else.{}.................
25140 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 6b 65 79 2c 20 73 74 72 29 3a 0a 20 20 .if.not.isinstance(key,.str):...
25160 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 28 22 54 68 65 20 27 ..........raise.TypeError("The.'
25180 6b 65 79 27 20 66 6f 72 20 74 68 65 20 6e 61 6d 65 73 70 61 63 65 64 20 70 72 65 66 65 72 65 6e key'.for.the.namespaced.preferen
251a0 63 65 20 69 73 20 6e 6f 74 20 61 20 73 74 72 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 ce.is.not.a.string")............
251c0 20 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 73 69 6e 73 74 61 6e 63 65 28 64 65 66 61 ..........if.not.isinstance(defa
251e0 75 6c 74 73 2c 20 64 69 63 74 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 54 ults,.dict):.............raise.T
25200 79 70 65 45 72 72 6f 72 28 22 54 68 65 20 27 64 65 66 61 75 6c 74 73 27 20 66 6f 72 20 74 68 65 ypeError("The.'defaults'.for.the
25220 20 6e 61 6d 65 73 70 61 63 65 64 20 70 72 65 66 65 72 65 6e 63 65 20 69 73 20 6e 6f 74 20 61 20 .namespaced.preference.is.not.a.
25240 64 69 63 74 22 29 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6e 61 dict")..................self._na
25260 6d 65 73 70 61 63 65 20 3d 20 50 52 45 46 53 5f 4e 41 4d 45 53 50 41 43 45 0a 20 20 20 20 20 20 mespace.=.PREFS_NAMESPACE.......
25280 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 0a 20 ...........self.refresh().......
252a0 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 6e 61 6d 65 73 70 61 63 65 28 73 ...@property.....def.namespace(s
252c0 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 6e 61 6d 65 73 elf):.........return.self._names
252e0 70 61 63 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 pace..........def.__getitem__(se
25300 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 72 65 73 68 28 29 lf,.key):.........self.refresh()
25320 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 20 3d 20 73 65 .........try:.............d.=.se
25340 6c 66 2e 64 65 66 61 75 6c 74 73 2e 67 65 74 28 6b 65 79 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 lf.defaults.get(key,.None)......
25360 20 20 20 20 20 20 20 69 66 20 69 73 69 6e 73 74 61 6e 63 65 28 64 2c 20 64 69 63 74 29 3a 0a 20 .......if.isinstance(d,.dict):..
25380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 64 69 63 74 2e 5f 5f 63 6f 6e ...............if.not.dict.__con
253a0 74 61 69 6e 73 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 tains__(self,.key):.............
253c0 20 20 20 20 20 20 20 20 64 69 63 74 2e 5f 5f 73 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b ........dict.__setitem__(self,.k
253e0 65 79 2c 20 7b 7d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 ey,.{}).........................
25400 20 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 64 69 63 74 2e 67 65 74 28 73 65 6c 66 2c 20 6b .........rslt.=.dict.get(self,.k
25420 65 79 2c 20 7b 7d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 ey,.{}).........................
25440 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b 2c 76 20 69 6e 20 64 2e 69 74 65 6d 73 28 29 3a 0a 20 .........for.k,v.in.d.items():..
25460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 20 6e 6f 74 20 69 6e 20 72 ...................if.k.not.in.r
25480 73 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c slt:.........................rsl
254a0 74 5b 6b 5d 20 3d 20 63 6f 70 79 2e 63 6f 70 79 28 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 t[k].=.copy.copy(v).............
254c0 20 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 .....................return.rslt
254e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 .............else:..............
25500 20 20 20 72 65 74 75 72 6e 20 64 69 63 74 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c ...return.dict.__getitem__(self,
25520 20 6b 65 79 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 45 72 72 6f 72 3a 0a 20 .key).........except.KeyError:..
25540 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 73 5b ...........return.self.defaults[
25560 6b 65 79 5d 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 67 65 74 28 73 65 6c 66 2c 20 6b 65 79 2c key]..........def.get(self,.key,
25580 20 64 65 66 61 75 6c 74 3d 4e 6f 6e 65 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 .default=None):.........self.ref
255a0 72 65 73 68 28 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 resh().........try:.............
255c0 72 65 74 75 72 6e 20 64 69 63 74 2e 5f 5f 67 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 return.dict.__getitem__(self,.ke
255e0 79 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 45 72 72 6f 72 3a 0a 20 20 20 20 y).........except.KeyError:.....
25600 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 65 66 61 75 6c 74 73 2e 67 65 74 ........return.self.defaults.get
25620 28 6b 65 79 2c 20 64 65 66 61 75 6c 74 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 73 65 (key,.default)..........def.__se
25640 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 2c 20 76 61 6c 29 3a 0a 20 20 20 20 20 20 20 titem__(self,.key,.val):........
25660 20 73 65 6c 66 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 20 20 20 20 64 69 63 74 2e 5f 5f 73 .self.refresh().........dict.__s
25680 65 74 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 2c 20 76 61 6c 29 0a 20 20 20 20 20 20 20 etitem__(self,.key,.val)........
256a0 20 73 65 6c 66 2e 63 6f 6d 6d 69 74 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 73 65 74 28 .self.commit()..........def.set(
256c0 73 65 6c 66 2c 20 6b 65 79 2c 20 76 61 6c 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 5f self,.key,.val):.........self.__
256e0 73 65 74 69 74 65 6d 5f 5f 28 6b 65 79 2c 20 76 61 6c 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 setitem__(key,.val)..........def
25700 20 5f 5f 64 65 6c 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 6b 65 79 29 3a 0a 20 20 20 20 20 20 20 .__delitem__(self,.key):........
25720 20 73 65 6c 66 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 20 20 20 20 74 72 79 3a 0a 20 20 20 .self.refresh().........try:....
25740 20 20 20 20 20 20 20 20 20 64 69 63 74 2e 5f 5f 64 65 6c 69 74 65 6d 5f 5f 28 73 65 6c 66 2c 20 .........dict.__delitem__(self,.
25760 6b 65 79 29 0a 20 20 20 20 20 20 20 20 65 78 63 65 70 74 20 4b 65 79 45 72 72 6f 72 3a 0a 20 20 key).........except.KeyError:...
25780 20 20 20 20 20 20 20 20 20 20 70 61 73 73 20 20 23 20 69 67 6e 6f 72 65 20 6d 69 73 73 69 6e 67 ..........pass..#.ignore.missing
257a0 20 6b 65 79 73 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 6d 69 74 28 29 0a 20 20 20 20 .keys.........self.commit().....
257c0 0a 20 20 20 20 64 65 66 20 5f 5f 73 74 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 .....def.__str__(self):.........
257e0 73 65 6c 66 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 69 self.refresh().........return.di
25800 63 74 2e 5f 5f 73 74 72 5f 5f 28 73 65 6c 66 2e 63 6f 70 79 28 29 29 0a 20 20 20 20 0a 20 20 20 ct.__str__(self.copy()).........
25820 20 64 65 66 20 5f 63 68 65 63 6b 5f 64 62 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 .def._check_db(self):.........if
25840 20 63 75 72 72 65 6e 74 5f 64 62 28 29 20 61 6e 64 20 73 65 6c 66 2e 5f 64 62 20 21 3d 20 63 75 .current_db().and.self._db.!=.cu
25860 72 72 65 6e 74 5f 64 62 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 62 rrent_db():.............self._db
25880 20 3d 20 63 75 72 72 65 6e 74 5f 64 62 28 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 .=.current_db().........return.s
258a0 65 6c 66 2e 5f 64 62 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 elf._db.is.not.None..........def
258c0 20 72 65 66 72 65 73 68 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e .refresh(self):.........if.self.
258e0 5f 63 68 65 63 6b 5f 64 62 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 _check_db():.............rslt.=.
25900 73 65 6c 66 2e 5f 64 62 2e 70 72 65 66 73 2e 67 65 74 5f 6e 61 6d 65 73 70 61 63 65 64 28 73 65 self._db.prefs.get_namespaced(se
25920 6c 66 2e 6e 61 6d 65 73 70 61 63 65 2c 20 73 65 6c 66 2e 6b 65 79 2c 20 7b 7d 29 0a 20 20 20 20 lf.namespace,.self.key,.{}).....
25940 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6e 6f 5f 63 6f 6d 6d 69 74 20 3d 20 54 72 75 65 0a 20 ........self._no_commit.=.True..
25960 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 65 61 72 28 29 0a 20 20 20 20 20 20 20 20 ...........self.clear().........
25980 20 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 28 72 73 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 ....self.update(rslt)...........
259a0 20 20 73 65 6c 66 2e 5f 6e 6f 5f 63 6f 6d 6d 69 74 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 0a 20 ..self._no_commit.=.False.......
259c0 20 20 20 64 65 66 20 63 6f 6d 6d 69 74 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 ...def.commit(self):.........if.
259e0 73 65 6c 66 2e 5f 6e 6f 5f 63 6f 6d 6d 69 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 self._no_commit:.............ret
25a00 75 72 6e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 63 68 urn..................if.self._ch
25a20 65 63 6b 5f 64 62 28 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 64 62 2e 70 eck_db():.............self._db.p
25a40 72 65 66 73 2e 73 65 74 5f 6e 61 6d 65 73 70 61 63 65 64 28 73 65 6c 66 2e 6e 61 6d 65 73 70 61 refs.set_namespaced(self.namespa
25a60 63 65 2c 20 73 65 6c 66 2e 6b 65 79 2c 20 73 65 6c 66 2e 63 6f 70 79 28 29 29 0a 20 20 20 20 20 ce,.self.key,.self.copy())......
25a80 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 0a 20 20 20 20 64 .......self.refresh()..........d
25aa0 65 66 20 5f 5f 65 6e 74 65 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 ef.__enter__(self):.........self
25ac0 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6e 6f 5f 63 6f 6d 6d .refresh().........self._no_comm
25ae0 69 74 20 3d 20 54 72 75 65 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 65 78 69 74 5f 5f 28 it.=.True..........def.__exit__(
25b00 73 65 6c 66 2c 20 2a 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6e 6f 5f 63 self,.*args):.........self._no_c
25b20 6f 6d 6d 69 74 20 3d 20 46 61 6c 73 65 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 6d 69 ommit.=.False.........self.commi
25b40 74 28 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 63 61 6c 6c 5f 5f 28 73 65 6c 66 29 3a t()..........def.__call__(self):
25b60 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 72 65 66 72 65 73 68 28 29 0a 20 20 20 20 20 20 20 20 .........self.refresh().........
25b80 72 65 74 75 72 6e 20 73 65 6c 66 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 75 70 64 61 74 65 28 return.self..........def.update(
25ba0 73 65 6c 66 2c 20 6f 74 68 65 72 2c 20 2a 2a 6b 76 61 72 67 73 29 3a 0a 20 20 20 20 20 20 20 20 self,.other,.**kvargs):.........
25bc0 64 69 63 74 2e 75 70 64 61 74 65 28 73 65 6c 66 2c 20 6f 74 68 65 72 2c 20 2a 2a 6b 76 61 72 67 dict.update(self,.other,.**kvarg
25be0 73 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6f 6d 6d 69 74 28 29 0a 20 20 20 20 0a 20 20 s).........self.commit()........
25c00 20 20 64 65 66 20 63 6f 70 79 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 ..def.copy(self):.........'''...
25c20 20 20 20 20 20 20 67 65 74 20 61 20 63 6f 70 79 20 64 69 63 74 20 6f 66 20 74 68 69 73 20 69 6e ......get.a.copy.dict.of.this.in
25c40 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 72 73 6c 74 20 stance.........'''.........rslt.
25c60 3d 20 7b 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 28 6b 29 3a 63 6f 70 79 2e 64 65 65 70 63 6f 70 =.{copy.deepcopy(k):copy.deepcop
25c80 79 28 76 29 20 66 6f 72 20 6b 2c 76 20 69 6e 20 73 65 6c 66 2e 69 74 65 6d 73 28 29 7d 0a 20 20 y(v).for.k,v.in.self.items()}...
25ca0 20 20 20 20 20 20 72 73 6c 74 2e 75 70 64 61 74 65 28 7b 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 ......rslt.update({copy.deepcopy
25cc0 28 6b 29 3a 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 28 76 29 20 66 6f 72 20 6b 2c 76 20 69 6e 20 (k):copy.deepcopy(v).for.k,v.in.
25ce0 73 65 6c 66 2e 64 65 66 61 75 6c 74 73 2e 69 74 65 6d 73 28 29 20 69 66 20 6b 20 6e 6f 74 20 69 self.defaults.items().if.k.not.i
25d00 6e 20 72 73 6c 74 7d 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 50 4b 03 n.rslt}).........return.rslt.PK.
25d20 04 14 00 00 00 00 00 89 6e 3f 5c 71 18 f6 65 4b 66 00 00 4b 66 00 00 17 00 00 00 63 6f 6d 6d 6f ........n?\q..eKf..Kf......commo
25d40 6e 5f 75 74 69 6c 73 2f 63 6f 6c 75 6d 6e 73 2e 70 79 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 n_utils/columns.py#!/usr/bin/env
25d60 20 70 79 74 68 6f 6e 0a 0a 5f 5f 6c 69 63 65 6e 73 65 5f 5f 20 20 20 3d 20 27 47 50 4c 20 76 33 .python..__license__...=.'GPL.v3
25d80 27 0a 5f 5f 63 6f 70 79 72 69 67 68 74 5f 5f 20 3d 20 27 32 30 32 31 2c 20 75 6e 5f 70 6f 67 61 '.__copyright__.=.'2021,.un_poga
25da0 7a 20 3c 75 6e 2e 70 6f 67 61 7a 40 67 6d 61 69 6c 2e 63 6f 6d 3e 27 0a 0a 0a 74 72 79 3a 0a 20 z.<un.pogaz@gmail.com>'...try:..
25dc0 20 20 20 6c 6f 61 64 5f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 28 29 0a 65 78 63 65 70 74 20 4e 61 ...load_translations().except.Na
25de0 6d 65 45 72 72 6f 72 3a 0a 20 20 20 20 70 61 73 73 20 20 23 20 6c 6f 61 64 5f 74 72 61 6e 73 6c meError:.....pass..#.load_transl
25e00 61 74 69 6f 6e 73 28 29 20 61 64 64 65 64 20 69 6e 20 63 61 6c 69 62 72 65 20 31 2e 39 0a 0a 69 ations().added.in.calibre.1.9..i
25e20 6d 70 6f 72 74 20 63 6f 70 79 0a 69 6d 70 6f 72 74 20 6f 73 0a 69 6d 70 6f 72 74 20 73 79 73 0a mport.copy.import.os.import.sys.
25e40 66 72 6f 6d 20 74 79 70 69 6e 67 20 69 6d 70 6f 72 74 20 43 61 6c 6c 61 62 6c 65 2c 20 44 69 63 from.typing.import.Callable,.Dic
25e60 74 2c 20 4c 69 73 74 2c 20 4f 70 74 69 6f 6e 61 6c 2c 20 54 75 70 6c 65 0a 0a 66 72 6f 6d 20 63 t,.List,.Optional,.Tuple..from.c
25e80 61 6c 69 62 72 65 20 69 6d 70 6f 72 74 20 70 72 69 6e 74 73 0a 66 72 6f 6d 20 63 61 6c 69 62 72 alibre.import.prints.from.calibr
25ea0 65 2e 63 6f 6e 73 74 61 6e 74 73 20 69 6d 70 6f 72 74 20 6e 75 6d 65 72 69 63 5f 76 65 72 73 69 e.constants.import.numeric_versi
25ec0 6f 6e 20 61 73 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 0a 66 72 6f 6d 20 63 61 6c 69 62 on.as.CALIBRE_VERSION.from.calib
25ee0 72 65 2e 64 62 2e 6c 65 67 61 63 79 20 69 6d 70 6f 72 74 20 4c 69 62 72 61 72 79 44 61 74 61 62 re.db.legacy.import.LibraryDatab
25f00 61 73 65 0a 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 6c 69 62 72 61 72 79 2e 66 69 65 6c 64 5f 6d ase.from.calibre.library.field_m
25f20 65 74 61 64 61 74 61 20 69 6d 70 6f 72 74 20 46 69 65 6c 64 4d 65 74 61 64 61 74 61 0a 0a 0a 64 etadata.import.FieldMetadata...d
25f40 65 66 20 63 75 72 72 65 6e 74 5f 64 62 28 29 20 2d 3e 20 4c 69 62 72 61 72 79 44 61 74 61 62 61 ef.current_db().->.LibraryDataba
25f60 73 65 3a 0a 20 20 20 20 66 72 6f 6d 20 63 61 6c 69 62 72 65 2e 67 75 69 32 2e 75 69 20 69 6d 70 se:.....from.calibre.gui2.ui.imp
25f80 6f 72 74 20 67 65 74 5f 67 75 69 0a 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 61 74 74 72 28 67 ort.get_gui.....return.getattr(g
25fa0 65 74 5f 67 75 69 28 29 2c 27 63 75 72 72 65 6e 74 5f 64 62 27 2c 20 4e 6f 6e 65 29 0a 0a 0a 63 et_gui(),'current_db',.None)...c
25fc0 6c 61 73 73 20 74 79 70 65 70 72 6f 70 65 72 74 79 28 70 72 6f 70 65 72 74 79 29 3a 0a 20 20 20 lass.typeproperty(property):....
25fe0 20 72 65 67 69 73 74 72 79 20 3d 20 5b 5d 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e .registry.=.[]..........def.__in
26000 69 74 5f 5f 28 73 65 6c 66 2c 20 66 75 6e 63 29 3a 0a 20 20 20 20 20 20 20 20 70 72 6f 70 65 72 it__(self,.func):.........proper
26020 74 79 2e 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 66 67 65 74 3d 66 75 6e 63 29 0a 20 20 20 ty.__init__(self,.fget=func)....
26040 20 20 20 20 20 74 79 70 65 70 72 6f 70 65 72 74 79 2e 72 65 67 69 73 74 72 79 2e 61 70 70 65 6e .....typeproperty.registry.appen
26060 64 28 66 75 6e 63 29 0a 0a 0a 64 65 66 20 67 65 74 5f 61 6c 6c 5f 69 64 65 6e 74 69 66 69 65 72 d(func)...def.get_all_identifier
26080 73 28 29 20 2d 3e 20 4c 69 73 74 5b 73 74 72 5d 3a 0a 20 20 20 20 27 47 65 74 20 74 68 65 20 69 s().->.List[str]:.....'Get.the.i
260a0 64 65 6e 74 69 66 69 65 72 73 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 27 0a 20 20 20 20 72 dentifiers.in.the.library'.....r
260c0 65 74 75 72 6e 20 63 75 72 72 65 6e 74 5f 64 62 28 29 2e 67 65 74 5f 61 6c 6c 5f 69 64 65 6e 74 eturn.current_db().get_all_ident
260e0 69 66 69 65 72 5f 74 79 70 65 73 28 29 0a 0a 0a 64 65 66 20 69 73 5f 65 6e 75 6d 5f 76 61 6c 75 ifier_types()...def.is_enum_valu
26100 65 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 27 27 27 0a e(name,.value).->.bool:.....'''.
26120 20 20 20 20 54 65 73 74 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 76 61 6c 69 64 65 20 ....Test.if.the.value.is.valide.
26140 69 6e 20 74 68 65 20 63 6f 6c 75 6d 6e 20 65 6e 75 6d 65 72 61 74 69 6f 6e 0a 20 20 20 20 0a 20 in.the.column.enumeration.......
26160 20 20 20 6e 61 6d 65 3a 0a 20 20 20 20 20 20 20 20 43 6f 6c 75 6d 6e 20 6e 61 6d 65 20 74 6f 20 ...name:.........Column.name.to.
26180 74 65 73 74 0a 20 20 20 20 0a 20 20 20 20 76 61 6c 75 65 3a 0a 20 20 20 20 20 20 20 20 56 61 6c test..........value:.........Val
261a0 75 65 20 74 6f 20 74 65 73 74 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 3a 20 54 72 75 65 ue.to.test..........return:.True
261c0 20 2f 20 72 61 69 73 65 20 45 72 72 6f 72 0a 20 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 ./.raise.Error.....'''..........
261e0 63 6f 6c 5f 6d 65 74 61 64 61 74 61 20 3d 20 67 65 74 5f 63 6f 6c 75 6d 6e 5f 66 72 6f 6d 5f 6e col_metadata.=.get_column_from_n
26200 61 6d 65 28 6e 61 6d 65 29 0a 20 20 20 20 69 66 20 6e 6f 74 20 63 6f 6c 5f 6d 65 74 61 64 61 74 ame(name).....if.not.col_metadat
26220 61 2e 5f 69 73 5f 65 6e 75 6d 65 72 61 74 69 6f 6e 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 a._is_enumeration:.........raise
26240 20 56 61 6c 75 65 45 72 72 6f 72 28 66 27 54 68 65 20 63 6f 6c 75 6d 6e 20 22 7b 6e 61 6d 65 7d .ValueError(f'The.column."{name}
26260 22 20 69 73 20 6e 6f 74 20 61 20 65 6e 75 6d 65 72 61 74 69 6f 6e 27 29 0a 20 20 20 20 63 6f 6c ".is.not.a.enumeration').....col
26280 5f 76 61 6c 73 20 3d 20 63 6f 6c 5f 6d 65 74 61 64 61 74 61 2e 65 6e 75 6d 5f 76 61 6c 75 65 73 _vals.=.col_metadata.enum_values
262a0 0a 20 20 20 20 69 66 20 76 61 6c 75 65 20 6e 6f 74 20 69 6e 20 63 6f 6c 5f 76 61 6c 73 3a 0a 20 .....if.value.not.in.col_vals:..
262c0 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 66 27 5c 27 7b 76 61 6c .......raise.ValueError(f'\'{val
262e0 75 65 7d 5c 27 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64 65 20 76 61 6c 75 65 20 6f 6e 20 74 ue}\'.is.not.a.valide.value.on.t
26300 68 65 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 22 7b 6e 61 6d 65 7d 22 2e 27 29 0a 20 20 20 20 65 he.enumeration."{name}".').....e
26320 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 0a 64 65 66 20 69 lse:.........return.True...def.i
26340 73 5f 62 6f 6f 6c 5f 76 61 6c 75 65 28 76 61 6c 75 65 3a 20 73 74 72 29 20 2d 3e 20 62 6f 6f 6c s_bool_value(value:.str).->.bool
26360 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 54 65 73 74 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 :.....'''.....Test.if.the.value.
26380 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 61 73 20 61 20 62 6f 75 6c 65 61 6e 20 62 79 20 43 61 is.considered.as.a.boulean.by.Ca
263a0 6c 69 62 72 65 0a 20 20 20 20 0a 20 20 20 20 76 61 6c 75 65 3a 0a 20 20 20 20 20 20 20 20 56 61 libre..........value:.........Va
263c0 6c 75 65 20 74 6f 20 74 65 73 74 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 3a 20 54 72 75 lue.to.test..........return:.Tru
263e0 65 20 2f 20 46 61 6c 73 65 20 2f 20 72 61 69 73 65 20 45 72 72 6f 72 0a 20 20 20 20 27 27 27 0a e./.False./.raise.Error.....'''.
26400 20 20 20 20 0a 20 20 20 20 69 66 20 73 74 72 28 76 61 6c 75 65 29 2e 6c 6f 77 65 72 28 29 20 69 .........if.str(value).lower().i
26420 6e 20 5b 27 79 65 73 27 2c 27 79 27 2c 27 74 72 75 65 27 2c 27 31 27 5d 3a 0a 20 20 20 20 20 20 n.['yes','y','true','1']:.......
26440 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 65 6c 69 66 20 73 74 72 28 76 61 6c 75 65 ..return.True.....elif.str(value
26460 29 2e 6c 6f 77 65 72 28 29 20 69 6e 20 5b 27 6e 6f 27 2c 27 6e 27 2c 27 66 61 6c 73 65 27 2c 27 ).lower().in.['no','n','false','
26480 30 27 5d 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 61 6c 73 65 0a 20 20 20 20 65 6c 0']:.........return.False.....el
264a0 73 65 3a 0a 20 20 20 20 20 20 20 20 72 61 69 73 65 20 56 61 6c 75 65 45 72 72 6f 72 28 66 22 27 se:.........raise.ValueError(f"'
264c0 7b 76 61 6c 75 65 7d 27 20 69 73 20 6e 6f 74 20 63 6f 6e 73 69 64 65 72 65 64 20 61 73 20 61 20 {value}'.is.not.considered.as.a.
264e0 62 6f 75 6c 65 61 6e 20 62 79 20 43 61 6c 69 62 72 65 22 29 0a 0a 0a 63 6c 61 73 73 20 43 6f 6c boulean.by.Calibre")...class.Col
26500 75 6d 6e 54 79 70 65 73 3a 0a 20 20 20 20 62 6f 6f 6c 20 20 20 20 20 20 20 20 20 20 20 3d 20 27 umnTypes:.....bool...........=.'
26520 62 6f 6f 6c 27 0a 20 20 20 20 64 61 74 65 74 69 6d 65 20 20 20 20 20 20 20 3d 20 27 64 61 74 65 bool'.....datetime.......=.'date
26540 74 69 6d 65 27 0a 20 20 20 20 65 6e 75 6d 65 72 61 74 69 6f 6e 20 20 20 20 3d 20 27 65 6e 75 6d time'.....enumeration....=.'enum
26560 65 72 61 74 69 6f 6e 27 0a 20 20 20 20 69 64 65 6e 74 69 66 69 65 72 73 20 20 20 20 3d 20 27 69 eration'.....identifiers....=.'i
26580 64 65 6e 74 69 66 69 65 72 73 27 0a 20 20 20 20 66 6c 6f 61 74 20 20 20 20 20 20 20 20 20 20 3d dentifiers'.....float..........=
265a0 20 27 66 6c 6f 61 74 27 0a 20 20 20 20 69 6e 74 65 67 65 72 20 20 20 20 20 20 20 20 3d 20 27 69 .'float'.....integer........=.'i
265c0 6e 74 65 67 65 72 27 0a 20 20 20 20 6e 61 6d 65 73 20 20 20 20 20 20 20 20 20 20 3d 20 27 6e 61 nteger'.....names..........=.'na
265e0 6d 65 73 27 0a 20 20 20 20 72 61 74 69 6e 67 20 20 20 20 20 20 20 20 20 3d 20 27 72 61 74 69 6e mes'.....rating.........=.'ratin
26600 67 27 0a 20 20 20 20 73 65 72 69 65 73 20 20 20 20 20 20 20 20 20 3d 20 27 73 65 72 69 65 73 27 g'.....series.........=.'series'
26620 0a 20 20 20 20 73 65 72 69 65 73 5f 69 6e 64 65 78 20 20 20 3d 20 27 73 65 72 69 65 73 5f 69 6e .....series_index...=.'series_in
26640 64 65 78 27 0a 20 20 20 20 74 61 67 73 20 20 20 20 20 20 20 20 20 20 20 3d 20 27 74 61 67 73 27 dex'.....tags...........=.'tags'
26660 0a 20 20 20 20 74 65 78 74 20 20 20 20 20 20 20 20 20 20 20 3d 20 27 74 65 78 74 27 0a 20 20 20 .....text...........=.'text'....
26680 20 68 74 6d 6c 20 20 20 20 20 20 20 20 20 20 20 3d 20 27 68 74 6d 6c 27 0a 20 20 20 20 6c 6f 6e .html...........=.'html'.....lon
266a0 67 5f 74 65 78 74 20 20 20 20 20 20 3d 20 27 6c 6f 6e 67 5f 74 65 78 74 27 0a 20 20 20 20 6d 61 g_text......=.'long_text'.....ma
266c0 72 6b 64 6f 77 6e 20 20 20 20 20 20 20 3d 20 27 6d 61 72 6b 64 6f 77 6e 27 0a 20 20 20 20 74 69 rkdown.......=.'markdown'.....ti
266e0 74 6c 65 20 20 20 20 20 20 20 20 20 20 3d 20 27 74 69 74 6c 65 27 0a 20 20 20 20 63 6f 6d 70 6f tle..........=.'title'.....compo
26700 73 69 74 65 5f 74 61 67 20 20 3d 20 27 63 6f 6d 70 6f 73 69 74 65 5f 74 61 67 27 0a 20 20 20 20 site_tag..=.'composite_tag'.....
26720 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 20 3d 20 27 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 composite_text.=.'composite_text
26740 27 0a 20 20 20 20 0a 20 20 20 20 63 6f 76 65 72 20 20 20 20 20 20 20 20 20 20 3d 20 27 63 6f 76 '..........cover..........=.'cov
26760 65 72 27 0a 20 20 20 20 6e 65 77 73 20 20 20 20 20 20 20 20 20 20 20 3d 20 27 6e 65 77 73 27 0a er'.....news...........=.'news'.
26780 0a 0a 63 6c 61 73 73 20 4d 75 74 69 70 6c 65 56 61 6c 75 65 28 64 69 63 74 29 3a 0a 20 20 20 20 ..class.MutipleValue(dict):.....
267a0 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 64 61 74 61 3a 20 64 69 63 74 29 3a 0a def.__init__(self,.data:.dict):.
267c0 20 20 20 20 20 20 20 20 73 65 6c 66 2e 75 70 64 61 74 65 28 64 61 74 61 29 0a 20 20 20 20 0a 20 ........self.update(data).......
267e0 20 20 20 64 65 66 20 5f 5f 72 65 70 72 5f 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 72 ...def.__repr__(self):.........r
26800 65 74 75 72 6e 20 73 65 6c 66 2e 5f 5f 63 6c 61 73 73 5f 5f 2e 5f 5f 6e 61 6d 65 5f 5f 20 2b 27 eturn.self.__class__.__name__.+'
26820 28 27 2b 20 72 65 70 72 28 73 65 6c 66 2e 5f 64 61 74 61 29 5b 31 3a 2d 31 5d 2b 27 29 27 0a 20 ('+.repr(self._data)[1:-1]+')'..
26840 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 75 69 5f 74 6f 5f ........@property.....def.ui_to_
26860 6c 69 73 74 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 list(self).->.str:.........retur
26880 6e 20 73 65 6c 66 2e 5f 64 61 74 61 2e 67 65 74 28 27 75 69 5f 74 6f 5f 6c 69 73 74 27 2c 20 4e n.self._data.get('ui_to_list',.N
268a0 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 one)..........@property.....def.
268c0 6c 69 73 74 5f 74 6f 5f 75 69 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 list_to_ui(self).->.str:........
268e0 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 64 61 74 61 2e 67 65 74 28 27 6c 69 73 74 5f 74 6f 5f .return.self._data.get('list_to_
26900 75 69 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 ui',.None)..........@property...
26920 20 20 64 65 66 20 63 61 63 68 65 5f 74 6f 5f 6c 69 73 74 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 ..def.cache_to_list(self).->.str
26940 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 5f 64 61 74 61 2e 67 65 74 28 :.........return.self._data.get(
26960 27 63 61 63 68 65 5f 74 6f 5f 6c 69 73 74 27 2c 20 4e 6f 6e 65 29 0a 0a 0a 63 6c 61 73 73 20 43 'cache_to_list',.None)...class.C
26980 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 59 6f 75 20 73 olumnMetadata:.....'''.....You.s
269a0 68 6f 75 6c 64 20 6f 6e 6c 79 20 6e 65 65 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 40 70 hould.only.need.the.following.@p
269c0 72 6f 70 65 72 74 79 20 6f 66 20 74 68 65 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 3a 0a 20 roperty.of.the.ColumnMetadata:..
269e0 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 20 73 74 72 69 6e 67 20 28 72 65 61 64 2d 6f ........@property.string.(read-o
26a00 6e 6c 79 29 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 nly).to.identify.the.ColumnMetad
26a20 61 74 61 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 0a 20 20 20 20 20 20 ata.instance.........name.......
26a40 20 20 64 69 73 70 6c 61 79 5f 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 64 65 73 63 72 69 70 74 69 ..display_name.........descripti
26a60 6f 6e 0a 20 20 20 20 20 20 20 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 69 73 5f 63 75 73 74 6f on.........type.........is_custo
26a80 6d 0a 20 20 20 20 20 20 20 20 69 73 5f 63 6f 6d 70 6f 73 69 74 65 0a 20 20 20 20 0a 20 20 20 20 m.........is_composite..........
26aa0 40 70 72 6f 70 65 72 74 79 20 28 72 65 61 64 2d 6f 6e 6c 79 29 20 6f 66 20 43 6f 6c 75 6d 6e 4d @property.(read-only).of.ColumnM
26ac0 65 74 61 64 61 74 61 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 72 65 74 75 72 6e 20 69 73 20 4e etadata.instance.....return.is.N
26ae0 6f 6e 65 20 69 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f one.if.the.column.does.not.suppo
26b00 72 74 20 74 68 69 73 20 65 6c 65 6d 65 6e 74 0a 20 20 20 20 20 20 20 20 61 6c 6c 6f 77 5f 68 61 rt.this.element.........allow_ha
26b20 6c 66 5f 73 74 61 72 73 20 3d 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 63 61 74 65 67 6f 72 79 lf_stars.=.bool.........category
26b40 5f 73 6f 72 74 20 3d 20 73 74 72 69 6e 67 20 3e 20 6f 6e 65 20 6f 66 20 74 68 65 6e 20 5b 4e 6f _sort.=.string.>.one.of.then.[No
26b60 6e 65 2c 20 27 76 61 6c 75 65 27 2c 20 27 6e 61 6d 65 27 5d 0a 20 20 20 20 20 20 20 20 63 6f 6c ne,.'value',.'name'].........col
26b80 6e 75 6d 20 3d 20 69 6e 74 0a 20 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e 20 3d 20 73 74 72 69 6e num.=.int.........column.=.strin
26ba0 67 20 3e 20 6f 6e 65 20 6f 66 20 74 68 65 6e 20 5b 4e 6f 6e 65 2c 20 27 76 61 6c 75 65 27 2c 20 g.>.one.of.then.[None,.'value',.
26bc0 27 6e 61 6d 65 27 5d 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 6f 73 69 74 65 5f 63 6f 6e 74 61 69 'name'].........composite_contai
26be0 6e 73 5f 68 74 6d 6c 20 3d 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 6f 73 69 74 65 ns_html.=.bool.........composite
26c00 5f 6d 61 6b 65 5f 63 61 74 65 67 6f 72 79 20 3d 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 63 6f _make_category.=.bool.........co
26c20 6d 70 6f 73 69 74 65 5f 73 6f 72 74 20 3d 20 73 74 72 69 6e 67 20 3e 20 6f 6e 65 20 6f 66 20 74 mposite_sort.=.string.>.one.of.t
26c40 68 65 6e 20 5b 27 74 65 78 74 27 2c 20 27 6e 75 6d 62 65 72 27 2c 20 27 64 61 74 65 27 2c 20 27 hen.['text',.'number',.'date',.'
26c60 62 6f 6f 6c 27 5d 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 6f 73 69 74 65 5f 74 65 6d 70 6c 61 74 bool'].........composite_templat
26c80 65 20 3d 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 64 61 74 61 74 79 70 65 20 3d 20 73 74 e.=.string.........datatype.=.st
26ca0 72 69 6e 67 0a 20 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 20 3d 20 7b 7d 20 2f 2f 20 63 6f 6e ring.........display.=.{}.//.con
26cc0 74 61 69 6e 73 20 61 6e 20 61 72 62 69 74 72 61 72 79 20 64 61 74 61 20 73 65 74 2e 20 72 65 61 tains.an.arbitrary.data.set..rea
26ce0 6e 61 6c 79 73 20 69 6e 20 6f 74 68 65 72 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 20 20 nalys.in.other.property.........
26d00 65 6e 75 6d 5f 63 6f 6c 6f 72 73 20 3d 20 73 74 72 69 6e 67 5b 5d 0a 20 20 20 20 20 20 20 20 65 enum_colors.=.string[].........e
26d20 6e 75 6d 5f 76 61 6c 75 65 73 20 3d 20 73 74 72 69 6e 67 5b 5d 0a 20 20 20 20 20 20 20 20 68 65 num_values.=.string[].........he
26d40 61 64 69 6e 67 5f 70 6f 73 69 74 69 6f 6e 20 3d 20 73 74 72 69 6e 67 20 3e 20 6f 6e 65 20 6f 66 ading_position.=.string.>.one.of
26d60 20 74 68 65 6e 20 5b 27 74 65 78 74 27 2c 20 27 6e 75 6d 62 65 72 27 2c 20 27 64 61 74 65 27 2c .then.['text',.'number',.'date',
26d80 20 27 62 6f 6f 6c 27 5d 0a 20 20 20 20 20 20 20 20 69 73 5f 63 61 74 65 67 6f 72 79 20 3d 20 62 .'bool'].........is_category.=.b
26da0 6f 6f 6c 0a 20 20 20 20 20 20 20 20 69 73 5f 63 73 70 20 3d 20 62 6f 6f 6c 0a 20 20 20 20 20 20 ool.........is_csp.=.bool.......
26dc0 20 20 69 73 5f 65 64 69 74 61 62 6c 65 20 3d 20 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 69 73 5f ..is_editable.=.bool.........is_
26de0 6d 75 6c 74 69 70 6c 65 20 3d 20 7b 7d 20 2f 2f 20 63 6f 6e 74 61 69 6e 73 20 61 6e 20 61 72 62 multiple.=.{}.//.contains.an.arb
26e00 69 74 72 61 72 79 20 64 61 74 61 20 73 65 74 2e 20 72 65 61 6e 61 6c 79 73 20 69 6e 20 6f 74 68 itrary.data.set..reanalys.in.oth
26e20 65 72 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 20 3e 20 6f 6e 65 er.property.........kind.=.>.one
26e40 20 6f 66 20 74 68 65 6e 20 5b 27 66 69 65 6c 64 27 2c 20 27 63 61 74 65 67 6f 72 79 27 2c 20 27 .of.then.['field',.'category',.'
26e60 75 73 65 72 27 2c 20 27 73 65 61 72 63 68 27 5d 0a 20 20 20 20 20 20 20 20 6c 61 62 65 6c 20 3d user',.'search'].........label.=
26e80 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 6c 69 6e 6b 5f 63 6f 6c 75 6d 6e 20 3d 20 73 74 .string.........link_column.=.st
26ea0 72 69 6e 67 0a 20 20 20 20 20 20 20 20 72 65 63 5f 69 6e 64 65 78 20 3d 20 69 6e 74 0a 20 20 20 ring.........rec_index.=.int....
26ec0 20 20 20 20 20 73 65 61 72 63 68 5f 74 65 72 6d 73 20 3d 20 73 74 72 69 6e 67 5b 5d 0a 20 20 20 .....search_terms.=.string[]....
26ee0 20 20 20 20 20 74 61 62 6c 65 20 3d 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 75 73 65 5f .....table.=.string.........use_
26f00 64 65 63 6f 72 61 74 69 6f 6e 73 20 3d 20 62 6f 6f 6c 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f decorations.=.bool..........@pro
26f20 70 65 72 74 79 20 62 6f 6f 6c 20 28 72 65 61 64 2d 6f 6e 6c 79 29 20 6f 66 20 43 6f 6c 75 6d 6e perty.bool.(read-only).of.Column
26f40 4d 65 74 61 64 61 74 61 20 69 6e 73 74 61 6e 63 65 0a 20 20 20 20 74 68 61 74 20 77 68 69 63 68 Metadata.instance.....that.which
26f60 20 69 64 65 6e 74 69 66 69 65 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 43 6f 6c 75 .identifies.the.type.of.the.Colu
26f80 6d 6e 4d 65 74 61 64 61 74 61 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 5f 69 73 5f mnMetadata.................._is_
26fa0 62 6f 6f 6c 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 61 67 0a 20 bool........._is_composite_tag..
26fc0 20 20 20 20 20 20 20 5f 69 73 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 0a 20 20 20 20 20 20 ......._is_composite_text.......
26fe0 20 20 5f 69 73 5f 64 61 74 65 74 69 6d 65 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 65 6e 75 6d 65 .._is_datetime........._is_enume
27000 72 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 66 6c 6f 61 74 0a 20 20 20 20 20 20 20 ration........._is_float........
27020 20 5f 69 73 5f 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 69 64 65 6e 74 69 66 ._is_integer........._is_identif
27040 69 65 72 73 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 6e 61 6d 65 73 0a 20 20 20 20 20 20 20 20 5f iers........._is_names........._
27060 69 73 5f 72 61 74 69 6e 67 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 73 65 72 69 65 73 0a 20 20 20 is_rating........._is_series....
27080 20 20 20 20 20 5f 69 73 5f 74 61 67 73 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 74 65 78 74 0a 20 ....._is_tags........._is_text..
270a0 20 20 20 20 20 20 20 5f 69 73 5f 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 6c 6f 6e 67 ......._is_html........._is_long
270c0 5f 74 65 78 74 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 6d 61 72 6b 64 6f 77 6e 0a 20 20 20 20 20 _text........._is_markdown......
270e0 20 20 20 5f 69 73 5f 74 69 74 6c 65 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 5f 69 ..._is_title.................._i
27100 73 5f 63 6f 6d 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 5f 69 73 5f 6e 65 77 73 0a 20 20 20 20 s_comments........._is_news.....
27120 27 27 27 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 69 6e 69 74 5f 5f 28 73 65 6c 66 2c 20 '''..........def.__init__(self,.
27140 6d 65 74 61 64 61 74 61 2c 20 69 73 5f 63 75 73 74 6f 6d 3d 54 72 75 65 29 3a 0a 20 20 20 20 20 metadata,.is_custom=True):......
27160 20 20 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 20 3d 20 63 6f 70 79 2e 64 65 65 70 63 6f 70 79 ...self.metadata.=.copy.deepcopy
27180 28 6d 65 74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 63 75 73 74 6f 6d 20 (metadata).........self._custom.
271a0 3d 20 69 73 5f 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 6c =.is_custom..................sel
271c0 66 2e 5f 6d 75 6c 74 69 70 6c 65 20 3d 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 5b 27 69 73 5f f._multiple.=.self.metadata['is_
271e0 6d 75 6c 74 69 70 6c 65 27 5d 20 6f 72 20 7b 7d 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 multiple'].or.{}.........if.self
27200 2e 69 73 5f 63 73 70 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6d 75 6c 74 69 .is_csp:.............self._multi
27220 70 6c 65 20 3d 20 4d 75 74 69 70 6c 65 56 61 6c 75 65 28 7b 27 75 69 5f 74 6f 5f 6c 69 73 74 27 ple.=.MutipleValue({'ui_to_list'
27240 3a 20 27 2c 27 2c 20 27 6c 69 73 74 5f 74 6f 5f 75 69 27 3a 20 27 2c 20 27 2c 20 27 63 61 63 68 :.',',.'list_to_ui':.',.',.'cach
27260 65 5f 74 6f 5f 6c 69 73 74 27 3a 20 27 2c 27 7d 29 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c e_to_list':.','}).........if.sel
27280 66 2e 5f 6d 75 6c 74 69 70 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 6d f._multiple:.............self._m
272a0 75 6c 74 69 70 6c 65 20 3d 20 4d 75 74 69 70 6c 65 56 61 6c 75 65 28 73 65 6c 66 2e 5f 6d 75 6c ultiple.=.MutipleValue(self._mul
272c0 74 69 70 6c 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 tiple).........else:............
272e0 20 73 65 6c 66 2e 5f 6d 75 6c 74 69 70 6c 65 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 20 20 0a .self._multiple.=.None..........
27300 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 79 70 65 20 3d 20 4e 6f 6e 65 0a 20 20 20 20 20 20 ........self._type.=.None.......
27320 20 20 66 6f 72 20 66 75 6e 63 20 69 6e 20 74 79 70 65 70 72 6f 70 65 72 74 79 2e 72 65 67 69 73 ..for.func.in.typeproperty.regis
27340 74 72 79 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 66 75 6e 63 2e 5f 5f 63 61 6c 6c 5f try:.............if.func.__call_
27360 5f 28 73 65 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 5f 74 _(self):.................self._t
27380 79 70 65 20 3d 20 66 75 6e 63 2e 5f 5f 6e 61 6d 65 5f 5f 2e 73 70 6c 69 74 28 27 5f 69 73 5f 27 ype.=.func.__name__.split('_is_'
273a0 2c 20 31 29 5b 2d 31 5d 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 ,.1)[-1]..................if.not
273c0 20 73 65 6c 66 2e 5f 74 79 70 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 .self._type:.............prints(
273e0 27 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 63 6f 6c 75 6d 6e 73 2e 70 79 27 2c 20 73 65 6c 66 2e 'common_utils.columns.py',.self.
27400 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 27 63 6f 6d 6d 6f 6e name).............prints('common
27420 5f 75 74 69 6c 73 2e 63 6f 6c 75 6d 6e 73 2e 70 79 27 2c 20 27 6d 65 74 61 64 61 74 61 27 2c 20 _utils.columns.py',.'metadata',.
27440 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 self.metadata).............raise
27460 20 54 79 70 65 45 72 72 6f 72 28 27 49 6e 76 61 6c 69 64 65 20 43 6f 6c 75 6d 6e 20 6d 65 74 61 .TypeError('Invalide.Column.meta
27480 64 61 74 61 2e 27 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 5f 5f 72 65 70 72 5f 5f 28 73 65 data.')..........def.__repr__(se
274a0 6c 66 29 3a 0a 20 20 20 20 20 20 20 20 23 20 3c 63 61 6c 69 62 72 65 5f 70 6c 75 67 69 6e 73 2e lf):.........#.<calibre_plugins.
274c0 20 5f 5f 6d 6f 64 75 6c 65 5f 5f 20 2e 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 43 6f 6c 75 6d 6e .__module__..common_utils.Column
274e0 4d 65 74 61 64 61 74 61 20 69 6e 73 74 61 6e 63 65 20 61 74 20 30 78 31 31 34 38 43 34 42 38 3e Metadata.instance.at.0x1148C4B8>
27500 0a 20 20 20 20 20 20 20 20 23 20 27 27 2e 6a 6f 69 6e 28 5b 27 3c 27 2c 20 73 74 72 28 73 65 6c .........#.''.join(['<',.str(sel
27520 66 2e 5f 5f 63 6c 61 73 73 5f 5f 29 2c 20 27 20 69 6e 73 74 61 6e 63 65 20 61 74 20 27 2c 20 68 f.__class__),.'.instance.at.',.h
27540 65 78 28 69 64 28 73 65 6c 66 29 29 2c 27 3e 27 5d 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 ex(id(self)),'>']).........retur
27560 6e 20 27 27 2e 6a 6f 69 6e 28 5b 27 3c 27 2c 72 65 70 72 28 73 65 6c 66 2e 6e 61 6d 65 29 2c 27 n.''.join(['<',repr(self.name),'
27580 20 7b 74 79 70 65 3d 27 2c 20 73 65 6c 66 2e 74 79 70 65 2c 27 7d 3e 27 5d 29 0a 20 20 20 20 0a .{type=',.self.type,'}>'])......
275a0 20 20 20 20 27 27 27 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 3a 20 74 68 65 20 6b 65 79 20 74 6f ....'''.........name:.the.key.to
275c0 20 74 68 65 20 64 69 63 74 69 6f 6e 61 72 79 20 69 73 3a 0a 20 20 20 20 20 20 20 20 2d 20 66 6f .the.dictionary.is:.........-.fo
275e0 72 20 73 74 61 6e 64 61 72 64 20 66 69 65 6c 64 73 2c 20 74 68 65 20 6d 65 74 61 64 61 74 61 20 r.standard.fields,.the.metadata.
27600 66 69 65 6c 64 20 6e 61 6d 65 2e 0a 20 20 20 20 20 20 20 20 2d 20 66 6f 72 20 63 75 73 74 6f 6d field.name..........-.for.custom
27620 20 66 69 65 6c 64 73 2c 20 74 68 65 20 6d 65 74 61 64 61 74 61 20 66 69 65 6c 64 20 6e 61 6d 65 .fields,.the.metadata.field.name
27640 20 70 72 65 66 69 78 65 64 20 62 79 20 27 23 27 0a 20 20 20 20 20 20 20 20 54 68 69 73 20 69 73 .prefixed.by.'#'.........This.is
27660 20 64 6f 6e 65 20 74 6f 20 63 72 65 61 74 65 20 74 77 6f 20 27 6e 61 6d 65 73 70 61 63 65 73 27 .done.to.create.two.'namespaces'
27680 20 73 6f 20 74 68 65 20 6e 61 6d 65 73 20 64 6f 6e 27 74 20 63 6c 61 73 68 0a 20 20 20 20 20 20 .so.the.names.don't.clash.......
276a0 20 20 0a 20 20 20 20 20 20 20 20 6c 61 62 65 6c 3a 20 74 68 65 20 61 63 74 75 61 6c 20 63 6f 6c ...........label:.the.actual.col
276c0 75 6d 6e 20 6c 61 62 65 6c 2e 20 4e 6f 20 70 72 65 66 69 78 69 6e 67 2e 0a 20 20 20 20 20 20 20 umn.label..No.prefixing.........
276e0 20 0a 20 20 20 20 20 20 20 20 64 61 74 61 74 79 70 65 3a 20 74 68 65 20 74 79 70 65 20 6f 66 20 ..........datatype:.the.type.of.
27700 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 66 69 65 6c 64 2e 20 56 61 6c 69 64 20 information.in.the.field..Valid.
27720 76 61 6c 75 65 73 20 61 72 65 20 6c 69 73 74 65 64 20 69 6e 0a 20 20 20 20 20 20 20 20 56 41 4c values.are.listed.in.........VAL
27740 49 44 5f 44 41 54 41 5f 54 59 50 45 53 20 62 65 6c 6f 77 2e 0a 20 20 20 20 20 20 20 20 69 73 5f ID_DATA_TYPES.below..........is_
27760 6d 75 6c 74 69 70 6c 65 3a 20 76 61 6c 69 64 20 66 6f 72 20 74 68 65 20 74 65 78 74 20 64 61 74 multiple:.valid.for.the.text.dat
27780 61 74 79 70 65 2e 20 49 66 20 7b 7d 2c 20 74 68 65 20 66 69 65 6c 64 20 69 73 20 74 6f 20 62 65 atype..If.{},.the.field.is.to.be
277a0 0a 20 20 20 20 20 20 20 20 74 72 65 61 74 65 64 20 61 73 20 61 20 73 69 6e 67 6c 65 20 74 65 72 .........treated.as.a.single.ter
277c0 6d 2e 20 49 66 20 6e 6f 74 20 4e 6f 6e 65 2c 20 69 74 20 63 6f 6e 74 61 69 6e 73 20 61 20 64 69 m..If.not.None,.it.contains.a.di
277e0 63 74 20 6f 66 20 74 68 65 20 66 6f 72 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b ct.of.the.form.................{
27800 27 63 61 63 68 65 5f 74 6f 5f 6c 69 73 74 27 3a 20 27 2c 27 2c 0a 20 20 20 20 20 20 20 20 20 20 'cache_to_list':.',',...........
27820 20 20 20 20 20 20 27 75 69 5f 74 6f 5f 6c 69 73 74 27 3a 20 27 2c 27 2c 0a 20 20 20 20 20 20 20 ......'ui_to_list':.',',........
27840 20 20 20 20 20 20 20 20 20 27 6c 69 73 74 5f 74 6f 5f 75 69 27 3a 20 27 2c 20 27 7d 0a 20 20 20 .........'list_to_ui':.',.'}....
27860 20 20 20 20 20 77 68 65 72 65 20 74 68 65 20 63 61 63 68 65 5f 74 6f 5f 6c 69 73 74 20 63 6f 6e .....where.the.cache_to_list.con
27880 74 61 69 6e 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 75 73 65 64 20 74 6f 20 73 70 6c 69 tains.the.character.used.to.spli
278a0 74 20 74 68 65 20 76 61 6c 75 65 20 69 6e 0a 20 20 20 20 20 20 20 20 74 68 65 20 6d 65 74 61 32 t.the.value.in.........the.meta2
278c0 20 74 61 62 6c 65 2c 20 75 69 5f 74 6f 5f 6c 69 73 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 .table,.ui_to_list.contains.the.
278e0 63 68 61 72 61 63 74 65 72 20 75 73 65 64 20 74 6f 20 63 72 65 61 74 65 20 61 20 6c 69 73 74 0a character.used.to.create.a.list.
27900 20 20 20 20 20 20 20 20 66 72 6f 6d 20 61 20 76 61 6c 75 65 20 73 68 6f 77 6e 20 69 6e 20 74 68 ........from.a.value.shown.in.th
27920 65 20 75 69 20 28 65 61 63 68 20 72 65 73 75 6c 74 69 6e 67 20 76 61 6c 75 65 20 6d 75 73 74 20 e.ui.(each.resulting.value.must.
27940 62 65 20 73 74 72 69 70 28 29 65 64 20 61 6e 64 0a 20 20 20 20 20 20 20 20 65 6d 70 74 79 20 76 be.strip()ed.and.........empty.v
27960 61 6c 75 65 73 20 72 65 6d 6f 76 65 64 29 2c 20 61 6e 64 20 6c 69 73 74 5f 74 6f 5f 75 69 20 63 alues.removed),.and.list_to_ui.c
27980 6f 6e 74 61 69 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 75 73 65 64 20 69 6e 20 6a 6f 69 6e 28 ontains.the.string.used.in.join(
279a0 29 0a 20 20 20 20 20 20 20 20 74 6f 20 63 72 65 61 74 65 20 61 20 64 69 73 70 6c 61 79 61 62 6c ).........to.create.a.displayabl
279c0 65 20 73 74 72 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 6c 69 73 74 2e 0a 20 20 20 20 20 20 20 20 e.string.from.the.list..........
279e0 0a 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 66 69 65 6c 64 3a 20 69 73 20 61 20 64 62 20 .........kind.==.field:.is.a.db.
27a00 66 69 65 6c 64 2e 0a 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 63 61 74 65 67 6f 72 79 3a field..........kind.==.category:
27a20 20 73 74 61 6e 64 61 72 64 20 74 61 67 20 63 61 74 65 67 6f 72 79 20 74 68 61 74 20 69 73 6e 27 .standard.tag.category.that.isn'
27a40 74 20 61 20 66 69 65 6c 64 2e 20 73 65 65 20 6e 65 77 73 2e 0a 20 20 20 20 20 20 20 20 6b 69 6e t.a.field..see.news..........kin
27a60 64 20 3d 3d 20 75 73 65 72 3a 20 75 73 65 72 2d 64 65 66 69 6e 65 64 20 74 61 67 20 63 61 74 65 d.==.user:.user-defined.tag.cate
27a80 67 6f 72 79 2e 0a 20 20 20 20 20 20 20 20 6b 69 6e 64 20 3d 3d 20 73 65 61 72 63 68 3a 20 73 61 gory..........kind.==.search:.sa
27aa0 76 65 64 2d 73 65 61 72 63 68 65 73 20 63 61 74 65 67 6f 72 79 2e 0a 20 20 20 20 20 20 20 20 0a ved-searches.category...........
27ac0 20 20 20 20 20 20 20 20 69 73 5f 63 61 74 65 67 6f 72 79 3a 20 69 73 20 61 20 74 61 67 20 62 72 ........is_category:.is.a.tag.br
27ae0 6f 77 73 65 72 20 63 61 74 65 67 6f 72 79 2e 20 49 66 20 74 72 75 65 2c 20 74 68 65 6e 3a 0a 20 owser.category..If.true,.then:..
27b00 20 20 20 20 20 20 20 74 61 62 6c 65 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 64 62 20 74 61 62 .......table:.name.of.the.db.tab
27b20 6c 65 20 75 73 65 64 20 74 6f 20 63 6f 6e 73 74 72 75 63 74 20 69 74 65 6d 20 6c 69 73 74 0a 20 le.used.to.construct.item.list..
27b40 20 20 20 20 20 20 20 63 6f 6c 75 6d 6e 3a 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d .......column:.name.of.the.colum
27b60 6e 20 69 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 74 61 62 6c 65 20 74 6f 20 6a 6f 69 n.in.the.normalized.table.to.joi
27b80 6e 20 6f 6e 0a 20 20 20 20 20 20 20 20 6c 69 6e 6b 5f 63 6f 6c 75 6d 6e 3a 20 6e 61 6d 65 20 6f n.on.........link_column:.name.o
27ba0 66 20 74 68 65 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 f.the.column.in.the.connection.t
27bc0 61 62 6c 65 20 74 6f 20 6a 6f 69 6e 20 6f 6e 2e 20 54 68 69 73 0a 20 20 20 20 20 20 20 20 20 20 able.to.join.on..This...........
27be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 ..............key.should.not.be.
27c00 70 72 65 73 65 6e 74 20 69 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6c 69 6e 6b 20 74 61 62 6c present.if.there.is.no.link.tabl
27c20 65 0a 20 20 20 20 20 20 20 20 63 61 74 65 67 6f 72 79 5f 73 6f 72 74 3a 20 74 68 65 20 66 69 65 e.........category_sort:.the.fie
27c40 6c 64 20 69 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 69 7a 65 64 20 74 61 62 6c 65 20 74 6f 20 73 6f ld.in.the.normalized.table.to.so
27c60 72 74 20 6f 6e 2e 20 54 68 69 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rt.on..This.....................
27c80 20 20 20 20 6b 65 79 20 6d 75 73 74 20 62 65 20 70 72 65 73 65 6e 74 20 69 66 20 69 73 5f 63 61 ....key.must.be.present.if.is_ca
27ca0 74 65 67 6f 72 79 20 69 73 20 54 72 75 65 0a 20 20 20 20 20 20 20 20 49 66 20 74 68 65 73 65 20 tegory.is.True.........If.these.
27cc0 61 72 65 20 4e 6f 6e 65 2c 20 74 68 65 6e 20 74 68 65 20 63 61 74 65 67 6f 72 79 20 63 6f 6e 73 are.None,.then.the.category.cons
27ce0 74 72 75 63 74 6f 72 20 6d 75 73 74 20 6b 6e 6f 77 20 68 6f 77 0a 20 20 20 20 20 20 20 20 74 6f tructor.must.know.how.........to
27d00 20 62 75 69 6c 64 20 74 68 65 20 69 74 65 6d 20 6c 69 73 74 20 28 65 2e 67 2e 2c 20 66 6f 72 6d .build.the.item.list.(e.g.,.form
27d20 61 74 73 2c 20 6e 65 77 73 29 2e 0a 20 20 20 20 20 20 20 20 54 68 65 20 6f 72 64 65 72 20 62 65 ats,.news)..........The.order.be
27d40 6c 6f 77 20 69 73 20 74 68 65 20 6f 72 64 65 72 20 74 68 61 74 20 74 68 65 20 63 61 74 65 67 6f low.is.the.order.that.the.catego
27d60 72 69 65 73 20 77 69 6c 6c 0a 20 20 20 20 20 20 20 20 61 70 70 65 61 72 20 69 6e 20 74 68 65 20 ries.will.........appear.in.the.
27d80 74 61 67 73 20 70 61 6e 65 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 64 69 73 70 tags.pane...................disp
27da0 6c 61 79 5f 6e 61 6d 65 3a 20 74 68 65 20 74 65 78 74 20 74 68 61 74 20 69 73 20 74 6f 20 62 65 lay_name:.the.text.that.is.to.be
27dc0 20 75 73 65 64 20 77 68 65 6e 20 64 69 73 70 6c 61 79 69 6e 67 20 74 68 65 20 66 69 65 6c 64 2e .used.when.displaying.the.field.
27de0 20 43 6f 6c 75 6d 6e 20 68 65 61 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 69 6e 20 74 68 65 20 .Column.headings.........in.the.
27e00 47 55 49 2c 20 65 74 63 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 73 65 61 72 63 GUI,.etc...................searc
27e20 68 5f 74 65 72 6d 73 3a 20 74 68 65 20 74 65 72 6d 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 75 h_terms:.the.terms.that.can.be.u
27e40 73 65 64 20 74 6f 20 69 64 65 6e 74 69 66 79 20 74 68 65 20 66 69 65 6c 64 20 77 68 65 6e 0a 20 sed.to.identify.the.field.when..
27e60 20 20 20 20 20 20 20 73 65 61 72 63 68 69 6e 67 2e 20 54 68 65 79 20 63 61 6e 20 62 65 20 74 68 .......searching..They.can.be.th
27e80 6f 75 67 68 74 20 6f 66 20 61 73 20 61 6c 69 61 73 65 73 20 66 6f 72 20 6d 65 74 61 64 61 74 61 ought.of.as.aliases.for.metadata
27ea0 20 6b 65 79 73 2c 20 62 75 74 20 61 72 65 20 6f 6e 6c 79 0a 20 20 20 20 20 20 20 20 76 61 6c 69 .keys,.but.are.only.........vali
27ec0 64 20 77 68 65 6e 20 70 61 73 73 65 64 20 74 6f 20 73 65 61 72 63 68 28 29 2e 0a 20 20 20 20 20 d.when.passed.to.search().......
27ee0 20 20 20 0a 20 20 20 20 20 20 20 20 69 73 5f 63 75 73 74 6f 6d 3a 20 74 68 65 20 66 69 65 6c 64 ............is_custom:.the.field
27f00 20 68 61 73 20 62 65 65 6e 20 61 64 64 65 64 20 62 79 20 74 68 65 20 75 73 65 72 2e 0a 20 20 20 .has.been.added.by.the.user.....
27f20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 72 65 63 5f 69 6e 64 65 78 3a 20 74 68 65 20 69 6e 64 ..............rec_index:.the.ind
27f40 65 78 20 6f 66 20 74 68 65 20 66 69 65 6c 64 20 69 6e 20 74 68 65 20 64 62 20 6d 65 74 61 64 61 ex.of.the.field.in.the.db.metada
27f60 74 61 20 72 65 63 6f 72 64 2e 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 69 73 5f 63 ta.record...................is_c
27f80 73 70 3a 20 66 69 65 6c 64 20 63 6f 6e 74 61 69 6e 73 20 63 6f 6c 6f 6e 2d 73 65 70 61 72 61 74 sp:.field.contains.colon-separat
27fa0 65 64 20 70 61 69 72 73 2e 20 4d 75 73 74 20 61 6c 73 6f 20 62 65 20 74 65 78 74 2c 20 69 73 5f ed.pairs..Must.also.be.text,.is_
27fc0 6d 75 6c 74 69 70 6c 65 0a 20 20 20 20 20 20 20 20 0a 20 20 20 20 20 20 20 20 27 27 27 0a 20 20 multiple..................'''...
27fe0 20 20 0a 20 20 20 20 23 20 74 79 70 65 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 40 70 72 6f 70 .......#.type.property.....@prop
28000 65 72 74 79 0a 20 20 20 20 64 65 66 20 6e 61 6d 65 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a erty.....def.name(self).->.str:.
28020 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 ........if.self._custom:........
28040 20 20 20 20 20 72 65 74 75 72 6e 20 27 23 27 20 2b 20 73 65 6c 66 2e 6c 61 62 65 6c 0a 20 20 20 .....return.'#'.+.self.label....
28060 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 6c .....else:.............if.self.l
28080 61 62 65 6c 20 3d 3d 20 27 73 6f 72 74 27 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 abel.==.'sort':.................
280a0 72 65 74 75 72 6e 20 27 74 69 74 6c 65 5f 73 6f 72 74 27 0a 20 20 20 20 20 20 20 20 20 20 20 20 return.'title_sort'.............
280c0 72 65 74 75 72 6e 20 73 65 6c 66 2e 6c 61 62 65 6c 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 return.self.label..........@prop
280e0 65 72 74 79 0a 20 20 20 20 64 65 66 20 64 69 73 70 6c 61 79 5f 6e 61 6d 65 28 73 65 6c 66 29 20 erty.....def.display_name(self).
28100 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 ->.str:.........return.self.meta
28120 64 61 74 61 2e 67 65 74 28 27 6e 61 6d 65 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 data.get('name',.None)..........
28140 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 64 65 73 63 72 69 70 74 69 6f 6e 28 73 65 @property.....def.description(se
28160 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e lf).->.str:.........return.self.
28180 64 69 73 70 6c 61 79 2e 67 65 74 28 27 64 65 73 63 72 69 70 74 69 6f 6e 27 2c 20 4e 6f 6e 65 29 display.get('description',.None)
281a0 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 74 79 70 65 ..........@property.....def.type
281c0 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 (self).->.str:.........return.se
281e0 6c 66 2e 5f 74 79 70 65 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a lf._type..........@typeproperty.
28200 20 20 20 20 64 65 66 20 5f 69 73 5f 6e 61 6d 65 73 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a ....def._is_names(self).->.bool:
28220 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 6c 61 62 65 6c 20 .........return.bool(self.label.
28240 3d 3d 20 27 61 75 74 68 6f 72 73 27 20 6f 72 20 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d ==.'authors'.or.(self.datatype.=
28260 3d 20 27 74 65 78 74 27 20 61 6e 64 20 73 65 6c 66 2e 69 73 5f 6d 75 6c 74 69 70 6c 65 20 61 6e =.'text'.and.self.is_multiple.an
28280 64 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 69 73 5f 6e 61 6d 65 73 27 2c 20 46 d.self.display.get('is_names',.F
282a0 61 6c 73 65 29 29 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 alse)))..........@typeproperty..
282c0 20 20 20 64 65 66 20 5f 69 73 5f 74 61 67 73 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 ...def._is_tags(self).->.bool:..
282e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 6c 61 62 65 6c 20 3d 3d .......return.bool(self.label.==
28300 20 27 74 61 67 73 27 20 6f 72 20 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 74 65 .'tags'.or.(self.datatype.==.'te
28320 78 74 27 20 61 6e 64 20 73 65 6c 66 2e 69 73 5f 6d 75 6c 74 69 70 6c 65 20 61 6e 64 20 6e 6f 74 xt'.and.self.is_multiple.and.not
28340 20 28 73 65 6c 66 2e 6c 61 62 65 6c 20 3d 3d 20 27 61 75 74 68 6f 72 73 27 20 6f 72 20 73 65 6c .(self.label.==.'authors'.or.sel
28360 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 69 73 5f 6e 61 6d 65 73 27 2c 20 46 61 6c 73 65 29 f.display.get('is_names',.False)
28380 20 6f 72 20 73 65 6c 66 2e 69 73 5f 63 73 70 29 29 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 .or.self.is_csp)))..........@typ
283a0 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 74 69 74 6c 65 28 73 65 6c 66 eproperty.....def._is_title(self
283c0 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 ).->.bool:.........return.bool(s
283e0 65 6c 66 2e 6c 61 62 65 6c 20 3d 3d 20 27 74 69 74 6c 65 27 20 6f 72 20 28 73 65 6c 66 2e 64 61 elf.label.==.'title'.or.(self.da
28400 74 61 74 79 70 65 20 3d 3d 20 27 63 6f 6d 6d 65 6e 74 73 27 20 61 6e 64 20 73 65 6c 66 2e 64 69 tatype.==.'comments'.and.self.di
28420 73 70 6c 61 79 2e 67 65 74 28 27 69 6e 74 65 72 70 72 65 74 5f 61 73 27 2c 20 4e 6f 6e 65 29 20 splay.get('interpret_as',.None).
28440 3d 3d 20 27 73 68 6f 72 74 2d 74 65 78 74 27 29 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 ==.'short-text'))..........@type
28460 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 74 65 78 74 28 73 65 6c 66 29 20 property.....def._is_text(self).
28480 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c ->.bool:.........return.bool(sel
284a0 66 2e 6c 61 62 65 6c 20 6e 6f 74 20 69 6e 20 5b 27 63 6f 6d 6d 65 6e 74 73 27 2c 20 27 74 69 74 f.label.not.in.['comments',.'tit
284c0 6c 65 27 5d 20 61 6e 64 20 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 74 65 78 74 27 le'].and.self.datatype.==.'text'
284e0 20 61 6e 64 20 6e 6f 74 20 73 65 6c 66 2e 69 73 5f 6d 75 6c 74 69 70 6c 65 29 0a 20 20 20 20 0a .and.not.self.is_multiple)......
28500 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 73 65 ....@typeproperty.....def._is_se
28520 72 69 65 73 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 ries(self).->.bool:.........retu
28540 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 73 65 72 69 65 73 rn.bool(self.datatype.==.'series
28560 27 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 ')..........@typeproperty.....de
28580 66 20 5f 69 73 5f 66 6c 6f 61 74 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 f._is_float(self).->.bool:......
285a0 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 6c 61 62 65 6c 20 3d 3d 20 27 73 69 ...return.bool(self.label.==.'si
285c0 7a 65 27 20 6f 72 20 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 66 6c 6f 61 74 27 ze'.or.(self.datatype.==.'float'
285e0 20 61 6e 64 20 73 65 6c 66 2e 5f 73 72 63 5f 69 73 5f 63 75 73 74 6f 6d 20 61 6e 64 20 73 65 6c .and.self._src_is_custom.and.sel
28600 66 2e 6c 61 62 65 6c 20 21 3d 20 27 73 65 72 69 65 73 5f 69 6e 64 65 78 27 29 29 0a 20 20 20 20 f.label.!=.'series_index')).....
28620 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 73 .....@typeproperty.....def._is_s
28640 65 72 69 65 73 5f 69 6e 64 65 78 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 eries_index(self).->.bool:......
28660 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 6c 61 62 65 6c 20 3d 3d 20 27 73 65 ...return.bool(self.label.==.'se
28680 72 69 65 73 5f 69 6e 64 65 78 27 20 6f 72 20 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d ries_index'.or.(self.datatype.==
286a0 20 27 66 6c 6f 61 74 27 20 61 6e 64 20 6e 6f 74 20 73 65 6c 66 2e 5f 73 72 63 5f 69 73 5f 63 75 .'float'.and.not.self._src_is_cu
286c0 73 74 6f 6d 20 61 6e 64 20 73 65 6c 66 2e 6c 61 62 65 6c 20 21 3d 20 27 73 69 7a 65 27 29 29 0a stom.and.self.label.!=.'size')).
286e0 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f .........@typeproperty.....def._
28700 69 73 5f 69 6e 74 65 67 65 72 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 is_integer(self).->.bool:.......
28720 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 ..return.bool(self.datatype.==.'
28740 69 6e 74 27 20 61 6e 64 20 73 65 6c 66 2e 6c 61 62 65 6c 20 21 3d 20 27 63 6f 76 65 72 27 29 0a int'.and.self.label.!=.'cover').
28760 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f .........@typeproperty.....def._
28780 69 73 5f 63 6f 76 65 72 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 is_cover(self).->.bool:.........
287a0 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 6c 61 62 65 6c 20 3d 3d 20 27 63 6f 76 65 72 return.bool(self.label.==.'cover
287c0 27 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 ')..........@typeproperty.....de
287e0 66 20 5f 69 73 5f 64 61 74 65 74 69 6d 65 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 f._is_datetime(self).->.bool:...
28800 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 ......return.bool(self.datatype.
28820 3d 3d 20 27 64 61 74 65 74 69 6d 65 27 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f ==.'datetime')..........@typepro
28840 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 72 61 74 69 6e 67 28 73 65 6c 66 29 20 2d perty.....def._is_rating(self).-
28860 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 >.bool:.........return.bool(self
28880 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 72 61 74 69 6e 67 27 29 0a 20 20 20 20 0a 20 20 20 20 .datatype.==.'rating')..........
288a0 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 62 6f 6f 6c 28 73 @typeproperty.....def._is_bool(s
288c0 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f elf).->.bool:.........return.boo
288e0 6c 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 62 6f 6f 6c 27 29 0a 20 20 20 20 0a l(self.datatype.==.'bool')......
28900 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 65 6e ....@typeproperty.....def._is_en
28920 75 6d 65 72 61 74 69 6f 6e 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 umeration(self).->.bool:........
28940 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 65 .return.bool(self.datatype.==.'e
28960 6e 75 6d 65 72 61 74 69 6f 6e 27 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a numeration')..........@property.
28980 20 20 20 20 64 65 66 20 65 6e 75 6d 5f 76 61 6c 75 65 73 28 73 65 6c 66 29 20 2d 3e 20 4c 69 73 ....def.enum_values(self).->.Lis
289a0 74 5b 73 74 72 5d 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 5f 69 73 5f 65 6e 75 6d t[str]:.........if.self._is_enum
289c0 65 72 61 74 69 6f 6e 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 20 3d 20 73 65 6c 66 eration:.............rslt.=.self
289e0 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 65 6e 75 6d 5f 76 61 6c 75 65 73 27 2c 20 5b 5d 29 0a .display.get('enum_values',.[]).
28a00 20 20 20 20 20 20 20 20 20 20 20 20 72 73 6c 74 2e 69 6e 73 65 72 74 28 30 2c 20 27 27 29 0a 20 ............rslt.insert(0,.'')..
28a20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 73 6c 74 0a 20 20 20 20 20 20 20 20 65 ...........return.rslt.........e
28a40 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 lse:.............return.None....
28a60 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 65 6e 75 6d 5f 63 6f 6c ......@property.....def.enum_col
28a80 6f 72 73 28 73 65 6c 66 29 20 2d 3e 20 4c 69 73 74 5b 73 74 72 5d 3a 0a 20 20 20 20 20 20 20 20 ors(self).->.List[str]:.........
28aa0 69 66 20 73 65 6c 66 2e 5f 69 73 5f 65 6e 75 6d 65 72 61 74 69 6f 6e 3a 0a 20 20 20 20 20 20 20 if.self._is_enumeration:........
28ac0 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 65 6e .....return.self.display.get('en
28ae0 75 6d 5f 63 6f 6c 6f 72 73 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a um_colors',.None).........else:.
28b00 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 0a 20 20 20 ............return.None.........
28b20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 63 6f 6d 6d 65 6e 74 73 28 .@property.....def._is_comments(
28b40 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f self).->.bool:.........return.bo
28b60 6f 6c 28 73 65 6c 66 2e 6c 61 62 65 6c 20 3d 3d 20 27 63 6f 6d 6d 65 6e 74 73 27 20 6f 72 20 28 ol(self.label.==.'comments'.or.(
28b80 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 27 63 6f 6d 6d 65 6e 74 73 27 20 61 6e 64 20 self.datatype.==.'comments'.and.
28ba0 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 69 6e 74 65 72 70 72 65 74 5f 61 73 27 2c self.display.get('interpret_as',
28bc0 20 4e 6f 6e 65 29 20 21 3d 20 27 73 68 6f 72 74 2d 74 65 78 74 27 29 29 0a 20 20 20 20 0a 20 20 .None).!=.'short-text'))........
28be0 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 6c 6f 6e 67 ..@typeproperty.....def._is_long
28c00 5f 74 65 78 74 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 _text(self).->.bool:.........ret
28c20 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 5f 69 73 5f 63 6f 6d 6d 65 6e 74 73 20 61 6e 64 20 73 urn.bool(self._is_comments.and.s
28c40 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 69 6e 74 65 72 70 72 65 74 5f 61 73 27 2c 20 elf.display.get('interpret_as',.
28c60 4e 6f 6e 65 29 20 3d 3d 20 27 6c 6f 6e 67 2d 74 65 78 74 27 29 0a 20 20 20 20 0a 20 20 20 20 40 None).==.'long-text')..........@
28c80 74 79 70 65 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 6d 61 72 6b 64 6f 77 typeproperty.....def._is_markdow
28ca0 6e 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 n(self).->.bool:.........return.
28cc0 62 6f 6f 6c 28 73 65 6c 66 2e 5f 69 73 5f 63 6f 6d 6d 65 6e 74 73 20 61 6e 64 20 73 65 6c 66 2e bool(self._is_comments.and.self.
28ce0 64 69 73 70 6c 61 79 2e 67 65 74 28 27 69 6e 74 65 72 70 72 65 74 5f 61 73 27 2c 20 4e 6f 6e 65 display.get('interpret_as',.None
28d00 29 20 3d 3d 20 27 6d 61 72 6b 64 6f 77 6e 27 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 ).==.'markdown')..........@typep
28d20 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 68 74 6d 6c 28 73 65 6c 66 29 20 2d roperty.....def._is_html(self).-
28d40 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 >.bool:.........return.bool(self
28d60 2e 6c 61 62 65 6c 20 3d 3d 20 27 63 6f 6d 6d 65 6e 74 73 27 20 6f 72 20 28 73 65 6c 66 2e 5f 69 .label.==.'comments'.or.(self._i
28d80 73 5f 63 6f 6d 6d 65 6e 74 73 20 61 6e 64 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 s_comments.and.self.display.get(
28da0 27 69 6e 74 65 72 70 72 65 74 5f 61 73 27 2c 20 27 68 74 6d 6c 27 29 20 3d 3d 20 27 68 74 6d 6c 'interpret_as',.'html').==.'html
28dc0 27 29 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 69 '))..........@property.....def.i
28de0 73 5f 63 6f 6d 70 6f 73 69 74 65 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 s_composite(self).->.bool:......
28e00 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 64 61 74 61 74 79 70 65 20 3d 3d 20 ...return.bool(self.datatype.==.
28e20 27 63 6f 6d 70 6f 73 69 74 65 27 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 'composite')..........@typeprope
28e40 72 74 79 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 28 73 rty.....def._is_composite_text(s
28e60 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f elf).->.bool:.........return.boo
28e80 6c 28 73 65 6c 66 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 20 61 6e 64 20 73 65 6c 66 2e 69 73 5f l(self.is_composite.and.self.is_
28ea0 6d 75 6c 74 69 70 6c 65 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 multiple)..........@typeproperty
28ec0 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 61 67 28 73 65 6c 66 29 .....def._is_composite_tag(self)
28ee0 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 .->.bool:.........return.bool(se
28f00 6c 66 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 20 61 6e 64 20 6e 6f 74 20 73 65 6c 66 2e 69 73 5f lf.is_composite.and.not.self.is_
28f20 6d 75 6c 74 69 70 6c 65 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 multiple)..........@typeproperty
28f40 0a 20 20 20 20 64 65 66 20 5f 69 73 5f 69 64 65 6e 74 69 66 69 65 72 73 28 73 65 6c 66 29 20 2d .....def._is_identifiers(self).-
28f60 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 >.bool:.........return.bool(self
28f80 2e 69 73 5f 63 73 70 29 0a 20 20 20 20 0a 20 20 20 20 40 74 79 70 65 70 72 6f 70 65 72 74 79 0a .is_csp)..........@typeproperty.
28fa0 20 20 20 20 64 65 66 20 5f 69 73 5f 6e 65 77 73 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a ....def._is_news(self).->.bool:.
28fc0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 6c 61 62 65 6c 20 3d ........return.bool(self.label.=
28fe0 3d 20 27 6e 65 77 73 27 29 0a 20 20 20 20 0a 20 20 20 20 23 20 6f 74 68 65 72 73 0a 20 20 20 20 =.'news')..........#.others.....
29000 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 68 65 61 64 69 6e 67 5f 70 6f 73 69 74 69 @property.....def.heading_positi
29020 6f 6e 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 23 20 27 68 69 64 65 on(self).->.str:.........#.'hide
29040 27 2c 20 27 61 62 6f 76 65 27 2c 20 27 73 69 64 65 27 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 ',.'above',.'side'.........if.se
29060 6c 66 2e 5f 69 73 5f 63 6f 6d 6d 65 6e 74 73 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 lf._is_comments:.............ret
29080 75 72 6e 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 68 65 61 64 69 6e 67 5f 70 6f urn.self.display.get('heading_po
290a0 73 69 74 69 6f 6e 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 sition',.None).........else:....
290c0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 0a 20 20 20 20 40 70 .........return.None..........@p
290e0 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 75 73 65 5f 64 65 63 6f 72 61 74 69 6f 6e 73 28 roperty.....def.use_decorations(
29100 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 23 20 27 68 69 64 65 27 2c 20 self).->.str:.........#.'hide',.
29120 27 61 62 6f 76 65 27 2c 20 27 73 69 64 65 27 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 6c 66 2e 'above',.'side'.........if.self.
29140 5f 69 73 5f 74 65 78 74 20 6f 72 20 73 65 6c 66 2e 5f 69 73 5f 65 6e 75 6d 65 72 61 74 69 6f 6e _is_text.or.self._is_enumeration
29160 20 6f 72 20 73 65 6c 66 2e 5f 69 73 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 3a 0a 20 20 20 .or.self._is_composite_text:....
29180 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 .........return.self.display.get
291a0 28 27 75 73 65 5f 64 65 63 6f 72 61 74 69 6f 6e 73 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 ('use_decorations',.None).......
291c0 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a ..else:.............return.None.
291e0 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 61 6c 6c 6f 77 .........@property.....def.allow
29200 5f 68 61 6c 66 5f 73 74 61 72 73 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 _half_stars(self).->.bool:......
29220 20 20 20 69 66 20 73 65 6c 66 2e 5f 69 73 5f 72 61 74 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 20 ...if.self._is_rating:..........
29240 20 20 20 72 65 74 75 72 6e 20 62 6f 6f 6c 28 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 ...return.bool(self.display.get(
29260 27 61 6c 6c 6f 77 5f 68 61 6c 66 5f 73 74 61 72 73 27 2c 20 46 61 6c 73 65 29 29 0a 20 20 20 20 'allow_half_stars',.False)).....
29280 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e ....else:.............return.Non
292a0 65 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 63 6f 6d e..........@property.....def.com
292c0 70 6f 73 69 74 65 5f 73 6f 72 74 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 posite_sort(self).->.str:.......
292e0 20 20 69 66 20 73 65 6c 66 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 3a 0a 20 20 20 20 20 20 20 20 ..if.self.is_composite:.........
29300 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 63 6f 6d ....return.self.display.get('com
29320 70 6f 73 69 74 65 5f 73 6f 72 74 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 posite_sort',.None).........else
29340 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 0a 20 :.............return.None.......
29360 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 63 6f 6d 70 6f 73 69 74 65 5f 6d ...@property.....def.composite_m
29380 61 6b 65 5f 63 61 74 65 67 6f 72 79 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 ake_category(self).->.bool:.....
293a0 20 20 20 20 69 66 20 73 65 6c 66 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 3a 0a 20 20 20 20 20 20 ....if.self.is_composite:.......
293c0 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 6d ......return.self.display.get('m
293e0 61 6b 65 5f 63 61 74 65 67 6f 72 79 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 ake_category',.None).........els
29400 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 0a e:.............return.None......
29420 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 63 6f 6d 70 6f 73 69 74 65 5f ....@property.....def.composite_
29440 63 6f 6e 74 61 69 6e 73 5f 68 74 6d 6c 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 contains_html(self).->.bool:....
29460 20 20 20 20 20 69 66 20 73 65 6c 66 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 3a 0a 20 20 20 20 20 .....if.self.is_composite:......
29480 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 .......return.self.display.get('
294a0 63 6f 6e 74 61 69 6e 73 5f 68 74 6d 6c 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c contains_html',.None).........el
294c0 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 se:.............return.None.....
294e0 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 63 6f 6d 70 6f 73 69 74 65 .....@property.....def.composite
29500 5f 74 65 6d 70 6c 61 74 65 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 _template(self).->.str:.........
29520 69 66 20 73 65 6c 66 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 3a 0a 20 20 20 20 20 20 20 20 20 20 if.self.is_composite:...........
29540 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 63 6f 6d 70 6f ..return.self.display.get('compo
29560 73 69 74 65 5f 74 65 6d 70 6c 61 74 65 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c site_template',.None).........el
29580 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 se:.............return.None.....
295a0 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 6e 75 6d 62 65 72 5f 66 6f .....@property.....def.number_fo
295c0 72 6d 61 74 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 rmat(self).->.str:.........if.se
295e0 6c 66 2e 5f 69 73 5f 66 6c 6f 61 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e lf._is_float:.............return
29600 20 73 65 6c 66 2e 64 69 73 70 6c 61 79 2e 67 65 74 28 27 6e 75 6d 62 65 72 5f 66 6f 72 6d 61 74 .self.display.get('number_format
29620 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 ',.None).........else:..........
29640 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 ...return.None..........@propert
29660 79 0a 20 20 20 20 64 65 66 20 74 61 62 6c 65 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 y.....def.table(self).->.str:...
29680 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 2e 67 65 74 28 27 ......return.self.metadata.get('
296a0 74 61 62 6c 65 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 table',.None)..........@property
296c0 0a 20 20 20 20 64 65 66 20 63 6f 6c 75 6d 6e 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 .....def.column(self).->.str:...
296e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 2e 67 65 74 28 27 ......return.self.metadata.get('
29700 63 6f 6c 75 6d 6e 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 column',.None)..........@propert
29720 79 0a 20 20 20 20 64 65 66 20 64 61 74 61 74 79 70 65 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 3a y.....def.datatype(self).->.str:
29740 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 2e 67 65 .........return.self.metadata.ge
29760 74 28 27 64 61 74 61 74 79 70 65 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 t('datatype',.None)..........@pr
29780 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 6b 69 6e 64 28 73 65 6c 66 29 20 2d 3e 20 73 74 72 operty.....def.kind(self).->.str
297a0 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 2e 67 :.........return.self.metadata.g
297c0 65 74 28 27 6b 69 6e 64 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 et('kind',.None)..........@prope
297e0 72 74 79 0a 20 20 20 20 64 65 66 20 73 65 61 72 63 68 5f 74 65 72 6d 73 28 73 65 6c 66 29 20 2d rty.....def.search_terms(self).-
29800 3e 20 6c 69 73 74 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 >.list:.........return.self.meta
29820 64 61 74 61 2e 67 65 74 28 27 73 65 61 72 63 68 5f 74 65 72 6d 73 27 2c 20 5b 5d 29 0a 20 20 20 data.get('search_terms',.[])....
29840 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 6c 61 62 65 6c 28 73 65 ......@property.....def.label(se
29860 6c 66 29 20 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e lf).->.str:.........return.self.
29880 6d 65 74 61 64 61 74 61 2e 67 65 74 28 27 6c 61 62 65 6c 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 metadata.get('label',.None).....
298a0 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 63 6f 6c 6e 75 6d 28 73 65 .....@property.....def.colnum(se
298c0 6c 66 29 20 2d 3e 20 69 6e 74 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e lf).->.int:.........return.self.
298e0 6d 65 74 61 64 61 74 61 2e 67 65 74 28 27 63 6f 6c 6e 75 6d 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 metadata.get('colnum',.None)....
29900 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 64 69 73 70 6c 61 79 28 ......@property.....def.display(
29920 73 65 6c 66 29 20 2d 3e 20 64 69 63 74 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 self).->.dict:.........return.se
29940 6c 66 2e 6d 65 74 61 64 61 74 61 2e 67 65 74 28 27 64 69 73 70 6c 61 79 27 2c 20 7b 7d 29 0a 20 lf.metadata.get('display',.{})..
29960 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 69 73 5f 63 75 73 ........@property.....def.is_cus
29980 74 6f 6d 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 tom(self).->.bool:.........retur
299a0 6e 20 73 65 6c 66 2e 5f 63 75 73 74 6f 6d 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 n.self._custom..........@propert
299c0 79 0a 20 20 20 20 64 65 66 20 5f 73 72 63 5f 69 73 5f 63 75 73 74 6f 6d 28 73 65 6c 66 29 20 2d y.....def._src_is_custom(self).-
299e0 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 >.str:.........return.self.metad
29a00 61 74 61 2e 67 65 74 28 27 69 73 5f 63 75 73 74 6f 6d 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 20 ata.get('is_custom',.None)......
29a20 20 20 20 23 20 74 68 65 20 63 75 73 74 6f 6d 20 73 65 72 69 65 73 20 69 6e 64 65 78 20 61 72 65 ...#.the.custom.series.index.are
29a40 20 6e 6f 74 20 6d 61 72 6b 65 64 20 61 73 20 63 75 73 74 6f 6d 20 61 20 69 6e 74 65 72 6e 61 6c .not.marked.as.custom.a.internal
29a60 20 62 6f 6f 6c 20 69 73 20 6e 65 73 65 63 61 72 79 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 .bool.is.nesecary..........@prop
29a80 65 72 74 79 0a 20 20 20 20 64 65 66 20 69 73 5f 63 61 74 65 67 6f 72 79 28 73 65 6c 66 29 20 2d erty.....def.is_category(self).-
29aa0 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 >.bool:.........return.self.meta
29ac0 64 61 74 61 2e 67 65 74 28 27 69 73 5f 63 61 74 65 67 6f 72 79 27 2c 20 46 61 6c 73 65 29 0a 20 data.get('is_category',.False)..
29ae0 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 69 73 5f 6d 75 6c ........@property.....def.is_mul
29b00 74 69 70 6c 65 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 tiple(self).->.bool:.........ret
29b20 75 72 6e 20 73 65 6c 66 2e 5f 6d 75 6c 74 69 70 6c 65 20 69 73 20 6e 6f 74 20 4e 6f 6e 65 0a 20 urn.self._multiple.is.not.None..
29b40 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 6d 75 6c 74 69 70 ........@property.....def.multip
29b60 6c 65 28 73 65 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e le(self).->.bool:.........return
29b80 20 73 65 6c 66 2e 5f 6d 75 6c 74 69 70 6c 65 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 .self._multiple..........@proper
29ba0 74 79 0a 20 20 20 20 64 65 66 20 6c 69 6e 6b 5f 63 6f 6c 75 6d 6e 28 73 65 6c 66 29 20 2d 3e 20 ty.....def.link_column(self).->.
29bc0 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 str:.........return.self.metadat
29be0 61 2e 67 65 74 28 27 6c 69 6e 6b 5f 63 6f 6c 75 6d 6e 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a a.get('link_column',.None)......
29c00 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 63 61 74 65 67 6f 72 79 5f 73 ....@property.....def.category_s
29c20 6f 72 74 28 73 65 6c 66 29 2d 3e 20 73 74 72 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ort(self)->.str:.........return.
29c40 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 2e 67 65 74 28 27 63 61 74 65 67 6f 72 79 5f 73 6f 72 74 self.metadata.get('category_sort
29c60 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 ',.None)..........@property.....
29c80 64 65 66 20 72 65 63 5f 69 6e 64 65 78 28 73 65 6c 66 29 2d 3e 20 69 6e 74 3a 0a 20 20 20 20 20 def.rec_index(self)->.int:......
29ca0 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 2e 67 65 74 28 27 72 65 63 ...return.self.metadata.get('rec
29cc0 5f 69 6e 64 65 78 27 2c 20 4e 6f 6e 65 29 0a 20 20 20 20 0a 20 20 20 20 40 70 72 6f 70 65 72 74 _index',.None)..........@propert
29ce0 79 0a 20 20 20 20 64 65 66 20 69 73 5f 65 64 69 74 61 62 6c 65 28 73 65 6c 66 29 20 2d 3e 20 62 y.....def.is_editable(self).->.b
29d00 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 ool:.........return.self.metadat
29d20 61 2e 67 65 74 28 27 69 73 5f 65 64 69 74 61 62 6c 65 27 2c 20 46 61 6c 73 65 29 0a 20 20 20 20 a.get('is_editable',.False).....
29d40 0a 20 20 20 20 40 70 72 6f 70 65 72 74 79 0a 20 20 20 20 64 65 66 20 69 73 5f 63 73 70 28 73 65 .....@property.....def.is_csp(se
29d60 6c 66 29 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 20 20 20 20 27 27 27 43 6f 6c 6f 6e 2d 53 65 lf).->.bool:.........'''Colon-Se
29d80 70 61 72 61 74 65 64 20 50 61 69 72 73 2c 20 66 69 65 6c 64 20 69 64 65 6e 74 69 66 69 65 72 73 parated.Pairs,.field.identifiers
29da0 27 27 27 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 6d 65 74 61 64 61 74 61 '''.........return.self.metadata
29dc0 2e 67 65 74 28 27 69 73 5f 63 73 70 27 2c 20 46 61 6c 73 65 29 0a 0a 0a 64 65 66 20 5f 74 65 73 .get('is_csp',.False)...def._tes
29de0 74 5f 69 73 5f 63 75 73 74 6f 6d 28 63 6f 6c 75 6d 6e 3a 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 t_is_custom(column:.ColumnMetada
29e00 74 61 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 29 ta,.only_custom:.Optional[bool])
29e20 20 2d 3e 20 62 6f 6f 6c 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f .->.bool:.....'''.....only_custo
29e40 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 m:.........True=.Only.custom....
29e60 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 .....False=.Only.default........
29e80 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 0a 20 20 20 20 69 66 20 .None=.Both.....'''..........if.
29ea0 6f 6e 6c 79 5f 63 75 73 74 6f 6d 20 69 73 20 54 72 75 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 only_custom.is.True:.........ret
29ec0 75 72 6e 20 63 6f 6c 75 6d 6e 2e 69 73 5f 63 75 73 74 6f 6d 0a 20 20 20 20 65 6c 69 66 20 6f 6e urn.column.is_custom.....elif.on
29ee0 6c 79 5f 63 75 73 74 6f 6d 20 69 73 20 46 61 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 ly_custom.is.False:.........retu
29f00 72 6e 20 6e 6f 74 20 63 6f 6c 75 6d 6e 2e 69 73 5f 63 75 73 74 6f 6d 0a 20 20 20 20 65 6c 73 65 rn.not.column.is_custom.....else
29f20 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 0a 0a 64 65 66 20 5f 74 65 73 :.........return.True...def._tes
29f40 74 5f 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 28 63 6f 6c 75 6d 6e 3a 20 43 6f 6c 75 t_include_composite(column:.Colu
29f60 6d 6e 4d 65 74 61 64 61 74 61 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 mnMetadata,.only_custom:.Optiona
29f80 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 2c 20 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 3a l[bool]=None,.include_composite:
29fa0 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 46 61 6c 73 65 29 20 2d 3e 20 62 6f 6f 6c 3a 0a .Optional[bool]=False).->.bool:.
29fc0 20 20 20 20 69 66 20 6e 6f 74 20 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 20 61 6e 64 ....if.not.include_composite.and
29fe0 20 63 6f 6c 75 6d 6e 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 3a 0a 20 20 20 20 20 20 20 20 72 65 .column.is_composite:.........re
2a000 74 75 72 6e 20 46 61 6c 73 65 0a 20 20 20 20 65 6c 69 66 20 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 turn.False.....elif.include_comp
2a020 6f 73 69 74 65 20 61 6e 64 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 20 69 73 20 4e 6f 6e 65 3a 0a 20 osite.and.only_custom.is.None:..
2a040 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 .......return.True.....else:....
2a060 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 65 73 74 5f 69 73 5f 63 75 73 74 6f 6d 28 63 6f 6c 75 .....return._test_is_custom(colu
2a080 6d 6e 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 61 6c 6c 5f 63 mn,.only_custom)...def.get_all_c
2a0a0 6f 6c 75 6d 6e 73 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f olumns(only_custom:.Optional[boo
2a0c0 6c 5d 3d 4e 6f 6e 65 2c 20 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 3a 20 4f 70 74 69 l]=None,.include_composite:.Opti
2a0e0 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 46 61 6c 73 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 onal[bool]=False).->.Dict[str,.C
2a100 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 olumnMetadata]:.....'''.....only
2a120 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 _custom:.........True=.Only.cust
2a140 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 om.........False=.Only.default..
2a160 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 64 65 .......None=.Both.....'''.....de
2a180 66 20 70 72 65 64 69 63 61 74 65 28 63 6f 6c 75 6d 6e 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 f.predicate(column):.........ret
2a1a0 75 72 6e 20 5f 74 65 73 74 5f 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 28 63 6f 6c 75 urn._test_include_composite(colu
2a1c0 6d 6e 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3d 6f 6e 6c 79 5f 63 75 73 74 6f 6d 2c 20 69 6e 63 mn,.only_custom=only_custom,.inc
2a1e0 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 3d 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 lude_composite=include_composite
2a200 29 0a 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 77 68 65 72 65 28 70 ).....return.get_columns_where(p
2a220 72 65 64 69 63 61 74 65 29 0a 0a 0a 64 65 66 20 67 65 74 5f 63 6f 6c 75 6d 6e 5f 66 72 6f 6d 5f redicate)...def.get_column_from_
2a240 6e 61 6d 65 28 6e 61 6d 65 3a 20 73 74 72 29 20 2d 3e 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 name(name:.str).->.ColumnMetadat
2a260 61 3a 0a 20 20 20 20 27 47 65 74 20 74 68 65 20 63 6f 6c 75 6d 6e 20 77 69 74 68 20 74 68 65 20 a:.....'Get.the.column.with.the.
2a280 73 70 65 63 69 66 69 65 64 20 6e 61 6d 65 2c 20 65 6c 73 65 20 4e 6f 6e 65 27 0a 20 20 20 20 64 specified.name,.else.None'.....d
2a2a0 65 66 20 70 72 65 64 69 63 61 74 65 28 63 6f 6c 75 6d 6e 3a 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 ef.predicate(column:.ColumnMetad
2a2c0 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6c 75 6d 6e 2e 6e 61 6d 65 ata):.........return.column.name
2a2e0 20 3d 3d 20 6e 61 6d 65 0a 20 20 20 20 66 6f 72 20 76 20 69 6e 20 67 65 74 5f 63 6f 6c 75 6d 6e .==.name.....for.v.in.get_column
2a300 73 5f 77 68 65 72 65 28 70 72 65 64 69 63 61 74 65 29 2e 76 61 6c 75 65 73 28 29 3a 0a 20 20 20 s_where(predicate).values():....
2a320 20 20 20 20 20 72 65 74 75 72 6e 20 76 0a 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 0a 0a 0a .....return.v.....return.None...
2a340 64 65 66 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 74 79 70 65 2c 20 6f 6e 6c 79 def._get_columns_type(type,.only
2a360 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e _custom:.Optional[bool]=None).->
2a380 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 .Dict[str,.ColumnMetadata]:.....
2a3a0 64 65 66 20 70 72 65 64 69 63 61 74 65 28 63 6f 6c 75 6d 6e 3a 20 43 6f 6c 75 6d 6e 4d 65 74 61 def.predicate(column:.ColumnMeta
2a3c0 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 74 79 70 65 20 3d 3d 20 63 6f 6c 75 6d 6e data):.........if.type.==.column
2a3e0 2e 74 79 70 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 65 73 74 5f .type:.............return._test_
2a400 69 73 5f 63 75 73 74 6f 6d 28 63 6f 6c 75 6d 6e 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 20 is_custom(column,.only_custom)..
2a420 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 .......else:.............return.
2a440 46 61 6c 73 65 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 5f 63 6f 6c 75 6d 6e False..........return.get_column
2a460 73 5f 77 68 65 72 65 28 70 72 65 64 69 63 61 74 65 29 0a 0a 0a 64 65 66 20 67 65 74 5f 63 61 74 s_where(predicate)...def.get_cat
2a480 65 67 6f 72 69 65 73 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f egories(only_custom:.Optional[bo
2a4a0 6f 6c 5d 3d 4e 6f 6e 65 2c 20 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 3a 20 4f 70 74 ol]=None,.include_composite:.Opt
2a4c0 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 ional[bool]=None).->.Dict[str,.C
2a4e0 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 64 65 66 20 70 72 65 64 69 63 61 74 olumnMetadata]:.....def.predicat
2a500 65 28 63 6f 6c 75 6d 6e 3a 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 29 3a 0a 20 20 20 20 20 e(column:.ColumnMetadata):......
2a520 20 20 20 69 66 20 63 6f 6c 75 6d 6e 2e 69 73 5f 63 61 74 65 67 6f 72 79 3a 0a 20 20 20 20 20 20 ...if.column.is_category:.......
2a540 20 20 20 20 20 20 72 65 74 75 72 6e 20 5f 74 65 73 74 5f 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f ......return._test_include_compo
2a560 73 69 74 65 28 63 6f 6c 75 6d 6e 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3d 6f 6e 6c 79 5f 63 75 site(column,.only_custom=only_cu
2a580 73 74 6f 6d 2c 20 69 6e 63 6c 75 64 65 5f 63 6f 6d 70 6f 73 69 74 65 3d 69 6e 63 6c 75 64 65 5f stom,.include_composite=include_
2a5a0 63 6f 6d 70 6f 73 69 74 65 29 0a 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 5f 63 6f 6c 75 6d 6e composite).....return.get_column
2a5c0 73 5f 77 68 65 72 65 28 70 72 65 64 69 63 61 74 65 29 0a 0a 0a 23 20 67 65 74 20 74 79 70 65 0a s_where(predicate)...#.get.type.
2a5e0 64 65 66 20 67 65 74 5f 6e 61 6d 65 73 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f def.get_names(only_custom:.Optio
2a600 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c nal[bool]=None).->.Dict[str,.Col
2a620 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 umnMetadata]:.....'''.....only_c
2a640 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d ustom:.........True=.Only.custom
2a660 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 .........False=.Only.default....
2a680 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 .....None=.Both.....'''.....retu
2a6a0 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 rn._get_columns_type(ColumnTypes
2a6c0 2e 6e 61 6d 65 73 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 74 .names,.only_custom)...def.get_t
2a6e0 61 67 73 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d ags(only_custom:.Optional[bool]=
2a700 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 None).->.Dict[str,.ColumnMetadat
2a720 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 a]:.....'''.....only_custom:....
2a740 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 .....True=.Only.custom.........F
2a760 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d alse=.Only.default.........None=
2a780 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f .Both.....'''.....return._get_co
2a7a0 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 74 61 67 73 2c 20 6f 6e 6c lumns_type(ColumnTypes.tags,.onl
2a7c0 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 65 6e 75 6d 65 72 61 74 69 6f 6e 28 y_custom)...def.get_enumeration(
2a7e0 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 only_custom:.Optional[bool]=None
2a800 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a ).->.Dict[str,.ColumnMetadata]:.
2a820 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 ....'''.....only_custom:........
2a840 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 .True=.Only.custom.........False
2a860 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 =.Only.default.........None=.Bot
2a880 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e h.....'''.....return._get_column
2a8a0 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 65 6e 75 6d 65 72 61 74 69 6f 6e 2c 20 s_type(ColumnTypes.enumeration,.
2a8c0 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 66 6c 6f 61 74 28 6f 6e 6c only_custom)...def.get_float(onl
2a8e0 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d y_custom:.Optional[bool]=None).-
2a900 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 >.Dict[str,.ColumnMetadata]:....
2a920 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 .'''.....only_custom:.........Tr
2a940 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f ue=.Only.custom.........False=.O
2a960 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 nly.default.........None=.Both..
2a980 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 ...'''.....return._get_columns_t
2a9a0 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 66 6c 6f 61 74 2c 20 6f 6e 6c 79 5f 63 75 73 74 ype(ColumnTypes.float,.only_cust
2a9c0 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 69 6e 74 65 67 65 72 28 6f 6e 6c 79 5f 63 75 73 74 6f om)...def.get_integer(only_custo
2a9e0 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b m:.Optional[bool]=None).->.Dict[
2aa00 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 str,.ColumnMetadata]:.....'''...
2aa20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c ..only_custom:.........True=.Onl
2aa40 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 y.custom.........False=.Only.def
2aa60 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a ault.........None=.Both.....'''.
2aa80 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c ....return._get_columns_type(Col
2aaa0 75 6d 6e 54 79 70 65 73 2e 69 6e 74 65 67 65 72 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a umnTypes.integer,.only_custom)..
2aac0 0a 64 65 66 20 67 65 74 5f 64 61 74 65 74 69 6d 65 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f .def.get_datetime(only_custom:.O
2aae0 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c ptional[bool]=None).->.Dict[str,
2ab00 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e .ColumnMetadata]:.....'''.....on
2ab20 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 ly_custom:.........True=.Only.cu
2ab40 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 stom.........False=.Only.default
2ab60 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 .........None=.Both.....'''.....
2ab80 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 return._get_columns_type(ColumnT
2aba0 79 70 65 73 2e 64 61 74 65 74 69 6d 65 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 ypes.datetime,.only_custom)...de
2abc0 66 20 67 65 74 5f 72 61 74 69 6e 67 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e f.get_rating(only_custom:.Option
2abe0 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 al[bool]=None).->.Dict[str,.Colu
2ac00 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 mnMetadata]:.....'''.....only_cu
2ac20 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a stom:.........True=.Only.custom.
2ac40 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 ........False=.Only.default.....
2ac60 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 ....None=.Both.....'''.....retur
2ac80 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e n._get_columns_type(ColumnTypes.
2aca0 72 61 74 69 6e 67 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 73 rating,.only_custom)...def.get_s
2acc0 65 72 69 65 73 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c eries(only_custom:.Optional[bool
2ace0 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 ]=None).->.Dict[str,.ColumnMetad
2ad00 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 ata]:.....'''.....only_custom:..
2ad20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 .......True=.Only.custom........
2ad40 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e .False=.Only.default.........Non
2ad60 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f e=.Both.....'''.....return._get_
2ad80 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 73 65 72 69 65 73 2c columns_type(ColumnTypes.series,
2ada0 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 73 65 72 69 65 73 5f 69 .only_custom)...def.get_series_i
2adc0 6e 64 65 78 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d ndex(only_custom:.Optional[bool]
2ade0 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 =None).->.Dict[str,.ColumnMetada
2ae00 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 ta]:.....'''.....only_custom:...
2ae20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 ......True=.Only.custom.........
2ae40 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 False=.Only.default.........None
2ae60 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 =.Both.....'''.....return._get_c
2ae80 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 73 65 72 69 65 73 5f 69 olumns_type(ColumnTypes.series_i
2aea0 6e 64 65 78 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 74 65 78 ndex,.only_custom)...def.get_tex
2aec0 74 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f t(only_custom:.Optional[bool]=No
2aee0 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d ne).->.Dict[str,.ColumnMetadata]
2af00 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 :.....'''.....only_custom:......
2af20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c ...True=.Only.custom.........Fal
2af40 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 se=.Only.default.........None=.B
2af60 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 oth.....'''.....return._get_colu
2af80 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 74 65 78 74 2c 20 6f 6e 6c 79 5f mns_type(ColumnTypes.text,.only_
2afa0 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 62 6f 6f 6c 28 6f 6e 6c 79 5f 63 75 73 74 custom)...def.get_bool(only_cust
2afc0 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 om:.Optional[bool]=None).->.Dict
2afe0 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 [str,.ColumnMetadata]:.....'''..
2b000 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e ...only_custom:.........True=.On
2b020 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 ly.custom.........False=.Only.de
2b040 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 fault.........None=.Both.....'''
2b060 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f .....return._get_columns_type(Co
2b080 6c 75 6d 6e 54 79 70 65 73 2e 62 6f 6f 6c 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 lumnTypes.bool,.only_custom)...d
2b0a0 65 66 20 67 65 74 5f 68 74 6d 6c 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 ef.get_html(only_custom:.Optiona
2b0c0 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d l[bool]=None).->.Dict[str,.Colum
2b0e0 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 nMetadata]:.....'''.....only_cus
2b100 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 tom:.........True=.Only.custom..
2b120 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 .......False=.Only.default......
2b140 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e ...None=.Both.....'''.....return
2b160 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 68 ._get_columns_type(ColumnTypes.h
2b180 74 6d 6c 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 6d 61 72 6b tml,.only_custom)...def.get_mark
2b1a0 64 6f 77 6e 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d down(only_custom:.Optional[bool]
2b1c0 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 =None).->.Dict[str,.ColumnMetada
2b1e0 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 ta]:.....'''.....only_custom:...
2b200 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 ......True=.Only.custom.........
2b220 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 False=.Only.default.........None
2b240 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 =.Both.....'''.....return._get_c
2b260 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 6d 61 72 6b 64 6f 77 6e olumns_type(ColumnTypes.markdown
2b280 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 6c 6f 6e 67 5f 74 65 ,.only_custom)...def.get_long_te
2b2a0 78 74 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e xt(only_custom:.Optional[bool]=N
2b2c0 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 one).->.Dict[str,.ColumnMetadata
2b2e0 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 ]:.....'''.....only_custom:.....
2b300 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 ....True=.Only.custom.........Fa
2b320 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 lse=.Only.default.........None=.
2b340 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c Both.....'''.....return._get_col
2b360 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 6c 6f 6e 67 5f 74 65 78 74 2c umns_type(ColumnTypes.long_text,
2b380 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 74 69 74 6c 65 28 6f 6e .only_custom)...def.get_title(on
2b3a0 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 ly_custom:.Optional[bool]=None).
2b3c0 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 ->.Dict[str,.ColumnMetadata]:...
2b3e0 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 ..'''.....only_custom:.........T
2b400 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 rue=.Only.custom.........False=.
2b420 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a Only.default.........None=.Both.
2b440 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f ....'''.....return._get_columns_
2b460 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 74 69 74 6c 65 2c 20 6f 6e 6c 79 5f 63 75 73 type(ColumnTypes.title,.only_cus
2b480 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 28 6f 6e tom)...def.get_composite_text(on
2b4a0 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 ly_custom:.Optional[bool]=None).
2b4c0 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 ->.Dict[str,.ColumnMetadata]:...
2b4e0 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 20 20 20 20 20 20 20 54 ..'''.....only_custom:.........T
2b500 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 20 46 61 6c 73 65 3d 20 rue=.Only.custom.........False=.
2b520 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 3d 20 42 6f 74 68 0a Only.default.........None=.Both.
2b540 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f ....'''.....return._get_columns_
2b560 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 2c type(ColumnTypes.composite_text,
2b580 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 63 6f 6d 70 6f 73 69 74 .only_custom)...def.get_composit
2b5a0 65 5f 74 61 67 28 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 20 4f 70 74 69 6f 6e 61 6c 5b 62 6f 6f 6c e_tag(only_custom:.Optional[bool
2b5c0 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 ]=None).->.Dict[str,.ColumnMetad
2b5e0 61 74 61 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 3a 0a 20 ata]:.....'''.....only_custom:..
2b600 20 20 20 20 20 20 20 54 72 75 65 3d 20 4f 6e 6c 79 20 63 75 73 74 6f 6d 0a 20 20 20 20 20 20 20 .......True=.Only.custom........
2b620 20 46 61 6c 73 65 3d 20 4f 6e 6c 79 20 64 65 66 61 75 6c 74 0a 20 20 20 20 20 20 20 20 4e 6f 6e .False=.Only.default.........Non
2b640 65 3d 20 42 6f 74 68 0a 20 20 20 20 27 27 27 0a 20 20 20 20 72 65 74 75 72 6e 20 5f 67 65 74 5f e=.Both.....'''.....return._get_
2b660 63 6f 6c 75 6d 6e 73 5f 74 79 70 65 28 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 63 6f 6d 70 6f 73 69 columns_type(ColumnTypes.composi
2b680 74 65 5f 74 61 67 2c 20 6f 6e 6c 79 5f 63 75 73 74 6f 6d 29 0a 0a 0a 64 65 66 20 67 65 74 5f 70 te_tag,.only_custom)...def.get_p
2b6a0 6f 73 73 69 62 6c 65 5f 66 69 65 6c 64 73 28 29 20 2d 3e 20 54 75 70 6c 65 5b 4c 69 73 74 5b 73 ossible_fields().->.Tuple[List[s
2b6c0 74 72 5d 2c 20 4c 69 73 74 5b 73 74 72 5d 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 47 65 74 tr],.List[str]]:.....'''.....Get
2b6e0 20 74 68 65 20 66 69 65 6c 64 73 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 6c 69 62 72 61 .the.fields.of.the.current.libra
2b700 72 79 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 3a 20 61 6c 6c 5f 66 69 65 6c 64 73 2c 20 ry..........return:.all_fields,.
2b720 77 72 69 74 61 62 6c 65 5f 66 69 65 6c 64 73 0a 20 20 20 20 27 27 27 0a 20 20 20 20 64 65 66 20 writable_fields.....'''.....def.
2b740 70 72 65 64 69 63 61 74 65 28 63 6f 6c 75 6d 6e 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 63 6f predicate(column):.........if.co
2b760 6c 75 6d 6e 2e 6e 61 6d 65 20 6e 6f 74 20 69 6e 20 5b 27 69 64 27 20 2c 20 27 61 75 5f 6d 61 70 lumn.name.not.in.['id'.,.'au_map
2b780 27 2c 20 27 74 69 6d 65 73 74 61 6d 70 27 2c 20 27 66 6f 72 6d 61 74 73 27 2c 20 27 6f 6e 64 65 ',.'timestamp',.'formats',.'onde
2b7a0 76 69 63 65 27 2c 20 27 6e 65 77 73 27 2c 20 27 73 65 72 69 65 73 5f 73 6f 72 74 27 2c 20 27 70 vice',.'news',.'series_sort',.'p
2b7c0 61 74 68 27 2c 20 27 69 6e 5f 74 61 67 5f 62 72 6f 77 73 65 72 27 5d 20 61 6e 64 20 63 6f 6c 75 ath',.'in_tag_browser'].and.colu
2b7e0 6d 6e 2e 74 79 70 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 mn.type:.............return.True
2b800 0a 20 20 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 .........else:.............retur
2b820 6e 20 46 61 6c 73 65 0a 20 20 20 20 0a 20 20 20 20 63 6f 6c 75 6d 6e 73 20 3d 20 67 65 74 5f 63 n.False..........columns.=.get_c
2b840 6f 6c 75 6d 6e 73 5f 77 68 65 72 65 28 70 72 65 64 69 63 61 74 65 29 0a 20 20 20 20 0a 20 20 20 olumns_where(predicate).........
2b860 20 61 6c 6c 5f 66 69 65 6c 64 73 20 3d 20 5b 63 63 2e 6e 61 6d 65 20 66 6f 72 20 63 63 20 69 6e .all_fields.=.[cc.name.for.cc.in
2b880 20 63 6f 6c 75 6d 6e 73 2e 76 61 6c 75 65 73 28 29 5d 0a 20 20 20 20 61 6c 6c 5f 66 69 65 6c 64 .columns.values()].....all_field
2b8a0 73 2e 73 6f 72 74 28 29 0a 20 20 20 20 61 6c 6c 5f 66 69 65 6c 64 73 2e 69 6e 73 65 72 74 28 30 s.sort().....all_fields.insert(0
2b8c0 2c 20 27 7b 74 65 6d 70 6c 61 74 65 7d 27 29 0a 20 20 20 20 77 72 69 74 61 62 6c 65 5f 66 69 65 ,.'{template}').....writable_fie
2b8e0 6c 64 73 20 3d 20 5b 63 63 2e 6e 61 6d 65 20 66 6f 72 20 63 63 20 69 6e 20 63 6f 6c 75 6d 6e 73 lds.=.[cc.name.for.cc.in.columns
2b900 2e 76 61 6c 75 65 73 28 29 20 69 66 20 6e 6f 74 20 63 63 2e 69 73 5f 63 6f 6d 70 6f 73 69 74 65 .values().if.not.cc.is_composite
2b920 5d 0a 20 20 20 20 77 72 69 74 61 62 6c 65 5f 66 69 65 6c 64 73 2e 73 6f 72 74 28 29 0a 20 20 20 ].....writable_fields.sort()....
2b940 20 72 65 74 75 72 6e 20 61 6c 6c 5f 66 69 65 6c 64 73 2c 20 77 72 69 74 61 62 6c 65 5f 66 69 65 .return.all_fields,.writable_fie
2b960 6c 64 73 0a 0a 0a 64 65 66 20 67 65 74 5f 70 6f 73 73 69 62 6c 65 5f 63 6f 6c 75 6d 6e 73 28 29 lds...def.get_possible_columns()
2b980 20 2d 3e 20 4c 69 73 74 5b 73 74 72 5d 3a 0a 20 20 20 20 27 27 27 0a 20 20 20 20 47 65 74 20 74 .->.List[str]:.....'''.....Get.t
2b9a0 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 69 6e 20 74 68 65 20 6c 69 he.name.of.the.columns.in.the.li
2b9c0 62 72 61 72 79 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 3a 20 6c 69 73 74 28 73 74 72 29 brary..........return:.list(str)
2b9e0 0a 20 20 20 20 27 27 27 0a 20 20 20 20 73 74 61 6e 64 61 72 64 20 3d 20 5b 27 74 69 74 6c 65 27 .....'''.....standard.=.['title'
2ba00 2c 20 27 61 75 74 68 6f 72 73 27 2c 20 27 74 61 67 73 27 2c 20 27 73 65 72 69 65 73 27 2c 20 27 ,.'authors',.'tags',.'series',.'
2ba20 70 75 62 6c 69 73 68 65 72 27 2c 20 27 70 75 62 64 61 74 65 27 2c 20 27 72 61 74 69 6e 67 27 2c publisher',.'pubdate',.'rating',
2ba40 20 27 6c 61 6e 67 75 61 67 65 73 27 2c 20 27 6c 61 73 74 5f 6d 6f 64 69 66 69 65 64 27 2c 20 27 .'languages',.'last_modified',.'
2ba60 74 69 6d 65 73 74 61 6d 70 27 2c 20 27 63 6f 6d 6d 65 6e 74 73 27 2c 20 27 61 75 74 68 6f 72 5f timestamp',.'comments',.'author_
2ba80 73 6f 72 74 27 2c 20 27 74 69 74 6c 65 5f 73 6f 72 74 27 2c 20 27 6d 61 72 6b 65 64 27 5d 0a 20 sort',.'title_sort',.'marked']..
2baa0 20 20 20 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f 4e 20 3e 3d 20 28 36 2c 31 37 2c 30 ...if.CALIBRE_VERSION.>=.(6,17,0
2bac0 29 3a 0a 20 20 20 20 20 20 20 20 73 74 61 6e 64 61 72 64 2e 65 78 74 65 6e 64 28 28 27 69 64 27 ):.........standard.extend(('id'
2bae0 2c 20 27 70 61 74 68 27 29 29 0a 20 20 20 20 69 66 20 43 41 4c 49 42 52 45 5f 56 45 52 53 49 4f ,.'path')).....if.CALIBRE_VERSIO
2bb00 4e 20 3e 3d 20 28 39 2c 30 30 2c 30 29 3a 0a 20 20 20 20 20 20 20 20 73 74 61 6e 64 61 72 64 2e N.>=.(9,00,0):.........standard.
2bb20 61 70 70 65 6e 64 28 27 70 61 67 65 73 27 29 0a 20 20 20 20 0a 20 20 20 20 64 65 66 20 70 72 65 append('pages')..........def.pre
2bb40 64 69 63 61 74 65 28 63 6f 6c 75 6d 6e 29 3a 0a 20 20 20 20 20 20 20 20 69 66 20 63 6f 6c 75 6d dicate(column):.........if.colum
2bb60 6e 2e 69 73 5f 63 75 73 74 6f 6d 20 61 6e 64 20 6e 6f 74 20 28 63 6f 6c 75 6d 6e 2e 69 73 5f 63 n.is_custom.and.not.(column.is_c
2bb80 6f 6d 70 6f 73 69 74 65 20 6f 72 20 63 6f 6c 75 6d 6e 2e 5f 69 73 5f 73 65 72 69 65 73 5f 69 6e omposite.or.column._is_series_in
2bba0 64 65 78 29 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 72 75 65 0a 20 20 dex):.............return.True...
2bbc0 20 20 20 20 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 46 ......else:.............return.F
2bbe0 61 6c 73 65 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 73 74 61 6e 64 61 72 64 20 2b 20 alse..........return.standard.+.
2bc00 73 6f 72 74 65 64 28 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 77 68 65 72 65 28 70 72 65 64 69 63 61 sorted(get_columns_where(predica
2bc20 74 65 29 2e 6b 65 79 73 28 29 29 0a 0a 0a 64 65 66 20 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 66 72 te).keys())...def.get_columns_fr
2bc40 6f 6d 5f 64 69 63 74 28 73 72 63 5f 64 69 63 74 3a 20 46 69 65 6c 64 4d 65 74 61 64 61 74 61 2c om_dict(src_dict:.FieldMetadata,
2bc60 20 70 72 65 64 69 63 61 74 65 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f .predicate=None).->.Dict[str,.Co
2bc80 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 43 6f 6e 76 65 72 74 20 61 20 46 69 lumnMetadata]:.....'Convert.a.Fi
2bca0 65 6c 64 4d 65 74 61 64 61 74 61 20 64 69 63 74 20 74 6f 20 61 20 43 6f 6c 75 6d 6e 4d 65 74 61 eldMetadata.dict.to.a.ColumnMeta
2bcc0 64 61 74 61 20 64 69 63 74 27 0a 20 20 20 20 64 65 66 20 5f 70 72 65 64 69 63 61 74 65 28 63 6f data.dict'.....def._predicate(co
2bce0 6c 75 6d 6e 3a 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 29 3a 0a 20 20 20 20 20 20 20 20 72 lumn:.ColumnMetadata):.........r
2bd00 65 74 75 72 6e 20 54 72 75 65 0a 20 20 20 20 70 72 65 64 69 63 61 74 65 20 3d 20 70 72 65 64 69 eturn.True.....predicate.=.predi
2bd20 63 61 74 65 20 6f 72 20 5f 70 72 65 64 69 63 61 74 65 0a 20 20 20 20 72 65 74 75 72 6e 20 7b 63 cate.or._predicate.....return.{c
2bd40 6d 2e 6e 61 6d 65 3a 63 6d 20 66 6f 72 20 63 6d 20 69 6e 20 5b 43 6f 6c 75 6d 6e 4d 65 74 61 64 m.name:cm.for.cm.in.[ColumnMetad
2bd60 61 74 61 28 66 6d 2c 20 6b 2e 73 74 61 72 74 73 77 69 74 68 28 27 23 27 29 29 20 66 6f 72 20 6b ata(fm,.k.startswith('#')).for.k
2bd80 2c 66 6d 20 69 6e 20 73 72 63 5f 64 69 63 74 2e 69 74 65 6d 73 28 29 20 69 66 20 66 6d 2e 67 65 ,fm.in.src_dict.items().if.fm.ge
2bda0 74 28 27 6c 61 62 65 6c 27 2c 20 4e 6f 6e 65 29 5d 20 69 66 20 70 72 65 64 69 63 61 74 65 28 63 t('label',.None)].if.predicate(c
2bdc0 6d 29 7d 0a 0a 0a 64 65 66 20 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 77 68 65 72 65 28 70 72 65 64 m)}...def.get_columns_where(pred
2bde0 69 63 61 74 65 3a 20 43 61 6c 6c 61 62 6c 65 5b 5b 43 6f 6c 75 6d 6e 4d 65 74 61 64 61 74 61 5d icate:.Callable[[ColumnMetadata]
2be00 2c 20 62 6f 6f 6c 5d 3d 4e 6f 6e 65 29 20 2d 3e 20 44 69 63 74 5b 73 74 72 2c 20 43 6f 6c 75 6d ,.bool]=None).->.Dict[str,.Colum
2be20 6e 4d 65 74 61 64 61 74 61 5d 3a 0a 20 20 20 20 27 47 65 74 20 43 6f 6c 75 6d 6e 4d 65 74 61 64 nMetadata]:.....'Get.ColumnMetad
2be40 61 74 61 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 64 20 6c 69 62 72 61 72 79 27 0a 20 20 20 20 ata.of.the.currend.library'.....
2be60 69 66 20 63 75 72 72 65 6e 74 5f 64 62 28 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 if.current_db():.........return.
2be80 67 65 74 5f 63 6f 6c 75 6d 6e 73 5f 66 72 6f 6d 5f 64 69 63 74 28 63 75 72 72 65 6e 74 5f 64 62 get_columns_from_dict(current_db
2bea0 28 29 2e 66 69 65 6c 64 5f 6d 65 74 61 64 61 74 61 2c 20 70 72 65 64 69 63 61 74 65 29 0a 20 20 ().field_metadata,.predicate)...
2bec0 20 20 65 6c 73 65 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 7d 0a 0a 0a 69 66 20 5f ..else:.........return.{}...if._
2bee0 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 27 5f 5f 6d 61 69 6e 5f 5f 27 3a 0a 20 20 20 20 64 65 66 20 77 _name__.==.'__main__':.....def.w
2bf00 61 69 74 5f 65 78 69 74 28 29 3a 0a 20 20 20 20 20 20 20 20 69 6e 70 75 74 28 27 50 72 65 73 73 ait_exit():.........input('Press
2bf20 20 61 6e 79 20 6b 65 79 20 74 6f 20 65 78 69 74 e2 80 a6 27 29 0a 20 20 20 20 20 20 20 20 65 78 .any.key.to.exit...').........ex
2bf40 69 74 28 29 0a 20 20 20 20 0a 20 20 20 20 69 66 20 6c 65 6e 28 73 79 73 2e 61 72 67 76 29 20 3c it()..........if.len(sys.argv).<
2bf60 3d 20 31 3a 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 27 4e 65 65 64 20 74 6f 20 70 61 72 =.1:.........prints('Need.to.par
2bf80 73 65 20 61 20 6c 69 62 72 61 72 79 20 70 61 74 68 20 61 73 20 61 72 67 75 6d 65 6e 74 73 27 29 se.a.library.path.as.arguments')
2bfa0 0a 20 20 20 20 20 20 20 20 77 61 69 74 5f 65 78 69 74 28 29 0a 20 20 20 20 0a 20 20 20 20 70 61 .........wait_exit()..........pa
2bfc0 74 68 20 3d 20 6f 73 2e 70 61 74 68 2e 61 62 73 70 61 74 68 28 73 79 73 2e 61 72 67 76 5b 31 5d th.=.os.path.abspath(sys.argv[1]
2bfe0 29 0a 20 20 20 20 69 66 20 6e 6f 74 20 6f 73 2e 70 61 74 68 2e 65 78 69 73 74 73 28 70 61 74 68 ).....if.not.os.path.exists(path
2c000 29 3a 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 27 54 68 65 20 70 61 74 68 20 22 27 2b 70 ):.........prints('The.path."'+p
2c020 61 74 68 2b 27 22 20 64 6f 6e 5c 27 74 20 65 78 69 73 74 73 27 29 0a 20 20 20 20 20 20 20 20 65 ath+'".don\'t.exists').........e
2c040 78 69 74 28 29 0a 20 20 20 20 0a 20 20 20 20 70 72 69 6e 74 73 28 27 4c 6f 61 64 69 6e 67 20 6c xit()..........prints('Loading.l
2c060 69 62 72 61 72 79 3a 27 2c 20 70 61 74 68 29 0a 20 20 20 20 64 65 66 20 63 75 72 72 65 6e 74 5f ibrary:',.path).....def.current_
2c080 64 62 28 29 3a 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 75 72 72 65 6e 74 5f 64 62 2e db():.........return.current_db.
2c0a0 64 62 0a 20 20 20 20 63 75 72 72 65 6e 74 5f 64 62 2e 64 62 20 3d 20 4c 69 62 72 61 72 79 44 61 db.....current_db.db.=.LibraryDa
2c0c0 74 61 62 61 73 65 28 6c 69 62 72 61 72 79 5f 70 61 74 68 3d 70 61 74 68 2c 20 72 65 61 64 5f 6f tabase(library_path=path,.read_o
2c0e0 6e 6c 79 3d 54 72 75 65 29 0a 20 20 20 20 70 72 69 6e 74 73 28 29 0a 20 20 20 20 0a 20 20 20 20 nly=True).....prints()..........
2c100 70 72 69 6e 74 73 28 27 41 6c 6c 20 63 6f 6c 75 6d 6e 73 3a 27 29 0a 20 20 20 20 66 6f 72 20 6b prints('All.columns:').....for.k
2c120 2c 63 20 69 6e 20 67 65 74 5f 61 6c 6c 5f 63 6f 6c 75 6d 6e 73 28 29 2e 69 74 65 6d 73 28 29 3a ,c.in.get_all_columns().items():
2c140 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 6b 2c 63 29 0a 20 20 20 20 70 72 69 6e 74 73 28 .........prints(k,c).....prints(
2c160 29 0a 20 20 20 20 0a 20 20 20 20 70 72 69 6e 74 73 28 27 41 6c 6c 20 66 75 6e 63 74 69 6f 6e 73 )..........prints('All.functions
2c180 3a 27 29 0a 20 20 20 20 66 6f 72 20 66 20 69 6e 20 5b 67 65 74 5f 61 6c 6c 5f 63 6f 6c 75 6d 6e :').....for.f.in.[get_all_column
2c1a0 73 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 6e 61 6d 65 73 2c 20 67 65 74 5f s,...............get_names,.get_
2c1c0 74 61 67 73 2c 20 67 65 74 5f 65 6e 75 6d 65 72 61 74 69 6f 6e 2c 20 67 65 74 5f 66 6c 6f 61 74 tags,.get_enumeration,.get_float
2c1e0 2c 20 67 65 74 5f 69 6e 74 65 67 65 72 2c 20 67 65 74 5f 64 61 74 65 74 69 6d 65 2c 20 67 65 74 ,.get_integer,.get_datetime,.get
2c200 5f 72 61 74 69 6e 67 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 74 69 74 6c 65 _rating,...............get_title
2c220 2c 20 67 65 74 5f 73 65 72 69 65 73 2c 20 67 65 74 5f 73 65 72 69 65 73 5f 69 6e 64 65 78 2c 20 ,.get_series,.get_series_index,.
2c240 67 65 74 5f 74 65 78 74 2c 20 67 65 74 5f 62 6f 6f 6c 2c 20 67 65 74 5f 68 74 6d 6c 2c 20 67 65 get_text,.get_bool,.get_html,.ge
2c260 74 5f 6d 61 72 6b 64 6f 77 6e 2c 20 67 65 74 5f 6c 6f 6e 67 5f 74 65 78 74 2c 0a 20 20 20 20 20 t_markdown,.get_long_text,......
2c280 20 20 20 20 20 20 20 20 20 67 65 74 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 65 78 74 2c 20 67 65 74 .........get_composite_text,.get
2c2a0 5f 63 6f 6d 70 6f 73 69 74 65 5f 74 61 67 2c 20 67 65 74 5f 63 61 74 65 67 6f 72 69 65 73 5d 3a _composite_tag,.get_categories]:
2c2c0 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 66 2e 5f 5f 6e 61 6d 65 5f 5f 2c 20 6c 69 73 74 .........prints(f.__name__,.list
2c2e0 28 66 28 29 2e 6b 65 79 73 28 29 29 29 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 73 28 29 0a 20 (f().keys())).........prints()..
2c300 20 20 20 0a 20 20 20 20 66 6f 72 20 66 20 69 6e 20 5b 67 65 74 5f 70 6f 73 73 69 62 6c 65 5f 66 ........for.f.in.[get_possible_f
2c320 69 65 6c 64 73 2c 20 67 65 74 5f 70 6f 73 73 69 62 6c 65 5f 63 6f 6c 75 6d 6e 73 5d 3a 0a 20 20 ields,.get_possible_columns]:...
2c340 20 20 20 20 20 20 70 72 69 6e 74 73 28 66 2e 5f 5f 6e 61 6d 65 5f 5f 2c 20 66 28 29 29 0a 20 20 ......prints(f.__name__,.f())...
2c360 20 20 20 20 20 20 70 72 69 6e 74 73 28 29 0a 20 20 20 20 0a 20 20 20 20 63 75 72 72 65 6e 74 5f ......prints()..........current_
2c380 64 62 28 29 2e 63 6c 6f 73 65 28 29 0a 20 20 20 20 77 61 69 74 5f 65 78 69 74 28 29 0a 50 4b 03 db().close().....wait_exit().PK.
2c3a0 04 14 00 00 00 00 00 f2 3b 3d 57 23 88 10 4a 22 27 00 00 22 27 00 00 10 00 00 00 69 6d 61 67 65 ........;=W#..J"'.."'......image
2c3c0 73 2f 6e 6f 74 65 73 2e 70 6e 67 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 80 00 s/notes.png.PNG........IHDR.....
2c3e0 00 00 80 08 06 00 00 00 c3 3e 61 cb 00 00 26 e9 49 44 41 54 78 da ec 9b 05 74 14 67 17 86 53 f7 .........>a...&.IDATx....t.g..S.
2c400 6c 90 e2 50 f7 e2 ee ee 52 89 6e dc dd 71 89 95 b8 3b ee 16 c5 1d e2 21 ee ee 8a 06 4a 0c 97 ff l..P....R.n..q...;.....!....J...
2c420 fd 2f 93 cc 92 ed 26 2c 6d 20 54 e6 3b e7 f9 65 77 27 33 e7 3c ef bd df d7 3b a7 12 dc e2 d6 73 ./....&,m.T.;..ew'3.<....;.....s
2c440 ad d0 e4 7b 83 08 23 c2 87 08 21 ce 71 74 92 a4 3b e7 f7 9d a9 4a d8 7b 24 2f 75 77 48 72 d6 ee ...{..#...!.qt..;....J.{$/uwHr..
2c460 f0 8c 8c 3d 87 73 d2 0e 44 5c 8e fb 0b 7f 2f a4 d5 8d 11 31 e8 45 8a 97 27 d2 08 70 74 8e fd 67 ...=.s..D\..../....1.E..'..pt..g
2c480 6b b0 c9 35 00 5e 4a bd e0 c5 7f 5d 2c be c6 7c ec 3b 59 f6 57 ef 97 46 c8 77 46 fc 50 22 85 13 k..5.^J....],..|.;Y.W..F.wF.P"..
2c4a0 d7 79 82 e3 1b b1 c5 7f bf 88 f8 cd da 3c 84 ad fa 0a 27 d7 0f 47 84 eb 78 9c 73 1e 8b d3 f6 23 .y...........<....'..G..x.s....#
2c4c0 b1 db a4 2f bc 14 5b 7e e3 ad fa 3d a8 43 74 e6 fe 29 c4 d0 3f 2b 7f 01 d1 c8 c9 eb 3c fb 4e 57 .../..[~...=.Ct..)..?+......<.NW
2c4e0 c2 cf 54 59 48 fc 46 cd 0f 51 1a a2 8a 6b 67 4c 3b a4 24 48 49 f0 7b 1f dd b9 08 8a be de 99 e7 ..TYH.F..Q...kgL;.$HI.{.........
2c500 68 24 16 3c af 7c 45 e2 31 27 af f3 ec 0e 4b 87 b7 da 60 81 48 3f 95 77 10 ed 31 19 97 4f 18 32 h$.<.|E.1'....K...`.H?.w..1..O.2
2c520 92 c5 11 b6 f2 4b c1 b5 5b 37 84 76 f6 79 1e 13 8a e2 e4 8f 20 6e 73 f2 3a cf ae a0 04 a1 96 bf .....K..[7.v.y.......ns.:.......
2c540 c7 b4 3f 2a 0e 6a 08 e4 e6 ef 95 43 a4 db 44 9c 75 1a 8d cc 6d 3f e3 ea 19 13 91 00 d4 1e d5 85 ..?*.j.....C..D.u...m?..........
2c560 af ca db 6c 17 a0 bf 7b b7 b3 cf 75 9b 18 d1 91 fc 77 89 4a 02 9d 86 43 48 fe 51 ab 1f 70 e5 94 ...l...{...u.....w.J...CH.Q..p..
2c580 91 40 6c 71 90 a2 c8 81 2f 78 f9 a7 b8 7c d2 48 b4 0b ac 7a da 05 0e 9c bf f4 22 9e ad 92 78 b7 .@lq..../x...|.H...z......"...x.
2c5a0 bd 00 2c 23 d0 79 38 e8 e4 ce 4a 63 0e 78 d7 4e 3f 15 9a b3 4b 9a d9 0a e8 3b 11 ce 3a 8e 16 09 ..,#.y8...Jc.x.N?...K....;..:...
2c5c0 c0 59 a7 31 82 ef f7 1e 2d 78 51 cf b8 ec 8f f2 df 21 6e 10 e8 2c dc 89 bf 41 70 e8 a3 ca 17 92 .Y.1....-xQ......!n..,...Ap.....
2c5e0 5f 12 ac 24 68 e9 01 cb 8c b0 2b 24 b9 e5 9c a0 3e aa e5 33 b5 f7 a8 53 18 33 bf bd 7a da 04 57 _..$h.....+$....>..3...S.3..z..W
2c600 a9 6b 44 b8 8c 13 04 80 66 04 2f ea 39 6f 10 ef b4 0d c0 bc e7 bc f0 21 b1 99 98 43 8c 14 86 23 .kD.....f./.9o.........!...C...#
2c620 c0 da c6 91 95 55 79 48 53 a8 92 13 fc 67 3f ad 76 8d d1 e5 6d af f3 33 53 0d 67 bf cb df 2d 8d .....UyHS....g?.v...m..3S.g...-.
2c640 cb c7 75 71 e9 98 0e 2e 1e d5 a2 ad e1 33 78 f2 df 60 d8 b1 eb dc af cf b8 ff 9c 56 37 0f 9f d3 ..uq.........3x..`.........V7...
2c660 e5 bc b6 01 d8 40 40 0c f7 89 b9 12 ed 2e 6e 79 29 48 7c 4a 02 ef 10 20 44 5a f9 2e e3 3e 82 00 .....@@.......ny)H|J....DZ...>..
2c680 78 2a 48 4c 16 ba 96 ff da 59 f6 bb d2 20 3e 2e 1e d1 44 ed 11 0d d4 1e 52 43 a0 a6 24 3c 14 de x*HL.....Y....>...D.....RC..$<..
2c6a0 04 d1 1c 22 2b f1 86 b8 e7 78 e2 a8 d5 15 c4 b0 41 70 d1 73 0e 7c ac 38 cd 1d 2f 1a dc 04 b1 12 ..."+....x......Ap.s.|.8../.....
2c6c0 8f d9 0e 66 db 38 61 8c ca 70 f5 a7 83 1d fe eb 19 6d af 73 96 95 e0 d1 67 77 e9 3b 6c d0 f8 80 ...f.8a..p.......m.s....gw.;l...
2c6e0 91 5e 73 48 15 35 07 55 90 bb 63 31 dc 15 de 62 89 f8 13 73 1c ab e7 19 10 b5 bd a0 96 80 18 7a .^sH.5.U..c1...b...s...........z
2c700 73 9a db 5f 3e 0a 12 13 48 e0 ff 08 04 aa 7f 80 9a a3 3a b8 72 d2 90 30 c0 e5 13 fa 48 df bc 50 s.._>...H.........:.r..0....H..P
2c720 50 fd 14 04 b7 b6 d7 7a 2b bc be 8e 3e 67 5a fc 61 ab ef 50 1d ae 84 ea 30 45 54 85 f1 69 2a 38 P......z+...>gZ.a..P....0ET..i*8
2c740 0c 6e 0a 6f 33 b8 f2 df 5e f1 27 02 d0 9b 80 18 6a db 5e f0 40 cc 8f 1b 38 cd ed 2f 48 48 bc e6 .n.o3...^.'.....j.^.@...8../HH..
2c760 c5 7f 23 99 15 1c eb 35 05 24 9d dd c7 09 6d 24 fa cd 78 da fe f9 af 2f 65 af f5 54 92 18 4c e2 ..#....5.$....m$..x..../e..T..L.
2c780 ef 10 f4 f9 5b c8 db be 08 95 21 f2 84 1c 2a 82 65 b1 51 bb 3b 5c 15 de 61 70 e7 bf fd ed 9f 9c ....[.....!...*.e.Q.;\..ap......
2c7a0 e6 36 88 71 fa a0 ed 8f 21 86 3a 4e 75 fb cb 5b e1 0d 79 56 ee 36 fd 1e b4 77 6b 31 d2 05 fb f8 .6.q....!.:Nu..[..yV.6...wk1....
2c7c0 61 75 a4 6d 9c 4b df 0b b6 80 80 16 f9 6f 3f 91 5f eb c1 67 f6 77 1c 5a f3 0d 2a 82 64 08 69 94 au.m.K.......o?._..g.w.Z..*.d.i.
2c7e0 1f f8 95 f8 85 11 ef a2 f0 2e 88 f8 bf f0 2e a7 4e 9c d7 97 16 80 cf 2d f2 bb 11 aa ff 76 06 9b ................N......-.....v..
2c800 e7 a9 b9 2a 4d af 66 e5 a6 92 68 56 3a bb 8f 57 1f 54 46 59 90 2c 7c 95 de 62 7e e3 c1 ef 7b df ...*M.f...hV:..W.TFY.,|..b~...{.
2c820 4a 7d c5 41 77 85 3e 0f 48 3c b3 bf 6f d5 ef 89 e2 3d 4b 50 b6 ff 67 94 ed fb 09 a5 4f d8 bb 04 J}.Aw.>.H<..o....=KP..g.....O...
2c840 2e f2 ef 32 98 69 b9 6f a2 fb 75 fb 47 04 80 1e 74 2c 81 ff 02 32 46 a7 c1 ca df 69 f8 b1 90 74 ...2.i.o..u.G...t,...2F....i...t
2c860 76 1f af 0a 55 60 da fa 31 ab 6f 99 7d 9e ad 78 f6 70 b7 59 af 27 b5 fe f9 8c f0 d2 3d 8b 51 b2 v...U`..1.o.}..x.p.Y.'......=.Q.
2c880 67 11 4a 76 2f 44 ce d6 d9 70 96 7f 0f f6 fc a9 f8 d1 3c 87 bd e7 e8 7f 42 00 4e 13 f8 2f 60 a3 g.Jv/D...p........<.....B.N../`.
2c8a0 6e 29 08 c0 05 ef c9 6d a5 b3 fb 38 db d6 49 f0 cf 08 5d f1 a9 40 bc a7 d2 7b 38 b4 f6 6b 14 ee n).....m...8..I...]..@...{8..k..
2c8c0 9c cf 08 2f de bd 00 c5 bb e6 a3 78 e7 3c 14 ed 9c cb bc 26 76 92 7f 1f 86 5a fe 6d ef 79 ea 9f .../.......x.<.....&v....Z.m.y..
2c8e0 10 80 53 04 58 be b6 cc c7 b0 15 05 ff 3a 56 ea b8 08 e4 47 3a 8f 10 da bb a9 95 b3 6d 9c ad 6a ..S.X........:V....G:.......m..j
2c900 51 c9 3b e6 a0 70 fb 6c 62 16 0a b6 cd 44 c1 d6 19 c4 74 e4 6f 99 86 e0 65 9f c1 51 fe 03 18 68 Q.;..p.lb....D....t.o...e..Q...h
2c920 f9 fe 31 74 27 ff 09 01 18 43 e0 df 8e 87 d2 e0 d6 57 bc 6f a3 98 24 d3 de 2d 2c 5d b4 aa 85 a4 ..1t'....C.......W.o..$..-,]....
2c940 b7 11 4e 4c 45 de e6 29 c8 db 34 19 a9 be 63 e1 cc 97 84 83 dc 87 18 63 96 fa c7 fb 8e fe a7 1c ..NLE..)..4...c........c........
2c960 02 a5 08 e5 7f 33 ec 3f bb 87 af fa bc dd 2a 27 e1 cf ac 72 56 78 ee a6 49 c8 dd 38 11 b9 1b 26 .....3.?......*'...rVx..I..8...&
2c980 20 67 c3 78 ec 32 1d 00 7b b9 8f 18 fe 70 4f a9 bf d1 21 90 5b ec 81 2e c5 6f 52 bb 55 4e c2 3b .g.x.2..{....pO...!.[....oR.UN.;
2c9a0 ac 72 92 2e 10 9e 13 38 0e d9 81 63 91 1d 30 06 d1 8e 3f c2 5e fe 23 ac 97 93 04 21 66 f6 f2 0a .r.....8...c..0...?.^.#....!f...
2c9c0 03 c0 8d 7d df 1a 46 27 79 6c d1 ed fe 8c 2a 9f da 7e 95 b3 d2 49 78 b6 ff 68 64 f9 8f 42 96 df ...}..F'yl....*..~...Ix..hd..B..
2c9e0 48 64 f8 8e 80 9f e6 c7 8c fc df e4 78 f4 df 52 16 7f d3 00 70 cb 5d fe 6d 17 3a c9 e3 a4 ed f7 Hd..........x..R....p.].m.:.....
2ca00 1d 57 39 09 6f af ca 59 e9 99 be 23 88 e1 c8 f0 19 86 0c ef a1 38 b2 e6 33 46 3c 01 3b 39 5e c1 .W9.o..Y...#.........8..3F<.;9^.
2ca20 26 5d 89 b7 fe a6 01 e0 46 bf 34 9b af 72 e7 bf 83 cc c0 89 1d 56 39 09 17 a9 72 61 e9 43 90 ee &]......F.4..r.......V9...ra.C..
2ca40 35 98 f8 11 89 ae df c1 59 a9 3b 89 97 82 9d ac 14 6c 65 ba cf 61 ef f7 37 0b 00 b7 5c e5 de 9c 5.......Y.;......le..a..7...\...
2ca60 48 23 5a 6c 37 fc f8 d9 55 2e 22 7c a8 90 f4 34 8f ef 91 ea f1 1d 52 dd bf c5 56 c3 be 2d e2 65 H#Zl7...U."|...4......R...V..-.e
2ca80 bb 81 38 d4 ee 8d b9 51 f0 ab e7 1b 8b 5c 35 27 f9 a1 f5 34 9e 45 9a f7 88 67 4a 4e f3 fc 41 48 ..8....Q.....\5'...4.E...gJN..AH
2caa0 72 aa db 37 48 71 fb 1a 29 ae 5f 21 d9 f5 4b 24 3b 7f 81 0b 8e 9f c3 45 a9 07 6c 64 bb 33 18 a8 r..7Hq..)._!..K$;......E..ld.3..
2cac0 d9 ef ea f0 fe dc 28 f8 d5 33 cf 38 92 19 cf 12 ed 55 b5 90 74 11 e1 2e 5f 30 d2 93 9c 3f 47 92 ......(..3.8.....U..t..._0...?G.
2cae0 d3 67 48 74 fc 84 ba 48 6f 46 bc b5 6c 0f 98 ab 98 e3 4b 8b bc 8e ef cf 8d 82 5f 3d fa da 81 cc .gHt...HoF..l.....K......._=....
2cb00 78 96 60 85 77 5c e5 22 c2 3f 65 a4 27 38 0c 22 06 e2 f8 ea be b0 91 eb c1 c8 5f 27 f7 23 26 99 x.`.w\.".?e.'8.".........._'.#&.
2cb20 5c 10 73 ff 7f e8 28 f8 df 84 95 92 22 33 a2 75 22 48 f8 b3 aa 5c 44 78 82 fd 00 5c 58 df 9f e8 \.s...(....."3.u"H...\Dx...\X...
2cb40 87 f8 df fa c2 51 a9 27 ac 64 09 99 9e 50 d4 d9 25 e6 de dc 28 f8 95 33 9d 2a d4 41 fe 43 86 00 .....Q.'.d...P..%...(..3.*.A.C..
2cb60 cd ee ac f0 8e aa 5c 44 78 bc 5d 1f c4 d9 f5 46 9c 6d 2f c4 d9 7c 8c 75 32 2d 98 29 99 e2 0b 71 ......\Dx.]....F.m/..|.u2-.)...q
2cb80 ad 9f 1b 05 bf 7a 96 aa ad 0d 62 47 b4 21 16 7d 59 e1 1d 55 b9 88 f0 58 9b 9e 88 b5 ee 81 18 eb .....z....bG.!.}Y..U...X........
2cba0 ee 08 b3 e8 ce c8 5f 23 fb d5 bd 25 06 c7 97 89 bd 3f 37 0a 7e f5 8b c4 c7 10 cc a4 2e c2 7a 00 ......_#...%.....?7.~.........z.
2cbc0 2b bc a3 2a 17 12 1e 63 d5 4d c0 b9 35 dd f1 9b 42 2f ac 95 79 42 1f c3 ce 3e 17 17 80 2e 58 4e +..*...c.M..5...B/..yB...>....XN
2cbe0 8a bc 6e 24 fe 21 01 37 95 6e 8c f4 76 da 7a 87 d2 59 a2 09 6f f5 9e 58 23 d3 1b c4 59 fa d3 af ..n$.!.7.n..v.z..Y..o..X#...Y...
2cc00 71 01 f8 07 2c 3b 39 49 3e 3b a6 dd 6e d0 83 91 2e 5e b8 28 7b 8c 5a e4 af 96 e9 83 15 4b 7a f6 q...,;9I>;..n....^.({.Z......Kz.
2cc20 13 dc 80 0b 40 d7 ae c2 58 de 1a e2 11 81 76 68 28 8c e3 85 13 ee 05 31 3c ad 9c 73 1f 0c b6 93 ....@...X.....vh(......1<..s....
2cc40 eb 76 83 26 74 14 80 6e 88 5a c7 0a 7d 7e 22 e9 1a 07 c5 de 58 25 dd b7 95 7e 3e 12 b4 b8 00 bc .v.&t..n.Z..}~".....X%...~>.....
2cc60 aa 00 44 7f 34 9e 15 fe 3c 64 9e e1 e1 fc 4e 29 1c f5 94 c2 05 37 92 6a fd e7 02 e0 af dd 8b 11 ..D.4...<d....N).....7.j........
2cc80 bf 52 ba 1f 56 48 f7 cf b5 90 1d f0 de 2b 0c 00 37 0a 9e bc 34 47 3d 2f 7a 70 53 8b 60 29 5c ca .R..VH.......+..7...4G=/zpS.`)\.
2cca0 9b 8a 8b b9 93 50 9b 35 0a 15 c9 5f 09 c9 a7 2e c0 90 1f 4d 44 f1 90 17 c9 43 ce 29 1e 12 3c 9e .....P.5..._.......MD....C.)..<.
2ccc0 2f 08 c1 66 3d 18 f1 04 96 cb 7c 73 7f 91 de 91 55 e2 9e 8f 1b 05 77 01 47 43 1d 5a 24 c7 75 c7 /..f=.....|s....U.....w.GC.Z$.u.
2cce0 fd fa 40 fc ef d6 2e 01 0f 1a 02 70 a7 6e 3d ea 6b 8c 70 39 7f 11 4a 93 be a5 00 74 43 5e 6b 00 ..@........p.n=.k.p9..J....tC^k.
2cd00 72 23 28 04 e7 79 c8 3e c9 43 ca 0e 29 c4 3b b7 2f ff f4 ca ee 58 2b db 17 54 f5 0c 3f eb 85 8a r#(..y.>.C..).;./....X+..T..?...
2cd20 7f 36 6e 14 dc 35 04 ed f3 03 db 01 ee dd f4 65 e5 0b f1 f8 d6 4e 3c 6e de 8e 47 4d 5b 71 ef 86 .6n..5.........e.....N<n..GM[q..
2cd40 27 05 c2 02 35 d9 73 51 10 3d 10 39 e7 28 00 67 5b c8 a2 2d 22 2d 54 0a 09 7e 52 88 b5 6d 3d f1 '...5.sQ.=.9.(.g[..-"-T..~R..m=.
2cd60 d3 be ef a4 dc 22 7f b9 f4 00 68 a9 da 8b 7f 2e 6e 14 dc f5 01 20 da 04 60 1b 09 f7 c1 c3 06 3f ....."....h.....n.......`......?
2cd80 fa df 24 ff 16 c9 6f de 4a 01 d8 8c 47 8d 1b e9 f3 40 ea 0e fe b8 5d e7 84 da ec 85 d4 0d 06 32 ..$...o.J...G....@....]........2
2cda0 f2 b3 4e f3 90 49 64 9c 92 44 fa 31 49 24 6e e6 61 93 5e 6f 46 fc f2 5f 07 c0 44 5e 1e 3f 9a 65 ..N..Id..D.1I$n.a.^oF.._..D^.?.e
2cdc0 8a 7f 2e 6e 14 dc 75 9c 3e 68 c5 c8 2f 8a fb 18 0f 1a 37 b7 54 7c 73 00 1e d7 5b a2 a1 9c 8f 47 ...n..u.>h../.....7.T|s...[....G
2cde0 37 2d f0 f0 e6 72 3c aa b7 c2 c3 7a 47 92 ef cd 6c 0d f7 7e f7 46 5d a1 0e 85 c6 13 77 6f 38 e3 7-...r<....zG...l..~.F].....wo8.
2ce00 46 b9 3e 6d 11 63 29 00 dd 90 71 92 02 70 a2 85 60 f7 9e b0 56 19 80 a5 d2 df 61 ba 51 a4 f8 67 F.>m.c)...q..p..`...V.....a.Q..g
2ce20 e2 46 c1 5d c7 e0 65 79 2a b9 d1 c3 6f 52 00 50 9a f8 25 53 ed 4c 00 9a 3c f1 f0 77 33 5c c9 9e .F.]..ey*...oR.P..%S.L..<..w3\..
2ce40 87 47 bf 9b e0 e1 0d 43 3c b8 ae 87 fb 75 da b8 7f 4d 13 f7 ae e9 a2 ae 40 06 97 b2 64 28 08 ee .G.....C<....u...M......@...d(..
2ce60 b4 2d b8 32 21 b8 7b dd 11 8d b5 ab 50 95 39 8f ba 41 6f a4 1d 97 44 2a 75 82 e4 c3 3c 04 fb 2d .-.2!.{.....P.9..Ao...D*u...<..-
2ce80 2a 52 5c 97 a8 db a9 67 e6 46 c1 9d 5f 2a a3 f4 16 28 8f d6 6d 22 c0 a2 31 41 0b f6 3a 06 38 b6 *R\....g.F.._*...(..m"..1A..:.8.
2cea0 d5 11 55 d9 81 b8 7f 63 39 6a 53 a7 a0 3a 69 1c 9a 2a 15 da c8 d7 c0 bd ab aa b8 98 3e 01 15 f1 ..U....c9jS..:i..*..........>...
2cec0 43 e8 37 a3 71 ab f6 67 34 d7 2c 46 73 ad 02 6e 5f 31 c3 9d 6b 76 b8 7d cd 16 b7 ae 5a 13 eb 50 C.7.q..g4.,Fs..n_1..kv.}....Z..P
2cee0 9d b9 18 69 27 7a 53 08 28 08 87 24 91 44 d0 7f 67 24 84 7d c4 fe 5b be dc 1c a0 ab 96 fa 38 fd ...i'zS.(..$.D..g$.}..[.......8.
2cf00 4f 95 c7 e8 36 b3 e2 3b c2 68 b6 1e 7c 2c 34 50 12 35 01 d7 72 e7 e2 41 9d 4e 4b e5 5f 55 c3 cd O...6..;.h..|,4P.5..r..A.NK._U..
2cf20 92 85 a8 24 f9 15 f1 83 51 93 3c 0a b7 6a 96 a0 b9 7a 21 9a aa e6 a1 b1 72 36 31 9f c2 a0 81 5b ...$....Q.<..j...z!.....r61....[
2cf40 57 56 11 eb d0 7c 69 25 ea ab cd 51 96 38 91 e4 f3 90 74 50 12 89 e1 92 48 08 e3 dd 49 08 93 34 WV...|i%...Q.8....tP....H...I..4
2cf60 e3 02 d0 85 8b e4 bb b2 92 ed b5 5d 11 ee 77 18 ae 86 de 30 98 69 29 90 2f dc 19 74 e1 6a a0 8e ...........]..w....0.i)./..t.j..
2cf80 d8 10 6d 34 54 a9 e3 ce 65 45 54 25 8e 04 55 3f f1 23 6a 52 46 50 f5 2f 42 53 f5 7c 0a c0 1c 92 ..m4T...eET%..U?.#jRFP./BS.|....
2cfa0 3f 13 0d 15 d3 50 5f 3e 85 98 8a c6 6a 45 5c 2f d3 46 d3 a5 65 68 ba 68 89 ba 62 65 1a 26 7d d6 ?....P_>....jE\/.F..eh.h..be.&}.
2cfc0 1a 00 49 5c 08 95 44 fc 91 9e 1f 75 55 00 b8 00 8c d6 8b 65 e5 66 9d cd 44 f1 85 42 14 c6 e4 23 ..I\..D....uU......e.f..D..B...#
2cfe0 3f 32 07 91 7b 22 b1 6d dd 0e 58 f1 d7 43 7d 82 a1 48 18 34 27 ea c0 cd 58 0d 27 36 cd 47 51 c4 ?2..{".m..X..C}..H.4'...X.'6.GQ.
2d000 50 54 c4 fd 40 5b c4 30 aa fe 05 24 7f 2e a8 fa 49 fe 0c 34 90 f8 fa b2 49 f8 bd 64 1c 05 e4 1b PT..@[.0...$....I..4....I..d....
2d020 d4 57 ca 33 f2 1b 9f 50 6b 4e dd c0 08 39 67 bf 45 42 68 6b 00 82 79 b9 69 c7 fa bd cf 05 a0 0b .W.3...PkN...9g.EBhk..y.i.......
2d040 96 ca 68 9d 64 92 09 95 b1 7a 28 8c cd 47 51 7c 01 0a a2 f3 90 77 3e 1b 39 67 32 91 79 22 0d e9 ..h.d....z(..GQ|.....w>.9g2.y"..
2d060 47 52 90 14 92 80 30 b7 50 68 4f 31 6d b7 33 68 4e d2 81 af 05 9f 5a fa 0c 92 3f 9f e4 53 f5 57 GR....0.PhO1m.3hN.....Z...?..S.W
2d080 cc 24 f9 d3 48 fe 64 5c 2f 1a 43 1d e2 33 94 44 f4 a7 20 4c 67 c4 13 68 a8 31 45 45 da 42 92 cf .$..H.d\/.C..3.D...Lg..h.1EE.B..
2d0a0 63 e4 5f 08 91 44 4c c8 07 83 b9 51 70 17 21 33 7b 7d 3c 2b 71 b5 9c 2d 22 f6 9c 47 ee f9 1c e4 c._..DL....Qp.!3{}<+q..-"..G....
2d0c0 9e cb 42 f6 a9 0c 64 1c 4b 45 da e1 64 a4 84 25 22 31 38 1e b1 3b 23 b1 ff b7 fd 58 af e2 0c ed ..B...d.KE..d..%"18..;#....X....
2d0e0 c9 c6 ed 86 e1 c4 16 69 d4 15 ce a1 ea 9f ce b4 fe 6b 39 23 50 1a fd 09 4a 22 fb a3 38 a2 1f 55 .......i.........k9#P...J"..8..U
2d100 be 19 61 81 86 5a 33 54 a6 2f a6 d6 ff 54 fe 91 ed c6 67 b8 51 70 17 31 63 55 26 1c d7 39 8a 08 ..a..Z3T./...T....g.Qp.1cU&..9..
2d120 d4 22 b1 b6 aa 8e d8 61 b3 0b e7 b6 9f 45 ea c1 24 24 87 26 20 e1 40 1c 13 80 a8 ad e7 11 b1 f1 .".....a.....E..$$.&..@.........
2d140 0c ce f8 9f c4 f6 55 3b 60 23 bf 1e 9a c2 5b 04 fd 0d 6d 6c 5c 23 87 d4 c3 a3 48 fc 20 62 00 53 ......U;`#....[...ml\#....H..b.S
2d160 fd 65 31 03 05 ad bf 36 fb 57 24 84 4b b5 ca ef 09 27 8f 03 dc 28 b8 2b f8 61 69 1e 02 36 ef 47 .e1....6.W$.K....'...(.+.ai..6.G
2d180 56 e4 34 6a f7 52 08 5c 35 19 c6 73 95 58 79 22 18 cc b2 84 87 81 0f 0e 79 1c 44 cc f6 08 44 6e V.4j.R.\5..s.Xy"........y.D...Dn
2d1a0 39 87 f3 1b 4e e3 ac df 49 9c f6 3e 86 13 ee 47 70 c8 3e 04 5e 3a de 30 9e b5 54 e4 7a 6b 25 05 9...N...I..>...Gp.>.^:.0..T.zk%.
2d1c0 9c db 36 0a 45 54 fd 17 b3 a6 51 00 cc 71 b5 58 1d 89 07 bb 0b 2a df c1 2d 98 1b 05 77 05 32 d6 ..6.ET....Q..q.X.....*..-...w.2.
2d1e0 29 88 38 ba 4c e8 ad 5e 51 7c 77 5c 2b 5a 88 aa 6c 5b ac d7 b3 80 f6 34 fd 0e c3 e0 a4 e9 86 03 ).8.L..^Q|w\+Z..l[.....4........
2d200 76 fb 71 96 aa ff 8c ef 09 9c f2 3c 8a e3 ae 87 71 d4 29 1c 87 d7 87 22 dc 36 08 eb a4 6d a1 36 v.q........<....q.)....".6...m.6
2d220 ce 40 e4 da 95 d2 2a 88 0a 32 42 7d b5 31 4d 06 3f 17 c8 f7 f7 dd c4 8d 82 bb 82 82 d8 be 02 e9 .@....*..2B}.1M.?...............
2d240 65 89 03 71 fb ea 4a 76 d2 27 e0 71 a3 3d 6e 5f d4 c2 a5 cc 19 28 8e 19 83 84 43 43 71 74 fb 38 e..q..Jv.'.q.=n_.....(....CCqt.8
2d260 6c b1 97 c5 6a be 5a bb a1 30 9f b7 02 be fa be 08 b3 3a 80 70 9b 20 21 c2 6c 0e c0 9b 3a 83 c1 l...j.Z..0........:.p..!.l...:..
2d280 74 0b a1 6b 4c 17 c8 61 c7 6f 33 b0 78 75 2a 37 0a 7e d9 4c 59 9a a3 1a 7f 4a 2f 82 95 7f 29 77 t..kL..a.o3.xu*7.~.LY....J/...)w
2d2a0 22 1e 36 fa b7 15 4f 6c 26 f9 76 34 d4 91 41 55 d2 04 54 27 8f 47 5d de 7c 1a ea 28 e2 f6 25 2d ".6...Ol&.v4..AU..T'.G].|..(..%-
2d2c0 54 66 29 20 f9 fc 62 78 2f 9b 06 cb 5f 64 a1 32 46 47 f4 ec 30 d1 08 76 f2 f6 ac 7c 61 ac 83 e0 Tf)...bx/..._d.2FG..0..v...|a...
2d2e0 ab eb 07 e3 99 c2 5b c4 2c e5 43 b6 dc 28 f8 25 ae a8 28 89 37 e9 b5 ee 5e 56 fe 8d 32 05 92 bd ......[.,.C..(.%..(.7...^V..2...
2d300 a3 8d f8 1d 34 e7 77 c1 e3 fa a5 34 eb 37 45 4d ca 24 5c 2f 5c 42 13 3e 6d 9a f7 1b d0 c8 57 97 ....4.w....4.7EM.$\/\B.>m.....W.
2d320 46 be 5a 34 eb 57 47 f3 45 65 1c df f1 15 8e 6e fb 1c 21 fe df c0 c3 7c 2a 8c e6 aa 88 04 c1 72 F.Z4.WG.Ee.....n..!....|*......r
2d340 fe 6a f8 1b f8 23 cc ba 9d 8e 40 9f 99 cc 5a d6 e6 f7 7a 01 12 2f 67 71 01 48 4b 93 78 8b a4 87 .j...#....@...Z...z../gq.HK.x...
2d360 b2 f2 9b 2e 9a 08 57 7d f3 46 3c 6e 58 4d f2 2d 49 b4 09 ae 64 cd 26 d1 fa 22 2f 7b d8 79 ff ad ......W}.F<nXM.-I...d.&.."/{.y..
2d380 1a 59 94 c6 fe 80 e4 a3 df e2 5c d0 10 c4 1c 9d 80 98 63 13 71 c0 6f 26 ac d5 e4 a0 3a 56 b8 2b .Y........\.......c.q.o&....:V.+
2d3a0 18 cd b0 64 aa 9e aa 5f 28 04 41 6b f7 41 65 b4 5e eb ef 74 e2 b9 00 bc 84 05 48 bc 4e d2 f7 0b ...d..._(.Ak.Ae.^..t......H.N...
2d3c0 0e 7a 71 3d 84 e4 d3 db 3d 12 bf ac 45 7e 9d 11 ae 17 2c a1 b1 ae 0e c9 37 25 f9 46 24 5f 5f 68 .zq=....=...E~....,.....7%.F$__h
2d3e0 de 7f f7 8a 32 05 64 32 9d 0d c6 d3 90 67 11 b1 18 a5 a9 b3 10 7f 62 02 ce 87 0e a5 30 8c c6 a9 ....2.d2.....g........b.....0...
2d400 7d 63 e1 b5 7c 81 48 47 a0 fd 9f ce 01 3e cc 79 e0 49 00 42 ad f6 83 46 d0 cc 77 f4 df 49 5c 00 }c..|.HG.....>.y.I.B...F..w..I\.
2d420 5e c2 2a 8a e1 05 3c 95 ff 31 bd 8d 5b db 2a 7f 27 ed f5 8e 8c 78 46 fe 0d 13 34 d7 aa b3 ff 9f ^.*...<..1..[.*.'....xF...4.....
2d440 b6 01 e3 3f b6 7e 0a 80 0a cd f7 65 70 31 63 3c 1d 10 7f c5 ad da 9f 04 f3 fe 2b 39 63 91 1f 3f ...?.~.....ep1c<..........+9c..?
2d460 06 71 c7 47 23 ea c8 08 44 1d 1e 8a 1d 4e 93 61 ba 48 51 24 08 fa d3 cc e1 a5 ed 05 47 65 e7 b6 .q.G#...D....N.a.HQ$........Ge..
2d480 9f 6f e7 02 f0 82 57 61 8c 94 ed 53 f9 dd e9 b4 bf 4e b0 df d3 41 8f 11 dd 1e 8f 6e 9a b7 d3 fa .o....Wa...S.....N...A.....n....
2d4a0 99 ea 27 f1 f2 b8 73 49 ee e9 ab 5e 9a f7 37 96 cf a2 c3 e2 8f cc bc ff 7a f1 14 e4 c4 8c a6 00 ..'...sI...^..7.........z.......
2d4c0 0c 41 e4 c1 ef 70 3e ec 6b ec 70 19 07 f3 9f e4 05 b2 db e1 31 6d 01 13 b8 00 bc 48 f9 71 92 7c .A...p>.k.p.........1m.....H.q.|
2d4e0 12 ff bf ff b3 77 16 50 6d 6d 4f 17 7f 9f 7f 95 24 38 54 b1 57 a8 bb 3f 77 af 0b f5 96 ba bb bb .....w.PmmO.....$8T.W..?w.......
2d500 bb bb bb bb 1b c5 dd 8a bb bb 43 bd fd db fc f7 9d 24 87 9b 26 3c f7 17 d6 9a 15 bc 0d bf bd 67 ..........C......$..&<.........g
2d520 e6 cc 39 f7 46 d4 fd dc 69 b2 25 de 92 aa e0 23 a6 42 00 93 90 11 c6 40 00 23 85 fb 5f 14 0c 82 ..9.F...i.%....#.B.....@.#.._...
2d540 00 fa a3 3c f4 c5 6a a0 17 04 d0 05 02 f8 8a dd 9f 13 de 9a f2 1e b6 86 00 d4 f3 fe b2 e4 ce 94 ...<..j.........................
2d560 1f dd 8e 1e 5c 6c 28 09 00 a5 c1 91 ee 9f b3 a7 13 5b 7b d3 f4 5e ae af c3 ff d7 80 f6 a3 e6 ff ....\l(..........[{..^..........
2d580 8c 4f dd b8 17 10 e3 d9 b2 42 0b be 30 b1 bb ac e6 1f 11 ce 37 18 70 be ba f1 1b af 57 f7 5f e4 .O.......B..0.......7.p.....W._.
2d5a0 f5 63 e7 3f cb 91 e0 77 17 fb fc 59 c1 cd b1 0d dc 88 2a 52 78 a7 8f e1 97 26 75 a0 d2 c4 b6 58 .c.?...w...Y......*Rx....&u....X
2d5c0 45 34 c7 e9 a0 26 94 1a e4 44 be d7 6c c9 fd ca bb e4 71 a3 37 79 5c ef 49 a7 b6 d5 a7 b3 5b 6b E4...&...D..l.....q.7y\.I.....[k
2d5e0 d2 9a 0d c7 57 fc 8c cf dd b8 17 d0 79 66 a4 18 f2 e4 44 76 e2 43 9b 95 ce 5f f9 1d ce 9f 2c 6a ....W.......yf....Dv.C..._....,j
2d600 bf a8 fb c2 f9 2e 70 7e 6f 51 fb e1 7c 34 8c 6f 53 9a 9f 33 e5 45 b4 e2 cd 9e b2 94 b7 20 80 8e ......p~oQ..|4.oS..3.E..........
2d620 10 40 3b 2a 49 6c 0d 01 34 85 00 1a 51 61 ac 13 15 c4 bc 49 49 41 ed c8 ff 5e 5f 72 bf de 83 6e .@;*Il..4...Qa.....IIA...^_r...n
2d640 9c ec 8c cd 22 05 1d d9 f5 73 9c 04 36 ee 05 88 d9 fe ad 8b 4b 18 7e 5a b0 13 9f d2 ad ec f6 37 ...."....s..6.......K.~Z.......7
2d660 54 05 5f d4 7d cd b2 0f f0 47 89 25 9f e4 fe e7 c2 fd 3d 45 ed 97 f6 f9 b3 50 f7 53 21 80 92 84 T._.}....G.%......=E.....P.S!...
2d680 ce 1a f7 77 02 fc f6 70 7f 1b 7c ae 25 e0 37 06 fc 86 54 18 d3 80 0a a2 1d d0 28 da 51 69 1a 4e ...w...p..|.%.7...T.......(.Qi.N
2d6a0 13 85 0f a6 50 8f 9e e4 75 52 49 6e c7 da 50 bb 19 51 3f c7 f3 37 ee 05 1c 39 7a 80 e1 27 f9 d9 ....P...uRIn..P..Q?..7...9z..'..
2d6c0 e0 44 ee c6 4a f8 4f 76 f0 80 e7 bb eb fe 38 c0 1d 80 f4 3f a2 8a ba df 5d 7b cc 0b 60 3b b3 fb .D..J.Ov......8....?....]{..`;..
2d6e0 33 02 1b 8b ba 5f a6 4e fd 80 df 4a 9d fe 63 e1 fe 68 09 be 23 15 00 7e 7e 64 3d 2a 4a f8 90 ca 3...._.N...J..c..h..#..~~d=*J...
2d700 d2 47 40 08 ae e4 79 42 49 1e c7 95 34 7d d9 ad 9f fa dc 8d 7b 01 4b b7 dc 04 7c 4b 84 0a dd fe .G@...yBI...4}......{.K...|K....
2d720 3c dd d1 6e f9 cc ef 70 ff 64 34 7c e3 70 68 a3 17 40 0f e6 ce 5f ed fe 01 ba a9 5f 2c fb be 04 <..n...p.d4|.ph..@..._....._,...
2d740 f8 26 70 bf 13 5c dd 1a 02 d0 4d fd 70 3f 04 d0 0c 69 1f e5 21 d2 01 02 b0 c7 f7 d5 c7 fb 75 f0 .&p..\....M.p?...i..!.........u.
2d760 be 73 a5 00 00 df 03 b1 67 eb e6 9f f2 dc 8d 7b 01 2b b7 5d 9f 11 eb e5 f4 4c 53 fb 65 f0 0f 89 .s......g......{.+.].....LS.e...
2d780 09 9f 6e 4c 97 37 7e 00 3e 86 ca 93 ba 03 64 2f bc cf cd 5f 15 a9 5f 1c f2 e4 d4 9f e6 db 00 8e ..nL.7~.>.....d/..._.._.........
2d7a0 ef 24 52 bf dc fd 68 fe e0 78 47 0c 8c 6c 01 1f 11 59 17 bd 42 6d 7c 6c 4d 25 a9 fd 21 80 a1 10 .$R...h..xG..l...Y..Bm|lM%..!...
2d7c0 80 8a 3c 8e 29 e9 ce a1 0f b2 7e e4 73 37 ee 05 c4 7a 58 d6 8c f7 56 c6 68 e1 e3 22 4e 59 c7 bf ..<.).....~.s7...zX...V.h.."NY..
2d7e0 c4 10 7c 8c 7e f7 42 18 b3 a5 d4 0f d0 23 01 af 1b e0 49 73 7f 57 d1 fc e9 a4 7e dd a1 0f 96 7b ..|.~.B......#....Is.W....~....{
2d800 9f 40 00 0d b0 02 68 82 c6 af b3 6e e3 97 d0 42 34 7f 39 80 9f 1b 5e 4f ed fe 88 3a 80 6f 83 8f .@....h....n...B4.9...^O...:.o..
2d820 2d 51 06 3e 85 08 86 50 f0 95 7a e4 7e 4c 41 ee 47 15 ff b8 75 c2 4c 69 9c 03 fc f0 31 ef 7f c8 -Q.>...P..z.~LA.G...u.Li....1...
2d840 67 fc 69 21 ce b8 4c 6b 9f a6 e9 5b 67 00 3e 4a c1 93 ed 1a 81 ec a7 e7 f9 63 a8 2c b1 1b 5c db g.i!..Lk...[g.>J.........c.,..\.
2d860 05 ae 76 d1 99 f7 23 f5 eb 35 7e 9a 43 9e a8 eb 1d 28 d5 f7 4d f4 01 6d b5 ee 07 fc 36 22 f5 ab ..v...#..5~.C....(..M..m....6"..
2d880 9b 3f 67 ca 0e a9 87 19 01 9c cf ee af 05 01 58 e1 63 73 ca 8f c1 f7 a6 0e a6 98 07 cd 25 f8 f4 .?g............X.cs..........%..
2d8a0 e0 88 02 07 45 14 6f 1b 05 f0 83 27 7d aa 39 5a f8 89 be 96 68 fc d6 89 a6 4f 0f 7e c5 1c c9 f9 ....E.o....'}.9Z....h....O.~....
2d8c0 a2 3c bc 2c 59 0b d7 77 07 b8 2e 00 d8 85 5e 15 0c 97 af fb 01 bf af 58 f3 cb cf f7 97 a7 7d 4c .<.,Y..w......^........X......}L
2d8e0 e9 58 f7 a7 fb 3b a1 e9 33 d0 f8 21 f5 17 71 e7 ef 84 55 42 1d ca 09 ab ad 4d fd 80 6f 81 8f 4d .X...;..3..!..q...UB.....M..o..M
2d900 29 37 c2 91 05 90 1c f0 2e c3 67 01 1c 56 b8 1a 05 f0 bd d3 be f2 4d 40 2f ab dc da ed ad 3b ec )7........g..V........M@/.....;.
2d920 91 83 7f b4 4c 67 db 17 01 88 a3 01 8d 9d 0f f8 5d 01 5e c0 17 b5 5f cf f9 32 f8 a9 5c fb 3b 88 ....Lg..........].^..._..2..\.;.
2d940 25 9f 3e fc 06 70 bd 1d 8e 86 5b 53 56 a8 b5 0e fc ec 50 25 65 85 d4 c0 ff 19 9b 4a f1 2e e4 76 %.>..p....[SV.....P%e......J...v
2d960 58 41 6e 87 14 74 ef 90 e2 bc 51 00 df b7 e6 fb a8 a2 b5 f0 b3 a3 3a c0 d9 62 d8 a3 b3 c1 83 fd XAn..t....Q...........:..b......
2d980 7d bd 93 3e 7f 2b df 0b 70 ec 7c d4 eb af e9 59 f6 40 43 e3 5e d4 fd ee d2 b8 57 d4 fd 47 19 9f }..>.+..p.|....Y.@C.^.....W..G..
2d9a0 62 29 d7 9e 6b 3f d2 3f 52 7f 07 75 dd 4f 90 06 3e a8 fb 71 4d 79 d9 07 e7 f3 b2 2f 27 b4 2e 26 b)..k?.?R..u.O..>..qMy...../'..&
2d9c0 84 56 e8 13 2c a5 ba 0f f8 66 80 af 02 fc 9a 2c 80 e2 e4 de 54 9c e2 ca 02 b8 0f 01 b8 1d 54 78 .V..,....f.....,....T.........Tx
2d9e0 fd d5 46 c1 f6 88 bd 3f 34 3c 6f 4c 4a 15 35 3f d8 11 27 7a 76 c9 86 3d 5b 44 a3 87 f7 75 c0 23 ..F....?4<oLJ.5?..'zv..=[D...u.#
2da00 70 f5 ee 01 7a 92 2b a5 fe ae c2 fd a2 ee bf b6 ec 13 03 1f 4d dd c7 46 0f dc df 50 82 8f 70 a8 p...z.+.............M..F...P..p.
2da20 aa ee 43 00 6f a2 e3 b7 03 f8 da 94 e1 6f 81 47 0b ae fb d9 61 26 10 80 82 e1 4b 51 84 ff 43 69 ..C.o........o.G....a&....KQ..Ci
2da40 fa 68 7a 70 d4 4c aa ff 74 75 cf d7 e5 fc 1c 7f 5a d8 ff 51 46 c1 ae 3f 76 9d 2b 6a be 9f 25 bd .hzp.L..tu......Z..QF..?v.+j..%.
2da60 2a 5d a3 73 a8 43 b3 af 8f f7 85 28 44 fc e3 f1 21 5c 8f b7 09 20 47 49 f0 01 4d 72 ff 80 aa e7 *].s.C.....(D...!\....GI..Mr....
2da80 fd ba d7 f5 01 6a 5b 80 67 f7 a3 fe 37 a8 a2 ee f3 d0 07 6e af 87 dd 41 1b 4a f3 37 c3 a3 99 3c .....j[.g...7......n...A.J.7...<
2daa0 f5 8b 28 4c f8 02 02 18 4b de a7 6c e8 1e 04 70 7d ef c7 3f d7 1c 60 c8 1f 41 00 c5 3f e6 c9 ad ..(L....K..l...p}..?..`..A..?...
2dac0 d8 7a 5d 7b c7 0e c0 9c f6 da 7a 7f 8e a6 d9 9b 27 bb 8d cb 6e 80 df 8f a6 f0 30 3d 2d d8 4c 8f .z]{......z.....'...n.....0=-.L.
2dae0 b3 e6 ab d3 7f c2 37 dc f8 bd 04 fc aa e6 fd 9a d4 0f 11 74 a1 8a 8c ee 3c f5 d3 b8 1f 62 68 ae ......7............t....<....bh.
2db00 b7 e4 83 fb 79 de 8f 71 2f 5c 5f 8b 32 82 ac 28 dd cf 94 32 83 e1 fc 30 a4 7e b8 5f 47 00 f1 9f ....y..q/\_.2..(...2...0.~._G...
2db20 40 00 e3 c9 f7 5c 3d ba 77 40 81 cb ca da fc 5c 02 28 fe 53 0a 60 dc 2a 2f 8a f6 68 c7 02 28 4d @....\=.w@.....\.(.S.`.*/..h..(M
2db40 73 11 b5 1d 8f 80 be 58 0d 1f 8f 10 03 7f fe 45 c9 46 1c bb 1e cb ef 3f 2f da 86 d4 bf 06 75 bb s......X.......E.F.....?/.....u.
2db60 2f 37 7f 70 3f 1c de ef db e6 fd a2 f1 7b 96 3f 0b 93 bb 59 94 1b d9 07 8e 6e 42 69 3e 0e 10 50 /7.p?........{.?...Y.....nBi>..P
2db80 5b 91 fa 75 dd ef 00 d8 75 01 df 1a f5 df 02 62 51 61 62 a8 12 ee d7 15 c0 c7 54 9a 31 81 02 ce [..u....u......bQab.......T.1...
2dba0 db d1 5d 6c 0a dd d9 67 f7 73 09 a0 e8 8f 20 80 61 3f e4 49 f5 5d 1c 44 e1 6e 5f 30 fc bc 98 f7 ..]l...g.s......a?.I.].D.n_0....
2dbc0 e5 5d 3d 6a fd 1a 4d b7 bf 52 2b 0a b8 7d 29 a5 87 b6 85 f3 f7 d3 ab b2 3d f4 34 6f 23 52 ff 68 .]=j..M..R+..}).........=.4o#R.h
2dbe0 6d f3 87 f8 1a b5 df d5 d0 bc 5f 34 7f 92 fb 9f e6 8e c5 58 79 09 d2 f5 24 2a 88 9f 80 06 b0 09 m........._4.......Xy...$*......
2dc00 e0 35 e2 f4 6f a8 f1 cb 8f b0 c5 d7 e1 fe 40 b8 df df 9c 52 bc 95 10 82 82 1b 3f 7d 01 7c 44 65 .5..o.........@....R......?}.|De
2dc20 19 93 70 51 88 bd 46 00 0a 6a 32 35 e6 af 50 02 84 08 6c 11 bb bf 2b 7a 2c 0c 39 14 e6 f6 8d 76 ..pQ..F..j25..P...l...+z,.9....v
2dc40 c9 07 a8 fb 74 9b 3e 6e f8 36 ea d4 fb 38 4f 6b 64 80 15 68 10 0f 48 f0 91 fa e7 31 7c 75 f3 27 ....t.>n.6...8Okd..h..H....1|u.'
2dc60 2d eb 5c 00 7f 58 d5 f3 7e be a9 03 44 51 b4 8c ca d2 66 52 41 c2 44 ca 8d ea 4d 29 3e f6 80 dd -.\..X..~...DQ....fRA.D...M)>...
2dc80 52 6a fe f4 1a 3f cc fb e1 fe 3a ec fe f4 00 4b 94 0c 33 7c 7f 4d 2c 05 05 7c 03 02 98 4c 81 17 Rj...?....:....K..3|.M,..|...L..
2dca0 1d 18 fe 9d bd 0a 6a 35 23 72 2f 3f ef 1f 1f b6 7f 9a 65 60 f2 ad 37 fe 0f cb bd 7b 5a f0 49 01 ......j5#r/?......e`..7....{Z.I.
2dcc0 b5 e1 e6 0d 0c 58 3d ca 9d c7 8d 9f 68 f2 9e 1c c4 18 f8 0b 8a 71 97 44 72 00 02 d8 a1 71 fe 28 .....X=.....h........q.Dr....q.(
2dce0 8d f3 19 3e c0 7d f5 5a dd ef 6b 70 b3 87 e1 67 cc 62 f8 79 b1 c3 18 7e 5e 44 53 51 fb 2b f7 f9 ...>.}.Z..kp...g.b.y...~^DSQ.+..
2dd00 1d 19 7e 0e e0 67 4a f0 03 2d 00 df 14 e9 5f 49 49 5e d5 90 0d aa 1b 14 40 51 e2 37 54 96 39 9d ..~..gJ..-...._II^......@Q.7T.9.
2dd20 7c ce d4 a5 db 80 7f 7b 8f e2 a5 71 0e 20 3f c6 ed a5 ba 54 d9 f1 5b 01 e8 4a 0d ec 03 9a e1 ce |......{...q..?....T..[..J......
2dd40 41 2d 7c 38 7d 37 65 86 b7 67 f8 b1 ee 66 68 fe f6 c9 9c df 43 aa fb a2 f3 67 01 08 e7 f7 33 34 A-|8}7e..g...fh.....C....g....34
2dd60 ee c5 cf 8e 43 19 59 82 99 fd 64 08 60 02 65 86 7e 4c a9 3e f6 00 5f b9 d3 07 e7 8b ba 9f fb b0 ....C.Y...d.`.e.~L.>.._.........
2dd80 3e 9a 3d 1b c0 b6 44 ca 37 43 a9 50 49 ee 87 00 fe 1f a2 30 2c 80 e2 a4 9e 54 9e 35 93 bc 4e d8 >.=...D.7C.PI......0,....T.5..N.
2dda0 48 f0 e9 d6 1e c5 23 a3 00 b4 ce f7 52 5e 13 f0 7d 2c e0 c6 25 b2 b4 bf 4e a7 07 78 55 be 89 52 H.....#.....R^..},..%...N..xU..R
2ddc0 02 9d 25 f8 1c a5 a9 83 78 b9 a7 6e fa 5c e4 43 1f 80 fb 12 ee ee ad ae fb 79 fd 0d 8d 7b 91 fa ..%.....x..n.\.C.........y...{..
2dde0 07 b0 fb 2b b2 e6 b0 fb f3 e3 c6 c2 cd 4e 18 ec 34 12 cb be 62 34 7e a2 ee a3 eb cf 0e a9 8d b1 ...+.........N..4...b4~.........
2de00 af 15 04 60 8e da 6f 02 b1 28 29 d9 9b 05 80 92 a0 0f 1f 81 51 f0 20 08 60 36 06 40 26 6a 01 ec ...`..o..().........Q...`6.@&j..
2de20 56 66 19 05 80 37 40 bf 2b 3f c6 fd bc 70 a1 fc ea 1d 9d c9 1e ee d4 09 81 d4 11 f0 d3 43 9a a3 Vf...7@.+?...p...............C..
2de40 2c 1c ac 32 f5 97 40 00 2f 0a 86 54 b5 cf 8f e8 8e df b9 94 05 50 94 34 85 dd 9f 13 d1 1d cd 9c ,..2..@./..T.........P.4........
2de60 2d 52 3e 6a 3f 52 bf a6 f6 8b ba 9f f7 b0 2e dc 6f 0d a7 5b a0 f6 9b 21 fd ab 20 18 05 25 7b 55 -R>j?R..........o..[...!.....%{U
2de80 57 67 80 60 c3 02 c0 0c 00 25 60 1a dd 61 f8 58 06 ee 56 44 fc e5 05 10 eb 51 c3 46 d4 7c 5f 2b Wg.`.....%`..a.X..VD.....Q.F.|_+
2dea0 1d e7 03 bc 3c ed f3 29 df 38 2f 0b 01 3f d6 c3 9c 07 43 2f 4b 77 23 f5 cf a5 32 bd d4 0f f7 a7 ....<..).8/..?....C/Kw#...2.....
2dec0 f7 e6 a1 8f e1 d4 8f c1 50 c1 5c 16 d5 b3 c2 a5 0c bf 20 7e 3c a5 05 b4 82 bb 1b e8 0d 7d a4 d4 ........P.\........~<........}..
2dee0 9f 17 c5 5d 3f d6 fd 95 ee 4f f3 55 42 30 35 18 fe b7 09 a0 3c 73 06 15 a7 8e 95 e0 73 20 0b b8 ...]?....O.UB05.....<s......s...
2df00 ff a5 4f 05 6f dc 7b 61 41 8c 47 db 52 86 ef 5f 97 9e 17 af 66 d0 fa 71 04 73 80 21 00 ae d2 b9 ..O.o.{aA.G.R.._....f..q.s.!....
2df20 2f 6f 59 fa 50 0c 7d d4 ee c7 7a 5f a4 7e 1d f7 e7 0f e6 f4 af bb e4 63 f7 a3 6c 4c 00 fc 15 ec /oY.P.}...z_.~.........c..lL....
2df40 7e dc c6 8d 05 90 1b 3d 10 a9 dc 16 6e 6f a6 33 f4 e1 f4 8f d4 9f 1b 5e 57 53 fb 2d 00 df 14 f0 ~......=....no.3.......^WS.-....
2df60 e1 7e 9f 9a 10 40 35 b5 00 3c ff df 20 fc ec 30 2b 2a cf 9e 07 81 0d 16 02 38 b7 6d 50 d0 5f f6 .~...@5..<.....0+*.......8.mP._.
2df80 54 f0 b2 ad 37 c5 90 07 47 a8 e1 62 b1 ac d3 8b 02 80 7c 1d 7e 7a 58 6b 74 fe 80 5f b0 85 05 00 T...7...G..b......|.~zXkt.._....
2dfa0 f8 af b9 ff 0b b8 bf 67 65 f3 87 d4 af e3 fe 9c c1 02 fe 93 82 85 38 4a 3e 8a dd 9f 11 fc 1e d2 .......ge.............8J>.......
2dfc0 ba 83 c1 79 7f 5e 44 7d 76 7f a6 bc f6 23 f5 a7 f8 54 a7 64 c0 4f 0b 70 c2 fb 26 06 05 90 1b e9 ...y.^D}v....#...T.d.O.p..&.....
2dfe0 0c 01 2c 40 e3 da 55 08 60 fd 9a dd 7f cd 53 c1 cd a7 c5 90 d7 8d 89 0c 1f 01 08 ab aa 82 0f 87 ..,@..U.`.....S.................
2e000 ef d1 b9 25 3b e0 63 cd 8f db b8 96 ad 47 c6 d8 ae e9 fc e7 f0 3e bf 2c f5 c3 fd 5f 00 fc 20 31 ...%;.c......G.......>.,..._...1
2e020 ef 97 35 7e 88 9e 9a ba bf 1c fd 86 34 40 fa 0c 3b 75 93 a4 e6 0f 00 31 f6 8d 68 ac b7 cf af 9e ..5~........4@..;u.....1..h.....
2e040 f7 d7 e6 da 2f b9 3f 4d 72 bf 9f 12 ee af 81 8c 51 0d 19 00 b3 ff c8 9e 58 3e 0e c2 a9 a0 7a 7a ..../.?Mr.......Q.......X>....zz
2e060 02 c8 8f ed 44 15 d9 8b 70 78 f5 5d 21 80 05 cb 4e ff a5 4f 05 f3 7d 7a 7c 6e 8c 61 11 a4 04 d9 ....D...px.]!...N..O..}z|n.a....
2e080 d3 4b cd 9a 1f c1 43 9d 64 ff 7a 80 cf e0 05 fc 8c b0 76 d8 de e5 49 9f a6 f1 1b c9 cb 3e 99 f3 .K....C.d.z.......v...I......>..
2e0a0 01 ff 73 06 2f 1b f7 0a e7 3f cb 9f 08 f0 2b 25 f8 00 32 8d 82 ae 5a 21 f5 8f 42 4c a2 54 ff a6 ..s./....?....+%..2...Z!..BL.T..
2e0c0 80 ec a4 0b 5f 1c ef b6 15 75 3f 2d 00 6b 7e 2d 7c af 6a 78 bf 3e e5 44 b9 20 fa 21 8b 0c a8 62 ...._....u?-.k~-|.jx.>.D...!...b
2e0e0 05 30 84 2a 72 96 60 0c 6c 23 04 d0 73 8e bf f1 54 30 44 a0 cd 04 00 5e 07 ae 5e 09 48 b3 79 35 .0.*r.`.l#..s...T0D....^..^.H.y5
2e100 a0 ef 7c 2b 0c 86 d6 4a 4b 3e e1 fc 32 ac ad 91 fe c5 92 4f 12 40 45 6a 77 83 97 75 3d cd 1d 8a ..|+...JK>..2......O.@Ejw..u=...
2e120 df bf 8a 53 ff d3 c2 45 14 79 df 99 a2 ee 03 74 a2 d4 fd 4f 86 8b eb 23 dd 37 d3 1b f7 72 ed e7 ...S...E.y.....t...O...#.7...r..
2e140 89 9f 7a cd 9f ce 5d bf 54 f7 ab 73 e7 9f f5 f0 6b 09 3e a2 3f c6 d6 5d 0c 0a a0 2c 73 2a 0b e0 ..z...].T..s....k.>.?..]...,s*..
2e160 c1 21 35 fc 1b bb 1a 69 c7 c0 c6 53 c1 e1 6e 9f a7 c8 2e e5 c6 a3 29 c5 69 e0 47 b8 b5 2d 91 e0 .!5....i...S..n.......).i.G..-..
2e180 47 bb a9 b0 86 1e 25 6a fe 93 dc d5 a2 f1 c3 b8 57 cf fd fa cb be de ec 7a c0 e7 c7 d4 e0 0f f8 G.....%j........W.......z.......
2e1a0 ee 9c d9 11 7d 24 f8 88 29 a8 ed 8e 86 c6 bd a8 fd f5 b0 b9 23 d5 7e c9 fd 26 70 3c d7 7d 76 7f ....}$..)...........#.~..&p<.}v.
2e1c0 7a 70 0b 06 cf 81 06 32 2f fa 7d fd 06 30 d4 14 f0 17 b3 00 6e 6b dc 7f 79 e7 87 99 c6 53 c1 9a zp.....2/.}..0......nk..y....S..
2e1e0 b7 c8 bb d6 35 00 ff 8e e6 a5 58 04 fc 68 0f d5 65 34 7e ee 9c fa 1f 76 c4 92 6d 53 65 ea 4f 1d ....5.....X..h..e4~....v..mSe.O.
2e200 c1 cb be ca da 0f f7 c7 61 1f 3f ad 87 a1 eb fa 50 eb e7 6b 52 ff 0a 6c f4 0c 65 f8 21 d7 6a 63 ........a.?.....P..kR..l..e.!.jc
2e220 ed 3f 95 e1 e7 c7 8f 87 d3 1b eb a5 7e e9 98 17 46 be 80 28 cd fb 45 dd 87 00 aa 21 4c 29 27 b2 .?..........~...F..(..E....!L)'.
2e240 2f e0 0f 90 e0 23 06 a1 d9 6b a5 27 80 bc a8 26 0c 1f c1 f0 d5 51 f3 a4 ec 4f 60 1c 05 c7 c6 be /....#...k.'...&.....Q...O`.....
2e260 f1 bf b1 5e aa 93 0c 9f 05 a0 dc 12 f3 40 35 92 53 bf 97 0d 1c bf 48 c0 7f 94 35 9b ef e7 a3 3b ...^.........@5.S.....H...5....;
2e280 f4 f9 42 12 00 c0 0f 34 78 5d 1f 52 3f 97 97 47 d9 33 b9 ee fb 9f 07 c8 a0 cf d0 fd 4f 83 00 a6 ..B....4x].R?..G.3..........O...
2e2a0 51 56 f8 97 7a d7 f5 49 ee cf 95 dc 1f 56 0b 20 2d d1 f5 ab 90 fe 91 fa 7d ab 73 e3 97 15 f6 81 QV..z..I.....V..-.......}.s.....
2e2c0 00 cf f0 a3 87 50 f6 43 5b 03 9b 40 9f e8 0b 60 97 72 8a 51 00 06 ee ec 21 81 8f 75 57 4e 8a bd .....P.C[..@...`.r.Q....!..uWN..
2e2e0 6f 5a 1f b5 ff 91 24 80 92 e4 21 5a f8 10 c2 2a 4e fd 7a f3 fe b8 cf b0 97 df d3 d0 3e 3f 6a bf oZ....$...!Z...*N.z.........>?j.
2e300 2b 0b 00 5b c6 a8 fb 4e 12 7c 64 00 13 c0 c7 e0 27 71 3a 62 1a 6a 7a 43 4d ea 97 bb df 16 f0 6b +..[...N.|d.....'q:b.jzCM......k
2e320 b3 fb 33 83 cd e1 7e 05 82 d7 fc 58 05 a0 2f 50 83 47 da ef cf 99 20 37 66 28 0e 81 28 ab 6c 00 ..3...~....X../P.G.....7f(..(.l.
2e340 11 f2 21 50 27 a3 00 be e5 ec 3f e0 bb 69 6b 3f ea bd 4c 00 6b d0 f9 8f d0 9b f7 97 26 7c 29 c1 ..!P'.....?..ik?..L.k.......&|).
2e360 d7 db e7 7f 96 dd 97 5e 14 4b a9 7f 35 ea fe 87 e2 a6 cc f1 9e 6d d1 fc 4d 87 08 66 50 2e 52 78 .......^.K..5........m..M..fP.Rx
2e380 aa 77 3d fd c6 2f bc 2e e0 db f0 21 cf 8c 40 53 b8 5f 01 a1 54 47 ea 47 5d 8f e8 81 d4 2f b9 1e .w=../.....!..@S._..TG.G]..../..
2e3a0 47 bd fd da b1 fb 21 00 03 0d 60 4d f4 2e 73 24 f8 78 9c a5 15 c0 cb 5b db de f8 3f a3 00 aa 78 G.....!...`M..s$.x.....[...?...x
2e3c0 4b f7 78 e3 ff a3 1e a8 4e 49 f0 a3 10 89 5e 4d 30 46 5d 5c 29 82 bc 75 38 b2 35 95 4a f8 a4 cf K.x.....NI....^M0F]\)..u8.5.J...
2e3e0 57 9c fe 9f 66 f6 31 d0 f8 49 73 fe 45 10 c0 5a 6d dd 17 37 68 84 7b 19 7e 61 d2 4c 4a 0f ea 88 W...f.1..Is.E..Zm..7h.{.~a.LJ...
2e400 cd 9d 37 75 1a 3f 5c d9 83 da 5f 0b 9f b7 92 9a 3f 08 c0 04 ee af 81 fa 5f 0d c3 a2 d6 70 fd 50 ..7u.?\..._.....?......._....p.P
2e420 09 3a 0b 21 e4 ba 1d c3 37 24 00 5c 29 24 dc 5f 90 30 88 05 80 46 d0 ef 7b fc 19 8c 37 88 38 7b .:.!....7$.\)$._.0...F..{...7.8{
2e440 7c c3 de c8 7b 76 af 22 ee 41 08 77 ad 01 71 0c 04 b0 81 05 f0 38 77 2d ea f9 52 2a 4d 1e c8 b5 |...{v.".A.w..q......8w-..R*M...
2e460 df 50 ea 7f 5e 30 1d f0 d7 b1 00 82 ae 58 0a f8 a1 b7 ec a8 08 e0 01 9f 4f fd 24 7b d6 05 f8 46 .P..^0.......X..........O.${...F
2e480 f2 35 bf ae fb 83 cc b0 fc 53 49 f0 21 02 73 64 8c 41 0c 3b 0f 11 72 dd 1e 59 aa 55 95 02 28 88 .5.......SI.!.sd.A.;..r..Y.U..(.
2e4a0 ed 2c 04 90 1c f0 11 0b e0 f0 c6 99 97 8d 37 88 f8 01 71 e9 c4 32 f1 ea 5b d2 0b 30 45 de ad 4f .,............7...q..2..[..0E..O
2e4c0 05 71 a3 e8 71 ce 2a c4 0a d4 f6 b5 f4 b2 78 3e 04 30 88 e1 3f cb ed 8f 41 d2 5a c4 7a 16 40 6a .q..q.*.......x>.0..?...A.Z.z.@j
2e4e0 d0 87 0c de 17 11 70 c1 5c 6a fc 00 7f 36 62 16 25 fb 38 62 99 e7 c4 ee 17 f0 1f 72 d7 0f 80 16 ......p.\j...6b.%.8b.......r....
2e500 80 8f d4 1f a0 94 dc 8f f7 f1 bd 71 23 00 de 95 3b 7f ef d3 16 7c aa 27 3d b4 8b 46 10 c3 74 e0 ...........q#...;....|.'=..F..t.
2e520 a3 1f e0 f9 3f a7 ff cc d9 38 06 a6 a4 6b 3b 3b 60 12 1a 6d bc 41 c4 0f 8d 0d db cf 50 e0 f5 0e ....?....8...k;;`..m.A......P...
2e540 14 a6 79 05 ae d0 eb 0a cc 0c 3a 62 93 68 0e 26 88 5b e8 15 e2 65 e9 66 7a 51 34 0f d0 97 03 fe ..y.......:b.h.&.[...e.fzQ4.....
2e560 06 3c ae 47 d6 18 26 d5 7d c0 47 9c 55 62 2b f9 2d 80 9f 43 45 08 0c 6f 50 d3 eb 8a da 8f 7d 7e .<.G..&.}.G.Ub+.-..CE..oP.....}~
2e580 34 7e f5 28 07 ce 47 d7 cf c7 bb d3 e1 fc 34 4d ed cf 8d 76 c1 a8 77 38 83 4e f4 6e c3 f0 d1 cc 4~.(..G.......4M...v..w8.N.n....
2e5a0 f1 0c 00 02 c0 28 79 f8 6b cb bf a6 c2 fd 98 37 b0 fb f7 6e 58 f6 63 ff 06 c6 1b 44 f4 98 1f 8c .....(y.k......7...nX.c....D....
2e5c0 6c b0 84 42 6f 48 02 e0 57 e0 c2 a3 19 65 45 74 d3 88 60 33 44 b0 89 5e 94 6e 64 01 3c ca 99 4b l..BoH..W....eEt..`3D..^.nd.<..K
2e5e0 41 97 2c 90 fa d5 f0 7d 10 b9 31 23 a8 28 79 2e 47 5a 60 6b ca 09 77 14 b5 9f eb 7e 78 6d 2c ef A.,....}..1#.(y.GZ`k..w....~xm,.
2e600 50 f7 43 cc 85 fb 53 a5 da ef 5b 0d 80 47 e2 e7 5d b9 ee df 3f 00 f8 10 80 db 21 0b fe 1c 04 80 P.C...S...[..G..]...?.....!.....
2e620 72 e2 f2 da 09 a0 5e 42 00 91 77 db b0 00 a6 2e be fa 53 61 1b 6f 10 31 6f dd 4d f2 bc d8 1d 83 r.....^B..w.......Sa.o.1o.M.....
2e640 1c 25 05 5f e5 00 94 6e d8 d3 5f 09 f8 9b 00 7f 13 9a bf b5 14 79 cf 49 d4 7d 08 00 10 9c 01 7e .%._...n.._..........y.I.}.....~
2e660 3e 07 06 3f 98 e4 d5 06 78 67 d9 b2 af 2e 1a 3f 6b e1 fe 0c 76 7f 4d 86 9f e6 6f 01 f7 23 fd 47 >..?....xg.....?k...v.M...o..#.G
2e680 0f a3 87 37 ed b5 67 fa d0 58 3a 89 fa 5f 10 fb b5 2c fd 4b 93 cb b9 9a ee 7f 1e ae 04 32 63 01 ...7..g..X:.._...,.K.........2c.
2e6a0 74 9c 1e f9 73 fc 0d 8c 37 88 e8 33 2f 68 c4 b5 13 d3 af 04 5e 71 7c 11 74 85 5f 7e 0d 42 30 c3 t...s...7..3/h......^q|.t._~.B0.
2e6c0 a6 d2 07 a8 b7 b3 50 f7 3f ae 84 8f f0 39 a3 c4 56 6c 2f 2a 4a 59 00 01 2c e0 33 7f 59 41 76 3a ......P.?....9..Vl/*JY..,.3.YAv:
2e6e0 cb 3e 76 7f 88 74 6d 9f 39 e0 9b c0 fd 0a b8 bf 3a 0b 20 27 f2 0b a4 fe e1 94 1e f2 91 48 fd 00 .>v..tm.9.......:..'.........H..
2e700 0a 51 75 14 02 c8 8f 79 47 08 00 97 83 0b f7 67 3c ec 2d d6 ff 3f f3 cd b0 8d 37 8b 0e 3f 57 d3 .Qu....yG......g<.-..?....7..?W.
2e720 32 f8 92 6a bd f6 e5 d7 10 b2 e5 9e a8 fd 28 05 56 52 e3 07 01 2c e4 c8 0c 79 1f e0 1b cb 96 7d 2..j..........(.VR...,...y.....}
2e740 b6 10 80 54 fb 2d 20 00 a4 fe 40 25 26 7f 35 28 0d f0 d3 83 50 1e e2 46 c3 fd 03 c8 f7 8c a5 80 ...T.-....@%&.5(....P..F........
2e760 8f 40 1f f2 39 c3 47 76 e0 91 af 38 fe 95 36 42 08 20 e4 6a 13 f1 fd bf d0 9f c1 78 a3 c8 80 4b .@..9.Gv...8..6B...j.......x...K
2e780 ca 8d 80 5f 22 c1 f7 d7 85 5f 2c b9 3f c5 ef 43 80 5f a4 16 40 f2 42 9c cf 5b 4a 4f f2 57 e0 20 ..._"...._,.?..C._..@.B..[JO.W..
2e7a0 e8 64 1c 2a ed 4d 45 f1 9d d1 fc 49 ee 37 43 fa 57 01 7e 4d b8 bf 9a b4 eb 07 e7 0f 40 c9 18 45 .d.*.ME....I.7C.W.~M........@..E
2e7c0 09 de ad d4 f0 65 02 48 0f ed 23 09 00 e2 9a c8 a7 7e f8 f0 47 84 bd 80 5f 9c 32 59 26 98 9a 99 .....e.H..#......~..G..._.2Y&...
2e7e0 46 01 fc 82 6f b7 70 ba 38 e0 9c aa 2f dc 7f 0f f0 ff 09 11 9c 03 fc 72 04 af d5 b3 22 06 02 d4 F...o.p.8.../..........r...."...
2e800 5c 16 c2 a3 5c 2c 21 0b d6 40 04 ab e9 71 fe 2a c4 4a 88 62 2a 56 07 03 01 fc 13 ec 0d b4 c2 f0 \...\,!..@...q.*.J.b*V..........
2e820 a7 3e a0 76 42 73 07 f7 a3 01 74 3b 28 52 bf 88 ec a8 11 2c 80 92 d4 89 c2 fd b8 0c 5c 08 20 c6 .>.vBs....t;(R.....,........\...
2e840 43 1c 00 c1 00 a8 e6 62 a3 00 7e e5 37 cf 33 ca 76 de a7 94 9b 71 7f 3e e9 16 6d e2 36 6d b8 51 C......b..~.7.3.v....q.>..m.6m.Q
2e860 13 df aa c5 e7 5c 6d 9c 35 e8 44 69 c1 3d 20 8c a9 00 39 03 00 a7 40 08 13 31 2f 18 0f f8 63 b8 .....\m.5.Di.=....9...@..1/...c.
2e880 fb cf 0c fb 50 0b f2 6f 88 7f 22 b0 aa 68 ca 7d 01 06 54 02 38 0e 7e 8a f7 13 7c 3e 96 6f fe ec ....P..o.."..h.}..T.8.~...|>.o..
2e8a0 fe 0d ff 0c c6 d7 0d f4 38 a9 fa d8 f3 a4 ea 10 e0 17 30 fc 63 0a 71 af 1e b7 c3 1c 7c cd 3e 2e ........8.........0.c.q.....|.>.
2e8c0 dd c6 32 b3 21 76 24 3b 53 4a c0 17 94 11 ee 82 a3 5e 83 29 e0 ac b9 16 e6 11 cd 23 86 52 ef b1 ..2.!v$;SJ.......^.).......#.R..
2e8e0 fb 8b 53 f9 b0 87 4e 94 a4 cf c4 ef 13 3f f3 8f 5b 7b 55 8e bf 83 3f 83 f1 75 03 f1 0a e1 43 e6 ..S...N......?..[{U...?..u....C.
2e900 af bc 3c ef c8 f6 a5 c7 af ec 73 09 bb 77 c8 f9 99 f6 8e 1d f7 0e 22 0e 28 30 b1 43 48 d7 ee 21 ..<.......s..w........".(0.CH..!
2e920 6e cb 3a fe eb bb 5a 54 ac 5d b5 7f bd 56 00 9e a7 1c b1 d4 ec 40 89 fe 5f 40 24 fd 29 3f 71 0c n.:...ZT.]...V.......@.._@$.)?q.
2e940 26 7f 9a d4 ef fe 9e 70 ff e9 ad ae 3e 86 ff 3f c6 51 f0 6f 1e ce 38 a0 3a 60 be 37 cd 5f 71 81 &......p....>..?.Q.o..8.:`.7._q.
2e960 4e 6d 9f 42 37 f7 74 12 f0 c5 72 4f 23 80 39 4b 2e 72 e0 fd aa 02 82 31 a5 07 c7 6c f1 b3 26 6a Nm.B7.t...rO#.9K.r.....1...l..&j
2e980 d1 ec 6c 43 9f ce 32 fc e2 50 c6 51 f0 ef 52 10 b1 d4 75 4e 20 4d 58 74 9b 16 2c 3f 43 eb d6 ec ..lC..2..P.Q..R...uN.MXt..,?C...
2e9a0 a3 ad 6b b7 d2 8e 75 eb f9 6b 13 17 dd a2 43 9b 66 d1 c5 ed 5d 18 f0 77 c5 aa 55 07 f5 ff 1d e3 ..k...u..k....C.f...]..w..U.....
2e9c0 28 f8 cf 11 1d 66 44 d0 c0 79 5e 34 73 e9 25 5a b3 6a 3f 6d 5b b7 91 8e 6e 9e 4a 67 b6 0d a6 cb (....fD..y^4s.%Z.j?m[...n.Jg....
2e9e0 3b 3e a3 0b db 7b 52 9b 7f b7 73 f7 38 08 02 41 18 86 37 b6 14 5a 60 ed bd 28 84 f3 68 a5 97 e0 ;>...{R...s.8..A..7..Z`..(..h...
2ea00 34 c6 63 a0 09 31 a1 a4 d0 f1 2d 37 46 5d 30 9a 2c eb f7 25 4f b7 53 31 ee cf 14 fe 66 f2 a7 ff 4.c..1....-7F]0.,..%O.S1....f...
2ea20 0a 4e 80 46 c1 a2 51 b0 a2 39 80 12 73 03 5c 03 8b 5b a7 4c ad 01 5a d8 1b 57 7f f1 39 b4 18 99 .N.F..Q..9..s.\..[.L..Z..W..9...
2ea40 9b 4a f4 f1 b3 01 3f ea b3 5f 70 84 05 54 6e 2a 51 03 54 b0 80 a3 5f 50 c3 02 4e 58 b9 d8 a3 8f .J....?.._p..Tn*Q.T..._P..NX....
2ea60 bf c2 09 16 50 fb 45 05 6c 80 06 65 b4 c7 81 b6 fd 12 0d 6c 80 c2 2f 5e a0 87 8d 70 89 8a d8 08 ....P.E.l..e.......l../^...p....
2ea80 3d 16 8f 1d b4 83 fd 05 d9 3d db 42 72 74 b0 a4 49 87 fc d5 39 b2 86 25 4d d6 a1 cb c4 16 96 24 =........=.Brt..I...9..%M......$
2eaa0 d9 0e b9 4d ce b0 81 25 45 36 98 8d 79 56 94 49 dc 09 a4 43 f9 e9 db 72 89 3d 7a 98 4c 4a 8f 3d ...M...%E6..yV.I...C...r.=z.LJ.=
2eac0 96 df 18 32 cc 51 a0 c6 01 0d 6e 30 89 c2 0d 0d 0e a8 51 60 ee 14 25 94 3b 6e 1d eb fc a7 90 b2 ...2.Q....n0......Q`..%.;n......
2eae0 23 00 00 00 00 49 45 4e 44 ae 42 60 82 50 4b 03 04 14 00 00 00 00 00 f2 3b 3d 57 f0 03 44 86 9b #....IEND.B`.PK.........;=W..D..
2eb00 27 00 00 9b 27 00 00 11 00 00 00 69 6d 61 67 65 73 2f 70 6c 75 67 69 6e 2e 70 6e 67 89 50 4e 47 '...'......images/plugin.png.PNG
2eb20 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 00 80 00 00 00 80 08 06 00 00 00 c3 3e 61 cb 00 00 27 ........IHDR..............>a...'
2eb40 62 49 44 41 54 78 da ec 9b 05 74 14 67 17 86 53 f7 6c 70 77 a8 2b ee 6e 81 3a c4 13 34 2e 44 6a bIDATx....t.g..S.lpw.+.n.:..4.Dj
2eb60 68 a4 71 25 86 05 f7 b8 bb 11 77 57 2c 8a 6b 1c e7 7f ff 3b 13 66 4f b6 1b c2 b6 69 43 65 be 73 h.q%......wW,.k....;.fO....iCe.s
2eb80 9e ca 66 26 f3 9d f3 bc f7 7e c3 dd 83 14 bf f8 25 d1 1a 6d 58 3e 7c 94 51 99 de 28 e3 72 b7 31 ..f&.....~......%..mX>|.Q..(.r.1
2eba0 c6 e5 be a3 8d cb e3 ba 07 cf 07 c6 a5 f1 b2 06 c9 19 0a 7a 91 b9 ab b5 03 8a 54 75 83 0b 14 75 ...................z......Tu...u
2ebc0 c3 f3 16 1a 64 a4 fe de df c5 38 61 dc 30 8e 18 57 7f 92 76 bc 30 c6 a4 42 81 1e 90 47 80 a7 7b ....d.....8a.0..W..v.0..B...G..{
2ebe0 2c 35 48 c1 a6 b5 e6 d8 ae d4 8b 78 f1 99 d8 a9 2e c7 d7 fa 09 7f f4 79 79 8c 3b c6 e1 1f 52 3f ,5H........x...........yy.;...R?
2ec00 ca a4 ec b3 d1 26 e5 39 bc b8 ee 33 de a8 10 3f a8 bb 88 89 f7 52 17 c0 7f e3 38 44 5a 7e 81 04 .....&.9...3...?.....R....8DZ~..
2ec20 87 69 88 b3 9b 82 68 ab 09 38 62 30 08 db 95 db af 71 51 1e 0d ea 10 7f fc f9 e4 90 71 f9 fb da .i....h..8b0.....qQ.........q...
2ec40 bd 49 c5 32 ba b9 89 97 d7 7d 96 1b 24 51 25 7f 2d 22 7e f7 ba b7 71 ce 77 15 ae c5 6c 78 2a 67 .I.2.....}..$Q%.-"~...q.w...lx*g
2ec60 bd 55 84 d7 3b aa cc c4 4c c3 9c ee ec a3 89 71 2a 91 7c ba 58 99 78 cc cb eb 3e aa 3a c1 70 56 .U..;...L......q*.|.X.x...>.:.pV
2ec80 1e 27 14 e9 a1 f6 1a 92 9c 67 e1 72 84 6e 97 f2 39 fc 7f 19 2b bc d7 48 dd a3 bb fb 79 4c 28 77 .'.......g.r.n..9...+..H....yL(w
2eca0 29 7f ac 51 c5 78 ba a8 8d 97 d7 7d d6 ea f8 8a b4 fc a3 1b 86 a0 3a 70 ad 50 6e f9 31 79 24 3a )..Q.x.....}..........:p.Pn.1y$:
2ecc0 ce 40 ac ed 24 14 ee ff 16 57 63 0c c4 02 70 21 54 13 ee 6a af 0a bb c0 58 e3 b2 ee ee ab 8d 71 .@..$....Wc...p!T..j....X......q
2ece0 dc a9 fc 91 e6 35 af d3 05 35 04 78 ba 8d 88 fc d0 6d 1f e1 4a 94 9e 50 ec 19 6f 65 b1 17 3e 9f .....5...5.x.....m..J..P..oe..>.
2ed00 9f 46 e2 72 a4 9e 78 17 d8 28 ec 02 58 bc 21 fd cf d8 5b 0d e3 5a fc a5 cf a8 fc 47 5e dc 9f c3 .F.r..x..(..X.!...[..Z.....G^...
2ed20 37 fa 09 42 69 cc 0b de b5 68 a1 50 94 1c 5e c1 1c 05 9d be f5 c7 da 4c 12 0b 40 ac ed 64 e1 cf 7..Bi....h.P..^........L..@..d..
2ed40 e5 74 a3 fe 94 fd 31 ae 45 5b bf c1 b9 d7 e8 cf 90 37 79 79 dd 67 a2 61 81 f0 a5 8f 2a 5f 44 fe .t....1.E[.......7yy.g.a....*_D.
2ed60 59 1f 15 61 4b b7 51 53 c1 6a 9d 80 27 ef 09 1f b1 9f ed 58 fd 06 75 0a 7d f6 da ab d1 06 b8 4a Y..aK.QS.j..'......X..u.}......J
2ed80 5d 23 c1 7e aa 30 00 34 23 f8 73 02 40 ae 19 e7 c2 00 d0 10 61 a9 84 37 3f 1c 63 5c e1 35 ca b8 ]#.~.0.4#.s.@.......a..7?.c\.5..
2eda0 74 f1 98 1f 2a 27 f0 88 62 b6 da c0 86 93 55 13 b4 4e a4 92 33 3c 17 09 45 3a 29 7f 52 d5 f1 3e t...*'..b.....U..N..3<..E:).R..>
2edc0 5b b5 ef 02 b8 9f 95 1f 59 81 cb e1 9a b8 14 a6 81 8b a1 eb e9 68 18 05 17 a5 97 58 74 74 0e 7f [.......Y............h.....Xtt..
2ede0 ff b4 67 b3 4e c8 0d e3 48 12 97 8c f3 8e 6f fe bb 24 b8 e9 fe 48 c3 b2 25 52 fc ea 74 6d 57 94 ..g.N...H.....o..$...H..%R..tmW.
2ee00 1a 49 02 ef 10 20 c4 5a f9 61 fd 81 c2 00 b8 28 4a cd 12 b9 57 e9 85 58 ee 67 e7 bc 95 70 31 64 .I.....Z.a.....(J...W..X.g...p1d
2ee20 1d 2e 84 ac c5 85 a0 d5 d8 b9 4e 1a ce 8a 2f 33 b4 f8 ca 49 bd f4 ac 7d 30 8e 18 57 12 f8 dc 25 ..........N.../3...I...}0..W...%
2ee40 bc 49 92 81 cf 18 a3 b2 6d bc e6 a7 2f 1a dc 78 73 12 c3 cc 3f e1 da 38 a1 8f 9a 80 35 c2 c1 8e .I......m.../..xs...?..8....5...
2ee60 ab d2 8b 05 1d ef b3 93 93 12 d0 67 77 99 9f ed 5a fb 16 2b bd 3e 68 15 ea 03 d5 50 7a f0 2b 38 ...........gw...Z..+.>h....Pz.+8
2ee80 29 be c2 91 20 e9 5e 18 57 92 0c 88 3a 76 80 0b cf 3c 37 0c 4b 07 f0 9a 3b 5f 6e 8a 52 d3 49 e0 ).....^.W...:v...<7.K...;_n.R.I.
2eea0 ff 08 ec 5c f3 16 ea 43 35 70 25 52 97 d0 c1 e5 08 6d e4 7b 2d 17 56 3f 05 c1 b1 e3 bd ae 8a 2f ...\...C5p%R.....m.{-.V?......./
2eec0 6e a5 cf d9 16 1f bc ed 03 d4 05 a8 a0 ce 5f 19 b5 fe 4a 34 15 fc 1c 8e 8a af b2 38 28 bd fa b3 n............._...J4.......8(...
2eee0 a4 fb 61 5c 49 d0 01 2e 74 0c c0 83 67 5c dc c8 6b ee 7c 41 4a ea 85 ed 4a 2f 65 73 82 53 b6 cf ..a\I...t...g\..k.|AJ...J/es.S..
2ef00 66 a4 73 e7 38 a1 8e 4c 8f f9 10 b6 7f a5 17 7f e0 ee 75 51 91 fa 84 c4 df 21 e8 f3 57 50 76 e0 f.s.8..L..........uQ.....!..WPv.
2ef20 4b d4 f8 2a 10 f2 a8 f6 91 c3 6e f5 de 70 50 7c 8d c5 49 e9 d5 f7 7f cf be 18 67 cf 70 fa 40 f8 K..*......n..pP|..I.......g.p.@.
2ef40 85 8f 04 69 b9 ce ab ee 7c b9 2a be a4 c0 c9 dd af dd 87 ce ee f5 ac 74 e1 39 1e bc 06 79 bb 97 ...i....|.*............t.9...y..
2ef60 08 03 40 ed 7e 47 bb fc 57 19 f9 17 9c 95 d8 f3 1d 41 9b df 43 b5 f7 4a 62 05 aa 4e 7e 4f 7c c7 ..@.~G..W........A..C..Jb..N~O|.
2ef80 8a b7 57 7c 9d 21 ed f7 ee 8b 71 f6 2c af 8c fb bf 24 00 fe 39 f7 7a 11 ab fe ed 04 64 df 5d ed ..W|.!....q.,....$..9.z.....d.].
2efa0 ae fd 55 1d 27 37 97 44 73 d2 b9 73 bc 2e 50 15 e7 bd e5 e0 ae f2 4a 7b 07 50 1d 71 7f b7 95 43 ..U.'7.Ds..s..P.......J{.P.q...C
2efc0 a0 b3 f2 b0 07 24 9e 3d df f7 69 f7 c5 99 a3 5f e3 fc 89 6f 71 fe f8 37 38 c7 70 ec 6b d8 2b bc .....$.=..i...._...oq..78.p.k.+.
2efe0 ce b2 db e3 e8 1e 7a 5e af 7f 44 00 68 a3 53 08 fc 17 38 1e 5e 29 ac ec 43 ba fd 44 a4 73 e7 78 ......z^..D.h.S...8.^)..C..D.s.x
2f000 ad 9f 22 db d6 c3 b6 bd cf 9e f3 5c c5 73 2f 77 5e 5a 7d a9 f5 cb b2 c2 cf 1d fd 0a 67 8f 7e 89 .."........\.s/w^Z}.........g.~.
2f020 b3 47 96 a3 64 df 22 d8 29 bc 01 47 8d 65 f0 cb 6c e5 9e 39 e9 9f 10 80 e8 ff 4a 00 76 ff 6a 23 .G..d.".)..G.e..l..9......J.v.j#
2f040 0c 40 ba eb ac 8e d2 b9 73 9c 6b eb 24 f8 5b f8 fd 3c 52 28 de 45 e5 0d 04 6d 79 17 95 87 64 59 .@......s.k.$.[..<R(.E...my...dY
2f060 e1 67 8e 2c c3 99 c3 b2 38 73 68 29 4e 1f 5a c2 7e 4d 6c ab f0 26 f6 ec f6 ef f8 cc a8 7f 42 00 .g.,....8sh)N.Z.~Ml..&........B.
2f080 a2 08 70 f8 e5 dc 85 6f 76 eb bf 0e 2f d7 fd 42 f9 89 76 e3 45 ce 6e 6a e5 5c 1b e7 aa 5a 5c f2 ..p....ov.../..B..v.E.nj.\...Z\.
2f0a0 c1 c5 a8 3c b0 88 58 88 8a fd 0b 50 b1 6f 3e 31 0f e5 7b e7 c2 e7 c7 51 b0 51 78 0b bb 76 fa fe ...<..X....P.o>1..{....Q.Qx..v..
2f0c0 36 74 91 ff 84 00 4c 26 f0 6f c7 75 dd e4 27 5f f1 be 8a 33 24 99 ce 6e 51 e9 e2 55 2d 22 bd 83 6t....L&.o.u..'_...3$..nQ..U-"..
2f0e0 70 62 0e ca bc 66 a3 6c cf 2c e4 ba 4f 81 9d 92 34 ac e5 df 86 77 ca ad df 3e 77 d2 3f e5 25 50 pb...f.l.,..O...4....w...>w.?.%P
2f100 86 50 fd 37 c3 fd d9 3d 60 e3 e8 4e ab 9c 84 77 59 e5 9c f0 d2 3d 33 51 ba 7b 06 4a 77 4d 47 c9 .P.7...=`..N...wY....=3Q.{.JwMG.
2f120 ae 69 38 bc 61 28 ac e4 df 61 f9 cd 33 65 fe 46 2f 81 fc e2 5e e8 72 3c 66 76 5a e5 24 fc a9 55 .i8.a(...a..3e.F/...^.r<fvZ.$..U
2f140 4e d2 85 c2 4b 76 4e 45 f1 ce 29 28 de 31 19 49 36 1f c3 4a e1 1d 58 ca 4b 33 48 3a 7b e9 f9 00 N...KvNE..)(.1.I6..J..X.K3H:{...
2f160 f0 63 df 57 3e 67 de e4 f7 6a f6 ee a2 ca e7 74 5e e5 9c 74 12 5e ec 39 09 45 9e 13 51 e4 31 01 .c.W>g...j.....t^..t.^.9.E..Q.1.
2f180 05 ee e3 e1 b1 ae 1f 2b ff 57 79 01 fd 5b c6 98 0f c0 df 74 39 29 bc 6a cf bc c9 47 9a 7f f8 f4 .......+.Wy..[.....t9).j...G....
2f1a0 2a 27 e1 9d 55 39 27 bd d0 7d 3c f1 05 0a dc 3e 47 81 eb 67 08 d9 3c 8a 15 cf 60 21 2f a8 d8 a3 *'..U9'..}<....>G..g..<...`!/...
2f1c0 29 f5 0a 1f 80 bf e9 e8 97 66 f3 b5 4e 4a af a1 70 e7 8c a7 56 39 09 17 ab 72 51 e9 9f 22 7f fb )........f..NJ..p...V9...rQ.."..
2f1e0 27 c4 c7 c8 74 f8 00 76 2a bd 49 bc 0c 2c e4 64 60 be b2 f7 62 e6 59 7c 00 fe 86 cb 41 fe e5 19 '...t..v*.I..,.d`...b.Y|....A...
2f200 cc 88 f6 80 6e bf 2e ab 5c 5c f8 67 22 d2 f3 9c 3f 44 ae f3 07 c8 75 7a 1f fb 74 07 b5 8b 97 eb ....n...\\.g"...?D....uz..t.....
2f220 c5 10 d4 e9 83 f9 51 f0 f3 c7 2f fb ce 6a c7 55 53 1a 98 f1 6c 9e eb f8 2e 25 e7 b9 7c 24 22 39 ......Q.../..j.US...l....%..|$"9
2f240 d7 f1 3d e4 38 be 8b 1c 87 71 c8 76 18 8b 6c bb 31 48 b7 19 0d 7b 95 3e 30 93 eb cd b2 dd d1 eb ..=.8....q.v..l.1H...{.>0.......
2f260 70 17 cf e7 47 c1 cf 9b 63 d1 d5 ec 78 96 e8 ac aa 45 a4 8b 09 b7 1f c3 4a cf b2 1b 8d 2c db 51 p...G...c...x....E......J....,.Q
2f280 c8 b4 19 41 5d 64 00 2b de 54 ae 0f 1c 4d 2d e9 19 77 bb 78 3e 3f 0a 7e ee ec f1 0a 66 c7 b3 84 ...A]d.+.T...M-..w.x>?.~....f...
2f2a0 98 70 b1 2a 17 13 3e 92 95 9e 61 3d 9c 18 86 f0 4d 83 60 26 df 87 95 6f a6 32 01 c7 13 2e 77 fd .p.*..>...a=....M.`&...o.2....w.
2f2c0 fc 7f ea 28 f8 df 84 b3 89 2e 3b a2 b5 25 48 78 57 55 2e 26 3c c3 6a 28 d2 2d 87 10 83 91 f6 eb ...(......;..%HxWU.&<.j(.-......
2f2e0 20 d8 a8 f4 c5 36 39 62 65 5f ec 3a 1c df f5 b3 f9 51 f0 f3 e7 44 c2 25 58 2b bc cd b2 63 5d 6f .....69be_.:.....Q...D.%X+...c]o
2f300 51 e1 e2 55 2e 26 3c cd 62 20 52 2d 06 20 d5 bc 3f 52 cd fa 61 eb ca 76 ec b7 9a c3 2f fb 19 ad Q..U.&<.b.R-....?R..a..v..../...
2f320 9f 1f 05 3f 7f dc 6d 5c bd b9 11 ad af f1 20 71 e1 a2 55 2e 26 3c c5 ac 2f 52 4c fb 20 d9 b4 37 ...?..m\.......q..U.&<../RL....7
2f340 fc 8d 7b b7 07 40 f1 c3 7b 07 83 8a 7f 94 e4 f9 fc 28 f8 39 2f 12 9f 4c b0 93 ba 04 d3 a1 e2 c2 ..{..@..{........(.9/..L........
2f360 45 ab 5c 44 78 f2 b6 5e 42 e2 36 f7 c6 af 8a fd b1 65 25 c3 40 dd 6e 6c 89 0f 40 4f 2d 5b 65 41 E.\Dx..^B.6......e%.@.nl..@O-[eA
2f380 2f 12 ff 90 80 a3 5a 2f 46 7a a7 6d 5d 5c ba 28 49 84 eb 9a be d8 bc 72 00 43 2c fd ea 17 f8 00 /.....Z/Fz.m]\.(I......r.C,.....
2f3a0 fc 03 96 85 bc b4 12 37 a6 3d a0 d3 87 91 2e 89 70 31 8e ea b5 cb df b4 72 20 7e fe ba ef 60 e1 .......7.=......p1......r.~...`.
2f3c0 03 f8 00 f4 ec aa 4c 11 6c 26 1e 11 e8 84 c6 ca 54 41 00 e1 54 91 2c 58 5f 12 f7 d6 27 16 f2 bd ......L.l&......TA..T.,X_...'...
2f3e0 6e d2 84 8e 02 d0 0b a7 b6 72 42 25 27 91 ee b1 56 1e 80 8d 2b 06 3d 61 b0 9b 14 2d 3e 00 cf 2b n........rB%'...V...+.=a...->..+
2f400 00 49 ef 4c 63 64 4b 4a 61 8c 00 f1 87 64 10 ea 22 83 74 47 92 6a fa fb 02 e0 a9 de 9f 15 ff cb .I.LcdKJa....d..".tG.j..........
2f420 8a c1 f8 79 c5 90 52 63 b9 a1 6f 3c c7 00 f0 a3 e0 a0 ec b6 35 15 29 13 9b db 05 cb e0 52 d9 1c ...y..Rc..o<........5.)......R..
2f440 5c 2c 9d 89 0b 45 13 51 9d 3d 4e 44 3e 75 01 96 f2 24 e2 94 00 65 89 02 94 44 09 90 e1 2c 59 10 \,...E.Q.=ND>u...$...e...D...,Y.
2f460 7c 0c fb b0 e2 59 e4 3f be bf 2f a0 70 63 57 7b e3 47 c1 3d 44 76 fa be 76 c9 a9 bd 71 bf 61 27 |....Y.?../.pcW{.G.=Dv..v...q.a'
2f480 fe d7 7a 58 c8 83 c6 1d b8 73 dd 12 0d f5 7a b8 5c fe 25 ce 65 bd 4f 01 e8 85 b2 27 01 28 4d a0 ..zX.....s....z.\.%.e.O....'.(M.
2f4a0 10 c4 0b 50 1c 29 40 ce 41 19 a4 d9 75 2e 3f fa 97 de d8 22 37 88 a9 7a 96 3d de 59 12 ec 8d 1f ...P.)@.A...u.?...."7..z.=.Y....
2f4c0 05 f7 08 19 e9 7e e0 3a c0 bd db ee 8c 78 31 1e b7 1e c2 e3 96 03 78 d4 bc 0f f7 6e ba 50 20 8c .....~.:.....x1.......x....n.P..
2f4e0 51 5f bc 04 15 49 c3 50 12 47 01 88 6d a7 88 8e 88 3c 3f 19 64 78 c8 20 c5 fc c9 1b 3f 9d fb b6 Q_...I.P.G..m....<?.dx......?...
2f500 aa ed f2 7f 5a 31 14 0e 0e 5e 12 ec 8b 1f 05 f7 78 00 88 0e 01 d8 4f c2 dd f0 b0 d1 03 ff 63 e4 ....Z1...^......x.....O.......c.
2f520 b7 92 fc 96 7d 14 00 2f 3c 6a da 4d 9f ef a4 ee e0 89 b6 eb b6 b8 50 bc 9c ba c1 30 56 7e 51 b4 ....}../<j.M..........P....0V~Q.
2f540 00 85 44 41 94 34 f2 c3 a4 91 e9 25 c0 1e ad 01 ac f8 9f be 1f 8a ad 7a ea f0 49 6f ea 6a 3f fc ..DA.4.....%...........z..Io.j?.
2f560 28 b8 a7 c9 4d 73 67 e5 9f 4e ed 87 07 4d 5e ed 15 df b2 03 8f 1b 4c d0 58 a5 84 47 b7 8d f1 f0 (...Msg..N...M^.......L.X..G....
2f580 f6 4f 78 d4 b0 0d 0f 1b 6c 48 be 2b 7b 34 dc bb e5 8a eb 95 1a 14 1a 17 dc bd 69 87 9b 55 da 74 .Ox.....lH.+{4............i..U.t
2f5a0 44 4c a1 00 f4 42 41 24 05 20 a2 1d 1f a7 be 30 55 a3 00 c8 7f 8a c3 51 55 12 ec 89 1f 05 f7 18 DL...BA$.......0U......QU.......
2f5c0 01 b9 77 d5 2a 52 a6 dd 66 02 70 2e 73 2c 5b ed 6c 00 9a 5d f0 f0 96 21 ae 14 2f c5 a3 5b 06 78 ..w.*R..f.p.s,[.l..]...!../..[.x
2f5e0 78 53 17 0f 6e 68 e1 fe 75 75 dc bf b6 0e f7 ae 69 e2 7a c5 4a 5c 2a 5a 49 41 70 a2 63 c1 81 0d xS..nh..uu......i.z.J\*ZIAp.c...
2f600 c1 dd 1b 36 68 ba b0 11 b5 85 4b a9 1b 0c 40 5e b8 34 72 a9 13 64 07 0b 10 bc 4f f9 74 48 c6 15 ...6h.....K...@^.4r..d....O.tH..
2f620 cd 6e ed 99 1f 05 77 7f a9 4d d4 5a a6 3a 49 b3 99 00 c7 da e9 eb 61 a5 a1 83 b0 7d 36 a8 2d de .n....w..M.Z.:I.......a....}6.-.
2f640 89 fb 37 7f c2 85 dc d9 a8 cb 9a 8a e6 1a c5 0e f2 d7 e2 de d5 55 b8 98 3f 1d d5 69 9f d2 35 93 ..7..................U..?..i..5.
2f660 d0 7a e1 5b b4 d4 7f 85 96 0b 8a 68 bb 62 88 3b d7 2c d0 76 cd 1c ad 57 4d 89 ad a8 2b fc 0a 79 .z.[.......h.b.;.,.v...WM...+..y
2f680 11 03 28 04 14 84 20 69 64 11 f4 ef 82 0c ff 77 b8 bf e5 cb cf 01 7a 6a ad 99 aa 3d 52 75 b2 66 ..(....id......w......zj...=Ru.f
2f6a0 0b 23 bd 2b f4 16 69 c1 cd 78 2d ce 9e 9a 8e 6b a5 4b f0 e0 ba 46 7b e5 5f 5d 8d db 67 97 a3 86 .#.+..i..x-....k.K...F{._]..g...
2f6c0 e4 57 a7 7d 82 fa ec 89 68 ad ff 1a 2d 75 cb d1 5c bb 14 4d 35 8b 08 59 0a c3 5a b4 5e d9 48 6c .W.}....h...-u..\..M5..Y..Z.^.Hl
2f6e0 45 cb a5 5f d0 50 67 84 f3 99 33 48 be 00 59 81 d2 c8 0c 90 46 86 bf e0 4e 86 bf b4 21 1f 80 1e E.._.Pg...3H..Y.....F...N...!...
2f700 5c 24 df 81 93 6c a5 ee 80 00 8f 60 38 e8 ba 42 67 81 89 50 be 68 67 d0 84 83 ce 1a a4 f8 aa a3 \$...l.....`8..Bg..P.hg.........
2f720 b1 76 0d ee 5c 56 46 6d e6 04 a6 fa 89 8f 51 9f 33 9e aa ff 4b 34 d7 c9 52 00 16 93 fc 05 68 ac .v..\VFm......Q.3...K4..R.....h.
2f740 9e 8b 86 aa d9 c4 1c 34 d5 29 e3 c6 79 75 34 5f fa 11 cd 17 4d 70 fd 8c 2a 0d 93 46 3d 09 80 34 .......4.)..yu4_....Mp..*..F=..4
2f760 d2 fd a4 91 16 d2 f7 9d 9e 0a 00 1f 80 49 5a 29 9c dc a2 d8 42 9c 49 af 44 65 72 39 ca 13 4b 90 .............IZ)....B.I.Der9..K.
2f780 78 34 11 fb b7 1e c4 36 25 4b ac 99 ae 2b 16 86 75 33 34 e0 a8 bf 1a 11 7b 64 71 3a e1 33 54 a7 x4.....6%K...+..u34.....{dq:.3T.
2f7a0 7e 44 47 c4 e7 54 fd cb 48 fe 12 a6 fa 49 fe 7c 34 92 f8 86 f3 33 71 eb ec 54 0a c8 7b 68 a8 51 ~DG..T..H....I.|4....3q..T..{h.Q
2f7c0 60 e5 37 31 5c 30 a2 6e a0 87 92 d8 f7 91 e1 f7 24 00 3e 82 d2 bc b0 c1 6f f2 01 e8 81 a5 36 49 `.71\0.n........$.>.....o.....6I
2f7e0 23 9b 91 a9 36 45 0b 95 29 e5 38 9d 56 81 8a a4 32 94 c5 17 a3 24 a6 10 85 11 79 c8 0f c9 41 96 #...6E..).8.V...2....$....y...A.
2f800 6f 06 fc 1d fd a0 3e 7b 43 a7 9d 61 dd 4c 0d b8 1b 2b 51 4b 9f 4f f2 65 49 3e 55 7f f5 02 92 3f o.....>{C..a.L...+QK.O.eI>U....?
2f820 97 e4 cf c2 8d d3 93 a9 43 8c c2 d9 84 21 14 84 79 8c 78 96 c6 fa 0d a8 ce 5b 4e f2 05 ac fc 74 ........C....!..y.x......[N....t
2f840 5f 69 24 fb be f5 09 3f 0a ee 21 0c 35 b7 a7 71 12 37 c9 9b 23 e1 68 3c 4a e3 4b 50 1a 57 84 e2 _i$....?..!.5..q.7..#.h<J.KP.W..
2f860 a8 02 14 84 e5 22 2f 38 1b 39 fe 99 c8 f4 49 43 ca a1 44 9c f8 f5 04 2c d5 ec a0 3e 4b bf d3 30 ....."/8.9....IC..D....,...>K..0
2f880 44 ec 5d 81 eb 95 8b a9 fa e7 b1 ad ff 5a c9 78 9c 4b 1a 81 b3 89 43 70 26 61 30 55 be 21 61 8c D.]..........Z.x.K....Cp&a0U.!a.
2f8a0 c6 0b 86 a8 c9 ff 8a 39 fb 85 f2 93 82 cd 62 f8 51 70 0f 11 98 dd 84 a3 fb bd c4 04 ae 27 b1 e6 .......9......b.Qp...........'..
2f8c0 ab 6c 70 d0 ec 30 e2 0e c4 22 37 30 0b d9 7e 19 c8 38 99 ca 06 e0 d4 be 78 24 ec 8e 41 8c 67 24 .lp..0..."70..~..8......x$..A.g$
2f8e0 0e 6c 3c 08 33 05 4b ac 13 3d 22 e8 77 a8 63 f7 66 79 e4 06 4f 24 f1 c3 89 a1 6c f5 9f 4f 1e 26 .l<.3.K..=".w.c.fy..O$....l..O.&
2f900 6c fd 17 8a bf 47 46 80 cc 13 f9 fd 11 95 90 ca 8f 82 7b 82 80 9c bb 48 ca 4c 41 59 ea 72 6a f7 l....GF...........{....H.LAY.rj.
2f920 32 d8 b9 71 16 f4 97 a8 70 f2 c4 d0 59 68 02 67 1d 37 04 39 07 22 f9 40 02 12 f7 c6 21 7e 57 34 2..q....p...Yh.g.7.9.".@....!~W4
2f940 62 3d 22 11 ed 1a 86 08 a7 10 04 59 f9 62 bb 86 2b f4 17 fe 20 76 bf a9 8a 22 e2 f6 4f c4 69 aa b="........Y.b..+....v..."..O.i.
2f960 fe 8b 45 73 29 00 46 b8 7a 66 0d 32 03 7b 0b 2b 3f 32 21 9d 1f 05 f7 04 21 d9 37 90 9f 66 27 f2 ..Es).F.zf.2.{.+?2!.....!.7..f'.
2f980 ad de e9 b4 de b8 76 7a 39 6a 8b cd 61 a9 65 0c f5 b9 da 4f 0d 83 ed 3a 47 9c b4 38 81 58 aa fe ......vz9j..a.e....O...:G..8.X..
2f9a0 18 f7 08 44 b9 84 22 dc 21 18 a1 b6 01 08 b6 f4 43 80 b9 37 b6 ae 30 c7 ea a9 3a 62 f7 fe b2 42 ...D..".!.......C..7..0...:b...B
2f9c0 0d a7 bc f5 d0 50 a7 4f 93 c1 d1 42 f9 31 b1 a1 fc 28 b8 07 20 d9 c3 84 d2 cf 67 0e 43 db d5 5f .....P.O...B.1...(........g.C.._
2f9e0 b8 49 9f 90 c7 4d 56 68 bb b8 1e 97 0a e7 e3 4c f2 64 64 04 7d 86 d0 03 53 b1 d7 4a 0e 9b 94 56 .I...MVh.......L.dd.}...S..J...V
2fa00 77 1a 0a a3 a5 3f c3 5d db 1d fe db 4e 22 c0 cc 5b 04 7f b3 93 70 a5 ce a0 33 cf 58 e4 9e 0d cb w....?.]....N"..[....p...3.X....
2fa20 e4 71 c4 56 16 41 99 37 f9 51 f0 5f 4d 50 76 eb aa c2 b4 8d 09 9c fc 4b a5 33 f0 b0 c9 b3 a3 78 .q.V.A.7.Q._MPv........K.3.....x
2fa40 c2 8b e4 5b d0 50 67 25 6a b3 a6 a3 2e 7b 1a ae 97 c9 d2 50 47 19 6d 97 d6 a3 a6 48 11 d9 f1 5f ...[.Pg%j....{.....PG.m....H..._
2fa60 c1 f5 c7 b9 30 f9 4e 0e 6a 93 35 c4 df 1d 66 e8 c1 42 c1 8a 11 2f 8e a9 37 dc 35 3d a0 bf 40 f4 ....0.N.j.5...f..B.../..7.5=..@.
2fa80 88 70 3d 98 6d ce 8f 82 ff c2 75 ea 94 d4 cb f4 b5 ee 31 4e fe cd f3 8a 24 fb 60 07 f1 07 69 ce .p=.m.....u.......1N....$.`...i.
2faa0 6f 8f c7 0d 3f d0 ac 7f 03 ea 73 66 e2 46 e5 d7 34 e1 53 a7 79 bf 0e 8d 7c 35 69 e4 bb 9e 66 fd o...?.....sf.F..4.S.y...|5i...f.
2fac0 6b d0 72 51 15 e1 07 c7 21 74 ff 68 f8 7a be 07 67 a3 39 d0 5b a2 26 16 04 13 d9 4d f0 d4 f1 84 k.rQ....!t.h.z..g.9.[.&....M....
2fae0 bf 69 27 1d 81 3e 33 58 f8 63 87 eb b5 76 48 fd 35 8b 0f 40 5e 9e d4 2b 24 dd 8f 93 df 7c d1 40 .i'..>3X.c...vH.5..@^..+$....|.@
2fb00 b4 ea 5b 76 e3 71 e3 26 92 6f 42 a2 0d 70 a5 68 11 89 d6 e6 be ec 11 9b f7 b7 d6 cb e1 5c ca 47 ..[v.q.&.oB..p.h.............\.G
2fb20 c8 0e 7d 1f 71 de 9f 22 39 74 3a 92 c3 66 e0 a4 c7 02 98 ae 96 c7 aa 29 a2 5d 41 6f be 09 53 f5 ..}.q.."9t:..f.........).]Ao..S.
2fb40 54 fd a2 21 f0 de 72 1c 6a 93 b4 9e 5c a7 91 c6 07 e0 2f 58 80 d4 ff db 3b 0b e8 b6 b2 64 6b f7 T..!..r.j...\...../X....;....dk.
2fb60 3f ff a3 80 24 b3 1d 74 1c 27 0e 33 37 e3 9b 49 73 98 99 99 99 9b c3 30 10 86 a6 30 73 62 8a 2d ?...$..t.'.37..Is......0...0sb.-
2fb80 c7 cc 14 30 b3 8c 61 9a 86 7a fb 94 a4 e3 ab 48 ee 40 53 e0 6a ad 5a e6 ac 48 df de 55 75 ea 9c ...0..a..z.....H.@S.j.Z..H..Uu..
2fba0 7b f5 17 40 df 29 1b 3d bd a3 05 7c ec ee 01 fc 74 23 fc a2 71 54 9c fc 21 c6 ba 23 00 7f 22 e0 {..@.).=...|....t#..qT..!..#..".
2fbc0 8f 03 fc d1 16 f3 fe 3b 05 fd 21 90 57 d0 1b 74 c2 90 e7 7d c4 07 94 12 f1 36 05 9d 78 91 7c f6 .......;..!.W..t...}.....6..x.|.
2fbe0 b5 80 18 da d1 a9 ef 3b d0 ea 19 ef 5a 65 04 d4 7f f4 01 6b b9 1f 10 02 d8 b7 60 27 61 04 cd 3f .......;....Ze.....k......`'a..?
2fc00 c3 c7 50 55 00 bf c3 e3 62 80 ee 9f e5 f0 9d b1 1b 37 cf 04 7f 07 6a fd 17 0c 9e e1 97 4c c0 46 ..PU....b........7....j......L.F
2fc20 cd 60 f3 d7 28 03 e3 ef 4f fd 10 c0 00 cc f7 bb 53 6e 74 27 34 88 5d b1 db f7 91 9c f7 17 c4 77 .`..(...O.......Snt'4.]........w
2fc40 a0 a4 a0 f6 a4 3f de 8e fc 8f b4 26 ff c3 2d 68 fb 97 af d0 c4 f7 fb 5a 09 61 f4 eb 93 69 f5 f0 .....?.....&..-h.......Z.a...i..
2fc60 d5 f4 45 ff af 94 df df a6 0a e0 37 7e 5c 08 b0 5b 5c 0e df 01 dd fe 7c 59 ef d1 e8 31 68 5b f1 ..E........7~\..[\.....|Y...1h[.
2fc80 63 d9 64 1b a9 9f dd 0f f0 bd e8 76 5e 4f b9 d5 2b e6 fd d7 d2 de 46 b3 d8 94 e7 fd c5 97 5e a5 c.d........v^O..+.....F.......^.
2fca0 f8 00 88 e0 70 73 f2 3b d8 88 7c f6 7b d1 f6 a5 1d 69 f2 47 bd 24 6c 1b f1 13 4a c0 8b aa 00 7e ....ps.;..|.{....i.G.$l...J....~
2fcc0 4b f8 7a 6d 1f 80 ff 59 d6 fd bc a9 8a 25 de e2 8a e0 23 a6 40 00 13 91 11 46 43 00 23 a4 fb ef K.zm...Y.....%....#.@....FC.#...
2fce0 18 06 40 00 7d 51 1e 7a 61 35 d0 1d 02 f8 10 02 78 8f dd 9f 1b dd 9a f2 63 5a 43 00 c6 79 7f 59 ..@.}Q.za5......x.......cZC..y.Y
2fd00 ca 8b 54 90 d0 8e 7c 0f 34 14 02 40 69 f0 24 ef bd 1e f4 dd da 1e 34 ad fb d0 fb e1 ff dc af fd ..T...|.4..@i.$.......4.........
2fd20 c8 79 bf e1 53 57 f7 02 92 03 3b 5e 35 83 2f bc d4 45 51 f3 77 d8 74 be 0c 38 df d8 f8 8d b3 aa .y..SW....;^5./..EQ.w.t..8......
2fd40 fb 77 f2 fb b0 f3 6f e5 0a f8 5d e4 3e 7f 76 78 73 6c 03 37 a2 ab a9 bc d3 c7 f0 4b 2f 77 a0 d2 .w....o...].>.vxsl.7.......K/w..
2fd60 4b 6d b1 8a 68 8e d3 41 4d 28 2d cc 8b 82 8e ba 93 df e1 57 c9 ff 78 0f f2 3f d6 8d 76 ae ab 4d Km..h..AM(-........W..x..?..v..M
2fd80 7b d6 56 a5 13 de 7e 9f fd 86 cf 5d dd 0b 38 18 76 43 0e 79 72 e3 3a f1 a1 cd 72 e7 7f fe 00 e7 {.V...~....]..8.vC.yr.:...r.....
2fda0 4f 92 b5 5f d6 7d e9 fc de 70 7e 0f 59 fb e1 7c 34 8c 2f 53 fa f9 06 94 1f db 8a 37 7b ca 52 5f O.._.}...p~.Y..|4./S.......7{.R_
2fdc0 82 00 3a 42 00 ed a8 e4 52 6b 08 a0 29 04 d0 88 0a 93 bc c8 90 58 8f 2e 87 b5 a3 e0 b3 bd c8 ef ..:B....Rk..)........X..........
2fde0 58 57 3a fe fd 8b d8 2c d2 d0 99 63 9b 7f a3 e7 ae ee 05 f0 6c 3f 22 e8 9f 0c 3f 3d dc 8b 4f e9 XW:....,...c........l?"...?=..O.
2fe00 96 77 fb 2b 24 ec 8a ea be 69 d9 07 f8 23 e5 92 4f b8 ff b6 74 7f 37 59 fb c5 3e 7f 36 ea 7e 1a .w.+$....i...#..O...t.7Y..>.6.~.
2fe20 04 50 72 f1 45 93 fb 3b 01 7e 7b b8 bf 0d be d7 12 f0 1b 03 7e 43 2a 4c ac 4f 86 84 ba 68 14 eb .Pr.E..;.~{.........~C*L.O...h..
2fe40 50 69 3a 4e 13 45 0f a4 48 ff 6e 14 f0 bd 96 fc 77 be 4c 07 c2 6e fe 16 cf 5f dd 0b d0 07 9f 64 Pi:N.E..H.n.....w.L..n..._.....d
2fe60 f8 97 cf bb e1 44 ee ca 72 f8 37 fe c1 03 9e 07 d7 fd b1 80 db 0f e9 7f 78 05 75 bf 8b f9 98 17 .....D..r.7.............x.u.....
2fe80 c0 be c8 ee cf 0c 6d 2c eb 7e 99 31 f5 03 7e 2b 63 fa 4f 82 fb 13 04 7c 4f 32 00 7e 41 5c 2d 2a ......m,.~.1..~+c.O....|O2.~A\-*
2fea0 ba f8 26 95 65 0c 87 10 86 d2 b9 ef 20 80 6f b5 74 d4 3f f1 d7 3e 77 75 2f c0 3b 24 01 f0 5d 11 ..&.e.........o.t.?..>wu/.;$..].
2fec0 3a 74 fb 73 2d 47 bb 57 66 3c c0 fd 93 d0 f0 8d c5 a1 8d ee 00 3d 90 3b 7f a3 fb fb c9 d4 6f b9 :t.s-G.Wf<...........=.;......o.
2fee0 ec 7b 17 e0 9b c0 fd 5e 70 75 6b 08 c0 32 f5 c3 fd 10 40 33 a4 7d 94 87 b8 ba 10 80 07 7e af 36 .{.....^puk..2....@3.}.......~.6
2ff00 3e af 81 cf 1b 94 0b 00 f0 fd 11 a7 8f ef fa 35 cf 5d dd 0b f0 0e 8d 9d 9e 1c d8 f4 96 a9 f6 2b >..............5.].............+
2ff20 e0 6f 93 13 3e cb 98 a6 6c fc 00 7c 34 5d b9 dc 05 20 bb e3 73 6e fe 2a 48 fd f2 90 27 a7 fe f4 .o..>...l..|4]......sn.*H...'...
2ff40 a0 fa 70 7c 27 99 fa 95 ee 47 f3 07 c7 7b 62 60 e4 0e f8 88 b8 9a e8 15 aa e3 6b 57 2a 49 eb 0b ..p|'....G...{b`..........kW*I..
2ff60 01 0c 86 00 74 e4 ff 8d 96 7c bf 7b 3f fb 31 9f bb ba 17 90 e4 ef 5c f5 42 a0 36 d1 0c 1f 17 71 ....t....|.{?.1.......\.B.6....q
2ff80 2a 3a fe c5 b6 e0 63 f4 bb 11 c2 98 25 52 3f 40 8f 00 bc 8f 01 4f cc fd 87 ca e6 cf 22 f5 5b 0e *:....c.....%R?@.....O......".[.
2ffa0 7d b0 dc 7b 07 02 a8 8f 15 40 13 34 7e 2f 5a 36 7e 17 5b c8 e6 2f 17 f0 f3 a2 6b 19 dd 1f 5b 03 }..{.....@.4~/Z6~.[../....k...[.
2ffc0 f0 dd f0 b5 33 ca c0 ff 42 04 83 28 fc 70 2d f2 fb 46 43 7e 5f 6b 7e 3c f9 9d 83 56 9d 03 3c fa ....3...B..(.p-..FC~_k~<...V..<.
2ffe0 98 f7 ff 29 67 fc e9 11 0d 70 99 d6 26 53 d3 b7 cc 06 7c 94 82 1b 7f 37 09 64 33 dd 2e 18 4d 65 ...)g....p..&S....|....7.d3...Me
30000 97 3e 86 6b 3f 84 ab 7b 5b cc fb 91 fa ad 1a 3f d3 21 4f d4 f5 0e 94 16 54 0f 7d 40 5b b3 fb 01 .>.k?..{[......?.!O.....T.}@[...
30020 bf 8d 4c fd c6 e6 af 01 e5 44 d4 c2 8c 00 ce 67 f7 57 83 00 5c f0 b5 23 15 24 e2 77 d3 06 52 a2 ..L......D.....g.W..\..#.$.w..R.
30040 6f 73 01 9f 7c 77 68 70 50 44 f3 b2 2a 80 47 9e f4 e9 66 9b e1 5f 0a 72 46 e3 b7 4c 36 7d 56 f0 os..|whpPD..*.G...f.._.rF..L6}V.
30060 af ce 16 ce 97 e5 e1 6e c9 52 b8 be 0b c0 7d 08 80 1f d2 3d c3 30 e5 ba 1f f0 7b c9 35 bf f2 7c .......n.R....}....=.0....{.5..|
30080 ff 95 f4 b7 29 03 eb fe 8c 60 2f 34 7d 36 1a 3f a4 fe 22 ee fc bd b0 4a a8 41 b9 51 d5 cd a9 1f ....)....`/4}6.?.."....J.A.Q....
300a0 f0 9d f0 b5 3d e5 c5 7a b2 00 52 42 5e 65 f8 2c 80 ed 9a a1 aa 00 1e 3a ed 6b eb 01 7a 59 f9 d6 ....=..z..RB^e.,.......:.k..zY..
300c0 6e 0f cb 61 8f 12 fc b5 4f 2c b6 7d 11 80 38 0a d0 d8 f9 80 ff 11 c0 4b f8 b2 f6 5b 39 5f 01 3f n..a....O,.}..8........K...[9_.?
300e0 8d 6b 7f 07 b9 e4 b3 86 5f 1f ae af 83 a3 e1 ae 94 1d e9 6a 01 3f 27 52 4b d9 11 55 f0 7f c6 a6 .k......_..........j.?'RK..U....
30100 d2 85 de e4 b3 5d 43 3e db 34 74 76 9b 66 9f 2a 80 87 ad f9 7a 5d 82 19 7e 4e 7c 07 38 5b 0e 7b .....]C>.4tv.f.*....z]..~N|.8[.{
30120 2c 36 78 b0 bf 6f 75 d2 e7 df 57 36 02 1c 3b 1f f5 fa 7d ba 95 d3 df d6 b8 17 75 bf 8b 18 f7 ca ,6x..ou...W6..;...}.......u.....
30140 ba 7f 0d 17 77 18 e2 db 73 ed 47 fa 47 ea 17 02 68 07 f8 62 e0 83 ba 9f dc 94 97 7d 70 3e 2f fb ....w...s.G.G...h..b.......}p>/.
30160 72 23 6b 62 42 e8 82 3e c1 59 d4 7d c0 77 00 7c 1d e0 57 65 01 14 a7 f4 a0 e2 d4 a1 2c 00 6f 08 r#kbB..>.Y.}.w.|..We........,.o.
30180 c0 67 ab 26 e0 79 1b 05 7b 20 36 3e 6a 44 07 2d 4e 93 35 3f dc 13 27 7a fe a5 18 f6 ac 91 8d 1e .g.&.y..{.6>jD.-N.5?..'z........
301a0 3e b7 00 8f c0 d5 bb 5b e8 46 9e 48 fd 1f 49 f7 cb ba 7f df b2 4f 0e 7c 4c 75 1f 1b 3d 70 7f 43 >......[.F.H..I......O.|Lu..=p.C
301c0 01 1f 51 b7 a2 ba 0f 01 d4 43 c7 5f 07 e0 ab 53 66 b0 13 3e 3a 71 dd cf 89 b2 83 00 34 0c 5f 44 ..Q......C._...Sf..>:q......4._D
301e0 11 fe 0f a5 19 a3 c8 f7 6b 07 51 ff e9 cc 37 7d ae c8 e7 f9 f8 e1 f1 b4 8c 82 87 3e ee 3a 57 d6 ........k.Q...7}...........>.:W.
30200 fc f3 ce 74 af f4 2b e5 a1 0e f3 be 3e 3e 97 a2 90 f1 e3 f5 6d 74 b3 60 15 40 8e 14 f0 01 4d b8 ...t..+.....>>......mt.`.@....M.
30220 bf 5f c5 f3 7e cb eb fa 00 b5 2d c0 b3 fb 51 ff eb 57 50 f7 79 e8 03 b7 d7 c2 ee a0 1b a5 07 3b ._..~.....-...Q..WP.y..........;
30240 e0 a3 83 32 f5 cb 28 bc d8 19 02 18 43 81 3b dd e8 ac 10 c0 8e 8f 7f ab 39 c0 a0 a7 41 00 c5 8f ...2..(.....C.;.........9...A...
30260 37 ec 89 33 df b1 03 30 a7 de b7 de 9f 6d 6a f6 e6 2a 6e e3 b2 1e e0 37 a3 29 dc 4e 37 0d ab e9 7..3...0.....mj..*n....7.).N7...
30280 7a f6 3c 63 fa bf f8 01 37 7e 77 01 bf a2 79 bf 29 f5 43 04 1f d2 d5 cc 2e 3c f5 33 b9 1f 62 68 z.<c....7~w...y.).C......<.3..bh
302a0 6e b5 e4 83 fb 79 de 8f 71 2f 5c 5f 8d 32 c3 5c 28 e3 bc 3d 65 85 c3 f9 51 48 fd 70 bf 85 00 2e n....y..q/\_.2.\(..=e...QH.p....
302c0 bc 03 01 8c a3 a0 bd b5 e8 ec 16 0d 9d de fa d2 6f 25 80 e2 67 52 00 27 42 b3 28 29 f0 55 16 40 ................o%..gR.'B.().U.@
302e0 69 7a 6f 59 db f1 11 d0 17 31 7c 7c 14 62 e0 ef df 29 59 89 63 d7 63 f8 f3 db 45 eb 90 fa bf 42 izoY.....1||.b...)Y.c.c...E....B
30300 dd ee c5 cd 1f dc 0f 87 f7 f9 a5 79 bf 6c fc 6e 15 cc c4 e4 6e 26 e5 c5 f5 84 a3 9b 50 ba be 2e ...........y.l.n....n&......P...
30320 04 d4 56 a6 7e 4b f7 d7 05 ec 9a 80 ef 8a fa ef 04 b1 e8 30 31 d4 49 f7 5b 0a e0 6d 2a cd 1c 4f ..V.~K.............01.I.[..m*..O
30340 21 fb ea d0 19 b1 29 b4 a5 fe 6f 25 80 a2 a7 41 00 43 1e e5 49 1d 0d 2b a2 04 7d 4f 86 9f 9f f8 !.....)...o%...A.C..I..+..}O....
30360 ba b2 ab 47 ad ff ca d4 ed 7f 2e 45 71 d3 b0 84 32 22 db c2 f9 9b e9 5e d9 06 ba 99 bf 12 a9 7f ...G.......Eq...2".....^........
30380 94 b9 f9 43 bc 8f da 3f d4 d6 bc 5f 36 7f c2 fd 37 f3 c6 60 ac bc 18 e9 7a 22 19 2e 8c 47 03 d8 ...C...?..._6...7..`....z"...G..
303a0 04 f0 1a 71 fa b7 d5 f8 15 c4 ba e3 e7 70 7f 28 dc 1f ec 48 a9 81 5a 08 41 c3 8d 9f b5 00 de a2 ...q.........p.(...H..Z.A.......
303c0 b2 cc 89 b8 28 c4 83 05 70 7a 93 86 f6 87 dd 7e 1e 4a 80 14 81 3b 62 fd 83 e2 48 58 c9 b6 04 7d ....(...pz.....~.J...;b...HX...}
303e0 5f f3 92 0f 50 37 59 36 7d dc f0 c9 8d 1f 8e e4 73 ae c8 00 9f a1 41 dc 22 e0 23 f5 cf 65 f8 c6 _...P7Y6}.......s.....A.".#..e..
30400 e6 4f 2c eb 7a 03 fe 90 8a e7 fd 7c 53 07 88 a2 e8 13 2a 4b 9f 41 86 8b 13 28 2f be 07 a5 ea 3d .O,.z......|S.....*K.A...(/....=
30420 00 bb a5 68 fe ac 1a 3f cc fb e1 fe 1a ec fe 8c 10 67 94 0c 07 fc 7e 55 2c 05 25 7c 1b 02 98 44 ...h...?.........g....~U,.%|...D
30440 a1 07 ea 32 fc d3 1b 85 00 6e 6e e4 e7 fd f8 e1 fe cc 2c 03 53 4e be f0 df 58 ee 9d 35 83 bf 1c ...2.....nn.......,.SN...X..5...
30460 52 1d 6e 5e 61 84 cc a3 dc b9 dc f8 c9 26 ef c6 56 8c 81 3b 53 a2 9f 10 c9 16 08 e0 1f 26 e7 8f R.n^a........&..V..;S........&..
30480 34 39 9f e1 03 dc 7b f7 d5 fd 5e 36 37 7b 18 7e e6 4c 86 9f 9f 34 84 e1 e7 c7 36 95 b5 bf 7c 9f 49....{...^67{.~.L...4....6...|.
304a0 df 93 e1 e7 02 7e 96 80 1f ea 04 f8 f6 48 ff 5a ba 1c 50 09 d9 a0 b2 4d 01 14 5d fa 80 ca b2 a6 .....~.......H.Z..P....M..].....
304c0 91 7e 77 4d 3a 05 f8 a7 36 68 ee aa 73 00 e5 31 ee 00 dd c1 f2 8e df 05 40 3f 37 c1 de 62 1a ee .~wM:...6h..s..1........@?7..b..
304e0 6c 35 c3 87 d3 d7 53 56 74 7b 86 9f e4 e7 80 e6 6f 93 c2 f9 5d 45 dd 97 9d 3f 0b 40 3a bf 8f ad l5....SVt{......o...]E...?.@:...
30500 71 2f fe 76 2c ca c8 62 cc ec 27 41 00 e3 29 2b f2 6d 4a d3 7b 00 bc dc e9 13 ce 97 75 3f 2f a6 q/.v,..b..'A..)+.mJ.{.......u?/.
30520 36 9a 3d 37 c0 76 46 ca 77 40 a9 d0 09 f7 43 00 ff 03 51 d8 16 40 f1 e5 6e 74 25 7b 06 05 7c e7 6.=7.vF.w@....C...Q..@..nt%{..|.
30540 26 e0 d3 c9 0d 9a 6b aa 00 cc ce 0f d0 1e 95 f0 f5 4e 70 e3 62 45 da 5f 66 d1 03 dc bb b2 8a 52 &.....k..........Np.bE._f......R
30560 43 1b 30 7c 11 a5 69 03 78 b9 67 6c fa 7a 2b 87 3e 00 f7 2e dc dd c3 58 f7 f3 fb da 1a f7 22 f5 C.0|..i.x.gl.z+.>......X......".
30580 f7 63 f7 5f cd 9e cd ee 2f 48 1e 03 37 7b 61 b0 d3 48 2e fb 8a d1 f8 c9 ba 8f ae 3f 27 a2 3a c6 .c._..../H..7{a..H.........?'.:.
305a0 be 2e 10 80 23 6a bf 1d c4 a2 a5 94 40 16 00 4a 82 15 7c 8e 92 b4 01 10 c0 2c 0c 80 ec 8c 02 58 ....#j......@..J..|......,.....X
305c0 af cd 56 05 80 07 a0 9f 51 1e e3 be 5d b8 40 79 f5 8e c5 64 0f 77 ea 84 40 6a 48 f8 19 11 cd 51 ..V.....Q...].@y...d.w..@jH....Q
305e0 16 b6 56 98 fa 4b 20 80 3b 86 41 15 ed f3 23 ba e0 df 5c c2 02 28 ba 3c 99 dd 9f 1b db 05 cd 9c ..V..K..;.A...#...\..(.<........
30600 3b 52 3e 6a 3f 52 bf a9 f6 cb ba 9f 1f 53 13 ee 77 85 d3 9d 50 fb 1d 90 fe 75 10 8c 86 52 02 2a ;R>j?R.......S..w...P....u...R.*
30620 1b 33 40 b8 6d 01 60 06 80 12 30 95 4e 33 7c 0d 9d 58 af 89 7d ee 05 90 e4 5f c5 4d d6 fc 20 17 .3@.m.`...0.N3|..X..}...._.M....
30640 0b e7 03 bc 32 ed f3 29 df e4 00 27 09 3f c9 df 91 07 43 77 4b d7 23 f5 cf a1 32 ab d4 0f f7 67 ....2..)...'.?....CwK.#...2....g
30660 f4 e0 a1 8f ed d4 8f c1 90 61 0e 8b ea 56 e1 12 86 6f b8 30 8e d2 43 5a c1 dd f5 ad 86 3e 22 f5 .........a...V...o.0..CZ.....>".
30680 e7 c7 73 d7 8f 75 7f b9 fb d3 83 b4 10 4c 15 86 ff 4b 02 b8 92 35 9d 8a d3 c6 30 7c 84 c8 02 7e ..s..u.......L...K...5....0|...~
306a0 cf f5 a9 60 df d0 d0 f9 c9 81 af 94 32 fc e0 9a 74 bb f8 4b 06 6d 1d 3b 30 07 18 04 e0 3a 8b fb ...`........2...t..K.m.;0....:..
306c0 f2 96 65 0c c6 d0 87 dd 2f d6 fb 32 f5 5b b8 bf 60 20 a7 7f cb 25 1f bb 1f 65 63 3c e0 7f c6 ee ..e...../..2.[..`....%...ec<....
306e0 c7 6d dc 58 00 79 09 fd 91 ca dd e1 f6 66 16 43 1f 4e ff 48 fd 79 d1 35 4d b5 df 09 f0 ed 01 1f .m.X.y.......f.C.N.H.y.5M.......
30700 ee d7 57 85 00 2a 19 05 70 ee 7f 6c c2 cf 89 72 a1 2b 39 73 21 b0 81 52 00 27 76 4c 08 7b 6e 4f ..W..*..p..l...r.+9s!..R.'vL.{nO
30720 05 7b 87 26 c8 21 0f 8e 50 c3 c5 72 59 67 15 06 80 bc 1f 7e 46 54 6b 74 fe 80 6f 58 c3 02 00 fc .{.&.!..P..rYg.....~FTkt..oX....
30740 fb dc df 19 ee ef 56 de fc 21 f5 5b b8 3f 77 a0 84 7f c3 b0 00 47 c9 47 b2 fb 33 c3 5f 43 5a af ......V..!.[.?w......G.G..3._CZ.
30760 6b 73 de 9f 1f 5b 9b dd 9f a5 ac fd 48 fd a9 fa ca 94 02 f8 e9 21 5e f8 dc ce a6 00 f2 e2 1a 40 ks...[......H........!^........@
30780 00 f3 d1 b8 7e 24 05 70 e4 c8 e1 e7 f2 54 30 9f e4 8d 0e 5a c4 f0 11 80 f0 45 45 f0 e1 f0 0d 16 ....~$.p.....T0....Z.....EE.....
307a0 b7 64 07 7c ac f9 71 1b d7 b2 e5 c8 18 7f 37 75 fe b3 79 9f 5f 91 fa e1 fe ce 00 3f 40 ce fb 15 .d.|..q.......7u..y._......?@...
307c0 8d 1f a2 9b a9 ee 7f 8a 7e 43 0c 90 fe 8a 9d ba 89 a2 f9 03 40 8c 7d 63 1b 5b ed f3 1b e7 fd d5 ........~C..........@.}c.[......
307e0 b9 f6 0b f7 a7 0b f7 9f d7 c2 fd 55 90 31 2a 21 03 60 f6 1f d7 0d cb c7 01 38 15 54 cb 4a 00 05 ...........U.1*!.`.......8.T.J..
30800 49 9d e8 6a ce 42 1c 5e 7d 55 0a e0 f0 29 fd 73 7d 2a 98 ef d3 13 a3 9f cb 22 48 0d f3 a0 bb a6 I..j.B.^}U...).s}*......."H.....
30820 35 3f 82 87 3a 29 c1 b5 00 9f c1 4b f8 99 51 ed b0 bd cb 93 3e 53 e3 37 82 97 7d 0a e7 03 fe df 5?..:).....K..Q.....>S.7..}.....
30840 18 bc 62 dc 2b 9d 7f ab 60 02 c0 7f 2e e0 03 c8 54 0a 3b e2 82 d4 3f 12 31 91 d2 82 9b 02 b2 97 ..b.+...`.......T.;...?.1.......
30860 25 7c 79 bc db 5d d6 fd f4 10 ac f9 cd f0 03 2a e1 f3 da 94 1b df 1b d1 07 59 a4 5f 05 2b 80 41 %|y..].........*.........Y._.+.A
30880 74 35 77 31 c6 c0 6e 52 00 07 f5 05 ea a9 60 88 c0 9c 09 00 bc 06 5c fd 39 20 cd e2 d5 80 b5 f3 t5w1..nR......`.......\.9.......
308a0 5d 30 18 5a 2a 96 7c d2 f9 65 58 5b 23 fd cb 25 9f 10 c0 d5 b4 2e 36 2f eb ba 99 37 18 ff fe 17 ]0.Z*.|..eX[#..%......6/...7....
308c0 9c fa 6f 16 2e a4 38 ef 06 14 ef 0d d0 97 44 f7 3f 09 2e ae 8d 74 df cc 6a dc cb b5 9f 27 7e c6 ..o...8.......D.?....t..j....'~.
308e0 35 7f 06 77 fd a2 ee 57 e6 ce 3f 3b e6 7d 01 1f d1 17 63 eb 0f 6d 0a a0 2c 6b 0a 0b c0 77 9b 80 5..w...W..?;.}....c..m..,k...w..
30900 8f d8 d8 d2 3c 06 56 4f 05 27 ea bb a7 2a 2e e5 c6 47 7b 4a 36 c1 8f 3f f7 4a 89 80 9f e0 a3 c3 ....<.VO.'...*...G{J6..?.J......
30920 1a 7a a4 ac f9 37 f2 be 94 8d 1f c6 bd 56 ee b7 5e f6 f5 60 d7 03 3e 7f 4c 0b 7f 83 ef ce 99 13 .z...7.......V..^..`..>.L.......
30940 db 53 c0 47 4c 46 6d f7 b4 35 ee 45 ed af 85 cd 1d 51 fb 85 fb ed e0 78 ae fb ec fe 8c f0 16 0c .S.GLFm..5.E.....Q.....x........
30960 9e 03 0d 64 7e c2 eb d6 0d 60 a4 3d e0 2f 62 01 9c 32 b9 ff f8 96 0f b2 d4 53 c1 a6 47 dc 19 d7 ...d~....`.=./b..2.......S..G...
30980 2a 80 7f 5a be 15 8b 09 7e 82 bf ee 10 1a 3f 3f 4e fd 31 1d b1 64 5b 55 9e fa d3 86 8b 65 9f ac *..Z....~.....??N.1..d[U.....e..
309a0 fd ec fe 64 ec e3 a7 77 b5 75 5d 1f 6a fd 3c 53 ea ff 0c 1b 3d 83 19 7e c4 d1 ea 58 fb 4f 61 f8 ...d...w.u].j.<S....=..~...X.Oa.
309c0 05 68 00 0d f1 8d ad 52 3f 8e 79 89 91 2f 20 8a 79 bf ac fb 10 40 25 84 3d e5 c6 f5 02 fc 7e 02 .h.....R?.y../..y....@%.=.....~.
309e0 3e 62 00 9a bd 56 56 02 c8 8f 6f c2 f0 11 0c df 18 55 bf 57 bc 04 ea 28 38 29 e9 85 ff 4a 0a d0 >b...VV...o......U.W...(8)...J..
30a00 7d cf f0 59 00 da 35 89 be ba 11 9c fa 03 dc e0 f8 85 12 fe b5 ec 59 80 df fd be a1 4f 67 21 00 }..Y..5...............Y.....Og!.
30a20 80 ef 6f f3 ba 3e a4 7e 2e 2f d7 72 66 70 dd 0f de 07 90 61 7f 45 f7 3f 15 02 98 4a d9 d1 ef 5a ..o..>.~./.rfp.....a.E.?...J...Z
30a40 5d d7 27 dc 9f 27 dc 1f 55 0d 20 9d d1 f5 eb 90 fe 91 fa 83 2a 73 e3 97 1d f5 86 04 cf f0 13 06 ].'..'..U...........*s..........
30a60 51 4e 8c bb 8d 4d a0 77 ac 05 f0 2f ed 64 55 00 36 ee ec 21 c0 27 f9 69 27 26 79 db d7 46 ed bf QN...M.w.../.dU.6..!.'.i'&y..F..
30a80 26 04 50 92 32 c8 0c 1f 42 f8 82 53 bf d5 bc 3f f9 af d8 cb ef 66 6b 9f 1f b5 7f 28 0b 00 5b c6 &.P.2...B..S...?.....fk....(..[.
30aa0 a8 fb 5e 02 3e 32 80 1d e0 63 f0 73 69 1a 62 2a 6a 7a 43 53 ea 57 ba df 1d f0 ab b3 fb b3 c2 1d ..^.>2...c.si.b*jzCS.W..........
30ac0 e1 7e 0d 82 d7 fc 58 05 a0 2f 30 81 cf 4f e8 cb 99 20 2f 71 30 0e 81 68 2b 6c 00 11 ca 21 50 27 .~....X../0..O..../q0..h+l...!P'
30ae0 55 00 bf 70 f6 1f f0 7d cc b5 1f f5 5e 21 80 af d0 f9 0f b7 9a f7 97 5e 7c 57 c0 b7 da e7 bf 95 U..p...}....^!.........^|W......
30b00 d3 8b ee 14 8b d4 ff 25 ea fe 9b f2 a6 cc 17 ce b5 45 f3 37 0d 22 98 4e 79 48 e1 69 81 b5 ac 1b .......%.........E.7.".NyH.i....
30b20 bf e8 9a 80 ef c6 87 3c 33 43 ed e1 7e 0d 84 52 19 a9 1f 75 3d b6 2b 52 bf 70 3d 8e 7a 9f 6f c7 .......<3C..~..R...u=.+R.p=.z.o.
30b40 ee 87 00 6c 34 80 55 d1 bb cc 16 f0 f1 71 a6 59 00 77 4f ae 7b e1 bf 55 01 54 f0 c8 f0 7f e1 7f ...l4.U......q.Y.wO.{..U.T......
30b60 e2 7d 75 3b 05 fc 78 c4 a5 80 26 18 a3 2e 2a 17 41 fe 32 1c d9 9a 02 01 7c cc 13 3f 91 fe 6f 66 .}u;..x...&...*.A.2.....|..?..of
30b80 f5 b4 d1 f8 89 39 ff 42 08 60 a9 b9 ee cb 1b 34 c2 bd 0c bf f0 f2 0c ca 08 eb 88 cd 9d 7a 16 8d .....9.B.`.....4.............z..
30ba0 1f ae ec 41 ed af 86 ef bb 88 e6 0f 02 b0 83 fb ab a0 fe 57 c2 b0 a8 35 5c 3f 58 40 67 21 44 1c ...A...............W...5\?X@g!D.
30bc0 ab c3 f0 6d 09 00 57 0a 49 f7 1b 2e 0e 60 01 a0 11 3c ff 10 2f 83 7a 83 88 a0 80 6f 37 c6 7b d7 ...m..W.I....`...<../.z....o7.{.
30be0 bf 17 7b 16 42 38 e3 0a 88 a3 21 80 15 2c 80 eb 79 4b 51 cf 97 50 69 4a 7f ae fd b6 52 ff 6d c3 ..{.B8....!..,..yKQ..PiJ....R.m.
30c00 34 c0 5f c6 02 08 3b ec 2c e1 47 9e ac 43 45 00 0f f8 7c ea 27 e5 5c 4d 80 6f a4 5c f3 5b ba 3f 4._...;.,.G..CE...|.'.\M.o.\.[.?
30c20 cc 01 cb 3f 9d 80 0f 11 38 22 63 0c 60 d8 f9 88 88 63 1e c8 52 ad 2a 14 80 21 e9 45 29 80 94 90 ...?....8"c.`....c..R.*..!.E)...
30c40 b7 58 00 c7 76 2e 3d a4 de 20 e2 11 22 c8 6f 83 7c f7 2d f1 06 4c 71 67 6a 93 21 79 24 5d cf fd .X..v.=.....".o.|.-..Lqgj.!y$]..
30c60 02 81 35 bd 61 29 dd 2d 9e 07 01 0c 60 f8 b7 f2 fa 62 90 b4 14 b1 9c 05 90 16 f6 26 83 0f 42 84 ..5.a).-....`....b.........&..B.
30c80 ec 77 14 8d 1f e0 cf 42 cc a4 14 bd 27 96 79 5e ec 7e 09 3f 86 bb 7e 00 74 02 7c a4 fe 10 ad 70 .w.....B....'.y^.~.?..~.t.|....p
30ca0 3f 3e c7 ef 26 0f 07 f8 a1 dc f9 07 ee 72 e2 53 3d 19 91 1f 9a 04 31 c4 02 3e fa 01 9e ff 73 fa ?>..&........r.S=.....1..>....s.
30cc0 cf 9a 85 63 60 5a 3a b9 e9 75 3a f0 e8 eb 7f f5 06 11 de 81 41 14 71 ea 75 8a 32 bd 03 57 e4 31 ...c`Z:..u:.........A.q.u.2..W.1
30ce0 0d 66 06 1d b1 49 34 1b 13 c4 35 74 0f 71 b7 74 35 dd 29 9a 0b e8 9f 02 fe 0a 7c 5c 8e ac 31 04 .f...I4...5t.q.t5.).......|\..1.
30d00 75 5f c0 47 ec d1 62 2b f9 25 80 9f 4d 45 08 0c 6f 50 d3 6b ca da 8f 7d 7e 34 7e b5 28 17 ce 47 u_.G..b+.%..ME..oP.k...}~4~.(..G
30d20 d7 cf c7 bb 33 e0 fc 74 53 ed cf 4b e8 8d 51 ef 30 06 7d 29 b0 0d e0 73 33 c7 33 00 08 00 a3 e4 ....3..tS..K..Q.0.})...s3.3.....
30d40 61 f7 2d ff 9a 4a f7 8b 79 03 bb 7f ef 86 c7 7d 0d d4 1b 44 1c 09 2d 21 bd ef 3f 29 f2 b8 10 00 a.-..J..y......}...D..-!..?)....
30d60 bf 03 17 3e 3a 50 76 ec c7 26 11 ac 86 08 56 d1 9d d2 95 2c 80 6b b9 73 28 ec a0 13 a7 7e 01 5f ...>:Pv..&....V....,.k.s(....~._
30d80 8f c8 4b 1c 4e 45 29 73 38 d2 43 5b 53 6e b4 a7 ac fd 5c f7 a3 ab 63 79 87 ba 1f e1 28 dd 9f 26 ..K.NE)s8.C[Sn....\...cy....(..&
30da0 6a 7f 50 25 00 1e 81 bf 1f ca 75 df 7b 0b e0 43 00 3e db 9c f8 7b 10 00 ca 49 ef fb 4e 00 75 97 j.P%......u.{..C.>...{...I..N.u.
30dc0 02 88 3b d3 86 05 70 c8 3b e6 d7 c2 56 6f 10 71 32 28 81 42 4f 0e c2 20 47 4b e1 47 38 00 e5 63 ..;...p.;...Vo.q2(.BO...GK.G8..c
30de0 ec e9 7f 0e f8 10 40 c9 2a 34 7f 4b 29 ee ac 97 ac fb 10 00 20 34 00 f8 79 1c 18 fc 60 92 57 1d ......@.*4.K)........4..y...`.W.
30e00 e0 1b 28 96 7d 35 d1 f8 b9 4a f7 67 b2 fb ab 32 fc f4 60 27 b8 1f e9 3f 61 08 c5 9c f0 30 9f e9 ..(.}5...J.g...2..`'...?a....0..
30e20 43 63 e9 25 eb bf 21 e9 7d 45 fa 17 93 cb 39 a6 ee 7f 2e ae 04 72 60 01 1c 08 bd f1 5b bc 06 ea Cc.%..!.}E....9......r`.....[...
30e40 0d 22 8e 06 17 0d d7 9f fe f2 70 d8 d1 46 77 c2 0e f3 db af 41 08 0e d8 54 7a 03 f5 76 26 ea fe ."........p..Fw.....A...Tz..v&..
30e60 db e5 f0 11 fa dd 5a 6c c5 76 a7 a2 d4 f9 10 c0 7c 3e f3 97 1d 56 c7 62 d9 c7 ee 8f 10 d7 f6 39 ......Zl.v......|>...V.b.......9
30e80 02 be 1d dc af 81 fb 2b b3 00 72 e3 3a 23 f5 e3 c6 d1 11 6f c9 d4 0f a0 10 55 47 29 80 82 c4 57 .......+..r.:#.....o.....UG)...W
30ea0 a4 00 70 39 b8 74 7f 66 4c 0f b9 fe ff 8d 6f 86 ad de 2c 3a 7a 6f 55 e7 f0 83 ba e5 e6 b7 5f 43 ..p9.t.fL.....o...,:zoU......._C
30ec0 28 96 7b b2 f6 a3 14 b8 88 c6 0f 02 58 c0 91 15 f1 3a c0 37 56 2c fb dc 21 00 51 fb 9d 20 00 a4 (.{.........X....:.7V,..!.Q.....
30ee0 fe 50 2d 26 7f 55 28 1d f0 33 c2 50 1e 92 47 c1 fd fd 28 68 b7 b3 84 8f 40 1f f2 37 86 cf d9 01 .P-&.U(..3.P..G...(h....@..7....
30f00 23 5f 79 fc 2b 7d b8 14 40 c4 91 26 f2 f7 7f a7 97 41 bd 51 64 c8 41 ed 4a c0 2f 11 f0 83 2d e1 #_y.+}..@..&.....A.Qd.A.J./...-.
30f20 17 0b f7 a7 9e 7f 13 e0 17 1a 05 90 b2 00 e7 f3 96 d0 8d 82 cf 70 10 74 12 95 a6 f5 a0 a2 0b 2f .....................p.t......./
30f40 a2 f9 13 ee 17 d7 f6 e9 00 bf 2a dc 5f 49 ec fa c1 f9 fd 50 32 46 d2 c5 c0 56 46 f8 0a 01 64 44 ..........*._I.....P2F...VF...dD
30f60 f6 14 02 80 b8 26 f0 a9 1f 3e fc 11 eb 21 e1 17 a7 4e 52 08 a6 6a 96 2a 80 df f1 71 12 a7 8b 43 .....&...>...!...NR..j.*...q...C
30f80 f6 ea 7a c1 fd 67 01 ff 27 88 60 2f e0 5f 41 f0 5a 3d 3b b6 3f 40 cd 61 21 5c cb c3 12 d2 f0 15 ..z..g..'.`/._A.Z=;.?@.a!\......
30fa0 44 f0 25 5d 2f f8 02 f1 39 44 31 05 ab 83 fe 00 fe 0e f6 06 5a 61 f8 53 1b 50 3b a1 b9 83 fb d1 D.%]/...9D1.........Za.S.P;.....
30fc0 00 fa 6c 95 a9 5f 46 4e fc 70 16 40 49 da 04 e9 7e 5c 06 2e 05 90 e8 2f 0f 80 60 00 54 75 91 2a ..l.._FN.p.@I...~\...../..`.Tu.*
30fe0 80 3f f8 71 6e b7 b6 5d e0 4e ed 6a dc 9f 4f dc a2 4d de a6 0d 37 6a e2 5b b5 e8 f7 56 c7 59 83 .?.qn..].N.j..O..M...7j.[...V.Y.
31000 4e 94 1e de 15 c2 98 02 90 d3 01 70 32 84 30 01 f3 82 71 80 3f 9a bb ff ac a8 37 cd 20 ff 8d f8 N..........p2.0...q.?.....7.....
31020 09 81 55 45 53 ee 0b 30 a0 92 c0 71 f0 53 7e 7e 51 ff b6 72 f3 67 fd 9f f8 32 a8 ef 1b e8 ff bd ..UES..0...q.S~~Q..r.g...2......
31040 ee ed 73 df eb b6 01 be 81 e1 7f a3 91 f7 ea f1 d9 ce c1 d7 ec e3 d2 6d 2c 33 1b 62 47 f2 45 4a ..s....................m,3.bG.EJ
31060 0d e9 4c 99 d1 bd 71 d4 6b 20 85 ec 71 34 c3 dc 61 fa 88 a1 d4 6b ec fe e2 34 3e ec 61 11 25 19 ..L...q.k...q4..a....k...4>.a.%.
31080 33 f0 ef c9 bf f9 f1 e4 46 9d e7 13 f0 32 a8 ef 1b 88 77 08 1f 74 cc 37 72 ee e9 43 eb bf 3d bb 3.......F....2....w..t.7r..C..=.
310a0 73 54 94 cf 8e 66 b7 cc 77 ec 38 bb 15 81 f5 3d 5f b9 2b ae dd 43 9c 92 1d 3f 62 63 87 ab 47 8f sT...f..w.8....=_.+..C...?bc..G.
310c0 9e 58 6e 16 c0 b9 9d 9e 58 6a 76 a0 4b c1 9d 21 92 be 54 70 69 34 26 7f a6 d4 ef f7 9a 74 ff f1 .Xn.....Xjv.K..!..Tpi4&......t..
310e0 6f a6 e9 ad ff 2f ea 28 f8 09 89 3b 74 48 9f 4d 47 bd c3 e8 f4 9e 4f 71 cd fe 5b 12 be 5c ee 99 o..../.(...;tH.MG.....Oq..[..\..
31100 04 70 f8 4c 38 07 3e af 28 20 18 7b f2 fd c6 1d 7f 6b 67 12 cd 4b 74 e0 bc f5 9b 43 a9 a3 e0 27 .p.L8.>.(..{.....kg..Kt....C...'
31120 38 0e 04 19 e8 b0 5f 32 1d 3e 1d 44 47 8f 1d a7 a3 87 f6 d0 d1 03 df f0 cf 0e f9 26 d2 b1 5d cb 8....._2.>.DG..............&..].
31140 e8 c4 b6 fe 0c f8 41 71 e4 f8 69 ab 7f 5f 1d 05 3f 2b 11 7a 9d 0e 06 64 d2 a1 33 11 74 e4 e8 09 ......Aq..i.._..?+.z...d..3.t...
31160 3a 7a f0 7b dc 11 fc 33 3a fe f5 24 3a b1 b5 3b 9d d8 3e 14 bf 63 75 53 68 75 14 ac 86 3a 0a 56 :z.{...3:..$:..;..>..cuShu...:.V
31180 43 1d 05 ab 0f 75 0e f0 c4 3f 54 01 fc f4 4b bf e8 31 25 a9 e4 e9 7a fa ea 43 30 7b 80 00 7e 12 C....u...?T...K..1%...z..C0{..~.
311a0 ec cd 6a 29 7c d0 2f bb 4e 8f ab f2 74 3c 75 f5 21 58 3d c8 d4 82 b9 32 5d c4 3c 28 5d 78 4e 4d ..j)|./.N...t<u.!X=....2].<(]xNM
311c0 1a fc 74 3c 7d f5 21 58 3d 44 59 8f 51 08 20 71 d7 43 fc 81 c1 63 5a b2 fb 93 fd d4 d5 87 60 24 ..t<}.!X=DY.Q..q.C...cZ.......`$
311e0 58 3d 90 27 98 2b 33 40 5f 04 3d 44 14 78 4e 49 1c f4 64 96 03 35 ed 0b 36 82 d1 43 b2 ec 2b ff X=.'.+3@_.=D.xNI..d..5..6..C..+.
31200 b8 ce e4 18 3b 7c e3 1e 82 1e 21 ca d4 78 a2 82 1e 21 ee 09 e6 f7 77 8d 6b f9 87 cf 7c a8 21 58 ....;|....!..x...!....w.k...|.!X
31220 5b a5 10 af 69 97 9c f0 c3 6b ea 0b f4 cc c7 35 c1 ba 82 ee 31 79 e0 b3 fd e4 d5 10 8c 1f b4 84 [...i....k.....5....1y..........
31240 58 fe 6c 3e 79 35 04 db 07 b7 93 8b e9 2f a8 11 cb 9e ad 27 af 86 60 2a d8 3e fc 30 01 4b 0a b5 X.l>y5......./.....'..`*.>.0.K..
31260 27 78 26 e2 9a 60 f9 58 6b cb 7a 13 52 9c 3d a6 26 ad 93 4b c4 a7 29 d4 b8 27 d8 09 86 bf 7e 67 'x&..`.Xk.z.R.=.&..K..)..'....~g
31280 69 56 9a 8e 87 45 c6 89 61 14 a2 00 f1 f3 93 f2 64 d5 60 16 05 cc 06 8c 98 15 98 3d 10 ac fa 50 iV...E..a.......d.`........=...P
312a0 1f ff 07 c5 18 56 63 4b c1 fd 5a 00 00 00 00 49 45 4e 44 ae 42 60 82 50 4b 03 04 14 00 00 00 00 .....VcK..Z....IEND.B`.PK.......
312c0 00 80 51 1c 5b 2c f9 0a 7c 56 26 00 00 56 26 00 00 18 00 00 00 74 72 61 6e 73 6c 61 74 69 6f 6e ..Q.[,..|V&..V&......translation
312e0 73 2f 64 65 66 61 75 6c 74 2e 70 6f 74 23 2c 20 66 75 7a 7a 79 0a 6d 73 67 69 64 20 22 22 0a 6d s/default.pot#,.fuzzy.msgid."".m
31300 73 67 73 74 72 20 22 22 0a 22 50 72 6f 6a 65 63 74 2d 49 64 2d 56 65 72 73 69 6f 6e 3a 20 5c 6e sgstr.""."Project-Id-Version:.\n
31320 22 0a 22 50 4f 54 2d 43 72 65 61 74 69 6f 6e 2d 44 61 74 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 "."POT-Creation-Date:.2025-08-28
31340 20 31 30 3a 31 32 2b 30 32 30 30 5c 6e 22 0a 22 50 4f 2d 52 65 76 69 73 69 6f 6e 2d 44 61 74 65 .10:12+0200\n"."PO-Revision-Date
31360 3a 20 32 30 32 33 2d 30 38 2d 30 38 20 31 39 3a 32 32 2b 30 32 30 30 5c 6e 22 0a 22 4c 61 73 74 :.2023-08-08.19:22+0200\n"."Last
31380 2d 54 72 61 6e 73 6c 61 74 6f 72 3a 20 5c 6e 22 0a 22 4c 61 6e 67 75 61 67 65 2d 54 65 61 6d 3a -Translator:.\n"."Language-Team:
313a0 20 5c 6e 22 0a 22 4c 61 6e 67 75 61 67 65 3a 20 65 6e 5c 6e 22 0a 22 4d 49 4d 45 2d 56 65 72 73 .\n"."Language:.en\n"."MIME-Vers
313c0 69 6f 6e 3a 20 31 2e 30 5c 6e 22 0a 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f ion:.1.0\n"."Content-Type:.text/
313e0 70 6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 55 54 46 2d 38 5c 6e 22 0a 22 43 6f 6e 74 65 6e 74 plain;.charset=UTF-8\n"."Content
31400 2d 54 72 61 6e 73 66 65 72 2d 45 6e 63 6f 64 69 6e 67 3a 20 38 62 69 74 5c 6e 22 0a 22 50 6c 75 -Transfer-Encoding:.8bit\n"."Plu
31420 72 61 6c 2d 46 6f 72 6d 73 3a 20 6e 70 6c 75 72 61 6c 73 3d 32 3b 20 70 6c 75 72 61 6c 3d 28 6e ral-Forms:.nplurals=2;.plural=(n
31440 20 3e 20 31 29 3b 5c 6e 22 0a 22 58 2d 47 65 6e 65 72 61 74 6f 72 3a 20 50 6f 65 64 69 74 20 33 .>.1);\n"."X-Generator:.Poedit.3
31460 2e 35 5c 6e 22 0a 22 58 2d 50 6f 65 64 69 74 2d 42 61 73 65 70 61 74 68 3a 20 2e 2e 5c 6e 22 0a .5\n"."X-Poedit-Basepath:...\n".
31480 22 58 2d 50 6f 65 64 69 74 2d 53 65 61 72 63 68 50 61 74 68 2d 30 3a 20 2e 5c 6e 22 0a 0a 23 3a "X-Poedit-SearchPath-0:..\n"..#:
314a0 20 5f 5f 69 6e 69 74 5f 5f 2e 70 79 3a 32 37 20 61 63 74 69 6f 6e 2e 70 79 3a 33 35 0a 6d 73 67 .__init__.py:27.action.py:35.msg
314c0 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 73 63 72 61 70 73 20 43 53 53 20 69 6e 20 48 54 4d id."Remove.the.scraps.CSS.in.HTM
314e0 4c 20 63 6f 6d 6d 65 6e 74 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 61 63 74 69 6f 6e L.comments".msgstr.""..#:.action
31500 2e 70 79 3a 35 35 0a 6d 73 67 69 64 20 22 43 6c 65 61 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 .py:55.msgid."Clean.the.selected
31520 20 26 63 6f 6d 6d 65 6e 74 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 61 63 74 69 6f 6e .&comments".msgstr.""..#:.action
31540 2e 70 79 3a 36 30 0a 6d 73 67 69 64 20 22 43 6c 65 61 6e 20 63 61 74 65 67 6f 72 79 20 26 6e 6f .py:60.msgid."Clean.category.&no
31560 74 65 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 36 35 0a tes".msgstr.""..#:.action.py:65.
31580 6d 73 67 69 64 20 22 26 43 75 73 74 6f 6d 69 7a 65 20 70 6c 75 67 69 6e e2 80 a6 22 0a 6d 73 67 msgid."&Customize.plugin...".msg
315a0 73 74 72 20 22 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 31 38 0a 6d 73 67 69 64 20 22 str.""..#:.action.py:218.msgid."
315c0 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d 20 62 6f 6f 6b Update.the.library.for.{:d}.book
315e0 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 33 s...".msgstr.""..#:.action.py:23
31600 37 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 37 39 0a 23 2c 7.common_utils/dialogs.py:279.#,
31620 20 70 79 74 68 6f 6e 2d 62 72 61 63 65 2d 66 6f 72 6d 61 74 0a 6d 73 67 69 64 20 22 7b 50 4c 55 .python-brace-format.msgid."{PLU
31640 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 72 65 73 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 GIN_NAME}.progress".msgstr.""..#
31660 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 35 39 0a 6d 73 67 69 64 20 22 4e 6f 74 65 20 7b 3a 64 7d :.action.py:259.msgid."Note.{:d}
31680 20 6f 66 20 7b 3a 64 7d 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 .of.{:d}".msgstr.""..#:.action.p
316a0 79 3a 33 32 33 0a 6d 73 67 69 64 20 22 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 y:323.msgid."Update.the.library.
316c0 66 6f 72 20 7b 3a 64 7d 20 6e 6f 74 65 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a for.{:d}.notes...".msgstr.""..#:
316e0 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 5f 5f 69 6e 69 74 5f 5f 2e 70 79 3a 34 33 34 0a 6d 73 .common_utils/__init__.py:434.ms
31700 67 69 64 20 22 59 6f 75 20 63 61 6e 6e 6f 74 20 63 6f 6e 66 69 67 75 72 65 20 74 68 69 73 20 70 gid."You.cannot.configure.this.p
31720 6c 75 67 69 6e 20 62 65 66 6f 72 65 20 63 61 6c 69 62 72 65 20 69 73 20 72 65 73 74 61 72 74 65 lugin.before.calibre.is.restarte
31740 64 2e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 d.".msgstr.""..#:.common_utils/d
31760 69 61 6c 6f 67 73 2e 70 79 3a 38 31 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 ialogs.py:81.common_utils/dialog
31780 73 2e 70 79 3a 31 31 35 0a 6d 73 67 69 64 20 22 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 s.py:115.msgid."Keyboard.shortcu
317a0 74 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 ts".msgstr.""..#:.common_utils/d
317c0 69 61 6c 6f 67 73 2e 70 79 3a 31 31 38 0a 6d 73 67 69 64 20 22 45 64 69 74 20 74 68 65 20 6b 65 ialogs.py:118.msgid."Edit.the.ke
317e0 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 yboard.shortcuts.associated.with
31800 20 74 68 69 73 20 70 6c 75 67 69 6e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d .this.plugin".msgstr.""..#:.comm
31820 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 33 34 0a 6d 73 67 69 64 20 22 50 on_utils/dialogs.py:134.msgid."P
31840 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 references.for:".msgstr.""..#:.c
31860 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 35 37 0a 6d 73 67 69 64 ommon_utils/dialogs.py:157.msgid
31880 20 22 43 6c 65 61 72 20 61 6c 6c 20 73 65 74 74 69 6e 67 73 20 66 6f 72 20 74 68 69 73 20 70 6c ."Clear.all.settings.for.this.pl
318a0 75 67 69 6e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 ugin".msgstr.""..#:.common_utils
318c0 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 39 39 0a 6d 73 67 69 64 20 22 54 68 65 20 63 68 61 6e 67 /dialogs.py:199.msgid."The.chang
318e0 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 61 70 70 6c 69 65 64 2e 22 0a 6d 73 67 73 74 72 20 22 22 es.cannot.be.applied.".msgstr.""
31900 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 30 33 ..#:.common_utils/dialogs.py:203
31920 0a 6d 73 67 69 64 20 22 41 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f .msgid."Are.you.sure.you.want.to
31940 20 63 68 61 6e 67 65 20 79 6f 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 .change.your.settings.in.this.li
31960 62 72 61 72 79 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 3f 22 0a 6d 73 67 73 74 72 20 22 brary.for.this.plugin?".msgstr."
31980 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 30 "..#:.common_utils/dialogs.py:20
319a0 34 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 31 36 0a 6d 73 4.common_utils/dialogs.py:216.ms
319c0 67 69 64 20 22 41 6e 79 20 73 65 74 74 69 6e 67 73 20 69 6e 20 6f 74 68 65 72 20 6c 69 62 72 61 gid."Any.settings.in.other.libra
319e0 72 69 65 73 20 6f 72 20 73 74 6f 72 65 64 20 69 6e 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 69 6e ries.or.stored.in.a.JSON.file.in
31a00 20 79 6f 75 72 20 63 61 6c 69 62 72 65 20 70 6c 75 67 69 6e 73 20 66 6f 6c 64 65 72 20 77 69 6c .your.calibre.plugins.folder.wil
31a20 6c 20 6e 6f 74 20 62 65 20 74 6f 75 63 68 65 64 2e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a l.not.be.touched.".msgstr.""..#:
31a40 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 31 35 0a 6d 73 67 .common_utils/dialogs.py:215.msg
31a60 69 64 20 22 41 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 6c 65 id."Are.you.sure.you.want.to.cle
31a80 61 72 20 79 6f 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 62 72 61 72 79 ar.your.settings.in.this.library
31aa0 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 3f 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a .for.this.plugin?".msgstr.""..#:
31ac0 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 33 38 0a 6d 73 67 .common_utils/dialogs.py:238.msg
31ae0 69 64 20 22 56 69 65 77 20 6c 69 62 72 61 72 79 20 70 72 65 66 65 72 65 6e 63 65 73 22 0a 6d 73 id."View.library.preferences".ms
31b00 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 gstr.""..#:.common_utils/dialogs
31b20 2e 70 79 3a 32 33 39 0a 6d 73 67 69 64 20 22 56 69 65 77 20 64 61 74 61 20 73 74 6f 72 65 64 20 .py:239.msgid."View.data.stored.
31b40 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 74 68 69 73 in.the.library.database.for.this
31b60 20 70 6c 75 67 69 6e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 .plugin".msgstr.""..#:.common_ut
31b80 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 36 39 0a 6d 73 67 69 64 20 22 43 61 6e 63 65 6c ils/dialogs.py:269.msgid."Cancel
31ba0 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 ".msgstr.""..#:.common_utils/dia
31bc0 6c 6f 67 73 2e 70 79 3a 33 33 35 0a 6d 73 67 69 64 20 22 42 6f 6f 6b 20 7b 3a 64 7d 20 6f 66 20 logs.py:335.msgid."Book.{:d}.of.
31be0 7b 3a 64 7d 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 {:d}".msgstr.""..#:.common_utils
31c00 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 37 31 0a 6d 73 67 69 64 20 22 43 6f 70 79 20 74 6f 20 63 /dialogs.py:371.msgid."Copy.to.c
31c20 6c 69 70 62 6f 61 72 64 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 lipboard".msgstr.""..#:.common_u
31c40 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 39 30 0a 6d 73 67 69 64 20 22 41 64 64 20 4e tils/dialogs.py:390.msgid."Add.N
31c60 65 77 20 49 6d 61 67 65 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 ew.Image".msgstr.""..#:.common_u
31c80 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 39 38 0a 6d 73 67 69 64 20 22 26 53 65 6c 65 tils/dialogs.py:398.msgid."&Sele
31ca0 63 74 20 69 6d 61 67 65 20 73 6f 75 72 63 65 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 ct.image.source".msgstr.""..#:.c
31cc0 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 30 31 0a 6d 73 67 69 64 ommon_utils/dialogs.py:401.msgid
31ce0 20 22 46 72 6f 6d 20 26 77 65 62 20 64 6f 6d 61 69 6e 20 66 61 76 69 63 6f 6e 22 0a 6d 73 67 73 ."From.&web.domain.favicon".msgs
31d00 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 tr.""..#:.common_utils/dialogs.p
31d20 79 3a 34 30 38 0a 6d 73 67 69 64 20 22 46 72 6f 6d 20 2e 70 6e 67 20 26 66 69 6c 65 22 0a 6d 73 y:408.msgid."From..png.&file".ms
31d40 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 gstr.""..#:.common_utils/dialogs
31d60 2e 70 79 3a 34 32 31 0a 6d 73 67 69 64 20 22 26 53 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 .py:421.msgid."&Save.as.filename
31d80 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 :".msgstr.""..#:.common_utils/di
31da0 61 6c 6f 67 73 2e 70 79 3a 34 34 34 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 61 20 2e 70 6e alogs.py:444.msgid."Select.a..pn
31dc0 67 20 66 69 6c 65 20 66 6f 72 20 74 68 65 20 6d 65 6e 75 20 69 63 6f 6e 22 0a 6d 73 67 73 74 72 g.file.for.the.menu.icon".msgstr
31de0 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a .""..#:.common_utils/dialogs.py:
31e00 34 35 32 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 36 31 0a 452.common_utils/dialogs.py:461.
31e20 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 36 35 20 63 #:.common_utils/dialogs.py:465.c
31e40 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 38 37 0a 23 3a 20 63 6f ommon_utils/dialogs.py:487.#:.co
31e60 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 33 20 63 6f 6d 6d 6f 6e mmon_utils/dialogs.py:493.common
31e80 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 35 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f _utils/dialogs.py:495.#:.common_
31ea0 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 37 0a 6d 73 67 69 64 20 22 43 61 6e 6e utils/dialogs.py:497.msgid."Cann
31ec0 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 ot.import.image".msgstr.""..#:.c
31ee0 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 35 32 20 63 6f 6d 6d 6f ommon_utils/dialogs.py:452.commo
31f00 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 35 0a 6d 73 67 69 64 20 22 53 6f n_utils/dialogs.py:495.msgid."So
31f20 75 72 63 65 20 69 6d 61 67 65 20 6d 75 73 74 20 62 65 20 61 20 2e 70 6e 67 20 66 69 6c 65 2e 22 urce.image.must.be.a..png.file."
31f40 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c .msgstr.""..#:.common_utils/dial
31f60 6f 67 73 2e 70 79 3a 34 36 31 0a 6d 73 67 69 64 20 22 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 ogs.py:461.msgid."You.must.speci
31f80 66 79 20 61 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 73 61 76 65 20 61 73 2e 22 0a 6d 73 67 73 74 fy.a.filename.to.save.as.".msgst
31fa0 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 r.""..#:.common_utils/dialogs.py
31fc0 3a 34 36 36 0a 6d 73 67 69 64 20 22 54 68 65 20 73 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 :466.msgid."The.save.as.filename
31fe0 20 73 68 6f 75 6c 64 20 63 6f 6e 73 69 73 74 20 6f 66 20 61 20 66 69 6c 65 6e 61 6d 65 20 6f 6e .should.consist.of.a.filename.on
32000 6c 79 2e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f ly.".msgstr.""..#:.common_utils/
32020 64 69 61 6c 6f 67 73 2e 70 79 3a 34 37 34 0a 6d 73 67 69 64 20 22 41 72 65 20 79 6f 75 20 73 75 dialogs.py:474.msgid."Are.you.su
32040 72 65 3f 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f re?".msgstr.""..#:.common_utils/
32060 64 69 61 6c 6f 67 73 2e 70 79 3a 34 37 35 0a 6d 73 67 69 64 20 22 41 6e 20 69 6d 61 67 65 20 77 dialogs.py:475.msgid."An.image.w
32080 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 20 2d 20 6f ith.this.name.already.exists.-.o
320a0 76 65 72 77 72 69 74 65 20 69 74 3f 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d verwrite.it?".msgstr.""..#:.comm
320c0 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 38 37 0a 6d 73 67 69 64 20 22 59 on_utils/dialogs.py:487.msgid."Y
320e0 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 77 65 62 20 64 6f 6d 61 69 6e 20 75 72 6c ou.must.specify.a.web.domain.url
32100 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 ".msgstr.""..#:.common_utils/dia
32120 6c 6f 67 73 2e 70 79 3a 34 39 33 0a 6d 73 67 69 64 20 22 59 6f 75 20 6d 75 73 74 20 73 70 65 63 logs.py:493.msgid."You.must.spec
32140 69 66 79 20 61 20 73 6f 75 72 63 65 20 66 69 6c 65 2e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 ify.a.source.file.".msgstr.""..#
32160 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 37 0a 6d 73 :.common_utils/dialogs.py:497.ms
32180 67 69 64 20 22 53 6f 75 72 63 65 20 69 6d 61 67 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 gid."Source.image.does.not.exist
321a0 21 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 !".msgstr.""..#:.common_utils/di
321c0 61 6c 6f 67 73 2e 70 79 3a 35 30 35 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 61 20 5a 49 50 alogs.py:505.msgid."Select.a.ZIP
321e0 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 22 0a 6d 73 67 73 .archive.file.to.import...".msgs
32200 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 tr.""..#:.common_utils/dialogs.p
32220 79 3a 35 31 37 0a 6d 73 67 69 64 20 22 53 61 76 65 20 5a 49 50 20 61 72 63 68 69 76 65 20 66 69 y:517.msgid."Save.ZIP.archive.fi
32240 6c 65 20 61 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 le.as...".msgstr.""..#:.common_u
32260 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 33 30 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 tils/dialogs.py:530.msgid."Selec
32280 74 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 22 0a 6d 73 67 73 t.a.JSON.file.to.import...".msgs
322a0 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 tr.""..#:.common_utils/dialogs.p
322c0 79 3a 35 34 32 0a 6d 73 67 69 64 20 22 53 61 76 65 20 74 68 65 20 4a 53 4f 4e 20 66 69 6c 65 20 y:542.msgid."Save.the.JSON.file.
322e0 61 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c as...".msgstr.""..#:.common_util
32300 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 37 39 0a 23 2c 20 70 79 74 68 6f 6e 2d 62 72 61 63 65 s/dialogs.py:579.#,.python-brace
32320 2d 66 6f 72 6d 61 74 0a 6d 73 67 69 64 20 22 54 68 65 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d -format.msgid."The.{PLUGIN_NAME}
32340 20 70 6c 75 67 69 6e 20 68 61 73 20 65 6e 63 6f 75 6e 74 65 72 20 61 20 75 6e 68 61 6e 64 6c 65 .plugin.has.encounter.a.unhandle
32360 64 20 65 78 63 65 70 74 69 6f 6e 2e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d d.exception.".msgstr.""..#:.comm
32380 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 39 33 0a 6d 73 67 69 64 20 22 55 on_utils/dialogs.py:593.msgid."U
323a0 6e 68 61 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 nhandled.exception".msgstr.""..#
323c0 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 34 39 0a 6d 73 :.common_utils/librarys.py:49.ms
323e0 67 69 64 20 22 43 6f 75 6c 64 20 6e 6f 74 20 74 6f 20 6c 61 75 6e 63 68 20 7b 3a 73 7d 22 0a 6d gid."Could.not.to.launch.{:s}".m
32400 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 sgstr.""..#:.common_utils/librar
32420 79 73 2e 70 79 3a 36 38 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f 6f 6b 20 73 65 6c 65 63 74 65 64 ys.py:68.msgid."No.book.selected
32440 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 ".msgstr.""..#:.common_utils/lib
32460 72 61 72 79 73 2e 70 79 3a 37 34 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 rarys.py:74.msgid."No.book.in.th
32480 65 20 6c 69 62 72 61 72 79 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f e.library".msgstr.""..#:.common_
324a0 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 38 30 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c utils/librarys.py:80.common_util
324c0 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 38 37 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f 6f 6b 20 s/librarys.py:87.msgid."No.book.
324e0 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 79 22 0a 6d 73 67 73 74 72 20 22 in.the.virtual.library".msgstr."
32500 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 39 "..#:.common_utils/librarys.py:9
32520 33 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 3.msgid."No.book.in.the.current.
32540 73 65 61 72 63 68 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 search".msgstr.""..#:.common_uti
32560 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 34 39 0a 6d 73 67 69 64 20 22 55 6e 6b 6e 6f 77 ls/templates.py:49.msgid."Unknow
32580 6e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 n".msgstr.""..#:.common_utils/te
325a0 6d 70 6c 61 74 65 73 2e 70 79 3a 35 36 0a 6d 73 67 69 64 20 22 54 65 6d 70 6c 61 74 65 20 45 72 mplates.py:56.msgid."Template.Er
325c0 72 6f 72 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f ror".msgstr.""..#:.common_utils/
325e0 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 35 37 0a 6d 73 67 69 64 20 22 52 75 6e 6e 69 6e 67 20 74 templates.py:57.msgid."Running.t
32600 68 65 20 74 65 6d 70 6c 61 74 65 20 72 65 74 75 72 6e 65 64 20 61 6e 20 65 72 72 6f 72 3a 22 0a he.template.returned.an.error:".
32620 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c msgstr.""..#:.common_utils/templ
32640 61 74 65 73 2e 70 79 3a 37 30 0a 6d 73 67 69 64 20 22 45 6e 74 65 72 20 61 20 74 65 6d 70 6c 61 ates.py:70.msgid."Enter.a.templa
32660 74 65 20 74 6f 20 74 65 73 74 20 75 73 69 6e 67 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20 73 te.to.test.using.data.from.the.s
32680 65 6c 65 63 74 65 64 20 62 6f 6f 6b 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d elected.book".msgstr.""..#:.comm
326a0 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 37 37 0a 6d 73 67 69 64 20 22 on_utils/templates.py:77.msgid."
326c0 54 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 Template.editor".msgstr.""..#:.c
326e0 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 31 30 36 20 63 6f 6d ommon_utils/templates.py:106.com
32700 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 31 30 39 0a 6d 73 67 69 64 mon_utils/templates.py:109.msgid
32720 20 22 4f 70 65 6e 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 22 0a 6d 73 67 73 ."Open.the.template.editor".msgs
32740 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 tr.""..#:.common_utils/widgets.p
32760 79 3a 38 36 0a 6d 73 67 69 64 20 22 52 65 73 74 61 72 74 20 72 65 71 75 69 72 65 64 22 0a 6d 73 y:86.msgid."Restart.required".ms
32780 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 gstr.""..#:.common_utils/widgets
327a0 2e 70 79 3a 38 37 0a 6d 73 67 69 64 20 22 54 69 74 6c 65 20 69 6d 61 67 65 20 6e 6f 74 20 66 6f .py:87.msgid."Title.image.not.fo
327c0 75 6e 64 20 2d 20 79 6f 75 20 6d 75 73 74 20 72 65 73 74 61 72 74 20 43 61 6c 69 62 72 65 20 62 und.-.you.must.restart.Calibre.b
327e0 65 66 6f 72 65 20 75 73 69 6e 67 20 74 68 69 73 20 70 6c 75 67 69 6e 21 22 0a 6d 73 67 73 74 72 efore.using.this.plugin!".msgstr
32800 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a .""..#:.common_utils/widgets.py:
32820 31 34 34 0a 6d 73 67 69 64 20 22 55 6e 64 65 66 69 6e 65 64 22 0a 6d 73 67 73 74 72 20 22 22 0a 144.msgid."Undefined".msgstr."".
32840 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 32 39 38 0a .#:.common_utils/widgets.py:298.
32860 6d 73 67 69 64 20 22 53 75 62 73 65 74 20 6f 66 20 76 61 6c 75 65 73 20 61 73 73 6f 63 69 61 74 msgid."Subset.of.values.associat
32880 65 20 74 6f 20 74 68 65 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f e.to.the.books".msgstr.""..#:.co
328a0 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 32 39 39 0a 6d 73 67 69 64 20 mmon_utils/widgets.py:299.msgid.
328c0 22 4e 6f 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f "No.books".msgstr.""..#:.common_
328e0 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 33 30 30 0a 6d 73 67 69 64 20 22 7b 3a 64 7d utils/widgets.py:300.msgid."{:d}
32900 20 62 6f 6f 6b 73 20 28 6e 6f 20 76 61 6c 75 65 73 29 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 .books.(no.values)".msgstr.""..#
32920 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 33 30 31 0a 6d 73 :.common_utils/widgets.py:301.ms
32940 67 69 64 20 22 7b 3a 64 7d 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 gid."{:d}.books".msgstr.""..#:.c
32960 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 34 32 36 0a 6d 73 67 69 64 ommon_utils/widgets.py:426.msgid
32980 20 22 4e 6f 20 6e 6f 74 65 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e ."No.notes".msgstr.""..#:.common
329a0 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 34 38 30 0a 6d 73 67 69 64 20 22 41 64 64 _utils/widgets.py:480.msgid."Add
329c0 20 4e 65 77 20 49 6d 61 67 65 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e .New.Image...".msgstr.""..#:.con
329e0 66 69 67 2e 70 79 3a 38 36 0a 6d 73 67 69 64 20 22 4b 65 65 70 20 55 52 4c 22 0a 6d 73 67 73 74 fig.py:86.msgid."Keep.URL".msgst
32a00 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 38 37 0a 6d 73 67 69 64 20 22 44 65 6c r.""..#:.config.py:87.msgid."Del
32a20 65 74 65 20 55 52 4c 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 ete.URL".msgstr.""..#:.config.py
32a40 3a 39 30 0a 6d 73 67 69 64 20 22 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 :90.msgid."Converte.to.a.paragra
32a60 70 68 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 31 0a 6d ph".msgstr.""..#:.config.py:91.m
32a80 73 67 69 64 20 22 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 20 62 75 sgid."Converte.to.a.paragraph.bu
32aa0 74 20 6b 65 65 70 20 74 68 65 20 62 6f 6c 64 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 t.keep.the.bold".msgstr.""..#:.c
32ac0 6f 6e 66 69 67 2e 70 79 3a 39 32 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 34 20 63 6f 6e 66 69 67 onfig.py:92.config.py:104.config
32ae0 2e 70 79 3a 31 31 35 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 31 20 63 6f 6e 66 69 67 2e 70 79 3a .py:115.config.py:121.config.py:
32b00 31 32 36 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 31 20 63 6f 6e 66 69 67 2e 70 79 3a 31 126.#:.config.py:131.config.py:1
32b20 33 35 0a 6d 73 67 69 64 20 22 4e 6f 20 63 68 61 6e 67 65 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 35.msgid."No.change".msgstr.""..
32b40 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 35 0a 6d 73 67 69 64 20 22 52 6f 75 6e 64 20 74 68 65 #:.config.py:95.msgid."Round.the
32b60 20 57 65 69 67 68 74 73 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 68 75 6e 64 72 65 64 22 0a 6d .Weights.value.to.the.hundred".m
32b80 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 36 0a 6d 73 67 69 64 20 sgstr.""..#:.config.py:96.msgid.
32ba0 22 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 27 62 6f 6c 64 27 29 22 0a 6d "Round.to.Bold.(value.'bold')".m
32bc0 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 37 0a 6d 73 67 69 64 20 sgstr.""..#:.config.py:97.msgid.
32be0 22 44 6f 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 57 65 69 67 68 74 73 22 0a 6d 73 67 73 "Do.not.change.the.Weights".msgs
32c00 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 38 0a 6d 73 67 69 64 20 22 44 65 tr.""..#:.config.py:98.msgid."De
32c20 6c 65 74 65 20 57 65 69 67 68 74 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 lete.Weights".msgstr.""..#:.conf
32c40 69 67 2e 70 79 3a 39 39 0a 6d 73 67 69 64 20 22 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 ig.py:99.msgid."Round.to.Bold.(v
32c60 61 6c 75 65 20 36 30 30 29 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e alue.600)".msgstr.""..#:.config.
32c80 70 79 3a 31 30 32 0a 6d 73 67 69 64 20 22 46 6f 72 63 65 20 74 68 65 20 6a 75 73 74 69 66 69 63 py:102.msgid."Force.the.justific
32ca0 61 74 69 6f 6e 20 28 72 65 70 6c 61 63 65 20 5c 22 63 65 6e 74 65 72 5c 22 20 61 6e 64 20 5c 22 ation.(replace.\"center\".and.\"
32cc0 72 69 67 68 74 5c 22 29 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 right\")".msgstr.""..#:.config.p
32ce0 79 3a 31 30 33 0a 6d 73 67 69 64 20 22 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 66 6f 72 20 69 y:103.msgid."Justification.for.i
32d00 6e 64 65 74 65 72 6d 69 6e 61 74 65 20 74 65 78 74 20 28 6b 65 65 70 20 5c 22 63 65 6e 74 65 72 ndeterminate.text.(keep.\"center
32d20 5c 22 20 61 6e 64 20 5c 22 72 69 67 68 74 5c 22 29 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a \".and.\"right\")".msgstr.""..#:
32d40 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 35 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 61 6c 6c .config.py:105.msgid."Delete.all
32d60 20 61 6c 69 67 6e 6d 65 6e 74 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 .alignment".msgstr.""..#:.config
32d80 2e 70 79 3a 31 30 38 0a 6d 73 67 69 64 20 22 55 73 65 20 74 68 65 20 27 4a 75 73 74 69 66 69 63 .py:108.msgid."Use.the.'Justific
32da0 61 74 69 6f 6e 27 20 73 65 74 74 69 6e 67 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f ation'.setting".msgstr.""..#:.co
32dc0 6e 66 69 67 2e 70 79 3a 31 30 39 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 74 68 65 20 61 6c nfig.py:109.msgid."Delete.the.al
32de0 69 67 6e 6d 65 6e 74 20 69 6e 20 6c 69 73 74 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 ignment.in.lists".msgstr.""..#:.
32e00 63 6f 6e 66 69 67 2e 70 79 3a 31 31 32 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 5c 22 69 64 config.py:112.msgid."Delete.\"id
32e20 5c 22 20 61 74 74 72 69 62 75 74 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 \".attribut".msgstr.""..#:.confi
32e40 67 2e 70 79 3a 31 31 33 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 5c 22 63 6c 61 73 73 5c 22 g.py:113.msgid."Delete.\"class\"
32e60 20 61 74 74 72 69 62 75 74 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e .attribut".msgstr.""..#:.config.
32e80 70 79 3a 31 31 34 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 5c 22 69 64 5c 22 20 61 6e 64 20 py:114.msgid."Delete.\"id\".and.
32ea0 5c 22 63 6c 61 73 73 5c 22 20 61 74 74 72 69 62 75 74 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 \"class\".attribut".msgstr.""..#
32ec0 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 31 39 0a 6d 73 67 69 64 20 22 43 6f 6e 76 65 72 74 20 69 :.config.py:119.msgid."Convert.i
32ee0 6e 20 61 6c 6c 20 63 6f 6d 6d 65 6e 74 73 20 28 6e 6f 74 20 72 65 63 6f 6d 61 6e 64 65 64 29 22 n.all.comments.(not.recomanded)"
32f00 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 30 0a 6d 73 67 .msgstr.""..#:.config.py:120.msg
32f20 69 64 20 22 43 6f 6e 76 65 72 74 20 6f 6e 6c 79 20 66 72 6f 6d 20 61 20 70 6c 61 69 6e 20 74 65 id."Convert.only.from.a.plain.te
32f40 78 74 20 63 6f 6d 6d 65 6e 74 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 xt.comment".msgstr.""..#:.config
32f60 2e 70 79 3a 31 32 34 0a 6d 73 67 69 64 20 22 43 72 65 61 74 65 20 61 20 65 6d 70 74 79 20 70 61 .py:124.msgid."Create.a.empty.pa
32f80 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 ragraph".msgstr.""..#:.config.py
32fa0 3a 31 32 35 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 39 0a 6d 73 67 69 64 20 22 43 72 65 61 74 65 :125.config.py:129.msgid."Create
32fc0 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 .a.new.paragraph".msgstr.""..#:.
32fe0 63 6f 6e 66 69 67 2e 70 79 3a 31 33 30 0a 6d 73 67 69 64 20 22 52 65 70 6c 61 63 65 20 77 69 74 config.py:130.msgid."Replace.wit
33000 68 20 73 70 61 63 65 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 h.space".msgstr.""..#:.config.py
33020 3a 31 33 34 0a 6d 73 67 69 64 20 22 4d 65 72 67 65 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 65 6d :134.msgid."Merge.in.a.single.em
33040 70 74 79 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e pty.paragraph".msgstr.""..#:.con
33060 66 69 67 2e 70 79 3a 31 33 36 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 65 6d 70 74 79 20 70 fig.py:136.msgid."Delete.empty.p
33080 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 aragraph".msgstr.""..#:.config.p
330a0 79 3a 31 33 39 0a 6d 73 67 69 64 20 22 4b 65 65 70 20 69 6d 61 67 65 73 22 0a 6d 73 67 73 74 72 y:139.msgid."Keep.images".msgstr
330c0 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 34 30 0a 6d 73 67 69 64 20 22 44 65 6c .""..#:.config.py:140.msgid."Del
330e0 65 74 65 20 69 6d 61 67 65 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 ete.images".msgstr.""..#:.config
33100 2e 70 79 3a 32 32 37 0a 6d 73 67 69 64 20 22 48 79 70 65 72 6c 69 6e 6b 3a 22 0a 6d 73 67 73 74 .py:227.msgid."Hyperlink:".msgst
33120 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 33 34 0a 6d 73 67 69 64 20 22 48 65 r.""..#:.config.py:234.msgid."He
33140 61 64 69 6e 67 73 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 adings:".msgstr.""..#:.config.py
33160 3a 32 34 34 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 49 74 61 6c 69 63 22 0a 6d 73 67 73 74 :244.msgid."Remove.Italic".msgst
33180 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 34 38 0a 6d 73 67 69 64 20 22 52 65 r.""..#:.config.py:248.msgid."Re
331a0 6d 6f 76 65 20 74 68 65 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 73 move.the.bold.if.all.paragraphes
331c0 20 61 72 65 20 69 74 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 .are.it".msgstr.""..#:.config.py
331e0 3a 32 35 32 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 69 74 61 6c 69 63 20 69 66 :252.msgid."Remove.the.italic.if
33200 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 22 0a 6d 73 67 73 74 72 20 .all.paragraphes.are.it".msgstr.
33220 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 35 36 0a 6d 73 67 69 64 20 22 52 65 6d 6f ""..#:.config.py:256.msgid."Remo
33240 76 65 20 55 6e 64 65 72 6c 69 6e 65 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 ve.Underline".msgstr.""..#:.conf
33260 69 67 2e 70 79 3a 32 36 30 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 ig.py:260.msgid."Remove.Striketh
33280 72 6f 75 67 68 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 rough".msgstr.""..#:.config.py:2
332a0 37 32 0a 6d 73 67 69 64 20 22 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 3a 22 0a 6d 73 67 73 74 72 72.msgid."Justification:".msgstr
332c0 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 37 36 0a 6d 73 67 69 64 20 22 4c 69 73 .""..#:.config.py:276.msgid."Lis
332e0 74 20 61 6c 69 67 6e 6d 65 6e 74 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 t.alignment:".msgstr.""..#:.conf
33300 69 67 2e 70 79 3a 32 38 30 0a 6d 73 67 69 64 20 22 49 44 20 26 20 43 4c 41 53 53 20 61 74 74 72 ig.py:280.msgid."ID.&.CLASS.attr
33320 69 62 75 74 73 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a ibuts:".msgstr.""..#:.config.py:
33340 32 38 35 0a 6d 73 67 69 64 20 22 43 75 73 74 6f 6d 20 43 53 53 20 72 75 6c 65 73 20 74 6f 20 6b 285.msgid."Custom.CSS.rules.to.k
33360 65 65 70 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 62 61 73 69 63 20 6f 6e 65 eep.in.addition.to.the.basic.one
33380 73 2e 20 52 75 6c 65 73 20 73 65 70 61 72 61 74 65 64 20 62 79 20 61 20 73 70 61 63 65 2e 22 0a s..Rules.separated.by.a.space.".
333a0 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 38 36 0a 6d 73 67 69 msgstr.""..#:.config.py:286.msgi
333c0 64 20 22 43 53 53 20 72 75 6c 65 20 74 6f 20 6b 65 65 70 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a d."CSS.rule.to.keep:".msgstr."".
333e0 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 30 33 0a 6d 73 67 69 64 20 22 41 6c 6c 20 43 53 53 .#:.config.py:303.msgid."All.CSS
33400 20 72 75 6c 65 73 20 61 72 65 20 6b 65 65 70 2e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 .rules.are.keep.".msgstr.""..#:.
33420 63 6f 6e 66 69 67 2e 70 79 3a 33 31 33 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 config.py:313.msgid."Remove.all.
33440 66 6f 72 6d 61 74 74 69 6e 67 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 formatting".msgstr.""..#:.config
33460 2e 70 79 3a 33 33 31 0a 6d 73 67 69 64 20 22 4d 61 72 6b 64 6f 77 6e 3a 22 0a 6d 73 67 73 74 72 .py:331.msgid."Markdown:".msgstr
33480 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 33 32 0a 6d 73 67 69 64 20 22 54 72 79 .""..#:.config.py:332.msgid."Try
334a0 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 4d 61 72 6b 64 6f 77 6e 20 73 74 72 69 6e 67 73 .to.convert.the.Markdown.strings
334c0 20 74 6f 20 48 54 4d 4c 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 .to.HTML".msgstr.""..#:.config.p
334e0 79 3a 33 33 36 0a 6d 73 67 69 64 20 22 4d 75 6c 74 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 y:336.msgid."Multiple.'Line.Retu
33500 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a rn'.in.a.paragraph:".msgstr.""..
33520 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 34 30 0a 6d 73 67 69 64 20 22 53 69 6e 67 6c 65 20 27 #:.config.py:340.msgid."Single.'
33540 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 3a 22 0a 6d 73 Line.Return'.in.a.paragraph:".ms
33560 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 34 32 0a 6d 73 67 69 64 20 gstr.""..#:.config.py:342.msgid.
33580 22 22 0a 22 54 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 61 70 70 6c 69 65 64 20 61 66 ""."This.operation.is.applied.af
335a0 74 65 72 20 5c 22 4d 75 6c 74 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 ter.\"Multiple.'Line.Return'.in.
335c0 61 20 70 61 72 61 67 72 61 70 68 5c 22 5c 6e 22 0a 22 61 6e 64 20 62 65 66 6f 72 65 20 5c 22 4d a.paragraph\"\n"."and.before.\"M
335e0 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 5c 22 22 0a 6d 73 67 73 74 ultiple.empty.paragraph\"".msgst
33600 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 34 38 0a 6d 73 67 69 64 20 22 4d 75 r.""..#:.config.py:348.msgid."Mu
33620 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 3a 22 0a 6d 73 67 73 74 72 20 ltiple.empty.paragraph:".msgstr.
33640 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 35 32 0a 6d 73 67 69 64 20 22 49 6d 61 67 ""..#:.config.py:352.msgid."Imag
33660 65 73 3a 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 30 36 es:".msgstr.""..#:.config.py:406
33680 0a 6d 73 67 69 64 20 22 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 .msgid."Comments.Cleaner.Options
336a0 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 31 34 0a 6d 73 ".msgstr.""..#:.config.py:414.ms
336c0 67 69 64 20 22 41 70 70 6c 79 20 74 6f 20 6f 74 68 65 72 73 20 63 75 73 74 6f 6d 20 48 54 4d 4c gid."Apply.to.others.custom.HTML
336e0 20 63 6f 6c 75 6d 6e 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 .columns".msgstr.""..#:.config.p
33700 79 3a 34 34 33 20 63 6f 6e 66 69 67 2e 70 79 3a 34 37 34 0a 6d 73 67 69 64 20 22 4e 6f 74 65 73 y:443.config.py:474.msgid."Notes
33720 20 43 6c 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 .Cleaner.Options".msgstr.""..#:.
33740 63 6f 6e 66 69 67 2e 70 79 3a 34 34 34 0a 6d 73 67 69 64 20 22 45 64 69 74 20 74 68 65 20 6f 70 config.py:444.msgid."Edit.the.op
33760 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6e 6f 74 65 73 20 63 6c 65 61 6e 65 72 20 61 63 74 69 tions.for.the.notes.cleaner.acti
33780 6f 6e 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 35 35 0a on".msgstr.""..#:.config.py:455.
337a0 6d 73 67 69 64 20 22 43 75 73 74 6f 6d 69 7a 65 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 msgid."Customize".msgstr.""..#:.
337c0 63 6f 6e 66 69 67 2e 70 79 3a 34 35 35 0a 6d 73 67 69 64 20 22 4e 6f 74 65 73 20 43 6c 65 61 6e config.py:455.msgid."Notes.Clean
337e0 65 72 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 30 36 0a er".msgstr.""..#:.config.py:506.
33800 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 4e 6f 74 65 73 20 74 6f 20 63 6c 65 61 6e 22 0a 6d 73 msgid."Select.Notes.to.clean".ms
33820 67 73 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 31 37 0a 6d 73 67 69 64 20 gstr.""..#:.config.py:517.msgid.
33840 22 53 75 62 73 65 74 20 6f 66 20 4e 6f 74 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 "Subset.of.Notes.associate.to.th
33860 65 20 63 75 72 72 65 6e 74 6c 79 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 e.currently.selected.books".msgs
33880 74 72 20 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 31 38 0a 6d 73 67 69 64 20 22 4e tr.""..#:.config.py:518.msgid."N
338a0 6f 20 62 6f 6f 6b 73 20 73 65 6c 65 63 74 65 64 22 0a 6d 73 67 73 74 72 20 22 22 0a 0a 23 3a 20 o.books.selected".msgstr.""..#:.
338c0 63 6f 6e 66 69 67 2e 70 79 3a 35 31 39 0a 6d 73 67 69 64 20 22 4e 6f 20 6e 6f 74 65 73 20 66 6f config.py:519.msgid."No.notes.fo
338e0 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 22 r.{:d}.selected.books".msgstr.""
33900 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 32 30 0a 6d 73 67 69 64 20 22 4e 6f 74 65 73 20 ..#:.config.py:520.msgid."Notes.
33920 66 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 for.{:d}.selected.books".msgstr.
33940 22 22 0a 50 4b 03 04 14 00 00 00 00 00 3b 70 3f 5c a2 36 7e f4 cc 28 00 00 cc 28 00 00 12 00 00 "".PK........;p?\.6~..(...(.....
33960 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 65 73 2e 6d 6f de 12 04 95 00 00 00 00 7b 00 00 00 1c .translations/es.mo........{....
33980 00 00 00 f4 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 cc 07 00 00 14 00 00 00 cd 07 00 00 12 ................................
339a0 00 00 00 e2 07 00 00 14 00 00 00 f5 07 00 00 0d 00 00 00 0a 08 00 00 10 00 00 00 18 08 00 00 17 ................................
339c0 00 00 00 29 08 00 00 36 00 00 00 41 08 00 00 6c 00 00 00 78 08 00 00 23 00 00 00 e5 08 00 00 4e ...)...6...A...l...x...#.......N
339e0 00 00 00 09 09 00 00 4d 00 00 00 58 09 00 00 0d 00 00 00 a6 09 00 00 11 00 00 00 b4 09 00 00 11 .......M...X....................
33a00 00 00 00 c6 09 00 00 06 00 00 00 d8 09 00 00 13 00 00 00 df 09 00 00 15 00 00 00 f3 09 00 00 1c ................................
33a20 00 00 00 09 0a 00 00 22 00 00 00 26 0a 00 00 18 00 00 00 49 0a 00 00 28 00 00 00 62 0a 00 00 26 ......."...&.......I...(...b...&
33a40 00 00 00 8b 0a 00 00 17 00 00 00 b2 0a 00 00 29 00 00 00 ca 0a 00 00 11 00 00 00 f4 0a 00 00 18 ...............)................
33a60 00 00 00 06 0b 00 00 18 00 00 00 1f 0b 00 00 16 00 00 00 38 0b 00 00 53 00 00 00 4f 0b 00 00 09 ...................8...S...O....
33a80 00 00 00 a3 0b 00 00 17 00 00 00 ad 0b 00 00 20 00 00 00 c5 0b 00 00 14 00 00 00 e6 0b 00 00 0a ................................
33aa0 00 00 00 fb 0b 00 00 0e 00 00 00 06 0c 00 00 14 00 00 00 15 0c 00 00 16 00 00 00 2a 0c 00 00 0d ...........................*....
33ac0 00 00 00 41 0c 00 00 1d 00 00 00 4f 0c 00 00 19 00 00 00 6d 0c 00 00 37 00 00 00 87 0c 00 00 2d ...A.......O.......m...7.......-
33ae0 00 00 00 bf 0c 00 00 3a 00 00 00 ed 0c 00 00 36 00 00 00 28 0d 00 00 18 00 00 00 5f 0d 00 00 0f .......:.......6...(......._....
33b00 00 00 00 78 0d 00 00 09 00 00 00 88 0d 00 00 0a 00 00 00 92 0d 00 00 15 00 00 00 9d 0d 00 00 07 ...x............................
33b20 00 00 00 b3 0d 00 00 40 00 00 00 bb 0d 00 00 0e 00 00 00 fc 0d 00 00 08 00 00 00 0b 0e 00 00 0b .......@........................
33b40 00 00 00 14 0e 00 00 12 00 00 00 20 0e 00 00 0f 00 00 00 33 0e 00 00 09 00 00 00 43 0e 00 00 21 ...................3.......C...!
33b60 00 00 00 4d 0e 00 00 26 00 00 00 6f 0e 00 00 19 00 00 00 96 0e 00 00 1d 00 00 00 b0 0e 00 00 16 ...M...&...o....................
33b80 00 00 00 ce 0e 00 00 1e 00 00 00 e5 0e 00 00 10 00 00 00 04 0f 00 00 08 00 00 00 15 0f 00 00 11 ................................
33ba0 00 00 00 1e 0f 00 00 09 00 00 00 30 0f 00 00 08 00 00 00 3a 0f 00 00 20 00 00 00 43 0f 00 00 11 ...........0.......:.......C....
33bc0 00 00 00 64 0f 00 00 0d 00 00 00 76 0f 00 00 15 00 00 00 84 0f 00 00 1d 00 00 00 9a 0f 00 00 18 ...d.......v....................
33be0 00 00 00 b8 0f 00 00 10 00 00 00 d1 0f 00 00 0d 00 00 00 e2 0f 00 00 14 00 00 00 f0 0f 00 00 10 ................................
33c00 00 00 00 05 10 00 00 15 00 00 00 16 10 00 00 29 00 00 00 2c 10 00 00 2b 00 00 00 56 10 00 00 26 ...............)...,...+...V...&
33c20 00 00 00 82 10 00 00 12 00 00 00 a9 10 00 00 10 00 00 00 bc 10 00 00 26 00 00 00 cd 10 00 00 1c .......................&........
33c40 00 00 00 f4 10 00 00 19 00 00 00 11 11 00 00 27 00 00 00 2b 11 00 00 1b 00 00 00 53 11 00 00 18 ...............'...+.......S....
33c60 00 00 00 6f 11 00 00 15 00 00 00 88 11 00 00 24 00 00 00 9e 11 00 00 1f 00 00 00 c3 11 00 00 26 ...o...........$...............&
33c80 00 00 00 e3 11 00 00 24 00 00 00 0a 12 00 00 1c 00 00 00 2f 12 00 00 21 00 00 00 4c 12 00 00 39 .......$.........../...!...L...9
33ca0 00 00 00 6e 12 00 00 27 00 00 00 a8 12 00 00 0e 00 00 00 d0 12 00 00 0f 00 00 00 df 12 00 00 1e ...n...'........................
33cc0 00 00 00 ef 12 00 00 37 00 00 00 0e 13 00 00 3d 00 00 00 46 13 00 00 6d 00 00 00 84 13 00 00 4a .......7.......=...F...m.......J
33ce0 00 00 00 f2 13 00 00 2b 00 00 00 3d 14 00 00 09 00 00 00 69 14 00 00 13 00 00 00 73 14 00 00 07 .......+...=.......i.......s....
33d00 00 00 00 87 14 00 00 24 00 00 00 8f 14 00 00 24 00 00 00 b4 14 00 00 1f 00 00 00 d9 14 00 00 38 .......$.......$...............8
33d20 00 00 00 f9 14 00 00 18 00 00 00 32 15 00 00 3d 00 00 00 4b 15 00 00 27 00 00 00 89 15 00 00 1f ...........2...=...K...'........
33d40 00 00 00 b1 15 00 00 21 00 00 00 d1 15 00 00 0a 00 00 00 f3 15 00 00 16 00 00 00 fe 15 00 00 16 .......!........................
33d60 00 00 00 15 16 00 00 60 01 00 00 2c 16 00 00 1c 00 00 00 8d 17 00 00 20 00 00 00 aa 17 00 00 1d .......`...,....................
33d80 00 00 00 cb 17 00 00 14 00 00 00 e9 17 00 00 17 00 00 00 fe 17 00 00 22 00 00 00 16 18 00 00 37 .......................".......7
33da0 00 00 00 39 18 00 00 89 00 00 00 71 18 00 00 2c 00 00 00 fb 18 00 00 5f 00 00 00 28 19 00 00 5e ...9.......q...,......._...(...^
33dc0 00 00 00 88 19 00 00 10 00 00 00 e7 19 00 00 12 00 00 00 f8 19 00 00 18 00 00 00 0b 1a 00 00 08 ................................
33de0 00 00 00 24 1a 00 00 1e 00 00 00 2d 1a 00 00 19 00 00 00 4c 1a 00 00 26 00 00 00 66 1a 00 00 36 ...$.......-.......L...&...f...6
33e00 00 00 00 8d 1a 00 00 19 00 00 00 c4 1a 00 00 33 00 00 00 de 1a 00 00 37 00 00 00 12 1b 00 00 17 ...............3.......7........
33e20 00 00 00 4a 1b 00 00 30 00 00 00 62 1b 00 00 16 00 00 00 93 1b 00 00 17 00 00 00 aa 1b 00 00 17 ...J...0...b....................
33e40 00 00 00 c2 1b 00 00 16 00 00 00 da 1b 00 00 61 00 00 00 f1 1b 00 00 0c 00 00 00 53 1c 00 00 1c ...............a...........S....
33e60 00 00 00 60 1c 00 00 23 00 00 00 7d 1c 00 00 16 00 00 00 a1 1c 00 00 0c 00 00 00 b8 1c 00 00 0f ...`...#...}....................
33e80 00 00 00 c5 1c 00 00 1c 00 00 00 d5 1c 00 00 18 00 00 00 f2 1c 00 00 12 00 00 00 0b 1d 00 00 21 ...............................!
33ea0 00 00 00 1e 1d 00 00 12 00 00 00 40 1d 00 00 3a 00 00 00 53 1d 00 00 37 00 00 00 8e 1d 00 00 45 ...........@...:...S...7.......E
33ec0 00 00 00 c6 1d 00 00 3a 00 00 00 0c 1e 00 00 1a 00 00 00 47 1e 00 00 13 00 00 00 62 1e 00 00 0c .......:...........G.......b....
33ee0 00 00 00 76 1e 00 00 0d 00 00 00 83 1e 00 00 15 00 00 00 91 1e 00 00 0a 00 00 00 a7 1e 00 00 47 ...v...........................G
33f00 00 00 00 b2 1e 00 00 0f 00 00 00 fa 1e 00 00 0c 00 00 00 0a 1f 00 00 12 00 00 00 17 1f 00 00 11 ................................
33f20 00 00 00 2a 1f 00 00 15 00 00 00 3c 1f 00 00 09 00 00 00 52 1f 00 00 23 00 00 00 5c 1f 00 00 2e ...*.......<.......R...#...\....
33f40 00 00 00 80 1f 00 00 1d 00 00 00 af 1f 00 00 24 00 00 00 cd 1f 00 00 1d 00 00 00 f2 1f 00 00 25 ...............$...............%
33f60 00 00 00 10 20 00 00 1a 00 00 00 36 20 00 00 0a 00 00 00 51 20 00 00 1b 00 00 00 5c 20 00 00 0a ...........6.......Q.......\....
33f80 00 00 00 78 20 00 00 09 00 00 00 83 20 00 00 2b 00 00 00 8d 20 00 00 11 00 00 00 b9 20 00 00 12 ...x...........+................
33fa0 00 00 00 cb 20 00 00 16 00 00 00 de 20 00 00 24 00 00 00 f5 20 00 00 1c 00 00 00 1a 21 00 00 12 ...............$............!...
33fc0 00 00 00 37 21 00 00 0e 00 00 00 4a 21 00 00 0e 00 00 00 59 21 00 00 10 00 00 00 68 21 00 00 18 ...7!......J!......Y!......h!...
33fe0 00 00 00 79 21 00 00 32 00 00 00 92 21 00 00 31 00 00 00 c5 21 00 00 3d 00 00 00 f7 21 00 00 16 ...y!..2....!..1....!..=....!...
34000 00 00 00 35 22 00 00 12 00 00 00 4c 22 00 00 21 00 00 00 5f 22 00 00 20 00 00 00 81 22 00 00 1d ...5"......L"..!..._"......."...
34020 00 00 00 a2 22 00 00 29 00 00 00 c0 22 00 00 1b 00 00 00 ea 22 00 00 1f 00 00 00 06 23 00 00 1d ...."..)....".......".......#...
34040 00 00 00 26 23 00 00 32 00 00 00 44 23 00 00 2b 00 00 00 77 23 00 00 2a 00 00 00 a3 23 00 00 2a ...&#..2...D#..+...w#..*....#..*
34060 00 00 00 ce 23 00 00 20 00 00 00 f9 23 00 00 2d 00 00 00 1a 24 00 00 45 00 00 00 48 24 00 00 2d ....#.......#..-....$..E...H$..-
34080 00 00 00 8e 24 00 00 12 00 00 00 bc 24 00 00 13 00 00 00 cf 24 00 00 21 00 00 00 e3 24 00 00 4b ....$.......$.......$..!....$..K
340a0 00 00 00 05 25 00 00 48 00 00 00 51 25 00 00 7b 00 00 00 9a 25 00 00 5f 00 00 00 16 26 00 00 30 ....%..H...Q%..{....%.._....&..0
340c0 00 00 00 76 26 00 00 0a 00 00 00 a7 26 00 00 18 00 00 00 b2 26 00 00 0b 00 00 00 cb 26 00 00 29 ...v&.......&.......&.......&..)
340e0 00 00 00 d7 26 00 00 29 00 00 00 01 27 00 00 2d 00 00 00 2b 27 00 00 50 00 00 00 59 27 00 00 1e ....&..)....'..-...+'..P...Y'...
34100 00 00 00 aa 27 00 00 40 00 00 00 c9 27 00 00 38 00 00 00 0a 28 00 00 23 00 00 00 43 28 00 00 27 ....'..@....'..8....(..#...C(..'
34120 00 00 00 67 28 00 00 0b 00 00 00 8f 28 00 00 19 00 00 00 9b 28 00 00 16 00 00 00 b5 28 00 00 00 ...g(.......(.......(.......(...
34140 26 43 75 73 74 6f 6d 69 7a 65 20 70 6c 75 67 69 6e e2 80 a6 00 26 53 61 76 65 20 61 73 20 66 69 &Customize.plugin....&Save.as.fi
34160 6c 65 6e 61 6d 65 3a 00 26 53 65 6c 65 63 74 20 69 6d 61 67 65 20 73 6f 75 72 63 65 00 41 64 64 lename:.&Select.image.source.Add
34180 20 4e 65 77 20 49 6d 61 67 65 00 41 64 64 20 4e 65 77 20 49 6d 61 67 65 e2 80 a6 00 41 6c 6c 20 .New.Image.Add.New.Image....All.
341a0 43 53 53 20 72 75 6c 65 73 20 61 72 65 20 6b 65 65 70 2e 00 41 6e 20 69 6d 61 67 65 20 77 69 74 CSS.rules.are.keep..An.image.wit
341c0 68 20 74 68 69 73 20 6e 61 6d 65 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 20 2d 20 6f 76 65 h.this.name.already.exists.-.ove
341e0 72 77 72 69 74 65 20 69 74 3f 00 41 6e 79 20 73 65 74 74 69 6e 67 73 20 69 6e 20 6f 74 68 65 72 rwrite.it?.Any.settings.in.other
34200 20 6c 69 62 72 61 72 69 65 73 20 6f 72 20 73 74 6f 72 65 64 20 69 6e 20 61 20 4a 53 4f 4e 20 66 .libraries.or.stored.in.a.JSON.f
34220 69 6c 65 20 69 6e 20 79 6f 75 72 20 63 61 6c 69 62 72 65 20 70 6c 75 67 69 6e 73 20 66 6f 6c 64 ile.in.your.calibre.plugins.fold
34240 65 72 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 74 6f 75 63 68 65 64 2e 00 41 70 70 6c 79 20 74 6f er.will.not.be.touched..Apply.to
34260 20 6f 74 68 65 72 73 20 63 75 73 74 6f 6d 20 48 54 4d 4c 20 63 6f 6c 75 6d 6e 73 00 41 72 65 20 .others.custom.HTML.columns.Are.
34280 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 79 6f 75 72 you.sure.you.want.to.change.your
342a0 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 .settings.in.this.library.for.th
342c0 69 73 20 70 6c 75 67 69 6e 3f 00 41 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 is.plugin?.Are.you.sure.you.want
342e0 20 74 6f 20 63 6c 65 61 72 20 79 6f 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 .to.clear.your.settings.in.this.
34300 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 3f 00 41 72 65 20 79 6f 75 library.for.this.plugin?.Are.you
34320 20 73 75 72 65 3f 00 42 6f 6f 6b 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 00 43 53 53 20 72 75 6c .sure?.Book.{:d}.of.{:d}.CSS.rul
34340 65 20 74 6f 20 6b 65 65 70 3a 00 43 61 6e 63 65 6c 00 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 e.to.keep:.Cancel.Cannot.import.
34360 69 6d 61 67 65 00 43 6c 65 61 6e 20 63 61 74 65 67 6f 72 79 20 26 6e 6f 74 65 73 00 43 6c 65 61 image.Clean.category.&notes.Clea
34380 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 26 63 6f 6d 6d 65 6e 74 73 00 43 6c 65 61 72 20 61 n.the.selected.&comments.Clear.a
343a0 6c 6c 20 73 65 74 74 69 6e 67 73 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 00 43 6f 6d 6d ll.settings.for.this.plugin.Comm
343c0 65 6e 74 73 20 43 6c 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 00 43 6f 6e 76 65 72 74 20 69 6e 20 ents.Cleaner.Options.Convert.in.
343e0 61 6c 6c 20 63 6f 6d 6d 65 6e 74 73 20 28 6e 6f 74 20 72 65 63 6f 6d 61 6e 64 65 64 29 00 43 6f all.comments.(not.recomanded).Co
34400 6e 76 65 72 74 20 6f 6e 6c 79 20 66 72 6f 6d 20 61 20 70 6c 61 69 6e 20 74 65 78 74 20 63 6f 6d nvert.only.from.a.plain.text.com
34420 6d 65 6e 74 00 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 00 43 6f 6e ment.Converte.to.a.paragraph.Con
34440 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 20 62 75 74 20 6b 65 65 70 20 74 68 verte.to.a.paragraph.but.keep.th
34460 65 20 62 6f 6c 64 00 43 6f 70 79 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 00 43 6f 75 6c 64 20 6e e.bold.Copy.to.clipboard.Could.n
34480 6f 74 20 74 6f 20 6c 61 75 6e 63 68 20 7b 3a 73 7d 00 43 72 65 61 74 65 20 61 20 65 6d 70 74 79 ot.to.launch.{:s}.Create.a.empty
344a0 20 70 61 72 61 67 72 61 70 68 00 43 72 65 61 74 65 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 .paragraph.Create.a.new.paragrap
344c0 68 00 43 75 73 74 6f 6d 20 43 53 53 20 72 75 6c 65 73 20 74 6f 20 6b 65 65 70 20 69 6e 20 61 64 h.Custom.CSS.rules.to.keep.in.ad
344e0 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 62 61 73 69 63 20 6f 6e 65 73 2e 20 52 75 6c 65 73 20 dition.to.the.basic.ones..Rules.
34500 73 65 70 61 72 61 74 65 64 20 62 79 20 61 20 73 70 61 63 65 2e 00 43 75 73 74 6f 6d 69 7a 65 00 separated.by.a.space..Customize.
34520 44 65 6c 65 74 65 20 22 63 6c 61 73 73 22 20 61 74 74 72 69 62 75 74 00 44 65 6c 65 74 65 20 22 Delete."class".attribut.Delete."
34540 69 64 22 20 61 6e 64 20 22 63 6c 61 73 73 22 20 61 74 74 72 69 62 75 74 00 44 65 6c 65 74 65 20 id".and."class".attribut.Delete.
34560 22 69 64 22 20 61 74 74 72 69 62 75 74 00 44 65 6c 65 74 65 20 55 52 4c 00 44 65 6c 65 74 65 20 "id".attribut.Delete.URL.Delete.
34580 57 65 69 67 68 74 73 00 44 65 6c 65 74 65 20 61 6c 6c 20 61 6c 69 67 6e 6d 65 6e 74 00 44 65 6c Weights.Delete.all.alignment.Del
345a0 65 74 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 00 44 65 6c 65 74 65 20 69 6d 61 67 65 ete.empty.paragraph.Delete.image
345c0 73 00 44 65 6c 65 74 65 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 69 6e 20 6c 69 73 74 73 00 s.Delete.the.alignment.in.lists.
345e0 44 6f 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 57 65 69 67 68 74 73 00 45 64 69 74 20 74 Do.not.change.the.Weights.Edit.t
34600 68 65 20 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 20 61 73 73 6f 63 69 61 74 65 64 he.keyboard.shortcuts.associated
34620 20 77 69 74 68 20 74 68 69 73 20 70 6c 75 67 69 6e 00 45 64 69 74 20 74 68 65 20 6f 70 74 69 6f .with.this.plugin.Edit.the.optio
34640 6e 73 20 66 6f 72 20 74 68 65 20 6e 6f 74 65 73 20 63 6c 65 61 6e 65 72 20 61 63 74 69 6f 6e 00 ns.for.the.notes.cleaner.action.
34660 45 6e 74 65 72 20 61 20 74 65 6d 70 6c 61 74 65 20 74 6f 20 74 65 73 74 20 75 73 69 6e 67 20 64 Enter.a.template.to.test.using.d
34680 61 74 61 20 66 72 6f 6d 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 00 46 6f 72 63 65 ata.from.the.selected.book.Force
346a0 20 74 68 65 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 28 72 65 70 6c 61 63 65 20 22 63 65 6e .the.justification.(replace."cen
346c0 74 65 72 22 20 61 6e 64 20 22 72 69 67 68 74 22 29 00 46 72 6f 6d 20 26 77 65 62 20 64 6f 6d 61 ter".and."right").From.&web.doma
346e0 69 6e 20 66 61 76 69 63 6f 6e 00 46 72 6f 6d 20 2e 70 6e 67 20 26 66 69 6c 65 00 48 65 61 64 69 in.favicon.From..png.&file.Headi
34700 6e 67 73 3a 00 48 79 70 65 72 6c 69 6e 6b 3a 00 49 44 20 26 20 43 4c 41 53 53 20 61 74 74 72 69 ngs:.Hyperlink:.ID.&.CLASS.attri
34720 62 75 74 73 3a 00 49 6d 61 67 65 73 3a 00 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 66 6f 72 20 buts:.Images:.Justification.for.
34740 69 6e 64 65 74 65 72 6d 69 6e 61 74 65 20 74 65 78 74 20 28 6b 65 65 70 20 22 63 65 6e 74 65 72 indeterminate.text.(keep."center
34760 22 20 61 6e 64 20 22 72 69 67 68 74 22 29 00 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 3a 00 4b 65 ".and."right").Justification:.Ke
34780 65 70 20 55 52 4c 00 4b 65 65 70 20 69 6d 61 67 65 73 00 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 ep.URL.Keep.images.Keyboard.shor
347a0 74 63 75 74 73 00 4c 69 73 74 20 61 6c 69 67 6e 6d 65 6e 74 3a 00 4d 61 72 6b 64 6f 77 6e 3a 00 tcuts.List.alignment:.Markdown:.
347c0 4d 65 72 67 65 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 Merge.in.a.single.empty.paragrap
347e0 68 00 4d 75 6c 74 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 h.Multiple.'Line.Return'.in.a.pa
34800 72 61 67 72 61 70 68 3a 00 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 ragraph:.Multiple.empty.paragrap
34820 68 3a 00 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 61 72 63 68 h:.No.book.in.the.current.search
34840 00 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 00 4e 6f 20 62 6f 6f 6b 20 .No.book.in.the.library.No.book.
34860 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 79 00 4e 6f 20 62 6f 6f 6b 20 73 in.the.virtual.library.No.book.s
34880 65 6c 65 63 74 65 64 00 4e 6f 20 62 6f 6f 6b 73 00 4e 6f 20 62 6f 6f 6b 73 20 73 65 6c 65 63 74 elected.No.books.No.books.select
348a0 65 64 00 4e 6f 20 63 68 61 6e 67 65 00 4e 6f 20 6e 6f 74 65 73 00 4e 6f 20 6e 6f 74 65 73 20 66 ed.No.change.No.notes.No.notes.f
348c0 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 00 4e 6f 74 65 20 7b 3a 64 7d or.{:d}.selected.books.Note.{:d}
348e0 20 6f 66 20 7b 3a 64 7d 00 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 00 4e 6f 74 65 73 20 43 6c 65 .of.{:d}.Notes.Cleaner.Notes.Cle
34900 61 6e 65 72 20 4f 70 74 69 6f 6e 73 00 4e 6f 74 65 73 20 66 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 aner.Options.Notes.for.{:d}.sele
34920 63 74 65 64 20 62 6f 6f 6b 73 00 4f 70 65 6e 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 65 64 69 cted.books.Open.the.template.edi
34940 74 6f 72 00 50 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 3a 00 52 65 6d 6f 76 65 20 49 74 61 6c tor.Preferences.for:.Remove.Ital
34960 69 63 00 52 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 72 6f 75 67 68 00 52 65 6d 6f 76 65 20 55 ic.Remove.Strikethrough.Remove.U
34980 6e 64 65 72 6c 69 6e 65 00 52 65 6d 6f 76 65 20 61 6c 6c 20 66 6f 72 6d 61 74 74 69 6e 67 00 52 nderline.Remove.all.formatting.R
349a0 65 6d 6f 76 65 20 74 68 65 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 emove.the.bold.if.all.paragraphe
349c0 73 20 61 72 65 20 69 74 00 52 65 6d 6f 76 65 20 74 68 65 20 69 74 61 6c 69 63 20 69 66 20 61 6c s.are.it.Remove.the.italic.if.al
349e0 6c 20 70 61 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 00 52 65 6d 6f 76 65 20 74 68 65 20 l.paragraphes.are.it.Remove.the.
34a00 73 63 72 61 70 73 20 43 53 53 20 69 6e 20 48 54 4d 4c 20 63 6f 6d 6d 65 6e 74 73 00 52 65 70 6c scraps.CSS.in.HTML.comments.Repl
34a20 61 63 65 20 77 69 74 68 20 73 70 61 63 65 00 52 65 73 74 61 72 74 20 72 65 71 75 69 72 65 64 00 ace.with.space.Restart.required.
34a40 52 6f 75 6e 64 20 74 68 65 20 57 65 69 67 68 74 73 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 68 Round.the.Weights.value.to.the.h
34a60 75 6e 64 72 65 64 00 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 27 62 6f 6c undred.Round.to.Bold.(value.'bol
34a80 64 27 29 00 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 36 30 30 29 00 52 75 d').Round.to.Bold.(value.600).Ru
34aa0 6e 6e 69 6e 67 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 72 65 74 75 72 6e 65 64 20 61 6e 20 65 nning.the.template.returned.an.e
34ac0 72 72 6f 72 3a 00 53 61 76 65 20 5a 49 50 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 61 73 e2 80 rror:.Save.ZIP.archive.file.as..
34ae0 a6 00 53 61 76 65 20 74 68 65 20 4a 53 4f 4e 20 66 69 6c 65 20 61 73 e2 80 a6 00 53 65 6c 65 63 ..Save.the.JSON.file.as....Selec
34b00 74 20 4e 6f 74 65 73 20 74 6f 20 63 6c 65 61 6e 00 53 65 6c 65 63 74 20 61 20 2e 70 6e 67 20 66 t.Notes.to.clean.Select.a..png.f
34b20 69 6c 65 20 66 6f 72 20 74 68 65 20 6d 65 6e 75 20 69 63 6f 6e 00 53 65 6c 65 63 74 20 61 20 4a ile.for.the.menu.icon.Select.a.J
34b40 53 4f 4e 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 00 53 65 6c 65 63 74 20 61 20 5a SON.file.to.import....Select.a.Z
34b60 49 50 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 00 53 69 6e IP.archive.file.to.import....Sin
34b80 67 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 gle.'Line.Return'.in.a.paragraph
34ba0 3a 00 53 6f 75 72 63 65 20 69 6d 61 67 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 21 00 53 :.Source.image.does.not.exist!.S
34bc0 6f 75 72 63 65 20 69 6d 61 67 65 20 6d 75 73 74 20 62 65 20 61 20 2e 70 6e 67 20 66 69 6c 65 2e ource.image.must.be.a..png.file.
34be0 00 53 75 62 73 65 74 20 6f 66 20 4e 6f 74 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 .Subset.of.Notes.associate.to.th
34c00 65 20 63 75 72 72 65 6e 74 6c 79 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 00 53 75 62 73 65 e.currently.selected.books.Subse
34c20 74 20 6f 66 20 76 61 6c 75 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 65 20 62 6f 6f t.of.values.associate.to.the.boo
34c40 6b 73 00 54 65 6d 70 6c 61 74 65 20 45 72 72 6f 72 00 54 65 6d 70 6c 61 74 65 20 65 64 69 74 6f ks.Template.Error.Template.edito
34c60 72 00 54 68 65 20 63 68 61 6e 67 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 61 70 70 6c 69 65 64 2e r.The.changes.cannot.be.applied.
34c80 00 54 68 65 20 73 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 20 73 68 6f 75 6c 64 20 63 6f 6e .The.save.as.filename.should.con
34ca0 73 69 73 74 20 6f 66 20 61 20 66 69 6c 65 6e 61 6d 65 20 6f 6e 6c 79 2e 00 54 68 65 20 7b 50 4c sist.of.a.filename.only..The.{PL
34cc0 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 6c 75 67 69 6e 20 68 61 73 20 65 6e 63 6f 75 6e 74 65 72 20 UGIN_NAME}.plugin.has.encounter.
34ce0 61 20 75 6e 68 61 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 2e 00 54 68 69 73 20 6f 70 65 72 a.unhandled.exception..This.oper
34d00 61 74 69 6f 6e 20 69 73 20 61 70 70 6c 69 65 64 20 61 66 74 65 72 20 22 4d 75 6c 74 69 70 6c 65 ation.is.applied.after."Multiple
34d20 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 22 0a 61 .'Line.Return'.in.a.paragraph".a
34d40 6e 64 20 62 65 66 6f 72 65 20 22 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 nd.before."Multiple.empty.paragr
34d60 61 70 68 22 00 54 69 74 6c 65 20 69 6d 61 67 65 20 6e 6f 74 20 66 6f 75 6e 64 20 2d 20 79 6f 75 aph".Title.image.not.found.-.you
34d80 20 6d 75 73 74 20 72 65 73 74 61 72 74 20 43 61 6c 69 62 72 65 20 62 65 66 6f 72 65 20 75 73 69 .must.restart.Calibre.before.usi
34da0 6e 67 20 74 68 69 73 20 70 6c 75 67 69 6e 21 00 54 72 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 ng.this.plugin!.Try.to.convert.t
34dc0 68 65 20 4d 61 72 6b 64 6f 77 6e 20 73 74 72 69 6e 67 73 20 74 6f 20 48 54 4d 4c 00 55 6e 64 65 he.Markdown.strings.to.HTML.Unde
34de0 66 69 6e 65 64 00 55 6e 68 61 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 00 55 6e 6b 6e 6f 77 fined.Unhandled.exception.Unknow
34e00 6e 00 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d 20 62 6f n.Update.the.library.for.{:d}.bo
34e20 6f 6b 73 e2 80 a6 00 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a oks....Update.the.library.for.{:
34e40 64 7d 20 6e 6f 74 65 73 e2 80 a6 00 55 73 65 20 74 68 65 20 27 4a 75 73 74 69 66 69 63 61 74 69 d}.notes....Use.the.'Justificati
34e60 6f 6e 27 20 73 65 74 74 69 6e 67 00 56 69 65 77 20 64 61 74 61 20 73 74 6f 72 65 64 20 69 6e 20 on'.setting.View.data.stored.in.
34e80 74 68 65 20 6c 69 62 72 61 72 79 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 74 68 69 73 20 70 6c the.library.database.for.this.pl
34ea0 75 67 69 6e 00 56 69 65 77 20 6c 69 62 72 61 72 79 20 70 72 65 66 65 72 65 6e 63 65 73 00 59 6f ugin.View.library.preferences.Yo
34ec0 75 20 63 61 6e 6e 6f 74 20 63 6f 6e 66 69 67 75 72 65 20 74 68 69 73 20 70 6c 75 67 69 6e 20 62 u.cannot.configure.this.plugin.b
34ee0 65 66 6f 72 65 20 63 61 6c 69 62 72 65 20 69 73 20 72 65 73 74 61 72 74 65 64 2e 00 59 6f 75 20 efore.calibre.is.restarted..You.
34f00 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 73 61 76 65 20 must.specify.a.filename.to.save.
34f20 61 73 2e 00 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 73 6f 75 72 63 65 20 66 69 as..You.must.specify.a.source.fi
34f40 6c 65 2e 00 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 77 65 62 20 64 6f 6d 61 69 le..You.must.specify.a.web.domai
34f60 6e 20 75 72 6c 00 7b 3a 64 7d 20 62 6f 6f 6b 73 00 7b 3a 64 7d 20 62 6f 6f 6b 73 20 28 6e 6f 20 n.url.{:d}.books.{:d}.books.(no.
34f80 76 61 6c 75 65 73 29 00 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 72 65 73 73 00 50 values).{PLUGIN_NAME}.progress.P
34fa0 72 6f 6a 65 63 74 2d 49 64 2d 56 65 72 73 69 6f 6e 3a 20 0a 50 4f 54 2d 43 72 65 61 74 69 6f 6e roject-Id-Version:..POT-Creation
34fc0 2d 44 61 74 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 2b 30 32 30 30 0a 50 4f 2d -Date:.2025-08-28.10:12+0200.PO-
34fe0 52 65 76 69 73 69 6f 6e 2d 44 61 74 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 2b Revision-Date:.2025-08-28.10:12+
35000 30 32 30 30 0a 4c 61 73 74 2d 54 72 61 6e 73 6c 61 74 6f 72 3a 20 0a 4c 61 6e 67 75 61 67 65 2d 0200.Last-Translator:..Language-
35020 54 65 61 6d 3a 20 0a 4c 61 6e 67 75 61 67 65 3a 20 65 73 0a 4d 49 4d 45 2d 56 65 72 73 69 6f 6e Team:..Language:.es.MIME-Version
35040 3a 20 31 2e 30 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 3b 20 :.1.0.Content-Type:.text/plain;.
35060 63 68 61 72 73 65 74 3d 55 54 46 2d 38 0a 43 6f 6e 74 65 6e 74 2d 54 72 61 6e 73 66 65 72 2d 45 charset=UTF-8.Content-Transfer-E
35080 6e 63 6f 64 69 6e 67 3a 20 38 62 69 74 0a 50 6c 75 72 61 6c 2d 46 6f 72 6d 73 3a 20 6e 70 6c 75 ncoding:.8bit.Plural-Forms:.nplu
350a0 72 61 6c 73 3d 32 3b 20 70 6c 75 72 61 6c 3d 28 6e 20 3e 20 31 29 3b 0a 58 2d 47 65 6e 65 72 61 rals=2;.plural=(n.>.1);.X-Genera
350c0 74 6f 72 3a 20 50 6f 65 64 69 74 20 33 2e 35 0a 58 2d 50 6f 65 64 69 74 2d 42 61 73 65 70 61 74 tor:.Poedit.3.5.X-Poedit-Basepat
350e0 68 3a 20 2e 2e 0a 58 2d 50 6f 65 64 69 74 2d 53 65 61 72 63 68 50 61 74 68 2d 30 3a 20 2e 0a 00 h:....X-Poedit-SearchPath-0:....
35100 26 50 65 72 73 6f 6e 61 6c 69 7a 61 72 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f e2 80 a6 00 26 47 75 &Personalizar.complemento....&Gu
35120 61 72 64 61 72 20 63 6f 6d 6f 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 76 6f 3a 00 26 53 ardar.como.nombre.de.archivo:.&S
35140 65 6c 65 63 63 69 6f 6e 61 72 20 66 75 65 6e 74 65 20 64 65 20 69 6d 61 67 65 6e 00 41 67 72 65 eleccionar.fuente.de.imagen.Agre
35160 67 61 72 20 6e 75 65 76 61 20 69 6d 61 67 65 6e 00 41 67 72 65 67 61 72 20 6e 75 65 76 61 20 69 gar.nueva.imagen.Agregar.nueva.i
35180 6d 61 67 65 6e e2 80 a6 00 54 6f 64 61 73 20 6c 61 73 20 72 65 67 6c 61 73 20 43 53 53 20 73 65 magen....Todas.las.reglas.CSS.se
351a0 20 6d 61 6e 74 69 65 6e 65 6e 2e 00 59 61 20 65 78 69 73 74 65 20 75 6e 61 20 69 6d 61 67 65 6e .mantienen..Ya.existe.una.imagen
351c0 20 63 6f 6e 20 65 73 74 65 20 6e 6f 6d 62 72 65 2e 20 c2 bf 53 6f 62 72 65 73 63 72 69 62 69 72 .con.este.nombre....Sobrescribir
351e0 6c 61 3f 00 43 75 61 6c 71 75 69 65 72 20 63 6f 6e 66 69 67 75 72 61 63 69 c3 b3 6e 20 65 6e 20 la?.Cualquier.configuraci..n.en.
35200 6f 74 72 61 73 20 62 69 62 6c 69 6f 74 65 63 61 73 20 6f 20 61 6c 6d 61 63 65 6e 61 64 61 20 65 otras.bibliotecas.o.almacenada.e
35220 6e 20 75 6e 20 61 72 63 68 69 76 6f 20 4a 53 4f 4e 20 65 6e 20 73 75 20 63 61 72 70 65 74 61 20 n.un.archivo.JSON.en.su.carpeta.
35240 64 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 73 20 64 65 20 63 61 6c 69 62 72 65 20 6e 6f 20 73 65 de.complementos.de.calibre.no.se
35260 20 6d 6f 64 69 66 69 63 61 72 c3 a1 2e 00 41 70 6c 69 63 61 72 20 61 20 6f 74 72 6f 73 20 63 6f .modificar....Aplicar.a.otros.co
35280 6c 75 6d 6e 61 73 20 48 54 4d 4c 20 70 65 72 73 6f 6e 61 6c 69 7a 61 64 61 73 00 c2 bf 45 73 74 lumnas.HTML.personalizadas...Est
352a0 c3 a1 20 73 65 67 75 72 6f 20 64 65 20 71 75 65 20 64 65 73 65 61 20 63 61 6d 62 69 61 72 20 73 ...seguro.de.que.desea.cambiar.s
352c0 75 20 63 6f 6e 66 69 67 75 72 61 63 69 c3 b3 6e 20 65 6e 20 65 73 74 61 20 62 69 62 6c 69 6f 74 u.configuraci..n.en.esta.bibliot
352e0 65 63 61 20 70 61 72 61 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 3f 00 c2 bf 45 73 74 eca.para.este.complemento?...Est
35300 c3 a1 20 73 65 67 75 72 6f 20 64 65 20 71 75 65 20 64 65 73 65 61 20 62 6f 72 72 61 72 20 73 75 ...seguro.de.que.desea.borrar.su
35320 20 63 6f 6e 66 69 67 75 72 61 63 69 c3 b3 6e 20 65 6e 20 65 73 74 61 20 62 69 62 6c 69 6f 74 65 .configuraci..n.en.esta.bibliote
35340 63 61 20 70 61 72 61 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 3f 00 c2 bf 45 73 74 c3 ca.para.este.complemento?...Est.
35360 a1 73 20 73 65 67 75 72 6f 3f 00 4c 69 62 72 6f 20 7b 3a 64 7d 20 64 65 20 7b 3a 64 7d 00 52 65 .s.seguro?.Libro.{:d}.de.{:d}.Re
35380 67 6c 61 20 43 53 53 20 70 61 72 61 20 6d 61 6e 74 65 6e 65 72 3a 00 43 61 6e 63 65 6c 61 72 00 gla.CSS.para.mantener:.Cancelar.
353a0 4e 6f 20 73 65 20 70 75 65 64 65 20 69 6d 70 6f 72 74 61 72 20 6c 61 20 69 6d 61 67 65 6e 00 4c No.se.puede.importar.la.imagen.L
353c0 69 6d 70 69 61 72 20 63 61 74 65 67 6f 72 c3 ad 61 20 26 6e 6f 74 61 73 00 4c 69 6d 70 69 61 72 impiar.categor..a.&notas.Limpiar
353e0 20 6c 6f 73 20 26 63 6f 6d 65 6e 74 61 72 69 6f 73 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 73 00 .los.&comentarios.seleccionados.
35400 42 6f 72 72 61 72 20 74 6f 64 61 73 20 6c 61 73 20 63 6f 6e 66 69 67 75 72 61 63 69 6f 6e 65 73 Borrar.todas.las.configuraciones
35420 20 70 61 72 61 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 00 43 6f 6d 6d 65 6e 74 73 20 .para.este.complemento.Comments.
35440 43 6c 65 61 6e 65 72 20 4f 70 63 69 6f 6e 65 73 00 43 6f 6e 76 65 72 74 69 72 20 65 6e 20 74 6f Cleaner.Opciones.Convertir.en.to
35460 64 6f 73 20 6c 6f 73 20 63 6f 6d 65 6e 74 61 72 69 6f 73 20 28 6e 6f 20 72 65 63 6f 6d 65 6e 64 dos.los.comentarios.(no.recomend
35480 61 64 6f 29 00 43 6f 6e 76 65 72 74 69 72 20 73 6f 6c 6f 20 64 65 73 64 65 20 75 6e 20 63 6f 6d ado).Convertir.solo.desde.un.com
354a0 65 6e 74 61 72 69 6f 20 64 65 20 74 65 78 74 6f 20 73 69 6e 20 66 6f 72 6d 61 74 6f 00 43 6f 6e entario.de.texto.sin.formato.Con
354c0 76 65 72 74 69 72 20 61 20 75 6e 20 70 c3 a1 72 72 61 66 6f 00 43 6f 6e 76 65 72 74 69 72 20 61 vertir.a.un.p..rrafo.Convertir.a
354e0 20 75 6e 20 70 c3 a1 72 72 61 66 6f 20 70 65 72 6f 20 6d 61 6e 74 65 6e 65 72 20 6c 61 20 6e 65 .un.p..rrafo.pero.mantener.la.ne
35500 67 72 69 74 61 00 43 6f 70 69 61 72 20 61 6c 20 70 6f 72 74 61 70 61 70 65 6c 65 73 00 4e 6f 20 grita.Copiar.al.portapapeles.No.
35520 73 65 20 70 75 64 6f 20 69 6e 69 63 69 61 72 20 7b 3a 73 7d 00 43 72 65 61 20 75 6e 20 70 c3 a1 se.pudo.iniciar.{:s}.Crea.un.p..
35540 72 72 61 66 6f 20 76 61 63 c3 ad 6f 00 43 72 65 61 20 75 6e 20 6e 75 65 76 6f 20 70 c3 a1 72 72 rrafo.vac..o.Crea.un.nuevo.p..rr
35560 61 66 6f 00 52 65 67 6c 61 73 20 43 53 53 20 70 65 72 73 6f 6e 61 6c 69 7a 61 64 61 73 20 70 61 afo.Reglas.CSS.personalizadas.pa
35580 72 61 20 6d 61 6e 74 65 6e 65 72 20 61 64 65 6d c3 a1 73 20 64 65 20 6c 61 73 20 62 c3 a1 73 69 ra.mantener.adem..s.de.las.b..si
355a0 63 61 73 2e 20 52 65 67 6c 61 73 20 73 65 70 61 72 61 64 61 73 20 70 6f 72 20 75 6e 20 65 73 70 cas..Reglas.separadas.por.un.esp
355c0 61 63 69 6f 2e 00 50 65 72 73 6f 6e 61 6c 69 7a 61 72 00 45 6c 69 6d 69 6e 61 72 20 65 6c 20 61 acio..Personalizar.Eliminar.el.a
355e0 74 72 69 62 75 74 6f 20 22 63 6c 61 73 73 22 00 45 6c 69 6d 69 6e 61 72 20 65 6c 20 61 74 72 69 tributo."class".Eliminar.el.atri
35600 62 75 74 6f 20 22 69 64 22 20 79 20 22 63 6c 61 73 73 22 00 45 6c 69 6d 69 6e 61 72 20 61 74 72 buto."id".y."class".Eliminar.atr
35620 69 62 75 74 6f 20 22 69 64 22 00 45 6c 69 6d 69 6e 61 72 20 55 52 4c 00 45 6c 69 6d 69 6e 61 72 ibuto."id".Eliminar.URL.Eliminar
35640 20 43 61 72 67 61 73 00 45 6c 69 6d 69 6e 61 72 20 74 6f 64 61 20 6c 61 20 61 6c 69 6e 65 61 63 .Cargas.Eliminar.toda.la.alineac
35660 69 c3 b3 6e 00 45 6c 69 6d 69 6e 61 72 20 70 c3 a1 72 72 61 66 6f 20 76 61 63 c3 ad 6f 00 45 6c i..n.Eliminar.p..rrafo.vac..o.El
35680 69 6d 69 6e 61 72 20 69 6d c3 a1 67 65 6e 65 73 00 45 6c 69 6d 69 6e 61 72 20 6c 61 20 61 6c 69 iminar.im..genes.Eliminar.la.ali
356a0 6e 65 61 63 69 c3 b3 6e 20 65 6e 20 6c 69 73 74 61 73 00 4e 6f 20 63 61 6d 62 69 65 20 6c 61 20 neaci..n.en.listas.No.cambie.la.
356c0 63 61 72 67 61 00 45 64 69 74 65 20 6c 6f 73 20 61 74 61 6a 6f 73 20 64 65 20 74 65 63 6c 61 64 carga.Edite.los.atajos.de.teclad
356e0 6f 20 61 73 6f 63 69 61 64 6f 73 20 63 6f 6e 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f o.asociados.con.este.complemento
35700 00 45 64 69 74 65 20 6c 61 73 20 6f 70 63 69 6f 6e 65 73 20 70 61 72 61 20 6c 61 20 61 63 63 69 .Edite.las.opciones.para.la.acci
35720 c3 b3 6e 20 64 65 20 6c 69 6d 70 69 65 7a 61 20 64 65 20 6e 6f 74 61 73 00 49 6e 67 72 65 73 65 ..n.de.limpieza.de.notas.Ingrese
35740 20 75 6e 61 20 70 6c 61 6e 74 69 6c 6c 61 20 70 61 72 61 20 70 72 6f 62 61 72 20 75 73 61 6e 64 .una.plantilla.para.probar.usand
35760 6f 20 64 61 74 6f 73 20 64 65 6c 20 6c 69 62 72 6f 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 00 46 o.datos.del.libro.seleccionado.F
35780 6f 72 7a 61 72 20 6c 61 20 6a 75 73 74 69 66 69 63 61 63 69 c3 b3 6e 20 28 72 65 65 6d 70 6c 61 orzar.la.justificaci..n.(reempla
357a0 7a 61 72 20 22 63 65 6e 74 72 6f 22 20 79 20 22 64 65 72 65 63 68 61 22 29 00 44 65 73 64 65 20 zar."centro".y."derecha").Desde.
357c0 26 64 6f 6d 69 6e 69 6f 20 77 65 62 20 66 61 76 69 63 6f 6e 00 44 65 73 64 65 20 26 61 72 63 68 &dominio.web.favicon.Desde.&arch
357e0 69 76 6f 20 2e 70 6e 67 00 45 6e 63 61 62 65 7a 61 64 6f 73 3a 00 48 69 70 65 72 76 69 6e 63 75 ivo..png.Encabezados:.Hipervincu
35800 6c 6f 3a 00 49 44 20 26 20 43 4c 41 53 53 20 61 74 72 69 62 75 74 6f 73 3a 00 49 6d c3 a1 67 65 lo:.ID.&.CLASS.atributos:.Im..ge
35820 6e 65 73 3a 00 4a 75 73 74 69 66 69 63 61 63 69 c3 b3 6e 20 70 61 72 61 20 74 65 78 74 6f 20 69 nes:.Justificaci..n.para.texto.i
35840 6e 64 65 74 65 72 6d 69 6e 61 64 6f 20 28 6d 61 6e 74 65 6e 67 61 20 22 63 65 6e 74 72 6f 22 20 ndeterminado.(mantenga."centro".
35860 79 20 22 64 65 72 65 63 68 61 22 29 00 4a 75 73 74 69 66 69 63 61 63 69 c3 b3 6e 3a 00 4d 61 6e y."derecha").Justificaci..n:.Man
35880 74 65 6e 65 72 20 55 52 4c 00 4d 61 6e 74 65 6e 65 72 20 69 6d c3 a1 67 65 6e 65 73 00 41 74 61 tener.URL.Mantener.im..genes.Ata
358a0 6a 6f 73 20 64 65 20 74 65 63 6c 61 64 6f 00 41 6c 69 6e 65 61 63 69 c3 b3 6e 20 64 65 20 6c 69 jos.de.teclado.Alineaci..n.de.li
358c0 73 74 61 3a 00 4d 61 72 6b 64 6f 77 6e 3a 00 43 6f 6d 62 69 6e 61 72 20 65 6e 20 75 6e 20 73 6f sta:.Markdown:.Combinar.en.un.so
358e0 6c 6f 20 70 c3 a1 72 72 61 66 6f 20 76 61 63 c3 ad 6f 00 4d c3 ba 6c 74 69 70 6c 65 73 20 27 52 lo.p..rrafo.vac..o.M..ltiples.'R
35900 65 74 6f 72 6e 6f 20 64 65 20 6c c3 ad 6e 65 61 27 20 65 6e 20 75 6e 20 70 c3 a1 72 72 61 66 6f etorno.de.l..nea'.en.un.p..rrafo
35920 3a 00 4d c3 ba 6c 74 69 70 6c 65 73 20 70 c3 a1 72 72 61 66 6f 73 20 76 61 63 c3 ad 6f 73 3a 00 :.M..ltiples.p..rrafos.vac..os:.
35940 4e 69 6e 67 c3 ba 6e 20 6c 69 62 72 6f 20 65 6e 20 6c 61 20 62 c3 ba 73 71 75 65 64 61 20 61 63 Ning..n.libro.en.la.b..squeda.ac
35960 74 75 61 6c 00 4e 6f 20 68 61 79 20 6c 69 62 72 6f 20 65 6e 20 6c 61 20 62 69 62 6c 69 6f 74 65 tual.No.hay.libro.en.la.bibliote
35980 63 61 00 4e 6f 20 68 61 79 20 6c 69 62 72 6f 20 65 6e 20 6c 61 20 62 69 62 6c 69 6f 74 65 63 61 ca.No.hay.libro.en.la.biblioteca
359a0 20 76 69 72 74 75 61 6c 00 4e 69 6e 67 c3 ba 6e 20 6c 69 62 72 6f 20 73 65 6c 65 63 63 69 6f 6e .virtual.Ning..n.libro.seleccion
359c0 61 64 6f 00 53 69 6e 20 6c 69 62 72 6f 73 00 4e 6f 20 68 61 79 20 6c 69 62 72 6f 73 20 73 65 6c ado.Sin.libros.No.hay.libros.sel
359e0 65 63 63 69 6f 6e 61 64 6f 73 00 53 69 6e 20 63 61 6d 62 69 6f 00 53 69 6e 20 6e 6f 74 61 73 00 eccionados.Sin.cambio.Sin.notas.
35a00 4e 6f 20 68 61 79 20 6e 6f 74 61 73 20 70 61 72 61 20 7b 3a 64 7d 20 6c 69 62 72 6f 73 20 73 65 No.hay.notas.para.{:d}.libros.se
35a20 6c 65 63 63 69 6f 6e 61 64 6f 73 00 4e 6f 74 61 20 7b 3a 64 7d 20 64 65 20 7b 3a 64 7d 00 4c 69 leccionados.Nota.{:d}.de.{:d}.Li
35a40 6d 70 69 61 64 6f 72 20 64 65 20 6e 6f 74 61 73 00 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 20 4f mpiador.de.notas.Notes.Cleaner.O
35a60 70 63 69 6f 6e 65 73 00 4e 6f 74 61 73 20 70 61 72 61 20 7b 3a 64 7d 20 6c 69 62 72 6f 73 20 73 pciones.Notas.para.{:d}.libros.s
35a80 65 6c 65 63 63 69 6f 6e 61 64 6f 73 00 41 62 72 61 20 65 6c 20 65 64 69 74 6f 72 20 64 65 20 70 eleccionados.Abra.el.editor.de.p
35aa0 6c 61 6e 74 69 6c 6c 61 73 00 50 72 65 66 65 72 65 6e 63 69 61 73 20 70 61 72 61 3a 00 51 75 69 lantillas.Preferencias.para:.Qui
35ac0 74 61 72 20 63 75 72 73 69 76 61 00 51 75 69 74 61 72 20 74 61 63 68 61 64 6f 00 51 75 69 74 61 tar.cursiva.Quitar.tachado.Quita
35ae0 72 20 73 75 62 72 61 79 61 64 6f 00 45 6c 69 6d 69 6e 61 72 20 74 6f 64 6f 20 65 6c 20 66 6f 72 r.subrayado.Eliminar.todo.el.for
35b00 6d 61 74 6f 00 45 6c 69 6d 69 6e 61 72 20 6e 65 67 72 69 74 61 73 20 73 69 20 74 6f 64 6f 73 20 mato.Eliminar.negritas.si.todos.
35b20 6c 6f 73 20 70 c3 a1 72 72 61 66 6f 73 20 6c 61 20 74 69 65 6e 65 6e 00 45 6c 69 6d 69 6e 61 72 los.p..rrafos.la.tienen.Eliminar
35b40 20 63 75 72 73 69 76 61 20 73 69 20 74 6f 64 6f 73 20 6c 6f 73 20 70 c3 a1 72 72 61 66 6f 73 20 .cursiva.si.todos.los.p..rrafos.
35b60 6c 61 20 74 69 65 6e 65 6e 00 45 6c 69 6d 69 6e 61 72 20 65 6c 20 43 53 53 20 70 61 72 61 20 65 la.tienen.Eliminar.el.CSS.para.e
35b80 6c 20 62 6c 6f 63 20 64 65 20 6e 6f 74 61 73 20 65 6e 20 6c 6f 73 20 63 6f 6d 65 6e 74 61 72 69 l.bloc.de.notas.en.los.comentari
35ba0 6f 73 20 48 54 4d 4c 00 52 65 65 6d 70 6c 61 7a 61 72 20 63 6f 6e 20 65 73 70 61 63 69 6f 00 52 os.HTML.Reemplazar.con.espacio.R
35bc0 65 69 6e 69 63 69 6f 20 72 65 71 75 65 72 69 64 6f 00 52 65 64 6f 6e 64 65 61 20 65 6c 20 76 61 einicio.requerido.Redondea.el.va
35be0 6c 6f 72 20 64 65 20 63 61 72 67 61 20 61 20 63 69 65 6e 00 52 65 64 6f 6e 64 61 20 61 20 6e 65 lor.de.carga.a.cien.Redonda.a.ne
35c00 67 72 69 74 61 20 28 76 61 6c 6f 72 20 22 62 6f 6c 64 22 29 00 52 65 64 6f 6e 64 61 20 61 20 6e grita.(valor."bold").Redonda.a.n
35c20 65 67 72 69 74 61 20 28 76 61 6c 6f 72 20 36 30 30 29 00 45 6a 65 63 75 74 61 72 20 6c 61 20 70 egrita.(valor.600).Ejecutar.la.p
35c40 6c 61 6e 74 69 6c 6c 61 20 64 65 76 6f 6c 76 69 c3 b3 20 75 6e 20 65 72 72 6f 72 3a 00 47 75 61 lantilla.devolvi...un.error:.Gua
35c60 72 64 61 72 20 61 72 63 68 69 76 6f 20 5a 49 50 20 63 6f 6d 6f e2 80 a6 00 47 75 61 72 64 61 72 rdar.archivo.ZIP.como....Guardar
35c80 20 75 6e 20 61 72 63 68 69 76 6f 20 4a 53 4f 4e 20 63 6f 6d 6f e2 80 a6 00 53 65 6c 65 63 63 69 .un.archivo.JSON.como....Selecci
35ca0 6f 6e 65 20 4e 6f 74 61 73 20 70 61 72 61 20 6c 69 6d 70 69 61 72 00 53 65 6c 65 63 63 69 6f 6e one.Notas.para.limpiar.Seleccion
35cc0 65 20 75 6e 20 61 72 63 68 69 76 6f 20 2e 70 6e 67 20 70 61 72 61 20 65 6c 20 69 63 6f 6e 6f 20 e.un.archivo..png.para.el.icono.
35ce0 64 65 6c 20 6d 65 6e c3 ba 00 53 65 6c 65 63 63 69 6f 6e 65 20 75 6e 20 61 72 63 68 69 76 6f 20 del.men...Seleccione.un.archivo.
35d00 4a 53 4f 4e 20 70 61 72 61 20 69 6d 70 6f 72 74 61 72 e2 80 a6 00 53 65 6c 65 63 63 69 6f 6e 65 JSON.para.importar....Seleccione
35d20 20 75 6e 20 61 72 63 68 69 76 6f 20 5a 49 50 20 70 61 72 61 20 69 6d 70 6f 72 74 61 72 e2 80 a6 .un.archivo.ZIP.para.importar...
35d40 00 27 52 65 74 6f 72 6e 6f 20 64 65 20 6c c3 ad 6e 65 61 27 20 c3 ba 6e 69 63 6f 20 65 6e 20 75 .'Retorno.de.l..nea'...nico.en.u
35d60 6e 20 70 c3 a1 72 72 61 66 6f 3a 00 c2 a1 4c 61 20 69 6d 61 67 65 6e 20 64 65 20 6f 72 69 67 65 n.p..rrafo:...La.imagen.de.orige
35d80 6e 20 6e 6f 20 65 78 69 73 74 65 21 00 4c 61 20 69 6d 61 67 65 6e 20 64 65 20 6f 72 69 67 65 6e n.no.existe!.La.imagen.de.origen
35da0 20 64 65 62 65 20 73 65 72 20 75 6e 20 61 72 63 68 69 76 6f 20 2e 70 6e 67 2e 00 53 75 62 63 6f .debe.ser.un.archivo..png..Subco
35dc0 6e 6a 75 6e 74 6f 20 64 65 20 6e 6f 74 61 73 20 61 73 6f 63 69 61 64 61 73 20 61 20 6c 6f 73 20 njunto.de.notas.asociadas.a.los.
35de0 6c 69 62 72 6f 73 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 73 20 61 63 74 75 61 6c 6d 65 6e 74 65 libros.seleccionados.actualmente
35e00 00 53 75 62 63 6f 6e 6a 75 6e 74 6f 20 64 65 20 76 61 6c 6f 72 65 73 20 61 73 6f 63 69 61 64 6f .Subconjunto.de.valores.asociado
35e20 73 20 61 20 6c 6f 73 20 6c 69 62 72 6f 73 00 45 72 72 6f 72 20 64 65 20 70 6c 61 6e 74 69 6c 6c s.a.los.libros.Error.de.plantill
35e40 61 00 45 64 69 74 6f 72 20 64 65 20 70 6c 61 6e 74 69 6c 6c 61 00 4c 6f 73 20 63 61 6d 62 69 6f a.Editor.de.plantilla.Los.cambio
35e60 73 20 6e 6f 20 73 65 20 70 75 65 64 65 6e 20 61 70 6c 69 63 61 72 2e 00 47 75 61 72 64 61 72 20 s.no.se.pueden.aplicar..Guardar.
35e80 63 6f 6d 6f 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 76 6f 20 64 65 62 65 20 63 6f 6e 73 como.nombre.de.archivo.debe.cons
35ea0 69 73 74 69 72 20 73 6f 6c 6f 20 65 6e 20 75 6e 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 istir.solo.en.un.nombre.de.archi
35ec0 76 6f 2e 00 45 6c 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d vo..El.complemento.{PLUGIN_NAME}
35ee0 20 68 61 20 65 6e 63 6f 6e 74 72 61 64 6f 20 75 6e 61 20 65 78 63 65 70 63 69 c3 b3 6e 20 6e 6f .ha.encontrado.una.excepci..n.no
35f00 20 63 6f 6e 74 72 6f 6c 61 64 61 2e 00 45 73 74 61 20 6f 70 65 72 61 63 69 c3 b3 6e 20 73 65 20 .controlada..Esta.operaci..n.se.
35f20 61 70 6c 69 63 61 20 64 65 73 70 75 c3 a9 73 20 64 65 20 22 4d c3 ba 6c 74 69 70 6c 65 73 20 27 aplica.despu..s.de."M..ltiples.'
35f40 52 65 74 6f 72 6e 6f 20 64 65 20 6c c3 ad 6e 65 61 27 20 65 6e 20 75 6e 20 70 c3 a1 72 72 61 66 Retorno.de.l..nea'.en.un.p..rraf
35f60 6f 22 0a 79 20 61 6e 74 65 73 20 64 65 20 22 56 61 72 69 6f 73 20 70 c3 a1 72 72 61 66 6f 73 20 o".y.antes.de."Varios.p..rrafos.
35f80 76 61 63 c3 ad 6f 73 22 00 4e 6f 20 73 65 20 65 6e 63 6f 6e 74 72 c3 b3 20 6c 61 20 69 6d 61 67 vac..os".No.se.encontr...la.imag
35fa0 65 6e 20 64 65 6c 20 74 c3 ad 74 75 6c 6f 2e 20 c2 a1 44 65 62 65 20 72 65 69 6e 69 63 69 61 72 en.del.t..tulo....Debe.reiniciar
35fc0 20 43 61 6c 69 62 72 65 20 61 6e 74 65 73 20 64 65 20 75 73 61 72 20 65 73 74 65 20 63 6f 6d 70 .Calibre.antes.de.usar.este.comp
35fe0 6c 65 6d 65 6e 74 6f 21 00 49 6e 74 65 6e 74 61 20 63 6f 6e 76 65 72 74 69 72 20 6c 61 73 20 63 lemento!.Intenta.convertir.las.c
36000 61 64 65 6e 61 73 20 64 65 20 4d 61 72 6b 64 6f 77 6e 20 61 20 48 54 4d 4c 00 49 6e 64 65 66 69 adenas.de.Markdown.a.HTML.Indefi
36020 6e 69 64 6f 00 45 78 63 65 70 63 69 c3 b3 6e 20 6e 6f 20 63 6f 6e 74 72 6f 6c 61 64 61 00 44 65 nido.Excepci..n.no.controlada.De
36040 73 63 6f 6e 6f 63 69 64 6f 00 41 63 74 75 61 6c 69 63 65 20 6c 61 20 62 69 62 6c 69 6f 74 65 63 sconocido.Actualice.la.bibliotec
36060 61 20 64 65 20 7b 3a 64 7d 20 6c 69 62 72 6f 73 e2 80 a6 00 41 63 74 75 61 6c 69 63 65 20 6c 61 a.de.{:d}.libros....Actualice.la
36080 20 62 69 62 6c 69 6f 74 65 63 61 20 64 65 20 7b 3a 64 7d 20 6c 69 62 72 6f 73 e2 80 a6 00 55 74 .biblioteca.de.{:d}.libros....Ut
360a0 69 6c 69 63 65 20 6c 61 20 63 6f 6e 66 69 67 75 72 61 63 69 c3 b3 6e 20 64 65 20 27 4a 75 73 74 ilice.la.configuraci..n.de.'Just
360c0 69 66 69 63 61 63 69 c3 b3 6e 27 00 56 65 72 20 64 61 74 6f 73 20 61 6c 6d 61 63 65 6e 61 64 6f ificaci..n'.Ver.datos.almacenado
360e0 73 20 65 6e 20 6c 61 20 62 61 73 65 20 64 65 20 64 61 74 6f 73 20 64 65 20 6c 61 20 62 69 62 6c s.en.la.base.de.datos.de.la.bibl
36100 69 6f 74 65 63 61 20 70 61 72 61 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 00 56 65 72 ioteca.para.este.complemento.Ver
36120 20 70 72 65 66 65 72 65 6e 63 69 61 73 20 64 65 20 62 69 62 6c 69 6f 74 65 63 61 00 4e 6f 20 70 .preferencias.de.biblioteca.No.p
36140 75 65 64 65 20 63 6f 6e 66 69 67 75 72 61 72 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f uede.configurar.este.complemento
36160 20 61 6e 74 65 73 20 64 65 20 72 65 69 6e 69 63 69 61 72 20 63 61 6c 69 62 72 65 2e 00 44 65 62 .antes.de.reiniciar.calibre..Deb
36180 65 20 65 73 70 65 63 69 66 69 63 61 72 20 75 6e 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 e.especificar.un.nombre.de.archi
361a0 76 6f 20 70 61 72 61 20 67 75 61 72 64 61 72 20 63 6f 6d 6f 2e 00 44 65 62 65 20 65 73 70 65 63 vo.para.guardar.como..Debe.espec
361c0 69 66 69 63 61 72 20 75 6e 20 61 72 63 68 69 76 6f 20 66 75 65 6e 74 65 2e 00 44 65 62 65 20 65 ificar.un.archivo.fuente..Debe.e
361e0 73 70 65 63 69 66 69 63 61 72 20 75 6e 61 20 55 52 4c 20 64 65 20 64 6f 6d 69 6e 69 6f 20 77 65 specificar.una.URL.de.dominio.we
36200 62 00 7b 3a 64 7d 20 6c 69 62 72 6f 73 00 7b 3a 64 7d 20 6c 69 62 72 6f 73 20 28 73 69 6e 20 76 b.{:d}.libros.{:d}.libros.(sin.v
36220 61 6c 6f 72 65 73 29 00 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 72 65 73 6f 00 50 alores).{PLUGIN_NAME}.progreso.P
36240 4b 03 04 14 00 00 00 00 00 3b 70 3f 5c 0f f0 30 db 45 2a 00 00 45 2a 00 00 12 00 00 00 74 72 61 K........;p?\..0.E*..E*......tra
36260 6e 73 6c 61 74 69 6f 6e 73 2f 66 72 2e 6d 6f de 12 04 95 00 00 00 00 7b 00 00 00 1c 00 00 00 f4 nslations/fr.mo........{........
36280 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 cc 07 00 00 14 00 00 00 cd 07 00 00 12 00 00 00 e2 ................................
362a0 07 00 00 14 00 00 00 f5 07 00 00 0d 00 00 00 0a 08 00 00 10 00 00 00 18 08 00 00 17 00 00 00 29 ...............................)
362c0 08 00 00 36 00 00 00 41 08 00 00 6c 00 00 00 78 08 00 00 23 00 00 00 e5 08 00 00 4e 00 00 00 09 ...6...A...l...x...#.......N....
362e0 09 00 00 4d 00 00 00 58 09 00 00 0d 00 00 00 a6 09 00 00 11 00 00 00 b4 09 00 00 11 00 00 00 c6 ...M...X........................
36300 09 00 00 06 00 00 00 d8 09 00 00 13 00 00 00 df 09 00 00 15 00 00 00 f3 09 00 00 1c 00 00 00 09 ................................
36320 0a 00 00 22 00 00 00 26 0a 00 00 18 00 00 00 49 0a 00 00 28 00 00 00 62 0a 00 00 26 00 00 00 8b ..."...&.......I...(...b...&....
36340 0a 00 00 17 00 00 00 b2 0a 00 00 29 00 00 00 ca 0a 00 00 11 00 00 00 f4 0a 00 00 18 00 00 00 06 ...........)....................
36360 0b 00 00 18 00 00 00 1f 0b 00 00 16 00 00 00 38 0b 00 00 53 00 00 00 4f 0b 00 00 09 00 00 00 a3 ...............8...S...O........
36380 0b 00 00 17 00 00 00 ad 0b 00 00 20 00 00 00 c5 0b 00 00 14 00 00 00 e6 0b 00 00 0a 00 00 00 fb ................................
363a0 0b 00 00 0e 00 00 00 06 0c 00 00 14 00 00 00 15 0c 00 00 16 00 00 00 2a 0c 00 00 0d 00 00 00 41 .......................*.......A
363c0 0c 00 00 1d 00 00 00 4f 0c 00 00 19 00 00 00 6d 0c 00 00 37 00 00 00 87 0c 00 00 2d 00 00 00 bf .......O.......m...7.......-....
363e0 0c 00 00 3a 00 00 00 ed 0c 00 00 36 00 00 00 28 0d 00 00 18 00 00 00 5f 0d 00 00 0f 00 00 00 78 ...:.......6...(......._.......x
36400 0d 00 00 09 00 00 00 88 0d 00 00 0a 00 00 00 92 0d 00 00 15 00 00 00 9d 0d 00 00 07 00 00 00 b3 ................................
36420 0d 00 00 40 00 00 00 bb 0d 00 00 0e 00 00 00 fc 0d 00 00 08 00 00 00 0b 0e 00 00 0b 00 00 00 14 ...@............................
36440 0e 00 00 12 00 00 00 20 0e 00 00 0f 00 00 00 33 0e 00 00 09 00 00 00 43 0e 00 00 21 00 00 00 4d ...............3.......C...!...M
36460 0e 00 00 26 00 00 00 6f 0e 00 00 19 00 00 00 96 0e 00 00 1d 00 00 00 b0 0e 00 00 16 00 00 00 ce ...&...o........................
36480 0e 00 00 1e 00 00 00 e5 0e 00 00 10 00 00 00 04 0f 00 00 08 00 00 00 15 0f 00 00 11 00 00 00 1e ................................
364a0 0f 00 00 09 00 00 00 30 0f 00 00 08 00 00 00 3a 0f 00 00 20 00 00 00 43 0f 00 00 11 00 00 00 64 .......0.......:.......C.......d
364c0 0f 00 00 0d 00 00 00 76 0f 00 00 15 00 00 00 84 0f 00 00 1d 00 00 00 9a 0f 00 00 18 00 00 00 b8 .......v........................
364e0 0f 00 00 10 00 00 00 d1 0f 00 00 0d 00 00 00 e2 0f 00 00 14 00 00 00 f0 0f 00 00 10 00 00 00 05 ................................
36500 10 00 00 15 00 00 00 16 10 00 00 29 00 00 00 2c 10 00 00 2b 00 00 00 56 10 00 00 26 00 00 00 82 ...........)...,...+...V...&....
36520 10 00 00 12 00 00 00 a9 10 00 00 10 00 00 00 bc 10 00 00 26 00 00 00 cd 10 00 00 1c 00 00 00 f4 ...................&............
36540 10 00 00 19 00 00 00 11 11 00 00 27 00 00 00 2b 11 00 00 1b 00 00 00 53 11 00 00 18 00 00 00 6f ...........'...+.......S.......o
36560 11 00 00 15 00 00 00 88 11 00 00 24 00 00 00 9e 11 00 00 1f 00 00 00 c3 11 00 00 26 00 00 00 e3 ...........$...............&....
36580 11 00 00 24 00 00 00 0a 12 00 00 1c 00 00 00 2f 12 00 00 21 00 00 00 4c 12 00 00 39 00 00 00 6e ...$.........../...!...L...9...n
365a0 12 00 00 27 00 00 00 a8 12 00 00 0e 00 00 00 d0 12 00 00 0f 00 00 00 df 12 00 00 1e 00 00 00 ef ...'............................
365c0 12 00 00 37 00 00 00 0e 13 00 00 3d 00 00 00 46 13 00 00 6d 00 00 00 84 13 00 00 4a 00 00 00 f2 ...7.......=...F...m.......J....
365e0 13 00 00 2b 00 00 00 3d 14 00 00 09 00 00 00 69 14 00 00 13 00 00 00 73 14 00 00 07 00 00 00 87 ...+...=.......i.......s........
36600 14 00 00 24 00 00 00 8f 14 00 00 24 00 00 00 b4 14 00 00 1f 00 00 00 d9 14 00 00 38 00 00 00 f9 ...$.......$...............8....
36620 14 00 00 18 00 00 00 32 15 00 00 3d 00 00 00 4b 15 00 00 27 00 00 00 89 15 00 00 1f 00 00 00 b1 .......2...=...K...'............
36640 15 00 00 21 00 00 00 d1 15 00 00 0a 00 00 00 f3 15 00 00 16 00 00 00 fe 15 00 00 16 00 00 00 15 ...!............................
36660 16 00 00 60 01 00 00 2c 16 00 00 1d 00 00 00 8d 17 00 00 26 00 00 00 ab 17 00 00 23 00 00 00 d2 ...`...,...........&.......#....
36680 17 00 00 1a 00 00 00 f6 17 00 00 1d 00 00 00 11 18 00 00 28 00 00 00 2f 18 00 00 35 00 00 00 58 ...................(.../...5...X
366a0 18 00 00 97 00 00 00 8e 18 00 00 33 00 00 00 26 19 00 00 5e 00 00 00 5a 19 00 00 5d 00 00 00 b9 ...........3...&...^...Z...]....
366c0 19 00 00 12 00 00 00 17 1a 00 00 13 00 00 00 2a 1a 00 00 1a 00 00 00 3e 1a 00 00 07 00 00 00 59 ...............*.......>.......Y
366e0 1a 00 00 1d 00 00 00 61 1a 00 00 23 00 00 00 7f 1a 00 00 29 00 00 00 a3 1a 00 00 29 00 00 00 cd .......a...#.......).......)....
36700 1a 00 00 18 00 00 00 f7 1a 00 00 36 00 00 00 10 1b 00 00 32 00 00 00 47 1b 00 00 17 00 00 00 7a ...........6.......2...G.......z
36720 1b 00 00 2e 00 00 00 92 1b 00 00 1d 00 00 00 c1 1b 00 00 19 00 00 00 df 1b 00 00 18 00 00 00 f9 ................................
36740 1b 00 00 1b 00 00 00 12 1c 00 00 61 00 00 00 2e 1c 00 00 0d 00 00 00 90 1c 00 00 1f 00 00 00 9e ...........a....................
36760 1c 00 00 27 00 00 00 be 1c 00 00 1c 00 00 00 e6 1c 00 00 11 00 00 00 03 1d 00 00 14 00 00 00 15 ...'............................
36780 1d 00 00 1d 00 00 00 2a 1d 00 00 1e 00 00 00 48 1d 00 00 14 00 00 00 67 1d 00 00 26 00 00 00 7c .......*.......H.......g...&...|
367a0 1d 00 00 19 00 00 00 a3 1d 00 00 3c 00 00 00 bd 1d 00 00 2d 00 00 00 fa 1d 00 00 4f 00 00 00 28 ...........<.......-.......O...(
367c0 1e 00 00 37 00 00 00 78 1e 00 00 1b 00 00 00 b0 1e 00 00 17 00 00 00 cc 1e 00 00 09 00 00 00 e4 ...7...x........................
367e0 1e 00 00 0e 00 00 00 ee 1e 00 00 17 00 00 00 fd 1e 00 00 09 00 00 00 15 1f 00 00 49 00 00 00 1f ...........................I....
36800 1f 00 00 10 00 00 00 69 1f 00 00 11 00 00 00 7a 1f 00 00 14 00 00 00 8c 1f 00 00 12 00 00 00 a1 .......i.......z................
36820 1f 00 00 18 00 00 00 b4 1f 00 00 0b 00 00 00 cd 1f 00 00 24 00 00 00 d9 1f 00 00 32 00 00 00 fe ...................$.......2....
36840 1f 00 00 1c 00 00 00 31 20 00 00 28 00 00 00 4e 20 00 00 20 00 00 00 77 20 00 00 2b 00 00 00 98 .......1...(...N.......w...+....
36860 20 00 00 19 00 00 00 c4 20 00 00 0b 00 00 00 de 20 00 00 19 00 00 00 ea 20 00 00 13 00 00 00 04 ................................
36880 21 00 00 0c 00 00 00 18 21 00 00 2c 00 00 00 25 21 00 00 12 00 00 00 52 21 00 00 0d 00 00 00 65 !.......!..,...%!......R!......e
368a0 21 00 00 15 00 00 00 73 21 00 00 25 00 00 00 89 21 00 00 1c 00 00 00 af 21 00 00 15 00 00 00 cc !......s!..%....!.......!.......
368c0 21 00 00 14 00 00 00 e2 21 00 00 19 00 00 00 f7 21 00 00 19 00 00 00 11 22 00 00 1b 00 00 00 2b !.......!.......!......."......+
368e0 22 00 00 31 00 00 00 47 22 00 00 34 00 00 00 79 22 00 00 41 00 00 00 ae 22 00 00 17 00 00 00 f0 "..1...G"..4...y"..A....".......
36900 22 00 00 18 00 00 00 08 23 00 00 2e 00 00 00 21 23 00 00 20 00 00 00 50 23 00 00 1d 00 00 00 71 ".......#......!#......P#......q
36920 23 00 00 30 00 00 00 8f 23 00 00 21 00 00 00 c0 23 00 00 23 00 00 00 e2 23 00 00 23 00 00 00 06 #..0....#..!....#..#....#..#....
36940 24 00 00 33 00 00 00 2a 24 00 00 2c 00 00 00 5e 24 00 00 35 00 00 00 8b 24 00 00 30 00 00 00 c1 $..3...*$..,...^$..5....$..0....
36960 24 00 00 1e 00 00 00 f2 24 00 00 2a 00 00 00 11 25 00 00 48 00 00 00 3c 25 00 00 2e 00 00 00 85 $.......$..*....%..H...<%.......
36980 25 00 00 11 00 00 00 b4 25 00 00 13 00 00 00 c6 25 00 00 33 00 00 00 da 25 00 00 5a 00 00 00 0e %.......%.......%..3....%..Z....
369a0 26 00 00 3f 00 00 00 69 26 00 00 88 00 00 00 a9 26 00 00 6e 00 00 00 32 27 00 00 41 00 00 00 a1 &..?...i&.......&..n...2'..A....
369c0 27 00 00 0b 00 00 00 e3 27 00 00 15 00 00 00 ef 27 00 00 07 00 00 00 05 28 00 00 33 00 00 00 0d '.......'.......'.......(..3....
369e0 28 00 00 32 00 00 00 41 28 00 00 26 00 00 00 74 28 00 00 5b 00 00 00 9b 28 00 00 2e 00 00 00 f7 (..2...A(..&...t(..[....(.......
36a00 28 00 00 49 00 00 00 26 29 00 00 3b 00 00 00 70 29 00 00 28 00 00 00 ac 29 00 00 29 00 00 00 d5 (..I...&)..;...p)..(....)..)....
36a20 29 00 00 0b 00 00 00 ff 29 00 00 1c 00 00 00 0b 2a 00 00 1c 00 00 00 28 2a 00 00 00 26 43 75 73 ).......).......*......(*...&Cus
36a40 74 6f 6d 69 7a 65 20 70 6c 75 67 69 6e e2 80 a6 00 26 53 61 76 65 20 61 73 20 66 69 6c 65 6e 61 tomize.plugin....&Save.as.filena
36a60 6d 65 3a 00 26 53 65 6c 65 63 74 20 69 6d 61 67 65 20 73 6f 75 72 63 65 00 41 64 64 20 4e 65 77 me:.&Select.image.source.Add.New
36a80 20 49 6d 61 67 65 00 41 64 64 20 4e 65 77 20 49 6d 61 67 65 e2 80 a6 00 41 6c 6c 20 43 53 53 20 .Image.Add.New.Image....All.CSS.
36aa0 72 75 6c 65 73 20 61 72 65 20 6b 65 65 70 2e 00 41 6e 20 69 6d 61 67 65 20 77 69 74 68 20 74 68 rules.are.keep..An.image.with.th
36ac0 69 73 20 6e 61 6d 65 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 20 2d 20 6f 76 65 72 77 72 69 is.name.already.exists.-.overwri
36ae0 74 65 20 69 74 3f 00 41 6e 79 20 73 65 74 74 69 6e 67 73 20 69 6e 20 6f 74 68 65 72 20 6c 69 62 te.it?.Any.settings.in.other.lib
36b00 72 61 72 69 65 73 20 6f 72 20 73 74 6f 72 65 64 20 69 6e 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 raries.or.stored.in.a.JSON.file.
36b20 69 6e 20 79 6f 75 72 20 63 61 6c 69 62 72 65 20 70 6c 75 67 69 6e 73 20 66 6f 6c 64 65 72 20 77 in.your.calibre.plugins.folder.w
36b40 69 6c 6c 20 6e 6f 74 20 62 65 20 74 6f 75 63 68 65 64 2e 00 41 70 70 6c 79 20 74 6f 20 6f 74 68 ill.not.be.touched..Apply.to.oth
36b60 65 72 73 20 63 75 73 74 6f 6d 20 48 54 4d 4c 20 63 6f 6c 75 6d 6e 73 00 41 72 65 20 79 6f 75 20 ers.custom.HTML.columns.Are.you.
36b80 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 79 6f 75 72 20 73 65 74 sure.you.want.to.change.your.set
36ba0 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 69 73 20 70 tings.in.this.library.for.this.p
36bc0 6c 75 67 69 6e 3f 00 41 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 lugin?.Are.you.sure.you.want.to.
36be0 63 6c 65 61 72 20 79 6f 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 62 72 clear.your.settings.in.this.libr
36c00 61 72 79 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 3f 00 41 72 65 20 79 6f 75 20 73 75 72 ary.for.this.plugin?.Are.you.sur
36c20 65 3f 00 42 6f 6f 6b 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 00 43 53 53 20 72 75 6c 65 20 74 6f e?.Book.{:d}.of.{:d}.CSS.rule.to
36c40 20 6b 65 65 70 3a 00 43 61 6e 63 65 6c 00 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 .keep:.Cancel.Cannot.import.imag
36c60 65 00 43 6c 65 61 6e 20 63 61 74 65 67 6f 72 79 20 26 6e 6f 74 65 73 00 43 6c 65 61 6e 20 74 68 e.Clean.category.&notes.Clean.th
36c80 65 20 73 65 6c 65 63 74 65 64 20 26 63 6f 6d 6d 65 6e 74 73 00 43 6c 65 61 72 20 61 6c 6c 20 73 e.selected.&comments.Clear.all.s
36ca0 65 74 74 69 6e 67 73 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 00 43 6f 6d 6d 65 6e 74 73 ettings.for.this.plugin.Comments
36cc0 20 43 6c 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 00 43 6f 6e 76 65 72 74 20 69 6e 20 61 6c 6c 20 .Cleaner.Options.Convert.in.all.
36ce0 63 6f 6d 6d 65 6e 74 73 20 28 6e 6f 74 20 72 65 63 6f 6d 61 6e 64 65 64 29 00 43 6f 6e 76 65 72 comments.(not.recomanded).Conver
36d00 74 20 6f 6e 6c 79 20 66 72 6f 6d 20 61 20 70 6c 61 69 6e 20 74 65 78 74 20 63 6f 6d 6d 65 6e 74 t.only.from.a.plain.text.comment
36d20 00 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 00 43 6f 6e 76 65 72 74 .Converte.to.a.paragraph.Convert
36d40 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 20 62 75 74 20 6b 65 65 70 20 74 68 65 20 62 6f e.to.a.paragraph.but.keep.the.bo
36d60 6c 64 00 43 6f 70 79 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 00 43 6f 75 6c 64 20 6e 6f 74 20 74 ld.Copy.to.clipboard.Could.not.t
36d80 6f 20 6c 61 75 6e 63 68 20 7b 3a 73 7d 00 43 72 65 61 74 65 20 61 20 65 6d 70 74 79 20 70 61 72 o.launch.{:s}.Create.a.empty.par
36da0 61 67 72 61 70 68 00 43 72 65 61 74 65 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 00 43 75 agraph.Create.a.new.paragraph.Cu
36dc0 73 74 6f 6d 20 43 53 53 20 72 75 6c 65 73 20 74 6f 20 6b 65 65 70 20 69 6e 20 61 64 64 69 74 69 stom.CSS.rules.to.keep.in.additi
36de0 6f 6e 20 74 6f 20 74 68 65 20 62 61 73 69 63 20 6f 6e 65 73 2e 20 52 75 6c 65 73 20 73 65 70 61 on.to.the.basic.ones..Rules.sepa
36e00 72 61 74 65 64 20 62 79 20 61 20 73 70 61 63 65 2e 00 43 75 73 74 6f 6d 69 7a 65 00 44 65 6c 65 rated.by.a.space..Customize.Dele
36e20 74 65 20 22 63 6c 61 73 73 22 20 61 74 74 72 69 62 75 74 00 44 65 6c 65 74 65 20 22 69 64 22 20 te."class".attribut.Delete."id".
36e40 61 6e 64 20 22 63 6c 61 73 73 22 20 61 74 74 72 69 62 75 74 00 44 65 6c 65 74 65 20 22 69 64 22 and."class".attribut.Delete."id"
36e60 20 61 74 74 72 69 62 75 74 00 44 65 6c 65 74 65 20 55 52 4c 00 44 65 6c 65 74 65 20 57 65 69 67 .attribut.Delete.URL.Delete.Weig
36e80 68 74 73 00 44 65 6c 65 74 65 20 61 6c 6c 20 61 6c 69 67 6e 6d 65 6e 74 00 44 65 6c 65 74 65 20 hts.Delete.all.alignment.Delete.
36ea0 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 00 44 65 6c 65 74 65 20 69 6d 61 67 65 73 00 44 65 empty.paragraph.Delete.images.De
36ec0 6c 65 74 65 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 69 6e 20 6c 69 73 74 73 00 44 6f 20 6e lete.the.alignment.in.lists.Do.n
36ee0 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 57 65 69 67 68 74 73 00 45 64 69 74 20 74 68 65 20 6b ot.change.the.Weights.Edit.the.k
36f00 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 eyboard.shortcuts.associated.wit
36f20 68 20 74 68 69 73 20 70 6c 75 67 69 6e 00 45 64 69 74 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 66 h.this.plugin.Edit.the.options.f
36f40 6f 72 20 74 68 65 20 6e 6f 74 65 73 20 63 6c 65 61 6e 65 72 20 61 63 74 69 6f 6e 00 45 6e 74 65 or.the.notes.cleaner.action.Ente
36f60 72 20 61 20 74 65 6d 70 6c 61 74 65 20 74 6f 20 74 65 73 74 20 75 73 69 6e 67 20 64 61 74 61 20 r.a.template.to.test.using.data.
36f80 66 72 6f 6d 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 00 46 6f 72 63 65 20 74 68 65 from.the.selected.book.Force.the
36fa0 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 28 72 65 70 6c 61 63 65 20 22 63 65 6e 74 65 72 22 .justification.(replace."center"
36fc0 20 61 6e 64 20 22 72 69 67 68 74 22 29 00 46 72 6f 6d 20 26 77 65 62 20 64 6f 6d 61 69 6e 20 66 .and."right").From.&web.domain.f
36fe0 61 76 69 63 6f 6e 00 46 72 6f 6d 20 2e 70 6e 67 20 26 66 69 6c 65 00 48 65 61 64 69 6e 67 73 3a avicon.From..png.&file.Headings:
37000 00 48 79 70 65 72 6c 69 6e 6b 3a 00 49 44 20 26 20 43 4c 41 53 53 20 61 74 74 72 69 62 75 74 73 .Hyperlink:.ID.&.CLASS.attributs
37020 3a 00 49 6d 61 67 65 73 3a 00 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 66 6f 72 20 69 6e 64 65 :.Images:.Justification.for.inde
37040 74 65 72 6d 69 6e 61 74 65 20 74 65 78 74 20 28 6b 65 65 70 20 22 63 65 6e 74 65 72 22 20 61 6e terminate.text.(keep."center".an
37060 64 20 22 72 69 67 68 74 22 29 00 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 3a 00 4b 65 65 70 20 55 d."right").Justification:.Keep.U
37080 52 4c 00 4b 65 65 70 20 69 6d 61 67 65 73 00 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 RL.Keep.images.Keyboard.shortcut
370a0 73 00 4c 69 73 74 20 61 6c 69 67 6e 6d 65 6e 74 3a 00 4d 61 72 6b 64 6f 77 6e 3a 00 4d 65 72 67 s.List.alignment:.Markdown:.Merg
370c0 65 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 00 4d 75 e.in.a.single.empty.paragraph.Mu
370e0 6c 74 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 ltiple.'Line.Return'.in.a.paragr
37100 61 70 68 3a 00 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 3a 00 4e aph:.Multiple.empty.paragraph:.N
37120 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 61 72 63 68 00 4e 6f 20 o.book.in.the.current.search.No.
37140 62 6f 6f 6b 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 00 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 book.in.the.library.No.book.in.t
37160 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 79 00 4e 6f 20 62 6f 6f 6b 20 73 65 6c 65 63 he.virtual.library.No.book.selec
37180 74 65 64 00 4e 6f 20 62 6f 6f 6b 73 00 4e 6f 20 62 6f 6f 6b 73 20 73 65 6c 65 63 74 65 64 00 4e ted.No.books.No.books.selected.N
371a0 6f 20 63 68 61 6e 67 65 00 4e 6f 20 6e 6f 74 65 73 00 4e 6f 20 6e 6f 74 65 73 20 66 6f 72 20 7b o.change.No.notes.No.notes.for.{
371c0 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 00 4e 6f 74 65 20 7b 3a 64 7d 20 6f 66 20 :d}.selected.books.Note.{:d}.of.
371e0 7b 3a 64 7d 00 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 00 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 {:d}.Notes.Cleaner.Notes.Cleaner
37200 20 4f 70 74 69 6f 6e 73 00 4e 6f 74 65 73 20 66 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 .Options.Notes.for.{:d}.selected
37220 20 62 6f 6f 6b 73 00 4f 70 65 6e 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 00 .books.Open.the.template.editor.
37240 50 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 3a 00 52 65 6d 6f 76 65 20 49 74 61 6c 69 63 00 52 Preferences.for:.Remove.Italic.R
37260 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 72 6f 75 67 68 00 52 65 6d 6f 76 65 20 55 6e 64 65 72 emove.Strikethrough.Remove.Under
37280 6c 69 6e 65 00 52 65 6d 6f 76 65 20 61 6c 6c 20 66 6f 72 6d 61 74 74 69 6e 67 00 52 65 6d 6f 76 line.Remove.all.formatting.Remov
372a0 65 20 74 68 65 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 73 20 61 72 e.the.bold.if.all.paragraphes.ar
372c0 65 20 69 74 00 52 65 6d 6f 76 65 20 74 68 65 20 69 74 61 6c 69 63 20 69 66 20 61 6c 6c 20 70 61 e.it.Remove.the.italic.if.all.pa
372e0 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 00 52 65 6d 6f 76 65 20 74 68 65 20 73 63 72 61 ragraphes.are.it.Remove.the.scra
37300 70 73 20 43 53 53 20 69 6e 20 48 54 4d 4c 20 63 6f 6d 6d 65 6e 74 73 00 52 65 70 6c 61 63 65 20 ps.CSS.in.HTML.comments.Replace.
37320 77 69 74 68 20 73 70 61 63 65 00 52 65 73 74 61 72 74 20 72 65 71 75 69 72 65 64 00 52 6f 75 6e with.space.Restart.required.Roun
37340 64 20 74 68 65 20 57 65 69 67 68 74 73 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 68 75 6e 64 72 d.the.Weights.value.to.the.hundr
37360 65 64 00 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 27 62 6f 6c 64 27 29 00 ed.Round.to.Bold.(value.'bold').
37380 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 36 30 30 29 00 52 75 6e 6e 69 6e Round.to.Bold.(value.600).Runnin
373a0 67 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 72 65 74 75 72 6e 65 64 20 61 6e 20 65 72 72 6f 72 g.the.template.returned.an.error
373c0 3a 00 53 61 76 65 20 5a 49 50 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 61 73 e2 80 a6 00 53 61 :.Save.ZIP.archive.file.as....Sa
373e0 76 65 20 74 68 65 20 4a 53 4f 4e 20 66 69 6c 65 20 61 73 e2 80 a6 00 53 65 6c 65 63 74 20 4e 6f ve.the.JSON.file.as....Select.No
37400 74 65 73 20 74 6f 20 63 6c 65 61 6e 00 53 65 6c 65 63 74 20 61 20 2e 70 6e 67 20 66 69 6c 65 20 tes.to.clean.Select.a..png.file.
37420 66 6f 72 20 74 68 65 20 6d 65 6e 75 20 69 63 6f 6e 00 53 65 6c 65 63 74 20 61 20 4a 53 4f 4e 20 for.the.menu.icon.Select.a.JSON.
37440 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 00 53 65 6c 65 63 74 20 61 20 5a 49 50 20 61 file.to.import....Select.a.ZIP.a
37460 72 63 68 69 76 65 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 00 53 69 6e 67 6c 65 20 rchive.file.to.import....Single.
37480 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 3a 00 53 6f 'Line.Return'.in.a.paragraph:.So
374a0 75 72 63 65 20 69 6d 61 67 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 21 00 53 6f 75 72 63 urce.image.does.not.exist!.Sourc
374c0 65 20 69 6d 61 67 65 20 6d 75 73 74 20 62 65 20 61 20 2e 70 6e 67 20 66 69 6c 65 2e 00 53 75 62 e.image.must.be.a..png.file..Sub
374e0 73 65 74 20 6f 66 20 4e 6f 74 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 65 20 63 75 set.of.Notes.associate.to.the.cu
37500 72 72 65 6e 74 6c 79 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 00 53 75 62 73 65 74 20 6f 66 rrently.selected.books.Subset.of
37520 20 76 61 6c 75 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 65 20 62 6f 6f 6b 73 00 54 .values.associate.to.the.books.T
37540 65 6d 70 6c 61 74 65 20 45 72 72 6f 72 00 54 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 00 54 68 emplate.Error.Template.editor.Th
37560 65 20 63 68 61 6e 67 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 61 70 70 6c 69 65 64 2e 00 54 68 65 e.changes.cannot.be.applied..The
37580 20 73 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 20 73 68 6f 75 6c 64 20 63 6f 6e 73 69 73 74 .save.as.filename.should.consist
375a0 20 6f 66 20 61 20 66 69 6c 65 6e 61 6d 65 20 6f 6e 6c 79 2e 00 54 68 65 20 7b 50 4c 55 47 49 4e .of.a.filename.only..The.{PLUGIN
375c0 5f 4e 41 4d 45 7d 20 70 6c 75 67 69 6e 20 68 61 73 20 65 6e 63 6f 75 6e 74 65 72 20 61 20 75 6e _NAME}.plugin.has.encounter.a.un
375e0 68 61 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 2e 00 54 68 69 73 20 6f 70 65 72 61 74 69 6f handled.exception..This.operatio
37600 6e 20 69 73 20 61 70 70 6c 69 65 64 20 61 66 74 65 72 20 22 4d 75 6c 74 69 70 6c 65 20 27 4c 69 n.is.applied.after."Multiple.'Li
37620 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 22 0a 61 6e 64 20 62 ne.Return'.in.a.paragraph".and.b
37640 65 66 6f 72 65 20 22 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 22 efore."Multiple.empty.paragraph"
37660 00 54 69 74 6c 65 20 69 6d 61 67 65 20 6e 6f 74 20 66 6f 75 6e 64 20 2d 20 79 6f 75 20 6d 75 73 .Title.image.not.found.-.you.mus
37680 74 20 72 65 73 74 61 72 74 20 43 61 6c 69 62 72 65 20 62 65 66 6f 72 65 20 75 73 69 6e 67 20 74 t.restart.Calibre.before.using.t
376a0 68 69 73 20 70 6c 75 67 69 6e 21 00 54 72 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 4d his.plugin!.Try.to.convert.the.M
376c0 61 72 6b 64 6f 77 6e 20 73 74 72 69 6e 67 73 20 74 6f 20 48 54 4d 4c 00 55 6e 64 65 66 69 6e 65 arkdown.strings.to.HTML.Undefine
376e0 64 00 55 6e 68 61 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 00 55 6e 6b 6e 6f 77 6e 00 55 70 d.Unhandled.exception.Unknown.Up
37700 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d 20 62 6f 6f 6b 73 e2 date.the.library.for.{:d}.books.
37720 80 a6 00 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d 20 6e ...Update.the.library.for.{:d}.n
37740 6f 74 65 73 e2 80 a6 00 55 73 65 20 74 68 65 20 27 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 27 20 otes....Use.the.'Justification'.
37760 73 65 74 74 69 6e 67 00 56 69 65 77 20 64 61 74 61 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 setting.View.data.stored.in.the.
37780 6c 69 62 72 61 72 79 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e library.database.for.this.plugin
377a0 00 56 69 65 77 20 6c 69 62 72 61 72 79 20 70 72 65 66 65 72 65 6e 63 65 73 00 59 6f 75 20 63 61 .View.library.preferences.You.ca
377c0 6e 6e 6f 74 20 63 6f 6e 66 69 67 75 72 65 20 74 68 69 73 20 70 6c 75 67 69 6e 20 62 65 66 6f 72 nnot.configure.this.plugin.befor
377e0 65 20 63 61 6c 69 62 72 65 20 69 73 20 72 65 73 74 61 72 74 65 64 2e 00 59 6f 75 20 6d 75 73 74 e.calibre.is.restarted..You.must
37800 20 73 70 65 63 69 66 79 20 61 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 73 61 76 65 20 61 73 2e 00 .specify.a.filename.to.save.as..
37820 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 73 6f 75 72 63 65 20 66 69 6c 65 2e 00 You.must.specify.a.source.file..
37840 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 77 65 62 20 64 6f 6d 61 69 6e 20 75 72 You.must.specify.a.web.domain.ur
37860 6c 00 7b 3a 64 7d 20 62 6f 6f 6b 73 00 7b 3a 64 7d 20 62 6f 6f 6b 73 20 28 6e 6f 20 76 61 6c 75 l.{:d}.books.{:d}.books.(no.valu
37880 65 73 29 00 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 72 65 73 73 00 50 72 6f 6a 65 es).{PLUGIN_NAME}.progress.Proje
378a0 63 74 2d 49 64 2d 56 65 72 73 69 6f 6e 3a 20 0a 50 4f 54 2d 43 72 65 61 74 69 6f 6e 2d 44 61 74 ct-Id-Version:..POT-Creation-Dat
378c0 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 2b 30 32 30 30 0a 50 4f 2d 52 65 76 69 e:.2025-08-28.10:12+0200.PO-Revi
378e0 73 69 6f 6e 2d 44 61 74 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 2b 30 32 30 30 sion-Date:.2025-08-28.10:12+0200
37900 0a 4c 61 73 74 2d 54 72 61 6e 73 6c 61 74 6f 72 3a 20 0a 4c 61 6e 67 75 61 67 65 2d 54 65 61 6d .Last-Translator:..Language-Team
37920 3a 20 0a 4c 61 6e 67 75 61 67 65 3a 20 66 72 0a 4d 49 4d 45 2d 56 65 72 73 69 6f 6e 3a 20 31 2e :..Language:.fr.MIME-Version:.1.
37940 30 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 3b 20 63 68 61 72 0.Content-Type:.text/plain;.char
37960 73 65 74 3d 55 54 46 2d 38 0a 43 6f 6e 74 65 6e 74 2d 54 72 61 6e 73 66 65 72 2d 45 6e 63 6f 64 set=UTF-8.Content-Transfer-Encod
37980 69 6e 67 3a 20 38 62 69 74 0a 50 6c 75 72 61 6c 2d 46 6f 72 6d 73 3a 20 6e 70 6c 75 72 61 6c 73 ing:.8bit.Plural-Forms:.nplurals
379a0 3d 32 3b 20 70 6c 75 72 61 6c 3d 28 6e 20 3e 20 31 29 3b 0a 58 2d 47 65 6e 65 72 61 74 6f 72 3a =2;.plural=(n.>.1);.X-Generator:
379c0 20 50 6f 65 64 69 74 20 33 2e 35 0a 58 2d 50 6f 65 64 69 74 2d 42 61 73 65 70 61 74 68 3a 20 2e .Poedit.3.5.X-Poedit-Basepath:..
379e0 2e 0a 58 2d 50 6f 65 64 69 74 2d 53 65 61 72 63 68 50 61 74 68 2d 30 3a 20 2e 0a 00 26 50 65 72 ..X-Poedit-SearchPath-0:....&Per
37a00 73 6f 6e 6e 61 6c 69 73 65 72 20 6c 27 65 78 74 65 6e 73 69 6f 6e e2 80 a6 00 26 45 6e 72 65 67 sonnaliser.l'extension....&Enreg
37a20 69 74 72 65 6d 65 6e 74 20 63 6f 6d 6d 65 20 6e 6f 6d 20 64 65 20 66 69 63 68 69 65 72 c2 a0 3a itrement.comme.nom.de.fichier..:
37a40 00 26 53 c3 a9 6c 65 63 74 69 6f 6e 6e 65 72 20 6c 61 20 73 6f 75 72 63 65 20 64 65 20 6c 27 69 .&S..lectionner.la.source.de.l'i
37a60 6d 61 67 65 00 41 6a 6f 75 74 65 72 20 75 6e 65 20 6e 6f 75 76 65 6c 6c 65 20 69 6d 61 67 65 00 mage.Ajouter.une.nouvelle.image.
37a80 41 6a 6f 75 74 65 72 20 75 6e 65 20 6e 6f 75 76 65 6c 6c 65 20 69 6d 61 67 65 e2 80 a6 00 54 6f Ajouter.une.nouvelle.image....To
37aa0 75 74 65 73 20 6c 65 73 20 72 c3 a8 67 6c 65 73 20 43 53 53 20 73 6f 6e 74 20 63 6f 6e 73 65 72 utes.les.r..gles.CSS.sont.conser
37ac0 76 c3 a9 65 73 2e 00 55 6e 65 20 69 6d 61 67 65 20 70 6f 72 74 61 6e 74 20 63 65 20 6e 6f 6d 20 v..es..Une.image.portant.ce.nom.
37ae0 65 78 69 73 74 65 20 64 c3 a9 6a c3 a0 2c 20 6c 27 c3 a9 63 72 61 73 65 72 c2 a0 3f 00 4c 65 73 existe.d..j..,.l'..craser..?.Les
37b00 20 70 61 72 61 6d c3 a8 74 72 65 73 20 70 72 c3 a9 73 65 6e 74 73 20 64 61 6e 73 20 64 27 61 75 .param..tres.pr..sents.dans.d'au
37b20 74 72 65 73 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 73 20 6f 75 20 73 74 6f 63 6b c3 a9 73 20 tres.biblioth..ques.ou.stock..s.
37b40 64 61 6e 73 20 75 6e 20 66 69 63 68 69 65 72 20 4a 53 4f 4e 20 64 61 6e 73 20 6c 65 20 64 6f 73 dans.un.fichier.JSON.dans.le.dos
37b60 73 69 65 72 20 64 65 73 20 70 6c 75 67 69 6e 73 20 64 65 20 43 61 6c 69 62 72 65 20 6e 65 20 73 sier.des.plugins.de.Calibre.ne.s
37b80 65 72 6f 6e 74 20 70 61 73 20 6d 6f 64 69 66 69 c3 a9 73 2e 00 41 70 70 6c 69 71 75 65 72 20 c3 eront.pas.modifi..s..Appliquer..
37ba0 a0 20 64 27 61 75 74 72 65 73 20 63 6f 6c 6f 6e 6e 65 73 20 48 54 4d 4c 20 70 65 72 73 6f 6e 6e ..d'autres.colonnes.HTML.personn
37bc0 61 6c 69 73 c3 a9 65 73 00 c3 8a 74 65 73 2d 76 6f 75 73 20 73 c3 bb 72 20 64 65 20 76 6f 75 6c alis..es...tes-vous.s..r.de.voul
37be0 6f 69 72 20 6d 6f 64 69 66 69 65 72 20 76 6f 73 20 70 61 72 61 6d c3 a8 74 72 65 73 20 64 61 6e oir.modifier.vos.param..tres.dan
37c00 73 20 63 65 74 74 65 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 20 63 65 20 70 6c s.cette.biblioth..que.pour.ce.pl
37c20 75 67 69 6e c2 a0 3f 00 c3 8a 74 65 73 2d 76 6f 75 73 20 73 c3 bb 72 20 64 65 20 76 6f 75 6c 6f ugin..?...tes-vous.s..r.de.voulo
37c40 69 72 20 65 66 66 61 63 65 72 20 76 6f 73 20 70 61 72 61 6d c3 a8 74 72 65 73 20 64 61 6e 73 20 ir.effacer.vos.param..tres.dans.
37c60 63 65 74 74 65 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 20 63 65 20 70 6c 75 67 cette.biblioth..que.pour.ce.plug
37c80 69 6e c2 a0 3f 00 c3 8a 74 65 73 2d 76 6f 75 73 20 73 c3 bb 72 c2 a0 3f 00 4c 69 76 72 65 20 7b in..?...tes-vous.s..r..?.Livre.{
37ca0 3a 64 7d 20 73 75 72 20 7b 3a 64 7d 00 52 c3 a8 67 6c 65 73 20 43 53 53 20 61 20 63 6f 6e 73 65 :d}.sur.{:d}.R..gles.CSS.a.conse
37cc0 72 76 65 72 c2 a0 3a 00 41 6e 6e 75 6c 65 72 00 49 6d 70 6f 73 73 69 62 6c 65 20 64 27 69 6d 70 rver..:.Annuler.Impossible.d'imp
37ce0 6f 72 74 65 72 20 6c 27 69 6d 61 67 65 00 4e 65 74 74 6f 79 65 72 20 6c 65 73 20 26 6e 6f 74 65 orter.l'image.Nettoyer.les.&note
37d00 73 20 64 65 73 20 63 61 74 c3 a9 67 6f 72 69 65 73 00 4e 65 74 74 6f 79 65 72 20 6c 65 73 20 26 s.des.cat..gories.Nettoyer.les.&
37d20 63 6f 6d 6d 65 6e 74 61 69 72 65 73 20 73 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 73 00 45 66 66 61 commentaires.s..lectionn..s.Effa
37d40 63 65 72 20 74 6f 75 73 20 6c 65 73 20 70 61 72 61 6d c3 a8 74 72 65 73 20 64 65 20 63 65 20 70 cer.tous.les.param..tres.de.ce.p
37d60 6c 75 67 69 6e 00 4f 70 74 69 6f 6e 73 20 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 00 43 lugin.Options.Comments.Cleaner.C
37d80 6f 6e 76 65 72 74 69 72 20 64 61 6e 73 20 74 6f 75 73 20 6c 65 73 20 63 6f 6d 6d 65 6e 74 61 69 onvertir.dans.tous.les.commentai
37da0 72 65 73 20 28 6e 6f 6e 20 72 65 63 6f 6d 6d 61 6e 64 c3 a9 29 00 43 6f 6e 76 65 72 74 69 72 20 res.(non.recommand..).Convertir.
37dc0 75 6e 69 71 75 6d 65 6e 74 20 6c 65 73 20 63 6f 6d 6d 65 6e 74 61 69 72 65 73 20 65 6e 20 74 65 uniqument.les.commentaires.en.te
37de0 78 74 65 20 62 72 75 74 00 43 6f 6e 76 65 72 74 69 72 20 65 6e 20 70 61 72 61 67 72 61 70 68 65 xte.brut.Convertir.en.paragraphe
37e00 00 43 6f 6e 76 65 72 74 69 72 20 65 6e 20 70 61 72 61 67 72 61 70 68 65 20 6d 61 69 73 20 63 6f .Convertir.en.paragraphe.mais.co
37e20 6e 73 65 72 76 65 72 20 6c 65 20 67 72 61 73 00 43 6f 70 69 65 72 20 64 61 6e 73 20 6c 65 20 70 nserver.le.gras.Copier.dans.le.p
37e40 72 65 73 73 65 2d 70 61 70 69 65 72 73 00 49 6d 70 6f 73 73 69 62 6c 65 20 64 65 20 6c 61 6e 63 resse-papiers.Impossible.de.lanc
37e60 65 72 20 7b 3a 73 7d 00 43 72 c3 a9 65 20 75 6e 20 70 61 72 61 67 72 61 70 68 65 20 76 69 64 65 er.{:s}.Cr..e.un.paragraphe.vide
37e80 00 43 72 c3 a9 65 20 75 6e 20 6e 6f 75 76 65 61 75 20 70 61 72 61 67 72 61 70 68 65 00 52 c3 a8 .Cr..e.un.nouveau.paragraphe.R..
37ea0 67 6c 65 73 20 43 53 53 20 70 65 72 73 6f 6e 6e 61 6c 69 73 c3 a9 73 20 c3 a0 20 63 6f 6e 73 65 gles.CSS.personnalis..s....conse
37ec0 72 76 65 72 20 65 6e 20 70 6c 75 73 20 64 65 20 63 65 6c 6c 65 20 64 65 20 62 61 73 65 2e 20 52 rver.en.plus.de.celle.de.base..R
37ee0 c3 a8 67 6c 65 73 20 73 c3 a9 70 61 72 65 72 20 70 61 72 20 75 6e 20 65 73 70 61 63 65 2e 00 50 ..gles.s..parer.par.un.espace..P
37f00 65 72 73 6f 6e 6e 61 6c 69 73 65 72 00 53 75 70 70 72 69 6d 65 72 20 6c 65 73 20 61 74 74 72 69 ersonnaliser.Supprimer.les.attri
37f20 62 75 74 73 20 22 63 6c 61 73 73 22 00 53 75 70 70 72 69 6d 65 72 20 6c 65 73 20 61 74 74 72 69 buts."class".Supprimer.les.attri
37f40 62 75 74 73 20 22 63 6c 61 73 73 22 20 65 74 20 22 69 64 22 00 53 75 70 70 72 69 6d 65 72 20 6c buts."class".et."id".Supprimer.l
37f60 65 73 20 61 74 74 72 69 62 75 74 73 20 22 69 64 22 00 53 75 70 70 72 69 6d 65 72 20 6c 65 73 20 es.attributs."id".Supprimer.les.
37f80 55 52 4c 00 53 75 70 70 72 69 6d 65 72 20 6c 61 20 47 72 61 69 73 73 65 00 53 75 70 70 72 69 6d URL.Supprimer.la.Graisse.Supprim
37fa0 65 72 20 74 6f 75 73 20 6c 65 73 20 61 6c 69 67 6e 65 6d 65 6e 74 00 53 75 70 70 72 69 6d 65 72 er.tous.les.alignement.Supprimer
37fc0 20 6c 65 73 20 70 61 72 61 67 72 61 70 68 65 73 20 76 69 64 65 00 53 75 70 70 72 69 6d 65 72 20 .les.paragraphes.vide.Supprimer.
37fe0 6c 65 73 20 69 6d 61 67 65 73 00 53 75 70 70 72 69 6d 65 72 20 6c 27 61 6c 69 67 6e 65 6d 65 6e les.images.Supprimer.l'alignemen
38000 74 20 64 61 6e 73 20 6c 65 73 20 6c 69 73 74 65 73 00 4e 65 20 70 61 73 20 63 68 61 6e 67 65 72 t.dans.les.listes.Ne.pas.changer
38020 20 6c 61 20 47 72 61 69 73 73 65 00 4d 6f 64 69 66 69 65 72 20 6c 65 73 20 72 61 63 63 6f 75 72 .la.Graisse.Modifier.les.raccour
38040 63 69 73 20 63 6c 61 76 69 65 72 20 61 73 73 6f 63 69 c3 a9 73 20 c3 a0 20 63 65 74 74 65 20 65 cis.clavier.associ..s....cette.e
38060 78 74 65 6e 73 69 6f 6e 00 45 64 69 74 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 74 68 xtension.Edit.the.options.for.th
38080 65 20 6e 6f 74 65 73 20 63 6c 65 61 6e 65 72 20 61 63 74 69 6f 6e 00 53 61 69 73 69 73 73 65 7a e.notes.cleaner.action.Saisissez
380a0 20 75 6e 20 6d 6f 64 c3 a8 6c 65 20 c3 a0 20 74 65 73 74 65 72 20 65 6e 20 75 74 69 6c 69 73 61 .un.mod..le....tester.en.utilisa
380c0 6e 74 20 6c 65 73 20 64 6f 6e 6e c3 a9 65 73 20 64 75 20 6c 69 76 72 65 20 73 c3 a9 6c 65 63 74 nt.les.donn..es.du.livre.s..lect
380e0 69 6f 6e 6e c3 a9 00 46 6f 72 63 65 72 20 6c 61 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 28 ionn...Forcer.la.justification.(
38100 72 65 6d 70 6c 61 63 65 72 20 22 63 65 6e 74 65 72 22 20 65 74 20 22 72 69 67 68 74 22 29 00 44 remplacer."center".et."right").D
38120 65 70 75 69 73 20 66 61 76 69 63 6f 6e 20 64 65 20 73 69 74 65 20 26 77 65 62 00 44 65 70 75 69 epuis.favicon.de.site.&web.Depui
38140 73 20 75 6e 20 26 66 69 63 68 69 65 72 20 2e 70 6e 67 00 54 69 74 72 65 73 c2 a0 3a 00 48 79 70 s.un.&fichier..png.Titres..:.Hyp
38160 65 72 2d 6c 69 65 6e 73 c2 a0 3a 00 41 74 74 72 69 62 75 74 73 20 49 44 20 26 20 43 4c 41 53 53 er-liens..:.Attributs.ID.&.CLASS
38180 c2 a0 3a 00 49 6d 61 67 65 73 c2 a0 3a 00 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 70 6f 75 72 ..:.Images..:.Justification.pour
381a0 20 6c 65 20 74 65 78 74 65 20 69 6e 64 c3 a9 74 65 72 6d 69 6e c3 a9 20 28 63 6f 6e 73 65 72 76 .le.texte.ind..termin...(conserv
381c0 65 72 20 22 63 65 6e 74 65 72 22 20 65 74 20 22 72 69 67 68 74 22 29 00 4a 75 73 74 69 66 69 63 er."center".et."right").Justific
381e0 61 74 69 6f 6e c2 a0 3a 00 43 6f 6e 73 65 72 76 65 72 20 6c 65 73 20 55 52 4c 00 43 6f 6e 73 65 ation..:.Conserver.les.URL.Conse
38200 72 76 65 72 20 6c 65 73 20 69 6d 61 67 65 73 00 52 61 63 63 6f 75 72 63 69 73 20 63 6c 61 76 69 rver.les.images.Raccourcis.clavi
38220 65 72 00 41 6c 69 67 6e 65 6d 65 6e 74 20 64 65 73 20 6c 69 73 74 65 73 c2 a0 3a 00 4d 61 72 6b er.Alignement.des.listes..:.Mark
38240 64 6f 77 6e c2 a0 3a 00 46 75 73 69 6f 6e 6e 65 72 20 65 6e 20 75 6e 20 73 65 75 6c 20 70 61 72 down..:.Fusionner.en.un.seul.par
38260 61 67 72 61 70 68 65 20 76 69 64 65 00 4d 75 6c 74 69 70 6c 65 20 22 52 65 74 6f 75 72 20 61 20 agraphe.vide.Multiple."Retour.a.
38280 6c 61 20 6c 69 67 6e 65 22 20 64 61 6e 73 20 75 6e 20 70 61 72 61 67 72 61 70 68 65 c2 a0 3a 00 la.ligne".dans.un.paragraphe..:.
382a0 4d 75 6c 74 69 70 6c 65 20 70 61 72 61 67 72 61 70 68 65 73 20 76 69 64 65 c2 a0 3a 00 50 61 73 Multiple.paragraphes.vide..:.Pas
382c0 20 64 65 20 6c 69 76 72 65 73 20 64 61 6e 73 20 6c 61 20 72 65 63 68 65 72 63 68 65 20 61 63 74 .de.livres.dans.la.recherche.act
382e0 75 65 6c 6c 65 00 50 61 73 20 64 65 20 6c 69 76 72 65 73 20 64 61 6e 73 20 62 69 62 6c 69 6f 74 uelle.Pas.de.livres.dans.bibliot
38300 68 c3 a8 71 75 65 00 50 61 73 20 64 65 20 6c 69 76 72 65 73 20 64 61 6e 73 20 6c 61 20 62 69 62 h..que.Pas.de.livres.dans.la.bib
38320 6c 69 6f 74 68 c3 a8 71 75 65 20 76 69 72 74 75 65 6c 00 41 75 63 75 6e 20 6c 69 76 72 65 20 73 lioth..que.virtuel.Aucun.livre.s
38340 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 00 41 75 63 75 6e 20 6c 69 76 72 65 00 41 75 63 75 6e 20 6c ..lectionn...Aucun.livre.Aucun.l
38360 69 76 72 65 20 73 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 00 41 75 63 75 6e 65 20 6d 6f 64 69 66 69 ivre.s..lectionn...Aucune.modifi
38380 63 61 74 69 6f 6e 00 41 75 63 75 6e 65 20 6e 6f 74 65 73 00 50 61 73 20 64 65 20 6e 6f 74 65 73 cation.Aucune.notes.Pas.de.notes
383a0 20 70 6f 75 72 20 7b 3a 64 7d 20 6c 69 76 72 65 73 20 73 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 73 .pour.{:d}.livres.s..lectionn..s
383c0 00 4e 6f 74 65 20 7b 3a 64 7d 20 73 75 72 20 7b 3a 64 7d 00 4e 6f 74 65 73 20 43 6c 65 61 6e 65 .Note.{:d}.sur.{:d}.Notes.Cleane
383e0 72 00 4f 70 74 69 6f 6e 73 20 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 00 4e 6f 74 65 73 20 70 6f r.Options.Notes.Cleaner.Notes.po
38400 75 72 20 7b 3a 64 7d 20 6c 69 76 72 65 73 20 73 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 73 00 4f 75 ur.{:d}.livres.s..lectionn..s.Ou
38420 76 72 69 72 20 6c 27 c3 a9 64 69 74 65 75 72 20 64 65 20 6d 6f 64 c3 a8 6c 65 00 50 72 c3 a9 66 vrir.l'..diteur.de.mod..le.Pr..f
38440 c3 a9 72 65 6e 63 65 73 20 70 6f 75 72 c2 a0 3a 00 53 75 70 70 72 69 6d 65 72 20 6c 27 49 74 61 ..rences.pour..:.Supprimer.l'Ita
38460 6c 69 71 75 65 00 53 75 70 70 72 69 6d 65 72 20 6c 65 20 74 65 78 74 65 20 62 61 72 72 c3 a9 00 lique.Supprimer.le.texte.barr...
38480 53 75 70 70 72 69 6d 65 72 20 6c 65 20 73 6f 75 6c 69 67 6e 65 6d 65 6e 74 00 45 66 66 61 63 65 Supprimer.le.soulignement.Efface
384a0 72 20 74 6f 75 74 65 20 6d 69 73 65 20 65 6e 20 66 6f 72 6d 65 00 53 75 70 70 72 69 6d 65 72 20 r.toute.mise.en.forme.Supprimer.
384c0 6c 65 20 67 72 61 73 20 73 69 20 74 6f 75 73 20 6c 65 73 20 70 61 72 61 67 72 61 70 68 65 73 20 le.gras.si.tous.les.paragraphes.
384e0 6c 65 20 73 6f 6e 74 00 53 75 70 70 72 69 6d 65 72 20 6c 27 69 74 61 6c 69 71 75 65 20 73 69 20 le.sont.Supprimer.l'italique.si.
38500 74 6f 75 73 20 6c 65 73 20 70 61 72 61 67 72 61 70 68 65 73 20 6c 65 20 73 6f 6e 74 00 53 75 70 tous.les.paragraphes.le.sont.Sup
38520 70 72 69 6d 65 20 6c 65 73 20 72 c3 a9 67 6c 65 73 20 43 53 53 20 69 6e 64 c3 a9 73 69 72 61 62 prime.les.r..gles.CSS.ind..sirab
38540 6c 65 73 20 64 61 6e 73 20 6c 65 73 20 63 6f 6d 6d 65 6e 74 61 69 72 65 73 20 48 54 4d 4c 00 52 les.dans.les.commentaires.HTML.R
38560 65 6d 70 6c 61 63 65 72 20 70 61 72 20 75 6e 20 65 73 70 61 63 65 00 52 65 64 c3 a9 6d 61 72 72 emplacer.par.un.espace.Red..marr
38580 61 67 65 20 6e c3 a9 63 65 73 73 61 69 72 65 00 41 72 72 6f 6e 64 69 72 20 6c 61 20 76 61 6c 65 age.n..cessaire.Arrondir.la.vale
385a0 75 72 20 64 65 20 6c 61 20 47 72 61 69 73 73 65 20 61 20 6c 61 20 63 65 6e 74 61 69 6e 65 00 41 ur.de.la.Graisse.a.la.centaine.A
385c0 72 72 6f 6e 64 69 72 20 61 75 20 47 72 61 73 20 28 76 61 6c 65 75 72 20 22 62 6f 6c 64 22 29 00 rrondir.au.Gras.(valeur."bold").
385e0 41 72 72 6f 6e 64 69 72 20 61 75 20 47 72 61 73 20 28 76 61 6c 65 75 72 20 36 30 30 29 00 4c 27 Arrondir.au.Gras.(valeur.600).L'
38600 65 78 c3 a9 63 75 74 69 6f 6e 20 64 75 20 6d 6f 64 c3 a8 6c 65 20 61 20 72 65 6e 76 6f 79 c3 a9 ex..cution.du.mod..le.a.renvoy..
38620 20 75 6e 65 20 65 72 72 65 75 72 c2 a0 3a 00 45 6e 72 65 67 69 73 74 72 65 72 20 6c 27 61 72 63 .une.erreur..:.Enregistrer.l'arc
38640 68 69 76 65 20 5a 49 50 20 73 6f 75 73 e2 80 a6 00 45 6e 72 65 67 69 73 74 72 65 72 20 6c 65 20 hive.ZIP.sous....Enregistrer.le.
38660 66 69 63 68 69 65 72 20 4a 53 4f 4e 20 73 6f 75 73 e2 80 a6 00 53 c3 a9 6c 65 63 74 69 6f 6e 6e fichier.JSON.sous....S..lectionn
38680 65 72 20 6c 65 73 20 6e 6f 74 65 73 20 c3 a0 20 6e 65 74 74 6f 79 65 72 00 53 c3 a9 6c 65 63 74 er.les.notes....nettoyer.S..lect
386a0 69 6f 6e 6e 65 72 20 75 6e 20 66 69 63 68 69 65 72 20 2e 70 6e 67 20 70 6f 75 72 20 6c 27 69 63 ionner.un.fichier..png.pour.l'ic
386c0 c3 b4 6e 65 20 64 75 20 6d 65 6e 75 00 53 c3 a9 6c 65 63 74 69 6f 6e 6e 65 7a 20 75 6e 20 66 69 ..ne.du.menu.S..lectionnez.un.fi
386e0 63 68 69 65 72 20 4a 53 4f 4e 20 c3 a0 20 69 6d 70 6f 72 74 65 72 e2 80 a6 00 53 c3 a9 6c 65 63 chier.JSON....importer....S..lec
38700 74 69 6f 6e 6e 65 7a 20 75 6e 20 66 69 63 68 69 65 72 20 64 27 61 72 63 68 69 76 65 20 5a 49 50 tionnez.un.fichier.d'archive.ZIP
38720 20 c3 a0 20 69 6d 70 6f 72 74 65 72 e2 80 a6 00 53 69 6d 70 6c 65 20 22 52 65 74 6f 75 72 20 61 ....importer....Simple."Retour.a
38740 20 6c 61 20 6c 69 67 6e 65 22 20 64 61 6e 73 20 75 6e 20 70 61 72 61 67 72 61 70 68 65 c2 a0 3a .la.ligne".dans.un.paragraphe..:
38760 00 4c 27 69 6d 61 67 65 20 73 6f 75 72 63 65 20 6e 27 65 78 69 73 74 65 20 70 61 73 c2 a0 21 00 .L'image.source.n'existe.pas..!.
38780 4c 27 69 6d 61 67 65 20 73 6f 75 72 63 65 20 64 6f 69 74 20 c3 aa 74 72 65 20 75 6e 20 66 69 63 L'image.source.doit...tre.un.fic
387a0 68 69 65 72 20 2e 70 6e 67 2e 00 53 6f 75 73 2d 65 6e 73 65 6d 62 6c 65 20 64 65 20 6e 6f 74 65 hier..png..Sous-ensemble.de.note
387c0 73 20 61 73 73 6f 63 69 c3 a9 65 73 20 61 75 78 20 6c 69 76 72 65 73 20 61 63 74 75 65 6c 6c 65 s.associ..es.aux.livres.actuelle
387e0 6d 65 6e 74 20 73 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 73 00 53 6f 75 73 2d 65 6e 73 65 6d 62 6c ment.s..lectionn..s.Sous-ensembl
38800 65 20 64 65 20 76 61 6c 65 75 72 73 20 61 73 73 6f 63 69 c3 a9 65 73 20 61 75 78 20 6c 69 76 72 e.de.valeurs.associ..es.aux.livr
38820 65 73 00 45 72 72 65 75 72 20 64 65 20 6d 6f 64 c3 a8 6c 65 00 c3 89 64 69 74 65 75 72 20 64 65 es.Erreur.de.mod..le...diteur.de
38840 20 6d 6f 64 c3 a8 6c 65 00 4c 65 73 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 6e 65 20 70 65 .mod..le.Les.modifications.ne.pe
38860 75 76 65 6e 74 20 70 61 73 20 c3 aa 74 72 65 20 61 70 70 6c 69 71 75 c3 a9 65 73 2e 00 4c 27 65 uvent.pas...tre.appliqu..es..L'e
38880 6e 72 65 67 69 74 72 65 6d 65 6e 74 20 65 6e 20 74 61 6e 74 20 71 75 65 20 6e 6f 6d 20 64 65 20 nregitrement.en.tant.que.nom.de.
388a0 66 69 63 68 69 65 72 20 64 6f 69 74 20 63 6f 6e 73 69 73 74 65 72 20 75 6e 69 71 75 65 6d 65 6e fichier.doit.consister.uniquemen
388c0 74 20 65 6e 20 75 6e 20 6e 6f 6d 20 64 65 20 66 69 63 68 69 65 72 2e 00 4c 65 20 70 6c 75 67 69 t.en.un.nom.de.fichier..Le.plugi
388e0 6e 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 61 20 72 65 6e 63 6f 6e 74 72 c3 a9 20 75 6e 65 n.{PLUGIN_NAME}.a.rencontr...une
38900 20 65 78 63 65 70 74 69 6f 6e 20 6e 6f 6e 20 67 c3 a9 72 c3 a9 65 2e 00 43 65 74 74 65 20 6f 70 .exception.non.g..r..e..Cette.op
38920 c3 a9 72 61 74 69 6f 6e 20 65 73 74 20 61 70 70 6c 69 71 75 c3 a9 20 61 70 72 c3 a9 73 20 c2 ab ..ration.est.appliqu...apr..s...
38940 c2 a0 4d 75 6c 74 69 70 6c 65 20 22 52 65 74 6f 75 72 20 61 20 6c 61 20 6c 69 67 6e 65 22 20 64 ..Multiple."Retour.a.la.ligne".d
38960 61 6e 73 20 75 6e 20 70 61 72 61 67 72 61 70 68 65 c2 a0 c2 bb 0a 65 74 20 61 76 61 6e 74 20 c2 ans.un.paragraphe.....et.avant..
38980 ab c2 a0 4d 75 6c 74 69 70 6c 65 20 70 61 72 61 67 72 61 70 68 65 73 20 76 69 64 65 c2 a0 c2 bb ...Multiple.paragraphes.vide....
389a0 00 4c 27 69 6d 61 67 65 20 64 27 69 63 6f 6e 65 20 6e 27 61 20 70 61 73 20 c3 a9 74 61 69 74 20 .L'image.d'icone.n'a.pas...tait.
389c0 74 72 6f 75 76 c3 a9 65 20 2d 20 76 6f 75 73 20 64 65 76 72 69 65 7a 20 6d 69 65 75 78 20 72 65 trouv..e.-.vous.devriez.mieux.re
389e0 64 c3 a9 6d 61 72 72 65 72 20 43 61 6c 69 62 72 65 20 61 76 61 6e 74 20 64 27 75 74 69 6c 69 73 d..marrer.Calibre.avant.d'utilis
38a00 65 72 20 63 65 20 70 6c 75 67 69 6e c2 a0 21 00 45 73 73 61 79 65 72 20 64 65 20 63 6f 6e 76 65 er.ce.plugin..!.Essayer.de.conve
38a20 72 74 69 72 20 6c 65 73 20 63 68 61 c3 ae 6e 65 73 20 64 65 20 63 61 72 61 63 74 c3 a8 72 65 73 rtir.les.cha..nes.de.caract..res
38a40 20 4d 61 72 6b 64 6f 77 6e 20 65 6e 20 48 54 4d 4c 00 4e 6f 6e 20 64 c3 a9 66 69 6e 69 00 45 78 .Markdown.en.HTML.Non.d..fini.Ex
38a60 63 65 70 74 69 6f 6e 20 6e 6f 6e 20 67 c3 a9 72 c3 a9 65 00 49 6e 63 6f 6e 75 65 00 4d 69 73 65 ception.non.g..r..e.Inconue.Mise
38a80 20 61 20 6a 6f 75 72 20 64 65 20 6c 61 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 .a.jour.de.la.biblioth..que.pour
38aa0 20 7b 3a 64 7d 20 6c 69 76 72 65 73 e2 80 a6 00 4d 69 73 65 20 61 20 6a 6f 75 72 20 64 65 20 6c .{:d}.livres....Mise.a.jour.de.l
38ac0 61 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 20 7b 3a 64 7d 20 6e 6f 74 65 73 e2 a.biblioth..que.pour.{:d}.notes.
38ae0 80 a6 00 55 74 69 6c 69 73 65 7a 20 6c 65 20 70 61 72 61 6d c3 a8 74 72 65 20 22 4a 75 73 74 69 ...Utilisez.le.param..tre."Justi
38b00 66 69 63 61 74 69 6f 6e 22 00 41 66 66 69 63 68 65 72 20 6c 65 73 20 64 6f 6e 6e c3 a9 65 73 20 fication".Afficher.les.donn..es.
38b20 73 74 6f 63 6b c3 a9 65 73 20 64 61 6e 73 20 6c 61 20 62 61 73 65 20 64 65 20 64 6f 6e 6e c3 a9 stock..es.dans.la.base.de.donn..
38b40 65 73 20 64 65 20 6c 61 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 20 63 65 20 70 es.de.la.biblioth..que.pour.ce.p
38b60 6c 75 67 69 6e 00 41 66 66 69 63 68 65 72 20 6c 65 73 20 70 72 c3 a9 66 c3 a9 72 65 6e 63 65 73 lugin.Afficher.les.pr..f..rences
38b80 20 64 65 20 6c 61 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 00 56 6f 75 73 20 6e 65 20 70 6f 75 .de.la.biblioth..que.Vous.ne.pou
38ba0 76 65 7a 20 70 61 73 20 63 6f 6e 66 69 67 75 72 65 72 20 63 65 20 70 6c 75 67 69 6e 20 61 76 61 vez.pas.configurer.ce.plugin.ava
38bc0 6e 74 20 6c 65 20 72 65 64 c3 a9 6d 61 72 72 61 67 65 20 64 65 20 43 61 6c 69 62 72 65 2e 00 56 nt.le.red..marrage.de.Calibre..V
38be0 6f 75 73 20 64 65 76 65 7a 20 73 70 c3 a9 63 69 66 69 65 72 20 75 6e 20 6e 6f 6d 20 64 65 20 66 ous.devez.sp..cifier.un.nom.de.f
38c00 69 63 68 69 65 72 20 70 6f 75 72 20 6c 27 65 6e 72 65 67 69 73 74 72 65 72 2e 00 56 6f 75 73 20 ichier.pour.l'enregistrer..Vous.
38c20 64 65 76 65 7a 20 73 70 c3 a9 63 69 66 69 65 72 20 75 6e 20 66 69 63 68 69 65 72 20 73 6f 75 72 devez.sp..cifier.un.fichier.sour
38c40 63 65 2e 00 56 6f 75 73 20 64 65 76 65 7a 20 73 70 c3 a9 63 69 66 69 65 72 20 75 6e 65 20 75 72 ce..Vous.devez.sp..cifier.une.ur
38c60 6c 20 64 65 20 73 69 74 65 20 77 65 62 00 7b 3a 64 7d 20 6c 69 76 72 65 73 00 7b 3a 64 7d 20 6c l.de.site.web.{:d}.livres.{:d}.l
38c80 69 76 72 65 73 20 28 70 61 73 20 64 65 20 76 61 6c 65 75 72 73 29 00 50 72 6f 67 72 65 73 73 69 ivres.(pas.de.valeurs).Progressi
38ca0 6f 6e 20 64 65 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 00 50 4b 03 04 14 00 00 00 00 00 87 51 on.de.{PLUGIN_NAME}.PK.........Q
38cc0 1c 5b ce fd 47 4a 2f 37 00 00 2f 37 00 00 12 00 00 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 65 .[..GJ/7../7......translations/e
38ce0 73 2e 70 6f 6d 73 67 69 64 20 22 22 0a 6d 73 67 73 74 72 20 22 22 0a 22 50 72 6f 6a 65 63 74 2d s.pomsgid."".msgstr.""."Project-
38d00 49 64 2d 56 65 72 73 69 6f 6e 3a 20 5c 6e 22 0a 22 50 4f 54 2d 43 72 65 61 74 69 6f 6e 2d 44 61 Id-Version:.\n"."POT-Creation-Da
38d20 74 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 2b 30 32 30 30 5c 6e 22 0a 22 50 4f te:.2025-08-28.10:12+0200\n"."PO
38d40 2d 52 65 76 69 73 69 6f 6e 2d 44 61 74 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 -Revision-Date:.2025-08-28.10:12
38d60 2b 30 32 30 30 5c 6e 22 0a 22 4c 61 73 74 2d 54 72 61 6e 73 6c 61 74 6f 72 3a 20 5c 6e 22 0a 22 +0200\n"."Last-Translator:.\n"."
38d80 4c 61 6e 67 75 61 67 65 2d 54 65 61 6d 3a 20 5c 6e 22 0a 22 4c 61 6e 67 75 61 67 65 3a 20 65 73 Language-Team:.\n"."Language:.es
38da0 5c 6e 22 0a 22 4d 49 4d 45 2d 56 65 72 73 69 6f 6e 3a 20 31 2e 30 5c 6e 22 0a 22 43 6f 6e 74 65 \n"."MIME-Version:.1.0\n"."Conte
38dc0 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 55 54 46 nt-Type:.text/plain;.charset=UTF
38de0 2d 38 5c 6e 22 0a 22 43 6f 6e 74 65 6e 74 2d 54 72 61 6e 73 66 65 72 2d 45 6e 63 6f 64 69 6e 67 -8\n"."Content-Transfer-Encoding
38e00 3a 20 38 62 69 74 5c 6e 22 0a 22 50 6c 75 72 61 6c 2d 46 6f 72 6d 73 3a 20 6e 70 6c 75 72 61 6c :.8bit\n"."Plural-Forms:.nplural
38e20 73 3d 32 3b 20 70 6c 75 72 61 6c 3d 28 6e 20 3e 20 31 29 3b 5c 6e 22 0a 22 58 2d 47 65 6e 65 72 s=2;.plural=(n.>.1);\n"."X-Gener
38e40 61 74 6f 72 3a 20 50 6f 65 64 69 74 20 33 2e 35 5c 6e 22 0a 22 58 2d 50 6f 65 64 69 74 2d 42 61 ator:.Poedit.3.5\n"."X-Poedit-Ba
38e60 73 65 70 61 74 68 3a 20 2e 2e 5c 6e 22 0a 22 58 2d 50 6f 65 64 69 74 2d 53 65 61 72 63 68 50 61 sepath:...\n"."X-Poedit-SearchPa
38e80 74 68 2d 30 3a 20 2e 5c 6e 22 0a 0a 23 3a 20 5f 5f 69 6e 69 74 5f 5f 2e 70 79 3a 32 37 20 61 63 th-0:..\n"..#:.__init__.py:27.ac
38ea0 74 69 6f 6e 2e 70 79 3a 33 35 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 73 63 72 tion.py:35.msgid."Remove.the.scr
38ec0 61 70 73 20 43 53 53 20 69 6e 20 48 54 4d 4c 20 63 6f 6d 6d 65 6e 74 73 22 0a 6d 73 67 73 74 72 aps.CSS.in.HTML.comments".msgstr
38ee0 20 22 45 6c 69 6d 69 6e 61 72 20 65 6c 20 43 53 53 20 70 61 72 61 20 65 6c 20 62 6c 6f 63 20 64 ."Eliminar.el.CSS.para.el.bloc.d
38f00 65 20 6e 6f 74 61 73 20 65 6e 20 6c 6f 73 20 63 6f 6d 65 6e 74 61 72 69 6f 73 20 48 54 4d 4c 22 e.notas.en.los.comentarios.HTML"
38f20 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 35 35 0a 6d 73 67 69 64 20 22 43 6c 65 61 6e 20 74 ..#:.action.py:55.msgid."Clean.t
38f40 68 65 20 73 65 6c 65 63 74 65 64 20 26 63 6f 6d 6d 65 6e 74 73 22 0a 6d 73 67 73 74 72 20 22 4c he.selected.&comments".msgstr."L
38f60 69 6d 70 69 61 72 20 6c 6f 73 20 26 63 6f 6d 65 6e 74 61 72 69 6f 73 20 73 65 6c 65 63 63 69 6f impiar.los.&comentarios.seleccio
38f80 6e 61 64 6f 73 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 36 30 0a 6d 73 67 69 64 20 22 43 nados"..#:.action.py:60.msgid."C
38fa0 6c 65 61 6e 20 63 61 74 65 67 6f 72 79 20 26 6e 6f 74 65 73 22 0a 6d 73 67 73 74 72 20 22 4c 69 lean.category.&notes".msgstr."Li
38fc0 6d 70 69 61 72 20 63 61 74 65 67 6f 72 c3 ad 61 20 26 6e 6f 74 61 73 22 0a 0a 23 3a 20 61 63 74 mpiar.categor..a.&notas"..#:.act
38fe0 69 6f 6e 2e 70 79 3a 36 35 0a 6d 73 67 69 64 20 22 26 43 75 73 74 6f 6d 69 7a 65 20 70 6c 75 67 ion.py:65.msgid."&Customize.plug
39000 69 6e e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 26 50 65 72 73 6f 6e 61 6c 69 7a 61 72 20 63 6f 6d in...".msgstr."&Personalizar.com
39020 70 6c 65 6d 65 6e 74 6f e2 80 a6 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 31 38 0a 6d plemento..."..#:.action.py:218.m
39040 73 67 69 64 20 22 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 sgid."Update.the.library.for.{:d
39060 7d 20 62 6f 6f 6b 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 41 63 74 75 61 6c 69 63 65 20 6c 61 }.books...".msgstr."Actualice.la
39080 20 62 69 62 6c 69 6f 74 65 63 61 20 64 65 20 7b 3a 64 7d 20 6c 69 62 72 6f 73 e2 80 a6 22 0a 0a .biblioteca.de.{:d}.libros..."..
390a0 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 33 37 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 #:.action.py:237.common_utils/di
390c0 61 6c 6f 67 73 2e 70 79 3a 32 37 39 0a 23 2c 20 70 79 74 68 6f 6e 2d 62 72 61 63 65 2d 66 6f 72 alogs.py:279.#,.python-brace-for
390e0 6d 61 74 0a 6d 73 67 69 64 20 22 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 72 65 73 mat.msgid."{PLUGIN_NAME}.progres
39100 73 22 0a 6d 73 67 73 74 72 20 22 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 72 65 73 s".msgstr."{PLUGIN_NAME}.progres
39120 6f 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 35 39 0a 6d 73 67 69 64 20 22 4e 6f 74 65 o"..#:.action.py:259.msgid."Note
39140 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 22 0a 6d 73 67 73 74 72 20 22 4e 6f 74 61 20 7b 3a 64 7d .{:d}.of.{:d}".msgstr."Nota.{:d}
39160 20 64 65 20 7b 3a 64 7d 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 33 32 33 0a 6d 73 67 69 .de.{:d}"..#:.action.py:323.msgi
39180 64 20 22 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d 20 6e d."Update.the.library.for.{:d}.n
391a0 6f 74 65 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 41 63 74 75 61 6c 69 63 65 20 6c 61 20 62 69 otes...".msgstr."Actualice.la.bi
391c0 62 6c 69 6f 74 65 63 61 20 64 65 20 7b 3a 64 7d 20 6c 69 62 72 6f 73 e2 80 a6 22 0a 0a 23 3a 20 blioteca.de.{:d}.libros..."..#:.
391e0 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 5f 5f 69 6e 69 74 5f 5f 2e 70 79 3a 34 33 34 0a 6d 73 67 common_utils/__init__.py:434.msg
39200 69 64 20 22 59 6f 75 20 63 61 6e 6e 6f 74 20 63 6f 6e 66 69 67 75 72 65 20 74 68 69 73 20 70 6c id."You.cannot.configure.this.pl
39220 75 67 69 6e 20 62 65 66 6f 72 65 20 63 61 6c 69 62 72 65 20 69 73 20 72 65 73 74 61 72 74 65 64 ugin.before.calibre.is.restarted
39240 2e 22 0a 6d 73 67 73 74 72 20 22 4e 6f 20 70 75 65 64 65 20 63 6f 6e 66 69 67 75 72 61 72 20 65 .".msgstr."No.puede.configurar.e
39260 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 20 61 6e 74 65 73 20 64 65 20 72 65 69 6e 69 63 69 ste.complemento.antes.de.reinici
39280 61 72 20 63 61 6c 69 62 72 65 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 ar.calibre."..#:.common_utils/di
392a0 61 6c 6f 67 73 2e 70 79 3a 38 31 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 alogs.py:81.common_utils/dialogs
392c0 2e 70 79 3a 31 31 35 0a 6d 73 67 69 64 20 22 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 .py:115.msgid."Keyboard.shortcut
392e0 73 22 0a 6d 73 67 73 74 72 20 22 41 74 61 6a 6f 73 20 64 65 20 74 65 63 6c 61 64 6f 22 0a 0a 23 s".msgstr."Atajos.de.teclado"..#
39300 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 31 38 0a 6d 73 :.common_utils/dialogs.py:118.ms
39320 67 69 64 20 22 45 64 69 74 20 74 68 65 20 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 gid."Edit.the.keyboard.shortcuts
39340 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 70 6c 75 67 69 6e 22 0a 6d 73 .associated.with.this.plugin".ms
39360 67 73 74 72 20 22 45 64 69 74 65 20 6c 6f 73 20 61 74 61 6a 6f 73 20 64 65 20 74 65 63 6c 61 64 gstr."Edite.los.atajos.de.teclad
39380 6f 20 61 73 6f 63 69 61 64 6f 73 20 63 6f 6e 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f o.asociados.con.este.complemento
393a0 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 33 "..#:.common_utils/dialogs.py:13
393c0 34 0a 6d 73 67 69 64 20 22 50 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 3a 22 0a 6d 73 67 73 74 4.msgid."Preferences.for:".msgst
393e0 72 20 22 50 72 65 66 65 72 65 6e 63 69 61 73 20 70 61 72 61 3a 22 0a 0a 23 3a 20 63 6f 6d 6d 6f r."Preferencias.para:"..#:.commo
39400 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 35 37 0a 6d 73 67 69 64 20 22 43 6c n_utils/dialogs.py:157.msgid."Cl
39420 65 61 72 20 61 6c 6c 20 73 65 74 74 69 6e 67 73 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e ear.all.settings.for.this.plugin
39440 22 0a 6d 73 67 73 74 72 20 22 42 6f 72 72 61 72 20 74 6f 64 61 73 20 6c 61 73 20 63 6f 6e 66 69 ".msgstr."Borrar.todas.las.confi
39460 67 75 72 61 63 69 6f 6e 65 73 20 70 61 72 61 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f guraciones.para.este.complemento
39480 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 39 "..#:.common_utils/dialogs.py:19
394a0 39 0a 6d 73 67 69 64 20 22 54 68 65 20 63 68 61 6e 67 65 73 20 63 61 6e 6e 6f 74 20 62 65 20 61 9.msgid."The.changes.cannot.be.a
394c0 70 70 6c 69 65 64 2e 22 0a 6d 73 67 73 74 72 20 22 4c 6f 73 20 63 61 6d 62 69 6f 73 20 6e 6f 20 pplied.".msgstr."Los.cambios.no.
394e0 73 65 20 70 75 65 64 65 6e 20 61 70 6c 69 63 61 72 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 se.pueden.aplicar."..#:.common_u
39500 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 30 33 0a 6d 73 67 69 64 20 22 41 72 65 20 79 tils/dialogs.py:203.msgid."Are.y
39520 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 79 6f 75 72 20 ou.sure.you.want.to.change.your.
39540 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 69 settings.in.this.library.for.thi
39560 73 20 70 6c 75 67 69 6e 3f 22 0a 6d 73 67 73 74 72 20 22 c2 bf 45 73 74 c3 a1 20 73 65 67 75 72 s.plugin?".msgstr."..Est...segur
39580 6f 20 64 65 20 71 75 65 20 64 65 73 65 61 20 63 61 6d 62 69 61 72 20 73 75 20 63 6f 6e 66 69 67 o.de.que.desea.cambiar.su.config
395a0 75 72 61 63 69 c3 b3 6e 20 65 6e 20 65 73 74 61 20 62 69 62 6c 69 6f 74 65 63 61 20 70 61 72 61 uraci..n.en.esta.biblioteca.para
395c0 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 3f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 .este.complemento?"..#:.common_u
395e0 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 30 34 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 tils/dialogs.py:204.common_utils
39600 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 31 36 0a 6d 73 67 69 64 20 22 41 6e 79 20 73 65 74 74 69 /dialogs.py:216.msgid."Any.setti
39620 6e 67 73 20 69 6e 20 6f 74 68 65 72 20 6c 69 62 72 61 72 69 65 73 20 6f 72 20 73 74 6f 72 65 64 ngs.in.other.libraries.or.stored
39640 20 69 6e 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 69 6e 20 79 6f 75 72 20 63 61 6c 69 62 72 65 20 .in.a.JSON.file.in.your.calibre.
39660 70 6c 75 67 69 6e 73 20 66 6f 6c 64 65 72 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 74 6f 75 63 68 plugins.folder.will.not.be.touch
39680 65 64 2e 22 0a 6d 73 67 73 74 72 20 22 43 75 61 6c 71 75 69 65 72 20 63 6f 6e 66 69 67 75 72 61 ed.".msgstr."Cualquier.configura
396a0 63 69 c3 b3 6e 20 65 6e 20 6f 74 72 61 73 20 62 69 62 6c 69 6f 74 65 63 61 73 20 6f 20 61 6c 6d ci..n.en.otras.bibliotecas.o.alm
396c0 61 63 65 6e 61 64 61 20 65 6e 20 75 6e 20 61 72 63 68 69 76 6f 20 4a 53 4f 4e 20 65 6e 20 73 75 acenada.en.un.archivo.JSON.en.su
396e0 20 63 61 72 70 65 74 61 20 64 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 73 20 64 65 20 63 61 6c 69 .carpeta.de.complementos.de.cali
39700 62 72 65 20 6e 6f 20 73 65 20 6d 6f 64 69 66 69 63 61 72 c3 a1 2e 22 0a 0a 23 3a 20 63 6f 6d 6d bre.no.se.modificar..."..#:.comm
39720 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 31 35 0a 6d 73 67 69 64 20 22 41 on_utils/dialogs.py:215.msgid."A
39740 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 6c 65 61 72 20 79 6f re.you.sure.you.want.to.clear.yo
39760 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 66 6f 72 20 ur.settings.in.this.library.for.
39780 74 68 69 73 20 70 6c 75 67 69 6e 3f 22 0a 6d 73 67 73 74 72 20 22 c2 bf 45 73 74 c3 a1 20 73 65 this.plugin?".msgstr."..Est...se
397a0 67 75 72 6f 20 64 65 20 71 75 65 20 64 65 73 65 61 20 62 6f 72 72 61 72 20 73 75 20 63 6f 6e 66 guro.de.que.desea.borrar.su.conf
397c0 69 67 75 72 61 63 69 c3 b3 6e 20 65 6e 20 65 73 74 61 20 62 69 62 6c 69 6f 74 65 63 61 20 70 61 iguraci..n.en.esta.biblioteca.pa
397e0 72 61 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 3f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e ra.este.complemento?"..#:.common
39800 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 33 38 0a 6d 73 67 69 64 20 22 56 69 65 _utils/dialogs.py:238.msgid."Vie
39820 77 20 6c 69 62 72 61 72 79 20 70 72 65 66 65 72 65 6e 63 65 73 22 0a 6d 73 67 73 74 72 20 22 56 w.library.preferences".msgstr."V
39840 65 72 20 70 72 65 66 65 72 65 6e 63 69 61 73 20 64 65 20 62 69 62 6c 69 6f 74 65 63 61 22 0a 0a er.preferencias.de.biblioteca"..
39860 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 33 39 0a 6d #:.common_utils/dialogs.py:239.m
39880 73 67 69 64 20 22 56 69 65 77 20 64 61 74 61 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6c 69 sgid."View.data.stored.in.the.li
398a0 62 72 61 72 79 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 22 0a brary.database.for.this.plugin".
398c0 6d 73 67 73 74 72 20 22 56 65 72 20 64 61 74 6f 73 20 61 6c 6d 61 63 65 6e 61 64 6f 73 20 65 6e msgstr."Ver.datos.almacenados.en
398e0 20 6c 61 20 62 61 73 65 20 64 65 20 64 61 74 6f 73 20 64 65 20 6c 61 20 62 69 62 6c 69 6f 74 65 .la.base.de.datos.de.la.bibliote
39900 63 61 20 70 61 72 61 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 22 0a 0a 23 3a 20 63 6f ca.para.este.complemento"..#:.co
39920 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 36 39 0a 6d 73 67 69 64 20 mmon_utils/dialogs.py:269.msgid.
39940 22 43 61 6e 63 65 6c 22 0a 6d 73 67 73 74 72 20 22 43 61 6e 63 65 6c 61 72 22 0a 0a 23 3a 20 63 "Cancel".msgstr."Cancelar"..#:.c
39960 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 33 35 0a 6d 73 67 69 64 ommon_utils/dialogs.py:335.msgid
39980 20 22 42 6f 6f 6b 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 22 0a 6d 73 67 73 74 72 20 22 4c 69 62 ."Book.{:d}.of.{:d}".msgstr."Lib
399a0 72 6f 20 7b 3a 64 7d 20 64 65 20 7b 3a 64 7d 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c ro.{:d}.de.{:d}"..#:.common_util
399c0 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 37 31 0a 6d 73 67 69 64 20 22 43 6f 70 79 20 74 6f 20 s/dialogs.py:371.msgid."Copy.to.
399e0 63 6c 69 70 62 6f 61 72 64 22 0a 6d 73 67 73 74 72 20 22 43 6f 70 69 61 72 20 61 6c 20 70 6f 72 clipboard".msgstr."Copiar.al.por
39a00 74 61 70 61 70 65 6c 65 73 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c tapapeles"..#:.common_utils/dial
39a20 6f 67 73 2e 70 79 3a 33 39 30 0a 6d 73 67 69 64 20 22 41 64 64 20 4e 65 77 20 49 6d 61 67 65 22 ogs.py:390.msgid."Add.New.Image"
39a40 0a 6d 73 67 73 74 72 20 22 41 67 72 65 67 61 72 20 6e 75 65 76 61 20 69 6d 61 67 65 6e 22 0a 0a .msgstr."Agregar.nueva.imagen"..
39a60 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 39 38 0a 6d #:.common_utils/dialogs.py:398.m
39a80 73 67 69 64 20 22 26 53 65 6c 65 63 74 20 69 6d 61 67 65 20 73 6f 75 72 63 65 22 0a 6d 73 67 73 sgid."&Select.image.source".msgs
39aa0 74 72 20 22 26 53 65 6c 65 63 63 69 6f 6e 61 72 20 66 75 65 6e 74 65 20 64 65 20 69 6d 61 67 65 tr."&Seleccionar.fuente.de.image
39ac0 6e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 n"..#:.common_utils/dialogs.py:4
39ae0 30 31 0a 6d 73 67 69 64 20 22 46 72 6f 6d 20 26 77 65 62 20 64 6f 6d 61 69 6e 20 66 61 76 69 63 01.msgid."From.&web.domain.favic
39b00 6f 6e 22 0a 6d 73 67 73 74 72 20 22 44 65 73 64 65 20 26 64 6f 6d 69 6e 69 6f 20 77 65 62 20 66 on".msgstr."Desde.&dominio.web.f
39b20 61 76 69 63 6f 6e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 avicon"..#:.common_utils/dialogs
39b40 2e 70 79 3a 34 30 38 0a 6d 73 67 69 64 20 22 46 72 6f 6d 20 2e 70 6e 67 20 26 66 69 6c 65 22 0a .py:408.msgid."From..png.&file".
39b60 6d 73 67 73 74 72 20 22 44 65 73 64 65 20 26 61 72 63 68 69 76 6f 20 2e 70 6e 67 22 0a 0a 23 3a msgstr."Desde.&archivo..png"..#:
39b80 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 32 31 0a 6d 73 67 .common_utils/dialogs.py:421.msg
39ba0 69 64 20 22 26 53 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 3a 22 0a 6d 73 67 73 74 72 20 22 id."&Save.as.filename:".msgstr."
39bc0 26 47 75 61 72 64 61 72 20 63 6f 6d 6f 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 76 6f 3a &Guardar.como.nombre.de.archivo:
39be0 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 34 "..#:.common_utils/dialogs.py:44
39c00 34 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 61 20 2e 70 6e 67 20 66 69 6c 65 20 66 6f 72 20 4.msgid."Select.a..png.file.for.
39c20 74 68 65 20 6d 65 6e 75 20 69 63 6f 6e 22 0a 6d 73 67 73 74 72 20 22 53 65 6c 65 63 63 69 6f 6e the.menu.icon".msgstr."Seleccion
39c40 65 20 75 6e 20 61 72 63 68 69 76 6f 20 2e 70 6e 67 20 70 61 72 61 20 65 6c 20 69 63 6f 6e 6f 20 e.un.archivo..png.para.el.icono.
39c60 64 65 6c 20 6d 65 6e c3 ba 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c del.men.."..#:.common_utils/dial
39c80 6f 67 73 2e 70 79 3a 34 35 32 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e ogs.py:452.common_utils/dialogs.
39ca0 70 79 3a 34 36 31 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 py:461.#:.common_utils/dialogs.p
39cc0 79 3a 34 36 35 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 38 y:465.common_utils/dialogs.py:48
39ce0 37 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 33 7.#:.common_utils/dialogs.py:493
39d00 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 35 0a 23 3a 20 .common_utils/dialogs.py:495.#:.
39d20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 37 0a 6d 73 67 69 common_utils/dialogs.py:497.msgi
39d40 64 20 22 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 22 0a 6d 73 67 73 74 72 20 22 d."Cannot.import.image".msgstr."
39d60 4e 6f 20 73 65 20 70 75 65 64 65 20 69 6d 70 6f 72 74 61 72 20 6c 61 20 69 6d 61 67 65 6e 22 0a No.se.puede.importar.la.imagen".
39d80 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 35 32 20 .#:.common_utils/dialogs.py:452.
39da0 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 35 0a 6d 73 67 69 common_utils/dialogs.py:495.msgi
39dc0 64 20 22 53 6f 75 72 63 65 20 69 6d 61 67 65 20 6d 75 73 74 20 62 65 20 61 20 2e 70 6e 67 20 66 d."Source.image.must.be.a..png.f
39de0 69 6c 65 2e 22 0a 6d 73 67 73 74 72 20 22 4c 61 20 69 6d 61 67 65 6e 20 64 65 20 6f 72 69 67 65 ile.".msgstr."La.imagen.de.orige
39e00 6e 20 64 65 62 65 20 73 65 72 20 75 6e 20 61 72 63 68 69 76 6f 20 2e 70 6e 67 2e 22 0a 0a 23 3a n.debe.ser.un.archivo..png."..#:
39e20 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 36 31 0a 6d 73 67 .common_utils/dialogs.py:461.msg
39e40 69 64 20 22 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 66 69 6c 65 6e 61 6d 65 20 id."You.must.specify.a.filename.
39e60 74 6f 20 73 61 76 65 20 61 73 2e 22 0a 6d 73 67 73 74 72 20 22 44 65 62 65 20 65 73 70 65 63 69 to.save.as.".msgstr."Debe.especi
39e80 66 69 63 61 72 20 75 6e 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 76 6f 20 70 61 72 61 20 ficar.un.nombre.de.archivo.para.
39ea0 67 75 61 72 64 61 72 20 63 6f 6d 6f 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f guardar.como."..#:.common_utils/
39ec0 64 69 61 6c 6f 67 73 2e 70 79 3a 34 36 36 0a 6d 73 67 69 64 20 22 54 68 65 20 73 61 76 65 20 61 dialogs.py:466.msgid."The.save.a
39ee0 73 20 66 69 6c 65 6e 61 6d 65 20 73 68 6f 75 6c 64 20 63 6f 6e 73 69 73 74 20 6f 66 20 61 20 66 s.filename.should.consist.of.a.f
39f00 69 6c 65 6e 61 6d 65 20 6f 6e 6c 79 2e 22 0a 6d 73 67 73 74 72 20 22 47 75 61 72 64 61 72 20 63 ilename.only.".msgstr."Guardar.c
39f20 6f 6d 6f 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 76 6f 20 64 65 62 65 20 63 6f 6e 73 69 omo.nombre.de.archivo.debe.consi
39f40 73 74 69 72 20 73 6f 6c 6f 20 65 6e 20 75 6e 20 6e 6f 6d 62 72 65 20 64 65 20 61 72 63 68 69 76 stir.solo.en.un.nombre.de.archiv
39f60 6f 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a o."..#:.common_utils/dialogs.py:
39f80 34 37 34 0a 6d 73 67 69 64 20 22 41 72 65 20 79 6f 75 20 73 75 72 65 3f 22 0a 6d 73 67 73 74 72 474.msgid."Are.you.sure?".msgstr
39fa0 20 22 c2 bf 45 73 74 c3 a1 73 20 73 65 67 75 72 6f 3f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 ."..Est..s.seguro?"..#:.common_u
39fc0 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 37 35 0a 6d 73 67 69 64 20 22 41 6e 20 69 6d tils/dialogs.py:475.msgid."An.im
39fe0 61 67 65 20 77 69 74 68 20 74 68 69 73 20 6e 61 6d 65 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 age.with.this.name.already.exist
3a000 73 20 2d 20 6f 76 65 72 77 72 69 74 65 20 69 74 3f 22 0a 6d 73 67 73 74 72 20 22 59 61 20 65 78 s.-.overwrite.it?".msgstr."Ya.ex
3a020 69 73 74 65 20 75 6e 61 20 69 6d 61 67 65 6e 20 63 6f 6e 20 65 73 74 65 20 6e 6f 6d 62 72 65 2e iste.una.imagen.con.este.nombre.
3a040 20 c2 bf 53 6f 62 72 65 73 63 72 69 62 69 72 6c 61 3f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 ...Sobrescribirla?"..#:.common_u
3a060 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 38 37 0a 6d 73 67 69 64 20 22 59 6f 75 20 6d tils/dialogs.py:487.msgid."You.m
3a080 75 73 74 20 73 70 65 63 69 66 79 20 61 20 77 65 62 20 64 6f 6d 61 69 6e 20 75 72 6c 22 0a 6d 73 ust.specify.a.web.domain.url".ms
3a0a0 67 73 74 72 20 22 44 65 62 65 20 65 73 70 65 63 69 66 69 63 61 72 20 75 6e 61 20 55 52 4c 20 64 gstr."Debe.especificar.una.URL.d
3a0c0 65 20 64 6f 6d 69 6e 69 6f 20 77 65 62 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f e.dominio.web"..#:.common_utils/
3a0e0 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 33 0a 6d 73 67 69 64 20 22 59 6f 75 20 6d 75 73 74 20 73 dialogs.py:493.msgid."You.must.s
3a100 70 65 63 69 66 79 20 61 20 73 6f 75 72 63 65 20 66 69 6c 65 2e 22 0a 6d 73 67 73 74 72 20 22 44 pecify.a.source.file.".msgstr."D
3a120 65 62 65 20 65 73 70 65 63 69 66 69 63 61 72 20 75 6e 20 61 72 63 68 69 76 6f 20 66 75 65 6e 74 ebe.especificar.un.archivo.fuent
3a140 65 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a e."..#:.common_utils/dialogs.py:
3a160 34 39 37 0a 6d 73 67 69 64 20 22 53 6f 75 72 63 65 20 69 6d 61 67 65 20 64 6f 65 73 20 6e 6f 74 497.msgid."Source.image.does.not
3a180 20 65 78 69 73 74 21 22 0a 6d 73 67 73 74 72 20 22 c2 a1 4c 61 20 69 6d 61 67 65 6e 20 64 65 20 .exist!".msgstr."..La.imagen.de.
3a1a0 6f 72 69 67 65 6e 20 6e 6f 20 65 78 69 73 74 65 21 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 origen.no.existe!"..#:.common_ut
3a1c0 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 30 35 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 ils/dialogs.py:505.msgid."Select
3a1e0 20 61 20 5a 49 50 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 .a.ZIP.archive.file.to.import...
3a200 22 0a 6d 73 67 73 74 72 20 22 53 65 6c 65 63 63 69 6f 6e 65 20 75 6e 20 61 72 63 68 69 76 6f 20 ".msgstr."Seleccione.un.archivo.
3a220 5a 49 50 20 70 61 72 61 20 69 6d 70 6f 72 74 61 72 e2 80 a6 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e ZIP.para.importar..."..#:.common
3a240 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 31 37 0a 6d 73 67 69 64 20 22 53 61 76 _utils/dialogs.py:517.msgid."Sav
3a260 65 20 5a 49 50 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 61 73 e2 80 a6 22 0a 6d 73 67 73 74 72 e.ZIP.archive.file.as...".msgstr
3a280 20 22 47 75 61 72 64 61 72 20 61 72 63 68 69 76 6f 20 5a 49 50 20 63 6f 6d 6f e2 80 a6 22 0a 0a ."Guardar.archivo.ZIP.como..."..
3a2a0 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 33 30 0a 6d #:.common_utils/dialogs.py:530.m
3a2c0 73 67 69 64 20 22 53 65 6c 65 63 74 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f sgid."Select.a.JSON.file.to.impo
3a2e0 72 74 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 53 65 6c 65 63 63 69 6f 6e 65 20 75 6e 20 61 72 63 rt...".msgstr."Seleccione.un.arc
3a300 68 69 76 6f 20 4a 53 4f 4e 20 70 61 72 61 20 69 6d 70 6f 72 74 61 72 e2 80 a6 22 0a 0a 23 3a 20 hivo.JSON.para.importar..."..#:.
3a320 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 34 32 0a 6d 73 67 69 common_utils/dialogs.py:542.msgi
3a340 64 20 22 53 61 76 65 20 74 68 65 20 4a 53 4f 4e 20 66 69 6c 65 20 61 73 e2 80 a6 22 0a 6d 73 67 d."Save.the.JSON.file.as...".msg
3a360 73 74 72 20 22 47 75 61 72 64 61 72 20 75 6e 20 61 72 63 68 69 76 6f 20 4a 53 4f 4e 20 63 6f 6d str."Guardar.un.archivo.JSON.com
3a380 6f e2 80 a6 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 o..."..#:.common_utils/dialogs.p
3a3a0 79 3a 35 37 39 0a 23 2c 20 70 79 74 68 6f 6e 2d 62 72 61 63 65 2d 66 6f 72 6d 61 74 0a 6d 73 67 y:579.#,.python-brace-format.msg
3a3c0 69 64 20 22 54 68 65 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 6c 75 67 69 6e 20 68 61 73 id."The.{PLUGIN_NAME}.plugin.has
3a3e0 20 65 6e 63 6f 75 6e 74 65 72 20 61 20 75 6e 68 61 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e .encounter.a.unhandled.exception
3a400 2e 22 0a 6d 73 67 73 74 72 20 22 45 6c 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 20 7b 50 4c 55 47 49 .".msgstr."El.complemento.{PLUGI
3a420 4e 5f 4e 41 4d 45 7d 20 68 61 20 65 6e 63 6f 6e 74 72 61 64 6f 20 75 6e 61 20 65 78 63 65 70 63 N_NAME}.ha.encontrado.una.excepc
3a440 69 c3 b3 6e 20 6e 6f 20 63 6f 6e 74 72 6f 6c 61 64 61 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f i..n.no.controlada."..#:.common_
3a460 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 39 33 0a 6d 73 67 69 64 20 22 55 6e 68 61 utils/dialogs.py:593.msgid."Unha
3a480 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 22 0a 6d 73 67 73 74 72 20 22 45 78 63 65 70 63 69 ndled.exception".msgstr."Excepci
3a4a0 c3 b3 6e 20 6e 6f 20 63 6f 6e 74 72 6f 6c 61 64 61 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 ..n.no.controlada"..#:.common_ut
3a4c0 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 34 39 0a 6d 73 67 69 64 20 22 43 6f 75 6c 64 20 ils/librarys.py:49.msgid."Could.
3a4e0 6e 6f 74 20 74 6f 20 6c 61 75 6e 63 68 20 7b 3a 73 7d 22 0a 6d 73 67 73 74 72 20 22 4e 6f 20 73 not.to.launch.{:s}".msgstr."No.s
3a500 65 20 70 75 64 6f 20 69 6e 69 63 69 61 72 20 7b 3a 73 7d 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f e.pudo.iniciar.{:s}"..#:.common_
3a520 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 36 38 0a 6d 73 67 69 64 20 22 4e 6f 20 62 utils/librarys.py:68.msgid."No.b
3a540 6f 6f 6b 20 73 65 6c 65 63 74 65 64 22 0a 6d 73 67 73 74 72 20 22 4e 69 6e 67 c3 ba 6e 20 6c 69 ook.selected".msgstr."Ning..n.li
3a560 62 72 6f 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 bro.seleccionado"..#:.common_uti
3a580 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 37 34 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f 6f 6b ls/librarys.py:74.msgid."No.book
3a5a0 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 22 0a 6d 73 67 73 74 72 20 22 4e 6f 20 68 61 79 20 .in.the.library".msgstr."No.hay.
3a5c0 6c 69 62 72 6f 20 65 6e 20 6c 61 20 62 69 62 6c 69 6f 74 65 63 61 22 0a 0a 23 3a 20 63 6f 6d 6d libro.en.la.biblioteca"..#:.comm
3a5e0 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 38 30 20 63 6f 6d 6d 6f 6e 5f 75 on_utils/librarys.py:80.common_u
3a600 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 38 37 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f tils/librarys.py:87.msgid."No.bo
3a620 6f 6b 20 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 79 22 0a 6d 73 67 73 74 ok.in.the.virtual.library".msgst
3a640 72 20 22 4e 6f 20 68 61 79 20 6c 69 62 72 6f 20 65 6e 20 6c 61 20 62 69 62 6c 69 6f 74 65 63 61 r."No.hay.libro.en.la.biblioteca
3a660 20 76 69 72 74 75 61 6c 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 .virtual"..#:.common_utils/libra
3a680 72 79 73 2e 70 79 3a 39 33 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 rys.py:93.msgid."No.book.in.the.
3a6a0 63 75 72 72 65 6e 74 20 73 65 61 72 63 68 22 0a 6d 73 67 73 74 72 20 22 4e 69 6e 67 c3 ba 6e 20 current.search".msgstr."Ning..n.
3a6c0 6c 69 62 72 6f 20 65 6e 20 6c 61 20 62 c3 ba 73 71 75 65 64 61 20 61 63 74 75 61 6c 22 0a 0a 23 libro.en.la.b..squeda.actual"..#
3a6e0 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 34 39 0a 6d :.common_utils/templates.py:49.m
3a700 73 67 69 64 20 22 55 6e 6b 6e 6f 77 6e 22 0a 6d 73 67 73 74 72 20 22 44 65 73 63 6f 6e 6f 63 69 sgid."Unknown".msgstr."Desconoci
3a720 64 6f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 do"..#:.common_utils/templates.p
3a740 79 3a 35 36 0a 6d 73 67 69 64 20 22 54 65 6d 70 6c 61 74 65 20 45 72 72 6f 72 22 0a 6d 73 67 73 y:56.msgid."Template.Error".msgs
3a760 74 72 20 22 45 72 72 6f 72 20 64 65 20 70 6c 61 6e 74 69 6c 6c 61 22 0a 0a 23 3a 20 63 6f 6d 6d tr."Error.de.plantilla"..#:.comm
3a780 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 35 37 0a 6d 73 67 69 64 20 22 on_utils/templates.py:57.msgid."
3a7a0 52 75 6e 6e 69 6e 67 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 72 65 74 75 72 6e 65 64 20 61 6e Running.the.template.returned.an
3a7c0 20 65 72 72 6f 72 3a 22 0a 6d 73 67 73 74 72 20 22 45 6a 65 63 75 74 61 72 20 6c 61 20 70 6c 61 .error:".msgstr."Ejecutar.la.pla
3a7e0 6e 74 69 6c 6c 61 20 64 65 76 6f 6c 76 69 c3 b3 20 75 6e 20 65 72 72 6f 72 3a 22 0a 0a 23 3a 20 ntilla.devolvi...un.error:"..#:.
3a800 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 37 30 0a 6d 73 67 common_utils/templates.py:70.msg
3a820 69 64 20 22 45 6e 74 65 72 20 61 20 74 65 6d 70 6c 61 74 65 20 74 6f 20 74 65 73 74 20 75 73 69 id."Enter.a.template.to.test.usi
3a840 6e 67 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 22 0a ng.data.from.the.selected.book".
3a860 6d 73 67 73 74 72 20 22 49 6e 67 72 65 73 65 20 75 6e 61 20 70 6c 61 6e 74 69 6c 6c 61 20 70 61 msgstr."Ingrese.una.plantilla.pa
3a880 72 61 20 70 72 6f 62 61 72 20 75 73 61 6e 64 6f 20 64 61 74 6f 73 20 64 65 6c 20 6c 69 62 72 6f ra.probar.usando.datos.del.libro
3a8a0 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f .seleccionado"..#:.common_utils/
3a8c0 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 37 37 0a 6d 73 67 69 64 20 22 54 65 6d 70 6c 61 74 65 20 templates.py:77.msgid."Template.
3a8e0 65 64 69 74 6f 72 22 0a 6d 73 67 73 74 72 20 22 45 64 69 74 6f 72 20 64 65 20 70 6c 61 6e 74 69 editor".msgstr."Editor.de.planti
3a900 6c 6c 61 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e lla"..#:.common_utils/templates.
3a920 70 79 3a 31 30 36 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 py:106.common_utils/templates.py
3a940 3a 31 30 39 0a 6d 73 67 69 64 20 22 4f 70 65 6e 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 65 64 :109.msgid."Open.the.template.ed
3a960 69 74 6f 72 22 0a 6d 73 67 73 74 72 20 22 41 62 72 61 20 65 6c 20 65 64 69 74 6f 72 20 64 65 20 itor".msgstr."Abra.el.editor.de.
3a980 70 6c 61 6e 74 69 6c 6c 61 73 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 plantillas"..#:.common_utils/wid
3a9a0 67 65 74 73 2e 70 79 3a 38 36 0a 6d 73 67 69 64 20 22 52 65 73 74 61 72 74 20 72 65 71 75 69 72 gets.py:86.msgid."Restart.requir
3a9c0 65 64 22 0a 6d 73 67 73 74 72 20 22 52 65 69 6e 69 63 69 6f 20 72 65 71 75 65 72 69 64 6f 22 0a ed".msgstr."Reinicio.requerido".
3a9e0 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 38 37 0a 6d .#:.common_utils/widgets.py:87.m
3aa00 73 67 69 64 20 22 54 69 74 6c 65 20 69 6d 61 67 65 20 6e 6f 74 20 66 6f 75 6e 64 20 2d 20 79 6f sgid."Title.image.not.found.-.yo
3aa20 75 20 6d 75 73 74 20 72 65 73 74 61 72 74 20 43 61 6c 69 62 72 65 20 62 65 66 6f 72 65 20 75 73 u.must.restart.Calibre.before.us
3aa40 69 6e 67 20 74 68 69 73 20 70 6c 75 67 69 6e 21 22 0a 6d 73 67 73 74 72 20 22 4e 6f 20 73 65 20 ing.this.plugin!".msgstr."No.se.
3aa60 65 6e 63 6f 6e 74 72 c3 b3 20 6c 61 20 69 6d 61 67 65 6e 20 64 65 6c 20 74 c3 ad 74 75 6c 6f 2e encontr...la.imagen.del.t..tulo.
3aa80 20 c2 a1 44 65 62 65 20 72 65 69 6e 69 63 69 61 72 20 43 61 6c 69 62 72 65 20 61 6e 74 65 73 20 ...Debe.reiniciar.Calibre.antes.
3aaa0 64 65 20 75 73 61 72 20 65 73 74 65 20 63 6f 6d 70 6c 65 6d 65 6e 74 6f 21 22 0a 0a 23 3a 20 63 de.usar.este.complemento!"..#:.c
3aac0 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 31 34 34 0a 6d 73 67 69 64 ommon_utils/widgets.py:144.msgid
3aae0 20 22 55 6e 64 65 66 69 6e 65 64 22 0a 6d 73 67 73 74 72 20 22 49 6e 64 65 66 69 6e 69 64 6f 22 ."Undefined".msgstr."Indefinido"
3ab00 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 32 39 38 ..#:.common_utils/widgets.py:298
3ab20 0a 6d 73 67 69 64 20 22 53 75 62 73 65 74 20 6f 66 20 76 61 6c 75 65 73 20 61 73 73 6f 63 69 61 .msgid."Subset.of.values.associa
3ab40 74 65 20 74 6f 20 74 68 65 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 53 75 62 63 6f 6e 6a te.to.the.books".msgstr."Subconj
3ab60 75 6e 74 6f 20 64 65 20 76 61 6c 6f 72 65 73 20 61 73 6f 63 69 61 64 6f 73 20 61 20 6c 6f 73 20 unto.de.valores.asociados.a.los.
3ab80 6c 69 62 72 6f 73 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 libros"..#:.common_utils/widgets
3aba0 2e 70 79 3a 32 39 39 0a 6d 73 67 69 64 20 22 4e 6f 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 .py:299.msgid."No.books".msgstr.
3abc0 22 53 69 6e 20 6c 69 62 72 6f 73 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 "Sin.libros"..#:.common_utils/wi
3abe0 64 67 65 74 73 2e 70 79 3a 33 30 30 0a 6d 73 67 69 64 20 22 7b 3a 64 7d 20 62 6f 6f 6b 73 20 28 dgets.py:300.msgid."{:d}.books.(
3ac00 6e 6f 20 76 61 6c 75 65 73 29 22 0a 6d 73 67 73 74 72 20 22 7b 3a 64 7d 20 6c 69 62 72 6f 73 20 no.values)".msgstr."{:d}.libros.
3ac20 28 73 69 6e 20 76 61 6c 6f 72 65 73 29 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f (sin.valores)"..#:.common_utils/
3ac40 77 69 64 67 65 74 73 2e 70 79 3a 33 30 31 0a 6d 73 67 69 64 20 22 7b 3a 64 7d 20 62 6f 6f 6b 73 widgets.py:301.msgid."{:d}.books
3ac60 22 0a 6d 73 67 73 74 72 20 22 7b 3a 64 7d 20 6c 69 62 72 6f 73 22 0a 0a 23 3a 20 63 6f 6d 6d 6f ".msgstr."{:d}.libros"..#:.commo
3ac80 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 34 32 36 0a 6d 73 67 69 64 20 22 4e 6f n_utils/widgets.py:426.msgid."No
3aca0 20 6e 6f 74 65 73 22 0a 6d 73 67 73 74 72 20 22 53 69 6e 20 6e 6f 74 61 73 22 0a 0a 23 3a 20 63 .notes".msgstr."Sin.notas"..#:.c
3acc0 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 34 38 30 0a 6d 73 67 69 64 ommon_utils/widgets.py:480.msgid
3ace0 20 22 41 64 64 20 4e 65 77 20 49 6d 61 67 65 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 41 67 72 65 ."Add.New.Image...".msgstr."Agre
3ad00 67 61 72 20 6e 75 65 76 61 20 69 6d 61 67 65 6e e2 80 a6 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e gar.nueva.imagen..."..#:.config.
3ad20 70 79 3a 38 36 0a 6d 73 67 69 64 20 22 4b 65 65 70 20 55 52 4c 22 0a 6d 73 67 73 74 72 20 22 4d py:86.msgid."Keep.URL".msgstr."M
3ad40 61 6e 74 65 6e 65 72 20 55 52 4c 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 38 37 0a 6d 73 antener.URL"..#:.config.py:87.ms
3ad60 67 69 64 20 22 44 65 6c 65 74 65 20 55 52 4c 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e 61 gid."Delete.URL".msgstr."Elimina
3ad80 72 20 55 52 4c 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 30 0a 6d 73 67 69 64 20 22 43 r.URL"..#:.config.py:90.msgid."C
3ada0 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 onverte.to.a.paragraph".msgstr."
3adc0 43 6f 6e 76 65 72 74 69 72 20 61 20 75 6e 20 70 c3 a1 72 72 61 66 6f 22 0a 0a 23 3a 20 63 6f 6e Convertir.a.un.p..rrafo"..#:.con
3ade0 66 69 67 2e 70 79 3a 39 31 0a 6d 73 67 69 64 20 22 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 fig.py:91.msgid."Converte.to.a.p
3ae00 61 72 61 67 72 61 70 68 20 62 75 74 20 6b 65 65 70 20 74 68 65 20 62 6f 6c 64 22 0a 6d 73 67 73 aragraph.but.keep.the.bold".msgs
3ae20 74 72 20 22 43 6f 6e 76 65 72 74 69 72 20 61 20 75 6e 20 70 c3 a1 72 72 61 66 6f 20 70 65 72 6f tr."Convertir.a.un.p..rrafo.pero
3ae40 20 6d 61 6e 74 65 6e 65 72 20 6c 61 20 6e 65 67 72 69 74 61 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 .mantener.la.negrita"..#:.config
3ae60 2e 70 79 3a 39 32 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 34 20 63 6f 6e 66 69 67 2e 70 79 3a 31 .py:92.config.py:104.config.py:1
3ae80 31 35 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 31 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 36 0a 23 15.config.py:121.config.py:126.#
3aea0 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 31 20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 35 0a 6d 73 :.config.py:131.config.py:135.ms
3aec0 67 69 64 20 22 4e 6f 20 63 68 61 6e 67 65 22 0a 6d 73 67 73 74 72 20 22 53 69 6e 20 63 61 6d 62 gid."No.change".msgstr."Sin.camb
3aee0 69 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 35 0a 6d 73 67 69 64 20 22 52 6f 75 6e io"..#:.config.py:95.msgid."Roun
3af00 64 20 74 68 65 20 57 65 69 67 68 74 73 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 68 75 6e 64 72 d.the.Weights.value.to.the.hundr
3af20 65 64 22 0a 6d 73 67 73 74 72 20 22 52 65 64 6f 6e 64 65 61 20 65 6c 20 76 61 6c 6f 72 20 64 65 ed".msgstr."Redondea.el.valor.de
3af40 20 63 61 72 67 61 20 61 20 63 69 65 6e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 36 0a .carga.a.cien"..#:.config.py:96.
3af60 6d 73 67 69 64 20 22 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 27 62 6f 6c msgid."Round.to.Bold.(value.'bol
3af80 64 27 29 22 0a 6d 73 67 73 74 72 20 22 52 65 64 6f 6e 64 61 20 61 20 6e 65 67 72 69 74 61 20 28 d')".msgstr."Redonda.a.negrita.(
3afa0 76 61 6c 6f 72 20 5c 22 62 6f 6c 64 5c 22 29 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 valor.\"bold\")"..#:.config.py:9
3afc0 37 0a 6d 73 67 69 64 20 22 44 6f 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 57 65 69 67 68 7.msgid."Do.not.change.the.Weigh
3afe0 74 73 22 0a 6d 73 67 73 74 72 20 22 4e 6f 20 63 61 6d 62 69 65 20 6c 61 20 63 61 72 67 61 22 0a ts".msgstr."No.cambie.la.carga".
3b000 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 38 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 57 .#:.config.py:98.msgid."Delete.W
3b020 65 69 67 68 74 73 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e 61 72 20 43 61 72 67 61 73 22 eights".msgstr."Eliminar.Cargas"
3b040 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 39 0a 6d 73 67 69 64 20 22 52 6f 75 6e 64 20 74 ..#:.config.py:99.msgid."Round.t
3b060 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 36 30 30 29 22 0a 6d 73 67 73 74 72 20 22 52 65 64 6f o.Bold.(value.600)".msgstr."Redo
3b080 6e 64 61 20 61 20 6e 65 67 72 69 74 61 20 28 76 61 6c 6f 72 20 36 30 30 29 22 0a 0a 23 3a 20 63 nda.a.negrita.(valor.600)"..#:.c
3b0a0 6f 6e 66 69 67 2e 70 79 3a 31 30 32 0a 6d 73 67 69 64 20 22 46 6f 72 63 65 20 74 68 65 20 6a 75 onfig.py:102.msgid."Force.the.ju
3b0c0 73 74 69 66 69 63 61 74 69 6f 6e 20 28 72 65 70 6c 61 63 65 20 5c 22 63 65 6e 74 65 72 5c 22 20 stification.(replace.\"center\".
3b0e0 61 6e 64 20 5c 22 72 69 67 68 74 5c 22 29 22 0a 6d 73 67 73 74 72 20 22 46 6f 72 7a 61 72 20 6c and.\"right\")".msgstr."Forzar.l
3b100 61 20 6a 75 73 74 69 66 69 63 61 63 69 c3 b3 6e 20 28 72 65 65 6d 70 6c 61 7a 61 72 20 5c 22 63 a.justificaci..n.(reemplazar.\"c
3b120 65 6e 74 72 6f 5c 22 20 79 20 5c 22 64 65 72 65 63 68 61 5c 22 29 22 0a 0a 23 3a 20 63 6f 6e 66 entro\".y.\"derecha\")"..#:.conf
3b140 69 67 2e 70 79 3a 31 30 33 0a 6d 73 67 69 64 20 22 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 66 ig.py:103.msgid."Justification.f
3b160 6f 72 20 69 6e 64 65 74 65 72 6d 69 6e 61 74 65 20 74 65 78 74 20 28 6b 65 65 70 20 5c 22 63 65 or.indeterminate.text.(keep.\"ce
3b180 6e 74 65 72 5c 22 20 61 6e 64 20 5c 22 72 69 67 68 74 5c 22 29 22 0a 6d 73 67 73 74 72 20 22 4a nter\".and.\"right\")".msgstr."J
3b1a0 75 73 74 69 66 69 63 61 63 69 c3 b3 6e 20 70 61 72 61 20 74 65 78 74 6f 20 69 6e 64 65 74 65 72 ustificaci..n.para.texto.indeter
3b1c0 6d 69 6e 61 64 6f 20 28 6d 61 6e 74 65 6e 67 61 20 5c 22 63 65 6e 74 72 6f 5c 22 20 79 20 5c 22 minado.(mantenga.\"centro\".y.\"
3b1e0 64 65 72 65 63 68 61 5c 22 29 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 35 0a 6d 73 derecha\")"..#:.config.py:105.ms
3b200 67 69 64 20 22 44 65 6c 65 74 65 20 61 6c 6c 20 61 6c 69 67 6e 6d 65 6e 74 22 0a 6d 73 67 73 74 gid."Delete.all.alignment".msgst
3b220 72 20 22 45 6c 69 6d 69 6e 61 72 20 74 6f 64 61 20 6c 61 20 61 6c 69 6e 65 61 63 69 c3 b3 6e 22 r."Eliminar.toda.la.alineaci..n"
3b240 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 38 0a 6d 73 67 69 64 20 22 55 73 65 20 74 68 ..#:.config.py:108.msgid."Use.th
3b260 65 20 27 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 27 20 73 65 74 74 69 6e 67 22 0a 6d 73 67 73 74 e.'Justification'.setting".msgst
3b280 72 20 22 55 74 69 6c 69 63 65 20 6c 61 20 63 6f 6e 66 69 67 75 72 61 63 69 c3 b3 6e 20 64 65 20 r."Utilice.la.configuraci..n.de.
3b2a0 27 4a 75 73 74 69 66 69 63 61 63 69 c3 b3 6e 27 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 'Justificaci..n'"..#:.config.py:
3b2c0 31 30 39 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 109.msgid."Delete.the.alignment.
3b2e0 69 6e 20 6c 69 73 74 73 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e 61 72 20 6c 61 20 61 6c in.lists".msgstr."Eliminar.la.al
3b300 69 6e 65 61 63 69 c3 b3 6e 20 65 6e 20 6c 69 73 74 61 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e ineaci..n.en.listas"..#:.config.
3b320 70 79 3a 31 31 32 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 5c 22 69 64 5c 22 20 61 74 74 72 py:112.msgid."Delete.\"id\".attr
3b340 69 62 75 74 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e 61 72 20 61 74 72 69 62 75 74 6f 20 ibut".msgstr."Eliminar.atributo.
3b360 5c 22 69 64 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 31 33 0a 6d 73 67 69 64 20 \"id\""..#:.config.py:113.msgid.
3b380 22 44 65 6c 65 74 65 20 5c 22 63 6c 61 73 73 5c 22 20 61 74 74 72 69 62 75 74 22 0a 6d 73 67 73 "Delete.\"class\".attribut".msgs
3b3a0 74 72 20 22 45 6c 69 6d 69 6e 61 72 20 65 6c 20 61 74 72 69 62 75 74 6f 20 5c 22 63 6c 61 73 73 tr."Eliminar.el.atributo.\"class
3b3c0 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 31 34 0a 6d 73 67 69 64 20 22 44 65 6c \""..#:.config.py:114.msgid."Del
3b3e0 65 74 65 20 5c 22 69 64 5c 22 20 61 6e 64 20 5c 22 63 6c 61 73 73 5c 22 20 61 74 74 72 69 62 75 ete.\"id\".and.\"class\".attribu
3b400 74 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e 61 72 20 65 6c 20 61 74 72 69 62 75 74 6f 20 t".msgstr."Eliminar.el.atributo.
3b420 5c 22 69 64 5c 22 20 79 20 5c 22 63 6c 61 73 73 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 \"id\".y.\"class\""..#:.config.p
3b440 79 3a 31 31 39 0a 6d 73 67 69 64 20 22 43 6f 6e 76 65 72 74 20 69 6e 20 61 6c 6c 20 63 6f 6d 6d y:119.msgid."Convert.in.all.comm
3b460 65 6e 74 73 20 28 6e 6f 74 20 72 65 63 6f 6d 61 6e 64 65 64 29 22 0a 6d 73 67 73 74 72 20 22 43 ents.(not.recomanded)".msgstr."C
3b480 6f 6e 76 65 72 74 69 72 20 65 6e 20 74 6f 64 6f 73 20 6c 6f 73 20 63 6f 6d 65 6e 74 61 72 69 6f onvertir.en.todos.los.comentario
3b4a0 73 20 28 6e 6f 20 72 65 63 6f 6d 65 6e 64 61 64 6f 29 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 s.(no.recomendado)"..#:.config.p
3b4c0 79 3a 31 32 30 0a 6d 73 67 69 64 20 22 43 6f 6e 76 65 72 74 20 6f 6e 6c 79 20 66 72 6f 6d 20 61 y:120.msgid."Convert.only.from.a
3b4e0 20 70 6c 61 69 6e 20 74 65 78 74 20 63 6f 6d 6d 65 6e 74 22 0a 6d 73 67 73 74 72 20 22 43 6f 6e .plain.text.comment".msgstr."Con
3b500 76 65 72 74 69 72 20 73 6f 6c 6f 20 64 65 73 64 65 20 75 6e 20 63 6f 6d 65 6e 74 61 72 69 6f 20 vertir.solo.desde.un.comentario.
3b520 64 65 20 74 65 78 74 6f 20 73 69 6e 20 66 6f 72 6d 61 74 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 de.texto.sin.formato"..#:.config
3b540 2e 70 79 3a 31 32 34 0a 6d 73 67 69 64 20 22 43 72 65 61 74 65 20 61 20 65 6d 70 74 79 20 70 61 .py:124.msgid."Create.a.empty.pa
3b560 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 43 72 65 61 20 75 6e 20 70 c3 a1 72 72 61 66 ragraph".msgstr."Crea.un.p..rraf
3b580 6f 20 76 61 63 c3 ad 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 35 20 63 6f 6e 66 o.vac..o"..#:.config.py:125.conf
3b5a0 69 67 2e 70 79 3a 31 32 39 0a 6d 73 67 69 64 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 20 70 61 ig.py:129.msgid."Create.a.new.pa
3b5c0 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 43 72 65 61 20 75 6e 20 6e 75 65 76 6f 20 70 ragraph".msgstr."Crea.un.nuevo.p
3b5e0 c3 a1 72 72 61 66 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 30 0a 6d 73 67 69 64 ..rrafo"..#:.config.py:130.msgid
3b600 20 22 52 65 70 6c 61 63 65 20 77 69 74 68 20 73 70 61 63 65 22 0a 6d 73 67 73 74 72 20 22 52 65 ."Replace.with.space".msgstr."Re
3b620 65 6d 70 6c 61 7a 61 72 20 63 6f 6e 20 65 73 70 61 63 69 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 emplazar.con.espacio"..#:.config
3b640 2e 70 79 3a 31 33 34 0a 6d 73 67 69 64 20 22 4d 65 72 67 65 20 69 6e 20 61 20 73 69 6e 67 6c 65 .py:134.msgid."Merge.in.a.single
3b660 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 43 6f 6d 62 69 6e .empty.paragraph".msgstr."Combin
3b680 61 72 20 65 6e 20 75 6e 20 73 6f 6c 6f 20 70 c3 a1 72 72 61 66 6f 20 76 61 63 c3 ad 6f 22 0a 0a ar.en.un.solo.p..rrafo.vac..o"..
3b6a0 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 36 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 65 #:.config.py:136.msgid."Delete.e
3b6c0 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e 61 72 mpty.paragraph".msgstr."Eliminar
3b6e0 20 70 c3 a1 72 72 61 66 6f 20 76 61 63 c3 ad 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a .p..rrafo.vac..o"..#:.config.py:
3b700 31 33 39 0a 6d 73 67 69 64 20 22 4b 65 65 70 20 69 6d 61 67 65 73 22 0a 6d 73 67 73 74 72 20 22 139.msgid."Keep.images".msgstr."
3b720 4d 61 6e 74 65 6e 65 72 20 69 6d c3 a1 67 65 6e 65 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 Mantener.im..genes"..#:.config.p
3b740 79 3a 31 34 30 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 69 6d 61 67 65 73 22 0a 6d 73 67 73 y:140.msgid."Delete.images".msgs
3b760 74 72 20 22 45 6c 69 6d 69 6e 61 72 20 69 6d c3 a1 67 65 6e 65 73 22 0a 0a 23 3a 20 63 6f 6e 66 tr."Eliminar.im..genes"..#:.conf
3b780 69 67 2e 70 79 3a 32 32 37 0a 6d 73 67 69 64 20 22 48 79 70 65 72 6c 69 6e 6b 3a 22 0a 6d 73 67 ig.py:227.msgid."Hyperlink:".msg
3b7a0 73 74 72 20 22 48 69 70 65 72 76 69 6e 63 75 6c 6f 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 str."Hipervinculo:"..#:.config.p
3b7c0 79 3a 32 33 34 0a 6d 73 67 69 64 20 22 48 65 61 64 69 6e 67 73 3a 22 0a 6d 73 67 73 74 72 20 22 y:234.msgid."Headings:".msgstr."
3b7e0 45 6e 63 61 62 65 7a 61 64 6f 73 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 34 34 0a Encabezados:"..#:.config.py:244.
3b800 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 49 74 61 6c 69 63 22 0a 6d 73 67 73 74 72 20 22 51 75 msgid."Remove.Italic".msgstr."Qu
3b820 69 74 61 72 20 63 75 72 73 69 76 61 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 34 38 0a itar.cursiva"..#:.config.py:248.
3b840 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 msgid."Remove.the.bold.if.all.pa
3b860 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e ragraphes.are.it".msgstr."Elimin
3b880 61 72 20 6e 65 67 72 69 74 61 73 20 73 69 20 74 6f 64 6f 73 20 6c 6f 73 20 70 c3 a1 72 72 61 66 ar.negritas.si.todos.los.p..rraf
3b8a0 6f 73 20 6c 61 20 74 69 65 6e 65 6e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 35 32 0a os.la.tienen"..#:.config.py:252.
3b8c0 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 69 74 61 6c 69 63 20 69 66 20 61 6c 6c 20 msgid."Remove.the.italic.if.all.
3b8e0 70 61 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d paragraphes.are.it".msgstr."Elim
3b900 69 6e 61 72 20 63 75 72 73 69 76 61 20 73 69 20 74 6f 64 6f 73 20 6c 6f 73 20 70 c3 a1 72 72 61 inar.cursiva.si.todos.los.p..rra
3b920 66 6f 73 20 6c 61 20 74 69 65 6e 65 6e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 35 36 fos.la.tienen"..#:.config.py:256
3b940 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 55 6e 64 65 72 6c 69 6e 65 22 0a 6d 73 67 73 74 72 .msgid."Remove.Underline".msgstr
3b960 20 22 51 75 69 74 61 72 20 73 75 62 72 61 79 61 64 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 ."Quitar.subrayado"..#:.config.p
3b980 79 3a 32 36 30 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 72 6f 75 67 y:260.msgid."Remove.Strikethroug
3b9a0 68 22 0a 6d 73 67 73 74 72 20 22 51 75 69 74 61 72 20 74 61 63 68 61 64 6f 22 0a 0a 23 3a 20 63 h".msgstr."Quitar.tachado"..#:.c
3b9c0 6f 6e 66 69 67 2e 70 79 3a 32 37 32 0a 6d 73 67 69 64 20 22 4a 75 73 74 69 66 69 63 61 74 69 6f onfig.py:272.msgid."Justificatio
3b9e0 6e 3a 22 0a 6d 73 67 73 74 72 20 22 4a 75 73 74 69 66 69 63 61 63 69 c3 b3 6e 3a 22 0a 0a 23 3a n:".msgstr."Justificaci..n:"..#:
3ba00 20 63 6f 6e 66 69 67 2e 70 79 3a 32 37 36 0a 6d 73 67 69 64 20 22 4c 69 73 74 20 61 6c 69 67 6e .config.py:276.msgid."List.align
3ba20 6d 65 6e 74 3a 22 0a 6d 73 67 73 74 72 20 22 41 6c 69 6e 65 61 63 69 c3 b3 6e 20 64 65 20 6c 69 ment:".msgstr."Alineaci..n.de.li
3ba40 73 74 61 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 38 30 0a 6d 73 67 69 64 20 22 49 sta:"..#:.config.py:280.msgid."I
3ba60 44 20 26 20 43 4c 41 53 53 20 61 74 74 72 69 62 75 74 73 3a 22 0a 6d 73 67 73 74 72 20 22 49 44 D.&.CLASS.attributs:".msgstr."ID
3ba80 20 26 20 43 4c 41 53 53 20 61 74 72 69 62 75 74 6f 73 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e .&.CLASS.atributos:"..#:.config.
3baa0 70 79 3a 32 38 35 0a 6d 73 67 69 64 20 22 43 75 73 74 6f 6d 20 43 53 53 20 72 75 6c 65 73 20 74 py:285.msgid."Custom.CSS.rules.t
3bac0 6f 20 6b 65 65 70 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 20 62 61 73 69 63 20 o.keep.in.addition.to.the.basic.
3bae0 6f 6e 65 73 2e 20 52 75 6c 65 73 20 73 65 70 61 72 61 74 65 64 20 62 79 20 61 20 73 70 61 63 65 ones..Rules.separated.by.a.space
3bb00 2e 22 0a 6d 73 67 73 74 72 20 22 52 65 67 6c 61 73 20 43 53 53 20 70 65 72 73 6f 6e 61 6c 69 7a .".msgstr."Reglas.CSS.personaliz
3bb20 61 64 61 73 20 70 61 72 61 20 6d 61 6e 74 65 6e 65 72 20 61 64 65 6d c3 a1 73 20 64 65 20 6c 61 adas.para.mantener.adem..s.de.la
3bb40 73 20 62 c3 a1 73 69 63 61 73 2e 20 52 65 67 6c 61 73 20 73 65 70 61 72 61 64 61 73 20 70 6f 72 s.b..sicas..Reglas.separadas.por
3bb60 20 75 6e 20 65 73 70 61 63 69 6f 2e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 38 36 0a .un.espacio."..#:.config.py:286.
3bb80 6d 73 67 69 64 20 22 43 53 53 20 72 75 6c 65 20 74 6f 20 6b 65 65 70 3a 22 0a 6d 73 67 73 74 72 msgid."CSS.rule.to.keep:".msgstr
3bba0 20 22 52 65 67 6c 61 20 43 53 53 20 70 61 72 61 20 6d 61 6e 74 65 6e 65 72 3a 22 0a 0a 23 3a 20 ."Regla.CSS.para.mantener:"..#:.
3bbc0 63 6f 6e 66 69 67 2e 70 79 3a 33 30 33 0a 6d 73 67 69 64 20 22 41 6c 6c 20 43 53 53 20 72 75 6c config.py:303.msgid."All.CSS.rul
3bbe0 65 73 20 61 72 65 20 6b 65 65 70 2e 22 0a 6d 73 67 73 74 72 20 22 54 6f 64 61 73 20 6c 61 73 20 es.are.keep.".msgstr."Todas.las.
3bc00 72 65 67 6c 61 73 20 43 53 53 20 73 65 20 6d 61 6e 74 69 65 6e 65 6e 2e 22 0a 0a 23 3a 20 63 6f reglas.CSS.se.mantienen."..#:.co
3bc20 6e 66 69 67 2e 70 79 3a 33 31 33 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 66 6f nfig.py:313.msgid."Remove.all.fo
3bc40 72 6d 61 74 74 69 6e 67 22 0a 6d 73 67 73 74 72 20 22 45 6c 69 6d 69 6e 61 72 20 74 6f 64 6f 20 rmatting".msgstr."Eliminar.todo.
3bc60 65 6c 20 66 6f 72 6d 61 74 6f 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 33 31 0a 6d 73 el.formato"..#:.config.py:331.ms
3bc80 67 69 64 20 22 4d 61 72 6b 64 6f 77 6e 3a 22 0a 6d 73 67 73 74 72 20 22 4d 61 72 6b 64 6f 77 6e gid."Markdown:".msgstr."Markdown
3bca0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 33 32 0a 6d 73 67 69 64 20 22 54 72 79 20 :"..#:.config.py:332.msgid."Try.
3bcc0 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 4d 61 72 6b 64 6f 77 6e 20 73 74 72 69 6e 67 73 20 to.convert.the.Markdown.strings.
3bce0 74 6f 20 48 54 4d 4c 22 0a 6d 73 67 73 74 72 20 22 49 6e 74 65 6e 74 61 20 63 6f 6e 76 65 72 74 to.HTML".msgstr."Intenta.convert
3bd00 69 72 20 6c 61 73 20 63 61 64 65 6e 61 73 20 64 65 20 4d 61 72 6b 64 6f 77 6e 20 61 20 48 54 4d ir.las.cadenas.de.Markdown.a.HTM
3bd20 4c 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 33 36 0a 6d 73 67 69 64 20 22 4d 75 6c 74 L"..#:.config.py:336.msgid."Mult
3bd40 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 iple.'Line.Return'.in.a.paragrap
3bd60 68 3a 22 0a 6d 73 67 73 74 72 20 22 4d c3 ba 6c 74 69 70 6c 65 73 20 27 52 65 74 6f 72 6e 6f 20 h:".msgstr."M..ltiples.'Retorno.
3bd80 64 65 20 6c c3 ad 6e 65 61 27 20 65 6e 20 75 6e 20 70 c3 a1 72 72 61 66 6f 3a 22 0a 0a 23 3a 20 de.l..nea'.en.un.p..rrafo:"..#:.
3bda0 63 6f 6e 66 69 67 2e 70 79 3a 33 34 30 0a 6d 73 67 69 64 20 22 53 69 6e 67 6c 65 20 27 4c 69 6e config.py:340.msgid."Single.'Lin
3bdc0 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 3a 22 0a 6d 73 67 73 74 e.Return'.in.a.paragraph:".msgst
3bde0 72 20 22 27 52 65 74 6f 72 6e 6f 20 64 65 20 6c c3 ad 6e 65 61 27 20 c3 ba 6e 69 63 6f 20 65 6e r."'Retorno.de.l..nea'...nico.en
3be00 20 75 6e 20 70 c3 a1 72 72 61 66 6f 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 34 32 .un.p..rrafo:"..#:.config.py:342
3be20 0a 6d 73 67 69 64 20 22 22 0a 22 54 68 69 73 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 61 70 70 .msgid.""."This.operation.is.app
3be40 6c 69 65 64 20 61 66 74 65 72 20 5c 22 4d 75 6c 74 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 lied.after.\"Multiple.'Line.Retu
3be60 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 61 70 68 5c 22 5c 6e 22 0a 22 61 6e 64 20 62 65 66 rn'.in.a.paragraph\"\n"."and.bef
3be80 6f 72 65 20 5c 22 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 5c 22 ore.\"Multiple.empty.paragraph\"
3bea0 22 0a 6d 73 67 73 74 72 20 22 22 0a 22 45 73 74 61 20 6f 70 65 72 61 63 69 c3 b3 6e 20 73 65 20 ".msgstr.""."Esta.operaci..n.se.
3bec0 61 70 6c 69 63 61 20 64 65 73 70 75 c3 a9 73 20 64 65 20 5c 22 4d c3 ba 6c 74 69 70 6c 65 73 20 aplica.despu..s.de.\"M..ltiples.
3bee0 27 52 65 74 6f 72 6e 6f 20 64 65 20 6c c3 ad 6e 65 61 27 20 65 6e 20 75 6e 20 70 c3 a1 72 72 61 'Retorno.de.l..nea'.en.un.p..rra
3bf00 66 6f 5c 22 5c 6e 22 0a 22 79 20 61 6e 74 65 73 20 64 65 20 5c 22 56 61 72 69 6f 73 20 70 c3 a1 fo\"\n"."y.antes.de.\"Varios.p..
3bf20 72 72 61 66 6f 73 20 76 61 63 c3 ad 6f 73 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a rrafos.vac..os\""..#:.config.py:
3bf40 33 34 38 0a 6d 73 67 69 64 20 22 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 348.msgid."Multiple.empty.paragr
3bf60 61 70 68 3a 22 0a 6d 73 67 73 74 72 20 22 4d c3 ba 6c 74 69 70 6c 65 73 20 70 c3 a1 72 72 61 66 aph:".msgstr."M..ltiples.p..rraf
3bf80 6f 73 20 76 61 63 c3 ad 6f 73 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 35 32 0a 6d os.vac..os:"..#:.config.py:352.m
3bfa0 73 67 69 64 20 22 49 6d 61 67 65 73 3a 22 0a 6d 73 67 73 74 72 20 22 49 6d c3 a1 67 65 6e 65 73 sgid."Images:".msgstr."Im..genes
3bfc0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 30 36 0a 6d 73 67 69 64 20 22 43 6f 6d 6d :"..#:.config.py:406.msgid."Comm
3bfe0 65 6e 74 73 20 43 6c 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 22 0a 6d 73 67 73 74 72 20 22 43 6f ents.Cleaner.Options".msgstr."Co
3c000 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 20 4f 70 63 69 6f 6e 65 73 22 0a 0a 23 3a 20 63 6f 6e mments.Cleaner.Opciones"..#:.con
3c020 66 69 67 2e 70 79 3a 34 31 34 0a 6d 73 67 69 64 20 22 41 70 70 6c 79 20 74 6f 20 6f 74 68 65 72 fig.py:414.msgid."Apply.to.other
3c040 73 20 63 75 73 74 6f 6d 20 48 54 4d 4c 20 63 6f 6c 75 6d 6e 73 22 0a 6d 73 67 73 74 72 20 22 41 s.custom.HTML.columns".msgstr."A
3c060 70 6c 69 63 61 72 20 61 20 6f 74 72 6f 73 20 63 6f 6c 75 6d 6e 61 73 20 48 54 4d 4c 20 70 65 72 plicar.a.otros.columnas.HTML.per
3c080 73 6f 6e 61 6c 69 7a 61 64 61 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 34 33 20 63 sonalizadas"..#:.config.py:443.c
3c0a0 6f 6e 66 69 67 2e 70 79 3a 34 37 34 0a 6d 73 67 69 64 20 22 4e 6f 74 65 73 20 43 6c 65 61 6e 65 onfig.py:474.msgid."Notes.Cleane
3c0c0 72 20 4f 70 74 69 6f 6e 73 22 0a 6d 73 67 73 74 72 20 22 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 r.Options".msgstr."Notes.Cleaner
3c0e0 20 4f 70 63 69 6f 6e 65 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 34 34 0a 6d 73 67 .Opciones"..#:.config.py:444.msg
3c100 69 64 20 22 45 64 69 74 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6e 6f 74 id."Edit.the.options.for.the.not
3c120 65 73 20 63 6c 65 61 6e 65 72 20 61 63 74 69 6f 6e 22 0a 6d 73 67 73 74 72 20 22 45 64 69 74 65 es.cleaner.action".msgstr."Edite
3c140 20 6c 61 73 20 6f 70 63 69 6f 6e 65 73 20 70 61 72 61 20 6c 61 20 61 63 63 69 c3 b3 6e 20 64 65 .las.opciones.para.la.acci..n.de
3c160 20 6c 69 6d 70 69 65 7a 61 20 64 65 20 6e 6f 74 61 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 .limpieza.de.notas"..#:.config.p
3c180 79 3a 34 35 35 0a 6d 73 67 69 64 20 22 43 75 73 74 6f 6d 69 7a 65 22 0a 6d 73 67 73 74 72 20 22 y:455.msgid."Customize".msgstr."
3c1a0 50 65 72 73 6f 6e 61 6c 69 7a 61 72 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 35 35 0a Personalizar"..#:.config.py:455.
3c1c0 6d 73 67 69 64 20 22 4e 6f 74 65 73 20 43 6c 65 61 6e 65 72 22 0a 6d 73 67 73 74 72 20 22 4c 69 msgid."Notes.Cleaner".msgstr."Li
3c1e0 6d 70 69 61 64 6f 72 20 64 65 20 6e 6f 74 61 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a mpiador.de.notas"..#:.config.py:
3c200 35 30 36 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 4e 6f 74 65 73 20 74 6f 20 63 6c 65 61 6e 506.msgid."Select.Notes.to.clean
3c220 22 0a 6d 73 67 73 74 72 20 22 53 65 6c 65 63 63 69 6f 6e 65 20 4e 6f 74 61 73 20 70 61 72 61 20 ".msgstr."Seleccione.Notas.para.
3c240 6c 69 6d 70 69 61 72 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 31 37 0a 6d 73 67 69 64 limpiar"..#:.config.py:517.msgid
3c260 20 22 53 75 62 73 65 74 20 6f 66 20 4e 6f 74 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 ."Subset.of.Notes.associate.to.t
3c280 68 65 20 63 75 72 72 65 6e 74 6c 79 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a 6d 73 67 he.currently.selected.books".msg
3c2a0 73 74 72 20 22 53 75 62 63 6f 6e 6a 75 6e 74 6f 20 64 65 20 6e 6f 74 61 73 20 61 73 6f 63 69 61 str."Subconjunto.de.notas.asocia
3c2c0 64 61 73 20 61 20 6c 6f 73 20 6c 69 62 72 6f 73 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 73 20 61 das.a.los.libros.seleccionados.a
3c2e0 63 74 75 61 6c 6d 65 6e 74 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 31 38 0a 6d 73 ctualmente"..#:.config.py:518.ms
3c300 67 69 64 20 22 4e 6f 20 62 6f 6f 6b 73 20 73 65 6c 65 63 74 65 64 22 0a 6d 73 67 73 74 72 20 22 gid."No.books.selected".msgstr."
3c320 4e 6f 20 68 61 79 20 6c 69 62 72 6f 73 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 73 22 0a 0a 23 3a No.hay.libros.seleccionados"..#:
3c340 20 63 6f 6e 66 69 67 2e 70 79 3a 35 31 39 0a 6d 73 67 69 64 20 22 4e 6f 20 6e 6f 74 65 73 20 66 .config.py:519.msgid."No.notes.f
3c360 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 or.{:d}.selected.books".msgstr."
3c380 4e 6f 20 68 61 79 20 6e 6f 74 61 73 20 70 61 72 61 20 7b 3a 64 7d 20 6c 69 62 72 6f 73 20 73 65 No.hay.notas.para.{:d}.libros.se
3c3a0 6c 65 63 63 69 6f 6e 61 64 6f 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 32 30 0a 6d leccionados"..#:.config.py:520.m
3c3c0 73 67 69 64 20 22 4e 6f 74 65 73 20 66 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f sgid."Notes.for.{:d}.selected.bo
3c3e0 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 4e 6f 74 61 73 20 70 61 72 61 20 7b 3a 64 7d 20 6c 69 62 oks".msgstr."Notas.para.{:d}.lib
3c400 72 6f 73 20 73 65 6c 65 63 63 69 6f 6e 61 64 6f 73 22 0a 50 4b 03 04 14 00 00 00 00 00 84 51 1c ros.seleccionados".PK.........Q.
3c420 5b 98 fd de 24 ac 38 00 00 ac 38 00 00 12 00 00 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 66 72 [...$.8...8......translations/fr
3c440 2e 70 6f 6d 73 67 69 64 20 22 22 0a 6d 73 67 73 74 72 20 22 22 0a 22 50 72 6f 6a 65 63 74 2d 49 .pomsgid."".msgstr.""."Project-I
3c460 64 2d 56 65 72 73 69 6f 6e 3a 20 5c 6e 22 0a 22 50 4f 54 2d 43 72 65 61 74 69 6f 6e 2d 44 61 74 d-Version:.\n"."POT-Creation-Dat
3c480 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 2b 30 32 30 30 5c 6e 22 0a 22 50 4f 2d e:.2025-08-28.10:12+0200\n"."PO-
3c4a0 52 65 76 69 73 69 6f 6e 2d 44 61 74 65 3a 20 32 30 32 35 2d 30 38 2d 32 38 20 31 30 3a 31 32 2b Revision-Date:.2025-08-28.10:12+
3c4c0 30 32 30 30 5c 6e 22 0a 22 4c 61 73 74 2d 54 72 61 6e 73 6c 61 74 6f 72 3a 20 5c 6e 22 0a 22 4c 0200\n"."Last-Translator:.\n"."L
3c4e0 61 6e 67 75 61 67 65 2d 54 65 61 6d 3a 20 5c 6e 22 0a 22 4c 61 6e 67 75 61 67 65 3a 20 66 72 5c anguage-Team:.\n"."Language:.fr\
3c500 6e 22 0a 22 4d 49 4d 45 2d 56 65 72 73 69 6f 6e 3a 20 31 2e 30 5c 6e 22 0a 22 43 6f 6e 74 65 6e n"."MIME-Version:.1.0\n"."Conten
3c520 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 55 54 46 2d t-Type:.text/plain;.charset=UTF-
3c540 38 5c 6e 22 0a 22 43 6f 6e 74 65 6e 74 2d 54 72 61 6e 73 66 65 72 2d 45 6e 63 6f 64 69 6e 67 3a 8\n"."Content-Transfer-Encoding:
3c560 20 38 62 69 74 5c 6e 22 0a 22 50 6c 75 72 61 6c 2d 46 6f 72 6d 73 3a 20 6e 70 6c 75 72 61 6c 73 .8bit\n"."Plural-Forms:.nplurals
3c580 3d 32 3b 20 70 6c 75 72 61 6c 3d 28 6e 20 3e 20 31 29 3b 5c 6e 22 0a 22 58 2d 47 65 6e 65 72 61 =2;.plural=(n.>.1);\n"."X-Genera
3c5a0 74 6f 72 3a 20 50 6f 65 64 69 74 20 33 2e 35 5c 6e 22 0a 22 58 2d 50 6f 65 64 69 74 2d 42 61 73 tor:.Poedit.3.5\n"."X-Poedit-Bas
3c5c0 65 70 61 74 68 3a 20 2e 2e 5c 6e 22 0a 22 58 2d 50 6f 65 64 69 74 2d 53 65 61 72 63 68 50 61 74 epath:...\n"."X-Poedit-SearchPat
3c5e0 68 2d 30 3a 20 2e 5c 6e 22 0a 0a 23 3a 20 5f 5f 69 6e 69 74 5f 5f 2e 70 79 3a 32 37 20 61 63 74 h-0:..\n"..#:.__init__.py:27.act
3c600 69 6f 6e 2e 70 79 3a 33 35 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 73 63 72 61 ion.py:35.msgid."Remove.the.scra
3c620 70 73 20 43 53 53 20 69 6e 20 48 54 4d 4c 20 63 6f 6d 6d 65 6e 74 73 22 0a 6d 73 67 73 74 72 20 ps.CSS.in.HTML.comments".msgstr.
3c640 22 53 75 70 70 72 69 6d 65 20 6c 65 73 20 72 c3 a9 67 6c 65 73 20 43 53 53 20 69 6e 64 c3 a9 73 "Supprime.les.r..gles.CSS.ind..s
3c660 69 72 61 62 6c 65 73 20 64 61 6e 73 20 6c 65 73 20 63 6f 6d 6d 65 6e 74 61 69 72 65 73 20 48 54 irables.dans.les.commentaires.HT
3c680 4d 4c 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 35 35 0a 6d 73 67 69 64 20 22 43 6c 65 61 ML"..#:.action.py:55.msgid."Clea
3c6a0 6e 20 74 68 65 20 73 65 6c 65 63 74 65 64 20 26 63 6f 6d 6d 65 6e 74 73 22 0a 6d 73 67 73 74 72 n.the.selected.&comments".msgstr
3c6c0 20 22 4e 65 74 74 6f 79 65 72 20 6c 65 73 20 26 63 6f 6d 6d 65 6e 74 61 69 72 65 73 20 73 c3 a9 ."Nettoyer.les.&commentaires.s..
3c6e0 6c 65 63 74 69 6f 6e 6e c3 a9 73 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 36 30 0a 6d 73 lectionn..s"..#:.action.py:60.ms
3c700 67 69 64 20 22 43 6c 65 61 6e 20 63 61 74 65 67 6f 72 79 20 26 6e 6f 74 65 73 22 0a 6d 73 67 73 gid."Clean.category.&notes".msgs
3c720 74 72 20 22 4e 65 74 74 6f 79 65 72 20 6c 65 73 20 26 6e 6f 74 65 73 20 64 65 73 20 63 61 74 c3 tr."Nettoyer.les.&notes.des.cat.
3c740 a9 67 6f 72 69 65 73 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 36 35 0a 6d 73 67 69 64 20 .gories"..#:.action.py:65.msgid.
3c760 22 26 43 75 73 74 6f 6d 69 7a 65 20 70 6c 75 67 69 6e e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 26 "&Customize.plugin...".msgstr."&
3c780 50 65 72 73 6f 6e 6e 61 6c 69 73 65 72 20 6c 27 65 78 74 65 6e 73 69 6f 6e e2 80 a6 22 0a 0a 23 Personnaliser.l'extension..."..#
3c7a0 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 31 38 0a 6d 73 67 69 64 20 22 55 70 64 61 74 65 20 74 68 :.action.py:218.msgid."Update.th
3c7c0 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d 20 62 6f 6f 6b 73 e2 80 a6 22 0a 6d 73 67 e.library.for.{:d}.books...".msg
3c7e0 73 74 72 20 22 4d 69 73 65 20 61 20 6a 6f 75 72 20 64 65 20 6c 61 20 62 69 62 6c 69 6f 74 68 c3 str."Mise.a.jour.de.la.biblioth.
3c800 a8 71 75 65 20 70 6f 75 72 20 7b 3a 64 7d 20 6c 69 76 72 65 73 e2 80 a6 22 0a 0a 23 3a 20 61 63 .que.pour.{:d}.livres..."..#:.ac
3c820 74 69 6f 6e 2e 70 79 3a 32 33 37 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 tion.py:237.common_utils/dialogs
3c840 2e 70 79 3a 32 37 39 0a 23 2c 20 70 79 74 68 6f 6e 2d 62 72 61 63 65 2d 66 6f 72 6d 61 74 0a 6d .py:279.#,.python-brace-format.m
3c860 73 67 69 64 20 22 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 70 72 6f 67 72 65 73 73 22 0a 6d 73 sgid."{PLUGIN_NAME}.progress".ms
3c880 67 73 74 72 20 22 50 72 6f 67 72 65 73 73 69 6f 6e 20 64 65 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d gstr."Progression.de.{PLUGIN_NAM
3c8a0 45 7d 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 32 35 39 0a 6d 73 67 69 64 20 22 4e 6f 74 E}"..#:.action.py:259.msgid."Not
3c8c0 65 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 22 0a 6d 73 67 73 74 72 20 22 4e 6f 74 65 20 7b 3a 64 e.{:d}.of.{:d}".msgstr."Note.{:d
3c8e0 7d 20 73 75 72 20 7b 3a 64 7d 22 0a 0a 23 3a 20 61 63 74 69 6f 6e 2e 70 79 3a 33 32 33 0a 6d 73 }.sur.{:d}"..#:.action.py:323.ms
3c900 67 69 64 20 22 55 70 64 61 74 65 20 74 68 65 20 6c 69 62 72 61 72 79 20 66 6f 72 20 7b 3a 64 7d gid."Update.the.library.for.{:d}
3c920 20 6e 6f 74 65 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 4d 69 73 65 20 61 20 6a 6f 75 72 20 64 .notes...".msgstr."Mise.a.jour.d
3c940 65 20 6c 61 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 20 7b 3a 64 7d 20 6e 6f 74 e.la.biblioth..que.pour.{:d}.not
3c960 65 73 e2 80 a6 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 5f 5f 69 6e 69 74 5f 5f es..."..#:.common_utils/__init__
3c980 2e 70 79 3a 34 33 34 0a 6d 73 67 69 64 20 22 59 6f 75 20 63 61 6e 6e 6f 74 20 63 6f 6e 66 69 67 .py:434.msgid."You.cannot.config
3c9a0 75 72 65 20 74 68 69 73 20 70 6c 75 67 69 6e 20 62 65 66 6f 72 65 20 63 61 6c 69 62 72 65 20 69 ure.this.plugin.before.calibre.i
3c9c0 73 20 72 65 73 74 61 72 74 65 64 2e 22 0a 6d 73 67 73 74 72 20 22 56 6f 75 73 20 6e 65 20 70 6f s.restarted.".msgstr."Vous.ne.po
3c9e0 75 76 65 7a 20 70 61 73 20 63 6f 6e 66 69 67 75 72 65 72 20 63 65 20 70 6c 75 67 69 6e 20 61 76 uvez.pas.configurer.ce.plugin.av
3ca00 61 6e 74 20 6c 65 20 72 65 64 c3 a9 6d 61 72 72 61 67 65 20 64 65 20 43 61 6c 69 62 72 65 2e 22 ant.le.red..marrage.de.Calibre."
3ca20 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 38 31 20 ..#:.common_utils/dialogs.py:81.
3ca40 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 31 35 0a 6d 73 67 69 common_utils/dialogs.py:115.msgi
3ca60 64 20 22 4b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 22 0a 6d 73 67 73 74 72 20 22 52 d."Keyboard.shortcuts".msgstr."R
3ca80 61 63 63 6f 75 72 63 69 73 20 63 6c 61 76 69 65 72 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 accourcis.clavier"..#:.common_ut
3caa0 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 31 38 0a 6d 73 67 69 64 20 22 45 64 69 74 20 74 ils/dialogs.py:118.msgid."Edit.t
3cac0 68 65 20 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 73 20 61 73 73 6f 63 69 61 74 65 64 he.keyboard.shortcuts.associated
3cae0 20 77 69 74 68 20 74 68 69 73 20 70 6c 75 67 69 6e 22 0a 6d 73 67 73 74 72 20 22 4d 6f 64 69 66 .with.this.plugin".msgstr."Modif
3cb00 69 65 72 20 6c 65 73 20 72 61 63 63 6f 75 72 63 69 73 20 63 6c 61 76 69 65 72 20 61 73 73 6f 63 ier.les.raccourcis.clavier.assoc
3cb20 69 c3 a9 73 20 c3 a0 20 63 65 74 74 65 20 65 78 74 65 6e 73 69 6f 6e 22 0a 0a 23 3a 20 63 6f 6d i..s....cette.extension"..#:.com
3cb40 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 33 34 0a 6d 73 67 69 64 20 22 mon_utils/dialogs.py:134.msgid."
3cb60 50 72 65 66 65 72 65 6e 63 65 73 20 66 6f 72 3a 22 0a 6d 73 67 73 74 72 20 22 50 72 c3 a9 66 c3 Preferences.for:".msgstr."Pr..f.
3cb80 a9 72 65 6e 63 65 73 20 70 6f 75 72 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c .rences.pour..:"..#:.common_util
3cba0 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 31 35 37 0a 6d 73 67 69 64 20 22 43 6c 65 61 72 20 61 6c s/dialogs.py:157.msgid."Clear.al
3cbc0 6c 20 73 65 74 74 69 6e 67 73 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 22 0a 6d 73 67 73 l.settings.for.this.plugin".msgs
3cbe0 74 72 20 22 45 66 66 61 63 65 72 20 74 6f 75 73 20 6c 65 73 20 70 61 72 61 6d c3 a8 74 72 65 73 tr."Effacer.tous.les.param..tres
3cc00 20 64 65 20 63 65 20 70 6c 75 67 69 6e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f .de.ce.plugin"..#:.common_utils/
3cc20 64 69 61 6c 6f 67 73 2e 70 79 3a 31 39 39 0a 6d 73 67 69 64 20 22 54 68 65 20 63 68 61 6e 67 65 dialogs.py:199.msgid."The.change
3cc40 73 20 63 61 6e 6e 6f 74 20 62 65 20 61 70 70 6c 69 65 64 2e 22 0a 6d 73 67 73 74 72 20 22 4c 65 s.cannot.be.applied.".msgstr."Le
3cc60 73 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 6e 65 20 70 65 75 76 65 6e 74 20 70 61 73 20 c3 s.modifications.ne.peuvent.pas..
3cc80 aa 74 72 65 20 61 70 70 6c 69 71 75 c3 a9 65 73 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 .tre.appliqu..es."..#:.common_ut
3cca0 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 30 33 0a 6d 73 67 69 64 20 22 41 72 65 20 79 6f ils/dialogs.py:203.msgid."Are.yo
3ccc0 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 68 61 6e 67 65 20 79 6f 75 72 20 73 u.sure.you.want.to.change.your.s
3cce0 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 69 73 ettings.in.this.library.for.this
3cd00 20 70 6c 75 67 69 6e 3f 22 0a 6d 73 67 73 74 72 20 22 c3 8a 74 65 73 2d 76 6f 75 73 20 73 c3 bb .plugin?".msgstr."..tes-vous.s..
3cd20 72 20 64 65 20 76 6f 75 6c 6f 69 72 20 6d 6f 64 69 66 69 65 72 20 76 6f 73 20 70 61 72 61 6d c3 r.de.vouloir.modifier.vos.param.
3cd40 a8 74 72 65 73 20 64 61 6e 73 20 63 65 74 74 65 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 .tres.dans.cette.biblioth..que.p
3cd60 6f 75 72 20 63 65 20 70 6c 75 67 69 6e c2 a0 3f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 our.ce.plugin..?"..#:.common_uti
3cd80 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 30 34 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 ls/dialogs.py:204.common_utils/d
3cda0 69 61 6c 6f 67 73 2e 70 79 3a 32 31 36 0a 6d 73 67 69 64 20 22 41 6e 79 20 73 65 74 74 69 6e 67 ialogs.py:216.msgid."Any.setting
3cdc0 73 20 69 6e 20 6f 74 68 65 72 20 6c 69 62 72 61 72 69 65 73 20 6f 72 20 73 74 6f 72 65 64 20 69 s.in.other.libraries.or.stored.i
3cde0 6e 20 61 20 4a 53 4f 4e 20 66 69 6c 65 20 69 6e 20 79 6f 75 72 20 63 61 6c 69 62 72 65 20 70 6c n.a.JSON.file.in.your.calibre.pl
3ce00 75 67 69 6e 73 20 66 6f 6c 64 65 72 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 74 6f 75 63 68 65 64 ugins.folder.will.not.be.touched
3ce20 2e 22 0a 6d 73 67 73 74 72 20 22 4c 65 73 20 70 61 72 61 6d c3 a8 74 72 65 73 20 70 72 c3 a9 73 .".msgstr."Les.param..tres.pr..s
3ce40 65 6e 74 73 20 64 61 6e 73 20 64 27 61 75 74 72 65 73 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 ents.dans.d'autres.biblioth..que
3ce60 73 20 6f 75 20 73 74 6f 63 6b c3 a9 73 20 64 61 6e 73 20 75 6e 20 66 69 63 68 69 65 72 20 4a 53 s.ou.stock..s.dans.un.fichier.JS
3ce80 4f 4e 20 64 61 6e 73 20 6c 65 20 64 6f 73 73 69 65 72 20 64 65 73 20 70 6c 75 67 69 6e 73 20 64 ON.dans.le.dossier.des.plugins.d
3cea0 65 20 43 61 6c 69 62 72 65 20 6e 65 20 73 65 72 6f 6e 74 20 70 61 73 20 6d 6f 64 69 66 69 c3 a9 e.Calibre.ne.seront.pas.modifi..
3cec0 73 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a s."..#:.common_utils/dialogs.py:
3cee0 32 31 35 0a 6d 73 67 69 64 20 22 41 72 65 20 79 6f 75 20 73 75 72 65 20 79 6f 75 20 77 61 6e 74 215.msgid."Are.you.sure.you.want
3cf00 20 74 6f 20 63 6c 65 61 72 20 79 6f 75 72 20 73 65 74 74 69 6e 67 73 20 69 6e 20 74 68 69 73 20 .to.clear.your.settings.in.this.
3cf20 6c 69 62 72 61 72 79 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 3f 22 0a 6d 73 67 73 74 72 library.for.this.plugin?".msgstr
3cf40 20 22 c3 8a 74 65 73 2d 76 6f 75 73 20 73 c3 bb 72 20 64 65 20 76 6f 75 6c 6f 69 72 20 65 66 66 ."..tes-vous.s..r.de.vouloir.eff
3cf60 61 63 65 72 20 76 6f 73 20 70 61 72 61 6d c3 a8 74 72 65 73 20 64 61 6e 73 20 63 65 74 74 65 20 acer.vos.param..tres.dans.cette.
3cf80 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 20 63 65 20 70 6c 75 67 69 6e c2 a0 3f 22 biblioth..que.pour.ce.plugin..?"
3cfa0 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 33 38 ..#:.common_utils/dialogs.py:238
3cfc0 0a 6d 73 67 69 64 20 22 56 69 65 77 20 6c 69 62 72 61 72 79 20 70 72 65 66 65 72 65 6e 63 65 73 .msgid."View.library.preferences
3cfe0 22 0a 6d 73 67 73 74 72 20 22 41 66 66 69 63 68 65 72 20 6c 65 73 20 70 72 c3 a9 66 c3 a9 72 65 ".msgstr."Afficher.les.pr..f..re
3d000 6e 63 65 73 20 64 65 20 6c 61 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 22 0a 0a 23 3a 20 63 6f nces.de.la.biblioth..que"..#:.co
3d020 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 33 39 0a 6d 73 67 69 64 20 mmon_utils/dialogs.py:239.msgid.
3d040 22 56 69 65 77 20 64 61 74 61 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 "View.data.stored.in.the.library
3d060 20 64 61 74 61 62 61 73 65 20 66 6f 72 20 74 68 69 73 20 70 6c 75 67 69 6e 22 0a 6d 73 67 73 74 .database.for.this.plugin".msgst
3d080 72 20 22 41 66 66 69 63 68 65 72 20 6c 65 73 20 64 6f 6e 6e c3 a9 65 73 20 73 74 6f 63 6b c3 a9 r."Afficher.les.donn..es.stock..
3d0a0 65 73 20 64 61 6e 73 20 6c 61 20 62 61 73 65 20 64 65 20 64 6f 6e 6e c3 a9 65 73 20 64 65 20 6c es.dans.la.base.de.donn..es.de.l
3d0c0 61 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 70 6f 75 72 20 63 65 20 70 6c 75 67 69 6e 22 0a a.biblioth..que.pour.ce.plugin".
3d0e0 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 32 36 39 0a .#:.common_utils/dialogs.py:269.
3d100 6d 73 67 69 64 20 22 43 61 6e 63 65 6c 22 0a 6d 73 67 73 74 72 20 22 41 6e 6e 75 6c 65 72 22 0a msgid."Cancel".msgstr."Annuler".
3d120 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 33 35 0a .#:.common_utils/dialogs.py:335.
3d140 6d 73 67 69 64 20 22 42 6f 6f 6b 20 7b 3a 64 7d 20 6f 66 20 7b 3a 64 7d 22 0a 6d 73 67 73 74 72 msgid."Book.{:d}.of.{:d}".msgstr
3d160 20 22 4c 69 76 72 65 20 7b 3a 64 7d 20 73 75 72 20 7b 3a 64 7d 22 0a 0a 23 3a 20 63 6f 6d 6d 6f ."Livre.{:d}.sur.{:d}"..#:.commo
3d180 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 37 31 0a 6d 73 67 69 64 20 22 43 6f n_utils/dialogs.py:371.msgid."Co
3d1a0 70 79 20 74 6f 20 63 6c 69 70 62 6f 61 72 64 22 0a 6d 73 67 73 74 72 20 22 43 6f 70 69 65 72 20 py.to.clipboard".msgstr."Copier.
3d1c0 64 61 6e 73 20 6c 65 20 70 72 65 73 73 65 2d 70 61 70 69 65 72 73 22 0a 0a 23 3a 20 63 6f 6d 6d dans.le.presse-papiers"..#:.comm
3d1e0 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 39 30 0a 6d 73 67 69 64 20 22 41 on_utils/dialogs.py:390.msgid."A
3d200 64 64 20 4e 65 77 20 49 6d 61 67 65 22 0a 6d 73 67 73 74 72 20 22 41 6a 6f 75 74 65 72 20 75 6e dd.New.Image".msgstr."Ajouter.un
3d220 65 20 6e 6f 75 76 65 6c 6c 65 20 69 6d 61 67 65 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 e.nouvelle.image"..#:.common_uti
3d240 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 33 39 38 0a 6d 73 67 69 64 20 22 26 53 65 6c 65 63 74 ls/dialogs.py:398.msgid."&Select
3d260 20 69 6d 61 67 65 20 73 6f 75 72 63 65 22 0a 6d 73 67 73 74 72 20 22 26 53 c3 a9 6c 65 63 74 69 .image.source".msgstr."&S..lecti
3d280 6f 6e 6e 65 72 20 6c 61 20 73 6f 75 72 63 65 20 64 65 20 6c 27 69 6d 61 67 65 22 0a 0a 23 3a 20 onner.la.source.de.l'image"..#:.
3d2a0 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 30 31 0a 6d 73 67 69 common_utils/dialogs.py:401.msgi
3d2c0 64 20 22 46 72 6f 6d 20 26 77 65 62 20 64 6f 6d 61 69 6e 20 66 61 76 69 63 6f 6e 22 0a 6d 73 67 d."From.&web.domain.favicon".msg
3d2e0 73 74 72 20 22 44 65 70 75 69 73 20 66 61 76 69 63 6f 6e 20 64 65 20 73 69 74 65 20 26 77 65 62 str."Depuis.favicon.de.site.&web
3d300 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 30 "..#:.common_utils/dialogs.py:40
3d320 38 0a 6d 73 67 69 64 20 22 46 72 6f 6d 20 2e 70 6e 67 20 26 66 69 6c 65 22 0a 6d 73 67 73 74 72 8.msgid."From..png.&file".msgstr
3d340 20 22 44 65 70 75 69 73 20 75 6e 20 26 66 69 63 68 69 65 72 20 2e 70 6e 67 22 0a 0a 23 3a 20 63 ."Depuis.un.&fichier..png"..#:.c
3d360 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 32 31 0a 6d 73 67 69 64 ommon_utils/dialogs.py:421.msgid
3d380 20 22 26 53 61 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 3a 22 0a 6d 73 67 73 74 72 20 22 26 45 ."&Save.as.filename:".msgstr."&E
3d3a0 6e 72 65 67 69 74 72 65 6d 65 6e 74 20 63 6f 6d 6d 65 20 6e 6f 6d 20 64 65 20 66 69 63 68 69 65 nregitrement.comme.nom.de.fichie
3d3c0 72 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 r..:"..#:.common_utils/dialogs.p
3d3e0 79 3a 34 34 34 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 61 20 2e 70 6e 67 20 66 69 6c 65 20 y:444.msgid."Select.a..png.file.
3d400 66 6f 72 20 74 68 65 20 6d 65 6e 75 20 69 63 6f 6e 22 0a 6d 73 67 73 74 72 20 22 53 c3 a9 6c 65 for.the.menu.icon".msgstr."S..le
3d420 63 74 69 6f 6e 6e 65 72 20 75 6e 20 66 69 63 68 69 65 72 20 2e 70 6e 67 20 70 6f 75 72 20 6c 27 ctionner.un.fichier..png.pour.l'
3d440 69 63 c3 b4 6e 65 20 64 75 20 6d 65 6e 75 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 ic..ne.du.menu"..#:.common_utils
3d460 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 35 32 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 /dialogs.py:452.common_utils/dia
3d480 6c 6f 67 73 2e 70 79 3a 34 36 31 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c logs.py:461.#:.common_utils/dial
3d4a0 6f 67 73 2e 70 79 3a 34 36 35 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e ogs.py:465.common_utils/dialogs.
3d4c0 70 79 3a 34 38 37 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 py:487.#:.common_utils/dialogs.p
3d4e0 79 3a 34 39 33 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 y:493.common_utils/dialogs.py:49
3d500 35 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 37 5.#:.common_utils/dialogs.py:497
3d520 0a 6d 73 67 69 64 20 22 43 61 6e 6e 6f 74 20 69 6d 70 6f 72 74 20 69 6d 61 67 65 22 0a 6d 73 67 .msgid."Cannot.import.image".msg
3d540 73 74 72 20 22 49 6d 70 6f 73 73 69 62 6c 65 20 64 27 69 6d 70 6f 72 74 65 72 20 6c 27 69 6d 61 str."Impossible.d'importer.l'ima
3d560 67 65 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a ge"..#:.common_utils/dialogs.py:
3d580 34 35 32 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 35 0a 452.common_utils/dialogs.py:495.
3d5a0 6d 73 67 69 64 20 22 53 6f 75 72 63 65 20 69 6d 61 67 65 20 6d 75 73 74 20 62 65 20 61 20 2e 70 msgid."Source.image.must.be.a..p
3d5c0 6e 67 20 66 69 6c 65 2e 22 0a 6d 73 67 73 74 72 20 22 4c 27 69 6d 61 67 65 20 73 6f 75 72 63 65 ng.file.".msgstr."L'image.source
3d5e0 20 64 6f 69 74 20 c3 aa 74 72 65 20 75 6e 20 66 69 63 68 69 65 72 20 2e 70 6e 67 2e 22 0a 0a 23 .doit...tre.un.fichier..png."..#
3d600 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 36 31 0a 6d 73 :.common_utils/dialogs.py:461.ms
3d620 67 69 64 20 22 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 66 69 6c 65 6e 61 6d 65 gid."You.must.specify.a.filename
3d640 20 74 6f 20 73 61 76 65 20 61 73 2e 22 0a 6d 73 67 73 74 72 20 22 56 6f 75 73 20 64 65 76 65 7a .to.save.as.".msgstr."Vous.devez
3d660 20 73 70 c3 a9 63 69 66 69 65 72 20 75 6e 20 6e 6f 6d 20 64 65 20 66 69 63 68 69 65 72 20 70 6f .sp..cifier.un.nom.de.fichier.po
3d680 75 72 20 6c 27 65 6e 72 65 67 69 73 74 72 65 72 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 ur.l'enregistrer."..#:.common_ut
3d6a0 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 36 36 0a 6d 73 67 69 64 20 22 54 68 65 20 73 61 ils/dialogs.py:466.msgid."The.sa
3d6c0 76 65 20 61 73 20 66 69 6c 65 6e 61 6d 65 20 73 68 6f 75 6c 64 20 63 6f 6e 73 69 73 74 20 6f 66 ve.as.filename.should.consist.of
3d6e0 20 61 20 66 69 6c 65 6e 61 6d 65 20 6f 6e 6c 79 2e 22 0a 6d 73 67 73 74 72 20 22 4c 27 65 6e 72 .a.filename.only.".msgstr."L'enr
3d700 65 67 69 74 72 65 6d 65 6e 74 20 65 6e 20 74 61 6e 74 20 71 75 65 20 6e 6f 6d 20 64 65 20 66 69 egitrement.en.tant.que.nom.de.fi
3d720 63 68 69 65 72 20 64 6f 69 74 20 63 6f 6e 73 69 73 74 65 72 20 75 6e 69 71 75 65 6d 65 6e 74 20 chier.doit.consister.uniquement.
3d740 65 6e 20 75 6e 20 6e 6f 6d 20 64 65 20 66 69 63 68 69 65 72 2e 22 0a 0a 23 3a 20 63 6f 6d 6d 6f en.un.nom.de.fichier."..#:.commo
3d760 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 37 34 0a 6d 73 67 69 64 20 22 41 72 n_utils/dialogs.py:474.msgid."Ar
3d780 65 20 79 6f 75 20 73 75 72 65 3f 22 0a 6d 73 67 73 74 72 20 22 c3 8a 74 65 73 2d 76 6f 75 73 20 e.you.sure?".msgstr."..tes-vous.
3d7a0 73 c3 bb 72 c2 a0 3f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 s..r..?"..#:.common_utils/dialog
3d7c0 73 2e 70 79 3a 34 37 35 0a 6d 73 67 69 64 20 22 41 6e 20 69 6d 61 67 65 20 77 69 74 68 20 74 68 s.py:475.msgid."An.image.with.th
3d7e0 69 73 20 6e 61 6d 65 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 20 2d 20 6f 76 65 72 77 72 69 is.name.already.exists.-.overwri
3d800 74 65 20 69 74 3f 22 0a 6d 73 67 73 74 72 20 22 55 6e 65 20 69 6d 61 67 65 20 70 6f 72 74 61 6e te.it?".msgstr."Une.image.portan
3d820 74 20 63 65 20 6e 6f 6d 20 65 78 69 73 74 65 20 64 c3 a9 6a c3 a0 2c 20 6c 27 c3 a9 63 72 61 73 t.ce.nom.existe.d..j..,.l'..cras
3d840 65 72 c2 a0 3f 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e er..?"..#:.common_utils/dialogs.
3d860 70 79 3a 34 38 37 0a 6d 73 67 69 64 20 22 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 py:487.msgid."You.must.specify.a
3d880 20 77 65 62 20 64 6f 6d 61 69 6e 20 75 72 6c 22 0a 6d 73 67 73 74 72 20 22 56 6f 75 73 20 64 65 .web.domain.url".msgstr."Vous.de
3d8a0 76 65 7a 20 73 70 c3 a9 63 69 66 69 65 72 20 75 6e 65 20 75 72 6c 20 64 65 20 73 69 74 65 20 77 vez.sp..cifier.une.url.de.site.w
3d8c0 65 62 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a eb"..#:.common_utils/dialogs.py:
3d8e0 34 39 33 0a 6d 73 67 69 64 20 22 59 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 20 61 20 73 6f 493.msgid."You.must.specify.a.so
3d900 75 72 63 65 20 66 69 6c 65 2e 22 0a 6d 73 67 73 74 72 20 22 56 6f 75 73 20 64 65 76 65 7a 20 73 urce.file.".msgstr."Vous.devez.s
3d920 70 c3 a9 63 69 66 69 65 72 20 75 6e 20 66 69 63 68 69 65 72 20 73 6f 75 72 63 65 2e 22 0a 0a 23 p..cifier.un.fichier.source."..#
3d940 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 34 39 37 0a 6d 73 :.common_utils/dialogs.py:497.ms
3d960 67 69 64 20 22 53 6f 75 72 63 65 20 69 6d 61 67 65 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 gid."Source.image.does.not.exist
3d980 21 22 0a 6d 73 67 73 74 72 20 22 4c 27 69 6d 61 67 65 20 73 6f 75 72 63 65 20 6e 27 65 78 69 73 !".msgstr."L'image.source.n'exis
3d9a0 74 65 20 70 61 73 c2 a0 21 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c te.pas..!"..#:.common_utils/dial
3d9c0 6f 67 73 2e 70 79 3a 35 30 35 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 61 20 5a 49 50 20 61 ogs.py:505.msgid."Select.a.ZIP.a
3d9e0 72 63 68 69 76 65 20 66 69 6c 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 22 0a 6d 73 67 73 74 72 rchive.file.to.import...".msgstr
3da00 20 22 53 c3 a9 6c 65 63 74 69 6f 6e 6e 65 7a 20 75 6e 20 66 69 63 68 69 65 72 20 64 27 61 72 63 ."S..lectionnez.un.fichier.d'arc
3da20 68 69 76 65 20 5a 49 50 20 c3 a0 20 69 6d 70 6f 72 74 65 72 e2 80 a6 22 0a 0a 23 3a 20 63 6f 6d hive.ZIP....importer..."..#:.com
3da40 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 31 37 0a 6d 73 67 69 64 20 22 mon_utils/dialogs.py:517.msgid."
3da60 53 61 76 65 20 5a 49 50 20 61 72 63 68 69 76 65 20 66 69 6c 65 20 61 73 e2 80 a6 22 0a 6d 73 67 Save.ZIP.archive.file.as...".msg
3da80 73 74 72 20 22 45 6e 72 65 67 69 73 74 72 65 72 20 6c 27 61 72 63 68 69 76 65 20 5a 49 50 20 73 str."Enregistrer.l'archive.ZIP.s
3daa0 6f 75 73 e2 80 a6 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 ous..."..#:.common_utils/dialogs
3dac0 2e 70 79 3a 35 33 30 0a 6d 73 67 69 64 20 22 53 65 6c 65 63 74 20 61 20 4a 53 4f 4e 20 66 69 6c .py:530.msgid."Select.a.JSON.fil
3dae0 65 20 74 6f 20 69 6d 70 6f 72 74 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 53 c3 a9 6c 65 63 74 69 e.to.import...".msgstr."S..lecti
3db00 6f 6e 6e 65 7a 20 75 6e 20 66 69 63 68 69 65 72 20 4a 53 4f 4e 20 c3 a0 20 69 6d 70 6f 72 74 65 onnez.un.fichier.JSON....importe
3db20 72 e2 80 a6 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 r..."..#:.common_utils/dialogs.p
3db40 79 3a 35 34 32 0a 6d 73 67 69 64 20 22 53 61 76 65 20 74 68 65 20 4a 53 4f 4e 20 66 69 6c 65 20 y:542.msgid."Save.the.JSON.file.
3db60 61 73 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 45 6e 72 65 67 69 73 74 72 65 72 20 6c 65 20 66 69 as...".msgstr."Enregistrer.le.fi
3db80 63 68 69 65 72 20 4a 53 4f 4e 20 73 6f 75 73 e2 80 a6 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 chier.JSON.sous..."..#:.common_u
3dba0 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 37 39 0a 23 2c 20 70 79 74 68 6f 6e 2d 62 72 tils/dialogs.py:579.#,.python-br
3dbc0 61 63 65 2d 66 6f 72 6d 61 74 0a 6d 73 67 69 64 20 22 54 68 65 20 7b 50 4c 55 47 49 4e 5f 4e 41 ace-format.msgid."The.{PLUGIN_NA
3dbe0 4d 45 7d 20 70 6c 75 67 69 6e 20 68 61 73 20 65 6e 63 6f 75 6e 74 65 72 20 61 20 75 6e 68 61 6e ME}.plugin.has.encounter.a.unhan
3dc00 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 2e 22 0a 6d 73 67 73 74 72 20 22 4c 65 20 70 6c 75 67 dled.exception.".msgstr."Le.plug
3dc20 69 6e 20 7b 50 4c 55 47 49 4e 5f 4e 41 4d 45 7d 20 61 20 72 65 6e 63 6f 6e 74 72 c3 a9 20 75 6e in.{PLUGIN_NAME}.a.rencontr...un
3dc40 65 20 65 78 63 65 70 74 69 6f 6e 20 6e 6f 6e 20 67 c3 a9 72 c3 a9 65 2e 22 0a 0a 23 3a 20 63 6f e.exception.non.g..r..e."..#:.co
3dc60 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 3a 35 39 33 0a 6d 73 67 69 64 20 mmon_utils/dialogs.py:593.msgid.
3dc80 22 55 6e 68 61 6e 64 6c 65 64 20 65 78 63 65 70 74 69 6f 6e 22 0a 6d 73 67 73 74 72 20 22 45 78 "Unhandled.exception".msgstr."Ex
3dca0 63 65 70 74 69 6f 6e 20 6e 6f 6e 20 67 c3 a9 72 c3 a9 65 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f ception.non.g..r..e"..#:.common_
3dcc0 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 34 39 0a 6d 73 67 69 64 20 22 43 6f 75 6c utils/librarys.py:49.msgid."Coul
3dce0 64 20 6e 6f 74 20 74 6f 20 6c 61 75 6e 63 68 20 7b 3a 73 7d 22 0a 6d 73 67 73 74 72 20 22 49 6d d.not.to.launch.{:s}".msgstr."Im
3dd00 70 6f 73 73 69 62 6c 65 20 64 65 20 6c 61 6e 63 65 72 20 7b 3a 73 7d 22 0a 0a 23 3a 20 63 6f 6d possible.de.lancer.{:s}"..#:.com
3dd20 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 36 38 0a 6d 73 67 69 64 20 22 mon_utils/librarys.py:68.msgid."
3dd40 4e 6f 20 62 6f 6f 6b 20 73 65 6c 65 63 74 65 64 22 0a 6d 73 67 73 74 72 20 22 41 75 63 75 6e 20 No.book.selected".msgstr."Aucun.
3dd60 6c 69 76 72 65 20 73 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f livre.s..lectionn.."..#:.common_
3dd80 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 37 34 0a 6d 73 67 69 64 20 22 4e 6f 20 62 utils/librarys.py:74.msgid."No.b
3dda0 6f 6f 6b 20 69 6e 20 74 68 65 20 6c 69 62 72 61 72 79 22 0a 6d 73 67 73 74 72 20 22 50 61 73 20 ook.in.the.library".msgstr."Pas.
3ddc0 64 65 20 6c 69 76 72 65 73 20 64 61 6e 73 20 62 69 62 6c 69 6f 74 68 c3 a8 71 75 65 22 0a 0a 23 de.livres.dans.biblioth..que"..#
3dde0 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 38 30 20 63 6f :.common_utils/librarys.py:80.co
3de00 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 38 37 0a 6d 73 67 69 64 20 mmon_utils/librarys.py:87.msgid.
3de20 22 4e 6f 20 62 6f 6f 6b 20 69 6e 20 74 68 65 20 76 69 72 74 75 61 6c 20 6c 69 62 72 61 72 79 22 "No.book.in.the.virtual.library"
3de40 0a 6d 73 67 73 74 72 20 22 50 61 73 20 64 65 20 6c 69 76 72 65 73 20 64 61 6e 73 20 6c 61 20 62 .msgstr."Pas.de.livres.dans.la.b
3de60 69 62 6c 69 6f 74 68 c3 a8 71 75 65 20 76 69 72 74 75 65 6c 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e iblioth..que.virtuel"..#:.common
3de80 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 3a 39 33 0a 6d 73 67 69 64 20 22 4e 6f 20 _utils/librarys.py:93.msgid."No.
3dea0 62 6f 6f 6b 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 65 61 72 63 68 22 0a 6d 73 67 73 book.in.the.current.search".msgs
3dec0 74 72 20 22 50 61 73 20 64 65 20 6c 69 76 72 65 73 20 64 61 6e 73 20 6c 61 20 72 65 63 68 65 72 tr."Pas.de.livres.dans.la.recher
3dee0 63 68 65 20 61 63 74 75 65 6c 6c 65 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 che.actuelle"..#:.common_utils/t
3df00 65 6d 70 6c 61 74 65 73 2e 70 79 3a 34 39 0a 6d 73 67 69 64 20 22 55 6e 6b 6e 6f 77 6e 22 0a 6d emplates.py:49.msgid."Unknown".m
3df20 73 67 73 74 72 20 22 49 6e 63 6f 6e 75 65 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 sgstr."Inconue"..#:.common_utils
3df40 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 35 36 0a 6d 73 67 69 64 20 22 54 65 6d 70 6c 61 74 65 /templates.py:56.msgid."Template
3df60 20 45 72 72 6f 72 22 0a 6d 73 67 73 74 72 20 22 45 72 72 65 75 72 20 64 65 20 6d 6f 64 c3 a8 6c .Error".msgstr."Erreur.de.mod..l
3df80 65 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 e"..#:.common_utils/templates.py
3dfa0 3a 35 37 0a 6d 73 67 69 64 20 22 52 75 6e 6e 69 6e 67 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 :57.msgid."Running.the.template.
3dfc0 72 65 74 75 72 6e 65 64 20 61 6e 20 65 72 72 6f 72 3a 22 0a 6d 73 67 73 74 72 20 22 4c 27 65 78 returned.an.error:".msgstr."L'ex
3dfe0 c3 a9 63 75 74 69 6f 6e 20 64 75 20 6d 6f 64 c3 a8 6c 65 20 61 20 72 65 6e 76 6f 79 c3 a9 20 75 ..cution.du.mod..le.a.renvoy...u
3e000 6e 65 20 65 72 72 65 75 72 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 ne.erreur..:"..#:.common_utils/t
3e020 65 6d 70 6c 61 74 65 73 2e 70 79 3a 37 30 0a 6d 73 67 69 64 20 22 45 6e 74 65 72 20 61 20 74 65 emplates.py:70.msgid."Enter.a.te
3e040 6d 70 6c 61 74 65 20 74 6f 20 74 65 73 74 20 75 73 69 6e 67 20 64 61 74 61 20 66 72 6f 6d 20 74 mplate.to.test.using.data.from.t
3e060 68 65 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 22 0a 6d 73 67 73 74 72 20 22 53 61 69 73 69 73 he.selected.book".msgstr."Saisis
3e080 73 65 7a 20 75 6e 20 6d 6f 64 c3 a8 6c 65 20 c3 a0 20 74 65 73 74 65 72 20 65 6e 20 75 74 69 6c sez.un.mod..le....tester.en.util
3e0a0 69 73 61 6e 74 20 6c 65 73 20 64 6f 6e 6e c3 a9 65 73 20 64 75 20 6c 69 76 72 65 20 73 c3 a9 6c isant.les.donn..es.du.livre.s..l
3e0c0 65 63 74 69 6f 6e 6e c3 a9 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 ectionn.."..#:.common_utils/temp
3e0e0 6c 61 74 65 73 2e 70 79 3a 37 37 0a 6d 73 67 69 64 20 22 54 65 6d 70 6c 61 74 65 20 65 64 69 74 lates.py:77.msgid."Template.edit
3e100 6f 72 22 0a 6d 73 67 73 74 72 20 22 c3 89 64 69 74 65 75 72 20 64 65 20 6d 6f 64 c3 a8 6c 65 22 or".msgstr."..diteur.de.mod..le"
3e120 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 31 ..#:.common_utils/templates.py:1
3e140 30 36 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 6c 61 74 65 73 2e 70 79 3a 31 30 39 06.common_utils/templates.py:109
3e160 0a 6d 73 67 69 64 20 22 4f 70 65 6e 20 74 68 65 20 74 65 6d 70 6c 61 74 65 20 65 64 69 74 6f 72 .msgid."Open.the.template.editor
3e180 22 0a 6d 73 67 73 74 72 20 22 4f 75 76 72 69 72 20 6c 27 c3 a9 64 69 74 65 75 72 20 64 65 20 6d ".msgstr."Ouvrir.l'..diteur.de.m
3e1a0 6f 64 c3 a8 6c 65 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 od..le"..#:.common_utils/widgets
3e1c0 2e 70 79 3a 38 36 0a 6d 73 67 69 64 20 22 52 65 73 74 61 72 74 20 72 65 71 75 69 72 65 64 22 0a .py:86.msgid."Restart.required".
3e1e0 6d 73 67 73 74 72 20 22 52 65 64 c3 a9 6d 61 72 72 61 67 65 20 6e c3 a9 63 65 73 73 61 69 72 65 msgstr."Red..marrage.n..cessaire
3e200 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 38 37 "..#:.common_utils/widgets.py:87
3e220 0a 6d 73 67 69 64 20 22 54 69 74 6c 65 20 69 6d 61 67 65 20 6e 6f 74 20 66 6f 75 6e 64 20 2d 20 .msgid."Title.image.not.found.-.
3e240 79 6f 75 20 6d 75 73 74 20 72 65 73 74 61 72 74 20 43 61 6c 69 62 72 65 20 62 65 66 6f 72 65 20 you.must.restart.Calibre.before.
3e260 75 73 69 6e 67 20 74 68 69 73 20 70 6c 75 67 69 6e 21 22 0a 6d 73 67 73 74 72 20 22 4c 27 69 6d using.this.plugin!".msgstr."L'im
3e280 61 67 65 20 64 27 69 63 6f 6e 65 20 6e 27 61 20 70 61 73 20 c3 a9 74 61 69 74 20 74 72 6f 75 76 age.d'icone.n'a.pas...tait.trouv
3e2a0 c3 a9 65 20 2d 20 76 6f 75 73 20 64 65 76 72 69 65 7a 20 6d 69 65 75 78 20 72 65 64 c3 a9 6d 61 ..e.-.vous.devriez.mieux.red..ma
3e2c0 72 72 65 72 20 43 61 6c 69 62 72 65 20 61 76 61 6e 74 20 64 27 75 74 69 6c 69 73 65 72 20 63 65 rrer.Calibre.avant.d'utiliser.ce
3e2e0 20 70 6c 75 67 69 6e c2 a0 21 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 .plugin..!"..#:.common_utils/wid
3e300 67 65 74 73 2e 70 79 3a 31 34 34 0a 6d 73 67 69 64 20 22 55 6e 64 65 66 69 6e 65 64 22 0a 6d 73 gets.py:144.msgid."Undefined".ms
3e320 67 73 74 72 20 22 4e 6f 6e 20 64 c3 a9 66 69 6e 69 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 gstr."Non.d..fini"..#:.common_ut
3e340 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 32 39 38 0a 6d 73 67 69 64 20 22 53 75 62 73 65 74 ils/widgets.py:298.msgid."Subset
3e360 20 6f 66 20 76 61 6c 75 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 65 20 62 6f 6f 6b .of.values.associate.to.the.book
3e380 73 22 0a 6d 73 67 73 74 72 20 22 53 6f 75 73 2d 65 6e 73 65 6d 62 6c 65 20 64 65 20 76 61 6c 65 s".msgstr."Sous-ensemble.de.vale
3e3a0 75 72 73 20 61 73 73 6f 63 69 c3 a9 65 73 20 61 75 78 20 6c 69 76 72 65 73 22 0a 0a 23 3a 20 63 urs.associ..es.aux.livres"..#:.c
3e3c0 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 32 39 39 0a 6d 73 67 69 64 ommon_utils/widgets.py:299.msgid
3e3e0 20 22 4e 6f 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 41 75 63 75 6e 20 6c 69 76 72 65 22 ."No.books".msgstr."Aucun.livre"
3e400 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 33 30 30 ..#:.common_utils/widgets.py:300
3e420 0a 6d 73 67 69 64 20 22 7b 3a 64 7d 20 62 6f 6f 6b 73 20 28 6e 6f 20 76 61 6c 75 65 73 29 22 0a .msgid."{:d}.books.(no.values)".
3e440 6d 73 67 73 74 72 20 22 7b 3a 64 7d 20 6c 69 76 72 65 73 20 28 70 61 73 20 64 65 20 76 61 6c 65 msgstr."{:d}.livres.(pas.de.vale
3e460 75 72 73 29 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 urs)"..#:.common_utils/widgets.p
3e480 79 3a 33 30 31 0a 6d 73 67 69 64 20 22 7b 3a 64 7d 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 y:301.msgid."{:d}.books".msgstr.
3e4a0 22 7b 3a 64 7d 20 6c 69 76 72 65 73 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 77 "{:d}.livres"..#:.common_utils/w
3e4c0 69 64 67 65 74 73 2e 70 79 3a 34 32 36 0a 6d 73 67 69 64 20 22 4e 6f 20 6e 6f 74 65 73 22 0a 6d idgets.py:426.msgid."No.notes".m
3e4e0 73 67 73 74 72 20 22 41 75 63 75 6e 65 20 6e 6f 74 65 73 22 0a 0a 23 3a 20 63 6f 6d 6d 6f 6e 5f sgstr."Aucune.notes"..#:.common_
3e500 75 74 69 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 3a 34 38 30 0a 6d 73 67 69 64 20 22 41 64 64 20 utils/widgets.py:480.msgid."Add.
3e520 4e 65 77 20 49 6d 61 67 65 e2 80 a6 22 0a 6d 73 67 73 74 72 20 22 41 6a 6f 75 74 65 72 20 75 6e New.Image...".msgstr."Ajouter.un
3e540 65 20 6e 6f 75 76 65 6c 6c 65 20 69 6d 61 67 65 e2 80 a6 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e e.nouvelle.image..."..#:.config.
3e560 70 79 3a 38 36 0a 6d 73 67 69 64 20 22 4b 65 65 70 20 55 52 4c 22 0a 6d 73 67 73 74 72 20 22 43 py:86.msgid."Keep.URL".msgstr."C
3e580 6f 6e 73 65 72 76 65 72 20 6c 65 73 20 55 52 4c 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a onserver.les.URL"..#:.config.py:
3e5a0 38 37 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 55 52 4c 22 0a 6d 73 67 73 74 72 20 22 53 75 87.msgid."Delete.URL".msgstr."Su
3e5c0 70 70 72 69 6d 65 72 20 6c 65 73 20 55 52 4c 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 pprimer.les.URL"..#:.config.py:9
3e5e0 30 0a 6d 73 67 69 64 20 22 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 0.msgid."Converte.to.a.paragraph
3e600 22 0a 6d 73 67 73 74 72 20 22 43 6f 6e 76 65 72 74 69 72 20 65 6e 20 70 61 72 61 67 72 61 70 68 ".msgstr."Convertir.en.paragraph
3e620 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 31 0a 6d 73 67 69 64 20 22 43 6f 6e 76 65 e"..#:.config.py:91.msgid."Conve
3e640 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 20 62 75 74 20 6b 65 65 70 20 74 68 65 20 rte.to.a.paragraph.but.keep.the.
3e660 62 6f 6c 64 22 0a 6d 73 67 73 74 72 20 22 43 6f 6e 76 65 72 74 69 72 20 65 6e 20 70 61 72 61 67 bold".msgstr."Convertir.en.parag
3e680 72 61 70 68 65 20 6d 61 69 73 20 63 6f 6e 73 65 72 76 65 72 20 6c 65 20 67 72 61 73 22 0a 0a 23 raphe.mais.conserver.le.gras"..#
3e6a0 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 32 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 34 20 63 6f 6e :.config.py:92.config.py:104.con
3e6c0 66 69 67 2e 70 79 3a 31 31 35 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 31 20 63 6f 6e 66 69 67 2e fig.py:115.config.py:121.config.
3e6e0 70 79 3a 31 32 36 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 31 20 63 6f 6e 66 69 67 2e 70 py:126.#:.config.py:131.config.p
3e700 79 3a 31 33 35 0a 6d 73 67 69 64 20 22 4e 6f 20 63 68 61 6e 67 65 22 0a 6d 73 67 73 74 72 20 22 y:135.msgid."No.change".msgstr."
3e720 41 75 63 75 6e 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e Aucune.modification"..#:.config.
3e740 70 79 3a 39 35 0a 6d 73 67 69 64 20 22 52 6f 75 6e 64 20 74 68 65 20 57 65 69 67 68 74 73 20 76 py:95.msgid."Round.the.Weights.v
3e760 61 6c 75 65 20 74 6f 20 74 68 65 20 68 75 6e 64 72 65 64 22 0a 6d 73 67 73 74 72 20 22 41 72 72 alue.to.the.hundred".msgstr."Arr
3e780 6f 6e 64 69 72 20 6c 61 20 76 61 6c 65 75 72 20 64 65 20 6c 61 20 47 72 61 69 73 73 65 20 61 20 ondir.la.valeur.de.la.Graisse.a.
3e7a0 6c 61 20 63 65 6e 74 61 69 6e 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 36 0a 6d 73 la.centaine"..#:.config.py:96.ms
3e7c0 67 69 64 20 22 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 27 62 6f 6c 64 27 gid."Round.to.Bold.(value.'bold'
3e7e0 29 22 0a 6d 73 67 73 74 72 20 22 41 72 72 6f 6e 64 69 72 20 61 75 20 47 72 61 73 20 28 76 61 6c )".msgstr."Arrondir.au.Gras.(val
3e800 65 75 72 20 5c 22 62 6f 6c 64 5c 22 29 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 37 0a eur.\"bold\")"..#:.config.py:97.
3e820 6d 73 67 69 64 20 22 44 6f 20 6e 6f 74 20 63 68 61 6e 67 65 20 74 68 65 20 57 65 69 67 68 74 73 msgid."Do.not.change.the.Weights
3e840 22 0a 6d 73 67 73 74 72 20 22 4e 65 20 70 61 73 20 63 68 61 6e 67 65 72 20 6c 61 20 47 72 61 69 ".msgstr."Ne.pas.changer.la.Grai
3e860 73 73 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 38 0a 6d 73 67 69 64 20 22 44 65 6c sse"..#:.config.py:98.msgid."Del
3e880 65 74 65 20 57 65 69 67 68 74 73 22 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c ete.Weights".msgstr."Supprimer.l
3e8a0 61 20 47 72 61 69 73 73 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 39 39 0a 6d 73 67 69 a.Graisse"..#:.config.py:99.msgi
3e8c0 64 20 22 52 6f 75 6e 64 20 74 6f 20 42 6f 6c 64 20 28 76 61 6c 75 65 20 36 30 30 29 22 0a 6d 73 d."Round.to.Bold.(value.600)".ms
3e8e0 67 73 74 72 20 22 41 72 72 6f 6e 64 69 72 20 61 75 20 47 72 61 73 20 28 76 61 6c 65 75 72 20 36 gstr."Arrondir.au.Gras.(valeur.6
3e900 30 30 29 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 32 0a 6d 73 67 69 64 20 22 46 6f 00)"..#:.config.py:102.msgid."Fo
3e920 72 63 65 20 74 68 65 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 28 72 65 70 6c 61 63 65 20 5c rce.the.justification.(replace.\
3e940 22 63 65 6e 74 65 72 5c 22 20 61 6e 64 20 5c 22 72 69 67 68 74 5c 22 29 22 0a 6d 73 67 73 74 72 "center\".and.\"right\")".msgstr
3e960 20 22 46 6f 72 63 65 72 20 6c 61 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 28 72 65 6d 70 6c ."Forcer.la.justification.(rempl
3e980 61 63 65 72 20 5c 22 63 65 6e 74 65 72 5c 22 20 65 74 20 5c 22 72 69 67 68 74 5c 22 29 22 0a 0a acer.\"center\".et.\"right\")"..
3e9a0 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 33 0a 6d 73 67 69 64 20 22 4a 75 73 74 69 66 69 63 #:.config.py:103.msgid."Justific
3e9c0 61 74 69 6f 6e 20 66 6f 72 20 69 6e 64 65 74 65 72 6d 69 6e 61 74 65 20 74 65 78 74 20 28 6b 65 ation.for.indeterminate.text.(ke
3e9e0 65 70 20 5c 22 63 65 6e 74 65 72 5c 22 20 61 6e 64 20 5c 22 72 69 67 68 74 5c 22 29 22 0a 6d 73 ep.\"center\".and.\"right\")".ms
3ea00 67 73 74 72 20 22 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 70 6f 75 72 20 6c 65 20 74 65 78 74 gstr."Justification.pour.le.text
3ea20 65 20 69 6e 64 c3 a9 74 65 72 6d 69 6e c3 a9 20 28 63 6f 6e 73 65 72 76 65 72 20 5c 22 63 65 6e e.ind..termin...(conserver.\"cen
3ea40 74 65 72 5c 22 20 65 74 20 5c 22 72 69 67 68 74 5c 22 29 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e ter\".et.\"right\")"..#:.config.
3ea60 70 79 3a 31 30 35 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 61 6c 6c 20 61 6c 69 67 6e 6d 65 py:105.msgid."Delete.all.alignme
3ea80 6e 74 22 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 74 6f 75 73 20 6c 65 73 20 61 nt".msgstr."Supprimer.tous.les.a
3eaa0 6c 69 67 6e 65 6d 65 6e 74 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 30 38 0a 6d 73 67 lignement"..#:.config.py:108.msg
3eac0 69 64 20 22 55 73 65 20 74 68 65 20 27 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 27 20 73 65 74 74 id."Use.the.'Justification'.sett
3eae0 69 6e 67 22 0a 6d 73 67 73 74 72 20 22 55 74 69 6c 69 73 65 7a 20 6c 65 20 70 61 72 61 6d c3 a8 ing".msgstr."Utilisez.le.param..
3eb00 74 72 65 20 5c 22 4a 75 73 74 69 66 69 63 61 74 69 6f 6e 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 tre.\"Justification\""..#:.confi
3eb20 67 2e 70 79 3a 31 30 39 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 74 68 65 20 61 6c 69 67 6e g.py:109.msgid."Delete.the.align
3eb40 6d 65 6e 74 20 69 6e 20 6c 69 73 74 73 22 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 ment.in.lists".msgstr."Supprimer
3eb60 20 6c 27 61 6c 69 67 6e 65 6d 65 6e 74 20 64 61 6e 73 20 6c 65 73 20 6c 69 73 74 65 73 22 0a 0a .l'alignement.dans.les.listes"..
3eb80 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 31 32 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 5c #:.config.py:112.msgid."Delete.\
3eba0 22 69 64 5c 22 20 61 74 74 72 69 62 75 74 22 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 "id\".attribut".msgstr."Supprime
3ebc0 72 20 6c 65 73 20 61 74 74 72 69 62 75 74 73 20 5c 22 69 64 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 r.les.attributs.\"id\""..#:.conf
3ebe0 69 67 2e 70 79 3a 31 31 33 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 5c 22 63 6c 61 73 73 5c ig.py:113.msgid."Delete.\"class\
3ec00 22 20 61 74 74 72 69 62 75 74 22 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c 65 ".attribut".msgstr."Supprimer.le
3ec20 73 20 61 74 74 72 69 62 75 74 73 20 5c 22 63 6c 61 73 73 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 s.attributs.\"class\""..#:.confi
3ec40 67 2e 70 79 3a 31 31 34 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 5c 22 69 64 5c 22 20 61 6e g.py:114.msgid."Delete.\"id\".an
3ec60 64 20 5c 22 63 6c 61 73 73 5c 22 20 61 74 74 72 69 62 75 74 22 0a 6d 73 67 73 74 72 20 22 53 75 d.\"class\".attribut".msgstr."Su
3ec80 70 70 72 69 6d 65 72 20 6c 65 73 20 61 74 74 72 69 62 75 74 73 20 5c 22 63 6c 61 73 73 5c 22 20 pprimer.les.attributs.\"class\".
3eca0 65 74 20 5c 22 69 64 5c 22 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 31 39 0a 6d 73 67 et.\"id\""..#:.config.py:119.msg
3ecc0 69 64 20 22 43 6f 6e 76 65 72 74 20 69 6e 20 61 6c 6c 20 63 6f 6d 6d 65 6e 74 73 20 28 6e 6f 74 id."Convert.in.all.comments.(not
3ece0 20 72 65 63 6f 6d 61 6e 64 65 64 29 22 0a 6d 73 67 73 74 72 20 22 43 6f 6e 76 65 72 74 69 72 20 .recomanded)".msgstr."Convertir.
3ed00 64 61 6e 73 20 74 6f 75 73 20 6c 65 73 20 63 6f 6d 6d 65 6e 74 61 69 72 65 73 20 28 6e 6f 6e 20 dans.tous.les.commentaires.(non.
3ed20 72 65 63 6f 6d 6d 61 6e 64 c3 a9 29 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 30 0a recommand..)"..#:.config.py:120.
3ed40 6d 73 67 69 64 20 22 43 6f 6e 76 65 72 74 20 6f 6e 6c 79 20 66 72 6f 6d 20 61 20 70 6c 61 69 6e msgid."Convert.only.from.a.plain
3ed60 20 74 65 78 74 20 63 6f 6d 6d 65 6e 74 22 0a 6d 73 67 73 74 72 20 22 43 6f 6e 76 65 72 74 69 72 .text.comment".msgstr."Convertir
3ed80 20 75 6e 69 71 75 6d 65 6e 74 20 6c 65 73 20 63 6f 6d 6d 65 6e 74 61 69 72 65 73 20 65 6e 20 74 .uniqument.les.commentaires.en.t
3eda0 65 78 74 65 20 62 72 75 74 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 34 0a 6d 73 67 exte.brut"..#:.config.py:124.msg
3edc0 69 64 20 22 43 72 65 61 74 65 20 61 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 id."Create.a.empty.paragraph".ms
3ede0 67 73 74 72 20 22 43 72 c3 a9 65 20 75 6e 20 70 61 72 61 67 72 61 70 68 65 20 76 69 64 65 22 0a gstr."Cr..e.un.paragraphe.vide".
3ee00 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 35 20 63 6f 6e 66 69 67 2e 70 79 3a 31 32 39 0a .#:.config.py:125.config.py:129.
3ee20 6d 73 67 69 64 20 22 43 72 65 61 74 65 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 22 0a 6d msgid."Create.a.new.paragraph".m
3ee40 73 67 73 74 72 20 22 43 72 c3 a9 65 20 75 6e 20 6e 6f 75 76 65 61 75 20 70 61 72 61 67 72 61 70 sgstr."Cr..e.un.nouveau.paragrap
3ee60 68 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 30 0a 6d 73 67 69 64 20 22 52 65 70 he"..#:.config.py:130.msgid."Rep
3ee80 6c 61 63 65 20 77 69 74 68 20 73 70 61 63 65 22 0a 6d 73 67 73 74 72 20 22 52 65 6d 70 6c 61 63 lace.with.space".msgstr."Remplac
3eea0 65 72 20 70 61 72 20 75 6e 20 65 73 70 61 63 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a er.par.un.espace"..#:.config.py:
3eec0 31 33 34 0a 6d 73 67 69 64 20 22 4d 65 72 67 65 20 69 6e 20 61 20 73 69 6e 67 6c 65 20 65 6d 70 134.msgid."Merge.in.a.single.emp
3eee0 74 79 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 46 75 73 69 6f 6e 6e 65 72 20 ty.paragraph".msgstr."Fusionner.
3ef00 65 6e 20 75 6e 20 73 65 75 6c 20 70 61 72 61 67 72 61 70 68 65 20 76 69 64 65 22 0a 0a 23 3a 20 en.un.seul.paragraphe.vide"..#:.
3ef20 63 6f 6e 66 69 67 2e 70 79 3a 31 33 36 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 65 6d 70 74 config.py:136.msgid."Delete.empt
3ef40 79 20 70 61 72 61 67 72 61 70 68 22 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c y.paragraph".msgstr."Supprimer.l
3ef60 65 73 20 70 61 72 61 67 72 61 70 68 65 73 20 76 69 64 65 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e es.paragraphes.vide"..#:.config.
3ef80 70 79 3a 31 33 39 0a 6d 73 67 69 64 20 22 4b 65 65 70 20 69 6d 61 67 65 73 22 0a 6d 73 67 73 74 py:139.msgid."Keep.images".msgst
3efa0 72 20 22 43 6f 6e 73 65 72 76 65 72 20 6c 65 73 20 69 6d 61 67 65 73 22 0a 0a 23 3a 20 63 6f 6e r."Conserver.les.images"..#:.con
3efc0 66 69 67 2e 70 79 3a 31 34 30 0a 6d 73 67 69 64 20 22 44 65 6c 65 74 65 20 69 6d 61 67 65 73 22 fig.py:140.msgid."Delete.images"
3efe0 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c 65 73 20 69 6d 61 67 65 73 22 0a 0a .msgstr."Supprimer.les.images"..
3f000 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 32 37 0a 6d 73 67 69 64 20 22 48 79 70 65 72 6c 69 6e #:.config.py:227.msgid."Hyperlin
3f020 6b 3a 22 0a 6d 73 67 73 74 72 20 22 48 79 70 65 72 2d 6c 69 65 6e 73 c2 a0 3a 22 0a 0a 23 3a 20 k:".msgstr."Hyper-liens..:"..#:.
3f040 63 6f 6e 66 69 67 2e 70 79 3a 32 33 34 0a 6d 73 67 69 64 20 22 48 65 61 64 69 6e 67 73 3a 22 0a config.py:234.msgid."Headings:".
3f060 6d 73 67 73 74 72 20 22 54 69 74 72 65 73 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 msgstr."Titres..:"..#:.config.py
3f080 3a 32 34 34 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 49 74 61 6c 69 63 22 0a 6d 73 67 73 74 :244.msgid."Remove.Italic".msgst
3f0a0 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c 27 49 74 61 6c 69 71 75 65 22 0a 0a 23 3a 20 63 6f 6e r."Supprimer.l'Italique"..#:.con
3f0c0 66 69 67 2e 70 79 3a 32 34 38 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 62 6f 6c fig.py:248.msgid."Remove.the.bol
3f0e0 64 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 22 0a 6d 73 67 d.if.all.paragraphes.are.it".msg
3f100 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c 65 20 67 72 61 73 20 73 69 20 74 6f 75 73 20 6c str."Supprimer.le.gras.si.tous.l
3f120 65 73 20 70 61 72 61 67 72 61 70 68 65 73 20 6c 65 20 73 6f 6e 74 22 0a 0a 23 3a 20 63 6f 6e 66 es.paragraphes.le.sont"..#:.conf
3f140 69 67 2e 70 79 3a 32 35 32 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 74 68 65 20 69 74 61 6c ig.py:252.msgid."Remove.the.ital
3f160 69 63 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 22 0a 6d 73 ic.if.all.paragraphes.are.it".ms
3f180 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c 27 69 74 61 6c 69 71 75 65 20 73 69 20 74 6f gstr."Supprimer.l'italique.si.to
3f1a0 75 73 20 6c 65 73 20 70 61 72 61 67 72 61 70 68 65 73 20 6c 65 20 73 6f 6e 74 22 0a 0a 23 3a 20 us.les.paragraphes.le.sont"..#:.
3f1c0 63 6f 6e 66 69 67 2e 70 79 3a 32 35 36 0a 6d 73 67 69 64 20 22 52 65 6d 6f 76 65 20 55 6e 64 65 config.py:256.msgid."Remove.Unde
3f1e0 72 6c 69 6e 65 22 0a 6d 73 67 73 74 72 20 22 53 75 70 70 72 69 6d 65 72 20 6c 65 20 73 6f 75 6c rline".msgstr."Supprimer.le.soul
3f200 69 67 6e 65 6d 65 6e 74 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 36 30 0a 6d 73 67 69 ignement"..#:.config.py:260.msgi
3f220 64 20 22 52 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 72 6f 75 67 68 22 0a 6d 73 67 73 74 72 20 d."Remove.Strikethrough".msgstr.
3f240 22 53 75 70 70 72 69 6d 65 72 20 6c 65 20 74 65 78 74 65 20 62 61 72 72 c3 a9 22 0a 0a 23 3a 20 "Supprimer.le.texte.barr.."..#:.
3f260 63 6f 6e 66 69 67 2e 70 79 3a 32 37 32 0a 6d 73 67 69 64 20 22 4a 75 73 74 69 66 69 63 61 74 69 config.py:272.msgid."Justificati
3f280 6f 6e 3a 22 0a 6d 73 67 73 74 72 20 22 4a 75 73 74 69 66 69 63 61 74 69 6f 6e c2 a0 3a 22 0a 0a on:".msgstr."Justification..:"..
3f2a0 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 37 36 0a 6d 73 67 69 64 20 22 4c 69 73 74 20 61 6c 69 #:.config.py:276.msgid."List.ali
3f2c0 67 6e 6d 65 6e 74 3a 22 0a 6d 73 67 73 74 72 20 22 41 6c 69 67 6e 65 6d 65 6e 74 20 64 65 73 20 gnment:".msgstr."Alignement.des.
3f2e0 6c 69 73 74 65 73 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 32 38 30 0a 6d 73 67 listes..:"..#:.config.py:280.msg
3f300 69 64 20 22 49 44 20 26 20 43 4c 41 53 53 20 61 74 74 72 69 62 75 74 73 3a 22 0a 6d 73 67 73 74 id."ID.&.CLASS.attributs:".msgst
3f320 72 20 22 41 74 74 72 69 62 75 74 73 20 49 44 20 26 20 43 4c 41 53 53 c2 a0 3a 22 0a 0a 23 3a 20 r."Attributs.ID.&.CLASS..:"..#:.
3f340 63 6f 6e 66 69 67 2e 70 79 3a 32 38 35 0a 6d 73 67 69 64 20 22 43 75 73 74 6f 6d 20 43 53 53 20 config.py:285.msgid."Custom.CSS.
3f360 72 75 6c 65 73 20 74 6f 20 6b 65 65 70 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f 20 74 68 65 rules.to.keep.in.addition.to.the
3f380 20 62 61 73 69 63 20 6f 6e 65 73 2e 20 52 75 6c 65 73 20 73 65 70 61 72 61 74 65 64 20 62 79 20 .basic.ones..Rules.separated.by.
3f3a0 61 20 73 70 61 63 65 2e 22 0a 6d 73 67 73 74 72 20 22 52 c3 a8 67 6c 65 73 20 43 53 53 20 70 65 a.space.".msgstr."R..gles.CSS.pe
3f3c0 72 73 6f 6e 6e 61 6c 69 73 c3 a9 73 20 c3 a0 20 63 6f 6e 73 65 72 76 65 72 20 65 6e 20 70 6c 75 rsonnalis..s....conserver.en.plu
3f3e0 73 20 64 65 20 63 65 6c 6c 65 20 64 65 20 62 61 73 65 2e 20 52 c3 a8 67 6c 65 73 20 73 c3 a9 70 s.de.celle.de.base..R..gles.s..p
3f400 61 72 65 72 20 70 61 72 20 75 6e 20 65 73 70 61 63 65 2e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e arer.par.un.espace."..#:.config.
3f420 70 79 3a 32 38 36 0a 6d 73 67 69 64 20 22 43 53 53 20 72 75 6c 65 20 74 6f 20 6b 65 65 70 3a 22 py:286.msgid."CSS.rule.to.keep:"
3f440 0a 6d 73 67 73 74 72 20 22 52 c3 a8 67 6c 65 73 20 43 53 53 20 61 20 63 6f 6e 73 65 72 76 65 72 .msgstr."R..gles.CSS.a.conserver
3f460 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 30 33 0a 6d 73 67 69 64 20 22 41 6c ..:"..#:.config.py:303.msgid."Al
3f480 6c 20 43 53 53 20 72 75 6c 65 73 20 61 72 65 20 6b 65 65 70 2e 22 0a 6d 73 67 73 74 72 20 22 54 l.CSS.rules.are.keep.".msgstr."T
3f4a0 6f 75 74 65 73 20 6c 65 73 20 72 c3 a8 67 6c 65 73 20 43 53 53 20 73 6f 6e 74 20 63 6f 6e 73 65 outes.les.r..gles.CSS.sont.conse
3f4c0 72 76 c3 a9 65 73 2e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 31 33 0a 6d 73 67 69 64 rv..es."..#:.config.py:313.msgid
3f4e0 20 22 52 65 6d 6f 76 65 20 61 6c 6c 20 66 6f 72 6d 61 74 74 69 6e 67 22 0a 6d 73 67 73 74 72 20 ."Remove.all.formatting".msgstr.
3f500 22 45 66 66 61 63 65 72 20 74 6f 75 74 65 20 6d 69 73 65 20 65 6e 20 66 6f 72 6d 65 22 0a 0a 23 "Effacer.toute.mise.en.forme"..#
3f520 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 33 31 0a 6d 73 67 69 64 20 22 4d 61 72 6b 64 6f 77 6e 3a :.config.py:331.msgid."Markdown:
3f540 22 0a 6d 73 67 73 74 72 20 22 4d 61 72 6b 64 6f 77 6e c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 ".msgstr."Markdown..:"..#:.confi
3f560 67 2e 70 79 3a 33 33 32 0a 6d 73 67 69 64 20 22 54 72 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 g.py:332.msgid."Try.to.convert.t
3f580 68 65 20 4d 61 72 6b 64 6f 77 6e 20 73 74 72 69 6e 67 73 20 74 6f 20 48 54 4d 4c 22 0a 6d 73 67 he.Markdown.strings.to.HTML".msg
3f5a0 73 74 72 20 22 45 73 73 61 79 65 72 20 64 65 20 63 6f 6e 76 65 72 74 69 72 20 6c 65 73 20 63 68 str."Essayer.de.convertir.les.ch
3f5c0 61 c3 ae 6e 65 73 20 64 65 20 63 61 72 61 63 74 c3 a8 72 65 73 20 4d 61 72 6b 64 6f 77 6e 20 65 a..nes.de.caract..res.Markdown.e
3f5e0 6e 20 48 54 4d 4c 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 33 36 0a 6d 73 67 69 64 20 n.HTML"..#:.config.py:336.msgid.
3f600 22 4d 75 6c 74 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 "Multiple.'Line.Return'.in.a.par
3f620 61 67 72 61 70 68 3a 22 0a 6d 73 67 73 74 72 20 22 4d 75 6c 74 69 70 6c 65 20 5c 22 52 65 74 6f agraph:".msgstr."Multiple.\"Reto
3f640 75 72 20 61 20 6c 61 20 6c 69 67 6e 65 5c 22 20 64 61 6e 73 20 75 6e 20 70 61 72 61 67 72 61 70 ur.a.la.ligne\".dans.un.paragrap
3f660 68 65 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 34 30 0a 6d 73 67 69 64 20 22 he..:"..#:.config.py:340.msgid."
3f680 53 69 6e 67 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 67 72 Single.'Line.Return'.in.a.paragr
3f6a0 61 70 68 3a 22 0a 6d 73 67 73 74 72 20 22 53 69 6d 70 6c 65 20 5c 22 52 65 74 6f 75 72 20 61 20 aph:".msgstr."Simple.\"Retour.a.
3f6c0 6c 61 20 6c 69 67 6e 65 5c 22 20 64 61 6e 73 20 75 6e 20 70 61 72 61 67 72 61 70 68 65 c2 a0 3a la.ligne\".dans.un.paragraphe..:
3f6e0 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 34 32 0a 6d 73 67 69 64 20 22 22 0a 22 54 68 "..#:.config.py:342.msgid.""."Th
3f700 69 73 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 61 70 70 6c 69 65 64 20 61 66 74 65 72 20 5c 22 is.operation.is.applied.after.\"
3f720 4d 75 6c 74 69 70 6c 65 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 20 61 20 70 61 72 61 Multiple.'Line.Return'.in.a.para
3f740 67 72 61 70 68 5c 22 5c 6e 22 0a 22 61 6e 64 20 62 65 66 6f 72 65 20 5c 22 4d 75 6c 74 69 70 6c graph\"\n"."and.before.\"Multipl
3f760 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 5c 22 22 0a 6d 73 67 73 74 72 20 22 22 0a 22 e.empty.paragraph\"".msgstr.""."
3f780 43 65 74 74 65 20 6f 70 c3 a9 72 61 74 69 6f 6e 20 65 73 74 20 61 70 70 6c 69 71 75 c3 a9 20 61 Cette.op..ration.est.appliqu...a
3f7a0 70 72 c3 a9 73 20 c2 ab c2 a0 4d 75 6c 74 69 70 6c 65 20 5c 22 52 65 74 6f 75 72 20 61 20 6c 61 pr..s.....Multiple.\"Retour.a.la
3f7c0 20 6c 69 67 6e 65 5c 22 20 64 61 6e 73 20 75 6e 20 70 61 72 61 67 72 61 70 68 65 c2 a0 c2 bb 5c .ligne\".dans.un.paragraphe....\
3f7e0 6e 22 0a 22 65 74 20 61 76 61 6e 74 20 c2 ab c2 a0 4d 75 6c 74 69 70 6c 65 20 70 61 72 61 67 72 n"."et.avant.....Multiple.paragr
3f800 61 70 68 65 73 20 76 69 64 65 c2 a0 c2 bb 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 34 aphes.vide...."..#:.config.py:34
3f820 38 0a 6d 73 67 69 64 20 22 4d 75 6c 74 69 70 6c 65 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 8.msgid."Multiple.empty.paragrap
3f840 68 3a 22 0a 6d 73 67 73 74 72 20 22 4d 75 6c 74 69 70 6c 65 20 70 61 72 61 67 72 61 70 68 65 73 h:".msgstr."Multiple.paragraphes
3f860 20 76 69 64 65 c2 a0 3a 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 33 35 32 0a 6d 73 67 69 .vide..:"..#:.config.py:352.msgi
3f880 64 20 22 49 6d 61 67 65 73 3a 22 0a 6d 73 67 73 74 72 20 22 49 6d 61 67 65 73 c2 a0 3a 22 0a 0a d."Images:".msgstr."Images..:"..
3f8a0 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 30 36 0a 6d 73 67 69 64 20 22 43 6f 6d 6d 65 6e 74 73 #:.config.py:406.msgid."Comments
3f8c0 20 43 6c 65 61 6e 65 72 20 4f 70 74 69 6f 6e 73 22 0a 6d 73 67 73 74 72 20 22 4f 70 74 69 6f 6e .Cleaner.Options".msgstr."Option
3f8e0 73 20 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 s.Comments.Cleaner"..#:.config.p
3f900 79 3a 34 31 34 0a 6d 73 67 69 64 20 22 41 70 70 6c 79 20 74 6f 20 6f 74 68 65 72 73 20 63 75 73 y:414.msgid."Apply.to.others.cus
3f920 74 6f 6d 20 48 54 4d 4c 20 63 6f 6c 75 6d 6e 73 22 0a 6d 73 67 73 74 72 20 22 41 70 70 6c 69 71 tom.HTML.columns".msgstr."Appliq
3f940 75 65 72 20 c3 a0 20 64 27 61 75 74 72 65 73 20 63 6f 6c 6f 6e 6e 65 73 20 48 54 4d 4c 20 70 65 uer....d'autres.colonnes.HTML.pe
3f960 72 73 6f 6e 6e 61 6c 69 73 c3 a9 65 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 34 33 rsonnalis..es"..#:.config.py:443
3f980 20 63 6f 6e 66 69 67 2e 70 79 3a 34 37 34 0a 6d 73 67 69 64 20 22 4e 6f 74 65 73 20 43 6c 65 61 .config.py:474.msgid."Notes.Clea
3f9a0 6e 65 72 20 4f 70 74 69 6f 6e 73 22 0a 6d 73 67 73 74 72 20 22 4f 70 74 69 6f 6e 73 20 4e 6f 74 ner.Options".msgstr."Options.Not
3f9c0 65 73 20 43 6c 65 61 6e 65 72 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 34 34 0a 6d 73 es.Cleaner"..#:.config.py:444.ms
3f9e0 67 69 64 20 22 45 64 69 74 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6e 6f gid."Edit.the.options.for.the.no
3fa00 74 65 73 20 63 6c 65 61 6e 65 72 20 61 63 74 69 6f 6e 22 0a 6d 73 67 73 74 72 20 22 45 64 69 74 tes.cleaner.action".msgstr."Edit
3fa20 20 74 68 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 74 68 65 20 6e 6f 74 65 73 20 63 6c 65 61 6e .the.options.for.the.notes.clean
3fa40 65 72 20 61 63 74 69 6f 6e 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 35 35 0a 6d 73 67 er.action"..#:.config.py:455.msg
3fa60 69 64 20 22 43 75 73 74 6f 6d 69 7a 65 22 0a 6d 73 67 73 74 72 20 22 50 65 72 73 6f 6e 6e 61 6c id."Customize".msgstr."Personnal
3fa80 69 73 65 72 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 34 35 35 0a 6d 73 67 69 64 20 22 4e iser"..#:.config.py:455.msgid."N
3faa0 6f 74 65 73 20 43 6c 65 61 6e 65 72 22 0a 6d 73 67 73 74 72 20 22 4e 6f 74 65 73 20 43 6c 65 61 otes.Cleaner".msgstr."Notes.Clea
3fac0 6e 65 72 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 30 36 0a 6d 73 67 69 64 20 22 53 65 ner"..#:.config.py:506.msgid."Se
3fae0 6c 65 63 74 20 4e 6f 74 65 73 20 74 6f 20 63 6c 65 61 6e 22 0a 6d 73 67 73 74 72 20 22 53 c3 a9 lect.Notes.to.clean".msgstr."S..
3fb00 6c 65 63 74 69 6f 6e 6e 65 72 20 6c 65 73 20 6e 6f 74 65 73 20 c3 a0 20 6e 65 74 74 6f 79 65 72 lectionner.les.notes....nettoyer
3fb20 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 31 37 0a 6d 73 67 69 64 20 22 53 75 62 73 65 "..#:.config.py:517.msgid."Subse
3fb40 74 20 6f 66 20 4e 6f 74 65 73 20 61 73 73 6f 63 69 61 74 65 20 74 6f 20 74 68 65 20 63 75 72 72 t.of.Notes.associate.to.the.curr
3fb60 65 6e 74 6c 79 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 53 6f ently.selected.books".msgstr."So
3fb80 75 73 2d 65 6e 73 65 6d 62 6c 65 20 64 65 20 6e 6f 74 65 73 20 61 73 73 6f 63 69 c3 a9 65 73 20 us-ensemble.de.notes.associ..es.
3fba0 61 75 78 20 6c 69 76 72 65 73 20 61 63 74 75 65 6c 6c 65 6d 65 6e 74 20 73 c3 a9 6c 65 63 74 69 aux.livres.actuellement.s..lecti
3fbc0 6f 6e 6e c3 a9 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 31 38 0a 6d 73 67 69 64 20 onn..s"..#:.config.py:518.msgid.
3fbe0 22 4e 6f 20 62 6f 6f 6b 73 20 73 65 6c 65 63 74 65 64 22 0a 6d 73 67 73 74 72 20 22 41 75 63 75 "No.books.selected".msgstr."Aucu
3fc00 6e 20 6c 69 76 72 65 20 73 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 22 0a 0a 23 3a 20 63 6f 6e 66 69 n.livre.s..lectionn.."..#:.confi
3fc20 67 2e 70 79 3a 35 31 39 0a 6d 73 67 69 64 20 22 4e 6f 20 6e 6f 74 65 73 20 66 6f 72 20 7b 3a 64 g.py:519.msgid."No.notes.for.{:d
3fc40 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a 6d 73 67 73 74 72 20 22 50 61 73 20 64 65 }.selected.books".msgstr."Pas.de
3fc60 20 6e 6f 74 65 73 20 70 6f 75 72 20 7b 3a 64 7d 20 6c 69 76 72 65 73 20 73 c3 a9 6c 65 63 74 69 .notes.pour.{:d}.livres.s..lecti
3fc80 6f 6e 6e c3 a9 73 22 0a 0a 23 3a 20 63 6f 6e 66 69 67 2e 70 79 3a 35 32 30 0a 6d 73 67 69 64 20 onn..s"..#:.config.py:520.msgid.
3fca0 22 4e 6f 74 65 73 20 66 6f 72 20 7b 3a 64 7d 20 73 65 6c 65 63 74 65 64 20 62 6f 6f 6b 73 22 0a "Notes.for.{:d}.selected.books".
3fcc0 6d 73 67 73 74 72 20 22 4e 6f 74 65 73 20 70 6f 75 72 20 7b 3a 64 7d 20 6c 69 76 72 65 73 20 73 msgstr."Notes.pour.{:d}.livres.s
3fce0 c3 a9 6c 65 63 74 69 6f 6e 6e c3 a9 73 22 0a 50 4b 03 04 14 00 00 00 00 00 c8 6e 3f 5c 79 3c aa ..lectionn..s".PK.........n?\y<.
3fd00 cf 00 15 00 00 00 15 00 00 0c 00 00 00 63 68 61 6e 67 65 6c 6f 67 2e 6d 64 23 20 43 68 61 6e 67 .............changelog.md#.Chang
3fd20 65 6c 6f 67 20 2d 20 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 0a 0a 23 23 20 5b 31 2e 31 elog.-.Comments.Cleaner..##.[1.1
3fd40 38 2e 32 5d 20 2d 20 32 30 32 36 2f 30 31 2f 33 31 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 8.2].-.2026/01/31..###.Changed.-
3fd60 20 76 61 72 69 6f 75 73 20 69 6d 70 72 6f 76 65 6d 65 6e 74 20 61 6e 64 20 43 61 6c 69 62 72 65 .various.improvement.and.Calibre
3fd80 20 39 20 73 75 70 70 6f 72 74 0a 0a 23 23 20 5b 31 2e 31 38 2e 31 5d 20 2d 20 32 30 32 35 2f 31 .9.support..##.[1.18.1].-.2025/1
3fda0 32 2f 32 36 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 6c 69 6e 75 78 3a 20 64 6f 6e 2/26..###.Bug.fixes.-.linux:.don
3fdc0 27 74 20 75 73 65 20 67 75 69 20 61 73 20 70 61 72 65 6e 74 20 66 6f 72 20 6d 65 6e 75 20 28 72 't.use.gui.as.parent.for.menu.(r
3fde0 61 69 73 65 20 61 20 77 61 72 6e 69 6e 67 29 0a 0a 23 23 20 5b 31 2e 31 38 2e 30 5d 20 2d 20 32 aise.a.warning)..##.[1.18.0].-.2
3fe00 30 32 35 2f 31 32 2f 31 39 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 75 73 65 20 63 61 6c 025/12/19..###.Changed.-.use.cal
3fe20 69 62 72 65 20 69 6e 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 27 52 65 6d 6f ibre.internal.function.for.'Remo
3fe40 76 65 20 61 6c 6c 20 66 6f 72 6d 61 74 74 69 6e 67 27 20 61 63 74 69 6f 6e 0a 0a 23 23 20 5b 31 ve.all.formatting'.action..##.[1
3fe60 2e 31 37 2e 33 5d 20 2d 20 32 30 32 35 2f 31 30 2f 30 39 0a 0a 23 23 23 20 42 75 67 20 66 69 78 .17.3].-.2025/10/09..###.Bug.fix
3fe80 65 73 0a 2d 20 66 69 78 20 70 72 65 76 69 6f 75 73 20 70 61 74 63 68 0a 0a 23 23 20 5b 31 2e 31 es.-.fix.previous.patch..##.[1.1
3fea0 37 2e 32 5d 20 2d 20 32 30 32 35 2f 31 30 2f 30 39 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 7.2].-.2025/10/09..###.Bug.fixes
3fec0 0a 2d 20 66 69 78 20 65 64 67 65 20 63 61 73 65 20 66 6f 72 20 6d 61 6c 66 6f 72 6d 65 64 20 63 .-.fix.edge.case.for.malformed.c
3fee0 6f 6d 6d 65 6e 74 73 20 63 75 73 74 6f 6d 20 63 6f 6c 75 6d 6e 73 0a 0a 23 23 20 5b 31 2e 31 37 omments.custom.columns..##.[1.17
3ff00 2e 31 5d 20 2d 20 32 30 32 35 2f 30 39 2f 32 39 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a .1].-.2025/09/29..###.Bug.fixes.
3ff20 2d 20 66 69 78 20 66 61 74 61 6c 20 66 72 65 65 7a 65 20 6f 6e 20 6c 69 6e 75 78 0a 0a 23 23 20 -.fix.fatal.freeze.on.linux..##.
3ff40 5b 31 2e 31 37 2e 30 5d 20 2d 20 32 30 32 35 2f 30 38 2f 32 38 0a 0a 23 23 23 20 41 64 64 65 64 [1.17.0].-.2025/08/28..###.Added
3ff60 0a 2d 20 52 65 6d 6f 76 65 20 65 78 70 6c 69 63 69 74 20 62 6f 6c 64 20 66 6f 72 6d 61 74 74 69 .-.Remove.explicit.bold.formatti
3ff80 6e 67 20 69 6e 20 68 65 61 64 69 6e 67 73 0a 2d 20 4f 70 74 69 6f 6e 20 74 6f 20 72 65 6d 6f 76 ng.in.headings.-.Option.to.remov
3ffa0 65 20 74 68 65 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 73 20 61 72 65 e.the.bold.if.all.paragraphs.are
3ffc0 20 69 74 0a 2d 20 4f 70 74 69 6f 6e 20 74 6f 20 72 65 6d 6f 76 65 20 74 68 65 20 69 74 61 6c 69 .it.-.Option.to.remove.the.itali
3ffe0 63 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 73 20 61 72 65 20 69 74 0a 0a 23 23 20 5b c.if.all.paragraphs.are.it..##.[
40000 31 2e 31 36 2e 30 5d 20 2d 20 32 30 32 35 2f 30 38 2f 32 31 0a 0a 23 23 23 20 41 64 64 65 64 0a 1.16.0].-.2025/08/21..###.Added.
40020 2d 20 41 6c 73 6f 20 6e 6f 72 6d 61 6c 69 7a 65 20 74 68 65 20 63 6f 6d 6d 65 6e 74 73 2f 6e 6f -.Also.normalize.the.comments/no
40040 74 65 73 20 62 79 20 75 73 69 6e 67 20 74 68 65 69 72 20 63 61 6e 6f 6e 69 63 61 6c 20 66 6f 72 tes.by.using.their.canonical.for
40060 6d 20 64 65 66 69 6e 65 64 20 62 79 20 74 68 65 20 55 6e 69 63 6f 64 65 20 53 74 61 6e 64 61 72 m.defined.by.the.Unicode.Standar
40080 64 2c 20 61 2e 6b 2e 61 20 6d 65 72 67 65 20 61 6e 64 20 72 65 6f 72 64 65 72 73 20 64 69 61 63 d,.a.k.a.merge.and.reorders.diac
400a0 72 69 74 69 63 73 0a 0a 23 23 20 5b 31 2e 31 35 2e 31 5d 20 2d 20 32 30 32 35 2f 30 36 2f 32 30 ritics..##.[1.15.1].-.2025/06/20
400c0 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 46 69 78 20 61 20 72 65 67 72 65 73 73 69 ..###.Bug.fixes.-.Fix.a.regressi
400e0 6f 6e 20 74 68 61 74 20 63 6f 6e 76 65 72 74 20 6c 69 6e 65 20 73 74 61 72 74 69 6e 67 20 62 79 on.that.convert.line.starting.by
40100 20 61 20 79 65 61 72 20 74 6f 20 6c 69 73 74 20 77 68 65 6e 20 61 20 72 61 77 20 74 65 78 74 20 .a.year.to.list.when.a.raw.text.
40120 69 73 20 63 6f 6e 76 65 72 74 65 64 20 77 69 74 68 20 4d 61 72 6b 64 6f 77 6e 0a 0a 23 23 20 5b is.converted.with.Markdown..##.[
40140 31 2e 31 35 2e 30 5d 20 2d 20 32 30 32 34 2f 30 39 2f 31 34 0a 0a 23 23 23 20 43 68 61 6e 67 65 1.15.0].-.2024/09/14..###.Change
40160 64 0a 2d 20 4f 70 74 69 6d 69 73 61 74 69 6f 6e 20 70 61 72 73 69 6e 67 0a 0a 23 23 20 5b 31 2e d.-.Optimisation.parsing..##.[1.
40180 31 34 2e 30 5d 20 2d 20 32 30 32 34 2f 30 38 2f 30 35 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 20 14.0].-.2024/08/05..###.Added.-.
401a0 50 6f 73 73 69 62 69 6c 69 74 79 20 6f 66 20 6b 65 65 70 69 6e 67 20 61 6c 6c 20 43 53 53 20 72 Possibility.of.keeping.all.CSS.r
401c0 75 6c 65 73 0a 0a 23 23 20 5b 31 2e 31 33 2e 30 5d 20 2d 20 32 30 32 34 2f 30 32 2f 31 39 0a 0a ules..##.[1.13.0].-.2024/02/19..
401e0 23 23 23 20 41 64 64 65 64 0a 2d 20 53 75 70 70 6f 72 74 20 64 72 61 67 2d 61 6e 64 2d 64 72 6f ###.Added.-.Support.drag-and-dro
40200 70 20 62 6f 6f 6b 73 20 66 72 6f 6d 20 74 68 65 20 6c 69 62 72 61 72 79 0a 0a 23 23 23 20 42 75 p.books.from.the.library..###.Bu
40220 67 20 66 69 78 65 73 0a 2d 20 46 69 78 20 73 6f 6d 65 20 75 6e 74 72 61 6e 73 6c 61 74 65 64 20 g.fixes.-.Fix.some.untranslated.
40240 73 74 72 69 6e 67 0a 0a 23 23 20 5b 31 2e 31 32 2e 32 5d 20 2d 20 32 30 32 34 2f 30 32 2f 31 30 string..##.[1.12.2].-.2024/02/10
40260 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 46 69 78 20 73 6f 6d 65 20 77 72 6f 6e 67 ..###.Bug.fixes.-.Fix.some.wrong
40280 20 62 6f 6c 64 20 63 6c 65 61 6e 69 6e 67 0a 0a 23 23 20 5b 31 2e 31 32 2e 31 5d 20 2d 20 32 30 .bold.cleaning..##.[1.12.1].-.20
402a0 32 34 2f 30 31 2f 32 37 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 46 69 78 20 77 72 24/01/27..###.Bug.fixes.-.Fix.wr
402c0 6f 6e 67 20 74 65 78 74 20 64 69 73 70 6c 61 79 20 77 68 65 6e 20 63 75 73 74 6f 6d 69 7a 69 6e ong.text.display.when.customizin
402e0 67 20 6b 65 79 62 6f 61 72 64 20 73 68 6f 72 74 63 75 74 0a 0a 23 23 20 5b 31 2e 31 32 2e 30 5d g.keyboard.shortcut..##.[1.12.0]
40300 20 2d 20 32 30 32 33 2f 31 31 2f 31 37 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 20 53 75 70 70 6f .-.2023/11/17..###.Added.-.Suppo
40320 72 74 20 66 6f 72 20 43 61 74 65 67 6f 72 79 20 4e 6f 74 65 73 0a 2d 20 4f 70 74 69 6f 6e 20 66 rt.for.Category.Notes.-.Option.f
40340 6f 72 20 74 68 65 20 69 6d 61 67 65 73 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 44 72 6f or.the.images..###.Changed.-.Dro
40360 70 20 50 79 74 68 6f 6e 20 32 20 2f 20 43 61 6c 69 62 72 65 20 34 20 63 6f 6d 70 61 74 69 62 69 p.Python.2./.Calibre.4.compatibi
40380 6c 69 74 79 2c 20 6f 6e 6c 79 20 43 61 6c 69 62 72 65 20 35 20 61 6e 64 20 61 62 6f 76 65 0a 0a lity,.only.Calibre.5.and.above..
403a0 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 54 61 67 73 20 77 69 74 68 20 43 41 50 53 20 6e ###.Bug.fixes.-.Tags.with.CAPS.n
403c0 61 6d 65 20 64 6f 6e 27 74 20 70 72 6f 70 65 6c 79 20 70 61 72 73 65 64 0a 0a 23 23 20 5b 30 2e ame.don't.propely.parsed..##.[0.
403e0 31 31 2e 31 5d 20 2d 20 32 30 32 33 2f 30 39 2f 33 31 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 11.1].-.2023/09/31..###.Bug.fixe
40400 73 0a 2d 20 44 6f 6e 27 74 20 75 70 64 61 74 65 20 74 68 65 20 63 6f 6e 66 69 67 20 66 69 6c 65 s.-.Don't.update.the.config.file
40420 20 77 68 65 6e 20 43 61 6c 69 62 72 65 20 73 74 61 72 74 0a 0a 23 23 20 5b 31 2e 31 31 2e 30 5d .when.Calibre.start..##.[1.11.0]
40440 20 2d 20 32 30 32 33 2f 30 39 2f 30 38 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 46 69 78 .-.2023/09/08..###.Changed.-.Fix
40460 20 64 6f 75 62 6c 65 20 53 63 72 6f 6c 6c 41 72 65 61 20 69 6e 20 63 6f 6e 66 69 67 20 64 69 61 .double.ScrollArea.in.config.dia
40480 6c 6f 67 0a 0a 23 23 20 5b 31 2e 31 30 2e 30 5d 20 2d 20 32 30 32 33 2f 30 34 2f 31 30 0a 0a 23 log..##.[1.10.0].-.2023/04/10..#
404a0 23 23 20 41 64 64 65 64 0a 2d 20 53 75 70 70 6f 72 74 20 6f 66 20 63 75 73 74 6f 6d 20 48 54 4d ##.Added.-.Support.of.custom.HTM
404c0 4c 20 63 6f 6c 75 6d 6e 73 0a 0a 23 23 20 5b 31 2e 39 2e 30 5d 20 2d 20 32 30 32 32 2f 31 30 2f L.columns..##.[1.9.0].-.2022/10/
404e0 31 39 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 41 67 61 69 6e 2c 20 62 69 67 20 72 65 77 19..###.Changed.-.Again,.big.rew
40500 6f 72 6b 20 6f 66 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 20 28 75 73 65 20 73 75 62 6d 6f 64 75 ork.of.common_utils.(use.submodu
40520 6c 65 29 0a 0a 23 23 20 5b 31 2e 38 2e 30 5d 20 2d 20 32 30 32 32 2f 31 30 2f 31 31 0a 0a 23 23 le)..##.[1.8.0].-.2022/10/11..##
40540 23 20 43 68 61 6e 67 65 64 0a 2d 20 42 69 67 20 72 65 77 6f 72 6b 20 6f 66 20 63 6f 6d 6d 6f 6e #.Changed.-.Big.rework.of.common
40560 5f 75 74 69 6c 73 2e 70 79 0a 0a 23 23 20 5b 31 2e 37 2e 33 5d 20 2d 20 32 30 32 32 2f 30 39 2f _utils.py..##.[1.7.3].-.2022/09/
40580 30 38 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 49 63 6f 6e 20 6e 6f 74 20 64 69 73 08..###.Bug.fixes.-.Icon.not.dis
405a0 70 6c 61 79 20 77 68 65 6e 20 61 20 74 68 65 6d 65 20 63 6f 6c 6f 72 73 20 69 73 20 75 73 65 64 play.when.a.theme.colors.is.used
405c0 0a 0a 23 23 20 5b 31 2e 37 2e 32 5d 20 2d 20 32 30 32 32 2f 30 38 2f 31 37 0a 0a 23 23 23 20 43 ..##.[1.7.2].-.2022/08/17..###.C
405e0 68 61 6e 67 65 64 0a 2d 20 53 6d 61 6c 6c 20 69 6d 70 72 6f 76 65 6d 65 6e 74 20 6f 66 20 58 4d hanged.-.Small.improvement.of.XM
40600 4c 65 6e 74 69 74 79 0a 0a 23 23 20 5b 31 2e 37 2e 31 5d 20 2d 20 32 30 32 32 2f 30 37 2f 31 39 Lentity..##.[1.7.1].-.2022/07/19
40620 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 53 6d 61 6c 6c 20 69 6d 70 72 6f 76 65 6d 65 6e ..###.Changed.-.Small.improvemen
40640 74 20 6f 66 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 62 65 74 77 65 6e 20 6d 75 6c 74 69 70 t.of.compatibility.betwen.multip
40660 6c 65 20 43 61 6c 69 62 72 65 20 76 65 72 73 69 6f 6e 0a 0a 23 23 20 5b 31 2e 37 2e 30 5d 20 2d le.Calibre.version..##.[1.7.0].-
40680 20 32 30 32 32 2f 30 37 2f 31 38 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 53 6d 61 6c 6c .2022/07/18..###.Changed.-.Small
406a0 20 74 65 63 68 6e 69 63 61 6c 20 63 68 61 6e 67 65 20 66 6f 72 20 63 6f 6d 70 61 74 69 62 69 6c .technical.change.for.compatibil
406c0 69 74 79 20 77 69 74 68 20 43 61 6c 69 62 72 65 20 36 0a 0a 23 23 20 5b 31 2e 36 2e 33 5d 20 2d ity.with.Calibre.6..##.[1.6.3].-
406e0 20 32 30 32 32 2f 30 34 2f 32 35 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 49 6d 70 72 6f .2022/04/25..###.Changed.-.Impro
40700 76 65 20 61 20 62 61 64 20 70 61 72 73 65 20 66 6f 72 20 72 61 77 20 74 65 78 74 20 63 6f 6d 6d ve.a.bad.parse.for.raw.text.comm
40720 65 6e 74 20 62 75 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 60 3c 62 72 3e 60 20 74 61 67 73 0a 0a ent.but.containing.`<br>`.tags..
40740 23 23 20 5b 31 2e 36 2e 32 5d 20 2d 20 32 30 32 32 2f 30 32 2f 32 32 0a 0a 23 23 23 20 43 68 61 ##.[1.6.2].-.2022/02/22..###.Cha
40760 6e 67 65 64 0a 2d 20 56 61 72 69 6f 75 73 20 74 65 63 68 6e 69 63 61 6c 20 69 6d 70 72 6f 76 65 nged.-.Various.technical.improve
40780 6d 65 6e 74 0a 0a 23 23 20 5b 31 2e 36 2e 31 5d 20 2d 20 32 30 32 32 2f 30 31 2f 30 38 0a 0a 23 ment..##.[1.6.1].-.2022/01/08..#
407a0 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 46 69 78 20 61 20 72 65 67 72 65 73 73 69 6f 6e 20 ##.Bug.fixes.-.Fix.a.regression.
407c0 6f 66 20 22 64 65 6c 20 61 6c 69 67 6e 20 66 6f 72 20 6c 69 73 74 20 60 3c 6c 69 3e 60 22 0a 0a of."del.align.for.list.`<li>`"..
407e0 23 23 20 5b 31 2e 36 2e 30 5d 20 2d 20 32 30 32 32 2f 30 31 2f 30 34 0a 0a 23 23 23 20 43 68 61 ##.[1.6.0].-.2022/01/04..###.Cha
40800 6e 67 65 64 0a 2d 20 43 6f 6d 70 61 74 69 62 6c 65 20 43 61 6c 69 62 72 65 36 2f 51 74 36 0a 0a nged.-.Compatible.Calibre6/Qt6..
40820 23 23 20 5b 31 2e 35 2e 30 5d 20 2d 20 32 30 32 31 2f 31 30 2f 33 31 0a 0a 23 23 23 20 41 64 64 ##.[1.5.0].-.2021/10/31..###.Add
40840 65 64 0a 2d 20 49 6d 70 72 6f 76 65 6d 65 6e 74 20 6f 66 20 22 53 69 6e 67 6c 65 20 27 4c 69 6e ed.-.Improvement.of."Single.'Lin
40860 65 20 72 65 74 75 72 6e 27 22 20 6f 70 74 69 6f 6e 3a 20 52 65 70 6c 61 63 65 20 62 79 20 53 70 e.return'".option:.Replace.by.Sp
40880 61 63 65 2c 20 62 79 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 2c 20 6e 6f 20 63 68 61 6e 67 65 ace,.by.new.paragraph,.no.change
408a0 0a 0a 23 23 20 5b 31 2e 34 2e 31 5d 20 2d 20 32 30 32 31 2f 31 30 2f 30 33 0a 0a 23 23 23 20 43 ..##.[1.4.1].-.2021/10/03..###.C
408c0 68 61 6e 67 65 64 0a 2d 20 43 6c 65 61 6e 20 74 65 78 74 20 66 75 6c 6c 20 68 65 61 64 69 6e 67 hanged.-.Clean.text.full.heading
408e0 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 54 68 65 20 74 65 78 74 20 6f 66 20 70 72 ..###.Bug.fixes.-.The.text.of.pr
40900 6f 67 72 65 73 73 20 64 69 61 6c 6f 67 20 69 73 20 63 6f 72 72 65 63 74 6c 79 20 74 72 61 6e 73 ogress.dialog.is.correctly.trans
40920 6c 61 74 65 64 2c 20 46 49 4e 41 4c 59 21 20 5c 6f 2f 0a 0a 23 23 20 5b 31 2e 34 2e 30 5d 20 2d lated,.FINALY!.\o/..##.[1.4.0].-
40940 20 32 30 32 31 2f 30 39 2f 31 31 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 42 65 74 74 65 .2021/09/11..###.Changed.-.Bette
40960 72 20 73 75 70 70 6f 72 74 20 6f 66 20 73 6d 61 6c 6c 20 73 63 72 65 65 6e 73 20 66 6f 72 20 74 r.support.of.small.screens.for.t
40980 68 65 20 63 6f 6e 66 69 67 20 64 69 61 6c 6f 67 0a 2d 20 49 6d 70 72 6f 76 65 20 60 3c 62 72 3e he.config.dialog.-.Improve.`<br>
409a0 60 20 69 6e 20 60 3c 73 74 72 6f 6e 67 3e 60 2f 60 3c 65 6d 3e 60 0a 2d 20 49 6d 70 72 6f 76 65 `.in.`<strong>`/`<em>`.-.Improve
409c0 20 63 6c 65 61 6e 20 66 6f 72 20 74 65 78 74 20 66 75 6c 6c 79 20 62 6f 6c 64 20 61 6e 64 20 60 .clean.for.text.fully.bold.and.`
409e0 3c 73 75 62 3e 60 2f 60 3c 73 75 70 3e 60 20 70 61 72 61 67 72 61 70 68 65 0a 2d 20 49 6d 70 72 <sub>`/`<sup>`.paragraphe.-.Impr
40a00 6f 76 65 64 20 75 6e 69 66 6f 72 6d 69 74 79 20 77 69 74 68 20 74 68 65 20 43 61 6c 69 62 72 65 oved.uniformity.with.the.Calibre
40a20 20 63 6f 6d 6d 65 6e 74 20 66 6f 72 6d 61 74 0a 0a 23 23 20 5b 31 2e 33 2e 34 5d 20 2d 20 32 30 .comment.format..##.[1.3.4].-.20
40a40 32 31 2f 30 38 2f 33 30 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 43 6c 65 61 6e 20 74 65 21/08/30..###.Changed.-.Clean.te
40a60 78 74 20 66 75 6c 6c 79 20 62 6f 6c 64 0a 0a 23 23 20 5b 31 2e 33 2e 33 5d 20 2d 20 32 30 32 31 xt.fully.bold..##.[1.3.3].-.2021
40a80 2f 30 38 2f 31 37 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 43 6c 65 61 6e 20 61 20 76 65 /08/17..###.Changed.-.Clean.a.ve
40aa0 72 79 20 72 61 72 65 20 69 6e 76 61 6c 69 64 20 63 6f 6d 6d 65 6e 74 20 66 6f 6d 61 74 20 28 61 ry.rare.invalid.comment.fomat.(a
40ac0 6c 6c 20 69 6e 20 60 3c 73 75 62 3e 60 2f 60 3c 73 75 70 3e 60 29 0a 0a 23 23 20 5b 31 2e 33 2e ll.in.`<sub>`/`<sup>`)..##.[1.3.
40ae0 32 5d 20 2d 20 32 30 32 31 2f 30 31 2f 30 37 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 2].-.2021/01/07..###.Bug.fixes.-
40b00 20 46 69 78 20 63 6f 6e 76 65 72 74 20 74 6f 20 6c 69 73 74 20 61 20 70 6c 61 69 6e 20 74 65 78 .Fix.convert.to.list.a.plain.tex
40b20 74 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 61 20 79 65 61 72 0a 0a 23 23 20 5b 31 2e 33 t.beginning.with.a.year..##.[1.3
40b40 2e 31 5d 20 2d 20 32 30 32 30 2f 31 31 2f 32 36 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 .1].-.2020/11/26..###.Changed.-.
40b60 52 65 64 75 63 65 20 74 68 65 20 68 65 69 67 68 74 20 6f 66 20 74 68 65 20 63 6f 6e 66 69 67 75 Reduce.the.height.of.the.configu
40b80 72 61 74 69 6f 6e 20 77 69 6e 64 6f 77 0a 0a 23 23 20 5b 31 2e 33 2e 30 5d 20 2d 20 32 30 32 31 ration.window..##.[1.3.0].-.2021
40ba0 2f 30 31 2f 30 37 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 20 41 64 64 20 6e 65 77 20 6f 70 74 69 /01/07..###.Added.-.Add.new.opti
40bc0 6f 6e 73 20 66 6f 72 20 74 68 65 20 63 6c 65 61 6e 69 6e 67 3a 0a 20 20 2d 20 52 6f 75 6e 64 20 ons.for.the.cleaning:...-.Round.
40be0 74 68 65 20 57 65 69 67 68 74 73 20 76 61 6c 75 65 20 69 6e 73 74 65 61 64 20 6f 66 20 74 72 75 the.Weights.value.instead.of.tru
40c00 6e 63 61 74 65 64 0a 20 20 2d 20 52 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 72 6f 75 67 68 2c ncated...-.Remove.Strikethrough,
40c20 20 55 6e 64 65 72 6c 69 6e 65 20 61 6e 64 20 49 74 61 6c 69 63 0a 20 20 2d 20 54 72 79 20 61 20 .Underline.and.Italic...-.Try.a.
40c40 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 4d 61 72 6b 64 6f 77 6e 20 66 6f 72 6d 61 74 20 conversion.from.Markdown.format.
40c60 28 74 68 65 20 6b 65 79 20 77 6f 72 64 20 69 73 20 54 52 59 29 0a 20 20 2d 20 4d 61 6e 61 67 65 (the.key.word.is.TRY)...-.Manage
40c80 6d 65 6e 74 20 6f 66 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 73 0a 20 20 2d 20 43 6f 6e ment.of.empty.paragraphs...-.Con
40ca0 76 65 72 74 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 74 6f 20 70 61 72 61 67 72 61 70 vert.'Line.Return'.into.paragrap
40cc0 68 0a 20 20 2d 20 53 70 65 63 69 66 69 63 20 61 6c 69 67 6e 6d 65 6e 74 20 66 6f 72 20 6c 69 73 h...-.Specific.alignment.for.lis
40ce0 74 73 0a 20 20 2d 20 52 65 6d 6f 76 65 20 61 6c 6c 20 66 6f 72 6d 61 74 74 69 6e 67 20 28 4e 4f ts...-.Remove.all.formatting.(NO
40d00 20 4d 45 52 43 59 21 21 29 0a 0a 23 23 23 20 43 68 61 6e 67 65 64 0a 2d 20 49 6d 70 72 6f 76 65 .MERCY!!)..###.Changed.-.Improve
40d20 6d 65 6e 74 73 20 6f 66 20 6d 61 73 73 20 65 64 69 74 3a 0a 20 20 2d 20 41 64 64 20 61 20 70 72 ments.of.mass.edit:...-.Add.a.pr
40d40 6f 67 72 65 73 20 62 61 72 20 77 69 6e 64 6f 77 20 61 6e 64 20 70 6f 73 73 69 62 69 6c 69 74 79 ogres.bar.window.and.possibility
40d60 20 74 6f 20 63 61 6e 63 65 6c 20 74 68 65 20 63 75 72 72 65 6e 74 20 6f 70 65 72 61 74 69 6f 6e .to.cancel.the.current.operation
40d80 0a 20 20 2d 20 44 6f 6e 27 74 20 75 70 64 61 74 65 20 74 68 65 20 75 6e 63 68 61 6e 67 65 64 20 ...-.Don't.update.the.unchanged.
40da0 63 6f 6d 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 44 61 74 61 62 61 73 65 0a 2d 20 61 6e 64 20 61 comments.in.the.Database.-.and.a
40dc0 20 6c 6f 74 20 6f 66 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 20 66 6f 72 20 74 68 65 20 63 6c 65 .lot.of.improvements.for.the.cle
40de0 61 6e 69 6e 67 2e 0a 0a 23 23 20 5b 31 2e 32 2e 32 5d 20 2d 20 32 30 32 30 2f 31 31 2f 32 36 0a aning...##.[1.2.2].-.2020/11/26.
40e00 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 0a 2d 20 46 69 78 20 72 61 72 65 20 69 73 73 75 65 20 .###.Bug.fixes.-.Fix.rare.issue.
40e20 77 69 74 68 20 60 4c 69 62 72 61 72 79 44 61 74 61 62 61 73 65 28 29 60 0a 0a 23 23 20 5b 31 2e with.`LibraryDatabase()`..##.[1.
40e40 32 2e 31 5d 20 2d 20 32 30 32 30 2f 31 31 2f 31 36 0a 0a 23 23 23 20 42 75 67 20 66 69 78 65 73 2.1].-.2020/11/16..###.Bug.fixes
40e60 0a 2d 20 46 69 78 20 65 72 72 6f 72 20 77 68 65 6e 20 6c 6f 61 64 69 6e 67 20 74 68 65 20 53 70 .-.Fix.error.when.loading.the.Sp
40e80 61 6e 69 73 68 20 74 72 61 6e 73 6c 61 74 69 6f 6e 20 0a 0a 23 23 20 5b 31 2e 32 2e 30 5d 20 2d anish.translation...##.[1.2.0].-
40ea0 20 32 30 32 30 2f 31 30 2f 31 32 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 20 53 75 70 70 6f 72 74 .2020/10/12..###.Added.-.Support
40ec0 20 74 72 61 6e 73 6c 61 74 69 6f 6e 0a 2d 20 53 70 61 6e 69 73 68 20 74 72 61 6e 73 6c 61 74 69 .translation.-.Spanish.translati
40ee0 6f 6e 20 62 79 20 2a 64 75 6e 68 69 6c 6c 2a 0a 0a 23 23 20 5b 31 2e 31 2e 30 5d 20 2d 20 32 30 on.by.*dunhill*..##.[1.1.0].-.20
40f00 32 30 2f 31 30 2f 31 32 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 20 41 64 64 20 61 20 6f 70 74 69 20/10/12..###.Added.-.Add.a.opti
40f20 6f 6e 20 66 6f 72 20 4d 75 6c 74 69 70 6c 65 20 4c 69 6e 65 20 52 65 74 75 72 6e 2e 0a 2d 20 41 on.for.Multiple.Line.Return..-.A
40f40 64 64 20 61 20 6f 70 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 48 65 61 64 69 6e 67 73 2e 0a 2d 20 dd.a.option.for.the.Headings..-.
40f60 41 64 64 20 61 20 6f 70 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 49 44 20 61 6e 64 20 43 4c 41 53 Add.a.option.for.the.ID.and.CLAS
40f80 53 20 61 74 74 72 69 62 75 74 73 2e 0a 0a 23 23 20 5b 31 2e 30 2e 30 5d 20 2d 20 32 30 32 30 2f S.attributs...##.[1.0.0].-.2020/
40fa0 31 30 2f 31 31 0a 0a 23 23 23 20 41 64 64 65 64 2f 43 68 61 6e 67 65 64 0a 2d 20 53 74 72 61 74 10/11..###.Added/Changed.-.Strat
40fc0 65 67 79 20 63 68 61 6e 67 65 3a 20 41 6c 6c 20 43 53 53 20 72 75 6c 65 73 20 61 72 65 20 72 65 egy.change:.All.CSS.rules.are.re
40fe0 6d 6f 76 65 64 2e 20 4f 6e 6c 79 20 61 20 68 61 6e 64 66 75 6c 20 62 61 73 69 63 20 72 75 6c 65 moved..Only.a.handful.basic.rule
41000 73 20 61 73 20 6b 65 65 70 2e 0a 20 20 2d 20 41 64 64 20 61 20 6f 70 74 69 6f 6e 20 74 6f 20 73 s.as.keep....-.Add.a.option.to.s
41020 70 65 63 69 66 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 43 53 53 20 72 75 6c 65 73 20 74 6f 20 6b pecify.additional.CSS.rules.to.k
41040 65 65 70 2e 0a 20 20 2d 20 53 61 76 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e 20 61 20 eep....-.Saving.parameters.in.a.
41060 4a 53 4f 4e 20 28 63 6f 6d 6d 6f 6e 20 74 6f 20 61 6c 6c 20 6c 69 62 72 61 72 69 65 73 29 2e 20 JSON.(common.to.all.libraries)..
41080 2a 2a 2a 59 6f 75 72 20 73 65 74 74 69 6e 67 73 20 77 69 6c 6c 20 62 65 20 72 65 73 65 74 21 21 ***Your.settings.will.be.reset!!
410a0 2a 2a 2a 0a 20 20 2d 20 41 64 64 20 61 6e 20 6f 70 74 69 6f 6e 20 74 6f 20 72 65 6d 6f 76 65 20 ***...-.Add.an.option.to.remove.
410c0 27 4d 75 6c 74 69 70 6c 65 20 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 61 6e 64 20 63 72 65 61 74 'Multiple.Line.Return'.and.creat
410e0 65 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 20 69 6e 73 74 65 61 64 2e 0a 0a 23 23 20 5b e.a.new.paragraph.instead...##.[
41100 30 2e 33 2e 31 5d 20 2d 20 32 30 32 30 2f 31 30 2f 30 39 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 0.3.1].-.2020/10/09..###.Added.-
41120 20 54 72 61 6e 73 66 6f 72 6d 73 20 6e 6f 6e 2d 68 74 6d 6c 20 28 66 75 6c 6c 20 74 65 78 74 29 .Transforms.non-html.(full.text)
41140 20 63 6f 6d 6d 65 6e 74 73 20 74 6f 20 48 54 4d 4c 0a 0a 23 23 20 5b 30 2e 33 2e 30 5d 20 2d 20 .comments.to.HTML..##.[0.3.0].-.
41160 32 30 32 30 2f 31 30 2f 30 39 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 20 41 64 64 20 6f 70 74 69 2020/10/09..###.Added.-.Add.opti
41180 6f 6e 20 66 6f 72 20 74 68 65 20 57 65 69 67 68 74 0a 0a 23 23 20 5b 30 2e 32 2e 31 5d 20 2d 20 on.for.the.Weight..##.[0.2.1].-.
411a0 32 30 32 30 2f 31 30 2f 30 38 0a 0a 23 23 23 20 41 64 64 65 64 0a 2d 20 41 64 64 20 22 2a 44 65 2020/10/08..###.Added.-.Add."*De
411c0 6c 65 74 65 20 61 6c 6c 20 61 6c 69 67 6e 2a 22 20 69 6e 20 74 68 65 20 6a 75 73 74 69 66 69 63 lete.all.align*".in.the.justific
411e0 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 0a 0a 23 23 20 5b 30 2e 32 2e 30 5d 20 2d 20 32 30 32 30 2f ation.option..##.[0.2.0].-.2020/
41200 31 30 2f 30 38 0a 0a 23 23 23 20 46 69 72 73 74 20 72 65 6c 65 61 73 65 0a 50 4b 03 04 14 00 00 10/08..###.First.release.PK.....
41220 00 00 00 f0 52 1c 5b 65 51 35 14 7b 14 00 00 7b 14 00 00 09 00 00 00 52 45 41 44 4d 45 2e 6d 64 ....R.[eQ5.{...{.......README.md
41240 23 20 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 0a 5b 21 5b 4d 6f 62 69 6c 65 52 65 61 64 #.Comments.Cleaner.[![MobileRead
41260 5d 5b 6d 6f 62 69 6c 65 72 65 61 64 2d 69 6d 61 67 65 5d 5d 5b 6d 6f 62 69 6c 65 72 65 61 64 2d ][mobileread-image]][mobileread-
41280 75 72 6c 5d 0a 5b 21 5b 48 69 73 74 6f 72 79 5d 5b 63 68 61 6e 67 65 6c 6f 67 2d 69 6d 61 67 65 url].[![History][changelog-image
412a0 5d 5d 5b 63 68 61 6e 67 65 6c 6f 67 2d 75 72 6c 5d 0a 5b 21 5b 4c 69 63 65 6e 73 65 5d 5b 6c 69 ]][changelog-url].[![License][li
412c0 63 65 6e 73 65 2d 69 6d 61 67 65 5d 5d 5b 6c 69 63 65 6e 73 65 2d 75 72 6c 5d 0a 5b 21 5b 63 61 cense-image]][license-url].[![ca
412e0 6c 69 62 72 65 20 56 65 72 73 69 6f 6e 5d 5b 63 61 6c 69 62 72 65 2d 69 6d 61 67 65 5d 5d 5b 63 libre.Version][calibre-image]][c
41300 61 6c 69 62 72 65 2d 75 72 6c 5d 0a 5b 21 5b 53 74 61 74 75 73 5d 5b 73 74 61 74 75 73 2d 69 6d alibre-url].[![Status][status-im
41320 61 67 65 5d 5d 5b 73 74 61 74 75 73 2d 69 6d 61 67 65 5d 0a 0a 0a 2a 43 6f 6d 6d 65 6e 74 73 20 age]][status-image]...*Comments.
41340 43 6c 65 61 6e 65 72 2a 20 69 73 20 61 20 73 6d 61 6c 6c 20 70 6c 75 67 69 6e 20 74 68 61 74 20 Cleaner*.is.a.small.plugin.that.
41360 63 6c 65 61 6e 20 63 6f 6d 6d 65 6e 74 73 20 66 72 6f 6d 20 73 75 70 65 72 66 6c 75 6f 75 73 20 clean.comments.from.superfluous.
41380 61 6e 64 20 75 6e 77 61 6e 74 65 64 20 43 53 53 20 72 75 6c 65 73 20 28 62 61 63 6b 67 72 6f 75 and.unwanted.CSS.rules.(backgrou
413a0 6e 64 2d 63 6f 6c 6f 72 2c 20 74 65 78 74 20 63 6f 6c 6f 72 2c 20 66 6f 6e 74 2d 66 61 6d 69 6c nd-color,.text.color,.font-famil
413c0 79 2c 20 61 6d 6f 6e 67 20 6f 74 68 65 72 20 74 68 69 6e 67 73 29 2c 20 62 75 74 20 6b 65 65 70 y,.among.other.things),.but.keep
413e0 73 20 74 68 65 20 62 61 73 69 63 20 65 6c 65 6d 65 6e 74 73 20 28 69 74 61 6c 69 63 2c 20 62 6f s.the.basic.elements.(italic,.bo
41400 6c 64 29 2e 0a 54 68 65 20 70 6c 75 67 69 6e 20 77 69 6c 6c 20 61 6c 73 6f 20 74 72 79 20 74 6f ld)..The.plugin.will.also.try.to
41420 20 63 6f 6e 76 65 72 74 20 70 6c 61 69 6e 2d 74 65 78 74 20 63 6f 6d 6d 65 6e 74 73 2e 0a 0a 54 .convert.plain-text.comments...T
41440 68 65 20 70 6c 75 67 69 6e 20 68 61 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 74 69 he.plugin.has.the.following.opti
41460 6f 6e 73 3a 0a 0a 2a 20 4b 65 65 70 20 6f 72 20 72 65 6d 6f 76 65 20 48 79 70 65 72 6c 69 6e 6b ons:..*.Keep.or.remove.Hyperlink
41480 73 0a 2a 20 57 65 69 67 68 74 73 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 20 20 20 20 2a 20 52 6f 75 s.*.Weights.management.....*.Rou
414a0 6e 64 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 74 68 65 20 68 75 6e 64 72 65 64 20 28 6f 6e 6c nd.the.value.to.the.hundred.(onl
414c0 79 20 62 65 6c 6f 77 20 43 61 6c 69 62 72 65 20 36 29 0a 20 20 20 20 2a 20 52 6f 75 6e 64 20 74 y.below.Calibre.6).....*.Round.t
414e0 6f 20 42 6f 6c 64 0a 2a 20 52 65 6d 6f 76 65 20 53 74 72 69 6b 65 74 68 72 6f 75 67 68 2c 20 55 o.Bold.*.Remove.Strikethrough,.U
41500 6e 64 65 72 6c 69 6e 65 20 61 6e 64 20 49 74 61 6c 69 63 0a 2a 20 52 65 6d 6f 76 65 20 74 68 65 nderline.and.Italic.*.Remove.the
41520 20 62 6f 6c 64 20 69 66 20 61 6c 6c 20 70 61 72 61 67 72 61 70 68 65 73 20 61 72 65 20 69 74 0a .bold.if.all.paragraphes.are.it.
41540 2a 20 52 65 6d 6f 76 65 20 74 68 65 20 69 74 61 6c 69 63 20 69 66 20 61 6c 6c 20 70 61 72 61 67 *.Remove.the.italic.if.all.parag
41560 72 61 70 68 65 73 20 61 72 65 20 69 74 0a 2a 20 48 65 61 64 69 6e 67 73 20 6d 61 6e 61 67 65 6d raphes.are.it.*.Headings.managem
41580 65 6e 74 0a 20 20 20 20 2a 20 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 ent.....*.Converte.to.a.paragrap
415a0 68 0a 20 20 20 20 2a 20 43 6f 6e 76 65 72 74 65 20 74 6f 20 61 20 70 61 72 61 67 72 61 70 68 20 h.....*.Converte.to.a.paragraph.
415c0 62 75 74 20 6b 65 65 70 20 74 68 65 20 62 6f 6c 64 0a 2a 20 54 65 78 74 20 61 6c 69 67 6e 6d 65 but.keep.the.bold.*.Text.alignme
415e0 6e 74 0a 2a 20 41 75 74 6f 6d 61 74 69 63 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 0a 20 20 20 nt.*.Automatic.justification....
41600 20 2a 20 46 6f 72 63 65 20 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 0a 20 20 20 20 2a 20 52 65 6d .*.Force.justification.....*.Rem
41620 6f 76 65 20 61 6c 69 67 6e 6d 65 6e 74 0a 2a 20 53 70 65 63 69 66 69 63 20 61 6c 69 67 6e 6d 65 ove.alignment.*.Specific.alignme
41640 6e 74 20 66 6f 72 20 6c 69 73 74 73 0a 2a 20 4b 65 65 70 20 6f 72 20 44 65 6c 65 74 65 20 74 68 nt.for.lists.*.Keep.or.Delete.th
41660 65 20 49 44 20 61 6e 64 20 43 4c 41 53 53 20 61 74 74 72 69 62 75 74 73 0a 2a 20 52 65 6d 6f 76 e.ID.and.CLASS.attributs.*.Remov
41680 65 20 61 6c 6c 20 66 6f 72 6d 61 74 74 69 6e 67 20 28 4e 4f 20 4d 45 52 43 59 21 21 29 0a 2a 20 e.all.formatting.(NO.MERCY!!).*.
416a0 54 72 79 20 61 20 63 6f 6e 76 65 72 73 69 6f 6e 20 66 72 6f 6d 20 4d 61 72 64 6f 77 6e 20 66 6f Try.a.conversion.from.Mardown.fo
416c0 72 6d 61 74 20 28 74 68 65 20 6b 65 79 20 77 6f 72 64 20 69 73 20 54 52 59 29 0a 2a 20 52 65 6d rmat.(the.key.word.is.TRY).*.Rem
416e0 6f 76 65 20 4d 75 6c 74 69 70 6c 65 20 4c 69 6e 65 20 52 65 74 75 72 6e 20 3c 62 72 3e 20 61 6e ove.Multiple.Line.Return.<br>.an
41700 64 20 63 72 65 61 74 65 20 61 20 6e 65 77 20 70 61 72 61 67 72 61 70 68 20 69 6e 73 74 65 61 64 d.create.a.new.paragraph.instead
41720 0a 2a 20 43 6f 6e 76 65 72 74 20 27 4c 69 6e 65 20 52 65 74 75 72 6e 27 20 69 6e 74 6f 20 50 61 .*.Convert.'Line.Return'.into.Pa
41740 72 61 67 72 61 70 68 20 6f 72 20 53 70 61 63 65 0a 2a 20 4d 61 6e 61 67 65 6d 65 6e 74 20 6f 66 ragraph.or.Space.*.Management.of
41760 20 65 6d 70 74 79 20 70 61 72 61 67 72 61 70 68 73 0a 2a 20 52 65 6d 6f 76 69 6e 67 20 69 6d 61 .empty.paragraphs.*.Removing.ima
41780 67 65 73 0a 2a 20 41 62 69 6c 69 74 79 20 74 6f 20 73 70 65 63 69 66 79 20 6f 74 68 65 72 73 20 ges.*.Ability.to.specify.others.
417a0 43 53 53 20 72 75 6c 65 73 20 74 6f 20 6b 65 65 70 20 69 6e 20 61 64 64 69 74 69 6f 6e 20 74 6f CSS.rules.to.keep.in.addition.to
417c0 20 74 68 65 20 62 61 73 69 63 20 43 53 53 20 72 75 6c 65 0a 2a 20 50 6f 73 73 69 62 69 6c 69 74 .the.basic.CSS.rule.*.Possibilit
417e0 79 20 74 6f 20 61 70 70 6c 79 20 74 68 65 20 63 6c 65 61 6e 69 6e 67 20 74 6f 20 6f 74 68 65 72 y.to.apply.the.cleaning.to.other
41800 73 20 63 75 73 74 6f 6d 20 48 54 4d 4c 20 63 6f 6c 75 6d 6e 73 0a 2a 20 53 75 70 70 6f 72 74 20 s.custom.HTML.columns.*.Support.
41820 6f 66 20 43 61 74 65 67 6f 72 79 20 4e 6f 74 65 73 0a 0a 0a 42 61 73 69 63 20 43 53 53 20 72 75 of.Category.Notes...Basic.CSS.ru
41840 6c 65 73 20 6b 65 65 70 20 62 79 20 64 65 66 61 75 6c 74 3a 0a 60 60 60 0a 74 65 78 74 2d 61 6c les.keep.by.default:.```.text-al
41860 69 67 6e 0a 66 6f 6e 74 2d 77 65 69 67 68 74 0a 66 6f 6e 74 2d 73 74 79 6c 65 0a 74 65 78 74 2d ign.font-weight.font-style.text-
41880 64 65 63 6f 72 61 74 69 6f 6e 0a 60 60 60 0a 0a 0a 2a 2a 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 2a decoration.```...**Installation*
418a0 2a 0a 0a 4f 70 65 6e 20 2a 50 72 65 66 65 72 65 6e 63 65 73 20 2d 3e 20 50 6c 75 67 69 6e 73 20 *..Open.*Preferences.->.Plugins.
418c0 2d 3e 20 47 65 74 20 6e 65 77 20 70 6c 75 67 69 6e 73 2a 20 61 6e 64 20 69 6e 73 74 61 6c 6c 20 ->.Get.new.plugins*.and.install.
418e0 74 68 65 20 22 43 6f 6d 6d 65 6e 74 73 20 43 6c 65 61 6e 65 72 22 20 70 6c 75 67 69 6e 2e 0a 59 the."Comments.Cleaner".plugin..Y
41900 6f 75 20 6d 61 79 20 61 6c 73 6f 20 64 6f 77 6e 6c 6f 61 64 20 74 68 65 20 61 74 74 61 63 68 65 ou.may.also.download.the.attache
41920 64 20 7a 69 70 20 66 69 6c 65 20 61 6e 64 20 69 6e 73 74 61 6c 6c 20 74 68 65 20 70 6c 75 67 69 d.zip.file.and.install.the.plugi
41940 6e 20 6d 61 6e 75 61 6c 6c 79 2c 20 74 68 65 6e 20 72 65 73 74 61 72 74 20 63 61 6c 69 62 72 65 n.manually,.then.restart.calibre
41960 20 61 73 20 64 65 73 63 72 69 62 65 64 20 69 6e 20 74 68 65 20 5b 49 6e 74 72 6f 64 75 63 74 69 .as.described.in.the.[Introducti
41980 6f 6e 20 74 6f 20 70 6c 75 67 69 6e 73 20 74 68 72 65 61 64 5d 28 68 74 74 70 73 3a 2f 2f 77 77 on.to.plugins.thread](https://ww
419a0 77 2e 6d 6f 62 69 6c 65 72 65 61 64 2e 63 6f 6d 2f 66 6f 72 75 6d 73 2f 73 68 6f 77 74 68 72 65 w.mobileread.com/forums/showthre
419c0 61 64 2e 70 68 70 3f 74 3d 31 31 38 36 38 30 22 29 0a 0a 54 68 65 20 70 6c 75 67 69 6e 20 77 6f ad.php?t=118680")..The.plugin.wo
419e0 72 6b 73 20 66 6f 72 20 43 61 6c 69 62 72 65 20 35 20 61 6e 64 20 6c 61 74 65 72 2e 0a 0a 50 61 rks.for.Calibre.5.and.later...Pa
41a00 67 65 3a 20 5b 47 69 74 48 75 62 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f ge:.[GitHub](https://github.com/
41a20 75 6e 2d 70 6f 67 61 7a 2f 43 6f 6d 6d 65 6e 74 73 2d 43 6c 65 61 6e 65 72 29 20 7c 20 5b 4d 6f un-pogaz/Comments-Cleaner).|.[Mo
41a40 62 69 6c 65 52 65 61 64 5d 28 68 74 74 70 73 3a 2f 2f 77 77 77 2e 6d 6f 62 69 6c 65 72 65 61 64 bileRead](https://www.mobileread
41a60 2e 63 6f 6d 2f 66 6f 72 75 6d 73 2f 73 68 6f 77 74 68 72 65 61 64 2e 70 68 70 3f 74 3d 33 33 33 .com/forums/showthread.php?t=333
41a80 38 36 31 29 0a 0a 3c 69 6e 73 3e 4e 6f 74 65 20 66 6f 72 20 74 68 6f 73 65 20 77 68 6f 20 77 69 861)..<ins>Note.for.those.who.wi
41aa0 73 68 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 74 72 61 6e 73 6c 61 74 69 6f 6e 3a 3c 2f 69 6e sh.to.provide.a.translation:</in
41ac0 73 3e 3c 62 72 3e 0a 49 20 61 6d 20 2a 46 72 65 6e 63 68 2a 21 20 41 6c 74 68 6f 75 67 68 20 66 s><br>.I.am.*French*!.Although.f
41ae0 6f 72 20 6f 62 76 69 6f 75 73 20 72 65 61 73 6f 6e 73 2c 20 74 68 65 20 64 65 66 61 75 6c 74 20 or.obvious.reasons,.the.default.
41b00 6c 61 6e 67 75 61 67 65 20 6f 66 20 74 68 65 20 70 6c 75 67 69 6e 20 69 73 20 45 6e 67 6c 69 73 language.of.the.plugin.is.Englis
41b20 68 2c 20 6b 65 65 70 20 69 6e 20 6d 69 6e 64 20 74 68 61 74 20 61 6c 72 65 61 64 79 20 61 20 74 h,.keep.in.mind.that.already.a.t
41b40 72 61 6e 73 6c 61 74 69 6f 6e 2e 0a 0a 0a 3c 62 72 3e 3c 62 72 3e 0a 0a 21 5b 63 6f 6e 66 69 67 ranslation....<br><br>..![config
41b60 75 72 61 74 69 6f 6e 20 70 61 6e 65 6c 5d 28 68 74 74 70 73 3a 2f 2f 72 61 77 2e 67 69 74 68 75 uration.panel](https://raw.githu
41b80 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 75 6e 2d 70 6f 67 61 7a 2f 43 6f 6d 6d 65 6e busercontent.com/un-pogaz/Commen
41ba0 74 73 2d 43 6c 65 61 6e 65 72 2f 6d 61 69 6e 2f 73 74 61 74 69 63 2f 43 6f 6d 6d 65 6e 74 73 5f ts-Cleaner/main/static/Comments_
41bc0 43 6c 65 61 6e 65 72 2e 70 6e 67 29 0a 21 5b 62 75 74 74 6f 6e 20 6d 65 6e 75 5d 28 68 74 74 70 Cleaner.png).![button.menu](http
41be0 73 3a 2f 2f 72 61 77 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 75 6e s://raw.githubusercontent.com/un
41c00 2d 70 6f 67 61 7a 2f 43 6f 6d 6d 65 6e 74 73 2d 43 6c 65 61 6e 65 72 2f 6d 61 69 6e 2f 73 74 61 -pogaz/Comments-Cleaner/main/sta
41c20 74 69 63 2f 43 6f 6d 6d 65 6e 74 73 5f 43 6c 65 61 6e 65 72 2d 6d 65 6e 75 2e 70 6e 67 29 0a 21 tic/Comments_Cleaner-menu.png).!
41c40 5b 65 78 61 6d 70 6c 65 20 6f 66 20 63 6c 65 61 6e 65 64 20 63 6f 6d 6d 65 6e 74 5d 28 68 74 74 [example.of.cleaned.comment](htt
41c60 70 73 3a 2f 2f 72 61 77 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e 63 6f 6d 2f 75 ps://raw.githubusercontent.com/u
41c80 6e 2d 70 6f 67 61 7a 2f 43 6f 6d 6d 65 6e 74 73 2d 43 6c 65 61 6e 65 72 2f 6d 61 69 6e 2f 73 74 n-pogaz/Comments-Cleaner/main/st
41ca0 61 74 69 63 2f 43 6f 6d 6d 65 6e 74 73 5f 43 6c 65 61 6e 65 72 2d 65 78 65 6d 70 6c 65 2e 67 69 atic/Comments_Cleaner-exemple.gi
41cc0 66 29 0a 21 5b 73 65 6c 65 63 74 69 6f 6e 20 6f 66 20 6e 6f 74 65 73 20 74 6f 20 63 6c 65 61 6e f).![selection.of.notes.to.clean
41ce0 5d 28 68 74 74 70 73 3a 2f 2f 72 61 77 2e 67 69 74 68 75 62 75 73 65 72 63 6f 6e 74 65 6e 74 2e ](https://raw.githubusercontent.
41d00 63 6f 6d 2f 75 6e 2d 70 6f 67 61 7a 2f 43 6f 6d 6d 65 6e 74 73 2d 43 6c 65 61 6e 65 72 2f 6d 61 com/un-pogaz/Comments-Cleaner/ma
41d20 69 6e 2f 73 74 61 74 69 63 2f 43 6f 6d 6d 65 6e 74 73 5f 43 6c 65 61 6e 65 72 2d 6e 6f 74 65 73 in/static/Comments_Cleaner-notes
41d40 2e 70 6e 67 29 0a 0a 0a 5b 6d 6f 62 69 6c 65 72 65 61 64 2d 75 72 6c 5d 3a 20 68 74 74 70 73 3a .png)...[mobileread-url]:.https:
41d60 2f 2f 77 77 77 2e 6d 6f 62 69 6c 65 72 65 61 64 2e 63 6f 6d 2f 66 6f 72 75 6d 73 2f 73 68 6f 77 //www.mobileread.com/forums/show
41d80 74 68 72 65 61 64 2e 70 68 70 3f 74 3d 33 33 33 38 36 31 0a 0a 5b 63 68 61 6e 67 65 6c 6f 67 2d thread.php?t=333861..[changelog-
41da0 69 6d 61 67 65 5d 3a 20 68 74 74 70 73 3a 2f 2f 69 6d 67 2e 73 68 69 65 6c 64 73 2e 69 6f 2f 62 image]:.https://img.shields.io/b
41dc0 61 64 67 65 2f 48 69 73 74 6f 72 79 2d 43 48 41 4e 47 45 4c 4f 47 2d 62 6c 75 65 2e 73 76 67 0a adge/History-CHANGELOG-blue.svg.
41de0 5b 63 68 61 6e 67 65 6c 6f 67 2d 75 72 6c 5d 3a 20 63 68 61 6e 67 65 6c 6f 67 2e 6d 64 0a 0a 5b [changelog-url]:.changelog.md..[
41e00 6c 69 63 65 6e 73 65 2d 69 6d 61 67 65 5d 3a 20 68 74 74 70 73 3a 2f 2f 69 6d 67 2e 73 68 69 65 license-image]:.https://img.shie
41e20 6c 64 73 2e 69 6f 2f 62 61 64 67 65 2f 4c 69 63 65 6e 73 65 2d 47 50 4c 2d 79 65 6c 6c 6f 77 2e lds.io/badge/License-GPL-yellow.
41e40 73 76 67 0a 5b 6c 69 63 65 6e 73 65 2d 75 72 6c 5d 3a 20 4c 49 43 45 4e 53 45 0a 0a 5b 63 61 6c svg.[license-url]:.LICENSE..[cal
41e60 69 62 72 65 2d 69 6d 61 67 65 5d 3a 20 68 74 74 70 73 3a 2f 2f 69 6d 67 2e 73 68 69 65 6c 64 73 ibre-image]:.https://img.shields
41e80 2e 69 6f 2f 62 61 64 67 65 2f 63 61 6c 69 62 72 65 2d 35 2e 30 30 2e 30 5f 61 6e 64 5f 61 62 6f .io/badge/calibre-5.00.0_and_abo
41ea0 76 65 2d 67 72 65 65 6e 3f 6c 6f 67 6f 3d 64 61 74 61 3a 69 6d 61 67 65 2f 70 6e 67 3b 62 61 73 ve-green?logo=data:image/png;bas
41ec0 65 36 34 2c 69 56 42 4f 52 77 30 4b 47 67 6f 41 41 41 41 4e 53 55 68 45 55 67 41 41 41 42 41 41 e64,iVBORw0KGgoAAAANSUhEUgAAABAA
41ee0 41 41 41 51 43 41 59 41 41 41 41 66 38 2f 39 68 41 41 41 41 43 58 42 49 57 58 4d 41 41 41 37 44 AAAQCAYAAAAf8/9hAAAACXBIWXMAAA7D
41f00 41 41 41 4f 77 77 48 48 62 36 68 6b 41 41 41 41 47 58 52 46 57 48 52 54 62 32 5a 30 64 32 46 79 AAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2Fy
41f20 5a 51 42 33 64 33 63 75 61 57 35 72 63 32 4e 68 63 47 55 75 62 33 4a 6e 6d 2b 34 38 47 67 41 41 ZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAA
41f40 41 6c 6c 4a 52 45 46 55 4f 4d 74 31 6b 7a 31 4d 55 31 45 55 78 33 2f 33 66 5a 53 50 30 6c 4a 4c AllJREFUOMt1kz1MU1EUx3/3fZSP0lJL
41f60 67 56 71 52 4e 71 43 44 48 78 41 70 41 57 63 58 46 39 4f 34 6f 6f 6d 44 63 58 55 30 36 69 49 75 gVqRNqCDHxApAWcXF9O4oomDcXU06iIu
41f80 4c 67 78 75 54 69 34 6d 72 6d 37 47 52 49 32 4c 69 59 4f 4a 34 6c 64 41 69 42 71 78 71 53 41 32 LgxuTi4mrm7GRI2LiYOJ4ldAiBqxqSA2
41fa0 6c 45 63 2f 6f 4e 43 2b 64 39 39 31 65 49 38 48 52 6e 75 47 6d 33 74 7a 7a 76 32 64 2f 7a 6e 6e lEc/oNC+d991eI8HRnuGm3tzzv2d/znn
41fc0 58 70 45 62 35 43 48 51 44 6f 43 69 38 4c 69 67 72 75 48 62 72 58 4f 54 73 36 57 6c 36 71 6e 6b XpEb5CHQDoCi8LigruHbrXOTs6Wl6qnk
41fe0 63 50 54 64 37 53 64 76 54 76 4d 66 4d 2f 49 31 4c 67 6e 68 48 59 53 67 65 50 48 6d 39 41 50 68 cPTd7SdvTvMfM/I1LgnhHYSgePHm9APh
42000 65 4d 41 62 56 38 65 2b 6d 5a 6f 61 52 37 42 43 43 7a 4d 79 45 65 68 4e 4a 58 43 6b 79 30 62 52 eMAbV8e+mZoaR7BCCzMyEehNJXCky0bR
42020 32 74 4a 63 64 78 37 4e 63 2b 61 74 30 50 4f 6a 69 51 59 6f 6b 57 6b 4a 41 42 67 63 54 6c 47 76 2tJcdx7Nc+at0POjiQYokWkJABgcTlGv
42040 37 32 41 56 4c 58 52 64 51 39 64 30 58 4b 55 6f 62 34 75 79 46 36 61 47 57 67 45 30 67 4f 33 36 72AVLXRdQ9d0XKUob4uyF6aGWgE0gO36
42060 4a 71 37 64 42 45 42 4b 6c 36 5a 74 34 7a 67 4f 35 62 70 65 38 75 4f 36 50 37 36 38 48 47 75 70 Jq7dBEBKl6Zt4zgO5bpe8uO6P768HGup
42080 41 43 56 52 72 76 7a 48 57 64 77 4d 57 62 41 46 77 48 78 39 36 75 79 39 75 2b 55 54 63 36 38 57 ACVRrvzHWdwMWbAFwHx96uy9u+UTc68W
420a0 63 6d 63 75 54 43 71 6c 6a 4e 7a 4d 46 4c 38 30 67 43 4e 44 4d 66 72 36 4f 30 45 68 39 67 4f 57 cmcuTCqljNzMFL80gCNDMfr6O0Eh9gOW
420c0 71 32 59 5a 73 41 46 57 47 79 4e 58 59 76 33 68 36 63 4c 6e 79 70 68 30 6d 6c 6c 68 4d 42 47 55 q2YZsAFWGyNXYv3h6cLnyph0mllhMBGU
420e0 38 48 56 78 6c 65 4b 4b 42 51 49 46 63 4b 69 76 31 79 38 48 46 31 67 47 36 4e 47 58 71 71 46 32 8HVxleKKBQIFcKiv1y8HF1gG6NGXqqF2
42100 45 38 63 47 78 33 62 51 59 53 77 41 2f 4d 78 62 31 43 72 62 51 57 59 6c 77 44 54 38 36 69 41 50 E8cGx3bQYSwA/Mxb1CrbQWYlwDT86iAP
42120 4d 47 44 4d 53 59 44 49 41 63 48 47 61 67 55 46 34 77 45 67 6e 51 34 54 6a 35 74 37 41 46 65 68 MGDMSYDIAcHGagUF4wEgnQ4Tj5t7AFeh
42140 61 63 4c 76 73 73 67 44 70 50 53 46 4d 47 44 48 2b 6b 4b 55 6c 73 73 41 32 61 43 4a 39 61 30 47 acLvssgDpPSFMGDH+kKUlssA2aCJ9a0G
42160 58 56 31 47 41 44 42 4e 41 30 65 36 75 37 67 38 67 43 34 61 61 57 42 78 4d 6a 63 36 32 74 62 65 XV1GADBNA0e6u7g8gC4aaWBxMjc62tbe
42180 42 70 43 36 2f 6f 69 6b 42 6c 43 74 4e 4e 6d 73 4e 51 4b 41 62 55 74 50 76 4c 66 2b 38 44 63 5a BpC6/oikBlCtNNmsNQKAbUtPvLf+8DcZ
421a0 4a 58 67 66 54 79 59 49 78 79 4c 65 43 44 57 79 47 6f 41 6d 46 4e 57 61 44 45 59 67 70 59 4e 68 JXgfTyYIxyLeCDWyGoAmFNWaDEYgpYNh
421c0 6d 50 34 39 54 77 45 51 36 61 54 32 35 61 38 35 4b 78 2f 51 48 56 59 6b 6f 71 36 66 45 31 79 6c mP49TwEQ6aT25a85Kx/QHVYkoq6fE1yl
421e0 67 6e 66 68 43 72 6b 4c 59 44 44 30 59 57 33 2f 66 51 46 5a 37 58 73 56 58 69 7a 41 73 33 6b 6f gnfhCrkLYDD0YW3/fQFZ7XsVXizAs3ko
42200 31 49 6a 30 4a 33 70 49 70 77 35 79 4f 4a 6b 6b 33 4e 48 52 65 66 4a 31 65 67 56 6f 41 42 77 33 1Ij0J3pIpw5yOJkk3NHRefJ1egVoABw3
42220 6e 75 34 41 63 6b 38 41 57 57 4d 34 79 6b 37 77 6e 57 48 74 64 32 6b 39 57 69 79 74 74 2f 6b 70 nu4Ack8AWWM4yk7wnWHtd2k9Wiytt/kp
42240 4c 47 62 75 75 50 63 6e 52 6c 32 37 4b 52 73 44 49 2f 46 6a 36 6a 78 76 68 63 42 55 38 45 6b 6f LGbuuPcnRl27KRsDI/Fj6jxvhcBU8Eko
42260 5a 76 38 41 55 52 44 78 71 31 56 61 76 30 59 41 41 41 41 41 53 55 56 4f 52 4b 35 43 59 49 49 3d Zv8AURDxq1Vav0YAAAAASUVORK5CYII=
42280 0a 5b 63 61 6c 69 62 72 65 2d 75 72 6c 5d 3a 20 68 74 74 70 73 3a 2f 2f 77 77 77 2e 63 61 6c 69 .[calibre-url]:.https://www.cali
422a0 62 72 65 2d 65 62 6f 6f 6b 2e 63 6f 6d 2f 0a 0a 5b 73 74 61 74 75 73 2d 69 6d 61 67 65 5d 3a 20 bre-ebook.com/..[status-image]:.
422c0 68 74 74 70 73 3a 2f 2f 69 6d 67 2e 73 68 69 65 6c 64 73 2e 69 6f 2f 62 61 64 67 65 2f 53 74 61 https://img.shields.io/badge/Sta
422e0 74 75 73 2d 53 74 61 62 6c 65 2d 67 72 65 65 6e 0a 0a 5b 6d 6f 62 69 6c 65 72 65 61 64 2d 69 6d tus-Stable-green..[mobileread-im
42300 61 67 65 5d 3a 20 68 74 74 70 73 3a 2f 2f 69 6d 67 2e 73 68 69 65 6c 64 73 2e 69 6f 2f 62 61 64 age]:.https://img.shields.io/bad
42320 67 65 2f 4d 6f 62 69 6c 65 52 65 61 64 2d 50 6c 75 67 69 6e 25 32 30 54 68 72 65 61 64 2d 62 6c ge/MobileRead-Plugin%20Thread-bl
42340 75 65 3f 6c 6f 67 6f 3d 64 61 74 61 3a 69 6d 61 67 65 2f 70 6e 67 3b 62 61 73 65 36 34 2c 69 56 ue?logo=data:image/png;base64,iV
42360 42 4f 52 77 30 4b 47 67 6f 41 41 41 41 4e 53 55 68 45 55 67 41 41 41 42 41 41 41 41 41 51 43 41 BORw0KGgoAAAANSUhEUgAAABAAAAAQCA
42380 59 41 41 41 41 66 38 2f 39 68 41 41 41 41 42 6d 4a 4c 52 30 51 41 2f 77 44 2f 41 50 2b 67 76 61 YAAAAf8/9hAAAABmJLR0QA/wD/AP+gva
423a0 65 54 41 41 41 41 43 58 42 49 57 58 4d 41 41 41 73 54 41 41 41 4c 45 77 45 41 6d 70 77 59 41 41 eTAAAACXBIWXMAAAsTAAALEwEAmpwYAA
423c0 41 43 4a 55 6c 45 51 56 51 34 45 5a 33 53 58 30 68 54 59 52 6a 48 38 65 2b 37 39 44 51 63 6d 35 ACJUlEQVQ4EZ3SX0hTYRjH8e+79DQcm5
423e0 70 47 62 61 30 70 51 69 7a 72 4a 68 69 4d 76 4a 44 77 6a 33 64 52 32 53 49 6f 71 4b 36 38 43 59 pGba0pQizrJhiMvJDwj3dR2SIoqK68CY
42400 6f 75 79 32 34 73 62 2f 54 4b 62 73 75 79 43 34 6b 77 47 33 67 56 42 70 55 6c 71 50 31 68 42 61 ouy24sb/TKbsuyC4kwG3gVBpUlqP1hBa
42420 55 78 69 4d 70 35 61 4c 5a 79 7a 64 6e 38 34 37 45 36 2b 59 51 48 44 6b 4e 76 2b 74 79 38 38 50 UxiMp5aLZyzdn847E6+YQHDkNv+ty88P
42440 49 38 50 78 36 65 39 31 58 76 4a 35 4e 6d 39 4d 55 34 34 74 31 30 47 6a 75 58 70 6c 46 56 35 71 I8Px6e91XvJ5Nm9MU44t10GjuXplFV5q
42460 5a 49 4b 36 53 79 72 41 52 52 48 64 67 57 41 50 62 76 71 66 54 31 41 36 6a 6f 38 42 75 7a 37 33 ZIK6SyrARRHdgWAPbvqfT1A6jo8Buz73
42480 57 63 66 41 66 33 56 6e 47 71 4d 63 7a 43 34 6a 4b 4a 62 7a 39 59 57 44 4a 57 7a 77 78 69 49 76 WcfAf3VnGqMczC4jKJbz9YWDJWzwxiIv
424a0 6b 64 4d 66 34 31 54 51 48 72 4b 45 35 50 38 58 78 67 42 50 33 6c 49 30 52 72 61 79 73 69 46 4b kdMf41TQHrKE5P8XxgBP3lI0RraysiFK
424c0 78 41 6c 41 34 4e 49 52 59 4e 7a 2f 6f 42 4b 33 71 63 47 37 64 37 45 45 4f 72 78 62 46 59 6a 46 xAlA4NIRYNz/oBK3qcG7d7EEOrxbFYjF
424e0 41 6f 68 4f 6a 74 37 55 58 34 2f 58 35 6d 59 6b 39 78 6c 42 65 37 79 4a 66 35 6d 5a 4d 6d 63 72 AohOjt7UX4/X5mYk9xlBe7yJf5mZMmcr
42500 6b 63 67 34 4f 44 75 4e 31 75 4c 4e 6c 73 6c 75 62 6d 5a 75 72 71 36 74 41 63 4a 76 2b 57 32 44 kcg4ODuN1uLNlslubmZurq6tAcJv+W2D
42520 62 77 6a 48 77 4e 48 67 4e 6a 66 6f 35 49 4a 49 4c 58 36 38 55 69 6f 65 33 74 37 52 6a 47 43 71 bwjHwNHgNjfo5IJILX68Uioe3t7RjGCq
42540 37 74 41 51 72 59 51 47 31 39 45 39 55 56 58 6f 52 4d 4d 7a 59 32 52 6b 31 4e 44 63 46 67 6b 4d 7tAQrYQG19E9UVXoRMMzY2Rk1NDcFgkM
42560 37 4f 54 71 34 2f 47 45 45 34 32 49 42 72 73 34 61 64 72 75 74 30 64 48 53 51 54 43 59 52 69 58 7OTq4/GEE42IBrs4adrut0dHSQTCYRiX
42580 53 57 72 57 34 58 36 6f 4f 65 30 69 39 48 6e 2f 6a 4a 55 37 39 72 70 78 51 67 4a 6d 63 79 7a 42 SWrW4X6oOe0i9Hn/jJU79rpxQgJmcyzB
425a0 75 2f 73 4a 4d 6e 62 44 74 79 41 41 56 77 2f 4e 70 64 6b 2f 39 77 37 38 49 4a 70 56 67 6a 48 79 u/sJMnbDtyAAVw/Npdk/9w78IJpVgjHy
425c0 6f 33 38 35 6c 45 49 6f 35 49 72 33 68 59 2f 71 33 77 4f 62 50 59 6f 62 6c 52 35 55 45 71 79 6b o385lEIo5Ir3hY/q3wObPYoblR5UEqyk
425e0 6f 34 33 52 68 57 43 70 75 70 71 77 48 7a 7a 32 49 4f 38 55 71 72 35 64 4b 64 43 53 36 65 50 55 o43RhWCpupqwHzz2IO8Uqr5dKdCS6ePU
42600 6b 6b 4d 45 30 32 46 73 58 69 61 2b 6c 48 71 32 70 51 39 69 56 69 66 48 70 73 4e 51 73 4f 6e 7a kkME02FsXia+lHq2pQ9iVifHpsNQsOnz
42620 6c 50 4f 42 79 6d 75 2b 38 68 70 63 65 36 46 54 5a 4c 48 34 65 78 46 4c 42 47 4f 55 75 78 4d 37 lPOBymu+8hpce6FTZLH4exFLBGOUuxM7
42640 36 38 70 61 75 72 69 31 51 71 52 61 42 6f 7a 70 79 39 64 51 69 4c 77 31 6d 43 52 57 47 54 75 64 68pauri1QqRaBozpy9dQiLw1mCRWGTud
42660 39 69 32 6b 66 56 66 4c 76 5a 35 43 78 6d 65 58 6f 43 6d 63 36 36 38 35 30 62 56 65 73 47 69 49 9i2kfVfLvZ5CxmeXoCmc66850bVesGiI
42680 56 59 6a 7a 6b 37 65 68 4d 6a 47 63 65 75 63 4d 73 4f 33 50 75 4f 34 6d 6d 36 6f 72 44 35 43 7a VYjzk7ehMjGceucMsO3PuO4mm6orD5Cz
426a0 51 74 31 69 2b 64 64 66 4c 66 41 41 41 41 41 45 6c 46 54 6b 53 75 51 6d 43 43 0a 50 4b 03 04 14 Qt1i+ddfLfAAAAAElFTkSuQmCC.PK...
426c0 00 00 00 00 00 33 56 2e 59 28 a2 e5 a0 4e 07 00 00 4e 07 00 00 16 00 00 00 63 6f 6d 6d 6f 6e 5f .....3V.Y(...N...N.......common_
426e0 75 74 69 6c 73 2f 52 45 41 44 4d 45 2e 6d 64 23 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 0a 0a 54 utils/README.md#.common_utils..T
42700 68 69 73 20 72 65 70 6f 73 69 74 6f 72 79 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 60 63 6f 6d his.repository.contains.the.`com
42720 6d 6f 6e 5f 75 74 69 6c 73 60 20 6d 6f 64 75 6c 65 20 75 73 65 64 20 66 6f 72 20 6d 79 20 43 61 mon_utils`.module.used.for.my.Ca
42740 6c 69 62 72 65 20 70 6c 75 67 69 6e 73 2e 0a 0a 41 6c 6c 20 74 68 69 73 20 77 6f 72 6b 20 69 73 libre.plugins...All.this.work.is
42760 20 69 73 20 68 69 67 68 6c 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 5b 77 6f 72 6b 20 6f 66 .is.highly.based.on.the.[work.of
42780 20 6b 69 77 69 64 75 64 65 5d 28 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6b 69 .kiwidude](https://github.com/ki
427a0 77 69 64 75 64 65 36 38 2f 63 61 6c 69 62 72 65 5f 70 6c 75 67 69 6e 73 2f 74 72 65 65 2f 6d 61 widude68/calibre_plugins/tree/ma
427c0 69 6e 2f 63 6f 6d 6d 6f 6e 29 2e 0a 0a 54 68 69 73 20 6d 6f 64 75 6c 65 20 72 65 70 6f 73 69 74 in/common)...This.module.reposit
427e0 6f 72 79 20 77 61 73 20 63 72 65 61 74 65 64 20 66 6f 72 20 6d 79 20 70 65 72 73 6f 6e 61 6c 20 ory.was.created.for.my.personal.
42800 63 6f 6d 66 6f 72 74 20 61 6e 64 20 72 65 61 72 72 61 6e 67 65 64 20 69 6e 20 61 20 66 6f 72 6d comfort.and.rearranged.in.a.form
42820 61 74 20 49 20 6c 69 6b 65 2e 0a 0a 23 23 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 0a 0a 60 60 60 at.I.like...##.Installation..```
42840 0a 67 69 74 20 73 75 62 6d 6f 64 75 6c 65 20 61 64 64 20 2d 2d 6e 61 6d 65 20 63 6f 6d 6d 6f 6e .git.submodule.add.--name.common
42860 5f 75 74 69 6c 73 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 75 6e 2d 70 6f 67 _utils.https://github.com/un-pog
42880 61 7a 2f 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2e 67 69 74 0a 67 69 74 20 73 75 62 6d 6f 64 75 6c az/common_utils.git.git.submodul
428a0 65 20 69 6e 69 74 0a 67 69 74 20 73 75 62 6d 6f 64 75 6c 65 20 75 70 64 61 74 65 20 2d 2d 72 65 e.init.git.submodule.update.--re
428c0 6d 6f 74 65 20 2d 2d 6d 65 72 67 65 0a 60 60 60 0a 0a 31 29 20 49 6e 73 74 61 6c 6c 20 74 68 69 mote.--merge.```..1).Install.thi
428e0 73 20 72 65 70 6f 73 69 74 6f 72 79 20 61 73 20 61 20 73 75 62 6d 6f 64 75 6c 65 0a 32 29 20 49 s.repository.as.a.submodule.2).I
42900 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 73 75 62 6d 6f 64 75 6c 65 0a 33 29 20 55 70 64 61 74 nitialize.the.submodule.3).Updat
42920 65 20 74 68 65 20 73 75 62 6d 6f 64 75 6c 65 0a 0a 23 23 20 43 6f 6e 74 65 6e 74 0a 0a 7c 20 46 e.the.submodule..##.Content..|.F
42940 69 6c 65 6e 61 6d 65 20 7c 20 50 75 72 70 6f 73 65 20 7c 0a 7c 20 2d 2d 2d 2d 2d 2d 2d 2d 20 7c ilename.|.Purpose.|.|.--------.|
42960 20 2d 2d 2d 2d 2d 2d 2d 20 7c 0a 7c 20 5c 5f 5c 5f 69 6e 69 74 5c 5f 5c 5f 2e 70 79 20 7c 20 52 .-------.|.|.\_\_init\_\_.py.|.R
42980 6f 6f 74 20 65 6c 65 6d 65 6e 74 2c 20 60 67 65 74 5f 69 63 6f 6e 28 29 60 20 61 6e 64 20 76 61 oot.element,.`get_icon()`.and.va
429a0 72 69 6f 75 73 20 73 65 6c 66 2d 73 75 66 66 69 73 61 6e 74 20 66 75 6e 63 74 69 6f 6e 73 20 7c rious.self-suffisant.functions.|
429c0 0a 7c 20 63 6f 6c 75 6d 6e 73 2e 70 79 20 7c 20 47 65 74 20 63 6f 6c 75 6d 73 20 69 6e 66 6f 72 .|.columns.py.|.Get.colums.infor
429e0 6d 61 74 69 6f 6e 2c 20 62 61 73 65 64 20 6f 6e 20 74 68 65 69 72 20 74 79 70 65 20 7c 0a 7c 20 mation,.based.on.their.type.|.|.
42a00 64 69 61 6c 6f 67 73 2e 70 79 20 7c 20 50 72 65 2d 62 75 69 6c 64 20 75 73 65 66 75 6c 20 64 69 dialogs.py.|.Pre-build.useful.di
42a20 61 6c 6f 67 73 20 7c 0a 7c 20 6c 69 62 72 61 72 79 73 2e 70 79 20 7c 20 46 75 6e 63 74 69 6f 6e alogs.|.|.librarys.py.|.Function
42a40 73 20 74 6f 20 72 65 74 72 69 65 76 65 20 42 6f 6f 6b 20 49 44 73 20 66 6f 72 20 76 61 72 69 6f s.to.retrieve.Book.IDs.for.vario
42a60 75 73 20 63 61 73 65 20 7c 0a 7c 20 6d 65 6e 75 73 2e 70 79 20 7c 20 48 65 6c 70 65 72 20 66 75 us.case.|.|.menus.py.|.Helper.fu
42a80 6e 63 74 69 6f 6e 73 20 66 6f 72 20 62 75 69 6c 64 69 6e 67 20 6d 65 6e 75 73 20 66 6f 72 20 60 nctions.for.building.menus.for.`
42aa0 61 63 74 69 6f 6e 2e 70 79 60 20 7c 0a 7c 20 74 65 6d 70 6c 61 74 65 2e 70 79 20 7c 20 56 61 72 action.py`.|.|.template.py.|.Var
42ac0 69 6f 75 73 20 74 65 6d 70 6c 61 74 65 20 74 6f 6f 6c 73 20 7c 0a 7c 20 77 69 64 67 65 74 73 2e ious.template.tools.|.|.widgets.
42ae0 70 79 20 7c 20 41 64 64 69 74 69 6f 6e 61 6c 20 51 74 20 77 69 64 67 65 74 73 20 66 6f 72 20 75 py.|.Additional.Qt.widgets.for.u
42b00 73 65 20 69 6e 20 64 69 61 6c 6f 67 73 20 6f 72 20 67 72 69 64 20 74 61 62 6c 65 73 20 7c 0a 0a se.in.dialogs.or.grid.tables.|..
42b20 54 68 65 20 66 6f 6c 64 65 72 20 60 2f 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 60 20 63 6f 6e 74 The.folder.`/translations/`.cont
42b40 61 69 6e 73 20 74 68 65 20 62 61 73 65 20 50 4f 20 66 69 6c 65 20 74 6f 20 74 72 61 6e 73 6c 61 ains.the.base.PO.file.to.transla
42b60 74 65 20 74 68 65 20 76 61 72 69 6f 75 73 20 73 74 72 69 6e 67 20 6f 66 20 74 68 65 20 60 63 6f te.the.various.string.of.the.`co
42b80 6d 6d 6f 6e 5f 75 74 69 6c 73 60 2e 20 54 68 69 73 20 65 6e 74 72 79 73 20 6e 65 65 64 20 74 6f mmon_utils`..This.entrys.need.to
42ba0 20 62 65 20 6d 61 6e 75 61 6c 79 20 6d 65 72 67 65 64 20 74 6f 20 79 6f 75 72 20 72 65 61 6c 20 .be.manualy.merged.to.your.real.
42bc0 74 72 61 6e 73 6c 61 74 69 6f 6e 20 66 69 6c 65 73 2e 0a 0a 54 68 65 20 66 6f 6c 64 65 72 20 60 translation.files...The.folder.`
42be0 2f 2e 62 75 69 6c 64 2f 60 20 63 6f 6e 74 61 69 6e 73 20 74 72 69 63 6b 79 20 74 68 69 6e 67 20 /.build/`.contains.tricky.thing.
42c00 74 6f 20 68 65 6c 70 20 6f 6e 20 74 68 65 20 64 65 76 65 6c 6f 70 65 6d 65 6e 74 2e 20 43 65 72 to.help.on.the.developement..Cer
42c20 74 61 69 6e 6c 79 20 74 68 65 20 6d 6f 73 74 20 70 65 72 73 6f 6e 61 6c 20 70 61 72 74 20 6f 66 tainly.the.most.personal.part.of
42c40 20 74 68 69 73 20 72 65 70 6f 73 69 74 6f 72 79 2e 20 4e 65 65 64 20 61 20 74 75 74 6f 72 69 61 .this.repository..Need.a.tutoria
42c60 6c 2c 20 62 75 74 20 6e 6f 20 69 64 65 61 20 68 6f 77 20 74 6f 20 73 74 61 72 74 20 65 78 70 6c l,.but.no.idea.how.to.start.expl
42c80 61 69 6e 69 6e 67 20 74 68 69 73 20 65 78 6f 74 69 63 20 74 68 69 6e 67 2e 0a 0a 23 20 44 49 53 aining.this.exotic.thing...#.DIS
42ca0 43 4c 41 49 4d 45 52 0a 0a 54 68 69 73 20 6d 6f 64 75 6c 65 20 69 73 20 70 72 6f 76 69 64 65 64 CLAIMER..This.module.is.provided
42cc0 20 22 61 73 20 69 73 22 2c 20 77 69 74 68 6f 75 74 20 77 61 72 72 61 6e 74 79 20 6f 66 20 61 6e ."as.is",.without.warranty.of.an
42ce0 79 20 6b 69 6e 64 2e 0a 0a 4d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 61 72 65 20 6d 61 64 65 20 y.kind...Modifications.are.made.
42d00 61 74 20 6d 79 20 64 69 73 63 72 65 74 69 6f 6e 20 61 6e 64 20 6d 61 79 20 63 61 75 73 65 20 69 at.my.discretion.and.may.cause.i
42d20 6e 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 6f 75 74 20 6e 6f 74 69 63 65 2e 0a 0a ncompatibility.without.notice...
42d40 48 65 6c 70 2c 20 73 75 67 67 65 73 74 69 6f 6e 73 20 61 6e 64 20 66 65 65 64 62 61 63 6b 73 20 Help,.suggestions.and.feedbacks.
42d60 61 72 65 20 77 65 6c 63 6f 6d 65 2c 20 62 75 74 20 72 65 6d 65 6d 62 65 72 20 74 68 61 74 20 74 are.welcome,.but.remember.that.t
42d80 68 69 73 20 6d 6f 64 75 6c 65 20 72 65 70 6f 73 69 74 6f 72 79 20 77 61 73 20 66 69 72 73 74 20 his.module.repository.was.first.
42da0 63 72 65 61 74 65 64 20 66 6f 72 20 6d 79 20 70 65 72 73 6f 6e 61 6c 20 75 73 65 2c 20 73 6f 20 created.for.my.personal.use,.so.
42dc0 69 66 20 79 6f 75 20 64 65 63 69 64 65 20 74 6f 20 75 73 65 20 69 74 2c 20 77 65 6c 6c 20 54 68 if.you.decide.to.use.it,.well.Th
42de0 61 6e 6b 20 79 6f 75 20 76 65 72 79 20 6d 75 63 68 20 74 6f 20 75 73 65 20 6d 79 20 77 6f 72 6b ank.you.very.much.to.use.my.work
42e00 2c 20 62 75 74 20 62 65 20 77 61 72 6e 20 74 6f 20 64 6f 6e 27 74 20 62 65 20 73 75 72 70 72 69 ,.but.be.warn.to.don't.be.surpri
42e20 73 65 64 20 69 66 20 62 61 64 20 73 75 72 70 72 69 73 65 73 20 68 61 70 70 65 6e 2e 0a 50 4b 03 sed.if.bad.surprises.happen..PK.
42e40 04 14 00 00 00 00 00 7c 6e 3f 5c 64 96 e1 57 17 0d 00 00 17 0d 00 00 19 00 00 00 63 6f 6d 6d 6f .......|n?\d..W............commo
42e60 6e 5f 75 74 69 6c 73 2f 63 68 61 6e 67 65 6c 6f 67 2e 6d 64 23 20 43 68 61 6e 67 65 6c 6f 67 20 n_utils/changelog.md#.Changelog.
42e80 2d 20 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 0a 0a 23 23 20 32 30 32 36 2f 30 31 2f 33 31 0a 2d 20 -.common_utils..##.2026/01/31.-.
42ea0 61 64 64 20 70 61 67 65 73 20 74 6f 20 73 74 61 6e 64 61 72 64 20 63 6f 6c 75 6d 6e 73 0a 0a 23 add.pages.to.standard.columns..#
42ec0 23 20 32 30 32 36 2f 30 31 2f 32 32 0a 2d 20 72 65 66 61 63 74 6f 72 20 5a 69 70 52 65 73 6f 75 #.2026/01/22.-.refactor.ZipResou
42ee0 72 63 65 73 0a 20 20 2d 20 72 65 6d 6f 76 65 20 50 61 74 68 44 69 63 74 20 61 6e 64 20 50 6c 75 rces...-.remove.PathDict.and.Plu
42f00 67 69 6e 52 65 73 6f 75 72 63 65 73 0a 0a 23 23 20 32 30 32 36 2f 30 31 2f 32 31 0a 2d 20 75 73 ginResources..##.2026/01/21.-.us
42f20 65 20 50 79 74 68 6f 6e 20 63 61 63 68 65 20 66 6f 72 20 67 65 74 5f 69 63 6f 6e 28 29 0a 0a 23 e.Python.cache.for.get_icon()..#
42f40 23 20 32 30 32 35 2f 31 32 2f 33 30 0a 2d 20 61 64 64 20 67 65 74 5f 69 6e 74 65 67 65 72 28 29 #.2025/12/30.-.add.get_integer()
42f60 20 63 6f 6c 75 6d 6e 73 0a 0a 23 23 20 32 30 32 35 2f 31 30 2f 30 39 0a 2d 20 66 69 78 20 65 64 .columns..##.2025/10/09.-.fix.ed
42f80 67 65 20 63 61 73 65 20 66 6f 72 20 6d 61 6c 66 6f 72 6d 65 64 20 63 6f 6d 6d 65 6e 74 73 20 63 ge.case.for.malformed.comments.c
42fa0 75 73 74 6f 6d 20 63 6f 6c 75 6d 6e 73 0a 0a 23 23 20 32 30 32 35 2f 30 39 2f 32 39 0a 2d 20 73 ustom.columns..##.2025/09/29.-.s
42fc0 75 70 70 6f 72 74 20 4c 69 6e 75 78 0a 2d 20 66 69 78 20 66 61 74 61 6c 20 66 72 65 65 7a 65 20 upport.Linux.-.fix.fatal.freeze.
42fe0 77 69 74 68 20 50 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 20 28 6c 69 6e 75 78 29 0a 0a 23 23 20 with.ProgressDialog.(linux)..##.
43000 32 30 32 35 2f 30 37 2f 32 39 0a 2d 20 72 65 66 61 63 74 6f 72 69 6e 67 20 72 65 67 65 78 0a 0a 2025/07/29.-.refactoring.regex..
43020 23 23 20 32 30 32 35 2f 30 31 2f 32 35 0a 2d 20 61 64 64 20 72 65 66 72 65 73 68 5f 67 75 69 28 ##.2025/01/25.-.add.refresh_gui(
43040 29 3a 20 72 65 66 72 65 73 68 20 74 68 65 20 6d 65 74 61 64 61 74 61 20 64 69 73 70 6c 61 79 65 ):.refresh.the.metadata.displaye
43060 64 20 69 6e 74 6f 20 74 68 65 20 67 75 69 0a 2d 20 61 64 64 20 6c 69 62 72 61 72 79 5f 6e 61 6d d.into.the.gui.-.add.library_nam
43080 65 28 29 3a 20 72 65 74 75 72 6e 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 63 75 72 72 e():.return.the.name.of.the.curr
430a0 65 6e 74 20 6c 69 62 72 61 72 79 0a 0a 23 23 20 32 30 32 34 2f 31 32 2f 31 33 0a 2d 20 61 64 64 ent.library..##.2024/12/13.-.add
430c0 20 73 61 76 65 64 5f 63 6f 64 65 2e 70 79 2c 20 74 6f 20 73 74 6f 72 65 20 76 61 72 69 6f 75 73 .saved_code.py,.to.store.various
430e0 20 63 6f 64 65 20 6e 6f 74 20 63 61 6c 6c 61 62 6c 65 20 62 79 20 69 6d 70 6f 72 74 0a 20 20 2d .code.not.callable.by.import...-
43100 20 61 64 64 20 69 6e 69 74 69 61 6c 69 7a 65 5f 65 6d 62 65 64 64 65 64 5f 70 6c 75 67 69 6e 28 .add.initialize_embedded_plugin(
43120 29 3a 20 64 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 20 65 6d 62 65 64 64 65 64 20 70 6c 75 67 ):.do.initialize.a.embedded.plug
43140 69 6e 0a 0a 23 23 20 32 30 32 34 2f 31 32 2f 31 32 0a 2d 20 61 64 64 20 70 79 70 72 6f 6a 65 63 in..##.2024/12/12.-.add.pyprojec
43160 74 2e 74 6f 6d 6c 0a 2d 20 66 6f 72 6d 61 74 20 74 68 65 20 63 6f 64 65 20 77 69 74 68 20 72 75 t.toml.-.format.the.code.with.ru
43180 66 66 0a 2d 20 61 64 64 69 6e 67 20 69 6d 70 6f 72 74 2f 65 78 70 6f 72 74 20 66 75 6e 63 74 69 ff.-.adding.import/export.functi
431a0 6f 6e 73 0a 20 20 2d 20 70 69 63 6b 5f 61 72 63 68 69 76 65 5f 74 6f 5f 69 6d 70 6f 72 74 28 29 ons...-.pick_archive_to_import()
431c0 0a 20 20 2d 20 70 69 63 6b 5f 61 72 63 68 69 76 65 5f 74 6f 5f 65 78 70 6f 72 74 28 29 0a 20 20 ...-.pick_archive_to_export()...
431e0 2d 20 70 69 63 6b 5f 6a 73 6f 6e 5f 74 6f 5f 69 6d 70 6f 72 74 28 29 0a 20 20 2d 20 70 69 63 6b -.pick_json_to_import()...-.pick
43200 5f 6a 73 6f 6e 5f 74 6f 5f 65 78 70 6f 72 74 28 29 0a 0a 23 23 20 32 30 32 34 2f 30 32 2f 31 38 _json_to_export()..##.2024/02/18
43220 0a 2d 20 66 69 78 20 75 6e 74 72 61 6e 73 6c 61 74 65 64 20 73 74 72 69 6e 67 0a 0a 23 23 20 32 .-.fix.untranslated.string..##.2
43240 30 32 34 2f 30 31 2f 32 37 0a 2d 20 72 65 74 72 69 65 76 65 20 74 61 67 20 63 72 65 61 74 65 64 024/01/27.-.retrieve.tag.created
43260 20 64 75 72 69 6e 67 20 74 68 65 20 70 6c 75 67 69 6e 20 72 65 6c 65 61 73 65 0a 0a 23 23 20 32 .during.the.plugin.release..##.2
43280 30 32 34 2f 30 31 2f 32 37 0a 2d 20 66 69 78 20 77 72 6f 6e 67 20 74 65 78 74 20 64 69 73 70 6c 024/01/27.-.fix.wrong.text.displ
432a0 61 79 20 77 68 65 6e 20 63 75 73 74 6f 6d 69 7a 69 6e 67 20 6b 65 79 62 6f 61 72 64 20 73 68 6f ay.when.customizing.keyboard.sho
432c0 72 74 63 75 74 0a 0a 23 23 20 32 30 32 33 2f 31 31 2f 32 33 0a 2d 20 61 75 74 6f 6d 61 74 65 64 rtcut..##.2023/11/23.-.automated
432e0 20 66 69 78 65 73 20 62 79 20 70 79 75 70 67 72 61 64 65 20 74 6f 20 70 79 20 33 2e 38 0a 0a 23 .fixes.by.pyupgrade.to.py.3.8..#
43300 23 20 32 30 32 33 2f 31 31 2f 31 37 0a 2d 20 66 69 78 20 75 6e 61 75 74 68 6f 72 69 7a 65 64 20 #.2023/11/17.-.fix.unauthorized.
43320 65 72 72 6f 72 20 77 69 74 68 20 47 69 74 48 75 62 0a 0a 23 23 20 32 30 32 33 2f 31 31 2f 30 38 error.with.GitHub..##.2023/11/08
43340 0a 2d 20 61 64 64 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 71 74 5f 66 72 6f 6d 5f 64 74 28 .-.add.compatibility.qt_from_dt(
43360 29 0a 0a 23 23 20 32 30 32 33 2f 31 30 2f 31 33 0a 2d 20 61 64 64 20 55 49 20 66 69 6c 65 73 20 )..##.2023/10/13.-.add.UI.files.
43380 74 6f 20 62 75 69 6c 64 20 73 63 72 69 70 74 0a 0a 23 23 20 32 30 32 33 2f 31 30 2f 31 32 0a 2d to.build.script..##.2023/10/12.-
433a0 20 66 69 78 20 64 6f 75 62 6c 6f 6e 20 66 6f 72 20 53 65 6c 65 63 74 4e 6f 74 65 73 57 69 64 67 .fix.doublon.for.SelectNotesWidg
433c0 65 74 0a 0a 23 23 20 32 30 32 33 2f 31 30 2f 31 30 0a 2d 20 66 69 78 20 50 52 45 46 53 5f 6a 73 et..##.2023/10/10.-.fix.PREFS_js
433e0 6f 6e 20 67 65 74 20 64 69 63 74 20 65 6e 74 72 79 0a 0a 23 23 20 32 30 32 33 2f 31 30 2f 30 33 on.get.dict.entry..##.2023/10/03
43400 0a 2d 20 41 64 64 20 72 65 74 75 72 6e 5f 6c 69 6e 65 5f 6c 6f 6e 67 5f 74 65 78 74 28 29 2e 20 .-.Add.return_line_long_text()..
43420 53 70 6c 69 74 20 61 20 6c 6f 6e 67 20 74 65 78 74 20 74 6f 20 76 61 72 69 6f 75 73 20 6c 69 6e Split.a.long.text.to.various.lin
43440 65 73 20 77 69 74 68 20 61 20 6d 61 78 20 6c 65 6e 67 68 74 20 66 6f 72 20 65 61 63 68 20 6f 6e es.with.a.max.lenght.for.each.on
43460 65 0a 0a 23 23 20 32 30 32 33 2f 31 30 2f 30 32 0a 2d 20 41 64 64 20 74 69 6d 65 20 74 6f 20 64 e..##.2023/10/02.-.Add.time.to.d
43480 65 62 75 67 5f 70 72 69 6e 74 0a 2d 20 66 69 78 20 50 52 45 46 53 5f 6a 73 6f 6e 20 67 65 74 20 ebug_print.-.fix.PREFS_json.get.
434a0 64 69 63 74 20 65 6e 74 72 79 0a 2d 20 41 64 64 20 74 65 6d 70 6c 61 74 65 2e 70 79 0a 2d 20 52 dict.entry.-.Add.template.py.-.R
434c0 65 77 6f 72 6b 20 4b 65 79 56 61 6c 75 65 20 61 6e 64 20 43 75 73 74 6f 6d 43 6f 6c 75 6d 6e 20 ework.KeyValue.and.CustomColumn.
434e0 43 6f 6d 62 6f 42 6f 78 0a 0a 23 23 20 32 30 32 33 2f 31 30 2f 30 31 0a 2d 20 52 65 77 6f 72 6b ComboBox..##.2023/10/01.-.Rework
43500 20 67 65 74 5f 69 63 6f 6e 28 29 20 74 6f 20 73 75 70 70 6f 72 74 20 63 61 6c 69 62 72 65 20 74 .get_icon().to.support.calibre.t
43520 68 65 6d 65 64 20 69 63 6f 6e 73 0a 0a 23 23 20 32 30 32 33 2f 30 39 2f 33 30 0a 2d 20 44 72 6f hemed.icons..##.2023/09/30.-.Dro
43540 70 20 50 79 74 68 6f 6e 20 32 20 2f 20 43 61 6c 69 62 72 65 20 34 20 63 6f 6d 70 61 74 69 62 69 p.Python.2./.Calibre.4.compatibi
43560 6c 69 74 79 2c 20 6f 6e 6c 79 20 43 61 6c 69 62 72 65 20 35 20 61 6e 64 20 61 62 6f 76 65 0a 0a lity,.only.Calibre.5.and.above..
43580 23 23 20 32 30 32 33 2f 30 39 2f 32 39 0a 2d 20 41 64 64 20 53 65 6c 65 63 74 46 69 65 6c 64 56 ##.2023/09/29.-.Add.SelectFieldV
435a0 61 6c 75 65 73 57 69 64 67 65 74 20 61 6e 64 20 53 65 6c 65 63 74 4e 6f 74 65 73 57 69 64 67 65 aluesWidget.and.SelectNotesWidge
435c0 74 0a 0a 23 23 20 32 30 32 33 2f 30 39 2f 32 38 0a 2d 20 41 64 64 20 50 4c 55 47 49 4e 5f 43 4c t..##.2023/09/28.-.Add.PLUGIN_CL
435e0 41 53 53 45 0a 2d 20 52 65 6d 6f 76 65 20 6c 6f 61 64 5f 70 6c 75 67 69 6e 5f 72 65 73 6f 75 72 ASSE.-.Remove.load_plugin_resour
43600 63 65 73 28 29 2c 20 41 64 64 20 5a 69 70 52 65 73 6f 75 72 63 65 73 20 61 6e 64 20 50 6c 75 67 ces(),.Add.ZipResources.and.Plug
43620 69 6e 52 65 73 6f 75 72 63 65 73 0a 20 20 20 20 2d 20 50 4c 55 47 49 4e 5f 52 45 53 4f 55 52 43 inResources.....-.PLUGIN_RESOURC
43640 45 53 20 77 69 6c 6c 20 6e 6f 77 20 61 75 74 6f 20 6c 6f 61 64 20 61 6e 79 20 72 65 71 75 65 73 ES.will.now.auto.load.any.reques
43660 74 65 64 20 69 74 65 6d 73 0a 2d 20 44 72 6f 70 20 43 61 6c 69 62 72 65 20 32 20 61 6e 64 20 33 ted.items.-.Drop.Calibre.2.and.3
43680 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2c 20 6f 6e 6c 79 20 34 20 61 6e 64 20 61 62 6f 76 65 .compatibility,.only.4.and.above
436a0 0a 20 20 20 20 2d 20 21 21 20 52 65 6d 6f 76 65 20 53 69 7a 65 50 65 72 73 69 73 74 65 64 44 69 .....-.!!.Remove.SizePersistedDi
436c0 61 6c 6f 67 20 21 21 0a 2d 20 41 64 64 20 49 6d 61 67 65 44 69 61 6c 6f 67 2c 20 72 65 77 6f 72 alog.!!.-.Add.ImageDialog,.rewor
436e0 6b 20 49 6d 61 67 65 43 6f 6d 62 6f 42 6f 78 0a 0a 23 23 20 32 30 32 33 2f 30 39 2f 32 36 0a 2d k.ImageComboBox..##.2023/09/26.-
43700 20 72 65 77 6f 72 6b 20 63 75 73 74 6f 6d 5f 65 78 63 65 70 74 69 6f 6e 5f 64 69 61 6c 6f 67 28 .rework.custom_exception_dialog(
43720 29 0a 0a 23 23 20 32 30 32 33 2f 30 39 2f 32 34 0a 2d 20 6c 69 74 74 6c 65 20 69 6d 70 72 6f 76 )..##.2023/09/24.-.little.improv
43740 65 6d 65 6e 74 20 6f 66 20 64 65 62 75 67 5f 70 72 69 6e 74 0a 2d 20 41 64 64 20 4c 69 62 72 61 ement.of.debug_print.-.Add.Libra
43760 72 79 50 72 65 66 73 56 69 65 77 65 72 44 69 61 6c 6f 67 42 75 74 74 6f 6e 2c 20 69 6d 70 72 6f ryPrefsViewerDialogButton,.impro
43780 76 65 20 4c 69 62 72 61 72 79 50 72 65 66 73 56 69 65 77 65 72 44 69 61 6c 6f 67 20 28 77 69 74 ve.LibraryPrefsViewerDialog.(wit
437a0 68 20 72 65 73 75 6c 74 20 63 6f 64 65 29 0a 0a 23 23 20 32 30 32 33 2f 30 39 2f 32 33 0a 2d 20 h.result.code)..##.2023/09/23.-.
437c0 41 64 64 20 50 4c 55 47 49 4e 5f 49 4e 53 54 41 4e 43 45 0a 2d 20 41 64 64 20 4b 65 79 62 6f 61 Add.PLUGIN_INSTANCE.-.Add.Keyboa
437e0 72 64 43 6f 6e 66 69 67 44 69 61 6c 6f 67 42 75 74 74 6f 6e 0a 0a 23 23 20 32 30 32 33 2f 30 39 rdConfigDialogButton..##.2023/09
43800 2f 31 33 0a 2d 20 44 6f 6e 27 74 20 75 70 64 61 74 65 20 74 68 65 20 66 69 6c 65 20 6f 66 20 50 /13.-.Don't.update.the.file.of.P
43820 52 45 46 53 5f 6a 73 6f 6e 20 61 74 20 74 68 65 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 0a REFS_json.at.the.initialization.
43840 0a 23 23 20 32 30 32 33 2f 30 39 2f 30 38 0a 2d 20 44 6f 6e 27 74 20 75 70 64 61 74 65 20 63 6f .##.2023/09/08.-.Don't.update.co
43860 6d 6d 6f 6e 5f 75 74 69 6c 73 20 77 68 65 6e 20 72 65 6c 65 61 73 65 0a 0a 23 23 20 32 30 32 33 mmon_utils.when.release..##.2023
43880 2f 30 38 2f 32 37 0a 2d 20 41 64 64 20 73 75 62 20 4c 49 43 45 4e 53 45 20 61 6e 64 20 43 52 45 /08/27.-.Add.sub.LICENSE.and.CRE
438a0 44 49 54 53 20 74 6f 20 50 6c 75 67 69 6e 5a 69 70 0a 0a 23 23 20 32 30 32 33 2f 30 38 2f 30 38 DITS.to.PluginZip..##.2023/08/08
438c0 0a 2d 20 41 64 64 20 50 72 6f 67 72 65 73 73 44 69 61 6c 6f 67 0a 0a 23 23 20 32 30 32 33 2f 30 .-.Add.ProgressDialog..##.2023/0
438e0 38 2f 30 37 0a 2d 20 41 64 64 20 62 75 69 6c 64 5f 4d 6f 62 69 6c 65 52 65 61 64 5f 70 6f 73 74 8/07.-.Add.build_MobileRead_post
43900 28 29 20 74 6f 20 72 65 6c 65 61 73 65 2e 70 79 0a 2d 20 41 64 64 20 74 72 75 6e 63 61 74 65 5f ().to.release.py.-.Add.truncate_
43920 74 69 74 6c 65 28 29 0a 0a 23 23 20 32 30 32 33 2f 30 38 2f 30 36 0a 2d 20 45 64 69 74 20 43 68 title()..##.2023/08/06.-.Edit.Ch
43940 61 6e 67 65 6c 6f 67 20 74 6f 20 5b 43 6f 6d 6d 6f 6e 20 43 68 61 6e 67 65 6c 6f 67 5d 28 68 74 angelog.to.[Common.Changelog](ht
43960 74 70 73 3a 2f 2f 63 6f 6d 6d 6f 6e 2d 63 68 61 6e 67 65 6c 6f 67 2e 6f 72 67 29 0a 2d 20 55 70 tps://common-changelog.org).-.Up
43980 64 61 74 65 20 72 65 6c 65 61 73 65 2e 70 79 20 74 6f 20 74 68 65 20 6e 65 77 20 43 68 61 6e 67 date.release.py.to.the.new.Chang
439a0 65 6c 6f 67 20 66 6f 72 6d 61 74 0a 0a 23 23 20 32 30 32 33 2f 30 34 2f 32 39 0a 2d 20 75 70 64 elog.format..##.2023/04/29.-.upd
439c0 61 74 65 20 62 75 69 6c 64 0a 0a 23 23 20 32 30 32 33 2f 30 34 2f 32 38 0a 2d 20 61 64 64 20 27 ate.build..##.2023/04/28.-.add.'
439e0 69 64 27 2c 20 27 70 61 74 68 27 20 74 6f 20 70 6f 73 73 69 62 6c 65 5f 63 6f 6c 75 6d 6e 73 20 id',.'path'.to.possible_columns.
43a00 3b 20 73 65 6c 66 20 74 65 73 74 2f 64 65 62 75 67 0a 2d 20 66 69 78 20 60 70 6f 73 73 69 62 6c ;.self.test/debug.-.fix.`possibl
43a20 65 5f 66 69 65 6c 64 73 28 29 60 0a 0a 23 23 20 32 30 32 33 2f 30 34 2f 31 32 0a 2d 20 73 74 61 e_fields()`..##.2023/04/12.-.sta
43a40 6e 64 61 6c 6f 6e 65 20 63 6f 6c 75 6d 6e 73 2e 70 79 0a 0a 23 23 20 32 30 32 33 2f 30 34 2f 31 ndalone.columns.py..##.2023/04/1
43a60 30 0a 2d 20 60 43 6f 6c 75 6d 6e 54 79 70 65 73 2e 63 6f 6d 6d 65 6e 74 73 60 20 64 6f 6e 27 74 0.-.`ColumnTypes.comments`.don't
43a80 20 65 78 69 73 74 0a 0a 23 23 20 32 30 32 32 2f 31 30 2f 32 39 0a 2d 20 66 69 78 20 60 65 72 72 .exist..##.2022/10/29.-.fix.`err
43aa0 6f 72 5f 64 69 61 6c 6f 67 60 0a 0a 23 23 20 32 30 32 32 2f 31 30 2f 32 30 0a 2d 20 61 64 64 20 or_dialog`..##.2022/10/20.-.add.
43ac0 72 65 6c 65 61 73 65 20 73 63 72 69 70 74 73 0a 2d 20 69 6d 70 72 6f 76 65 20 64 69 61 6c 6f 67 release.scripts.-.improve.dialog
43ae0 2e 70 79 0a 0a 23 23 20 32 30 32 32 2f 31 30 2f 32 30 0a 2d 20 49 74 27 73 20 57 6f 72 6b 21 0a .py..##.2022/10/20.-.It's.Work!.
43b00 0a 23 23 20 32 30 32 32 2f 31 30 2f 31 39 0a 2d 20 69 6e 69 74 28 29 0a 2d 20 53 74 61 72 74 20 .##.2022/10/19.-.init().-.Start.
43b20 62 75 69 6c 64 20 74 68 69 73 20 74 68 69 6e 67 20 61 6e 64 20 6d 69 67 72 61 74 65 20 74 68 65 build.this.thing.and.migrate.the
43b40 20 65 6c 65 6d 65 6e 74 73 20 69 6e 20 74 68 65 20 63 6f 6e 76 65 6e 69 65 6e 74 20 70 6c 61 63 .elements.in.the.convenient.plac
43b60 65 2e 0a 2d 20 44 6f 6e 27 74 20 75 73 65 20 69 74 2e 20 57 6f 6e 27 74 20 77 6f 72 6b 20 66 6f e..-.Don't.use.it..Won't.work.fo
43b80 72 20 61 20 77 68 69 6c 65 2e 0a 50 4b 03 04 14 00 00 00 00 00 f2 3b 3d 57 00 3d 67 97 4d 89 00 r.a.while..PK.........;=W.=g.M..
43ba0 00 4d 89 00 00 07 00 00 00 4c 49 43 45 4e 53 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .M.......LICENSE................
43bc0 20 20 20 20 47 4e 55 20 47 45 4e 45 52 41 4c 20 50 55 42 4c 49 43 20 4c 49 43 45 4e 53 45 0a 20 ....GNU.GENERAL.PUBLIC.LICENSE..
43be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 33 2c ......................Version.3,
43c00 20 32 39 20 4a 75 6e 65 20 32 30 30 37 0a 0a 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 .29.June.2007...Copyright.(C).20
43c20 30 37 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 07.Free.Software.Foundation,.Inc
43c40 2e 20 3c 68 74 74 70 73 3a 2f 2f 66 73 66 2e 6f 72 67 2f 3e 0a 20 45 76 65 72 79 6f 6e 65 20 69 ..<https://fsf.org/>..Everyone.i
43c60 73 20 70 65 72 6d 69 74 74 65 64 20 74 6f 20 63 6f 70 79 20 61 6e 64 20 64 69 73 74 72 69 62 75 s.permitted.to.copy.and.distribu
43c80 74 65 20 76 65 72 62 61 74 69 6d 20 63 6f 70 69 65 73 0a 20 6f 66 20 74 68 69 73 20 6c 69 63 65 te.verbatim.copies..of.this.lice
43ca0 6e 73 65 20 64 6f 63 75 6d 65 6e 74 2c 20 62 75 74 20 63 68 61 6e 67 69 6e 67 20 69 74 20 69 73 nse.document,.but.changing.it.is
43cc0 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .not.allowed....................
43ce0 20 20 20 20 20 20 20 20 20 20 20 50 72 65 61 6d 62 6c 65 0a 0a 20 20 54 68 65 20 47 4e 55 20 47 ...........Preamble....The.GNU.G
43d00 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 69 73 20 61 20 66 72 65 65 2c eneral.Public.License.is.a.free,
43d20 20 63 6f 70 79 6c 65 66 74 20 6c 69 63 65 6e 73 65 20 66 6f 72 0a 73 6f 66 74 77 61 72 65 20 61 .copyleft.license.for.software.a
43d40 6e 64 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f 66 20 77 6f 72 6b 73 2e 0a 0a 20 20 54 68 65 20 nd.other.kinds.of.works.....The.
43d60 6c 69 63 65 6e 73 65 73 20 66 6f 72 20 6d 6f 73 74 20 73 6f 66 74 77 61 72 65 20 61 6e 64 20 6f licenses.for.most.software.and.o
43d80 74 68 65 72 20 70 72 61 63 74 69 63 61 6c 20 77 6f 72 6b 73 20 61 72 65 20 64 65 73 69 67 6e 65 ther.practical.works.are.designe
43da0 64 0a 74 6f 20 74 61 6b 65 20 61 77 61 79 20 79 6f 75 72 20 66 72 65 65 64 6f 6d 20 74 6f 20 73 d.to.take.away.your.freedom.to.s
43dc0 68 61 72 65 20 61 6e 64 20 63 68 61 6e 67 65 20 74 68 65 20 77 6f 72 6b 73 2e 20 20 42 79 20 63 hare.and.change.the.works...By.c
43de0 6f 6e 74 72 61 73 74 2c 0a 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 ontrast,.the.GNU.General.Public.
43e00 4c 69 63 65 6e 73 65 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 67 75 61 72 61 6e 74 65 65 License.is.intended.to.guarantee
43e20 20 79 6f 75 72 20 66 72 65 65 64 6f 6d 20 74 6f 0a 73 68 61 72 65 20 61 6e 64 20 63 68 61 6e 67 .your.freedom.to.share.and.chang
43e40 65 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 61 20 70 72 6f 67 72 61 6d 2d 2d 74 6f 20 e.all.versions.of.a.program--to.
43e60 6d 61 6b 65 20 73 75 72 65 20 69 74 20 72 65 6d 61 69 6e 73 20 66 72 65 65 0a 73 6f 66 74 77 61 make.sure.it.remains.free.softwa
43e80 72 65 20 66 6f 72 20 61 6c 6c 20 69 74 73 20 75 73 65 72 73 2e 20 20 57 65 2c 20 74 68 65 20 46 re.for.all.its.users...We,.the.F
43ea0 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 75 73 65 20 74 68 65 ree.Software.Foundation,.use.the
43ec0 0a 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 .GNU.General.Public.License.for.
43ee0 6d 6f 73 74 20 6f 66 20 6f 75 72 20 73 6f 66 74 77 61 72 65 3b 20 69 74 20 61 70 70 6c 69 65 73 most.of.our.software;.it.applies
43f00 20 61 6c 73 6f 20 74 6f 0a 61 6e 79 20 6f 74 68 65 72 20 77 6f 72 6b 20 72 65 6c 65 61 73 65 64 .also.to.any.other.work.released
43f20 20 74 68 69 73 20 77 61 79 20 62 79 20 69 74 73 20 61 75 74 68 6f 72 73 2e 20 20 59 6f 75 20 63 .this.way.by.its.authors...You.c
43f40 61 6e 20 61 70 70 6c 79 20 69 74 20 74 6f 0a 79 6f 75 72 20 70 72 6f 67 72 61 6d 73 2c 20 74 6f an.apply.it.to.your.programs,.to
43f60 6f 2e 0a 0a 20 20 57 68 65 6e 20 77 65 20 73 70 65 61 6b 20 6f 66 20 66 72 65 65 20 73 6f 66 74 o.....When.we.speak.of.free.soft
43f80 77 61 72 65 2c 20 77 65 20 61 72 65 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 66 72 65 65 64 6f ware,.we.are.referring.to.freedo
43fa0 6d 2c 20 6e 6f 74 0a 70 72 69 63 65 2e 20 20 4f 75 72 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 m,.not.price...Our.General.Publi
43fc0 63 20 4c 69 63 65 6e 73 65 73 20 61 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f 20 6d 61 6b 65 20 c.Licenses.are.designed.to.make.
43fe0 73 75 72 65 20 74 68 61 74 20 79 6f 75 0a 68 61 76 65 20 74 68 65 20 66 72 65 65 64 6f 6d 20 74 sure.that.you.have.the.freedom.t
44000 6f 20 64 69 73 74 72 69 62 75 74 65 20 63 6f 70 69 65 73 20 6f 66 20 66 72 65 65 20 73 6f 66 74 o.distribute.copies.of.free.soft
44020 77 61 72 65 20 28 61 6e 64 20 63 68 61 72 67 65 20 66 6f 72 0a 74 68 65 6d 20 69 66 20 79 6f 75 ware.(and.charge.for.them.if.you
44040 20 77 69 73 68 29 2c 20 74 68 61 74 20 79 6f 75 20 72 65 63 65 69 76 65 20 73 6f 75 72 63 65 20 .wish),.that.you.receive.source.
44060 63 6f 64 65 20 6f 72 20 63 61 6e 20 67 65 74 20 69 74 20 69 66 20 79 6f 75 0a 77 61 6e 74 20 69 code.or.can.get.it.if.you.want.i
44080 74 2c 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 63 68 61 6e 67 65 20 74 68 65 20 73 6f 66 74 77 t,.that.you.can.change.the.softw
440a0 61 72 65 20 6f 72 20 75 73 65 20 70 69 65 63 65 73 20 6f 66 20 69 74 20 69 6e 20 6e 65 77 0a 66 are.or.use.pieces.of.it.in.new.f
440c0 72 65 65 20 70 72 6f 67 72 61 6d 73 2c 20 61 6e 64 20 74 68 61 74 20 79 6f 75 20 6b 6e 6f 77 20 ree.programs,.and.that.you.know.
440e0 79 6f 75 20 63 61 6e 20 64 6f 20 74 68 65 73 65 20 74 68 69 6e 67 73 2e 0a 0a 20 20 54 6f 20 70 you.can.do.these.things.....To.p
44100 72 6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68 74 73 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 70 rotect.your.rights,.we.need.to.p
44120 72 65 76 65 6e 74 20 6f 74 68 65 72 73 20 66 72 6f 6d 20 64 65 6e 79 69 6e 67 20 79 6f 75 0a 74 revent.others.from.denying.you.t
44140 68 65 73 65 20 72 69 67 68 74 73 20 6f 72 20 61 73 6b 69 6e 67 20 79 6f 75 20 74 6f 20 73 75 72 hese.rights.or.asking.you.to.sur
44160 72 65 6e 64 65 72 20 74 68 65 20 72 69 67 68 74 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20 79 render.the.rights...Therefore,.y
44180 6f 75 20 68 61 76 65 0a 63 65 72 74 61 69 6e 20 72 65 73 70 6f 6e 73 69 62 69 6c 69 74 69 65 73 ou.have.certain.responsibilities
441a0 20 69 66 20 79 6f 75 20 64 69 73 74 72 69 62 75 74 65 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 .if.you.distribute.copies.of.the
441c0 20 73 6f 66 74 77 61 72 65 2c 20 6f 72 20 69 66 0a 79 6f 75 20 6d 6f 64 69 66 79 20 69 74 3a 20 .software,.or.if.you.modify.it:.
441e0 72 65 73 70 6f 6e 73 69 62 69 6c 69 74 69 65 73 20 74 6f 20 72 65 73 70 65 63 74 20 74 68 65 20 responsibilities.to.respect.the.
44200 66 72 65 65 64 6f 6d 20 6f 66 20 6f 74 68 65 72 73 2e 0a 0a 20 20 46 6f 72 20 65 78 61 6d 70 6c freedom.of.others.....For.exampl
44220 65 2c 20 69 66 20 79 6f 75 20 64 69 73 74 72 69 62 75 74 65 20 63 6f 70 69 65 73 20 6f 66 20 73 e,.if.you.distribute.copies.of.s
44240 75 63 68 20 61 20 70 72 6f 67 72 61 6d 2c 20 77 68 65 74 68 65 72 0a 67 72 61 74 69 73 20 6f 72 uch.a.program,.whether.gratis.or
44260 20 66 6f 72 20 61 20 66 65 65 2c 20 79 6f 75 20 6d 75 73 74 20 70 61 73 73 20 6f 6e 20 74 6f 20 .for.a.fee,.you.must.pass.on.to.
44280 74 68 65 20 72 65 63 69 70 69 65 6e 74 73 20 74 68 65 20 73 61 6d 65 0a 66 72 65 65 64 6f 6d 73 the.recipients.the.same.freedoms
442a0 20 74 68 61 74 20 79 6f 75 20 72 65 63 65 69 76 65 64 2e 20 20 59 6f 75 20 6d 75 73 74 20 6d 61 .that.you.received...You.must.ma
442c0 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 79 2c 20 74 6f 6f 2c 20 72 65 63 65 69 76 65 0a ke.sure.that.they,.too,.receive.
442e0 6f 72 20 63 61 6e 20 67 65 74 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 41 6e 64 or.can.get.the.source.code...And
44300 20 79 6f 75 20 6d 75 73 74 20 73 68 6f 77 20 74 68 65 6d 20 74 68 65 73 65 20 74 65 72 6d 73 20 .you.must.show.them.these.terms.
44320 73 6f 20 74 68 65 79 0a 6b 6e 6f 77 20 74 68 65 69 72 20 72 69 67 68 74 73 2e 0a 0a 20 20 44 65 so.they.know.their.rights.....De
44340 76 65 6c 6f 70 65 72 73 20 74 68 61 74 20 75 73 65 20 74 68 65 20 47 4e 55 20 47 50 4c 20 70 72 velopers.that.use.the.GNU.GPL.pr
44360 6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68 74 73 20 77 69 74 68 20 74 77 6f 20 73 74 65 70 73 otect.your.rights.with.two.steps
44380 3a 0a 28 31 29 20 61 73 73 65 72 74 20 63 6f 70 79 72 69 67 68 74 20 6f 6e 20 74 68 65 20 73 6f :.(1).assert.copyright.on.the.so
443a0 66 74 77 61 72 65 2c 20 61 6e 64 20 28 32 29 20 6f 66 66 65 72 20 79 6f 75 20 74 68 69 73 20 4c ftware,.and.(2).offer.you.this.L
443c0 69 63 65 6e 73 65 0a 67 69 76 69 6e 67 20 79 6f 75 20 6c 65 67 61 6c 20 70 65 72 6d 69 73 73 69 icense.giving.you.legal.permissi
443e0 6f 6e 20 74 6f 20 63 6f 70 79 2c 20 64 69 73 74 72 69 62 75 74 65 20 61 6e 64 2f 6f 72 20 6d 6f on.to.copy,.distribute.and/or.mo
44400 64 69 66 79 20 69 74 2e 0a 0a 20 20 46 6f 72 20 74 68 65 20 64 65 76 65 6c 6f 70 65 72 73 27 20 dify.it.....For.the.developers'.
44420 61 6e 64 20 61 75 74 68 6f 72 73 27 20 70 72 6f 74 65 63 74 69 6f 6e 2c 20 74 68 65 20 47 50 4c and.authors'.protection,.the.GPL
44440 20 63 6c 65 61 72 6c 79 20 65 78 70 6c 61 69 6e 73 0a 74 68 61 74 20 74 68 65 72 65 20 69 73 20 .clearly.explains.that.there.is.
44460 6e 6f 20 77 61 72 72 61 6e 74 79 20 66 6f 72 20 74 68 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 no.warranty.for.this.free.softwa
44480 72 65 2e 20 20 46 6f 72 20 62 6f 74 68 20 75 73 65 72 73 27 20 61 6e 64 0a 61 75 74 68 6f 72 73 re...For.both.users'.and.authors
444a0 27 20 73 61 6b 65 2c 20 74 68 65 20 47 50 4c 20 72 65 71 75 69 72 65 73 20 74 68 61 74 20 6d 6f '.sake,.the.GPL.requires.that.mo
444c0 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 62 65 20 6d 61 72 6b 65 64 20 61 73 0a 63 68 61 dified.versions.be.marked.as.cha
444e0 6e 67 65 64 2c 20 73 6f 20 74 68 61 74 20 74 68 65 69 72 20 70 72 6f 62 6c 65 6d 73 20 77 69 6c nged,.so.that.their.problems.wil
44500 6c 20 6e 6f 74 20 62 65 20 61 74 74 72 69 62 75 74 65 64 20 65 72 72 6f 6e 65 6f 75 73 6c 79 20 l.not.be.attributed.erroneously.
44520 74 6f 0a 61 75 74 68 6f 72 73 20 6f 66 20 70 72 65 76 69 6f 75 73 20 76 65 72 73 69 6f 6e 73 2e to.authors.of.previous.versions.
44540 0a 0a 20 20 53 6f 6d 65 20 64 65 76 69 63 65 73 20 61 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f ....Some.devices.are.designed.to
44560 20 64 65 6e 79 20 75 73 65 72 73 20 61 63 63 65 73 73 20 74 6f 20 69 6e 73 74 61 6c 6c 20 6f 72 .deny.users.access.to.install.or
44580 20 72 75 6e 0a 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 73 6f .run.modified.versions.of.the.so
445a0 66 74 77 61 72 65 20 69 6e 73 69 64 65 20 74 68 65 6d 2c 20 61 6c 74 68 6f 75 67 68 20 74 68 65 ftware.inside.them,.although.the
445c0 20 6d 61 6e 75 66 61 63 74 75 72 65 72 0a 63 61 6e 20 64 6f 20 73 6f 2e 20 20 54 68 69 73 20 69 .manufacturer.can.do.so...This.i
445e0 73 20 66 75 6e 64 61 6d 65 6e 74 61 6c 6c 79 20 69 6e 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 s.fundamentally.incompatible.wit
44600 68 20 74 68 65 20 61 69 6d 20 6f 66 0a 70 72 6f 74 65 63 74 69 6e 67 20 75 73 65 72 73 27 20 66 h.the.aim.of.protecting.users'.f
44620 72 65 65 64 6f 6d 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 73 6f 66 74 77 61 72 65 2e 20 20 reedom.to.change.the.software...
44640 54 68 65 20 73 79 73 74 65 6d 61 74 69 63 0a 70 61 74 74 65 72 6e 20 6f 66 20 73 75 63 68 20 61 The.systematic.pattern.of.such.a
44660 62 75 73 65 20 6f 63 63 75 72 73 20 69 6e 20 74 68 65 20 61 72 65 61 20 6f 66 20 70 72 6f 64 75 buse.occurs.in.the.area.of.produ
44680 63 74 73 20 66 6f 72 20 69 6e 64 69 76 69 64 75 61 6c 73 20 74 6f 0a 75 73 65 2c 20 77 68 69 63 cts.for.individuals.to.use,.whic
446a0 68 20 69 73 20 70 72 65 63 69 73 65 6c 79 20 77 68 65 72 65 20 69 74 20 69 73 20 6d 6f 73 74 20 h.is.precisely.where.it.is.most.
446c0 75 6e 61 63 63 65 70 74 61 62 6c 65 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20 77 65 0a 68 61 76 unacceptable...Therefore,.we.hav
446e0 65 20 64 65 73 69 67 6e 65 64 20 74 68 69 73 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 47 e.designed.this.version.of.the.G
44700 50 4c 20 74 6f 20 70 72 6f 68 69 62 69 74 20 74 68 65 20 70 72 61 63 74 69 63 65 20 66 6f 72 20 PL.to.prohibit.the.practice.for.
44720 74 68 6f 73 65 0a 70 72 6f 64 75 63 74 73 2e 20 20 49 66 20 73 75 63 68 20 70 72 6f 62 6c 65 6d those.products...If.such.problem
44740 73 20 61 72 69 73 65 20 73 75 62 73 74 61 6e 74 69 61 6c 6c 79 20 69 6e 20 6f 74 68 65 72 20 64 s.arise.substantially.in.other.d
44760 6f 6d 61 69 6e 73 2c 20 77 65 0a 73 74 61 6e 64 20 72 65 61 64 79 20 74 6f 20 65 78 74 65 6e 64 omains,.we.stand.ready.to.extend
44780 20 74 68 69 73 20 70 72 6f 76 69 73 69 6f 6e 20 74 6f 20 74 68 6f 73 65 20 64 6f 6d 61 69 6e 73 .this.provision.to.those.domains
447a0 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 0a 6f 66 20 74 68 65 20 47 50 4c 2c 20 .in.future.versions.of.the.GPL,.
447c0 61 73 20 6e 65 65 64 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 74 68 65 20 66 72 65 65 64 6f 6d as.needed.to.protect.the.freedom
447e0 20 6f 66 20 75 73 65 72 73 2e 0a 0a 20 20 46 69 6e 61 6c 6c 79 2c 20 65 76 65 72 79 20 70 72 6f .of.users.....Finally,.every.pro
44800 67 72 61 6d 20 69 73 20 74 68 72 65 61 74 65 6e 65 64 20 63 6f 6e 73 74 61 6e 74 6c 79 20 62 79 gram.is.threatened.constantly.by
44820 20 73 6f 66 74 77 61 72 65 20 70 61 74 65 6e 74 73 2e 0a 53 74 61 74 65 73 20 73 68 6f 75 6c 64 .software.patents..States.should
44840 20 6e 6f 74 20 61 6c 6c 6f 77 20 70 61 74 65 6e 74 73 20 74 6f 20 72 65 73 74 72 69 63 74 20 64 .not.allow.patents.to.restrict.d
44860 65 76 65 6c 6f 70 6d 65 6e 74 20 61 6e 64 20 75 73 65 20 6f 66 0a 73 6f 66 74 77 61 72 65 20 6f evelopment.and.use.of.software.o
44880 6e 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 65 20 63 6f 6d 70 75 74 65 72 73 2c 20 62 75 74 n.general-purpose.computers,.but
448a0 20 69 6e 20 74 68 6f 73 65 20 74 68 61 74 20 64 6f 2c 20 77 65 20 77 69 73 68 20 74 6f 0a 61 76 .in.those.that.do,.we.wish.to.av
448c0 6f 69 64 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61 6e 67 65 72 20 74 68 61 74 20 70 61 74 65 oid.the.special.danger.that.pate
448e0 6e 74 73 20 61 70 70 6c 69 65 64 20 74 6f 20 61 20 66 72 65 65 20 70 72 6f 67 72 61 6d 20 63 6f nts.applied.to.a.free.program.co
44900 75 6c 64 0a 6d 61 6b 65 20 69 74 20 65 66 66 65 63 74 69 76 65 6c 79 20 70 72 6f 70 72 69 65 74 uld.make.it.effectively.propriet
44920 61 72 79 2e 20 20 54 6f 20 70 72 65 76 65 6e 74 20 74 68 69 73 2c 20 74 68 65 20 47 50 4c 20 61 ary...To.prevent.this,.the.GPL.a
44940 73 73 75 72 65 73 20 74 68 61 74 0a 70 61 74 65 6e 74 73 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 ssures.that.patents.cannot.be.us
44960 65 64 20 74 6f 20 72 65 6e 64 65 72 20 74 68 65 20 70 72 6f 67 72 61 6d 20 6e 6f 6e 2d 66 72 65 ed.to.render.the.program.non-fre
44980 65 2e 0a 0a 20 20 54 68 65 20 70 72 65 63 69 73 65 20 74 65 72 6d 73 20 61 6e 64 20 63 6f 6e 64 e.....The.precise.terms.and.cond
449a0 69 74 69 6f 6e 73 20 66 6f 72 20 63 6f 70 79 69 6e 67 2c 20 64 69 73 74 72 69 62 75 74 69 6f 6e itions.for.copying,.distribution
449c0 20 61 6e 64 0a 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 66 6f 6c 6c 6f 77 2e 0a 0a 20 20 20 20 20 .and.modification.follow........
449e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 45 52 4d 53 20 41 4e 44 20 43 4f 4e 44 ..................TERMS.AND.COND
44a00 49 54 49 4f 4e 53 0a 0a 20 20 30 2e 20 44 65 66 69 6e 69 74 69 6f 6e 73 2e 0a 0a 20 20 22 54 68 ITIONS....0..Definitions....."Th
44a20 69 73 20 4c 69 63 65 6e 73 65 22 20 72 65 66 65 72 73 20 74 6f 20 76 65 72 73 69 6f 6e 20 33 20 is.License".refers.to.version.3.
44a40 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 of.the.GNU.General.Public.Licens
44a60 65 2e 0a 0a 20 20 22 43 6f 70 79 72 69 67 68 74 22 20 61 6c 73 6f 20 6d 65 61 6e 73 20 63 6f 70 e....."Copyright".also.means.cop
44a80 79 72 69 67 68 74 2d 6c 69 6b 65 20 6c 61 77 73 20 74 68 61 74 20 61 70 70 6c 79 20 74 6f 20 6f yright-like.laws.that.apply.to.o
44aa0 74 68 65 72 20 6b 69 6e 64 73 20 6f 66 0a 77 6f 72 6b 73 2c 20 73 75 63 68 20 61 73 20 73 65 6d ther.kinds.of.works,.such.as.sem
44ac0 69 63 6f 6e 64 75 63 74 6f 72 20 6d 61 73 6b 73 2e 0a 0a 20 20 22 54 68 65 20 50 72 6f 67 72 61 iconductor.masks....."The.Progra
44ae0 6d 22 20 72 65 66 65 72 73 20 74 6f 20 61 6e 79 20 63 6f 70 79 72 69 67 68 74 61 62 6c 65 20 77 m".refers.to.any.copyrightable.w
44b00 6f 72 6b 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 2e ork.licensed.under.this.License.
44b20 20 20 45 61 63 68 20 6c 69 63 65 6e 73 65 65 20 69 73 20 61 64 64 72 65 73 73 65 64 20 61 73 20 ..Each.licensee.is.addressed.as.
44b40 22 79 6f 75 22 2e 20 20 22 4c 69 63 65 6e 73 65 65 73 22 20 61 6e 64 0a 22 72 65 63 69 70 69 65 "you"..."Licensees".and."recipie
44b60 6e 74 73 22 20 6d 61 79 20 62 65 20 69 6e 64 69 76 69 64 75 61 6c 73 20 6f 72 20 6f 72 67 61 6e nts".may.be.individuals.or.organ
44b80 69 7a 61 74 69 6f 6e 73 2e 0a 0a 20 20 54 6f 20 22 6d 6f 64 69 66 79 22 20 61 20 77 6f 72 6b 20 izations.....To."modify".a.work.
44ba0 6d 65 61 6e 73 20 74 6f 20 63 6f 70 79 20 66 72 6f 6d 20 6f 72 20 61 64 61 70 74 20 61 6c 6c 20 means.to.copy.from.or.adapt.all.
44bc0 6f 72 20 70 61 72 74 20 6f 66 20 74 68 65 20 77 6f 72 6b 0a 69 6e 20 61 20 66 61 73 68 69 6f 6e or.part.of.the.work.in.a.fashion
44be0 20 72 65 71 75 69 72 69 6e 67 20 63 6f 70 79 72 69 67 68 74 20 70 65 72 6d 69 73 73 69 6f 6e 2c .requiring.copyright.permission,
44c00 20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 6d 61 6b 69 6e 67 20 6f 66 20 61 6e 0a 65 78 61 .other.than.the.making.of.an.exa
44c20 63 74 20 63 6f 70 79 2e 20 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 77 6f 72 6b 20 69 73 20 ct.copy...The.resulting.work.is.
44c40 63 61 6c 6c 65 64 20 61 20 22 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 22 20 6f 66 20 74 called.a."modified.version".of.t
44c60 68 65 0a 65 61 72 6c 69 65 72 20 77 6f 72 6b 20 6f 72 20 61 20 77 6f 72 6b 20 22 62 61 73 65 64 he.earlier.work.or.a.work."based
44c80 20 6f 6e 22 20 74 68 65 20 65 61 72 6c 69 65 72 20 77 6f 72 6b 2e 0a 0a 20 20 41 20 22 63 6f 76 .on".the.earlier.work.....A."cov
44ca0 65 72 65 64 20 77 6f 72 6b 22 20 6d 65 61 6e 73 20 65 69 74 68 65 72 20 74 68 65 20 75 6e 6d 6f ered.work".means.either.the.unmo
44cc0 64 69 66 69 65 64 20 50 72 6f 67 72 61 6d 20 6f 72 20 61 20 77 6f 72 6b 20 62 61 73 65 64 0a 6f dified.Program.or.a.work.based.o
44ce0 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 54 6f 20 22 70 72 6f 70 61 67 61 74 65 22 n.the.Program.....To."propagate"
44d00 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 6f 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74 .a.work.means.to.do.anything.wit
44d20 68 20 69 74 20 74 68 61 74 2c 20 77 69 74 68 6f 75 74 0a 70 65 72 6d 69 73 73 69 6f 6e 2c 20 77 h.it.that,.without.permission,.w
44d40 6f 75 6c 64 20 6d 61 6b 65 20 79 6f 75 20 64 69 72 65 63 74 6c 79 20 6f 72 20 73 65 63 6f 6e 64 ould.make.you.directly.or.second
44d60 61 72 69 6c 79 20 6c 69 61 62 6c 65 20 66 6f 72 0a 69 6e 66 72 69 6e 67 65 6d 65 6e 74 20 75 6e arily.liable.for.infringement.un
44d80 64 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 63 6f 70 79 72 69 67 68 74 20 6c 61 77 2c 20 65 78 der.applicable.copyright.law,.ex
44da0 63 65 70 74 20 65 78 65 63 75 74 69 6e 67 20 69 74 20 6f 6e 20 61 0a 63 6f 6d 70 75 74 65 72 20 cept.executing.it.on.a.computer.
44dc0 6f 72 20 6d 6f 64 69 66 79 69 6e 67 20 61 20 70 72 69 76 61 74 65 20 63 6f 70 79 2e 20 20 50 72 or.modifying.a.private.copy...Pr
44de0 6f 70 61 67 61 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f 70 79 69 6e 67 2c 0a 64 69 73 74 opagation.includes.copying,.dist
44e00 72 69 62 75 74 69 6f 6e 20 28 77 69 74 68 20 6f 72 20 77 69 74 68 6f 75 74 20 6d 6f 64 69 66 69 ribution.(with.or.without.modifi
44e20 63 61 74 69 6f 6e 29 2c 20 6d 61 6b 69 6e 67 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 cation),.making.available.to.the
44e40 0a 70 75 62 6c 69 63 2c 20 61 6e 64 20 69 6e 20 73 6f 6d 65 20 63 6f 75 6e 74 72 69 65 73 20 6f .public,.and.in.some.countries.o
44e60 74 68 65 72 20 61 63 74 69 76 69 74 69 65 73 20 61 73 20 77 65 6c 6c 2e 0a 0a 20 20 54 6f 20 22 ther.activities.as.well.....To."
44e80 63 6f 6e 76 65 79 22 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 61 6e 79 20 6b 69 6e 64 20 6f 66 convey".a.work.means.any.kind.of
44ea0 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 74 68 61 74 20 65 6e 61 62 6c 65 73 20 6f 74 68 65 72 0a .propagation.that.enables.other.
44ec0 70 61 72 74 69 65 73 20 74 6f 20 6d 61 6b 65 20 6f 72 20 72 65 63 65 69 76 65 20 63 6f 70 69 65 parties.to.make.or.receive.copie
44ee0 73 2e 20 20 4d 65 72 65 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 77 69 74 68 20 61 20 75 73 65 72 s...Mere.interaction.with.a.user
44f00 20 74 68 72 6f 75 67 68 0a 61 20 63 6f 6d 70 75 74 65 72 20 6e 65 74 77 6f 72 6b 2c 20 77 69 74 .through.a.computer.network,.wit
44f20 68 20 6e 6f 20 74 72 61 6e 73 66 65 72 20 6f 66 20 61 20 63 6f 70 79 2c 20 69 73 20 6e 6f 74 20 h.no.transfer.of.a.copy,.is.not.
44f40 63 6f 6e 76 65 79 69 6e 67 2e 0a 0a 20 20 41 6e 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 conveying.....An.interactive.use
44f60 72 20 69 6e 74 65 72 66 61 63 65 20 64 69 73 70 6c 61 79 73 20 22 41 70 70 72 6f 70 72 69 61 74 r.interface.displays."Appropriat
44f80 65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 22 0a 74 6f 20 74 68 65 20 65 78 74 65 6e 74 20 74 e.Legal.Notices".to.the.extent.t
44fa0 68 61 74 20 69 74 20 69 6e 63 6c 75 64 65 73 20 61 20 63 6f 6e 76 65 6e 69 65 6e 74 20 61 6e 64 hat.it.includes.a.convenient.and
44fc0 20 70 72 6f 6d 69 6e 65 6e 74 6c 79 20 76 69 73 69 62 6c 65 0a 66 65 61 74 75 72 65 20 74 68 61 .prominently.visible.feature.tha
44fe0 74 20 28 31 29 20 64 69 73 70 6c 61 79 73 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f t.(1).displays.an.appropriate.co
45000 70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 2c 20 61 6e 64 20 28 32 29 0a 74 65 6c 6c 73 20 74 68 pyright.notice,.and.(2).tells.th
45020 65 20 75 73 65 72 20 74 68 61 74 20 74 68 65 72 65 20 69 73 20 6e 6f 20 77 61 72 72 61 6e 74 79 e.user.that.there.is.no.warranty
45040 20 66 6f 72 20 74 68 65 20 77 6f 72 6b 20 28 65 78 63 65 70 74 20 74 6f 20 74 68 65 0a 65 78 74 .for.the.work.(except.to.the.ext
45060 65 6e 74 20 74 68 61 74 20 77 61 72 72 61 6e 74 69 65 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 ent.that.warranties.are.provided
45080 29 2c 20 74 68 61 74 20 6c 69 63 65 6e 73 65 65 73 20 6d 61 79 20 63 6f 6e 76 65 79 20 74 68 65 ),.that.licensees.may.convey.the
450a0 0a 77 6f 72 6b 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 61 6e 64 20 68 6f .work.under.this.License,.and.ho
450c0 77 20 74 6f 20 76 69 65 77 20 61 20 63 6f 70 79 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 w.to.view.a.copy.of.this.License
450e0 2e 20 20 49 66 0a 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 70 72 65 73 65 6e 74 73 20 61 20 6c ...If.the.interface.presents.a.l
45100 69 73 74 20 6f 66 20 75 73 65 72 20 63 6f 6d 6d 61 6e 64 73 20 6f 72 20 6f 70 74 69 6f 6e 73 2c ist.of.user.commands.or.options,
45120 20 73 75 63 68 20 61 73 20 61 0a 6d 65 6e 75 2c 20 61 20 70 72 6f 6d 69 6e 65 6e 74 20 69 74 65 .such.as.a.menu,.a.prominent.ite
45140 6d 20 69 6e 20 74 68 65 20 6c 69 73 74 20 6d 65 65 74 73 20 74 68 69 73 20 63 72 69 74 65 72 69 m.in.the.list.meets.this.criteri
45160 6f 6e 2e 0a 0a 20 20 31 2e 20 53 6f 75 72 63 65 20 43 6f 64 65 2e 0a 0a 20 20 54 68 65 20 22 73 on.....1..Source.Code.....The."s
45180 6f 75 72 63 65 20 63 6f 64 65 22 20 66 6f 72 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 68 65 ource.code".for.a.work.means.the
451a0 20 70 72 65 66 65 72 72 65 64 20 66 6f 72 6d 20 6f 66 20 74 68 65 20 77 6f 72 6b 0a 66 6f 72 20 .preferred.form.of.the.work.for.
451c0 6d 61 6b 69 6e 67 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 74 6f 20 69 74 2e 20 20 22 4f 62 making.modifications.to.it..."Ob
451e0 6a 65 63 74 20 63 6f 64 65 22 20 6d 65 61 6e 73 20 61 6e 79 20 6e 6f 6e 2d 73 6f 75 72 63 65 0a ject.code".means.any.non-source.
45200 66 6f 72 6d 20 6f 66 20 61 20 77 6f 72 6b 2e 0a 0a 20 20 41 20 22 53 74 61 6e 64 61 72 64 20 49 form.of.a.work.....A."Standard.I
45220 6e 74 65 72 66 61 63 65 22 20 6d 65 61 6e 73 20 61 6e 20 69 6e 74 65 72 66 61 63 65 20 74 68 61 nterface".means.an.interface.tha
45240 74 20 65 69 74 68 65 72 20 69 73 20 61 6e 20 6f 66 66 69 63 69 61 6c 0a 73 74 61 6e 64 61 72 64 t.either.is.an.official.standard
45260 20 64 65 66 69 6e 65 64 20 62 79 20 61 20 72 65 63 6f 67 6e 69 7a 65 64 20 73 74 61 6e 64 61 72 .defined.by.a.recognized.standar
45280 64 73 20 62 6f 64 79 2c 20 6f 72 2c 20 69 6e 20 74 68 65 20 63 61 73 65 20 6f 66 0a 69 6e 74 65 ds.body,.or,.in.the.case.of.inte
452a0 72 66 61 63 65 73 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 rfaces.specified.for.a.particula
452c0 72 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 2c 20 6f 6e 65 20 74 68 61 74 r.programming.language,.one.that
452e0 0a 69 73 20 77 69 64 65 6c 79 20 75 73 65 64 20 61 6d 6f 6e 67 20 64 65 76 65 6c 6f 70 65 72 73 .is.widely.used.among.developers
45300 20 77 6f 72 6b 69 6e 67 20 69 6e 20 74 68 61 74 20 6c 61 6e 67 75 61 67 65 2e 0a 0a 20 20 54 68 .working.in.that.language.....Th
45320 65 20 22 53 79 73 74 65 6d 20 4c 69 62 72 61 72 69 65 73 22 20 6f 66 20 61 6e 20 65 78 65 63 75 e."System.Libraries".of.an.execu
45340 74 61 62 6c 65 20 77 6f 72 6b 20 69 6e 63 6c 75 64 65 20 61 6e 79 74 68 69 6e 67 2c 20 6f 74 68 table.work.include.anything,.oth
45360 65 72 0a 74 68 61 6e 20 74 68 65 20 77 6f 72 6b 20 61 73 20 61 20 77 68 6f 6c 65 2c 20 74 68 61 er.than.the.work.as.a.whole,.tha
45380 74 20 28 61 29 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 6e 6f 72 6d 61 6c 20 t.(a).is.included.in.the.normal.
453a0 66 6f 72 6d 20 6f 66 0a 70 61 63 6b 61 67 69 6e 67 20 61 20 4d 61 6a 6f 72 20 43 6f 6d 70 6f 6e form.of.packaging.a.Major.Compon
453c0 65 6e 74 2c 20 62 75 74 20 77 68 69 63 68 20 69 73 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74 68 ent,.but.which.is.not.part.of.th
453e0 61 74 20 4d 61 6a 6f 72 0a 43 6f 6d 70 6f 6e 65 6e 74 2c 20 61 6e 64 20 28 62 29 20 73 65 72 76 at.Major.Component,.and.(b).serv
45400 65 73 20 6f 6e 6c 79 20 74 6f 20 65 6e 61 62 6c 65 20 75 73 65 20 6f 66 20 74 68 65 20 77 6f 72 es.only.to.enable.use.of.the.wor
45420 6b 20 77 69 74 68 20 74 68 61 74 0a 4d 61 6a 6f 72 20 43 6f 6d 70 6f 6e 65 6e 74 2c 20 6f 72 20 k.with.that.Major.Component,.or.
45440 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 20 53 74 61 6e 64 61 72 64 20 49 6e 74 65 72 66 61 63 to.implement.a.Standard.Interfac
45460 65 20 66 6f 72 20 77 68 69 63 68 20 61 6e 0a 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 e.for.which.an.implementation.is
45480 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 69 6e 20 73 6f 75 72 .available.to.the.public.in.sour
454a0 63 65 20 63 6f 64 65 20 66 6f 72 6d 2e 20 20 41 0a 22 4d 61 6a 6f 72 20 43 6f 6d 70 6f 6e 65 6e ce.code.form...A."Major.Componen
454c0 74 22 2c 20 69 6e 20 74 68 69 73 20 63 6f 6e 74 65 78 74 2c 20 6d 65 61 6e 73 20 61 20 6d 61 6a t",.in.this.context,.means.a.maj
454e0 6f 72 20 65 73 73 65 6e 74 69 61 6c 20 63 6f 6d 70 6f 6e 65 6e 74 0a 28 6b 65 72 6e 65 6c 2c 20 or.essential.component.(kernel,.
45500 77 69 6e 64 6f 77 20 73 79 73 74 65 6d 2c 20 61 6e 64 20 73 6f 20 6f 6e 29 20 6f 66 20 74 68 65 window.system,.and.so.on).of.the
45520 20 73 70 65 63 69 66 69 63 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 0a 28 69 66 20 61 .specific.operating.system.(if.a
45540 6e 79 29 20 6f 6e 20 77 68 69 63 68 20 74 68 65 20 65 78 65 63 75 74 61 62 6c 65 20 77 6f 72 6b ny).on.which.the.executable.work
45560 20 72 75 6e 73 2c 20 6f 72 20 61 20 63 6f 6d 70 69 6c 65 72 20 75 73 65 64 20 74 6f 0a 70 72 6f .runs,.or.a.compiler.used.to.pro
45580 64 75 63 65 20 74 68 65 20 77 6f 72 6b 2c 20 6f 72 20 61 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65 duce.the.work,.or.an.object.code
455a0 20 69 6e 74 65 72 70 72 65 74 65 72 20 75 73 65 64 20 74 6f 20 72 75 6e 20 69 74 2e 0a 0a 20 20 .interpreter.used.to.run.it.....
455c0 54 68 65 20 22 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 22 20 66 6f 72 20 61 The."Corresponding.Source".for.a
455e0 20 77 6f 72 6b 20 69 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 66 6f 72 6d 20 6d 65 61 6e 73 20 .work.in.object.code.form.means.
45600 61 6c 6c 0a 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6e 65 65 64 65 64 20 74 6f 20 67 65 all.the.source.code.needed.to.ge
45620 6e 65 72 61 74 65 2c 20 69 6e 73 74 61 6c 6c 2c 20 61 6e 64 20 28 66 6f 72 20 61 6e 20 65 78 65 nerate,.install,.and.(for.an.exe
45640 63 75 74 61 62 6c 65 0a 77 6f 72 6b 29 20 72 75 6e 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 cutable.work).run.the.object.cod
45660 65 20 61 6e 64 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 77 6f 72 6b 2c 20 69 6e 63 6c 75 64 e.and.to.modify.the.work,.includ
45680 69 6e 67 20 73 63 72 69 70 74 73 20 74 6f 0a 63 6f 6e 74 72 6f 6c 20 74 68 6f 73 65 20 61 63 74 ing.scripts.to.control.those.act
456a0 69 76 69 74 69 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69 ivities...However,.it.does.not.i
456c0 6e 63 6c 75 64 65 20 74 68 65 20 77 6f 72 6b 27 73 0a 53 79 73 74 65 6d 20 4c 69 62 72 61 72 69 nclude.the.work's.System.Librari
456e0 65 73 2c 20 6f 72 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 65 20 74 6f 6f 6c 73 20 6f 72 20 es,.or.general-purpose.tools.or.
45700 67 65 6e 65 72 61 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 66 72 65 65 0a 70 72 6f 67 72 61 6d generally.available.free.program
45720 73 20 77 68 69 63 68 20 61 72 65 20 75 73 65 64 20 75 6e 6d 6f 64 69 66 69 65 64 20 69 6e 20 70 s.which.are.used.unmodified.in.p
45740 65 72 66 6f 72 6d 69 6e 67 20 74 68 6f 73 65 20 61 63 74 69 76 69 74 69 65 73 20 62 75 74 0a 77 erforming.those.activities.but.w
45760 68 69 63 68 20 61 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 74 68 65 20 77 6f 72 6b 2e 20 20 hich.are.not.part.of.the.work...
45780 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 For.example,.Corresponding.Sourc
457a0 65 0a 69 6e 63 6c 75 64 65 73 20 69 6e 74 65 72 66 61 63 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 e.includes.interface.definition.
457c0 66 69 6c 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 73 6f 75 72 63 65 20 66 69 6c files.associated.with.source.fil
457e0 65 73 20 66 6f 72 0a 74 68 65 20 77 6f 72 6b 2c 20 61 6e 64 20 74 68 65 20 73 6f 75 72 63 65 20 es.for.the.work,.and.the.source.
45800 63 6f 64 65 20 66 6f 72 20 73 68 61 72 65 64 20 6c 69 62 72 61 72 69 65 73 20 61 6e 64 20 64 79 code.for.shared.libraries.and.dy
45820 6e 61 6d 69 63 61 6c 6c 79 0a 6c 69 6e 6b 65 64 20 73 75 62 70 72 6f 67 72 61 6d 73 20 74 68 61 namically.linked.subprograms.tha
45840 74 20 74 68 65 20 77 6f 72 6b 20 69 73 20 73 70 65 63 69 66 69 63 61 6c 6c 79 20 64 65 73 69 67 t.the.work.is.specifically.desig
45860 6e 65 64 20 74 6f 20 72 65 71 75 69 72 65 2c 0a 73 75 63 68 20 61 73 20 62 79 20 69 6e 74 69 6d ned.to.require,.such.as.by.intim
45880 61 74 65 20 64 61 74 61 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 20 6f 72 20 63 6f 6e 74 72 6f ate.data.communication.or.contro
458a0 6c 20 66 6c 6f 77 20 62 65 74 77 65 65 6e 20 74 68 6f 73 65 0a 73 75 62 70 72 6f 67 72 61 6d 73 l.flow.between.those.subprograms
458c0 20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 77 6f 72 6b 2e 0a 0a 20 .and.other.parts.of.the.work....
458e0 20 54 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 6e 65 65 64 20 6e .The.Corresponding.Source.need.n
45900 6f 74 20 69 6e 63 6c 75 64 65 20 61 6e 79 74 68 69 6e 67 20 74 68 61 74 20 75 73 65 72 73 0a 63 ot.include.anything.that.users.c
45920 61 6e 20 72 65 67 65 6e 65 72 61 74 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 66 72 6f 6d an.regenerate.automatically.from
45940 20 6f 74 68 65 72 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e .other.parts.of.the.Correspondin
45960 67 0a 53 6f 75 72 63 65 2e 0a 0a 20 20 54 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 g.Source.....The.Corresponding.S
45980 6f 75 72 63 65 20 66 6f 72 20 61 20 77 6f 72 6b 20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20 ource.for.a.work.in.source.code.
459a0 66 6f 72 6d 20 69 73 20 74 68 61 74 0a 73 61 6d 65 20 77 6f 72 6b 2e 0a 0a 20 20 32 2e 20 42 61 form.is.that.same.work.....2..Ba
459c0 73 69 63 20 50 65 72 6d 69 73 73 69 6f 6e 73 2e 0a 0a 20 20 41 6c 6c 20 72 69 67 68 74 73 20 67 sic.Permissions.....All.rights.g
459e0 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 72 65 20 67 72 ranted.under.this.License.are.gr
45a00 61 6e 74 65 64 20 66 6f 72 20 74 68 65 20 74 65 72 6d 20 6f 66 0a 63 6f 70 79 72 69 67 68 74 20 anted.for.the.term.of.copyright.
45a20 6f 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 61 6e 64 20 61 72 65 20 69 72 72 65 76 6f 63 61 on.the.Program,.and.are.irrevoca
45a40 62 6c 65 20 70 72 6f 76 69 64 65 64 20 74 68 65 20 73 74 61 74 65 64 0a 63 6f 6e 64 69 74 69 6f ble.provided.the.stated.conditio
45a60 6e 73 20 61 72 65 20 6d 65 74 2e 20 20 54 68 69 73 20 4c 69 63 65 6e 73 65 20 65 78 70 6c 69 63 ns.are.met...This.License.explic
45a80 69 74 6c 79 20 61 66 66 69 72 6d 73 20 79 6f 75 72 20 75 6e 6c 69 6d 69 74 65 64 0a 70 65 72 6d itly.affirms.your.unlimited.perm
45aa0 69 73 73 69 6f 6e 20 74 6f 20 72 75 6e 20 74 68 65 20 75 6e 6d 6f 64 69 66 69 65 64 20 50 72 6f ission.to.run.the.unmodified.Pro
45ac0 67 72 61 6d 2e 20 20 54 68 65 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 72 75 6e 6e 69 6e 67 20 61 gram...The.output.from.running.a
45ae0 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 73 20 63 6f 76 65 72 65 64 20 62 79 20 74 68 69 73 .covered.work.is.covered.by.this
45b00 20 4c 69 63 65 6e 73 65 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 6f 75 74 70 75 74 2c 20 67 69 76 .License.only.if.the.output,.giv
45b20 65 6e 20 69 74 73 0a 63 6f 6e 74 65 6e 74 2c 20 63 6f 6e 73 74 69 74 75 74 65 73 20 61 20 63 6f en.its.content,.constitutes.a.co
45b40 76 65 72 65 64 20 77 6f 72 6b 2e 20 20 54 68 69 73 20 4c 69 63 65 6e 73 65 20 61 63 6b 6e 6f 77 vered.work...This.License.acknow
45b60 6c 65 64 67 65 73 20 79 6f 75 72 0a 72 69 67 68 74 73 20 6f 66 20 66 61 69 72 20 75 73 65 20 6f ledges.your.rights.of.fair.use.o
45b80 72 20 6f 74 68 65 72 20 65 71 75 69 76 61 6c 65 6e 74 2c 20 61 73 20 70 72 6f 76 69 64 65 64 20 r.other.equivalent,.as.provided.
45ba0 62 79 20 63 6f 70 79 72 69 67 68 74 20 6c 61 77 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 6d 61 6b by.copyright.law.....You.may.mak
45bc0 65 2c 20 72 75 6e 20 61 6e 64 20 70 72 6f 70 61 67 61 74 65 20 63 6f 76 65 72 65 64 20 77 6f 72 e,.run.and.propagate.covered.wor
45be0 6b 73 20 74 68 61 74 20 79 6f 75 20 64 6f 20 6e 6f 74 0a 63 6f 6e 76 65 79 2c 20 77 69 74 68 6f ks.that.you.do.not.convey,.witho
45c00 75 74 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73 6f 20 6c 6f 6e 67 20 61 73 20 79 6f 75 72 20 6c 69 ut.conditions.so.long.as.your.li
45c20 63 65 6e 73 65 20 6f 74 68 65 72 77 69 73 65 20 72 65 6d 61 69 6e 73 0a 69 6e 20 66 6f 72 63 65 cense.otherwise.remains.in.force
45c40 2e 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 79 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 73 20 ...You.may.convey.covered.works.
45c60 74 6f 20 6f 74 68 65 72 73 20 66 6f 72 20 74 68 65 20 73 6f 6c 65 20 70 75 72 70 6f 73 65 0a 6f to.others.for.the.sole.purpose.o
45c80 66 20 68 61 76 69 6e 67 20 74 68 65 6d 20 6d 61 6b 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 f.having.them.make.modifications
45ca0 20 65 78 63 6c 75 73 69 76 65 6c 79 20 66 6f 72 20 79 6f 75 2c 20 6f 72 20 70 72 6f 76 69 64 65 .exclusively.for.you,.or.provide
45cc0 20 79 6f 75 0a 77 69 74 68 20 66 61 63 69 6c 69 74 69 65 73 20 66 6f 72 20 72 75 6e 6e 69 6e 67 .you.with.facilities.for.running
45ce0 20 74 68 6f 73 65 20 77 6f 72 6b 73 2c 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f 75 20 .those.works,.provided.that.you.
45d00 63 6f 6d 70 6c 79 20 77 69 74 68 0a 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69 comply.with.the.terms.of.this.Li
45d20 63 65 6e 73 65 20 69 6e 20 63 6f 6e 76 65 79 69 6e 67 20 61 6c 6c 20 6d 61 74 65 72 69 61 6c 20 cense.in.conveying.all.material.
45d40 66 6f 72 20 77 68 69 63 68 20 79 6f 75 20 64 6f 0a 6e 6f 74 20 63 6f 6e 74 72 6f 6c 20 63 6f 70 for.which.you.do.not.control.cop
45d60 79 72 69 67 68 74 2e 20 20 54 68 6f 73 65 20 74 68 75 73 20 6d 61 6b 69 6e 67 20 6f 72 20 72 75 yright...Those.thus.making.or.ru
45d80 6e 6e 69 6e 67 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 73 0a 66 6f 72 20 79 6f 75 20 nning.the.covered.works.for.you.
45da0 6d 75 73 74 20 64 6f 20 73 6f 20 65 78 63 6c 75 73 69 76 65 6c 79 20 6f 6e 20 79 6f 75 72 20 62 must.do.so.exclusively.on.your.b
45dc0 65 68 61 6c 66 2c 20 75 6e 64 65 72 20 79 6f 75 72 20 64 69 72 65 63 74 69 6f 6e 0a 61 6e 64 20 ehalf,.under.your.direction.and.
45de0 63 6f 6e 74 72 6f 6c 2c 20 6f 6e 20 74 65 72 6d 73 20 74 68 61 74 20 70 72 6f 68 69 62 69 74 20 control,.on.terms.that.prohibit.
45e00 74 68 65 6d 20 66 72 6f 6d 20 6d 61 6b 69 6e 67 20 61 6e 79 20 63 6f 70 69 65 73 20 6f 66 0a 79 them.from.making.any.copies.of.y
45e20 6f 75 72 20 63 6f 70 79 72 69 67 68 74 65 64 20 6d 61 74 65 72 69 61 6c 20 6f 75 74 73 69 64 65 our.copyrighted.material.outside
45e40 20 74 68 65 69 72 20 72 65 6c 61 74 69 6f 6e 73 68 69 70 20 77 69 74 68 20 79 6f 75 2e 0a 0a 20 .their.relationship.with.you....
45e60 20 43 6f 6e 76 65 79 69 6e 67 20 75 6e 64 65 72 20 61 6e 79 20 6f 74 68 65 72 20 63 69 72 63 75 .Conveying.under.any.other.circu
45e80 6d 73 74 61 6e 63 65 73 20 69 73 20 70 65 72 6d 69 74 74 65 64 20 73 6f 6c 65 6c 79 20 75 6e 64 mstances.is.permitted.solely.und
45ea0 65 72 0a 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73 74 61 74 65 64 20 62 65 6c 6f 77 2e 20 er.the.conditions.stated.below..
45ec0 20 53 75 62 6c 69 63 65 6e 73 69 6e 67 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 3b 20 73 65 .Sublicensing.is.not.allowed;.se
45ee0 63 74 69 6f 6e 20 31 30 0a 6d 61 6b 65 73 20 69 74 20 75 6e 6e 65 63 65 73 73 61 72 79 2e 0a 0a ction.10.makes.it.unnecessary...
45f00 20 20 33 2e 20 50 72 6f 74 65 63 74 69 6e 67 20 55 73 65 72 73 27 20 4c 65 67 61 6c 20 52 69 67 ..3..Protecting.Users'.Legal.Rig
45f20 68 74 73 20 46 72 6f 6d 20 41 6e 74 69 2d 43 69 72 63 75 6d 76 65 6e 74 69 6f 6e 20 4c 61 77 2e hts.From.Anti-Circumvention.Law.
45f40 0a 0a 20 20 4e 6f 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 73 68 61 6c 6c 20 62 65 20 64 65 65 ....No.covered.work.shall.be.dee
45f60 6d 65 64 20 70 61 72 74 20 6f 66 20 61 6e 20 65 66 66 65 63 74 69 76 65 20 74 65 63 68 6e 6f 6c med.part.of.an.effective.technol
45f80 6f 67 69 63 61 6c 0a 6d 65 61 73 75 72 65 20 75 6e 64 65 72 20 61 6e 79 20 61 70 70 6c 69 63 61 ogical.measure.under.any.applica
45fa0 62 6c 65 20 6c 61 77 20 66 75 6c 66 69 6c 6c 69 6e 67 20 6f 62 6c 69 67 61 74 69 6f 6e 73 20 75 ble.law.fulfilling.obligations.u
45fc0 6e 64 65 72 20 61 72 74 69 63 6c 65 0a 31 31 20 6f 66 20 74 68 65 20 57 49 50 4f 20 63 6f 70 79 nder.article.11.of.the.WIPO.copy
45fe0 72 69 67 68 74 20 74 72 65 61 74 79 20 61 64 6f 70 74 65 64 20 6f 6e 20 32 30 20 44 65 63 65 6d right.treaty.adopted.on.20.Decem
46000 62 65 72 20 31 39 39 36 2c 20 6f 72 0a 73 69 6d 69 6c 61 72 20 6c 61 77 73 20 70 72 6f 68 69 62 ber.1996,.or.similar.laws.prohib
46020 69 74 69 6e 67 20 6f 72 20 72 65 73 74 72 69 63 74 69 6e 67 20 63 69 72 63 75 6d 76 65 6e 74 69 iting.or.restricting.circumventi
46040 6f 6e 20 6f 66 20 73 75 63 68 0a 6d 65 61 73 75 72 65 73 2e 0a 0a 20 20 57 68 65 6e 20 79 6f 75 on.of.such.measures.....When.you
46060 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 79 6f 75 20 77 61 69 76 .convey.a.covered.work,.you.waiv
46080 65 20 61 6e 79 20 6c 65 67 61 6c 20 70 6f 77 65 72 20 74 6f 20 66 6f 72 62 69 64 0a 63 69 72 63 e.any.legal.power.to.forbid.circ
460a0 75 6d 76 65 6e 74 69 6f 6e 20 6f 66 20 74 65 63 68 6e 6f 6c 6f 67 69 63 61 6c 20 6d 65 61 73 75 umvention.of.technological.measu
460c0 72 65 73 20 74 6f 20 74 68 65 20 65 78 74 65 6e 74 20 73 75 63 68 20 63 69 72 63 75 6d 76 65 6e res.to.the.extent.such.circumven
460e0 74 69 6f 6e 0a 69 73 20 65 66 66 65 63 74 65 64 20 62 79 20 65 78 65 72 63 69 73 69 6e 67 20 72 tion.is.effected.by.exercising.r
46100 69 67 68 74 73 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 77 69 74 68 20 72 65 ights.under.this.License.with.re
46120 73 70 65 63 74 20 74 6f 0a 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 79 spect.to.the.covered.work,.and.y
46140 6f 75 20 64 69 73 63 6c 61 69 6d 20 61 6e 79 20 69 6e 74 65 6e 74 69 6f 6e 20 74 6f 20 6c 69 6d ou.disclaim.any.intention.to.lim
46160 69 74 20 6f 70 65 72 61 74 69 6f 6e 20 6f 72 0a 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 it.operation.or.modification.of.
46180 74 68 65 20 77 6f 72 6b 20 61 73 20 61 20 6d 65 61 6e 73 20 6f 66 20 65 6e 66 6f 72 63 69 6e 67 the.work.as.a.means.of.enforcing
461a0 2c 20 61 67 61 69 6e 73 74 20 74 68 65 20 77 6f 72 6b 27 73 0a 75 73 65 72 73 2c 20 79 6f 75 72 ,.against.the.work's.users,.your
461c0 20 6f 72 20 74 68 69 72 64 20 70 61 72 74 69 65 73 27 20 6c 65 67 61 6c 20 72 69 67 68 74 73 20 .or.third.parties'.legal.rights.
461e0 74 6f 20 66 6f 72 62 69 64 20 63 69 72 63 75 6d 76 65 6e 74 69 6f 6e 20 6f 66 0a 74 65 63 68 6e to.forbid.circumvention.of.techn
46200 6f 6c 6f 67 69 63 61 6c 20 6d 65 61 73 75 72 65 73 2e 0a 0a 20 20 34 2e 20 43 6f 6e 76 65 79 69 ological.measures.....4..Conveyi
46220 6e 67 20 56 65 72 62 61 74 69 6d 20 43 6f 70 69 65 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63 ng.Verbatim.Copies.....You.may.c
46240 6f 6e 76 65 79 20 76 65 72 62 61 74 69 6d 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 20 50 72 6f onvey.verbatim.copies.of.the.Pro
46260 67 72 61 6d 27 73 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61 73 20 79 6f 75 0a 72 65 63 65 69 76 gram's.source.code.as.you.receiv
46280 65 20 69 74 2c 20 69 6e 20 61 6e 79 20 6d 65 64 69 75 6d 2c 20 70 72 6f 76 69 64 65 64 20 74 68 e.it,.in.any.medium,.provided.th
462a0 61 74 20 79 6f 75 20 63 6f 6e 73 70 69 63 75 6f 75 73 6c 79 20 61 6e 64 0a 61 70 70 72 6f 70 72 at.you.conspicuously.and.appropr
462c0 69 61 74 65 6c 79 20 70 75 62 6c 69 73 68 20 6f 6e 20 65 61 63 68 20 63 6f 70 79 20 61 6e 20 61 iately.publish.on.each.copy.an.a
462e0 70 70 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 3b 0a 6b 65 65 ppropriate.copyright.notice;.kee
46300 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68 61 p.intact.all.notices.stating.tha
46320 74 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e 79 0a 6e 6f 6e 2d 70 65 72 6d 69 t.this.License.and.any.non-permi
46340 73 73 69 76 65 20 74 65 72 6d 73 20 61 64 64 65 64 20 69 6e 20 61 63 63 6f 72 64 20 77 69 74 68 ssive.terms.added.in.accord.with
46360 20 73 65 63 74 69 6f 6e 20 37 20 61 70 70 6c 79 20 74 6f 20 74 68 65 20 63 6f 64 65 3b 0a 6b 65 .section.7.apply.to.the.code;.ke
46380 65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 20 6f 66 20 74 68 65 20 61 62 73 ep.intact.all.notices.of.the.abs
463a0 65 6e 63 65 20 6f 66 20 61 6e 79 20 77 61 72 72 61 6e 74 79 3b 20 61 6e 64 20 67 69 76 65 20 61 ence.of.any.warranty;.and.give.a
463c0 6c 6c 0a 72 65 63 69 70 69 65 6e 74 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 69 73 20 4c 69 63 ll.recipients.a.copy.of.this.Lic
463e0 65 6e 73 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 ense.along.with.the.Program.....
46400 59 6f 75 20 6d 61 79 20 63 68 61 72 67 65 20 61 6e 79 20 70 72 69 63 65 20 6f 72 20 6e 6f 20 70 You.may.charge.any.price.or.no.p
46420 72 69 63 65 20 66 6f 72 20 65 61 63 68 20 63 6f 70 79 20 74 68 61 74 20 79 6f 75 20 63 6f 6e 76 rice.for.each.copy.that.you.conv
46440 65 79 2c 0a 61 6e 64 20 79 6f 75 20 6d 61 79 20 6f 66 66 65 72 20 73 75 70 70 6f 72 74 20 6f 72 ey,.and.you.may.offer.support.or
46460 20 77 61 72 72 61 6e 74 79 20 70 72 6f 74 65 63 74 69 6f 6e 20 66 6f 72 20 61 20 66 65 65 2e 0a .warranty.protection.for.a.fee..
46480 0a 20 20 35 2e 20 43 6f 6e 76 65 79 69 6e 67 20 4d 6f 64 69 66 69 65 64 20 53 6f 75 72 63 65 20 ...5..Conveying.Modified.Source.
464a0 56 65 72 73 69 6f 6e 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 79 20 61 20 77 6f Versions.....You.may.convey.a.wo
464c0 72 6b 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 6f 72 20 74 68 65 20 rk.based.on.the.Program,.or.the.
464e0 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 74 6f 0a 70 72 6f 64 75 63 65 20 69 74 20 66 72 6f 6d modifications.to.produce.it.from
46500 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 69 6e 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 73 6f 75 .the.Program,.in.the.form.of.sou
46520 72 63 65 20 63 6f 64 65 20 75 6e 64 65 72 20 74 68 65 0a 74 65 72 6d 73 20 6f 66 20 73 65 63 74 rce.code.under.the.terms.of.sect
46540 69 6f 6e 20 34 2c 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f 75 20 61 6c 73 6f 20 6d 65 ion.4,.provided.that.you.also.me
46560 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 63 6f 6e 64 69 74 69 6f 6e 73 3a 0a 0a 20 20 20 et.all.of.these.conditions:.....
46580 20 61 29 20 54 68 65 20 77 6f 72 6b 20 6d 75 73 74 20 63 61 72 72 79 20 70 72 6f 6d 69 6e 65 6e .a).The.work.must.carry.prominen
465a0 74 20 6e 6f 74 69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68 61 74 20 79 6f 75 20 6d 6f 64 69 66 t.notices.stating.that.you.modif
465c0 69 65 64 0a 20 20 20 20 69 74 2c 20 61 6e 64 20 67 69 76 69 6e 67 20 61 20 72 65 6c 65 76 61 6e ied.....it,.and.giving.a.relevan
465e0 74 20 64 61 74 65 2e 0a 0a 20 20 20 20 62 29 20 54 68 65 20 77 6f 72 6b 20 6d 75 73 74 20 63 61 t.date.......b).The.work.must.ca
46600 72 72 79 20 70 72 6f 6d 69 6e 65 6e 74 20 6e 6f 74 69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68 rry.prominent.notices.stating.th
46620 61 74 20 69 74 20 69 73 0a 20 20 20 20 72 65 6c 65 61 73 65 64 20 75 6e 64 65 72 20 74 68 69 73 at.it.is.....released.under.this
46640 20 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e 79 20 63 6f 6e 64 69 74 69 6f 6e 73 20 61 64 64 65 .License.and.any.conditions.adde
46660 64 20 75 6e 64 65 72 20 73 65 63 74 69 6f 6e 0a 20 20 20 20 37 2e 20 20 54 68 69 73 20 72 65 71 d.under.section.....7...This.req
46680 75 69 72 65 6d 65 6e 74 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e uirement.modifies.the.requiremen
466a0 74 20 69 6e 20 73 65 63 74 69 6f 6e 20 34 20 74 6f 0a 20 20 20 20 22 6b 65 65 70 20 69 6e 74 61 t.in.section.4.to....."keep.inta
466c0 63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 22 2e 0a 0a 20 20 20 20 63 29 20 59 6f 75 20 6d 75 73 ct.all.notices".......c).You.mus
466e0 74 20 6c 69 63 65 6e 73 65 20 74 68 65 20 65 6e 74 69 72 65 20 77 6f 72 6b 2c 20 61 73 20 61 20 t.license.the.entire.work,.as.a.
46700 77 68 6f 6c 65 2c 20 75 6e 64 65 72 20 74 68 69 73 0a 20 20 20 20 4c 69 63 65 6e 73 65 20 74 6f whole,.under.this.....License.to
46720 20 61 6e 79 6f 6e 65 20 77 68 6f 20 63 6f 6d 65 73 20 69 6e 74 6f 20 70 6f 73 73 65 73 73 69 6f .anyone.who.comes.into.possessio
46740 6e 20 6f 66 20 61 20 63 6f 70 79 2e 20 20 54 68 69 73 0a 20 20 20 20 4c 69 63 65 6e 73 65 20 77 n.of.a.copy...This.....License.w
46760 69 6c 6c 20 74 68 65 72 65 66 6f 72 65 20 61 70 70 6c 79 2c 20 61 6c 6f 6e 67 20 77 69 74 68 20 ill.therefore.apply,.along.with.
46780 61 6e 79 20 61 70 70 6c 69 63 61 62 6c 65 20 73 65 63 74 69 6f 6e 20 37 0a 20 20 20 20 61 64 64 any.applicable.section.7.....add
467a0 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 2c 20 74 6f 20 74 68 65 20 77 68 6f 6c 65 20 6f 66 20 74 itional.terms,.to.the.whole.of.t
467c0 68 65 20 77 6f 72 6b 2c 20 61 6e 64 20 61 6c 6c 20 69 74 73 20 70 61 72 74 73 2c 0a 20 20 20 20 he.work,.and.all.its.parts,.....
467e0 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f 77 20 74 68 65 79 20 61 72 65 20 70 61 63 6b 61 regardless.of.how.they.are.packa
46800 67 65 64 2e 20 20 54 68 69 73 20 4c 69 63 65 6e 73 65 20 67 69 76 65 73 20 6e 6f 0a 20 20 20 20 ged...This.License.gives.no.....
46820 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 6c 69 63 65 6e 73 65 20 74 68 65 20 77 6f 72 6b 20 69 permission.to.license.the.work.i
46840 6e 20 61 6e 79 20 6f 74 68 65 72 20 77 61 79 2c 20 62 75 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 n.any.other.way,.but.it.does.not
46860 0a 20 20 20 20 69 6e 76 61 6c 69 64 61 74 65 20 73 75 63 68 20 70 65 72 6d 69 73 73 69 6f 6e 20 .....invalidate.such.permission.
46880 69 66 20 79 6f 75 20 68 61 76 65 20 73 65 70 61 72 61 74 65 6c 79 20 72 65 63 65 69 76 65 64 20 if.you.have.separately.received.
468a0 69 74 2e 0a 0a 20 20 20 20 64 29 20 49 66 20 74 68 65 20 77 6f 72 6b 20 68 61 73 20 69 6e 74 65 it.......d).If.the.work.has.inte
468c0 72 61 63 74 69 76 65 20 75 73 65 72 20 69 6e 74 65 72 66 61 63 65 73 2c 20 65 61 63 68 20 6d 75 ractive.user.interfaces,.each.mu
468e0 73 74 20 64 69 73 70 6c 61 79 0a 20 20 20 20 41 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c st.display.....Appropriate.Legal
46900 20 4e 6f 74 69 63 65 73 3b 20 68 6f 77 65 76 65 72 2c 20 69 66 20 74 68 65 20 50 72 6f 67 72 61 .Notices;.however,.if.the.Progra
46920 6d 20 68 61 73 20 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 20 69 6e 74 65 72 66 61 63 65 73 m.has.interactive.....interfaces
46940 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 64 69 73 70 6c 61 79 20 41 70 70 72 6f 70 72 69 61 74 65 .that.do.not.display.Appropriate
46960 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 2c 20 79 6f 75 72 0a 20 20 20 20 77 6f 72 6b 20 6e 65 .Legal.Notices,.your.....work.ne
46980 65 64 20 6e 6f 74 20 6d 61 6b 65 20 74 68 65 6d 20 64 6f 20 73 6f 2e 0a 0a 20 20 41 20 63 6f 6d ed.not.make.them.do.so.....A.com
469a0 70 69 6c 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 77 69 74 68 20 pilation.of.a.covered.work.with.
469c0 6f 74 68 65 72 20 73 65 70 61 72 61 74 65 20 61 6e 64 20 69 6e 64 65 70 65 6e 64 65 6e 74 0a 77 other.separate.and.independent.w
469e0 6f 72 6b 73 2c 20 77 68 69 63 68 20 61 72 65 20 6e 6f 74 20 62 79 20 74 68 65 69 72 20 6e 61 74 orks,.which.are.not.by.their.nat
46a00 75 72 65 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f ure.extensions.of.the.covered.wo
46a20 72 6b 2c 0a 61 6e 64 20 77 68 69 63 68 20 61 72 65 20 6e 6f 74 20 63 6f 6d 62 69 6e 65 64 20 77 rk,.and.which.are.not.combined.w
46a40 69 74 68 20 69 74 20 73 75 63 68 20 61 73 20 74 6f 20 66 6f 72 6d 20 61 20 6c 61 72 67 65 72 20 ith.it.such.as.to.form.a.larger.
46a60 70 72 6f 67 72 61 6d 2c 0a 69 6e 20 6f 72 20 6f 6e 20 61 20 76 6f 6c 75 6d 65 20 6f 66 20 61 20 program,.in.or.on.a.volume.of.a.
46a80 73 74 6f 72 61 67 65 20 6f 72 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6d 65 64 69 75 6d 2c 20 storage.or.distribution.medium,.
46aa0 69 73 20 63 61 6c 6c 65 64 20 61 6e 0a 22 61 67 67 72 65 67 61 74 65 22 20 69 66 20 74 68 65 20 is.called.an."aggregate".if.the.
46ac0 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 61 6e 64 20 69 74 73 20 72 65 73 75 6c 74 69 6e 67 20 63 6f compilation.and.its.resulting.co
46ae0 70 79 72 69 67 68 74 20 61 72 65 20 6e 6f 74 0a 75 73 65 64 20 74 6f 20 6c 69 6d 69 74 20 74 68 pyright.are.not.used.to.limit.th
46b00 65 20 61 63 63 65 73 73 20 6f 72 20 6c 65 67 61 6c 20 72 69 67 68 74 73 20 6f 66 20 74 68 65 20 e.access.or.legal.rights.of.the.
46b20 63 6f 6d 70 69 6c 61 74 69 6f 6e 27 73 20 75 73 65 72 73 0a 62 65 79 6f 6e 64 20 77 68 61 74 20 compilation's.users.beyond.what.
46b40 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 77 6f 72 6b 73 20 70 65 72 6d 69 74 2e 20 20 49 6e the.individual.works.permit...In
46b60 63 6c 75 73 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 69 6e 20 61 6e 20 clusion.of.a.covered.work.in.an.
46b80 61 67 67 72 65 67 61 74 65 20 64 6f 65 73 20 6e 6f 74 20 63 61 75 73 65 20 74 68 69 73 20 4c 69 aggregate.does.not.cause.this.Li
46ba0 63 65 6e 73 65 20 74 6f 20 61 70 70 6c 79 20 74 6f 20 74 68 65 20 6f 74 68 65 72 0a 70 61 72 74 cense.to.apply.to.the.other.part
46bc0 73 20 6f 66 20 74 68 65 20 61 67 67 72 65 67 61 74 65 2e 0a 0a 20 20 36 2e 20 43 6f 6e 76 65 79 s.of.the.aggregate.....6..Convey
46be0 69 6e 67 20 4e 6f 6e 2d 53 6f 75 72 63 65 20 46 6f 72 6d 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 ing.Non-Source.Forms.....You.may
46c00 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 6e 20 6f 62 6a 65 63 74 .convey.a.covered.work.in.object
46c20 20 63 6f 64 65 20 66 6f 72 6d 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 0a 6f 66 20 73 65 .code.form.under.the.terms.of.se
46c40 63 74 69 6f 6e 73 20 34 20 61 6e 64 20 35 2c 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f ctions.4.and.5,.provided.that.yo
46c60 75 20 61 6c 73 6f 20 63 6f 6e 76 65 79 20 74 68 65 0a 6d 61 63 68 69 6e 65 2d 72 65 61 64 61 62 u.also.convey.the.machine-readab
46c80 6c 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 75 6e 64 65 72 20 74 68 le.Corresponding.Source.under.th
46ca0 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 0a 69 6e 20 6f 6e 65 20 e.terms.of.this.License,.in.one.
46cc0 6f 66 20 74 68 65 73 65 20 77 61 79 73 3a 0a 0a 20 20 20 20 61 29 20 43 6f 6e 76 65 79 20 74 68 of.these.ways:......a).Convey.th
46ce0 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e 2c 20 6f 72 20 65 6d 62 6f 64 69 65 64 20 69 6e e.object.code.in,.or.embodied.in
46d00 2c 20 61 20 70 68 79 73 69 63 61 6c 20 70 72 6f 64 75 63 74 0a 20 20 20 20 28 69 6e 63 6c 75 64 ,.a.physical.product.....(includ
46d20 69 6e 67 20 61 20 70 68 79 73 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6d 65 64 69 ing.a.physical.distribution.medi
46d40 75 6d 29 2c 20 61 63 63 6f 6d 70 61 6e 69 65 64 20 62 79 20 74 68 65 0a 20 20 20 20 43 6f 72 72 um),.accompanied.by.the.....Corr
46d60 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 69 78 65 64 20 6f 6e 20 61 20 64 75 72 61 esponding.Source.fixed.on.a.dura
46d80 62 6c 65 20 70 68 79 73 69 63 61 6c 20 6d 65 64 69 75 6d 0a 20 20 20 20 63 75 73 74 6f 6d 61 72 ble.physical.medium.....customar
46da0 69 6c 79 20 75 73 65 64 20 66 6f 72 20 73 6f 66 74 77 61 72 65 20 69 6e 74 65 72 63 68 61 6e 67 ily.used.for.software.interchang
46dc0 65 2e 0a 0a 20 20 20 20 62 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 e.......b).Convey.the.object.cod
46de0 65 20 69 6e 2c 20 6f 72 20 65 6d 62 6f 64 69 65 64 20 69 6e 2c 20 61 20 70 68 79 73 69 63 61 6c e.in,.or.embodied.in,.a.physical
46e00 20 70 72 6f 64 75 63 74 0a 20 20 20 20 28 69 6e 63 6c 75 64 69 6e 67 20 61 20 70 68 79 73 69 63 .product.....(including.a.physic
46e20 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6d 65 64 69 75 6d 29 2c 20 61 63 63 6f 6d 70 61 al.distribution.medium),.accompa
46e40 6e 69 65 64 20 62 79 20 61 0a 20 20 20 20 77 72 69 74 74 65 6e 20 6f 66 66 65 72 2c 20 76 61 6c nied.by.a.....written.offer,.val
46e60 69 64 20 66 6f 72 20 61 74 20 6c 65 61 73 74 20 74 68 72 65 65 20 79 65 61 72 73 20 61 6e 64 20 id.for.at.least.three.years.and.
46e80 76 61 6c 69 64 20 66 6f 72 20 61 73 0a 20 20 20 20 6c 6f 6e 67 20 61 73 20 79 6f 75 20 6f 66 66 valid.for.as.....long.as.you.off
46ea0 65 72 20 73 70 61 72 65 20 70 61 72 74 73 20 6f 72 20 63 75 73 74 6f 6d 65 72 20 73 75 70 70 6f er.spare.parts.or.customer.suppo
46ec0 72 74 20 66 6f 72 20 74 68 61 74 20 70 72 6f 64 75 63 74 0a 20 20 20 20 6d 6f 64 65 6c 2c 20 74 rt.for.that.product.....model,.t
46ee0 6f 20 67 69 76 65 20 61 6e 79 6f 6e 65 20 77 68 6f 20 70 6f 73 73 65 73 73 65 73 20 74 68 65 20 o.give.anyone.who.possesses.the.
46f00 6f 62 6a 65 63 74 20 63 6f 64 65 20 65 69 74 68 65 72 20 28 31 29 20 61 0a 20 20 20 20 63 6f 70 object.code.either.(1).a.....cop
46f20 79 20 6f 66 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 6f y.of.the.Corresponding.Source.fo
46f40 72 20 61 6c 6c 20 74 68 65 20 73 6f 66 74 77 61 72 65 20 69 6e 20 74 68 65 0a 20 20 20 20 70 72 r.all.the.software.in.the.....pr
46f60 6f 64 75 63 74 20 74 68 61 74 20 69 73 20 63 6f 76 65 72 65 64 20 62 79 20 74 68 69 73 20 4c 69 oduct.that.is.covered.by.this.Li
46f80 63 65 6e 73 65 2c 20 6f 6e 20 61 20 64 75 72 61 62 6c 65 20 70 68 79 73 69 63 61 6c 0a 20 20 20 cense,.on.a.durable.physical....
46fa0 20 6d 65 64 69 75 6d 20 63 75 73 74 6f 6d 61 72 69 6c 79 20 75 73 65 64 20 66 6f 72 20 73 6f 66 .medium.customarily.used.for.sof
46fc0 74 77 61 72 65 20 69 6e 74 65 72 63 68 61 6e 67 65 2c 20 66 6f 72 20 61 20 70 72 69 63 65 20 6e tware.interchange,.for.a.price.n
46fe0 6f 0a 20 20 20 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 72 20 72 65 61 73 6f 6e 61 62 6c 65 20 o.....more.than.your.reasonable.
47000 63 6f 73 74 20 6f 66 20 70 68 79 73 69 63 61 6c 6c 79 20 70 65 72 66 6f 72 6d 69 6e 67 20 74 68 cost.of.physically.performing.th
47020 69 73 0a 20 20 20 20 63 6f 6e 76 65 79 69 6e 67 20 6f 66 20 73 6f 75 72 63 65 2c 20 6f 72 20 28 is.....conveying.of.source,.or.(
47040 32 29 20 61 63 63 65 73 73 20 74 6f 20 63 6f 70 79 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 2).access.to.copy.the.....Corres
47060 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 72 6f 6d 20 61 20 6e 65 74 77 6f 72 6b 20 73 65 ponding.Source.from.a.network.se
47080 72 76 65 72 20 61 74 20 6e 6f 20 63 68 61 72 67 65 2e 0a 0a 20 20 20 20 63 29 20 43 6f 6e 76 65 rver.at.no.charge.......c).Conve
470a0 79 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 y.individual.copies.of.the.objec
470c0 74 20 63 6f 64 65 20 77 69 74 68 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 0a 20 20 20 20 77 72 t.code.with.a.copy.of.the.....wr
470e0 69 74 74 65 6e 20 6f 66 66 65 72 20 74 6f 20 70 72 6f 76 69 64 65 20 74 68 65 20 43 6f 72 72 65 itten.offer.to.provide.the.Corre
47100 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e 20 20 54 68 69 73 0a 20 20 20 20 61 6c 74 65 72 sponding.Source...This.....alter
47120 6e 61 74 69 76 65 20 69 73 20 61 6c 6c 6f 77 65 64 20 6f 6e 6c 79 20 6f 63 63 61 73 69 6f 6e 61 native.is.allowed.only.occasiona
47140 6c 6c 79 20 61 6e 64 20 6e 6f 6e 63 6f 6d 6d 65 72 63 69 61 6c 6c 79 2c 20 61 6e 64 0a 20 20 20 lly.and.noncommercially,.and....
47160 20 6f 6e 6c 79 20 69 66 20 79 6f 75 20 72 65 63 65 69 76 65 64 20 74 68 65 20 6f 62 6a 65 63 74 .only.if.you.received.the.object
47180 20 63 6f 64 65 20 77 69 74 68 20 73 75 63 68 20 61 6e 20 6f 66 66 65 72 2c 20 69 6e 20 61 63 63 .code.with.such.an.offer,.in.acc
471a0 6f 72 64 0a 20 20 20 20 77 69 74 68 20 73 75 62 73 65 63 74 69 6f 6e 20 36 62 2e 0a 0a 20 20 20 ord.....with.subsection.6b......
471c0 20 64 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 62 79 20 6f 66 .d).Convey.the.object.code.by.of
471e0 66 65 72 69 6e 67 20 61 63 63 65 73 73 20 66 72 6f 6d 20 61 20 64 65 73 69 67 6e 61 74 65 64 0a fering.access.from.a.designated.
47200 20 20 20 20 70 6c 61 63 65 20 28 67 72 61 74 69 73 20 6f 72 20 66 6f 72 20 61 20 63 68 61 72 67 ....place.(gratis.or.for.a.charg
47220 65 29 2c 20 61 6e 64 20 6f 66 66 65 72 20 65 71 75 69 76 61 6c 65 6e 74 20 61 63 63 65 73 73 20 e),.and.offer.equivalent.access.
47240 74 6f 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 to.the.....Corresponding.Source.
47260 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 72 6f 75 67 68 20 74 68 65 20 73 61 6d 65 in.the.same.way.through.the.same
47280 20 70 6c 61 63 65 20 61 74 20 6e 6f 0a 20 20 20 20 66 75 72 74 68 65 72 20 63 68 61 72 67 65 2e .place.at.no.....further.charge.
472a0 20 20 59 6f 75 20 6e 65 65 64 20 6e 6f 74 20 72 65 71 75 69 72 65 20 72 65 63 69 70 69 65 6e 74 ..You.need.not.require.recipient
472c0 73 20 74 6f 20 63 6f 70 79 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 s.to.copy.the.....Corresponding.
472e0 53 6f 75 72 63 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 Source.along.with.the.object.cod
47300 65 2e 20 20 49 66 20 74 68 65 20 70 6c 61 63 65 20 74 6f 0a 20 20 20 20 63 6f 70 79 20 74 68 65 e...If.the.place.to.....copy.the
47320 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 73 20 61 20 6e 65 74 77 6f 72 6b 20 73 65 72 76 65 72 .object.code.is.a.network.server
47340 2c 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 0a 20 20 20 20 6d ,.the.Corresponding.Source.....m
47360 61 79 20 62 65 20 6f 6e 20 61 20 64 69 66 66 65 72 65 6e 74 20 73 65 72 76 65 72 20 28 6f 70 65 ay.be.on.a.different.server.(ope
47380 72 61 74 65 64 20 62 79 20 79 6f 75 20 6f 72 20 61 20 74 68 69 72 64 20 70 61 72 74 79 29 0a 20 rated.by.you.or.a.third.party)..
473a0 20 20 20 74 68 61 74 20 73 75 70 70 6f 72 74 73 20 65 71 75 69 76 61 6c 65 6e 74 20 63 6f 70 79 ...that.supports.equivalent.copy
473c0 69 6e 67 20 66 61 63 69 6c 69 74 69 65 73 2c 20 70 72 6f 76 69 64 65 64 20 79 6f 75 20 6d 61 69 ing.facilities,.provided.you.mai
473e0 6e 74 61 69 6e 0a 20 20 20 20 63 6c 65 61 72 20 64 69 72 65 63 74 69 6f 6e 73 20 6e 65 78 74 20 ntain.....clear.directions.next.
47400 74 6f 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 73 61 79 69 6e 67 20 77 68 65 72 65 20 to.the.object.code.saying.where.
47420 74 6f 20 66 69 6e 64 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f to.find.the.....Corresponding.So
47440 75 72 63 65 2e 20 20 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 68 61 74 20 73 65 72 76 65 72 urce...Regardless.of.what.server
47460 20 68 6f 73 74 73 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 .hosts.the.....Corresponding.Sou
47480 72 63 65 2c 20 79 6f 75 20 72 65 6d 61 69 6e 20 6f 62 6c 69 67 61 74 65 64 20 74 6f 20 65 6e 73 rce,.you.remain.obligated.to.ens
474a0 75 72 65 20 74 68 61 74 20 69 74 20 69 73 0a 20 20 20 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 ure.that.it.is.....available.for
474c0 20 61 73 20 6c 6f 6e 67 20 61 73 20 6e 65 65 64 65 64 20 74 6f 20 73 61 74 69 73 66 79 20 74 68 .as.long.as.needed.to.satisfy.th
474e0 65 73 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 2e 0a 0a 20 20 20 20 65 29 20 43 6f 6e 76 65 79 ese.requirements.......e).Convey
47500 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 75 73 69 6e 67 20 70 65 65 72 2d 74 6f 2d 70 .the.object.code.using.peer-to-p
47520 65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f 6e 2c 20 70 72 6f 76 69 64 65 64 0a 20 20 20 20 79 eer.transmission,.provided.....y
47540 6f 75 20 69 6e 66 6f 72 6d 20 6f 74 68 65 72 20 70 65 65 72 73 20 77 68 65 72 65 20 74 68 65 20 ou.inform.other.peers.where.the.
47560 6f 62 6a 65 63 74 20 63 6f 64 65 20 61 6e 64 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 20 20 object.code.and.Corresponding...
47580 20 20 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 61 72 65 20 62 65 69 6e 67 20 6f ..Source.of.the.work.are.being.o
475a0 66 66 65 72 65 64 20 74 6f 20 74 68 65 20 67 65 6e 65 72 61 6c 20 70 75 62 6c 69 63 20 61 74 20 ffered.to.the.general.public.at.
475c0 6e 6f 0a 20 20 20 20 63 68 61 72 67 65 20 75 6e 64 65 72 20 73 75 62 73 65 63 74 69 6f 6e 20 36 no.....charge.under.subsection.6
475e0 64 2e 0a 0a 20 20 41 20 73 65 70 61 72 61 62 6c 65 20 70 6f 72 74 69 6f 6e 20 6f 66 20 74 68 65 d.....A.separable.portion.of.the
47600 20 6f 62 6a 65 63 74 20 63 6f 64 65 2c 20 77 68 6f 73 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 .object.code,.whose.source.code.
47620 69 73 20 65 78 63 6c 75 64 65 64 0a 66 72 6f 6d 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 is.excluded.from.the.Correspondi
47640 6e 67 20 53 6f 75 72 63 65 20 61 73 20 61 20 53 79 73 74 65 6d 20 4c 69 62 72 61 72 79 2c 20 6e ng.Source.as.a.System.Library,.n
47660 65 65 64 20 6e 6f 74 20 62 65 0a 69 6e 63 6c 75 64 65 64 20 69 6e 20 63 6f 6e 76 65 79 69 6e 67 eed.not.be.included.in.conveying
47680 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 6f 72 6b 2e 0a 0a 20 20 41 20 22 55 73 65 .the.object.code.work.....A."Use
476a0 72 20 50 72 6f 64 75 63 74 22 20 69 73 20 65 69 74 68 65 72 20 28 31 29 20 61 20 22 63 6f 6e 73 r.Product".is.either.(1).a."cons
476c0 75 6d 65 72 20 70 72 6f 64 75 63 74 22 2c 20 77 68 69 63 68 20 6d 65 61 6e 73 20 61 6e 79 0a 74 umer.product",.which.means.any.t
476e0 61 6e 67 69 62 6c 65 20 70 65 72 73 6f 6e 61 6c 20 70 72 6f 70 65 72 74 79 20 77 68 69 63 68 20 angible.personal.property.which.
47700 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 66 6f 72 20 70 65 72 73 6f 6e 61 6c 2c 20 66 is.normally.used.for.personal,.f
47720 61 6d 69 6c 79 2c 0a 6f 72 20 68 6f 75 73 65 68 6f 6c 64 20 70 75 72 70 6f 73 65 73 2c 20 6f 72 amily,.or.household.purposes,.or
47740 20 28 32 29 20 61 6e 79 74 68 69 6e 67 20 64 65 73 69 67 6e 65 64 20 6f 72 20 73 6f 6c 64 20 66 .(2).anything.designed.or.sold.f
47760 6f 72 20 69 6e 63 6f 72 70 6f 72 61 74 69 6f 6e 0a 69 6e 74 6f 20 61 20 64 77 65 6c 6c 69 6e 67 or.incorporation.into.a.dwelling
47780 2e 20 20 49 6e 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 77 68 65 74 68 65 72 20 61 20 70 72 6f 64 ...In.determining.whether.a.prod
477a0 75 63 74 20 69 73 20 61 20 63 6f 6e 73 75 6d 65 72 20 70 72 6f 64 75 63 74 2c 0a 64 6f 75 62 74 uct.is.a.consumer.product,.doubt
477c0 66 75 6c 20 63 61 73 65 73 20 73 68 61 6c 6c 20 62 65 20 72 65 73 6f 6c 76 65 64 20 69 6e 20 66 ful.cases.shall.be.resolved.in.f
477e0 61 76 6f 72 20 6f 66 20 63 6f 76 65 72 61 67 65 2e 20 20 46 6f 72 20 61 20 70 61 72 74 69 63 75 avor.of.coverage...For.a.particu
47800 6c 61 72 0a 70 72 6f 64 75 63 74 20 72 65 63 65 69 76 65 64 20 62 79 20 61 20 70 61 72 74 69 63 lar.product.received.by.a.partic
47820 75 6c 61 72 20 75 73 65 72 2c 20 22 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 22 20 72 65 66 65 72 ular.user,."normally.used".refer
47840 73 20 74 6f 20 61 0a 74 79 70 69 63 61 6c 20 6f 72 20 63 6f 6d 6d 6f 6e 20 75 73 65 20 6f 66 20 s.to.a.typical.or.common.use.of.
47860 74 68 61 74 20 63 6c 61 73 73 20 6f 66 20 70 72 6f 64 75 63 74 2c 20 72 65 67 61 72 64 6c 65 73 that.class.of.product,.regardles
47880 73 20 6f 66 20 74 68 65 20 73 74 61 74 75 73 0a 6f 66 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 s.of.the.status.of.the.particula
478a0 72 20 75 73 65 72 20 6f 72 20 6f 66 20 74 68 65 20 77 61 79 20 69 6e 20 77 68 69 63 68 20 74 68 r.user.or.of.the.way.in.which.th
478c0 65 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65 72 0a 61 63 74 75 61 6c 6c 79 20 75 73 65 73 2c e.particular.user.actually.uses,
478e0 20 6f 72 20 65 78 70 65 63 74 73 20 6f 72 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 75 73 .or.expects.or.is.expected.to.us
47900 65 2c 20 74 68 65 20 70 72 6f 64 75 63 74 2e 20 20 41 20 70 72 6f 64 75 63 74 0a 69 73 20 61 20 e,.the.product...A.product.is.a.
47920 63 6f 6e 73 75 6d 65 72 20 70 72 6f 64 75 63 74 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 77 consumer.product.regardless.of.w
47940 68 65 74 68 65 72 20 74 68 65 20 70 72 6f 64 75 63 74 20 68 61 73 20 73 75 62 73 74 61 6e 74 69 hether.the.product.has.substanti
47960 61 6c 0a 63 6f 6d 6d 65 72 63 69 61 6c 2c 20 69 6e 64 75 73 74 72 69 61 6c 20 6f 72 20 6e 6f 6e al.commercial,.industrial.or.non
47980 2d 63 6f 6e 73 75 6d 65 72 20 75 73 65 73 2c 20 75 6e 6c 65 73 73 20 73 75 63 68 20 75 73 65 73 -consumer.uses,.unless.such.uses
479a0 20 72 65 70 72 65 73 65 6e 74 0a 74 68 65 20 6f 6e 6c 79 20 73 69 67 6e 69 66 69 63 61 6e 74 20 .represent.the.only.significant.
479c0 6d 6f 64 65 20 6f 66 20 75 73 65 20 6f 66 20 74 68 65 20 70 72 6f 64 75 63 74 2e 0a 0a 20 20 22 mode.of.use.of.the.product....."
479e0 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 22 20 66 6f 72 20 61 20 Installation.Information".for.a.
47a00 55 73 65 72 20 50 72 6f 64 75 63 74 20 6d 65 61 6e 73 20 61 6e 79 20 6d 65 74 68 6f 64 73 2c 0a User.Product.means.any.methods,.
47a20 70 72 6f 63 65 64 75 72 65 73 2c 20 61 75 74 68 6f 72 69 7a 61 74 69 6f 6e 20 6b 65 79 73 2c 20 procedures,.authorization.keys,.
47a40 6f 72 20 6f 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 72 65 71 75 69 72 65 64 20 74 6f or.other.information.required.to
47a60 20 69 6e 73 74 61 6c 6c 0a 61 6e 64 20 65 78 65 63 75 74 65 20 6d 6f 64 69 66 69 65 64 20 76 65 .install.and.execute.modified.ve
47a80 72 73 69 6f 6e 73 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 6e 20 74 68 61 74 rsions.of.a.covered.work.in.that
47aa0 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 66 72 6f 6d 0a 61 20 6d 6f 64 69 66 69 65 64 20 76 65 .User.Product.from.a.modified.ve
47ac0 72 73 69 6f 6e 20 6f 66 20 69 74 73 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 rsion.of.its.Corresponding.Sourc
47ae0 65 2e 20 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6d 75 73 74 0a 73 75 66 66 69 63 65 e...The.information.must.suffice
47b00 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 63 6f 6e 74 69 6e 75 65 64 20 66 75 .to.ensure.that.the.continued.fu
47b20 6e 63 74 69 6f 6e 69 6e 67 20 6f 66 20 74 68 65 20 6d 6f 64 69 66 69 65 64 20 6f 62 6a 65 63 74 nctioning.of.the.modified.object
47b40 0a 63 6f 64 65 20 69 73 20 69 6e 20 6e 6f 20 63 61 73 65 20 70 72 65 76 65 6e 74 65 64 20 6f 72 .code.is.in.no.case.prevented.or
47b60 20 69 6e 74 65 72 66 65 72 65 64 20 77 69 74 68 20 73 6f 6c 65 6c 79 20 62 65 63 61 75 73 65 0a .interfered.with.solely.because.
47b80 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 68 61 73 20 62 65 65 6e 20 6d 61 64 65 2e 0a 0a 20 20 49 modification.has.been.made.....I
47ba0 66 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 6f 72 6b f.you.convey.an.object.code.work
47bc0 20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 69 6e 2c 20 6f 72 20 77 69 74 68 2c .under.this.section.in,.or.with,
47be0 20 6f 72 0a 73 70 65 63 69 66 69 63 61 6c 6c 79 20 66 6f 72 20 75 73 65 20 69 6e 2c 20 61 20 55 .or.specifically.for.use.in,.a.U
47c00 73 65 72 20 50 72 6f 64 75 63 74 2c 20 61 6e 64 20 74 68 65 20 63 6f 6e 76 65 79 69 6e 67 20 6f ser.Product,.and.the.conveying.o
47c20 63 63 75 72 73 20 61 73 0a 70 61 72 74 20 6f 66 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 ccurs.as.part.of.a.transaction.i
47c40 6e 20 77 68 69 63 68 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 70 6f 73 73 65 73 73 69 6f 6e 20 n.which.the.right.of.possession.
47c60 61 6e 64 20 75 73 65 20 6f 66 20 74 68 65 0a 55 73 65 72 20 50 72 6f 64 75 63 74 20 69 73 20 74 and.use.of.the.User.Product.is.t
47c80 72 61 6e 73 66 65 72 72 65 64 20 74 6f 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 20 69 6e 20 70 ransferred.to.the.recipient.in.p
47ca0 65 72 70 65 74 75 69 74 79 20 6f 72 20 66 6f 72 20 61 0a 66 69 78 65 64 20 74 65 72 6d 20 28 72 erpetuity.or.for.a.fixed.term.(r
47cc0 65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f 77 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e egardless.of.how.the.transaction
47ce0 20 69 73 20 63 68 61 72 61 63 74 65 72 69 7a 65 64 29 2c 20 74 68 65 0a 43 6f 72 72 65 73 70 6f .is.characterized),.the.Correspo
47d00 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 63 6f 6e 76 65 79 65 64 20 75 6e 64 65 72 20 74 68 69 73 nding.Source.conveyed.under.this
47d20 20 73 65 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 61 63 63 6f 6d 70 61 6e 69 65 64 0a 62 79 20 .section.must.be.accompanied.by.
47d40 74 68 65 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 20 42 the.Installation.Information...B
47d60 75 74 20 74 68 69 73 20 72 65 71 75 69 72 65 6d 65 6e 74 20 64 6f 65 73 20 6e 6f 74 20 61 70 70 ut.this.requirement.does.not.app
47d80 6c 79 0a 69 66 20 6e 65 69 74 68 65 72 20 79 6f 75 20 6e 6f 72 20 61 6e 79 20 74 68 69 72 64 20 ly.if.neither.you.nor.any.third.
47da0 70 61 72 74 79 20 72 65 74 61 69 6e 73 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 69 6e 73 party.retains.the.ability.to.ins
47dc0 74 61 6c 6c 0a 6d 6f 64 69 66 69 65 64 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 6f 6e 20 74 68 65 tall.modified.object.code.on.the
47de0 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 .User.Product.(for.example,.the.
47e00 77 6f 72 6b 20 68 61 73 0a 62 65 65 6e 20 69 6e 73 74 61 6c 6c 65 64 20 69 6e 20 52 4f 4d 29 2e work.has.been.installed.in.ROM).
47e20 0a 0a 20 20 54 68 65 20 72 65 71 75 69 72 65 6d 65 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 49 ....The.requirement.to.provide.I
47e40 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 nstallation.Information.does.not
47e60 20 69 6e 63 6c 75 64 65 20 61 0a 72 65 71 75 69 72 65 6d 65 6e 74 20 74 6f 20 63 6f 6e 74 69 6e .include.a.requirement.to.contin
47e80 75 65 20 74 6f 20 70 72 6f 76 69 64 65 20 73 75 70 70 6f 72 74 20 73 65 72 76 69 63 65 2c 20 77 ue.to.provide.support.service,.w
47ea0 61 72 72 61 6e 74 79 2c 20 6f 72 20 75 70 64 61 74 65 73 0a 66 6f 72 20 61 20 77 6f 72 6b 20 74 arranty,.or.updates.for.a.work.t
47ec0 68 61 74 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 20 6f 72 20 69 6e 73 74 61 6c 6c hat.has.been.modified.or.install
47ee0 65 64 20 62 79 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 2c 20 6f 72 20 66 6f 72 0a 74 68 65 20 ed.by.the.recipient,.or.for.the.
47f00 55 73 65 72 20 50 72 6f 64 75 63 74 20 69 6e 20 77 68 69 63 68 20 69 74 20 68 61 73 20 62 65 65 User.Product.in.which.it.has.bee
47f20 6e 20 6d 6f 64 69 66 69 65 64 20 6f 72 20 69 6e 73 74 61 6c 6c 65 64 2e 20 20 41 63 63 65 73 73 n.modified.or.installed...Access
47f40 20 74 6f 20 61 0a 6e 65 74 77 6f 72 6b 20 6d 61 79 20 62 65 20 64 65 6e 69 65 64 20 77 68 65 6e .to.a.network.may.be.denied.when
47f60 20 74 68 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 69 74 73 65 6c 66 20 6d 61 74 65 72 69 61 .the.modification.itself.materia
47f80 6c 6c 79 20 61 6e 64 0a 61 64 76 65 72 73 65 6c 79 20 61 66 66 65 63 74 73 20 74 68 65 20 6f 70 lly.and.adversely.affects.the.op
47fa0 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 65 74 77 6f 72 6b 20 6f 72 20 76 69 6f 6c 61 74 eration.of.the.network.or.violat
47fc0 65 73 20 74 68 65 20 72 75 6c 65 73 20 61 6e 64 0a 70 72 6f 74 6f 63 6f 6c 73 20 66 6f 72 20 63 es.the.rules.and.protocols.for.c
47fe0 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 20 61 63 72 6f 73 73 20 74 68 65 20 6e 65 74 77 6f 72 6b 2e ommunication.across.the.network.
48000 0a 0a 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 63 6f 6e 76 65 79 65 ....Corresponding.Source.conveye
48020 64 2c 20 61 6e 64 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 d,.and.Installation.Information.
48040 70 72 6f 76 69 64 65 64 2c 0a 69 6e 20 61 63 63 6f 72 64 20 77 69 74 68 20 74 68 69 73 20 73 65 provided,.in.accord.with.this.se
48060 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 69 6e 20 61 20 66 6f 72 6d 61 74 20 74 68 61 74 20 69 ction.must.be.in.a.format.that.i
48080 73 20 70 75 62 6c 69 63 6c 79 0a 64 6f 63 75 6d 65 6e 74 65 64 20 28 61 6e 64 20 77 69 74 68 20 s.publicly.documented.(and.with.
480a0 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 an.implementation.available.to.t
480c0 68 65 20 70 75 62 6c 69 63 20 69 6e 0a 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 29 2c 20 he.public.in.source.code.form),.
480e0 61 6e 64 20 6d 75 73 74 20 72 65 71 75 69 72 65 20 6e 6f 20 73 70 65 63 69 61 6c 20 70 61 73 73 and.must.require.no.special.pass
48100 77 6f 72 64 20 6f 72 20 6b 65 79 20 66 6f 72 0a 75 6e 70 61 63 6b 69 6e 67 2c 20 72 65 61 64 69 word.or.key.for.unpacking,.readi
48120 6e 67 20 6f 72 20 63 6f 70 79 69 6e 67 2e 0a 0a 20 20 37 2e 20 41 64 64 69 74 69 6f 6e 61 6c 20 ng.or.copying.....7..Additional.
48140 54 65 72 6d 73 2e 0a 0a 20 20 22 41 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e Terms....."Additional.permission
48160 73 22 20 61 72 65 20 74 65 72 6d 73 20 74 68 61 74 20 73 75 70 70 6c 65 6d 65 6e 74 20 74 68 65 s".are.terms.that.supplement.the
48180 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 20 62 79 20 6d 61 6b 69 6e 67 .terms.of.this.License.by.making
481a0 20 65 78 63 65 70 74 69 6f 6e 73 20 66 72 6f 6d 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20 .exceptions.from.one.or.more.of.
481c0 69 74 73 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a 41 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 its.conditions..Additional.permi
481e0 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 61 70 70 6c 69 63 61 62 6c 65 20 74 6f 20 74 68 ssions.that.are.applicable.to.th
48200 65 20 65 6e 74 69 72 65 20 50 72 6f 67 72 61 6d 20 73 68 61 6c 6c 0a 62 65 20 74 72 65 61 74 65 e.entire.Program.shall.be.treate
48220 64 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65 20 69 6e 63 6c 75 64 65 64 20 69 d.as.though.they.were.included.i
48240 6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 6f 20 74 68 65 20 65 78 74 65 6e 74 0a 74 68 n.this.License,.to.the.extent.th
48260 61 74 20 74 68 65 79 20 61 72 65 20 76 61 6c 69 64 20 75 6e 64 65 72 20 61 70 70 6c 69 63 61 62 at.they.are.valid.under.applicab
48280 6c 65 20 6c 61 77 2e 20 20 49 66 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f le.law...If.additional.permissio
482a0 6e 73 0a 61 70 70 6c 79 20 6f 6e 6c 79 20 74 6f 20 70 61 72 74 20 6f 66 20 74 68 65 20 50 72 6f ns.apply.only.to.part.of.the.Pro
482c0 67 72 61 6d 2c 20 74 68 61 74 20 70 61 72 74 20 6d 61 79 20 62 65 20 75 73 65 64 20 73 65 70 61 gram,.that.part.may.be.used.sepa
482e0 72 61 74 65 6c 79 0a 75 6e 64 65 72 20 74 68 6f 73 65 20 70 65 72 6d 69 73 73 69 6f 6e 73 2c 20 rately.under.those.permissions,.
48300 62 75 74 20 74 68 65 20 65 6e 74 69 72 65 20 50 72 6f 67 72 61 6d 20 72 65 6d 61 69 6e 73 20 67 but.the.entire.Program.remains.g
48320 6f 76 65 72 6e 65 64 20 62 79 0a 74 68 69 73 20 4c 69 63 65 6e 73 65 20 77 69 74 68 6f 75 74 20 overned.by.this.License.without.
48340 72 65 67 61 72 64 20 74 6f 20 74 68 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 regard.to.the.additional.permiss
48360 69 6f 6e 73 2e 0a 0a 20 20 57 68 65 6e 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 20 63 6f 70 79 20 ions.....When.you.convey.a.copy.
48380 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 79 6f 75 20 6d 61 79 20 61 74 20 79 6f of.a.covered.work,.you.may.at.yo
483a0 75 72 20 6f 70 74 69 6f 6e 0a 72 65 6d 6f 76 65 20 61 6e 79 20 61 64 64 69 74 69 6f 6e 61 6c 20 ur.option.remove.any.additional.
483c0 70 65 72 6d 69 73 73 69 6f 6e 73 20 66 72 6f 6d 20 74 68 61 74 20 63 6f 70 79 2c 20 6f 72 20 66 permissions.from.that.copy,.or.f
483e0 72 6f 6d 20 61 6e 79 20 70 61 72 74 20 6f 66 0a 69 74 2e 20 20 28 41 64 64 69 74 69 6f 6e 61 6c rom.any.part.of.it...(Additional
48400 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 6d 61 79 20 62 65 20 77 72 69 74 74 65 6e 20 74 6f 20 72 .permissions.may.be.written.to.r
48420 65 71 75 69 72 65 20 74 68 65 69 72 20 6f 77 6e 0a 72 65 6d 6f 76 61 6c 20 69 6e 20 63 65 72 74 equire.their.own.removal.in.cert
48440 61 69 6e 20 63 61 73 65 73 20 77 68 65 6e 20 79 6f 75 20 6d 6f 64 69 66 79 20 74 68 65 20 77 6f ain.cases.when.you.modify.the.wo
48460 72 6b 2e 29 20 20 59 6f 75 20 6d 61 79 20 70 6c 61 63 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 70 rk.)..You.may.place.additional.p
48480 65 72 6d 69 73 73 69 6f 6e 73 20 6f 6e 20 6d 61 74 65 72 69 61 6c 2c 20 61 64 64 65 64 20 62 79 ermissions.on.material,.added.by
484a0 20 79 6f 75 20 74 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 0a 66 6f 72 20 77 68 69 63 .you.to.a.covered.work,.for.whic
484c0 68 20 79 6f 75 20 68 61 76 65 20 6f 72 20 63 61 6e 20 67 69 76 65 20 61 70 70 72 6f 70 72 69 61 h.you.have.or.can.give.appropria
484e0 74 65 20 63 6f 70 79 72 69 67 68 74 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a 0a 20 20 4e 6f 74 77 te.copyright.permission.....Notw
48500 69 74 68 73 74 61 6e 64 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 70 72 6f 76 69 73 69 6f 6e 20 ithstanding.any.other.provision.
48520 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 66 6f 72 20 6d 61 74 65 72 69 61 6c 20 79 6f of.this.License,.for.material.yo
48540 75 0a 61 64 64 20 74 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 79 6f 75 20 6d 61 79 u.add.to.a.covered.work,.you.may
48560 20 28 69 66 20 61 75 74 68 6f 72 69 7a 65 64 20 62 79 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 .(if.authorized.by.the.copyright
48580 20 68 6f 6c 64 65 72 73 20 6f 66 0a 74 68 61 74 20 6d 61 74 65 72 69 61 6c 29 20 73 75 70 70 6c .holders.of.that.material).suppl
485a0 65 6d 65 6e 74 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 ement.the.terms.of.this.License.
485c0 77 69 74 68 20 74 65 72 6d 73 3a 0a 0a 20 20 20 20 61 29 20 44 69 73 63 6c 61 69 6d 69 6e 67 20 with.terms:......a).Disclaiming.
485e0 77 61 72 72 61 6e 74 79 20 6f 72 20 6c 69 6d 69 74 69 6e 67 20 6c 69 61 62 69 6c 69 74 79 20 64 warranty.or.limiting.liability.d
48600 69 66 66 65 72 65 6e 74 6c 79 20 66 72 6f 6d 20 74 68 65 0a 20 20 20 20 74 65 72 6d 73 20 6f 66 ifferently.from.the.....terms.of
48620 20 73 65 63 74 69 6f 6e 73 20 31 35 20 61 6e 64 20 31 36 20 6f 66 20 74 68 69 73 20 4c 69 63 65 .sections.15.and.16.of.this.Lice
48640 6e 73 65 3b 20 6f 72 0a 0a 20 20 20 20 62 29 20 52 65 71 75 69 72 69 6e 67 20 70 72 65 73 65 72 nse;.or......b).Requiring.preser
48660 76 61 74 69 6f 6e 20 6f 66 20 73 70 65 63 69 66 69 65 64 20 72 65 61 73 6f 6e 61 62 6c 65 20 6c vation.of.specified.reasonable.l
48680 65 67 61 6c 20 6e 6f 74 69 63 65 73 20 6f 72 0a 20 20 20 20 61 75 74 68 6f 72 20 61 74 74 72 69 egal.notices.or.....author.attri
486a0 62 75 74 69 6f 6e 73 20 69 6e 20 74 68 61 74 20 6d 61 74 65 72 69 61 6c 20 6f 72 20 69 6e 20 74 butions.in.that.material.or.in.t
486c0 68 65 20 41 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c 0a 20 20 20 20 4e 6f 74 69 63 65 73 he.Appropriate.Legal.....Notices
486e0 20 64 69 73 70 6c 61 79 65 64 20 62 79 20 77 6f 72 6b 73 20 63 6f 6e 74 61 69 6e 69 6e 67 20 69 .displayed.by.works.containing.i
48700 74 3b 20 6f 72 0a 0a 20 20 20 20 63 29 20 50 72 6f 68 69 62 69 74 69 6e 67 20 6d 69 73 72 65 70 t;.or......c).Prohibiting.misrep
48720 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6f 72 69 67 69 6e 20 6f 66 20 74 68 61 resentation.of.the.origin.of.tha
48740 74 20 6d 61 74 65 72 69 61 6c 2c 20 6f 72 0a 20 20 20 20 72 65 71 75 69 72 69 6e 67 20 74 68 61 t.material,.or.....requiring.tha
48760 74 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 73 75 63 68 20 6d 61 74 65 t.modified.versions.of.such.mate
48780 72 69 61 6c 20 62 65 20 6d 61 72 6b 65 64 20 69 6e 0a 20 20 20 20 72 65 61 73 6f 6e 61 62 6c 65 rial.be.marked.in.....reasonable
487a0 20 77 61 79 73 20 61 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 .ways.as.different.from.the.orig
487c0 69 6e 61 6c 20 76 65 72 73 69 6f 6e 3b 20 6f 72 0a 0a 20 20 20 20 64 29 20 4c 69 6d 69 74 69 6e inal.version;.or......d).Limitin
487e0 67 20 74 68 65 20 75 73 65 20 66 6f 72 20 70 75 62 6c 69 63 69 74 79 20 70 75 72 70 6f 73 65 73 g.the.use.for.publicity.purposes
48800 20 6f 66 20 6e 61 6d 65 73 20 6f 66 20 6c 69 63 65 6e 73 6f 72 73 20 6f 72 0a 20 20 20 20 61 75 .of.names.of.licensors.or.....au
48820 74 68 6f 72 73 20 6f 66 20 74 68 65 20 6d 61 74 65 72 69 61 6c 3b 20 6f 72 0a 0a 20 20 20 20 65 thors.of.the.material;.or......e
48840 29 20 44 65 63 6c 69 6e 69 6e 67 20 74 6f 20 67 72 61 6e 74 20 72 69 67 68 74 73 20 75 6e 64 65 ).Declining.to.grant.rights.unde
48860 72 20 74 72 61 64 65 6d 61 72 6b 20 6c 61 77 20 66 6f 72 20 75 73 65 20 6f 66 20 73 6f 6d 65 0a r.trademark.law.for.use.of.some.
48880 20 20 20 20 74 72 61 64 65 20 6e 61 6d 65 73 2c 20 74 72 61 64 65 6d 61 72 6b 73 2c 20 6f 72 20 ....trade.names,.trademarks,.or.
488a0 73 65 72 76 69 63 65 20 6d 61 72 6b 73 3b 20 6f 72 0a 0a 20 20 20 20 66 29 20 52 65 71 75 69 72 service.marks;.or......f).Requir
488c0 69 6e 67 20 69 6e 64 65 6d 6e 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 6c 69 63 65 6e 73 6f 72 73 ing.indemnification.of.licensors
488e0 20 61 6e 64 20 61 75 74 68 6f 72 73 20 6f 66 20 74 68 61 74 0a 20 20 20 20 6d 61 74 65 72 69 61 .and.authors.of.that.....materia
48900 6c 20 62 79 20 61 6e 79 6f 6e 65 20 77 68 6f 20 63 6f 6e 76 65 79 73 20 74 68 65 20 6d 61 74 65 l.by.anyone.who.conveys.the.mate
48920 72 69 61 6c 20 28 6f 72 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 20 20 rial.(or.modified.versions.of...
48940 20 20 69 74 29 20 77 69 74 68 20 63 6f 6e 74 72 61 63 74 75 61 6c 20 61 73 73 75 6d 70 74 69 6f ..it).with.contractual.assumptio
48960 6e 73 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20 74 6f 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 ns.of.liability.to.the.recipient
48980 2c 20 66 6f 72 0a 20 20 20 20 61 6e 79 20 6c 69 61 62 69 6c 69 74 79 20 74 68 61 74 20 74 68 65 ,.for.....any.liability.that.the
489a0 73 65 20 63 6f 6e 74 72 61 63 74 75 61 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 64 69 72 65 63 se.contractual.assumptions.direc
489c0 74 6c 79 20 69 6d 70 6f 73 65 20 6f 6e 0a 20 20 20 20 74 68 6f 73 65 20 6c 69 63 65 6e 73 6f 72 tly.impose.on.....those.licensor
489e0 73 20 61 6e 64 20 61 75 74 68 6f 72 73 2e 0a 0a 20 20 41 6c 6c 20 6f 74 68 65 72 20 6e 6f 6e 2d s.and.authors.....All.other.non-
48a00 70 65 72 6d 69 73 73 69 76 65 20 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 20 61 72 65 20 permissive.additional.terms.are.
48a20 63 6f 6e 73 69 64 65 72 65 64 20 22 66 75 72 74 68 65 72 0a 72 65 73 74 72 69 63 74 69 6f 6e 73 considered."further.restrictions
48a40 22 20 77 69 74 68 69 6e 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 6f 66 20 73 65 63 74 69 6f 6e 20 ".within.the.meaning.of.section.
48a60 31 30 2e 20 20 49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 61 73 20 79 6f 75 0a 72 65 63 65 69 10...If.the.Program.as.you.recei
48a80 76 65 64 20 69 74 2c 20 6f 72 20 61 6e 79 20 70 61 72 74 20 6f 66 20 69 74 2c 20 63 6f 6e 74 61 ved.it,.or.any.part.of.it,.conta
48aa0 69 6e 73 20 61 20 6e 6f 74 69 63 65 20 73 74 61 74 69 6e 67 20 74 68 61 74 20 69 74 20 69 73 0a ins.a.notice.stating.that.it.is.
48ac0 67 6f 76 65 72 6e 65 64 20 62 79 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 6c 6f 6e 67 20 77 governed.by.this.License.along.w
48ae0 69 74 68 20 61 20 74 65 72 6d 20 74 68 61 74 20 69 73 20 61 20 66 75 72 74 68 65 72 0a 72 65 73 ith.a.term.that.is.a.further.res
48b00 74 72 69 63 74 69 6f 6e 2c 20 79 6f 75 20 6d 61 79 20 72 65 6d 6f 76 65 20 74 68 61 74 20 74 65 triction,.you.may.remove.that.te
48b20 72 6d 2e 20 20 49 66 20 61 20 6c 69 63 65 6e 73 65 20 64 6f 63 75 6d 65 6e 74 20 63 6f 6e 74 61 rm...If.a.license.document.conta
48b40 69 6e 73 0a 61 20 66 75 72 74 68 65 72 20 72 65 73 74 72 69 63 74 69 6f 6e 20 62 75 74 20 70 65 ins.a.further.restriction.but.pe
48b60 72 6d 69 74 73 20 72 65 6c 69 63 65 6e 73 69 6e 67 20 6f 72 20 63 6f 6e 76 65 79 69 6e 67 20 75 rmits.relicensing.or.conveying.u
48b80 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 2c 20 79 6f 75 20 6d 61 79 20 61 64 64 20 74 nder.this.License,.you.may.add.t
48ba0 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 6d 61 74 65 72 69 61 6c 20 67 6f 76 65 72 6e o.a.covered.work.material.govern
48bc0 65 64 20 62 79 20 74 68 65 20 74 65 72 6d 73 0a 6f 66 20 74 68 61 74 20 6c 69 63 65 6e 73 65 20 ed.by.the.terms.of.that.license.
48be0 64 6f 63 75 6d 65 6e 74 2c 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 74 68 65 20 66 75 72 74 document,.provided.that.the.furt
48c00 68 65 72 20 72 65 73 74 72 69 63 74 69 6f 6e 20 64 6f 65 73 0a 6e 6f 74 20 73 75 72 76 69 76 65 her.restriction.does.not.survive
48c20 20 73 75 63 68 20 72 65 6c 69 63 65 6e 73 69 6e 67 20 6f 72 20 63 6f 6e 76 65 79 69 6e 67 2e 0a .such.relicensing.or.conveying..
48c40 0a 20 20 49 66 20 79 6f 75 20 61 64 64 20 74 65 72 6d 73 20 74 6f 20 61 20 63 6f 76 65 72 65 64 ...If.you.add.terms.to.a.covered
48c60 20 77 6f 72 6b 20 69 6e 20 61 63 63 6f 72 64 20 77 69 74 68 20 74 68 69 73 20 73 65 63 74 69 6f .work.in.accord.with.this.sectio
48c80 6e 2c 20 79 6f 75 0a 6d 75 73 74 20 70 6c 61 63 65 2c 20 69 6e 20 74 68 65 20 72 65 6c 65 76 61 n,.you.must.place,.in.the.releva
48ca0 6e 74 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2c 20 61 20 73 74 61 74 65 6d 65 6e 74 20 6f 66 20 nt.source.files,.a.statement.of.
48cc0 74 68 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 20 74 68 61 74 20 61 70 70 6c 79 20 the.additional.terms.that.apply.
48ce0 74 6f 20 74 68 6f 73 65 20 66 69 6c 65 73 2c 20 6f 72 20 61 20 6e 6f 74 69 63 65 20 69 6e 64 69 to.those.files,.or.a.notice.indi
48d00 63 61 74 69 6e 67 0a 77 68 65 72 65 20 74 6f 20 66 69 6e 64 20 74 68 65 20 61 70 70 6c 69 63 61 cating.where.to.find.the.applica
48d20 62 6c 65 20 74 65 72 6d 73 2e 0a 0a 20 20 41 64 64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 2c 20 ble.terms.....Additional.terms,.
48d40 70 65 72 6d 69 73 73 69 76 65 20 6f 72 20 6e 6f 6e 2d 70 65 72 6d 69 73 73 69 76 65 2c 20 6d 61 permissive.or.non-permissive,.ma
48d60 79 20 62 65 20 73 74 61 74 65 64 20 69 6e 20 74 68 65 0a 66 6f 72 6d 20 6f 66 20 61 20 73 65 70 y.be.stated.in.the.form.of.a.sep
48d80 61 72 61 74 65 6c 79 20 77 72 69 74 74 65 6e 20 6c 69 63 65 6e 73 65 2c 20 6f 72 20 73 74 61 74 arately.written.license,.or.stat
48da0 65 64 20 61 73 20 65 78 63 65 70 74 69 6f 6e 73 3b 0a 74 68 65 20 61 62 6f 76 65 20 72 65 71 75 ed.as.exceptions;.the.above.requ
48dc0 69 72 65 6d 65 6e 74 73 20 61 70 70 6c 79 20 65 69 74 68 65 72 20 77 61 79 2e 0a 0a 20 20 38 2e irements.apply.either.way.....8.
48de0 20 54 65 72 6d 69 6e 61 74 69 6f 6e 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 70 72 6f .Termination.....You.may.not.pro
48e00 70 61 67 61 74 65 20 6f 72 20 6d 6f 64 69 66 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 pagate.or.modify.a.covered.work.
48e20 65 78 63 65 70 74 20 61 73 20 65 78 70 72 65 73 73 6c 79 0a 70 72 6f 76 69 64 65 64 20 75 6e 64 except.as.expressly.provided.und
48e40 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 41 6e 79 20 61 74 74 65 6d 70 74 20 6f 74 er.this.License...Any.attempt.ot
48e60 68 65 72 77 69 73 65 20 74 6f 20 70 72 6f 70 61 67 61 74 65 20 6f 72 0a 6d 6f 64 69 66 79 20 69 herwise.to.propagate.or.modify.i
48e80 74 20 69 73 20 76 6f 69 64 2c 20 61 6e 64 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c t.is.void,.and.will.automaticall
48ea0 79 20 74 65 72 6d 69 6e 61 74 65 20 79 6f 75 72 20 72 69 67 68 74 73 20 75 6e 64 65 72 0a 74 68 y.terminate.your.rights.under.th
48ec0 69 73 20 4c 69 63 65 6e 73 65 20 28 69 6e 63 6c 75 64 69 6e 67 20 61 6e 79 20 70 61 74 65 6e 74 is.License.(including.any.patent
48ee0 20 6c 69 63 65 6e 73 65 73 20 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 65 20 74 68 69 72 .licenses.granted.under.the.thir
48f00 64 0a 70 61 72 61 67 72 61 70 68 20 6f 66 20 73 65 63 74 69 6f 6e 20 31 31 29 2e 0a 0a 20 20 48 d.paragraph.of.section.11).....H
48f20 6f 77 65 76 65 72 2c 20 69 66 20 79 6f 75 20 63 65 61 73 65 20 61 6c 6c 20 76 69 6f 6c 61 74 69 owever,.if.you.cease.all.violati
48f40 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 68 65 6e 20 79 6f 75 72 0a 6c 69 on.of.this.License,.then.your.li
48f60 63 65 6e 73 65 20 66 72 6f 6d 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 63 6f 70 79 72 69 67 68 cense.from.a.particular.copyrigh
48f80 74 20 68 6f 6c 64 65 72 20 69 73 20 72 65 69 6e 73 74 61 74 65 64 20 28 61 29 0a 70 72 6f 76 69 t.holder.is.reinstated.(a).provi
48fa0 73 69 6f 6e 61 6c 6c 79 2c 20 75 6e 6c 65 73 73 20 61 6e 64 20 75 6e 74 69 6c 20 74 68 65 20 63 sionally,.unless.and.until.the.c
48fc0 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 65 78 70 6c 69 63 69 74 6c 79 20 61 6e 64 0a 66 opyright.holder.explicitly.and.f
48fe0 69 6e 61 6c 6c 79 20 74 65 72 6d 69 6e 61 74 65 73 20 79 6f 75 72 20 6c 69 63 65 6e 73 65 2c 20 inally.terminates.your.license,.
49000 61 6e 64 20 28 62 29 20 70 65 72 6d 61 6e 65 6e 74 6c 79 2c 20 69 66 20 74 68 65 20 63 6f 70 79 and.(b).permanently,.if.the.copy
49020 72 69 67 68 74 0a 68 6f 6c 64 65 72 20 66 61 69 6c 73 20 74 6f 20 6e 6f 74 69 66 79 20 79 6f 75 right.holder.fails.to.notify.you
49040 20 6f 66 20 74 68 65 20 76 69 6f 6c 61 74 69 6f 6e 20 62 79 20 73 6f 6d 65 20 72 65 61 73 6f 6e .of.the.violation.by.some.reason
49060 61 62 6c 65 20 6d 65 61 6e 73 0a 70 72 69 6f 72 20 74 6f 20 36 30 20 64 61 79 73 20 61 66 74 65 able.means.prior.to.60.days.afte
49080 72 20 74 68 65 20 63 65 73 73 61 74 69 6f 6e 2e 0a 0a 20 20 4d 6f 72 65 6f 76 65 72 2c 20 79 6f r.the.cessation.....Moreover,.yo
490a0 75 72 20 6c 69 63 65 6e 73 65 20 66 72 6f 6d 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 63 6f 70 ur.license.from.a.particular.cop
490c0 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 69 73 0a 72 65 69 6e 73 74 61 74 65 64 20 70 65 72 6d yright.holder.is.reinstated.perm
490e0 61 6e 65 6e 74 6c 79 20 69 66 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 anently.if.the.copyright.holder.
49100 6e 6f 74 69 66 69 65 73 20 79 6f 75 20 6f 66 20 74 68 65 0a 76 69 6f 6c 61 74 69 6f 6e 20 62 79 notifies.you.of.the.violation.by
49120 20 73 6f 6d 65 20 72 65 61 73 6f 6e 61 62 6c 65 20 6d 65 61 6e 73 2c 20 74 68 69 73 20 69 73 20 .some.reasonable.means,.this.is.
49140 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 79 6f 75 20 68 61 76 65 0a 72 65 63 65 69 76 65 64 the.first.time.you.have.received
49160 20 6e 6f 74 69 63 65 20 6f 66 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 .notice.of.violation.of.this.Lic
49180 65 6e 73 65 20 28 66 6f 72 20 61 6e 79 20 77 6f 72 6b 29 20 66 72 6f 6d 20 74 68 61 74 0a 63 6f ense.(for.any.work).from.that.co
491a0 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 2c 20 61 6e 64 20 79 6f 75 20 63 75 72 65 20 74 68 65 pyright.holder,.and.you.cure.the
491c0 20 76 69 6f 6c 61 74 69 6f 6e 20 70 72 69 6f 72 20 74 6f 20 33 30 20 64 61 79 73 20 61 66 74 65 .violation.prior.to.30.days.afte
491e0 72 0a 79 6f 75 72 20 72 65 63 65 69 70 74 20 6f 66 20 74 68 65 20 6e 6f 74 69 63 65 2e 0a 0a 20 r.your.receipt.of.the.notice....
49200 20 54 65 72 6d 69 6e 61 74 69 6f 6e 20 6f 66 20 79 6f 75 72 20 72 69 67 68 74 73 20 75 6e 64 65 .Termination.of.your.rights.unde
49220 72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 74 65 72 6d 69 6e 61 74 r.this.section.does.not.terminat
49240 65 20 74 68 65 0a 6c 69 63 65 6e 73 65 73 20 6f 66 20 70 61 72 74 69 65 73 20 77 68 6f 20 68 61 e.the.licenses.of.parties.who.ha
49260 76 65 20 72 65 63 65 69 76 65 64 20 63 6f 70 69 65 73 20 6f 72 20 72 69 67 68 74 73 20 66 72 6f ve.received.copies.or.rights.fro
49280 6d 20 79 6f 75 20 75 6e 64 65 72 0a 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 49 66 20 79 6f m.you.under.this.License...If.yo
492a0 75 72 20 72 69 67 68 74 73 20 68 61 76 65 20 62 65 65 6e 20 74 65 72 6d 69 6e 61 74 65 64 20 61 ur.rights.have.been.terminated.a
492c0 6e 64 20 6e 6f 74 20 70 65 72 6d 61 6e 65 6e 74 6c 79 0a 72 65 69 6e 73 74 61 74 65 64 2c 20 79 nd.not.permanently.reinstated,.y
492e0 6f 75 20 64 6f 20 6e 6f 74 20 71 75 61 6c 69 66 79 20 74 6f 20 72 65 63 65 69 76 65 20 6e 65 77 ou.do.not.qualify.to.receive.new
49300 20 6c 69 63 65 6e 73 65 73 20 66 6f 72 20 74 68 65 20 73 61 6d 65 0a 6d 61 74 65 72 69 61 6c 20 .licenses.for.the.same.material.
49320 75 6e 64 65 72 20 73 65 63 74 69 6f 6e 20 31 30 2e 0a 0a 20 20 39 2e 20 41 63 63 65 70 74 61 6e under.section.10.....9..Acceptan
49340 63 65 20 4e 6f 74 20 52 65 71 75 69 72 65 64 20 66 6f 72 20 48 61 76 69 6e 67 20 43 6f 70 69 65 ce.Not.Required.for.Having.Copie
49360 73 2e 0a 0a 20 20 59 6f 75 20 61 72 65 20 6e 6f 74 20 72 65 71 75 69 72 65 64 20 74 6f 20 61 63 s.....You.are.not.required.to.ac
49380 63 65 70 74 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 72 65 cept.this.License.in.order.to.re
493a0 63 65 69 76 65 20 6f 72 0a 72 75 6e 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 50 72 6f 67 72 ceive.or.run.a.copy.of.the.Progr
493c0 61 6d 2e 20 20 41 6e 63 69 6c 6c 61 72 79 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 6f 66 20 61 20 am...Ancillary.propagation.of.a.
493e0 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 6f 63 63 75 72 72 69 6e 67 20 73 6f 6c 65 6c 79 20 61 73 covered.work.occurring.solely.as
49400 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20 75 73 69 6e 67 20 70 65 65 72 2d 74 6f 2d .a.consequence.of.using.peer-to-
49420 70 65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f 6e 0a 74 6f 20 72 65 63 65 69 76 65 20 61 20 63 peer.transmission.to.receive.a.c
49440 6f 70 79 20 6c 69 6b 65 77 69 73 65 20 64 6f 65 73 20 6e 6f 74 20 72 65 71 75 69 72 65 20 61 63 opy.likewise.does.not.require.ac
49460 63 65 70 74 61 6e 63 65 2e 20 20 48 6f 77 65 76 65 72 2c 0a 6e 6f 74 68 69 6e 67 20 6f 74 68 65 ceptance...However,.nothing.othe
49480 72 20 74 68 61 6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 67 72 61 6e 74 73 20 79 6f 75 20 70 r.than.this.License.grants.you.p
494a0 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 70 72 6f 70 61 67 61 74 65 20 6f 72 0a 6d 6f 64 69 66 79 ermission.to.propagate.or.modify
494c0 20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2e 20 20 54 68 65 73 65 20 61 63 74 69 6f 6e .any.covered.work...These.action
494e0 73 20 69 6e 66 72 69 6e 67 65 20 63 6f 70 79 72 69 67 68 74 20 69 66 20 79 6f 75 20 64 6f 0a 6e s.infringe.copyright.if.you.do.n
49500 6f 74 20 61 63 63 65 70 74 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 54 68 65 72 65 66 6f ot.accept.this.License...Therefo
49520 72 65 2c 20 62 79 20 6d 6f 64 69 66 79 69 6e 67 20 6f 72 20 70 72 6f 70 61 67 61 74 69 6e 67 20 re,.by.modifying.or.propagating.
49540 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 79 6f 75 20 69 6e 64 69 63 61 74 65 20 79 6f 75 a.covered.work,.you.indicate.you
49560 72 20 61 63 63 65 70 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 74 6f 20 r.acceptance.of.this.License.to.
49580 64 6f 20 73 6f 2e 0a 0a 20 20 31 30 2e 20 41 75 74 6f 6d 61 74 69 63 20 4c 69 63 65 6e 73 69 6e do.so.....10..Automatic.Licensin
495a0 67 20 6f 66 20 44 6f 77 6e 73 74 72 65 61 6d 20 52 65 63 69 70 69 65 6e 74 73 2e 0a 0a 20 20 45 g.of.Downstream.Recipients.....E
495c0 61 63 68 20 74 69 6d 65 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f ach.time.you.convey.a.covered.wo
495e0 72 6b 2c 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a rk,.the.recipient.automatically.
49600 72 65 63 65 69 76 65 73 20 61 20 6c 69 63 65 6e 73 65 20 66 72 6f 6d 20 74 68 65 20 6f 72 69 67 receives.a.license.from.the.orig
49620 69 6e 61 6c 20 6c 69 63 65 6e 73 6f 72 73 2c 20 74 6f 20 72 75 6e 2c 20 6d 6f 64 69 66 79 20 61 inal.licensors,.to.run,.modify.a
49640 6e 64 0a 70 72 6f 70 61 67 61 74 65 20 74 68 61 74 20 77 6f 72 6b 2c 20 73 75 62 6a 65 63 74 20 nd.propagate.that.work,.subject.
49660 74 6f 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 59 6f 75 20 61 72 65 20 6e 6f 74 20 72 65 to.this.License...You.are.not.re
49680 73 70 6f 6e 73 69 62 6c 65 0a 66 6f 72 20 65 6e 66 6f 72 63 69 6e 67 20 63 6f 6d 70 6c 69 61 6e sponsible.for.enforcing.complian
496a0 63 65 20 62 79 20 74 68 69 72 64 20 70 61 72 74 69 65 73 20 77 69 74 68 20 74 68 69 73 20 4c 69 ce.by.third.parties.with.this.Li
496c0 63 65 6e 73 65 2e 0a 0a 20 20 41 6e 20 22 65 6e 74 69 74 79 20 74 72 61 6e 73 61 63 74 69 6f 6e cense.....An."entity.transaction
496e0 22 20 69 73 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 72 61 6e 73 66 65 72 72 69 6e 67 20 ".is.a.transaction.transferring.
49700 63 6f 6e 74 72 6f 6c 20 6f 66 20 61 6e 0a 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 2c 20 6f 72 20 73 control.of.an.organization,.or.s
49720 75 62 73 74 61 6e 74 69 61 6c 6c 79 20 61 6c 6c 20 61 73 73 65 74 73 20 6f 66 20 6f 6e 65 2c 20 ubstantially.all.assets.of.one,.
49740 6f 72 20 73 75 62 64 69 76 69 64 69 6e 67 20 61 6e 0a 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 2c 20 or.subdividing.an.organization,.
49760 6f 72 20 6d 65 72 67 69 6e 67 20 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 73 2e 20 20 49 66 20 70 72 or.merging.organizations...If.pr
49780 6f 70 61 67 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 64 0a 77 6f 72 6b 20 72 65 73 75 opagation.of.a.covered.work.resu
497a0 6c 74 73 20 66 72 6f 6d 20 61 6e 20 65 6e 74 69 74 79 20 74 72 61 6e 73 61 63 74 69 6f 6e 2c 20 lts.from.an.entity.transaction,.
497c0 65 61 63 68 20 70 61 72 74 79 20 74 6f 20 74 68 61 74 0a 74 72 61 6e 73 61 63 74 69 6f 6e 20 77 each.party.to.that.transaction.w
497e0 68 6f 20 72 65 63 65 69 76 65 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 61 ho.receives.a.copy.of.the.work.a
49800 6c 73 6f 20 72 65 63 65 69 76 65 73 20 77 68 61 74 65 76 65 72 0a 6c 69 63 65 6e 73 65 73 20 74 lso.receives.whatever.licenses.t
49820 6f 20 74 68 65 20 77 6f 72 6b 20 74 68 65 20 70 61 72 74 79 27 73 20 70 72 65 64 65 63 65 73 73 o.the.work.the.party's.predecess
49840 6f 72 20 69 6e 20 69 6e 74 65 72 65 73 74 20 68 61 64 20 6f 72 20 63 6f 75 6c 64 0a 67 69 76 65 or.in.interest.had.or.could.give
49860 20 75 6e 64 65 72 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 70 61 72 61 67 72 61 70 68 2c 20 70 .under.the.previous.paragraph,.p
49880 6c 75 73 20 61 20 72 69 67 68 74 20 74 6f 20 70 6f 73 73 65 73 73 69 6f 6e 20 6f 66 20 74 68 65 lus.a.right.to.possession.of.the
498a0 0a 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f 72 .Corresponding.Source.of.the.wor
498c0 6b 20 66 72 6f 6d 20 74 68 65 20 70 72 65 64 65 63 65 73 73 6f 72 20 69 6e 20 69 6e 74 65 72 65 k.from.the.predecessor.in.intere
498e0 73 74 2c 20 69 66 0a 74 68 65 20 70 72 65 64 65 63 65 73 73 6f 72 20 68 61 73 20 69 74 20 6f 72 st,.if.the.predecessor.has.it.or
49900 20 63 61 6e 20 67 65 74 20 69 74 20 77 69 74 68 20 72 65 61 73 6f 6e 61 62 6c 65 20 65 66 66 6f .can.get.it.with.reasonable.effo
49920 72 74 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 69 6d 70 6f 73 65 20 61 6e 79 20 66 rts.....You.may.not.impose.any.f
49940 75 72 74 68 65 72 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 65 78 65 72 63 urther.restrictions.on.the.exerc
49960 69 73 65 20 6f 66 20 74 68 65 0a 72 69 67 68 74 73 20 67 72 61 6e 74 65 64 20 6f 72 20 61 66 66 ise.of.the.rights.granted.or.aff
49980 69 72 6d 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 46 6f 72 20 65 irmed.under.this.License...For.e
499a0 78 61 6d 70 6c 65 2c 20 79 6f 75 20 6d 61 79 0a 6e 6f 74 20 69 6d 70 6f 73 65 20 61 20 6c 69 63 xample,.you.may.not.impose.a.lic
499c0 65 6e 73 65 20 66 65 65 2c 20 72 6f 79 61 6c 74 79 2c 20 6f 72 20 6f 74 68 65 72 20 63 68 61 72 ense.fee,.royalty,.or.other.char
499e0 67 65 20 66 6f 72 20 65 78 65 72 63 69 73 65 20 6f 66 0a 72 69 67 68 74 73 20 67 72 61 6e 74 65 ge.for.exercise.of.rights.grante
49a00 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 61 6e 64 20 79 6f 75 20 6d 61 d.under.this.License,.and.you.ma
49a20 79 20 6e 6f 74 20 69 6e 69 74 69 61 74 65 20 6c 69 74 69 67 61 74 69 6f 6e 0a 28 69 6e 63 6c 75 y.not.initiate.litigation.(inclu
49a40 64 69 6e 67 20 61 20 63 72 6f 73 73 2d 63 6c 61 69 6d 20 6f 72 20 63 6f 75 6e 74 65 72 63 6c 61 ding.a.cross-claim.or.countercla
49a60 69 6d 20 69 6e 20 61 20 6c 61 77 73 75 69 74 29 20 61 6c 6c 65 67 69 6e 67 20 74 68 61 74 0a 61 im.in.a.lawsuit).alleging.that.a
49a80 6e 79 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 20 69 73 20 69 6e 66 72 69 6e 67 65 64 20 62 79 20 ny.patent.claim.is.infringed.by.
49aa0 6d 61 6b 69 6e 67 2c 20 75 73 69 6e 67 2c 20 73 65 6c 6c 69 6e 67 2c 20 6f 66 66 65 72 69 6e 67 making,.using,.selling,.offering
49ac0 20 66 6f 72 0a 73 61 6c 65 2c 20 6f 72 20 69 6d 70 6f 72 74 69 6e 67 20 74 68 65 20 50 72 6f 67 .for.sale,.or.importing.the.Prog
49ae0 72 61 6d 20 6f 72 20 61 6e 79 20 70 6f 72 74 69 6f 6e 20 6f 66 20 69 74 2e 0a 0a 20 20 31 31 2e ram.or.any.portion.of.it.....11.
49b00 20 50 61 74 65 6e 74 73 2e 0a 0a 20 20 41 20 22 63 6f 6e 74 72 69 62 75 74 6f 72 22 20 69 73 20 .Patents.....A."contributor".is.
49b20 61 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 77 68 6f 20 61 75 74 68 6f 72 69 7a 65 a.copyright.holder.who.authorize
49b40 73 20 75 73 65 20 75 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 20 6f 66 20 74 68 65 20 s.use.under.this.License.of.the.
49b60 50 72 6f 67 72 61 6d 20 6f 72 20 61 20 77 6f 72 6b 20 6f 6e 20 77 68 69 63 68 20 74 68 65 20 50 Program.or.a.work.on.which.the.P
49b80 72 6f 67 72 61 6d 20 69 73 20 62 61 73 65 64 2e 20 20 54 68 65 0a 77 6f 72 6b 20 74 68 75 73 20 rogram.is.based...The.work.thus.
49ba0 6c 69 63 65 6e 73 65 64 20 69 73 20 63 61 6c 6c 65 64 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 licensed.is.called.the.contribut
49bc0 6f 72 27 73 20 22 63 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 22 2e 0a 0a 20 20 41 or's."contributor.version".....A
49be0 20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 22 65 73 73 65 6e 74 69 61 6c 20 70 61 74 65 6e 74 .contributor's."essential.patent
49c00 20 63 6c 61 69 6d 73 22 20 61 72 65 20 61 6c 6c 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 73 0a 6f .claims".are.all.patent.claims.o
49c20 77 6e 65 64 20 6f 72 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 20 74 68 65 20 63 6f 6e 74 72 69 wned.or.controlled.by.the.contri
49c40 62 75 74 6f 72 2c 20 77 68 65 74 68 65 72 20 61 6c 72 65 61 64 79 20 61 63 71 75 69 72 65 64 20 butor,.whether.already.acquired.
49c60 6f 72 0a 68 65 72 65 61 66 74 65 72 20 61 63 71 75 69 72 65 64 2c 20 74 68 61 74 20 77 6f 75 6c or.hereafter.acquired,.that.woul
49c80 64 20 62 65 20 69 6e 66 72 69 6e 67 65 64 20 62 79 20 73 6f 6d 65 20 6d 61 6e 6e 65 72 2c 20 70 d.be.infringed.by.some.manner,.p
49ca0 65 72 6d 69 74 74 65 64 0a 62 79 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 6f 66 20 6d 61 6b ermitted.by.this.License,.of.mak
49cc0 69 6e 67 2c 20 75 73 69 6e 67 2c 20 6f 72 20 73 65 6c 6c 69 6e 67 20 69 74 73 20 63 6f 6e 74 72 ing,.using,.or.selling.its.contr
49ce0 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2c 0a 62 75 74 20 64 6f 20 6e 6f 74 20 69 6e 63 6c 75 ibutor.version,.but.do.not.inclu
49d00 64 65 20 63 6c 61 69 6d 73 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 69 6e 66 72 69 6e 67 65 de.claims.that.would.be.infringe
49d20 64 20 6f 6e 6c 79 20 61 73 20 61 0a 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20 66 75 72 74 68 d.only.as.a.consequence.of.furth
49d40 65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 er.modification.of.the.contribut
49d60 6f 72 20 76 65 72 73 69 6f 6e 2e 20 20 46 6f 72 0a 70 75 72 70 6f 73 65 73 20 6f 66 20 74 68 69 or.version...For.purposes.of.thi
49d80 73 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 22 63 6f 6e 74 72 6f 6c 22 20 69 6e 63 6c 75 64 65 73 s.definition,."control".includes
49da0 20 74 68 65 20 72 69 67 68 74 20 74 6f 20 67 72 61 6e 74 0a 70 61 74 65 6e 74 20 73 75 62 6c 69 .the.right.to.grant.patent.subli
49dc0 63 65 6e 73 65 73 20 69 6e 20 61 20 6d 61 6e 6e 65 72 20 63 6f 6e 73 69 73 74 65 6e 74 20 77 69 censes.in.a.manner.consistent.wi
49de0 74 68 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 6f 66 0a 74 68 69 73 20 4c 69 63 65 th.the.requirements.of.this.Lice
49e00 6e 73 65 2e 0a 0a 20 20 45 61 63 68 20 63 6f 6e 74 72 69 62 75 74 6f 72 20 67 72 61 6e 74 73 20 nse.....Each.contributor.grants.
49e20 79 6f 75 20 61 20 6e 6f 6e 2d 65 78 63 6c 75 73 69 76 65 2c 20 77 6f 72 6c 64 77 69 64 65 2c 20 you.a.non-exclusive,.worldwide,.
49e40 72 6f 79 61 6c 74 79 2d 66 72 65 65 0a 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 75 6e 64 65 royalty-free.patent.license.unde
49e60 72 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 65 73 73 65 6e 74 69 61 6c 20 70 61 r.the.contributor's.essential.pa
49e80 74 65 6e 74 20 63 6c 61 69 6d 73 2c 20 74 6f 0a 6d 61 6b 65 2c 20 75 73 65 2c 20 73 65 6c 6c 2c tent.claims,.to.make,.use,.sell,
49ea0 20 6f 66 66 65 72 20 66 6f 72 20 73 61 6c 65 2c 20 69 6d 70 6f 72 74 20 61 6e 64 20 6f 74 68 65 .offer.for.sale,.import.and.othe
49ec0 72 77 69 73 65 20 72 75 6e 2c 20 6d 6f 64 69 66 79 20 61 6e 64 0a 70 72 6f 70 61 67 61 74 65 20 rwise.run,.modify.and.propagate.
49ee0 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 69 74 73 20 63 6f 6e 74 72 69 62 75 74 6f 72 20 the.contents.of.its.contributor.
49f00 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 49 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 72 version.....In.the.following.thr
49f20 65 65 20 70 61 72 61 67 72 61 70 68 73 2c 20 61 20 22 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 ee.paragraphs,.a."patent.license
49f40 22 20 69 73 20 61 6e 79 20 65 78 70 72 65 73 73 0a 61 67 72 65 65 6d 65 6e 74 20 6f 72 20 63 6f ".is.any.express.agreement.or.co
49f60 6d 6d 69 74 6d 65 6e 74 2c 20 68 6f 77 65 76 65 72 20 64 65 6e 6f 6d 69 6e 61 74 65 64 2c 20 6e mmitment,.however.denominated,.n
49f80 6f 74 20 74 6f 20 65 6e 66 6f 72 63 65 20 61 20 70 61 74 65 6e 74 0a 28 73 75 63 68 20 61 73 20 ot.to.enforce.a.patent.(such.as.
49fa0 61 6e 20 65 78 70 72 65 73 73 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 70 72 61 63 74 69 63 an.express.permission.to.practic
49fc0 65 20 61 20 70 61 74 65 6e 74 20 6f 72 20 63 6f 76 65 6e 61 6e 74 20 6e 6f 74 20 74 6f 0a 73 75 e.a.patent.or.covenant.not.to.su
49fe0 65 20 66 6f 72 20 70 61 74 65 6e 74 20 69 6e 66 72 69 6e 67 65 6d 65 6e 74 29 2e 20 20 54 6f 20 e.for.patent.infringement)...To.
4a000 22 67 72 61 6e 74 22 20 73 75 63 68 20 61 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 74 6f "grant".such.a.patent.license.to
4a020 20 61 0a 70 61 72 74 79 20 6d 65 61 6e 73 20 74 6f 20 6d 61 6b 65 20 73 75 63 68 20 61 6e 20 61 .a.party.means.to.make.such.an.a
4a040 67 72 65 65 6d 65 6e 74 20 6f 72 20 63 6f 6d 6d 69 74 6d 65 6e 74 20 6e 6f 74 20 74 6f 20 65 6e greement.or.commitment.not.to.en
4a060 66 6f 72 63 65 20 61 0a 70 61 74 65 6e 74 20 61 67 61 69 6e 73 74 20 74 68 65 20 70 61 72 74 79 force.a.patent.against.the.party
4a080 2e 0a 0a 20 20 49 66 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 .....If.you.convey.a.covered.wor
4a0a0 6b 2c 20 6b 6e 6f 77 69 6e 67 6c 79 20 72 65 6c 79 69 6e 67 20 6f 6e 20 61 20 70 61 74 65 6e 74 k,.knowingly.relying.on.a.patent
4a0c0 20 6c 69 63 65 6e 73 65 2c 0a 61 6e 64 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 .license,.and.the.Corresponding.
4a0e0 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 Source.of.the.work.is.not.availa
4a100 62 6c 65 20 66 6f 72 20 61 6e 79 6f 6e 65 0a 74 6f 20 63 6f 70 79 2c 20 66 72 65 65 20 6f 66 20 ble.for.anyone.to.copy,.free.of.
4a120 63 68 61 72 67 65 20 61 6e 64 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 charge.and.under.the.terms.of.th
4a140 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 68 72 6f 75 67 68 20 61 0a 70 75 62 6c 69 63 6c 79 20 61 is.License,.through.a.publicly.a
4a160 76 61 69 6c 61 62 6c 65 20 6e 65 74 77 6f 72 6b 20 73 65 72 76 65 72 20 6f 72 20 6f 74 68 65 72 vailable.network.server.or.other
4a180 20 72 65 61 64 69 6c 79 20 61 63 63 65 73 73 69 62 6c 65 20 6d 65 61 6e 73 2c 0a 74 68 65 6e 20 .readily.accessible.means,.then.
4a1a0 79 6f 75 20 6d 75 73 74 20 65 69 74 68 65 72 20 28 31 29 20 63 61 75 73 65 20 74 68 65 20 43 6f you.must.either.(1).cause.the.Co
4a1c0 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 74 6f 20 62 65 20 73 6f 0a 61 76 61 69 rresponding.Source.to.be.so.avai
4a1e0 6c 61 62 6c 65 2c 20 6f 72 20 28 32 29 20 61 72 72 61 6e 67 65 20 74 6f 20 64 65 70 72 69 76 65 lable,.or.(2).arrange.to.deprive
4a200 20 79 6f 75 72 73 65 6c 66 20 6f 66 20 74 68 65 20 62 65 6e 65 66 69 74 20 6f 66 20 74 68 65 0a .yourself.of.the.benefit.of.the.
4a220 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 66 6f 72 20 74 68 69 73 20 70 61 72 74 69 63 75 6c patent.license.for.this.particul
4a240 61 72 20 77 6f 72 6b 2c 20 6f 72 20 28 33 29 20 61 72 72 61 6e 67 65 2c 20 69 6e 20 61 20 6d 61 ar.work,.or.(3).arrange,.in.a.ma
4a260 6e 6e 65 72 0a 63 6f 6e 73 69 73 74 65 6e 74 20 77 69 74 68 20 74 68 65 20 72 65 71 75 69 72 65 nner.consistent.with.the.require
4a280 6d 65 6e 74 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 6f 20 65 78 74 65 6e 64 ments.of.this.License,.to.extend
4a2a0 20 74 68 65 20 70 61 74 65 6e 74 0a 6c 69 63 65 6e 73 65 20 74 6f 20 64 6f 77 6e 73 74 72 65 61 .the.patent.license.to.downstrea
4a2c0 6d 20 72 65 63 69 70 69 65 6e 74 73 2e 20 20 22 4b 6e 6f 77 69 6e 67 6c 79 20 72 65 6c 79 69 6e m.recipients..."Knowingly.relyin
4a2e0 67 22 20 6d 65 61 6e 73 20 79 6f 75 20 68 61 76 65 0a 61 63 74 75 61 6c 20 6b 6e 6f 77 6c 65 64 g".means.you.have.actual.knowled
4a300 67 65 20 74 68 61 74 2c 20 62 75 74 20 66 6f 72 20 74 68 65 20 70 61 74 65 6e 74 20 6c 69 63 65 ge.that,.but.for.the.patent.lice
4a320 6e 73 65 2c 20 79 6f 75 72 20 63 6f 6e 76 65 79 69 6e 67 20 74 68 65 0a 63 6f 76 65 72 65 64 20 nse,.your.conveying.the.covered.
4a340 77 6f 72 6b 20 69 6e 20 61 20 63 6f 75 6e 74 72 79 2c 20 6f 72 20 79 6f 75 72 20 72 65 63 69 70 work.in.a.country,.or.your.recip
4a360 69 65 6e 74 27 73 20 75 73 65 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 69 ient's.use.of.the.covered.work.i
4a380 6e 20 61 20 63 6f 75 6e 74 72 79 2c 20 77 6f 75 6c 64 20 69 6e 66 72 69 6e 67 65 20 6f 6e 65 20 n.a.country,.would.infringe.one.
4a3a0 6f 72 20 6d 6f 72 65 20 69 64 65 6e 74 69 66 69 61 62 6c 65 20 70 61 74 65 6e 74 73 20 69 6e 20 or.more.identifiable.patents.in.
4a3c0 74 68 61 74 0a 63 6f 75 6e 74 72 79 20 74 68 61 74 20 79 6f 75 20 68 61 76 65 20 72 65 61 73 6f that.country.that.you.have.reaso
4a3e0 6e 20 74 6f 20 62 65 6c 69 65 76 65 20 61 72 65 20 76 61 6c 69 64 2e 0a 0a 20 20 49 66 2c 20 70 n.to.believe.are.valid.....If,.p
4a400 75 72 73 75 61 6e 74 20 74 6f 20 6f 72 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 ursuant.to.or.in.connection.with
4a420 20 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 6f 72 0a 61 72 72 61 6e 67 65 .a.single.transaction.or.arrange
4a440 6d 65 6e 74 2c 20 79 6f 75 20 63 6f 6e 76 65 79 2c 20 6f 72 20 70 72 6f 70 61 67 61 74 65 20 62 ment,.you.convey,.or.propagate.b
4a460 79 20 70 72 6f 63 75 72 69 6e 67 20 63 6f 6e 76 65 79 61 6e 63 65 20 6f 66 2c 20 61 0a 63 6f 76 y.procuring.conveyance.of,.a.cov
4a480 65 72 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 67 72 61 6e 74 20 61 20 70 61 74 65 6e 74 20 6c 69 ered.work,.and.grant.a.patent.li
4a4a0 63 65 6e 73 65 20 74 6f 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 70 61 72 74 69 65 73 0a 72 65 63 cense.to.some.of.the.parties.rec
4a4c0 65 69 76 69 6e 67 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 61 75 74 68 6f 72 69 7a eiving.the.covered.work.authoriz
4a4e0 69 6e 67 20 74 68 65 6d 20 74 6f 20 75 73 65 2c 20 70 72 6f 70 61 67 61 74 65 2c 20 6d 6f 64 69 ing.them.to.use,.propagate,.modi
4a500 66 79 0a 6f 72 20 63 6f 6e 76 65 79 20 61 20 73 70 65 63 69 66 69 63 20 63 6f 70 79 20 6f 66 20 fy.or.convey.a.specific.copy.of.
4a520 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 74 68 65 6e 20 74 68 65 20 70 61 74 65 6e the.covered.work,.then.the.paten
4a540 74 20 6c 69 63 65 6e 73 65 0a 79 6f 75 20 67 72 61 6e 74 20 69 73 20 61 75 74 6f 6d 61 74 69 63 t.license.you.grant.is.automatic
4a560 61 6c 6c 79 20 65 78 74 65 6e 64 65 64 20 74 6f 20 61 6c 6c 20 72 65 63 69 70 69 65 6e 74 73 20 ally.extended.to.all.recipients.
4a580 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 0a 77 6f 72 6b 20 61 6e 64 20 77 6f 72 6b 73 20 62 61 of.the.covered.work.and.works.ba
4a5a0 73 65 64 20 6f 6e 20 69 74 2e 0a 0a 20 20 41 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 69 sed.on.it.....A.patent.license.i
4a5c0 73 20 22 64 69 73 63 72 69 6d 69 6e 61 74 6f 72 79 22 20 69 66 20 69 74 20 64 6f 65 73 20 6e 6f s."discriminatory".if.it.does.no
4a5e0 74 20 69 6e 63 6c 75 64 65 20 77 69 74 68 69 6e 0a 74 68 65 20 73 63 6f 70 65 20 6f 66 20 69 74 t.include.within.the.scope.of.it
4a600 73 20 63 6f 76 65 72 61 67 65 2c 20 70 72 6f 68 69 62 69 74 73 20 74 68 65 20 65 78 65 72 63 69 s.coverage,.prohibits.the.exerci
4a620 73 65 20 6f 66 2c 20 6f 72 20 69 73 0a 63 6f 6e 64 69 74 69 6f 6e 65 64 20 6f 6e 20 74 68 65 20 se.of,.or.is.conditioned.on.the.
4a640 6e 6f 6e 2d 65 78 65 72 63 69 73 65 20 6f 66 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 6f 66 20 74 non-exercise.of.one.or.more.of.t
4a660 68 65 20 72 69 67 68 74 73 20 74 68 61 74 20 61 72 65 0a 73 70 65 63 69 66 69 63 61 6c 6c 79 20 he.rights.that.are.specifically.
4a680 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 59 6f 75 granted.under.this.License...You
4a6a0 20 6d 61 79 20 6e 6f 74 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 64 0a 77 6f 72 6b 20 69 .may.not.convey.a.covered.work.i
4a6c0 66 20 79 6f 75 20 61 72 65 20 61 20 70 61 72 74 79 20 74 6f 20 61 6e 20 61 72 72 61 6e 67 65 6d f.you.are.a.party.to.an.arrangem
4a6e0 65 6e 74 20 77 69 74 68 20 61 20 74 68 69 72 64 20 70 61 72 74 79 20 74 68 61 74 20 69 73 0a 69 ent.with.a.third.party.that.is.i
4a700 6e 20 74 68 65 20 62 75 73 69 6e 65 73 73 20 6f 66 20 64 69 73 74 72 69 62 75 74 69 6e 67 20 73 n.the.business.of.distributing.s
4a720 6f 66 74 77 61 72 65 2c 20 75 6e 64 65 72 20 77 68 69 63 68 20 79 6f 75 20 6d 61 6b 65 20 70 61 oftware,.under.which.you.make.pa
4a740 79 6d 65 6e 74 0a 74 6f 20 74 68 65 20 74 68 69 72 64 20 70 61 72 74 79 20 62 61 73 65 64 20 6f yment.to.the.third.party.based.o
4a760 6e 20 74 68 65 20 65 78 74 65 6e 74 20 6f 66 20 79 6f 75 72 20 61 63 74 69 76 69 74 79 20 6f 66 n.the.extent.of.your.activity.of
4a780 20 63 6f 6e 76 65 79 69 6e 67 0a 74 68 65 20 77 6f 72 6b 2c 20 61 6e 64 20 75 6e 64 65 72 20 77 .conveying.the.work,.and.under.w
4a7a0 68 69 63 68 20 74 68 65 20 74 68 69 72 64 20 70 61 72 74 79 20 67 72 61 6e 74 73 2c 20 74 6f 20 hich.the.third.party.grants,.to.
4a7c0 61 6e 79 20 6f 66 20 74 68 65 0a 70 61 72 74 69 65 73 20 77 68 6f 20 77 6f 75 6c 64 20 72 65 63 any.of.the.parties.who.would.rec
4a7e0 65 69 76 65 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 66 72 6f 6d 20 79 6f 75 2c 20 eive.the.covered.work.from.you,.
4a800 61 20 64 69 73 63 72 69 6d 69 6e 61 74 6f 72 79 0a 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 a.discriminatory.patent.license.
4a820 28 61 29 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 63 6f 70 69 65 73 20 6f 66 (a).in.connection.with.copies.of
4a840 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 63 6f 6e 76 65 79 65 64 20 62 79 20 79 6f .the.covered.work.conveyed.by.yo
4a860 75 20 28 6f 72 20 63 6f 70 69 65 73 20 6d 61 64 65 20 66 72 6f 6d 20 74 68 6f 73 65 20 63 6f 70 u.(or.copies.made.from.those.cop
4a880 69 65 73 29 2c 20 6f 72 20 28 62 29 20 70 72 69 6d 61 72 69 6c 79 0a 66 6f 72 20 61 6e 64 20 69 ies),.or.(b).primarily.for.and.i
4a8a0 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 73 70 65 63 69 66 69 63 20 70 72 6f 64 75 n.connection.with.specific.produ
4a8c0 63 74 73 20 6f 72 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 73 20 74 68 61 74 0a 63 6f 6e 74 61 69 6e cts.or.compilations.that.contain
4a8e0 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 75 6e 6c 65 73 73 20 79 6f 75 20 65 6e .the.covered.work,.unless.you.en
4a900 74 65 72 65 64 20 69 6e 74 6f 20 74 68 61 74 20 61 72 72 61 6e 67 65 6d 65 6e 74 2c 0a 6f 72 20 tered.into.that.arrangement,.or.
4a920 74 68 61 74 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 77 61 73 20 67 72 61 6e 74 65 64 2c that.patent.license.was.granted,
4a940 20 70 72 69 6f 72 20 74 6f 20 32 38 20 4d 61 72 63 68 20 32 30 30 37 2e 0a 0a 20 20 4e 6f 74 68 .prior.to.28.March.2007.....Noth
4a960 69 6e 67 20 69 6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 73 68 61 6c 6c 20 62 65 20 63 6f 6e ing.in.this.License.shall.be.con
4a980 73 74 72 75 65 64 20 61 73 20 65 78 63 6c 75 64 69 6e 67 20 6f 72 20 6c 69 6d 69 74 69 6e 67 0a strued.as.excluding.or.limiting.
4a9a0 61 6e 79 20 69 6d 70 6c 69 65 64 20 6c 69 63 65 6e 73 65 20 6f 72 20 6f 74 68 65 72 20 64 65 66 any.implied.license.or.other.def
4a9c0 65 6e 73 65 73 20 74 6f 20 69 6e 66 72 69 6e 67 65 6d 65 6e 74 20 74 68 61 74 20 6d 61 79 0a 6f enses.to.infringement.that.may.o
4a9e0 74 68 65 72 77 69 73 65 20 62 65 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 79 6f 75 20 75 6e 64 therwise.be.available.to.you.und
4aa00 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 70 61 74 65 6e 74 20 6c 61 77 2e 0a 0a 20 20 31 32 2e er.applicable.patent.law.....12.
4aa20 20 4e 6f 20 53 75 72 72 65 6e 64 65 72 20 6f 66 20 4f 74 68 65 72 73 27 20 46 72 65 65 64 6f 6d .No.Surrender.of.Others'.Freedom
4aa40 2e 0a 0a 20 20 49 66 20 63 6f 6e 64 69 74 69 6f 6e 73 20 61 72 65 20 69 6d 70 6f 73 65 64 20 6f .....If.conditions.are.imposed.o
4aa60 6e 20 79 6f 75 20 28 77 68 65 74 68 65 72 20 62 79 20 63 6f 75 72 74 20 6f 72 64 65 72 2c 20 61 n.you.(whether.by.court.order,.a
4aa80 67 72 65 65 6d 65 6e 74 20 6f 72 0a 6f 74 68 65 72 77 69 73 65 29 20 74 68 61 74 20 63 6f 6e 74 greement.or.otherwise).that.cont
4aaa0 72 61 64 69 63 74 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 4c 69 radict.the.conditions.of.this.Li
4aac0 63 65 6e 73 65 2c 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a 65 78 63 75 73 65 20 79 6f 75 20 66 72 cense,.they.do.not.excuse.you.fr
4aae0 6f 6d 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 om.the.conditions.of.this.Licens
4ab00 65 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63 6f 6e 76 65 79 20 61 0a 63 6f 76 65 72 e...If.you.cannot.convey.a.cover
4ab20 65 64 20 77 6f 72 6b 20 73 6f 20 61 73 20 74 6f 20 73 61 74 69 73 66 79 20 73 69 6d 75 6c 74 61 ed.work.so.as.to.satisfy.simulta
4ab40 6e 65 6f 75 73 6c 79 20 79 6f 75 72 20 6f 62 6c 69 67 61 74 69 6f 6e 73 20 75 6e 64 65 72 20 74 neously.your.obligations.under.t
4ab60 68 69 73 0a 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e 79 20 6f 74 68 65 72 20 70 65 72 74 69 6e his.License.and.any.other.pertin
4ab80 65 6e 74 20 6f 62 6c 69 67 61 74 69 6f 6e 73 2c 20 74 68 65 6e 20 61 73 20 61 20 63 6f 6e 73 65 ent.obligations,.then.as.a.conse
4aba0 71 75 65 6e 63 65 20 79 6f 75 20 6d 61 79 0a 6e 6f 74 20 63 6f 6e 76 65 79 20 69 74 20 61 74 20 quence.you.may.not.convey.it.at.
4abc0 61 6c 6c 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 79 6f 75 20 61 67 72 65 65 20 all...For.example,.if.you.agree.
4abe0 74 6f 20 74 65 72 6d 73 20 74 68 61 74 20 6f 62 6c 69 67 61 74 65 20 79 6f 75 0a 74 6f 20 63 6f to.terms.that.obligate.you.to.co
4ac00 6c 6c 65 63 74 20 61 20 72 6f 79 61 6c 74 79 20 66 6f 72 20 66 75 72 74 68 65 72 20 63 6f 6e 76 llect.a.royalty.for.further.conv
4ac20 65 79 69 6e 67 20 66 72 6f 6d 20 74 68 6f 73 65 20 74 6f 20 77 68 6f 6d 20 79 6f 75 20 63 6f 6e eying.from.those.to.whom.you.con
4ac40 76 65 79 0a 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 74 68 65 20 6f 6e 6c 79 20 77 61 79 20 79 6f vey.the.Program,.the.only.way.yo
4ac60 75 20 63 6f 75 6c 64 20 73 61 74 69 73 66 79 20 62 6f 74 68 20 74 68 6f 73 65 20 74 65 72 6d 73 u.could.satisfy.both.those.terms
4ac80 20 61 6e 64 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 20 77 6f 75 6c 64 20 62 65 20 74 6f 20 72 65 .and.this.License.would.be.to.re
4aca0 66 72 61 69 6e 20 65 6e 74 69 72 65 6c 79 20 66 72 6f 6d 20 63 6f 6e 76 65 79 69 6e 67 20 74 68 frain.entirely.from.conveying.th
4acc0 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 31 33 2e 20 55 73 65 20 77 69 74 68 20 74 68 65 20 47 e.Program.....13..Use.with.the.G
4ace0 4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 NU.Affero.General.Public.License
4ad00 2e 0a 0a 20 20 4e 6f 74 77 69 74 68 73 74 61 6e 64 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 20 70 .....Notwithstanding.any.other.p
4ad20 72 6f 76 69 73 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 79 6f 75 20 68 61 rovision.of.this.License,.you.ha
4ad40 76 65 0a 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 6c 69 6e 6b 20 6f 72 20 63 6f 6d 62 69 6e 65 ve.permission.to.link.or.combine
4ad60 20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 77 69 74 68 20 61 20 77 6f 72 6b 20 6c 69 .any.covered.work.with.a.work.li
4ad80 63 65 6e 73 65 64 0a 75 6e 64 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 47 4e censed.under.version.3.of.the.GN
4ada0 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 U.Affero.General.Public.License.
4adc0 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 0a 63 6f 6d 62 69 6e 65 64 20 77 6f 72 6b 2c 20 61 6e 64 into.a.single.combined.work,.and
4ade0 20 74 6f 20 63 6f 6e 76 65 79 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 77 6f 72 6b 2e 20 20 .to.convey.the.resulting.work...
4ae00 54 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 20 77 69 6c 6c 20 63 The.terms.of.this.License.will.c
4ae20 6f 6e 74 69 6e 75 65 20 74 6f 20 61 70 70 6c 79 20 74 6f 20 74 68 65 20 70 61 72 74 20 77 68 69 ontinue.to.apply.to.the.part.whi
4ae40 63 68 20 69 73 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 0a 62 75 74 20 74 68 65 20 ch.is.the.covered.work,.but.the.
4ae60 73 70 65 63 69 61 6c 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 47 4e 55 20 special.requirements.of.the.GNU.
4ae80 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2c 0a 73 Affero.General.Public.License,.s
4aea0 65 63 74 69 6f 6e 20 31 33 2c 20 63 6f 6e 63 65 72 6e 69 6e 67 20 69 6e 74 65 72 61 63 74 69 6f ection.13,.concerning.interactio
4aec0 6e 20 74 68 72 6f 75 67 68 20 61 20 6e 65 74 77 6f 72 6b 20 77 69 6c 6c 20 61 70 70 6c 79 20 74 n.through.a.network.will.apply.t
4aee0 6f 20 74 68 65 0a 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 61 73 20 73 75 63 68 2e 0a 0a 20 20 31 34 o.the.combination.as.such.....14
4af00 2e 20 52 65 76 69 73 65 64 20 56 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e ..Revised.Versions.of.this.Licen
4af20 73 65 2e 0a 0a 20 20 54 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 se.....The.Free.Software.Foundat
4af40 69 6f 6e 20 6d 61 79 20 70 75 62 6c 69 73 68 20 72 65 76 69 73 65 64 20 61 6e 64 2f 6f 72 20 6e ion.may.publish.revised.and/or.n
4af60 65 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 ew.versions.of.the.GNU.General.P
4af80 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 72 6f 6d 20 74 69 6d 65 20 74 6f 20 74 69 6d 65 2e ublic.License.from.time.to.time.
4afa0 20 20 53 75 63 68 20 6e 65 77 20 76 65 72 73 69 6f 6e 73 20 77 69 6c 6c 0a 62 65 20 73 69 6d 69 ..Such.new.versions.will.be.simi
4afc0 6c 61 72 20 69 6e 20 73 70 69 72 69 74 20 74 6f 20 74 68 65 20 70 72 65 73 65 6e 74 20 76 65 72 lar.in.spirit.to.the.present.ver
4afe0 73 69 6f 6e 2c 20 62 75 74 20 6d 61 79 20 64 69 66 66 65 72 20 69 6e 20 64 65 74 61 69 6c 20 74 sion,.but.may.differ.in.detail.t
4b000 6f 0a 61 64 64 72 65 73 73 20 6e 65 77 20 70 72 6f 62 6c 65 6d 73 20 6f 72 20 63 6f 6e 63 65 72 o.address.new.problems.or.concer
4b020 6e 73 2e 0a 0a 20 20 45 61 63 68 20 76 65 72 73 69 6f 6e 20 69 73 20 67 69 76 65 6e 20 61 20 64 ns.....Each.version.is.given.a.d
4b040 69 73 74 69 6e 67 75 69 73 68 69 6e 67 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 2e 20 20 49 istinguishing.version.number...I
4b060 66 20 74 68 65 0a 50 72 6f 67 72 61 6d 20 73 70 65 63 69 66 69 65 73 20 74 68 61 74 20 61 20 63 f.the.Program.specifies.that.a.c
4b080 65 72 74 61 69 6e 20 6e 75 6d 62 65 72 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 47 ertain.numbered.version.of.the.G
4b0a0 4e 55 20 47 65 6e 65 72 61 6c 0a 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 22 6f 72 20 61 6e NU.General.Public.License."or.an
4b0c0 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 22 20 61 70 70 6c 69 65 73 20 74 6f 20 69 74 2c 20 y.later.version".applies.to.it,.
4b0e0 79 6f 75 20 68 61 76 65 20 74 68 65 0a 6f 70 74 69 6f 6e 20 6f 66 20 66 6f 6c 6c 6f 77 69 6e 67 you.have.the.option.of.following
4b100 20 74 68 65 20 74 65 72 6d 73 20 61 6e 64 20 63 6f 6e 64 69 74 69 6f 6e 73 20 65 69 74 68 65 72 .the.terms.and.conditions.either
4b120 20 6f 66 20 74 68 61 74 20 6e 75 6d 62 65 72 65 64 0a 76 65 72 73 69 6f 6e 20 6f 72 20 6f 66 20 .of.that.numbered.version.or.of.
4b140 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 20 70 75 62 6c 69 73 68 65 64 20 62 79 20 74 any.later.version.published.by.t
4b160 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 0a 46 6f 75 6e 64 61 74 69 6f 6e 2e 20 20 49 66 he.Free.Software.Foundation...If
4b180 20 74 68 65 20 50 72 6f 67 72 61 6d 20 64 6f 65 73 20 6e 6f 74 20 73 70 65 63 69 66 79 20 61 20 .the.Program.does.not.specify.a.
4b1a0 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 0a 47 4e 55 20 47 65 6e 65 72 61 version.number.of.the.GNU.Genera
4b1c0 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2c 20 79 6f 75 20 6d 61 79 20 63 68 6f 6f 73 65 l.Public.License,.you.may.choose
4b1e0 20 61 6e 79 20 76 65 72 73 69 6f 6e 20 65 76 65 72 20 70 75 62 6c 69 73 68 65 64 0a 62 79 20 74 .any.version.ever.published.by.t
4b200 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2e 0a 0a 20 20 he.Free.Software.Foundation.....
4b220 49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 73 70 65 63 69 66 69 65 73 20 74 68 61 74 20 61 20 If.the.Program.specifies.that.a.
4b240 70 72 6f 78 79 20 63 61 6e 20 64 65 63 69 64 65 20 77 68 69 63 68 20 66 75 74 75 72 65 0a 76 65 proxy.can.decide.which.future.ve
4b260 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 rsions.of.the.GNU.General.Public
4b280 20 4c 69 63 65 6e 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 74 68 61 74 20 70 72 6f 78 79 .License.can.be.used,.that.proxy
4b2a0 27 73 0a 70 75 62 6c 69 63 20 73 74 61 74 65 6d 65 6e 74 20 6f 66 20 61 63 63 65 70 74 61 6e 63 's.public.statement.of.acceptanc
4b2c0 65 20 6f 66 20 61 20 76 65 72 73 69 6f 6e 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20 61 75 74 68 6f e.of.a.version.permanently.autho
4b2e0 72 69 7a 65 73 20 79 6f 75 0a 74 6f 20 63 68 6f 6f 73 65 20 74 68 61 74 20 76 65 72 73 69 6f 6e rizes.you.to.choose.that.version
4b300 20 66 6f 72 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 4c 61 74 65 72 20 6c 69 63 65 6e .for.the.Program.....Later.licen
4b320 73 65 20 76 65 72 73 69 6f 6e 73 20 6d 61 79 20 67 69 76 65 20 79 6f 75 20 61 64 64 69 74 69 6f se.versions.may.give.you.additio
4b340 6e 61 6c 20 6f 72 20 64 69 66 66 65 72 65 6e 74 0a 70 65 72 6d 69 73 73 69 6f 6e 73 2e 20 20 48 nal.or.different.permissions...H
4b360 6f 77 65 76 65 72 2c 20 6e 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 62 6c 69 67 61 74 69 6f 6e owever,.no.additional.obligation
4b380 73 20 61 72 65 20 69 6d 70 6f 73 65 64 20 6f 6e 20 61 6e 79 0a 61 75 74 68 6f 72 20 6f 72 20 63 s.are.imposed.on.any.author.or.c
4b3a0 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 61 73 20 61 20 72 65 73 75 6c 74 20 6f 66 20 79 opyright.holder.as.a.result.of.y
4b3c0 6f 75 72 20 63 68 6f 6f 73 69 6e 67 20 74 6f 20 66 6f 6c 6c 6f 77 20 61 0a 6c 61 74 65 72 20 76 our.choosing.to.follow.a.later.v
4b3e0 65 72 73 69 6f 6e 2e 0a 0a 20 20 31 35 2e 20 44 69 73 63 6c 61 69 6d 65 72 20 6f 66 20 57 61 72 ersion.....15..Disclaimer.of.War
4b400 72 61 6e 74 79 2e 0a 0a 20 20 54 48 45 52 45 20 49 53 20 4e 4f 20 57 41 52 52 41 4e 54 59 20 46 ranty.....THERE.IS.NO.WARRANTY.F
4b420 4f 52 20 54 48 45 20 50 52 4f 47 52 41 4d 2c 20 54 4f 20 54 48 45 20 45 58 54 45 4e 54 20 50 45 OR.THE.PROGRAM,.TO.THE.EXTENT.PE
4b440 52 4d 49 54 54 45 44 20 42 59 0a 41 50 50 4c 49 43 41 42 4c 45 20 4c 41 57 2e 20 20 45 58 43 45 RMITTED.BY.APPLICABLE.LAW...EXCE
4b460 50 54 20 57 48 45 4e 20 4f 54 48 45 52 57 49 53 45 20 53 54 41 54 45 44 20 49 4e 20 57 52 49 54 PT.WHEN.OTHERWISE.STATED.IN.WRIT
4b480 49 4e 47 20 54 48 45 20 43 4f 50 59 52 49 47 48 54 0a 48 4f 4c 44 45 52 53 20 41 4e 44 2f 4f 52 ING.THE.COPYRIGHT.HOLDERS.AND/OR
4b4a0 20 4f 54 48 45 52 20 50 41 52 54 49 45 53 20 50 52 4f 56 49 44 45 20 54 48 45 20 50 52 4f 47 52 .OTHER.PARTIES.PROVIDE.THE.PROGR
4b4c0 41 4d 20 22 41 53 20 49 53 22 20 57 49 54 48 4f 55 54 20 57 41 52 52 41 4e 54 59 0a 4f 46 20 41 AM."AS.IS".WITHOUT.WARRANTY.OF.A
4b4e0 4e 59 20 4b 49 4e 44 2c 20 45 49 54 48 45 52 20 45 58 50 52 45 53 53 45 44 20 4f 52 20 49 4d 50 NY.KIND,.EITHER.EXPRESSED.OR.IMP
4b500 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e 47 2c 20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 LIED,.INCLUDING,.BUT.NOT.LIMITED
4b520 20 54 4f 2c 0a 54 48 45 20 49 4d 50 4c 49 45 44 20 57 41 52 52 41 4e 54 49 45 53 20 4f 46 20 4d .TO,.THE.IMPLIED.WARRANTIES.OF.M
4b540 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 41 4e 44 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 ERCHANTABILITY.AND.FITNESS.FOR.A
4b560 20 50 41 52 54 49 43 55 4c 41 52 0a 50 55 52 50 4f 53 45 2e 20 20 54 48 45 20 45 4e 54 49 52 45 .PARTICULAR.PURPOSE...THE.ENTIRE
4b580 20 52 49 53 4b 20 41 53 20 54 4f 20 54 48 45 20 51 55 41 4c 49 54 59 20 41 4e 44 20 50 45 52 46 .RISK.AS.TO.THE.QUALITY.AND.PERF
4b5a0 4f 52 4d 41 4e 43 45 20 4f 46 20 54 48 45 20 50 52 4f 47 52 41 4d 0a 49 53 20 57 49 54 48 20 59 ORMANCE.OF.THE.PROGRAM.IS.WITH.Y
4b5c0 4f 55 2e 20 20 53 48 4f 55 4c 44 20 54 48 45 20 50 52 4f 47 52 41 4d 20 50 52 4f 56 45 20 44 45 OU...SHOULD.THE.PROGRAM.PROVE.DE
4b5e0 46 45 43 54 49 56 45 2c 20 59 4f 55 20 41 53 53 55 4d 45 20 54 48 45 20 43 4f 53 54 20 4f 46 0a FECTIVE,.YOU.ASSUME.THE.COST.OF.
4b600 41 4c 4c 20 4e 45 43 45 53 53 41 52 59 20 53 45 52 56 49 43 49 4e 47 2c 20 52 45 50 41 49 52 20 ALL.NECESSARY.SERVICING,.REPAIR.
4b620 4f 52 20 43 4f 52 52 45 43 54 49 4f 4e 2e 0a 0a 20 20 31 36 2e 20 4c 69 6d 69 74 61 74 69 6f 6e OR.CORRECTION.....16..Limitation
4b640 20 6f 66 20 4c 69 61 62 69 6c 69 74 79 2e 0a 0a 20 20 49 4e 20 4e 4f 20 45 56 45 4e 54 20 55 4e .of.Liability.....IN.NO.EVENT.UN
4b660 4c 45 53 53 20 52 45 51 55 49 52 45 44 20 42 59 20 41 50 50 4c 49 43 41 42 4c 45 20 4c 41 57 20 LESS.REQUIRED.BY.APPLICABLE.LAW.
4b680 4f 52 20 41 47 52 45 45 44 20 54 4f 20 49 4e 20 57 52 49 54 49 4e 47 0a 57 49 4c 4c 20 41 4e 59 OR.AGREED.TO.IN.WRITING.WILL.ANY
4b6a0 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 45 52 2c 20 4f 52 20 41 4e 59 20 4f 54 48 45 52 20 .COPYRIGHT.HOLDER,.OR.ANY.OTHER.
4b6c0 50 41 52 54 59 20 57 48 4f 20 4d 4f 44 49 46 49 45 53 20 41 4e 44 2f 4f 52 20 43 4f 4e 56 45 59 PARTY.WHO.MODIFIES.AND/OR.CONVEY
4b6e0 53 0a 54 48 45 20 50 52 4f 47 52 41 4d 20 41 53 20 50 45 52 4d 49 54 54 45 44 20 41 42 4f 56 45 S.THE.PROGRAM.AS.PERMITTED.ABOVE
4b700 2c 20 42 45 20 4c 49 41 42 4c 45 20 54 4f 20 59 4f 55 20 46 4f 52 20 44 41 4d 41 47 45 53 2c 20 ,.BE.LIABLE.TO.YOU.FOR.DAMAGES,.
4b720 49 4e 43 4c 55 44 49 4e 47 20 41 4e 59 0a 47 45 4e 45 52 41 4c 2c 20 53 50 45 43 49 41 4c 2c 20 INCLUDING.ANY.GENERAL,.SPECIAL,.
4b740 49 4e 43 49 44 45 4e 54 41 4c 20 4f 52 20 43 4f 4e 53 45 51 55 45 4e 54 49 41 4c 20 44 41 4d 41 INCIDENTAL.OR.CONSEQUENTIAL.DAMA
4b760 47 45 53 20 41 52 49 53 49 4e 47 20 4f 55 54 20 4f 46 20 54 48 45 0a 55 53 45 20 4f 52 20 49 4e GES.ARISING.OUT.OF.THE.USE.OR.IN
4b780 41 42 49 4c 49 54 59 20 54 4f 20 55 53 45 20 54 48 45 20 50 52 4f 47 52 41 4d 20 28 49 4e 43 4c ABILITY.TO.USE.THE.PROGRAM.(INCL
4b7a0 55 44 49 4e 47 20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 20 54 4f 20 4c 4f 53 53 20 4f 46 UDING.BUT.NOT.LIMITED.TO.LOSS.OF
4b7c0 0a 44 41 54 41 20 4f 52 20 44 41 54 41 20 42 45 49 4e 47 20 52 45 4e 44 45 52 45 44 20 49 4e 41 .DATA.OR.DATA.BEING.RENDERED.INA
4b7e0 43 43 55 52 41 54 45 20 4f 52 20 4c 4f 53 53 45 53 20 53 55 53 54 41 49 4e 45 44 20 42 59 20 59 CCURATE.OR.LOSSES.SUSTAINED.BY.Y
4b800 4f 55 20 4f 52 20 54 48 49 52 44 0a 50 41 52 54 49 45 53 20 4f 52 20 41 20 46 41 49 4c 55 52 45 OU.OR.THIRD.PARTIES.OR.A.FAILURE
4b820 20 4f 46 20 54 48 45 20 50 52 4f 47 52 41 4d 20 54 4f 20 4f 50 45 52 41 54 45 20 57 49 54 48 20 .OF.THE.PROGRAM.TO.OPERATE.WITH.
4b840 41 4e 59 20 4f 54 48 45 52 20 50 52 4f 47 52 41 4d 53 29 2c 0a 45 56 45 4e 20 49 46 20 53 55 43 ANY.OTHER.PROGRAMS),.EVEN.IF.SUC
4b860 48 20 48 4f 4c 44 45 52 20 4f 52 20 4f 54 48 45 52 20 50 41 52 54 59 20 48 41 53 20 42 45 45 4e H.HOLDER.OR.OTHER.PARTY.HAS.BEEN
4b880 20 41 44 56 49 53 45 44 20 4f 46 20 54 48 45 20 50 4f 53 53 49 42 49 4c 49 54 59 20 4f 46 0a 53 .ADVISED.OF.THE.POSSIBILITY.OF.S
4b8a0 55 43 48 20 44 41 4d 41 47 45 53 2e 0a 0a 20 20 31 37 2e 20 49 6e 74 65 72 70 72 65 74 61 74 69 UCH.DAMAGES.....17..Interpretati
4b8c0 6f 6e 20 6f 66 20 53 65 63 74 69 6f 6e 73 20 31 35 20 61 6e 64 20 31 36 2e 0a 0a 20 20 49 66 20 on.of.Sections.15.and.16.....If.
4b8e0 74 68 65 20 64 69 73 63 6c 61 69 6d 65 72 20 6f 66 20 77 61 72 72 61 6e 74 79 20 61 6e 64 20 6c the.disclaimer.of.warranty.and.l
4b900 69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20 70 72 6f 76 69 64 65 64 0a imitation.of.liability.provided.
4b920 61 62 6f 76 65 20 63 61 6e 6e 6f 74 20 62 65 20 67 69 76 65 6e 20 6c 6f 63 61 6c 20 6c 65 67 61 above.cannot.be.given.local.lega
4b940 6c 20 65 66 66 65 63 74 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 69 72 20 74 65 72 6d l.effect.according.to.their.term
4b960 73 2c 0a 72 65 76 69 65 77 69 6e 67 20 63 6f 75 72 74 73 20 73 68 61 6c 6c 20 61 70 70 6c 79 20 s,.reviewing.courts.shall.apply.
4b980 6c 6f 63 61 6c 20 6c 61 77 20 74 68 61 74 20 6d 6f 73 74 20 63 6c 6f 73 65 6c 79 20 61 70 70 72 local.law.that.most.closely.appr
4b9a0 6f 78 69 6d 61 74 65 73 0a 61 6e 20 61 62 73 6f 6c 75 74 65 20 77 61 69 76 65 72 20 6f 66 20 61 oximates.an.absolute.waiver.of.a
4b9c0 6c 6c 20 63 69 76 69 6c 20 6c 69 61 62 69 6c 69 74 79 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e ll.civil.liability.in.connection
4b9e0 20 77 69 74 68 20 74 68 65 0a 50 72 6f 67 72 61 6d 2c 20 75 6e 6c 65 73 73 20 61 20 77 61 72 72 .with.the.Program,.unless.a.warr
4ba00 61 6e 74 79 20 6f 72 20 61 73 73 75 6d 70 74 69 6f 6e 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20 anty.or.assumption.of.liability.
4ba20 61 63 63 6f 6d 70 61 6e 69 65 73 20 61 0a 63 6f 70 79 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 accompanies.a.copy.of.the.Progra
4ba40 6d 20 69 6e 20 72 65 74 75 72 6e 20 66 6f 72 20 61 20 66 65 65 2e 0a 0a 20 20 20 20 20 20 20 20 m.in.return.for.a.fee...........
4ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4e 44 20 4f 46 20 54 45 52 4d 53 20 41 4e 44 20 43 4f .............END.OF.TERMS.AND.CO
4ba80 4e 44 49 54 49 4f 4e 53 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 48 6f 77 20 74 6f 20 41 70 70 NDITIONS..............How.to.App
4baa0 6c 79 20 54 68 65 73 65 20 54 65 72 6d 73 20 74 6f 20 59 6f 75 72 20 4e 65 77 20 50 72 6f 67 72 ly.These.Terms.to.Your.New.Progr
4bac0 61 6d 73 0a 0a 20 20 49 66 20 79 6f 75 20 64 65 76 65 6c 6f 70 20 61 20 6e 65 77 20 70 72 6f 67 ams....If.you.develop.a.new.prog
4bae0 72 61 6d 2c 20 61 6e 64 20 79 6f 75 20 77 61 6e 74 20 69 74 20 74 6f 20 62 65 20 6f 66 20 74 68 ram,.and.you.want.it.to.be.of.th
4bb00 65 20 67 72 65 61 74 65 73 74 0a 70 6f 73 73 69 62 6c 65 20 75 73 65 20 74 6f 20 74 68 65 20 70 e.greatest.possible.use.to.the.p
4bb20 75 62 6c 69 63 2c 20 74 68 65 20 62 65 73 74 20 77 61 79 20 74 6f 20 61 63 68 69 65 76 65 20 74 ublic,.the.best.way.to.achieve.t
4bb40 68 69 73 20 69 73 20 74 6f 20 6d 61 6b 65 20 69 74 0a 66 72 65 65 20 73 6f 66 74 77 61 72 65 20 his.is.to.make.it.free.software.
4bb60 77 68 69 63 68 20 65 76 65 72 79 6f 6e 65 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 which.everyone.can.redistribute.
4bb80 61 6e 64 20 63 68 61 6e 67 65 20 75 6e 64 65 72 20 74 68 65 73 65 20 74 65 72 6d 73 2e 0a 0a 20 and.change.under.these.terms....
4bba0 20 54 6f 20 64 6f 20 73 6f 2c 20 61 74 74 61 63 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 .To.do.so,.attach.the.following.
4bbc0 6e 6f 74 69 63 65 73 20 74 6f 20 74 68 65 20 70 72 6f 67 72 61 6d 2e 20 20 49 74 20 69 73 20 73 notices.to.the.program...It.is.s
4bbe0 61 66 65 73 74 0a 74 6f 20 61 74 74 61 63 68 20 74 68 65 6d 20 74 6f 20 74 68 65 20 73 74 61 72 afest.to.attach.them.to.the.star
4bc00 74 20 6f 66 20 65 61 63 68 20 73 6f 75 72 63 65 20 66 69 6c 65 20 74 6f 20 6d 6f 73 74 20 65 66 t.of.each.source.file.to.most.ef
4bc20 66 65 63 74 69 76 65 6c 79 0a 73 74 61 74 65 20 74 68 65 20 65 78 63 6c 75 73 69 6f 6e 20 6f 66 fectively.state.the.exclusion.of
4bc40 20 77 61 72 72 61 6e 74 79 3b 20 61 6e 64 20 65 61 63 68 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 .warranty;.and.each.file.should.
4bc60 68 61 76 65 20 61 74 20 6c 65 61 73 74 0a 74 68 65 20 22 63 6f 70 79 72 69 67 68 74 22 20 6c 69 have.at.least.the."copyright".li
4bc80 6e 65 20 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 77 68 65 72 65 20 74 68 65 20 66 75 ne.and.a.pointer.to.where.the.fu
4bca0 6c 6c 20 6e 6f 74 69 63 65 20 69 73 20 66 6f 75 6e 64 2e 0a 0a 20 20 20 20 3c 6f 6e 65 20 6c 69 ll.notice.is.found.......<one.li
4bcc0 6e 65 20 74 6f 20 67 69 76 65 20 74 68 65 20 70 72 6f 67 72 61 6d 27 73 20 6e 61 6d 65 20 61 6e ne.to.give.the.program's.name.an
4bce0 64 20 61 20 62 72 69 65 66 20 69 64 65 61 20 6f 66 20 77 68 61 74 20 69 74 20 64 6f 65 73 2e 3e d.a.brief.idea.of.what.it.does.>
4bd00 0a 20 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 3c 79 65 61 72 3e 20 20 3c 6e 61 6d 65 .....Copyright.(C).<year>..<name
4bd20 20 6f 66 20 61 75 74 68 6f 72 3e 0a 0a 20 20 20 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 .of.author>......This.program.is
4bd40 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3a 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 .free.software:.you.can.redistri
4bd60 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 20 20 20 20 69 74 20 75 6e 64 bute.it.and/or.modify.....it.und
4bd80 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 er.the.terms.of.the.GNU.General.
4bda0 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 20 Public.License.as.published.by..
4bdc0 20 20 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c ...the.Free.Software.Foundation,
4bde0 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 .either.version.3.of.the.License
4be00 2c 20 6f 72 0a 20 20 20 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 ,.or.....(at.your.option).any.la
4be20 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 20 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 ter.version.......This.program.i
4be40 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 s.distributed.in.the.hope.that.i
4be60 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 20 20 20 20 62 75 74 20 57 49 54 48 4f 55 t.will.be.useful,.....but.WITHOU
4be80 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 T.ANY.WARRANTY;.without.even.the
4bea0 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 20 20 20 20 4d 45 52 43 48 41 4e .implied.warranty.of.....MERCHAN
4bec0 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 TABILITY.or.FITNESS.FOR.A.PARTIC
4bee0 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 20 20 20 20 47 4e 55 20 47 ULAR.PURPOSE...See.the.....GNU.G
4bf00 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 eneral.Public.License.for.more.d
4bf20 65 74 61 69 6c 73 2e 0a 0a 20 20 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 etails.......You.should.have.rec
4bf40 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 eived.a.copy.of.the.GNU.General.
4bf60 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 20 20 20 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 Public.License.....along.with.th
4bf80 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 73 3a is.program...If.not,.see.<https:
4bfa0 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 41 6c 73 6f 20 //www.gnu.org/licenses/>...Also.
4bfc0 61 64 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 68 6f 77 20 74 6f 20 63 6f 6e 74 61 63 add.information.on.how.to.contac
4bfe0 74 20 79 6f 75 20 62 79 20 65 6c 65 63 74 72 6f 6e 69 63 20 61 6e 64 20 70 61 70 65 72 20 6d 61 t.you.by.electronic.and.paper.ma
4c000 69 6c 2e 0a 0a 20 20 49 66 20 74 68 65 20 70 72 6f 67 72 61 6d 20 64 6f 65 73 20 74 65 72 6d 69 il.....If.the.program.does.termi
4c020 6e 61 6c 20 69 6e 74 65 72 61 63 74 69 6f 6e 2c 20 6d 61 6b 65 20 69 74 20 6f 75 74 70 75 74 20 nal.interaction,.make.it.output.
4c040 61 20 73 68 6f 72 74 0a 6e 6f 74 69 63 65 20 6c 69 6b 65 20 74 68 69 73 20 77 68 65 6e 20 69 74 a.short.notice.like.this.when.it
4c060 20 73 74 61 72 74 73 20 69 6e 20 61 6e 20 69 6e 74 65 72 61 63 74 69 76 65 20 6d 6f 64 65 3a 0a .starts.in.an.interactive.mode:.
4c080 0a 20 20 20 20 3c 70 72 6f 67 72 61 6d 3e 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 3c 79 .....<program>..Copyright.(C).<y
4c0a0 65 61 72 3e 20 20 3c 6e 61 6d 65 20 6f 66 20 61 75 74 68 6f 72 3e 0a 20 20 20 20 54 68 69 73 20 ear>..<name.of.author>.....This.
4c0c0 70 72 6f 67 72 61 6d 20 63 6f 6d 65 73 20 77 69 74 68 20 41 42 53 4f 4c 55 54 45 4c 59 20 4e 4f program.comes.with.ABSOLUTELY.NO
4c0e0 20 57 41 52 52 41 4e 54 59 3b 20 66 6f 72 20 64 65 74 61 69 6c 73 20 74 79 70 65 20 60 73 68 6f .WARRANTY;.for.details.type.`sho
4c100 77 20 77 27 2e 0a 20 20 20 20 54 68 69 73 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 2c w.w'......This.is.free.software,
4c120 20 61 6e 64 20 79 6f 75 20 61 72 65 20 77 65 6c 63 6f 6d 65 20 74 6f 20 72 65 64 69 73 74 72 69 .and.you.are.welcome.to.redistri
4c140 62 75 74 65 20 69 74 0a 20 20 20 20 75 6e 64 65 72 20 63 65 72 74 61 69 6e 20 63 6f 6e 64 69 74 bute.it.....under.certain.condit
4c160 69 6f 6e 73 3b 20 74 79 70 65 20 60 73 68 6f 77 20 63 27 20 66 6f 72 20 64 65 74 61 69 6c 73 2e ions;.type.`show.c'.for.details.
4c180 0a 0a 54 68 65 20 68 79 70 6f 74 68 65 74 69 63 61 6c 20 63 6f 6d 6d 61 6e 64 73 20 60 73 68 6f ..The.hypothetical.commands.`sho
4c1a0 77 20 77 27 20 61 6e 64 20 60 73 68 6f 77 20 63 27 20 73 68 6f 75 6c 64 20 73 68 6f 77 20 74 68 w.w'.and.`show.c'.should.show.th
4c1c0 65 20 61 70 70 72 6f 70 72 69 61 74 65 0a 70 61 72 74 73 20 6f 66 20 74 68 65 20 47 65 6e 65 72 e.appropriate.parts.of.the.Gener
4c1e0 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2e 20 20 4f 66 20 63 6f 75 72 73 65 2c 20 79 al.Public.License...Of.course,.y
4c200 6f 75 72 20 70 72 6f 67 72 61 6d 27 73 20 63 6f 6d 6d 61 6e 64 73 0a 6d 69 67 68 74 20 62 65 20 our.program's.commands.might.be.
4c220 64 69 66 66 65 72 65 6e 74 3b 20 66 6f 72 20 61 20 47 55 49 20 69 6e 74 65 72 66 61 63 65 2c 20 different;.for.a.GUI.interface,.
4c240 79 6f 75 20 77 6f 75 6c 64 20 75 73 65 20 61 6e 20 22 61 62 6f 75 74 20 62 6f 78 22 2e 0a 0a 20 you.would.use.an."about.box"....
4c260 20 59 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 67 65 74 20 79 6f 75 72 20 65 6d 70 6c 6f 79 .You.should.also.get.your.employ
4c280 65 72 20 28 69 66 20 79 6f 75 20 77 6f 72 6b 20 61 73 20 61 20 70 72 6f 67 72 61 6d 6d 65 72 29 er.(if.you.work.as.a.programmer)
4c2a0 20 6f 72 20 73 63 68 6f 6f 6c 2c 0a 69 66 20 61 6e 79 2c 20 74 6f 20 73 69 67 6e 20 61 20 22 63 .or.school,.if.any,.to.sign.a."c
4c2c0 6f 70 79 72 69 67 68 74 20 64 69 73 63 6c 61 69 6d 65 72 22 20 66 6f 72 20 74 68 65 20 70 72 6f opyright.disclaimer".for.the.pro
4c2e0 67 72 61 6d 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0a 46 6f 72 20 6d 6f 72 65 20 69 6e 66 gram,.if.necessary..For.more.inf
4c300 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 69 73 2c 20 61 6e 64 20 68 6f 77 20 74 6f 20 61 70 70 ormation.on.this,.and.how.to.app
4c320 6c 79 20 61 6e 64 20 66 6f 6c 6c 6f 77 20 74 68 65 20 47 4e 55 20 47 50 4c 2c 20 73 65 65 0a 3c ly.and.follow.the.GNU.GPL,.see.<
4c340 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a https://www.gnu.org/licenses/>..
4c360 0a 20 20 54 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 ...The.GNU.General.Public.Licens
4c380 65 20 64 6f 65 73 20 6e 6f 74 20 70 65 72 6d 69 74 20 69 6e 63 6f 72 70 6f 72 61 74 69 6e 67 20 e.does.not.permit.incorporating.
4c3a0 79 6f 75 72 20 70 72 6f 67 72 61 6d 0a 69 6e 74 6f 20 70 72 6f 70 72 69 65 74 61 72 79 20 70 72 your.program.into.proprietary.pr
4c3c0 6f 67 72 61 6d 73 2e 20 20 49 66 20 79 6f 75 72 20 70 72 6f 67 72 61 6d 20 69 73 20 61 20 73 75 ograms...If.your.program.is.a.su
4c3e0 62 72 6f 75 74 69 6e 65 20 6c 69 62 72 61 72 79 2c 20 79 6f 75 0a 6d 61 79 20 63 6f 6e 73 69 64 broutine.library,.you.may.consid
4c400 65 72 20 69 74 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 74 6f 20 70 65 72 6d 69 74 20 6c 69 6e 6b er.it.more.useful.to.permit.link
4c420 69 6e 67 20 70 72 6f 70 72 69 65 74 61 72 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 77 69 74 ing.proprietary.applications.wit
4c440 68 0a 74 68 65 20 6c 69 62 72 61 72 79 2e 20 20 49 66 20 74 68 69 73 20 69 73 20 77 68 61 74 20 h.the.library...If.this.is.what.
4c460 79 6f 75 20 77 61 6e 74 20 74 6f 20 64 6f 2c 20 75 73 65 20 74 68 65 20 47 4e 55 20 4c 65 73 73 you.want.to.do,.use.the.GNU.Less
4c480 65 72 20 47 65 6e 65 72 61 6c 0a 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 69 6e 73 74 65 61 er.General.Public.License.instea
4c4a0 64 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 42 75 74 20 66 69 72 73 74 2c 20 70 d.of.this.License...But.first,.p
4c4c0 6c 65 61 73 65 20 72 65 61 64 0a 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f lease.read.<https://www.gnu.org/
4c4e0 6c 69 63 65 6e 73 65 73 2f 77 68 79 2d 6e 6f 74 2d 6c 67 70 6c 2e 68 74 6d 6c 3e 2e 0a 50 4b 03 licenses/why-not-lgpl.html>..PK.
4c500 04 14 00 00 00 00 00 11 3c 05 59 93 f3 07 4f 39 89 00 00 39 89 00 00 14 00 00 00 63 6f 6d 6d 6f ........<.Y...O9...9.......commo
4c520 6e 5f 75 74 69 6c 73 2f 4c 49 43 45 4e 53 45 47 4e 55 20 47 45 4e 45 52 41 4c 20 50 55 42 4c 49 n_utils/LICENSEGNU.GENERAL.PUBLI
4c540 43 20 4c 49 43 45 4e 53 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 C.LICENSE.......................
4c560 20 56 65 72 73 69 6f 6e 20 33 2c 20 32 39 20 4a 75 6e 65 20 32 30 30 37 0a 0a 20 43 6f 70 79 72 .Version.3,.29.June.2007...Copyr
4c580 69 67 68 74 20 28 43 29 20 32 30 30 37 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e ight.(C).2007.Free.Software.Foun
4c5a0 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 20 3c 68 74 74 70 73 3a 2f 2f 66 73 66 2e 6f 72 67 2f 3e 0a dation,.Inc..<https://fsf.org/>.
4c5c0 20 45 76 65 72 79 6f 6e 65 20 69 73 20 70 65 72 6d 69 74 74 65 64 20 74 6f 20 63 6f 70 79 20 61 .Everyone.is.permitted.to.copy.a
4c5e0 6e 64 20 64 69 73 74 72 69 62 75 74 65 20 76 65 72 62 61 74 69 6d 20 63 6f 70 69 65 73 0a 20 6f nd.distribute.verbatim.copies..o
4c600 66 20 74 68 69 73 20 6c 69 63 65 6e 73 65 20 64 6f 63 75 6d 65 6e 74 2c 20 62 75 74 20 63 68 61 f.this.license.document,.but.cha
4c620 6e 67 69 6e 67 20 69 74 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 2e 0a 0a 20 20 20 20 20 20 nging.it.is.not.allowed.........
4c640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 72 65 61 6d 62 6c 65 0a 0a ......................Preamble..
4c660 20 20 54 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 ..The.GNU.General.Public.License
4c680 20 69 73 20 61 20 66 72 65 65 2c 20 63 6f 70 79 6c 65 66 74 20 6c 69 63 65 6e 73 65 20 66 6f 72 .is.a.free,.copyleft.license.for
4c6a0 0a 73 6f 66 74 77 61 72 65 20 61 6e 64 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f 66 20 77 6f 72 .software.and.other.kinds.of.wor
4c6c0 6b 73 2e 0a 0a 20 20 54 68 65 20 6c 69 63 65 6e 73 65 73 20 66 6f 72 20 6d 6f 73 74 20 73 6f 66 ks.....The.licenses.for.most.sof
4c6e0 74 77 61 72 65 20 61 6e 64 20 6f 74 68 65 72 20 70 72 61 63 74 69 63 61 6c 20 77 6f 72 6b 73 20 tware.and.other.practical.works.
4c700 61 72 65 20 64 65 73 69 67 6e 65 64 0a 74 6f 20 74 61 6b 65 20 61 77 61 79 20 79 6f 75 72 20 66 are.designed.to.take.away.your.f
4c720 72 65 65 64 6f 6d 20 74 6f 20 73 68 61 72 65 20 61 6e 64 20 63 68 61 6e 67 65 20 74 68 65 20 77 reedom.to.share.and.change.the.w
4c740 6f 72 6b 73 2e 20 20 42 79 20 63 6f 6e 74 72 61 73 74 2c 0a 74 68 65 20 47 4e 55 20 47 65 6e 65 orks...By.contrast,.the.GNU.Gene
4c760 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 69 73 20 69 6e 74 65 6e 64 65 64 20 74 ral.Public.License.is.intended.t
4c780 6f 20 67 75 61 72 61 6e 74 65 65 20 79 6f 75 72 20 66 72 65 65 64 6f 6d 20 74 6f 0a 73 68 61 72 o.guarantee.your.freedom.to.shar
4c7a0 65 20 61 6e 64 20 63 68 61 6e 67 65 20 61 6c 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 61 20 70 e.and.change.all.versions.of.a.p
4c7c0 72 6f 67 72 61 6d 2d 2d 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 69 74 20 72 65 6d 61 69 6e 73 20 rogram--to.make.sure.it.remains.
4c7e0 66 72 65 65 0a 73 6f 66 74 77 61 72 65 20 66 6f 72 20 61 6c 6c 20 69 74 73 20 75 73 65 72 73 2e free.software.for.all.its.users.
4c800 20 20 57 65 2c 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 ..We,.the.Free.Software.Foundati
4c820 6f 6e 2c 20 75 73 65 20 74 68 65 0a 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c on,.use.the.GNU.General.Public.L
4c840 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 73 74 20 6f 66 20 6f 75 72 20 73 6f 66 74 77 61 72 65 3b icense.for.most.of.our.software;
4c860 20 69 74 20 61 70 70 6c 69 65 73 20 61 6c 73 6f 20 74 6f 0a 61 6e 79 20 6f 74 68 65 72 20 77 6f .it.applies.also.to.any.other.wo
4c880 72 6b 20 72 65 6c 65 61 73 65 64 20 74 68 69 73 20 77 61 79 20 62 79 20 69 74 73 20 61 75 74 68 rk.released.this.way.by.its.auth
4c8a0 6f 72 73 2e 20 20 59 6f 75 20 63 61 6e 20 61 70 70 6c 79 20 69 74 20 74 6f 0a 79 6f 75 72 20 70 ors...You.can.apply.it.to.your.p
4c8c0 72 6f 67 72 61 6d 73 2c 20 74 6f 6f 2e 0a 0a 20 20 57 68 65 6e 20 77 65 20 73 70 65 61 6b 20 6f rograms,.too.....When.we.speak.o
4c8e0 66 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 2c 20 77 65 20 61 72 65 20 72 65 66 65 72 72 69 6e f.free.software,.we.are.referrin
4c900 67 20 74 6f 20 66 72 65 65 64 6f 6d 2c 20 6e 6f 74 0a 70 72 69 63 65 2e 20 20 4f 75 72 20 47 65 g.to.freedom,.not.price...Our.Ge
4c920 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 73 20 61 72 65 20 64 65 73 69 67 6e neral.Public.Licenses.are.design
4c940 65 64 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 79 6f 75 0a 68 61 76 65 20 74 68 ed.to.make.sure.that.you.have.th
4c960 65 20 66 72 65 65 64 6f 6d 20 74 6f 20 64 69 73 74 72 69 62 75 74 65 20 63 6f 70 69 65 73 20 6f e.freedom.to.distribute.copies.o
4c980 66 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 20 28 61 6e 64 20 63 68 61 72 67 65 20 66 6f 72 0a f.free.software.(and.charge.for.
4c9a0 74 68 65 6d 20 69 66 20 79 6f 75 20 77 69 73 68 29 2c 20 74 68 61 74 20 79 6f 75 20 72 65 63 65 them.if.you.wish),.that.you.rece
4c9c0 69 76 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6f 72 20 63 61 6e 20 67 65 74 20 69 74 20 69 66 ive.source.code.or.can.get.it.if
4c9e0 20 79 6f 75 0a 77 61 6e 74 20 69 74 2c 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 63 68 61 6e 67 .you.want.it,.that.you.can.chang
4ca00 65 20 74 68 65 20 73 6f 66 74 77 61 72 65 20 6f 72 20 75 73 65 20 70 69 65 63 65 73 20 6f 66 20 e.the.software.or.use.pieces.of.
4ca20 69 74 20 69 6e 20 6e 65 77 0a 66 72 65 65 20 70 72 6f 67 72 61 6d 73 2c 20 61 6e 64 20 74 68 61 it.in.new.free.programs,.and.tha
4ca40 74 20 79 6f 75 20 6b 6e 6f 77 20 79 6f 75 20 63 61 6e 20 64 6f 20 74 68 65 73 65 20 74 68 69 6e t.you.know.you.can.do.these.thin
4ca60 67 73 2e 0a 0a 20 20 54 6f 20 70 72 6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68 74 73 2c 20 77 gs.....To.protect.your.rights,.w
4ca80 65 20 6e 65 65 64 20 74 6f 20 70 72 65 76 65 6e 74 20 6f 74 68 65 72 73 20 66 72 6f 6d 20 64 65 e.need.to.prevent.others.from.de
4caa0 6e 79 69 6e 67 20 79 6f 75 0a 74 68 65 73 65 20 72 69 67 68 74 73 20 6f 72 20 61 73 6b 69 6e 67 nying.you.these.rights.or.asking
4cac0 20 79 6f 75 20 74 6f 20 73 75 72 72 65 6e 64 65 72 20 74 68 65 20 72 69 67 68 74 73 2e 20 20 54 .you.to.surrender.the.rights...T
4cae0 68 65 72 65 66 6f 72 65 2c 20 79 6f 75 20 68 61 76 65 0a 63 65 72 74 61 69 6e 20 72 65 73 70 6f herefore,.you.have.certain.respo
4cb00 6e 73 69 62 69 6c 69 74 69 65 73 20 69 66 20 79 6f 75 20 64 69 73 74 72 69 62 75 74 65 20 63 6f nsibilities.if.you.distribute.co
4cb20 70 69 65 73 20 6f 66 20 74 68 65 20 73 6f 66 74 77 61 72 65 2c 20 6f 72 20 69 66 0a 79 6f 75 20 pies.of.the.software,.or.if.you.
4cb40 6d 6f 64 69 66 79 20 69 74 3a 20 72 65 73 70 6f 6e 73 69 62 69 6c 69 74 69 65 73 20 74 6f 20 72 modify.it:.responsibilities.to.r
4cb60 65 73 70 65 63 74 20 74 68 65 20 66 72 65 65 64 6f 6d 20 6f 66 20 6f 74 68 65 72 73 2e 0a 0a 20 espect.the.freedom.of.others....
4cb80 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 79 6f 75 20 64 69 73 74 72 69 62 75 74 65 20 .For.example,.if.you.distribute.
4cba0 63 6f 70 69 65 73 20 6f 66 20 73 75 63 68 20 61 20 70 72 6f 67 72 61 6d 2c 20 77 68 65 74 68 65 copies.of.such.a.program,.whethe
4cbc0 72 0a 67 72 61 74 69 73 20 6f 72 20 66 6f 72 20 61 20 66 65 65 2c 20 79 6f 75 20 6d 75 73 74 20 r.gratis.or.for.a.fee,.you.must.
4cbe0 70 61 73 73 20 6f 6e 20 74 6f 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 73 20 74 68 65 20 73 61 pass.on.to.the.recipients.the.sa
4cc00 6d 65 0a 66 72 65 65 64 6f 6d 73 20 74 68 61 74 20 79 6f 75 20 72 65 63 65 69 76 65 64 2e 20 20 me.freedoms.that.you.received...
4cc20 59 6f 75 20 6d 75 73 74 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 79 2c 20 74 6f You.must.make.sure.that.they,.to
4cc40 6f 2c 20 72 65 63 65 69 76 65 0a 6f 72 20 63 61 6e 20 67 65 74 20 74 68 65 20 73 6f 75 72 63 65 o,.receive.or.can.get.the.source
4cc60 20 63 6f 64 65 2e 20 20 41 6e 64 20 79 6f 75 20 6d 75 73 74 20 73 68 6f 77 20 74 68 65 6d 20 74 .code...And.you.must.show.them.t
4cc80 68 65 73 65 20 74 65 72 6d 73 20 73 6f 20 74 68 65 79 0a 6b 6e 6f 77 20 74 68 65 69 72 20 72 69 hese.terms.so.they.know.their.ri
4cca0 67 68 74 73 2e 0a 0a 20 20 44 65 76 65 6c 6f 70 65 72 73 20 74 68 61 74 20 75 73 65 20 74 68 65 ghts.....Developers.that.use.the
4ccc0 20 47 4e 55 20 47 50 4c 20 70 72 6f 74 65 63 74 20 79 6f 75 72 20 72 69 67 68 74 73 20 77 69 74 .GNU.GPL.protect.your.rights.wit
4cce0 68 20 74 77 6f 20 73 74 65 70 73 3a 0a 28 31 29 20 61 73 73 65 72 74 20 63 6f 70 79 72 69 67 68 h.two.steps:.(1).assert.copyrigh
4cd00 74 20 6f 6e 20 74 68 65 20 73 6f 66 74 77 61 72 65 2c 20 61 6e 64 20 28 32 29 20 6f 66 66 65 72 t.on.the.software,.and.(2).offer
4cd20 20 79 6f 75 20 74 68 69 73 20 4c 69 63 65 6e 73 65 0a 67 69 76 69 6e 67 20 79 6f 75 20 6c 65 67 .you.this.License.giving.you.leg
4cd40 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 63 6f 70 79 2c 20 64 69 73 74 72 69 62 75 74 al.permission.to.copy,.distribut
4cd60 65 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 20 69 74 2e 0a 0a 20 20 46 6f 72 20 74 68 65 20 64 e.and/or.modify.it.....For.the.d
4cd80 65 76 65 6c 6f 70 65 72 73 27 20 61 6e 64 20 61 75 74 68 6f 72 73 27 20 70 72 6f 74 65 63 74 69 evelopers'.and.authors'.protecti
4cda0 6f 6e 2c 20 74 68 65 20 47 50 4c 20 63 6c 65 61 72 6c 79 20 65 78 70 6c 61 69 6e 73 0a 74 68 61 on,.the.GPL.clearly.explains.tha
4cdc0 74 20 74 68 65 72 65 20 69 73 20 6e 6f 20 77 61 72 72 61 6e 74 79 20 66 6f 72 20 74 68 69 73 20 t.there.is.no.warranty.for.this.
4cde0 66 72 65 65 20 73 6f 66 74 77 61 72 65 2e 20 20 46 6f 72 20 62 6f 74 68 20 75 73 65 72 73 27 20 free.software...For.both.users'.
4ce00 61 6e 64 0a 61 75 74 68 6f 72 73 27 20 73 61 6b 65 2c 20 74 68 65 20 47 50 4c 20 72 65 71 75 69 and.authors'.sake,.the.GPL.requi
4ce20 72 65 73 20 74 68 61 74 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 62 65 20 6d 61 res.that.modified.versions.be.ma
4ce40 72 6b 65 64 20 61 73 0a 63 68 61 6e 67 65 64 2c 20 73 6f 20 74 68 61 74 20 74 68 65 69 72 20 70 rked.as.changed,.so.that.their.p
4ce60 72 6f 62 6c 65 6d 73 20 77 69 6c 6c 20 6e 6f 74 20 62 65 20 61 74 74 72 69 62 75 74 65 64 20 65 roblems.will.not.be.attributed.e
4ce80 72 72 6f 6e 65 6f 75 73 6c 79 20 74 6f 0a 61 75 74 68 6f 72 73 20 6f 66 20 70 72 65 76 69 6f 75 rroneously.to.authors.of.previou
4cea0 73 20 76 65 72 73 69 6f 6e 73 2e 0a 0a 20 20 53 6f 6d 65 20 64 65 76 69 63 65 73 20 61 72 65 20 s.versions.....Some.devices.are.
4cec0 64 65 73 69 67 6e 65 64 20 74 6f 20 64 65 6e 79 20 75 73 65 72 73 20 61 63 63 65 73 73 20 74 6f designed.to.deny.users.access.to
4cee0 20 69 6e 73 74 61 6c 6c 20 6f 72 20 72 75 6e 0a 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e .install.or.run.modified.version
4cf00 73 20 6f 66 20 74 68 65 20 73 6f 66 74 77 61 72 65 20 69 6e 73 69 64 65 20 74 68 65 6d 2c 20 61 s.of.the.software.inside.them,.a
4cf20 6c 74 68 6f 75 67 68 20 74 68 65 20 6d 61 6e 75 66 61 63 74 75 72 65 72 0a 63 61 6e 20 64 6f 20 lthough.the.manufacturer.can.do.
4cf40 73 6f 2e 20 20 54 68 69 73 20 69 73 20 66 75 6e 64 61 6d 65 6e 74 61 6c 6c 79 20 69 6e 63 6f 6d so...This.is.fundamentally.incom
4cf60 70 61 74 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 61 69 6d 20 6f 66 0a 70 72 6f 74 65 63 74 69 patible.with.the.aim.of.protecti
4cf80 6e 67 20 75 73 65 72 73 27 20 66 72 65 65 64 6f 6d 20 74 6f 20 63 68 61 6e 67 65 20 74 68 65 20 ng.users'.freedom.to.change.the.
4cfa0 73 6f 66 74 77 61 72 65 2e 20 20 54 68 65 20 73 79 73 74 65 6d 61 74 69 63 0a 70 61 74 74 65 72 software...The.systematic.patter
4cfc0 6e 20 6f 66 20 73 75 63 68 20 61 62 75 73 65 20 6f 63 63 75 72 73 20 69 6e 20 74 68 65 20 61 72 n.of.such.abuse.occurs.in.the.ar
4cfe0 65 61 20 6f 66 20 70 72 6f 64 75 63 74 73 20 66 6f 72 20 69 6e 64 69 76 69 64 75 61 6c 73 20 74 ea.of.products.for.individuals.t
4d000 6f 0a 75 73 65 2c 20 77 68 69 63 68 20 69 73 20 70 72 65 63 69 73 65 6c 79 20 77 68 65 72 65 20 o.use,.which.is.precisely.where.
4d020 69 74 20 69 73 20 6d 6f 73 74 20 75 6e 61 63 63 65 70 74 61 62 6c 65 2e 20 20 54 68 65 72 65 66 it.is.most.unacceptable...Theref
4d040 6f 72 65 2c 20 77 65 0a 68 61 76 65 20 64 65 73 69 67 6e 65 64 20 74 68 69 73 20 76 65 72 73 69 ore,.we.have.designed.this.versi
4d060 6f 6e 20 6f 66 20 74 68 65 20 47 50 4c 20 74 6f 20 70 72 6f 68 69 62 69 74 20 74 68 65 20 70 72 on.of.the.GPL.to.prohibit.the.pr
4d080 61 63 74 69 63 65 20 66 6f 72 20 74 68 6f 73 65 0a 70 72 6f 64 75 63 74 73 2e 20 20 49 66 20 73 actice.for.those.products...If.s
4d0a0 75 63 68 20 70 72 6f 62 6c 65 6d 73 20 61 72 69 73 65 20 73 75 62 73 74 61 6e 74 69 61 6c 6c 79 uch.problems.arise.substantially
4d0c0 20 69 6e 20 6f 74 68 65 72 20 64 6f 6d 61 69 6e 73 2c 20 77 65 0a 73 74 61 6e 64 20 72 65 61 64 .in.other.domains,.we.stand.read
4d0e0 79 20 74 6f 20 65 78 74 65 6e 64 20 74 68 69 73 20 70 72 6f 76 69 73 69 6f 6e 20 74 6f 20 74 68 y.to.extend.this.provision.to.th
4d100 6f 73 65 20 64 6f 6d 61 69 6e 73 20 69 6e 20 66 75 74 75 72 65 20 76 65 72 73 69 6f 6e 73 0a 6f ose.domains.in.future.versions.o
4d120 66 20 74 68 65 20 47 50 4c 2c 20 61 73 20 6e 65 65 64 65 64 20 74 6f 20 70 72 6f 74 65 63 74 20 f.the.GPL,.as.needed.to.protect.
4d140 74 68 65 20 66 72 65 65 64 6f 6d 20 6f 66 20 75 73 65 72 73 2e 0a 0a 20 20 46 69 6e 61 6c 6c 79 the.freedom.of.users.....Finally
4d160 2c 20 65 76 65 72 79 20 70 72 6f 67 72 61 6d 20 69 73 20 74 68 72 65 61 74 65 6e 65 64 20 63 6f ,.every.program.is.threatened.co
4d180 6e 73 74 61 6e 74 6c 79 20 62 79 20 73 6f 66 74 77 61 72 65 20 70 61 74 65 6e 74 73 2e 0a 53 74 nstantly.by.software.patents..St
4d1a0 61 74 65 73 20 73 68 6f 75 6c 64 20 6e 6f 74 20 61 6c 6c 6f 77 20 70 61 74 65 6e 74 73 20 74 6f ates.should.not.allow.patents.to
4d1c0 20 72 65 73 74 72 69 63 74 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 61 6e 64 20 75 73 65 20 6f 66 .restrict.development.and.use.of
4d1e0 0a 73 6f 66 74 77 61 72 65 20 6f 6e 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 65 20 63 6f 6d .software.on.general-purpose.com
4d200 70 75 74 65 72 73 2c 20 62 75 74 20 69 6e 20 74 68 6f 73 65 20 74 68 61 74 20 64 6f 2c 20 77 65 puters,.but.in.those.that.do,.we
4d220 20 77 69 73 68 20 74 6f 0a 61 76 6f 69 64 20 74 68 65 20 73 70 65 63 69 61 6c 20 64 61 6e 67 65 .wish.to.avoid.the.special.dange
4d240 72 20 74 68 61 74 20 70 61 74 65 6e 74 73 20 61 70 70 6c 69 65 64 20 74 6f 20 61 20 66 72 65 65 r.that.patents.applied.to.a.free
4d260 20 70 72 6f 67 72 61 6d 20 63 6f 75 6c 64 0a 6d 61 6b 65 20 69 74 20 65 66 66 65 63 74 69 76 65 .program.could.make.it.effective
4d280 6c 79 20 70 72 6f 70 72 69 65 74 61 72 79 2e 20 20 54 6f 20 70 72 65 76 65 6e 74 20 74 68 69 73 ly.proprietary...To.prevent.this
4d2a0 2c 20 74 68 65 20 47 50 4c 20 61 73 73 75 72 65 73 20 74 68 61 74 0a 70 61 74 65 6e 74 73 20 63 ,.the.GPL.assures.that.patents.c
4d2c0 61 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 74 6f 20 72 65 6e 64 65 72 20 74 68 65 20 70 72 6f 67 annot.be.used.to.render.the.prog
4d2e0 72 61 6d 20 6e 6f 6e 2d 66 72 65 65 2e 0a 0a 20 20 54 68 65 20 70 72 65 63 69 73 65 20 74 65 72 ram.non-free.....The.precise.ter
4d300 6d 73 20 61 6e 64 20 63 6f 6e 64 69 74 69 6f 6e 73 20 66 6f 72 20 63 6f 70 79 69 6e 67 2c 20 64 ms.and.conditions.for.copying,.d
4d320 69 73 74 72 69 62 75 74 69 6f 6e 20 61 6e 64 0a 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 66 6f 6c istribution.and.modification.fol
4d340 6c 6f 77 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 45 52 low..........................TER
4d360 4d 53 20 41 4e 44 20 43 4f 4e 44 49 54 49 4f 4e 53 0a 0a 20 20 30 2e 20 44 65 66 69 6e 69 74 69 MS.AND.CONDITIONS....0..Definiti
4d380 6f 6e 73 2e 0a 0a 20 20 22 54 68 69 73 20 4c 69 63 65 6e 73 65 22 20 72 65 66 65 72 73 20 74 6f ons....."This.License".refers.to
4d3a0 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 .version.3.of.the.GNU.General.Pu
4d3c0 62 6c 69 63 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 22 43 6f 70 79 72 69 67 68 74 22 20 61 6c 73 blic.License....."Copyright".als
4d3e0 6f 20 6d 65 61 6e 73 20 63 6f 70 79 72 69 67 68 74 2d 6c 69 6b 65 20 6c 61 77 73 20 74 68 61 74 o.means.copyright-like.laws.that
4d400 20 61 70 70 6c 79 20 74 6f 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f 66 0a 77 6f 72 6b 73 2c 20 .apply.to.other.kinds.of.works,.
4d420 73 75 63 68 20 61 73 20 73 65 6d 69 63 6f 6e 64 75 63 74 6f 72 20 6d 61 73 6b 73 2e 0a 0a 20 20 such.as.semiconductor.masks.....
4d440 22 54 68 65 20 50 72 6f 67 72 61 6d 22 20 72 65 66 65 72 73 20 74 6f 20 61 6e 79 20 63 6f 70 79 "The.Program".refers.to.any.copy
4d460 72 69 67 68 74 61 62 6c 65 20 77 6f 72 6b 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 65 72 20 74 68 rightable.work.licensed.under.th
4d480 69 73 0a 4c 69 63 65 6e 73 65 2e 20 20 45 61 63 68 20 6c 69 63 65 6e 73 65 65 20 69 73 20 61 64 is.License...Each.licensee.is.ad
4d4a0 64 72 65 73 73 65 64 20 61 73 20 22 79 6f 75 22 2e 20 20 22 4c 69 63 65 6e 73 65 65 73 22 20 61 dressed.as."you"..."Licensees".a
4d4c0 6e 64 0a 22 72 65 63 69 70 69 65 6e 74 73 22 20 6d 61 79 20 62 65 20 69 6e 64 69 76 69 64 75 61 nd."recipients".may.be.individua
4d4e0 6c 73 20 6f 72 20 6f 72 67 61 6e 69 7a 61 74 69 6f 6e 73 2e 0a 0a 20 20 54 6f 20 22 6d 6f 64 69 ls.or.organizations.....To."modi
4d500 66 79 22 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 6f 20 63 6f 70 79 20 66 72 6f 6d 20 6f 72 fy".a.work.means.to.copy.from.or
4d520 20 61 64 61 70 74 20 61 6c 6c 20 6f 72 20 70 61 72 74 20 6f 66 20 74 68 65 20 77 6f 72 6b 0a 69 .adapt.all.or.part.of.the.work.i
4d540 6e 20 61 20 66 61 73 68 69 6f 6e 20 72 65 71 75 69 72 69 6e 67 20 63 6f 70 79 72 69 67 68 74 20 n.a.fashion.requiring.copyright.
4d560 70 65 72 6d 69 73 73 69 6f 6e 2c 20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 6d 61 6b 69 6e permission,.other.than.the.makin
4d580 67 20 6f 66 20 61 6e 0a 65 78 61 63 74 20 63 6f 70 79 2e 20 20 54 68 65 20 72 65 73 75 6c 74 69 g.of.an.exact.copy...The.resulti
4d5a0 6e 67 20 77 6f 72 6b 20 69 73 20 63 61 6c 6c 65 64 20 61 20 22 6d 6f 64 69 66 69 65 64 20 76 65 ng.work.is.called.a."modified.ve
4d5c0 72 73 69 6f 6e 22 20 6f 66 20 74 68 65 0a 65 61 72 6c 69 65 72 20 77 6f 72 6b 20 6f 72 20 61 20 rsion".of.the.earlier.work.or.a.
4d5e0 77 6f 72 6b 20 22 62 61 73 65 64 20 6f 6e 22 20 74 68 65 20 65 61 72 6c 69 65 72 20 77 6f 72 6b work."based.on".the.earlier.work
4d600 2e 0a 0a 20 20 41 20 22 63 6f 76 65 72 65 64 20 77 6f 72 6b 22 20 6d 65 61 6e 73 20 65 69 74 68 .....A."covered.work".means.eith
4d620 65 72 20 74 68 65 20 75 6e 6d 6f 64 69 66 69 65 64 20 50 72 6f 67 72 61 6d 20 6f 72 20 61 20 77 er.the.unmodified.Program.or.a.w
4d640 6f 72 6b 20 62 61 73 65 64 0a 6f 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 54 6f 20 ork.based.on.the.Program.....To.
4d660 22 70 72 6f 70 61 67 61 74 65 22 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 74 6f 20 64 6f 20 61 "propagate".a.work.means.to.do.a
4d680 6e 79 74 68 69 6e 67 20 77 69 74 68 20 69 74 20 74 68 61 74 2c 20 77 69 74 68 6f 75 74 0a 70 65 nything.with.it.that,.without.pe
4d6a0 72 6d 69 73 73 69 6f 6e 2c 20 77 6f 75 6c 64 20 6d 61 6b 65 20 79 6f 75 20 64 69 72 65 63 74 6c rmission,.would.make.you.directl
4d6c0 79 20 6f 72 20 73 65 63 6f 6e 64 61 72 69 6c 79 20 6c 69 61 62 6c 65 20 66 6f 72 0a 69 6e 66 72 y.or.secondarily.liable.for.infr
4d6e0 69 6e 67 65 6d 65 6e 74 20 75 6e 64 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 63 6f 70 79 72 69 ingement.under.applicable.copyri
4d700 67 68 74 20 6c 61 77 2c 20 65 78 63 65 70 74 20 65 78 65 63 75 74 69 6e 67 20 69 74 20 6f 6e 20 ght.law,.except.executing.it.on.
4d720 61 0a 63 6f 6d 70 75 74 65 72 20 6f 72 20 6d 6f 64 69 66 79 69 6e 67 20 61 20 70 72 69 76 61 74 a.computer.or.modifying.a.privat
4d740 65 20 63 6f 70 79 2e 20 20 50 72 6f 70 61 67 61 74 69 6f 6e 20 69 6e 63 6c 75 64 65 73 20 63 6f e.copy...Propagation.includes.co
4d760 70 79 69 6e 67 2c 0a 64 69 73 74 72 69 62 75 74 69 6f 6e 20 28 77 69 74 68 20 6f 72 20 77 69 74 pying,.distribution.(with.or.wit
4d780 68 6f 75 74 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 29 2c 20 6d 61 6b 69 6e 67 20 61 76 61 69 6c hout.modification),.making.avail
4d7a0 61 62 6c 65 20 74 6f 20 74 68 65 0a 70 75 62 6c 69 63 2c 20 61 6e 64 20 69 6e 20 73 6f 6d 65 20 able.to.the.public,.and.in.some.
4d7c0 63 6f 75 6e 74 72 69 65 73 20 6f 74 68 65 72 20 61 63 74 69 76 69 74 69 65 73 20 61 73 20 77 65 countries.other.activities.as.we
4d7e0 6c 6c 2e 0a 0a 20 20 54 6f 20 22 63 6f 6e 76 65 79 22 20 61 20 77 6f 72 6b 20 6d 65 61 6e 73 20 ll.....To."convey".a.work.means.
4d800 61 6e 79 20 6b 69 6e 64 20 6f 66 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 74 68 61 74 20 65 6e 61 any.kind.of.propagation.that.ena
4d820 62 6c 65 73 20 6f 74 68 65 72 0a 70 61 72 74 69 65 73 20 74 6f 20 6d 61 6b 65 20 6f 72 20 72 65 bles.other.parties.to.make.or.re
4d840 63 65 69 76 65 20 63 6f 70 69 65 73 2e 20 20 4d 65 72 65 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 ceive.copies...Mere.interaction.
4d860 77 69 74 68 20 61 20 75 73 65 72 20 74 68 72 6f 75 67 68 0a 61 20 63 6f 6d 70 75 74 65 72 20 6e with.a.user.through.a.computer.n
4d880 65 74 77 6f 72 6b 2c 20 77 69 74 68 20 6e 6f 20 74 72 61 6e 73 66 65 72 20 6f 66 20 61 20 63 6f etwork,.with.no.transfer.of.a.co
4d8a0 70 79 2c 20 69 73 20 6e 6f 74 20 63 6f 6e 76 65 79 69 6e 67 2e 0a 0a 20 20 41 6e 20 69 6e 74 65 py,.is.not.conveying.....An.inte
4d8c0 72 61 63 74 69 76 65 20 75 73 65 72 20 69 6e 74 65 72 66 61 63 65 20 64 69 73 70 6c 61 79 73 20 ractive.user.interface.displays.
4d8e0 22 41 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 22 0a 74 6f 20 74 "Appropriate.Legal.Notices".to.t
4d900 68 65 20 65 78 74 65 6e 74 20 74 68 61 74 20 69 74 20 69 6e 63 6c 75 64 65 73 20 61 20 63 6f 6e he.extent.that.it.includes.a.con
4d920 76 65 6e 69 65 6e 74 20 61 6e 64 20 70 72 6f 6d 69 6e 65 6e 74 6c 79 20 76 69 73 69 62 6c 65 0a venient.and.prominently.visible.
4d940 66 65 61 74 75 72 65 20 74 68 61 74 20 28 31 29 20 64 69 73 70 6c 61 79 73 20 61 6e 20 61 70 70 feature.that.(1).displays.an.app
4d960 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 2c 20 61 6e 64 20 28 ropriate.copyright.notice,.and.(
4d980 32 29 0a 74 65 6c 6c 73 20 74 68 65 20 75 73 65 72 20 74 68 61 74 20 74 68 65 72 65 20 69 73 20 2).tells.the.user.that.there.is.
4d9a0 6e 6f 20 77 61 72 72 61 6e 74 79 20 66 6f 72 20 74 68 65 20 77 6f 72 6b 20 28 65 78 63 65 70 74 no.warranty.for.the.work.(except
4d9c0 20 74 6f 20 74 68 65 0a 65 78 74 65 6e 74 20 74 68 61 74 20 77 61 72 72 61 6e 74 69 65 73 20 61 .to.the.extent.that.warranties.a
4d9e0 72 65 20 70 72 6f 76 69 64 65 64 29 2c 20 74 68 61 74 20 6c 69 63 65 6e 73 65 65 73 20 6d 61 79 re.provided),.that.licensees.may
4da00 20 63 6f 6e 76 65 79 20 74 68 65 0a 77 6f 72 6b 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 .convey.the.work.under.this.Lice
4da20 6e 73 65 2c 20 61 6e 64 20 68 6f 77 20 74 6f 20 76 69 65 77 20 61 20 63 6f 70 79 20 6f 66 20 74 nse,.and.how.to.view.a.copy.of.t
4da40 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 49 66 0a 74 68 65 20 69 6e 74 65 72 66 61 63 65 20 70 his.License...If.the.interface.p
4da60 72 65 73 65 6e 74 73 20 61 20 6c 69 73 74 20 6f 66 20 75 73 65 72 20 63 6f 6d 6d 61 6e 64 73 20 resents.a.list.of.user.commands.
4da80 6f 72 20 6f 70 74 69 6f 6e 73 2c 20 73 75 63 68 20 61 73 20 61 0a 6d 65 6e 75 2c 20 61 20 70 72 or.options,.such.as.a.menu,.a.pr
4daa0 6f 6d 69 6e 65 6e 74 20 69 74 65 6d 20 69 6e 20 74 68 65 20 6c 69 73 74 20 6d 65 65 74 73 20 74 ominent.item.in.the.list.meets.t
4dac0 68 69 73 20 63 72 69 74 65 72 69 6f 6e 2e 0a 0a 20 20 31 2e 20 53 6f 75 72 63 65 20 43 6f 64 65 his.criterion.....1..Source.Code
4dae0 2e 0a 0a 20 20 54 68 65 20 22 73 6f 75 72 63 65 20 63 6f 64 65 22 20 66 6f 72 20 61 20 77 6f 72 .....The."source.code".for.a.wor
4db00 6b 20 6d 65 61 6e 73 20 74 68 65 20 70 72 65 66 65 72 72 65 64 20 66 6f 72 6d 20 6f 66 20 74 68 k.means.the.preferred.form.of.th
4db20 65 20 77 6f 72 6b 0a 66 6f 72 20 6d 61 6b 69 6e 67 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 e.work.for.making.modifications.
4db40 74 6f 20 69 74 2e 20 20 22 4f 62 6a 65 63 74 20 63 6f 64 65 22 20 6d 65 61 6e 73 20 61 6e 79 20 to.it..."Object.code".means.any.
4db60 6e 6f 6e 2d 73 6f 75 72 63 65 0a 66 6f 72 6d 20 6f 66 20 61 20 77 6f 72 6b 2e 0a 0a 20 20 41 20 non-source.form.of.a.work.....A.
4db80 22 53 74 61 6e 64 61 72 64 20 49 6e 74 65 72 66 61 63 65 22 20 6d 65 61 6e 73 20 61 6e 20 69 6e "Standard.Interface".means.an.in
4dba0 74 65 72 66 61 63 65 20 74 68 61 74 20 65 69 74 68 65 72 20 69 73 20 61 6e 20 6f 66 66 69 63 69 terface.that.either.is.an.offici
4dbc0 61 6c 0a 73 74 61 6e 64 61 72 64 20 64 65 66 69 6e 65 64 20 62 79 20 61 20 72 65 63 6f 67 6e 69 al.standard.defined.by.a.recogni
4dbe0 7a 65 64 20 73 74 61 6e 64 61 72 64 73 20 62 6f 64 79 2c 20 6f 72 2c 20 69 6e 20 74 68 65 20 63 zed.standards.body,.or,.in.the.c
4dc00 61 73 65 20 6f 66 0a 69 6e 74 65 72 66 61 63 65 73 20 73 70 65 63 69 66 69 65 64 20 66 6f 72 20 ase.of.interfaces.specified.for.
4dc20 61 20 70 61 72 74 69 63 75 6c 61 72 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67 a.particular.programming.languag
4dc40 65 2c 20 6f 6e 65 20 74 68 61 74 0a 69 73 20 77 69 64 65 6c 79 20 75 73 65 64 20 61 6d 6f 6e 67 e,.one.that.is.widely.used.among
4dc60 20 64 65 76 65 6c 6f 70 65 72 73 20 77 6f 72 6b 69 6e 67 20 69 6e 20 74 68 61 74 20 6c 61 6e 67 .developers.working.in.that.lang
4dc80 75 61 67 65 2e 0a 0a 20 20 54 68 65 20 22 53 79 73 74 65 6d 20 4c 69 62 72 61 72 69 65 73 22 20 uage.....The."System.Libraries".
4dca0 6f 66 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 20 77 6f 72 6b 20 69 6e 63 6c 75 64 65 20 61 6e of.an.executable.work.include.an
4dcc0 79 74 68 69 6e 67 2c 20 6f 74 68 65 72 0a 74 68 61 6e 20 74 68 65 20 77 6f 72 6b 20 61 73 20 61 ything,.other.than.the.work.as.a
4dce0 20 77 68 6f 6c 65 2c 20 74 68 61 74 20 28 61 29 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 .whole,.that.(a).is.included.in.
4dd00 74 68 65 20 6e 6f 72 6d 61 6c 20 66 6f 72 6d 20 6f 66 0a 70 61 63 6b 61 67 69 6e 67 20 61 20 4d the.normal.form.of.packaging.a.M
4dd20 61 6a 6f 72 20 43 6f 6d 70 6f 6e 65 6e 74 2c 20 62 75 74 20 77 68 69 63 68 20 69 73 20 6e 6f 74 ajor.Component,.but.which.is.not
4dd40 20 70 61 72 74 20 6f 66 20 74 68 61 74 20 4d 61 6a 6f 72 0a 43 6f 6d 70 6f 6e 65 6e 74 2c 20 61 .part.of.that.Major.Component,.a
4dd60 6e 64 20 28 62 29 20 73 65 72 76 65 73 20 6f 6e 6c 79 20 74 6f 20 65 6e 61 62 6c 65 20 75 73 65 nd.(b).serves.only.to.enable.use
4dd80 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 77 69 74 68 20 74 68 61 74 0a 4d 61 6a 6f 72 20 43 6f 6d .of.the.work.with.that.Major.Com
4dda0 70 6f 6e 65 6e 74 2c 20 6f 72 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 20 53 74 61 6e 64 61 ponent,.or.to.implement.a.Standa
4ddc0 72 64 20 49 6e 74 65 72 66 61 63 65 20 66 6f 72 20 77 68 69 63 68 20 61 6e 0a 69 6d 70 6c 65 6d rd.Interface.for.which.an.implem
4dde0 65 6e 74 61 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 70 75 62 entation.is.available.to.the.pub
4de00 6c 69 63 20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 2e 20 20 41 0a 22 4d 61 6a lic.in.source.code.form...A."Maj
4de20 6f 72 20 43 6f 6d 70 6f 6e 65 6e 74 22 2c 20 69 6e 20 74 68 69 73 20 63 6f 6e 74 65 78 74 2c 20 or.Component",.in.this.context,.
4de40 6d 65 61 6e 73 20 61 20 6d 61 6a 6f 72 20 65 73 73 65 6e 74 69 61 6c 20 63 6f 6d 70 6f 6e 65 6e means.a.major.essential.componen
4de60 74 0a 28 6b 65 72 6e 65 6c 2c 20 77 69 6e 64 6f 77 20 73 79 73 74 65 6d 2c 20 61 6e 64 20 73 6f t.(kernel,.window.system,.and.so
4de80 20 6f 6e 29 20 6f 66 20 74 68 65 20 73 70 65 63 69 66 69 63 20 6f 70 65 72 61 74 69 6e 67 20 73 .on).of.the.specific.operating.s
4dea0 79 73 74 65 6d 0a 28 69 66 20 61 6e 79 29 20 6f 6e 20 77 68 69 63 68 20 74 68 65 20 65 78 65 63 ystem.(if.any).on.which.the.exec
4dec0 75 74 61 62 6c 65 20 77 6f 72 6b 20 72 75 6e 73 2c 20 6f 72 20 61 20 63 6f 6d 70 69 6c 65 72 20 utable.work.runs,.or.a.compiler.
4dee0 75 73 65 64 20 74 6f 0a 70 72 6f 64 75 63 65 20 74 68 65 20 77 6f 72 6b 2c 20 6f 72 20 61 6e 20 used.to.produce.the.work,.or.an.
4df00 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 75 73 65 64 20 74 6f 20 object.code.interpreter.used.to.
4df20 72 75 6e 20 69 74 2e 0a 0a 20 20 54 68 65 20 22 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f run.it.....The."Corresponding.So
4df40 75 72 63 65 22 20 66 6f 72 20 61 20 77 6f 72 6b 20 69 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 urce".for.a.work.in.object.code.
4df60 66 6f 72 6d 20 6d 65 61 6e 73 20 61 6c 6c 0a 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6e form.means.all.the.source.code.n
4df80 65 65 64 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 2c 20 69 6e 73 74 61 6c 6c 2c 20 61 6e 64 20 eeded.to.generate,.install,.and.
4dfa0 28 66 6f 72 20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 0a 77 6f 72 6b 29 20 72 75 6e 20 74 68 65 (for.an.executable.work).run.the
4dfc0 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 61 6e 64 20 74 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 77 .object.code.and.to.modify.the.w
4dfe0 6f 72 6b 2c 20 69 6e 63 6c 75 64 69 6e 67 20 73 63 72 69 70 74 73 20 74 6f 0a 63 6f 6e 74 72 6f ork,.including.scripts.to.contro
4e000 6c 20 74 68 6f 73 65 20 61 63 74 69 76 69 74 69 65 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 69 74 l.those.activities...However,.it
4e020 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 74 68 65 20 77 6f 72 6b 27 73 0a 53 79 73 .does.not.include.the.work's.Sys
4e040 74 65 6d 20 4c 69 62 72 61 72 69 65 73 2c 20 6f 72 20 67 65 6e 65 72 61 6c 2d 70 75 72 70 6f 73 tem.Libraries,.or.general-purpos
4e060 65 20 74 6f 6f 6c 73 20 6f 72 20 67 65 6e 65 72 61 6c 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 66 e.tools.or.generally.available.f
4e080 72 65 65 0a 70 72 6f 67 72 61 6d 73 20 77 68 69 63 68 20 61 72 65 20 75 73 65 64 20 75 6e 6d 6f ree.programs.which.are.used.unmo
4e0a0 64 69 66 69 65 64 20 69 6e 20 70 65 72 66 6f 72 6d 69 6e 67 20 74 68 6f 73 65 20 61 63 74 69 76 dified.in.performing.those.activ
4e0c0 69 74 69 65 73 20 62 75 74 0a 77 68 69 63 68 20 61 72 65 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 ities.but.which.are.not.part.of.
4e0e0 74 68 65 20 77 6f 72 6b 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 43 6f 72 72 65 73 70 6f the.work...For.example,.Correspo
4e100 6e 64 69 6e 67 20 53 6f 75 72 63 65 0a 69 6e 63 6c 75 64 65 73 20 69 6e 74 65 72 66 61 63 65 20 nding.Source.includes.interface.
4e120 64 65 66 69 6e 69 74 69 6f 6e 20 66 69 6c 65 73 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 definition.files.associated.with
4e140 20 73 6f 75 72 63 65 20 66 69 6c 65 73 20 66 6f 72 0a 74 68 65 20 77 6f 72 6b 2c 20 61 6e 64 20 .source.files.for.the.work,.and.
4e160 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 20 73 68 61 72 65 64 20 6c 69 62 72 61 the.source.code.for.shared.libra
4e180 72 69 65 73 20 61 6e 64 20 64 79 6e 61 6d 69 63 61 6c 6c 79 0a 6c 69 6e 6b 65 64 20 73 75 62 70 ries.and.dynamically.linked.subp
4e1a0 72 6f 67 72 61 6d 73 20 74 68 61 74 20 74 68 65 20 77 6f 72 6b 20 69 73 20 73 70 65 63 69 66 69 rograms.that.the.work.is.specifi
4e1c0 63 61 6c 6c 79 20 64 65 73 69 67 6e 65 64 20 74 6f 20 72 65 71 75 69 72 65 2c 0a 73 75 63 68 20 cally.designed.to.require,.such.
4e1e0 61 73 20 62 79 20 69 6e 74 69 6d 61 74 65 20 64 61 74 61 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f as.by.intimate.data.communicatio
4e200 6e 20 6f 72 20 63 6f 6e 74 72 6f 6c 20 66 6c 6f 77 20 62 65 74 77 65 65 6e 20 74 68 6f 73 65 0a n.or.control.flow.between.those.
4e220 73 75 62 70 72 6f 67 72 61 6d 73 20 61 6e 64 20 6f 74 68 65 72 20 70 61 72 74 73 20 6f 66 20 74 subprograms.and.other.parts.of.t
4e240 68 65 20 77 6f 72 6b 2e 0a 0a 20 20 54 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f he.work.....The.Corresponding.So
4e260 75 72 63 65 20 6e 65 65 64 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 61 6e 79 74 68 69 6e 67 20 74 urce.need.not.include.anything.t
4e280 68 61 74 20 75 73 65 72 73 0a 63 61 6e 20 72 65 67 65 6e 65 72 61 74 65 20 61 75 74 6f 6d 61 74 hat.users.can.regenerate.automat
4e2a0 69 63 61 6c 6c 79 20 66 72 6f 6d 20 6f 74 68 65 72 20 70 61 72 74 73 20 6f 66 20 74 68 65 20 43 ically.from.other.parts.of.the.C
4e2c0 6f 72 72 65 73 70 6f 6e 64 69 6e 67 0a 53 6f 75 72 63 65 2e 0a 0a 20 20 54 68 65 20 43 6f 72 72 orresponding.Source.....The.Corr
4e2e0 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 6f 72 20 61 20 77 6f 72 6b 20 69 6e 20 73 esponding.Source.for.a.work.in.s
4e300 6f 75 72 63 65 20 63 6f 64 65 20 66 6f 72 6d 20 69 73 20 74 68 61 74 0a 73 61 6d 65 20 77 6f 72 ource.code.form.is.that.same.wor
4e320 6b 2e 0a 0a 20 20 32 2e 20 42 61 73 69 63 20 50 65 72 6d 69 73 73 69 6f 6e 73 2e 0a 0a 20 20 41 k.....2..Basic.Permissions.....A
4e340 6c 6c 20 72 69 67 68 74 73 20 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 ll.rights.granted.under.this.Lic
4e360 65 6e 73 65 20 61 72 65 20 67 72 61 6e 74 65 64 20 66 6f 72 20 74 68 65 20 74 65 72 6d 20 6f 66 ense.are.granted.for.the.term.of
4e380 0a 63 6f 70 79 72 69 67 68 74 20 6f 6e 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 61 6e 64 20 61 .copyright.on.the.Program,.and.a
4e3a0 72 65 20 69 72 72 65 76 6f 63 61 62 6c 65 20 70 72 6f 76 69 64 65 64 20 74 68 65 20 73 74 61 74 re.irrevocable.provided.the.stat
4e3c0 65 64 0a 63 6f 6e 64 69 74 69 6f 6e 73 20 61 72 65 20 6d 65 74 2e 20 20 54 68 69 73 20 4c 69 63 ed.conditions.are.met...This.Lic
4e3e0 65 6e 73 65 20 65 78 70 6c 69 63 69 74 6c 79 20 61 66 66 69 72 6d 73 20 79 6f 75 72 20 75 6e 6c ense.explicitly.affirms.your.unl
4e400 69 6d 69 74 65 64 0a 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 72 75 6e 20 74 68 65 20 75 6e 6d imited.permission.to.run.the.unm
4e420 6f 64 69 66 69 65 64 20 50 72 6f 67 72 61 6d 2e 20 20 54 68 65 20 6f 75 74 70 75 74 20 66 72 6f odified.Program...The.output.fro
4e440 6d 20 72 75 6e 6e 69 6e 67 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 73 20 63 6f 76 65 m.running.a.covered.work.is.cove
4e460 72 65 64 20 62 79 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 6f 6e 6c 79 20 69 66 20 74 68 65 20 red.by.this.License.only.if.the.
4e480 6f 75 74 70 75 74 2c 20 67 69 76 65 6e 20 69 74 73 0a 63 6f 6e 74 65 6e 74 2c 20 63 6f 6e 73 74 output,.given.its.content,.const
4e4a0 69 74 75 74 65 73 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2e 20 20 54 68 69 73 20 4c 69 63 itutes.a.covered.work...This.Lic
4e4c0 65 6e 73 65 20 61 63 6b 6e 6f 77 6c 65 64 67 65 73 20 79 6f 75 72 0a 72 69 67 68 74 73 20 6f 66 ense.acknowledges.your.rights.of
4e4e0 20 66 61 69 72 20 75 73 65 20 6f 72 20 6f 74 68 65 72 20 65 71 75 69 76 61 6c 65 6e 74 2c 20 61 .fair.use.or.other.equivalent,.a
4e500 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 63 6f 70 79 72 69 67 68 74 20 6c 61 77 2e 0a 0a 20 20 s.provided.by.copyright.law.....
4e520 59 6f 75 20 6d 61 79 20 6d 61 6b 65 2c 20 72 75 6e 20 61 6e 64 20 70 72 6f 70 61 67 61 74 65 20 You.may.make,.run.and.propagate.
4e540 63 6f 76 65 72 65 64 20 77 6f 72 6b 73 20 74 68 61 74 20 79 6f 75 20 64 6f 20 6e 6f 74 0a 63 6f covered.works.that.you.do.not.co
4e560 6e 76 65 79 2c 20 77 69 74 68 6f 75 74 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73 6f 20 6c 6f 6e 67 nvey,.without.conditions.so.long
4e580 20 61 73 20 79 6f 75 72 20 6c 69 63 65 6e 73 65 20 6f 74 68 65 72 77 69 73 65 20 72 65 6d 61 69 .as.your.license.otherwise.remai
4e5a0 6e 73 0a 69 6e 20 66 6f 72 63 65 2e 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 79 20 63 6f 76 ns.in.force...You.may.convey.cov
4e5c0 65 72 65 64 20 77 6f 72 6b 73 20 74 6f 20 6f 74 68 65 72 73 20 66 6f 72 20 74 68 65 20 73 6f 6c ered.works.to.others.for.the.sol
4e5e0 65 20 70 75 72 70 6f 73 65 0a 6f 66 20 68 61 76 69 6e 67 20 74 68 65 6d 20 6d 61 6b 65 20 6d 6f e.purpose.of.having.them.make.mo
4e600 64 69 66 69 63 61 74 69 6f 6e 73 20 65 78 63 6c 75 73 69 76 65 6c 79 20 66 6f 72 20 79 6f 75 2c difications.exclusively.for.you,
4e620 20 6f 72 20 70 72 6f 76 69 64 65 20 79 6f 75 0a 77 69 74 68 20 66 61 63 69 6c 69 74 69 65 73 20 .or.provide.you.with.facilities.
4e640 66 6f 72 20 72 75 6e 6e 69 6e 67 20 74 68 6f 73 65 20 77 6f 72 6b 73 2c 20 70 72 6f 76 69 64 65 for.running.those.works,.provide
4e660 64 20 74 68 61 74 20 79 6f 75 20 63 6f 6d 70 6c 79 20 77 69 74 68 0a 74 68 65 20 74 65 72 6d 73 d.that.you.comply.with.the.terms
4e680 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 69 6e 20 63 6f 6e 76 65 79 69 6e 67 20 61 6c .of.this.License.in.conveying.al
4e6a0 6c 20 6d 61 74 65 72 69 61 6c 20 66 6f 72 20 77 68 69 63 68 20 79 6f 75 20 64 6f 0a 6e 6f 74 20 l.material.for.which.you.do.not.
4e6c0 63 6f 6e 74 72 6f 6c 20 63 6f 70 79 72 69 67 68 74 2e 20 20 54 68 6f 73 65 20 74 68 75 73 20 6d control.copyright...Those.thus.m
4e6e0 61 6b 69 6e 67 20 6f 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 aking.or.running.the.covered.wor
4e700 6b 73 0a 66 6f 72 20 79 6f 75 20 6d 75 73 74 20 64 6f 20 73 6f 20 65 78 63 6c 75 73 69 76 65 6c ks.for.you.must.do.so.exclusivel
4e720 79 20 6f 6e 20 79 6f 75 72 20 62 65 68 61 6c 66 2c 20 75 6e 64 65 72 20 79 6f 75 72 20 64 69 72 y.on.your.behalf,.under.your.dir
4e740 65 63 74 69 6f 6e 0a 61 6e 64 20 63 6f 6e 74 72 6f 6c 2c 20 6f 6e 20 74 65 72 6d 73 20 74 68 61 ection.and.control,.on.terms.tha
4e760 74 20 70 72 6f 68 69 62 69 74 20 74 68 65 6d 20 66 72 6f 6d 20 6d 61 6b 69 6e 67 20 61 6e 79 20 t.prohibit.them.from.making.any.
4e780 63 6f 70 69 65 73 20 6f 66 0a 79 6f 75 72 20 63 6f 70 79 72 69 67 68 74 65 64 20 6d 61 74 65 72 copies.of.your.copyrighted.mater
4e7a0 69 61 6c 20 6f 75 74 73 69 64 65 20 74 68 65 69 72 20 72 65 6c 61 74 69 6f 6e 73 68 69 70 20 77 ial.outside.their.relationship.w
4e7c0 69 74 68 20 79 6f 75 2e 0a 0a 20 20 43 6f 6e 76 65 79 69 6e 67 20 75 6e 64 65 72 20 61 6e 79 20 ith.you.....Conveying.under.any.
4e7e0 6f 74 68 65 72 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 69 73 20 70 65 72 6d 69 74 74 65 64 other.circumstances.is.permitted
4e800 20 73 6f 6c 65 6c 79 20 75 6e 64 65 72 0a 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 73 74 61 .solely.under.the.conditions.sta
4e820 74 65 64 20 62 65 6c 6f 77 2e 20 20 53 75 62 6c 69 63 65 6e 73 69 6e 67 20 69 73 20 6e 6f 74 20 ted.below...Sublicensing.is.not.
4e840 61 6c 6c 6f 77 65 64 3b 20 73 65 63 74 69 6f 6e 20 31 30 0a 6d 61 6b 65 73 20 69 74 20 75 6e 6e allowed;.section.10.makes.it.unn
4e860 65 63 65 73 73 61 72 79 2e 0a 0a 20 20 33 2e 20 50 72 6f 74 65 63 74 69 6e 67 20 55 73 65 72 73 ecessary.....3..Protecting.Users
4e880 27 20 4c 65 67 61 6c 20 52 69 67 68 74 73 20 46 72 6f 6d 20 41 6e 74 69 2d 43 69 72 63 75 6d 76 '.Legal.Rights.From.Anti-Circumv
4e8a0 65 6e 74 69 6f 6e 20 4c 61 77 2e 0a 0a 20 20 4e 6f 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 73 ention.Law.....No.covered.work.s
4e8c0 68 61 6c 6c 20 62 65 20 64 65 65 6d 65 64 20 70 61 72 74 20 6f 66 20 61 6e 20 65 66 66 65 63 74 hall.be.deemed.part.of.an.effect
4e8e0 69 76 65 20 74 65 63 68 6e 6f 6c 6f 67 69 63 61 6c 0a 6d 65 61 73 75 72 65 20 75 6e 64 65 72 20 ive.technological.measure.under.
4e900 61 6e 79 20 61 70 70 6c 69 63 61 62 6c 65 20 6c 61 77 20 66 75 6c 66 69 6c 6c 69 6e 67 20 6f 62 any.applicable.law.fulfilling.ob
4e920 6c 69 67 61 74 69 6f 6e 73 20 75 6e 64 65 72 20 61 72 74 69 63 6c 65 0a 31 31 20 6f 66 20 74 68 ligations.under.article.11.of.th
4e940 65 20 57 49 50 4f 20 63 6f 70 79 72 69 67 68 74 20 74 72 65 61 74 79 20 61 64 6f 70 74 65 64 20 e.WIPO.copyright.treaty.adopted.
4e960 6f 6e 20 32 30 20 44 65 63 65 6d 62 65 72 20 31 39 39 36 2c 20 6f 72 0a 73 69 6d 69 6c 61 72 20 on.20.December.1996,.or.similar.
4e980 6c 61 77 73 20 70 72 6f 68 69 62 69 74 69 6e 67 20 6f 72 20 72 65 73 74 72 69 63 74 69 6e 67 20 laws.prohibiting.or.restricting.
4e9a0 63 69 72 63 75 6d 76 65 6e 74 69 6f 6e 20 6f 66 20 73 75 63 68 0a 6d 65 61 73 75 72 65 73 2e 0a circumvention.of.such.measures..
4e9c0 0a 20 20 57 68 65 6e 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 ...When.you.convey.a.covered.wor
4e9e0 6b 2c 20 79 6f 75 20 77 61 69 76 65 20 61 6e 79 20 6c 65 67 61 6c 20 70 6f 77 65 72 20 74 6f 20 k,.you.waive.any.legal.power.to.
4ea00 66 6f 72 62 69 64 0a 63 69 72 63 75 6d 76 65 6e 74 69 6f 6e 20 6f 66 20 74 65 63 68 6e 6f 6c 6f forbid.circumvention.of.technolo
4ea20 67 69 63 61 6c 20 6d 65 61 73 75 72 65 73 20 74 6f 20 74 68 65 20 65 78 74 65 6e 74 20 73 75 63 gical.measures.to.the.extent.suc
4ea40 68 20 63 69 72 63 75 6d 76 65 6e 74 69 6f 6e 0a 69 73 20 65 66 66 65 63 74 65 64 20 62 79 20 65 h.circumvention.is.effected.by.e
4ea60 78 65 72 63 69 73 69 6e 67 20 72 69 67 68 74 73 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 xercising.rights.under.this.Lice
4ea80 6e 73 65 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f 0a 74 68 65 20 63 6f 76 65 72 65 64 20 nse.with.respect.to.the.covered.
4eaa0 77 6f 72 6b 2c 20 61 6e 64 20 79 6f 75 20 64 69 73 63 6c 61 69 6d 20 61 6e 79 20 69 6e 74 65 6e work,.and.you.disclaim.any.inten
4eac0 74 69 6f 6e 20 74 6f 20 6c 69 6d 69 74 20 6f 70 65 72 61 74 69 6f 6e 20 6f 72 0a 6d 6f 64 69 66 tion.to.limit.operation.or.modif
4eae0 69 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 61 73 20 61 20 6d 65 61 6e 73 20 6f ication.of.the.work.as.a.means.o
4eb00 66 20 65 6e 66 6f 72 63 69 6e 67 2c 20 61 67 61 69 6e 73 74 20 74 68 65 20 77 6f 72 6b 27 73 0a f.enforcing,.against.the.work's.
4eb20 75 73 65 72 73 2c 20 79 6f 75 72 20 6f 72 20 74 68 69 72 64 20 70 61 72 74 69 65 73 27 20 6c 65 users,.your.or.third.parties'.le
4eb40 67 61 6c 20 72 69 67 68 74 73 20 74 6f 20 66 6f 72 62 69 64 20 63 69 72 63 75 6d 76 65 6e 74 69 gal.rights.to.forbid.circumventi
4eb60 6f 6e 20 6f 66 0a 74 65 63 68 6e 6f 6c 6f 67 69 63 61 6c 20 6d 65 61 73 75 72 65 73 2e 0a 0a 20 on.of.technological.measures....
4eb80 20 34 2e 20 43 6f 6e 76 65 79 69 6e 67 20 56 65 72 62 61 74 69 6d 20 43 6f 70 69 65 73 2e 0a 0a .4..Conveying.Verbatim.Copies...
4eba0 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 79 20 76 65 72 62 61 74 69 6d 20 63 6f 70 69 65 73 ..You.may.convey.verbatim.copies
4ebc0 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 27 73 20 73 6f 75 72 63 65 20 63 6f 64 65 20 61 73 .of.the.Program's.source.code.as
4ebe0 20 79 6f 75 0a 72 65 63 65 69 76 65 20 69 74 2c 20 69 6e 20 61 6e 79 20 6d 65 64 69 75 6d 2c 20 .you.receive.it,.in.any.medium,.
4ec00 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 79 6f 75 20 63 6f 6e 73 70 69 63 75 6f 75 73 6c 79 20 provided.that.you.conspicuously.
4ec20 61 6e 64 0a 61 70 70 72 6f 70 72 69 61 74 65 6c 79 20 70 75 62 6c 69 73 68 20 6f 6e 20 65 61 63 and.appropriately.publish.on.eac
4ec40 68 20 63 6f 70 79 20 61 6e 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72 69 67 68 74 20 h.copy.an.appropriate.copyright.
4ec60 6e 6f 74 69 63 65 3b 0a 6b 65 65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 20 notice;.keep.intact.all.notices.
4ec80 73 74 61 74 69 6e 67 20 74 68 61 74 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e stating.that.this.License.and.an
4eca0 79 0a 6e 6f 6e 2d 70 65 72 6d 69 73 73 69 76 65 20 74 65 72 6d 73 20 61 64 64 65 64 20 69 6e 20 y.non-permissive.terms.added.in.
4ecc0 61 63 63 6f 72 64 20 77 69 74 68 20 73 65 63 74 69 6f 6e 20 37 20 61 70 70 6c 79 20 74 6f 20 74 accord.with.section.7.apply.to.t
4ece0 68 65 20 63 6f 64 65 3b 0a 6b 65 65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 he.code;.keep.intact.all.notices
4ed00 20 6f 66 20 74 68 65 20 61 62 73 65 6e 63 65 20 6f 66 20 61 6e 79 20 77 61 72 72 61 6e 74 79 3b .of.the.absence.of.any.warranty;
4ed20 20 61 6e 64 20 67 69 76 65 20 61 6c 6c 0a 72 65 63 69 70 69 65 6e 74 73 20 61 20 63 6f 70 79 20 .and.give.all.recipients.a.copy.
4ed40 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 20 50 of.this.License.along.with.the.P
4ed60 72 6f 67 72 61 6d 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63 68 61 72 67 65 20 61 6e 79 20 70 72 rogram.....You.may.charge.any.pr
4ed80 69 63 65 20 6f 72 20 6e 6f 20 70 72 69 63 65 20 66 6f 72 20 65 61 63 68 20 63 6f 70 79 20 74 68 ice.or.no.price.for.each.copy.th
4eda0 61 74 20 79 6f 75 20 63 6f 6e 76 65 79 2c 0a 61 6e 64 20 79 6f 75 20 6d 61 79 20 6f 66 66 65 72 at.you.convey,.and.you.may.offer
4edc0 20 73 75 70 70 6f 72 74 20 6f 72 20 77 61 72 72 61 6e 74 79 20 70 72 6f 74 65 63 74 69 6f 6e 20 .support.or.warranty.protection.
4ede0 66 6f 72 20 61 20 66 65 65 2e 0a 0a 20 20 35 2e 20 43 6f 6e 76 65 79 69 6e 67 20 4d 6f 64 69 66 for.a.fee.....5..Conveying.Modif
4ee00 69 65 64 20 53 6f 75 72 63 65 20 56 65 72 73 69 6f 6e 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 ied.Source.Versions.....You.may.
4ee20 63 6f 6e 76 65 79 20 61 20 77 6f 72 6b 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 50 72 6f 67 72 convey.a.work.based.on.the.Progr
4ee40 61 6d 2c 20 6f 72 20 74 68 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 74 6f 0a 70 72 6f 64 am,.or.the.modifications.to.prod
4ee60 75 63 65 20 69 74 20 66 72 6f 6d 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 69 6e 20 74 68 65 20 uce.it.from.the.Program,.in.the.
4ee80 66 6f 72 6d 20 6f 66 20 73 6f 75 72 63 65 20 63 6f 64 65 20 75 6e 64 65 72 20 74 68 65 0a 74 65 form.of.source.code.under.the.te
4eea0 72 6d 73 20 6f 66 20 73 65 63 74 69 6f 6e 20 34 2c 20 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 rms.of.section.4,.provided.that.
4eec0 79 6f 75 20 61 6c 73 6f 20 6d 65 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 63 6f 6e 64 69 you.also.meet.all.of.these.condi
4eee0 74 69 6f 6e 73 3a 0a 0a 20 20 20 20 61 29 20 54 68 65 20 77 6f 72 6b 20 6d 75 73 74 20 63 61 72 tions:......a).The.work.must.car
4ef00 72 79 20 70 72 6f 6d 69 6e 65 6e 74 20 6e 6f 74 69 63 65 73 20 73 74 61 74 69 6e 67 20 74 68 61 ry.prominent.notices.stating.tha
4ef20 74 20 79 6f 75 20 6d 6f 64 69 66 69 65 64 0a 20 20 20 20 69 74 2c 20 61 6e 64 20 67 69 76 69 6e t.you.modified.....it,.and.givin
4ef40 67 20 61 20 72 65 6c 65 76 61 6e 74 20 64 61 74 65 2e 0a 0a 20 20 20 20 62 29 20 54 68 65 20 77 g.a.relevant.date.......b).The.w
4ef60 6f 72 6b 20 6d 75 73 74 20 63 61 72 72 79 20 70 72 6f 6d 69 6e 65 6e 74 20 6e 6f 74 69 63 65 73 ork.must.carry.prominent.notices
4ef80 20 73 74 61 74 69 6e 67 20 74 68 61 74 20 69 74 20 69 73 0a 20 20 20 20 72 65 6c 65 61 73 65 64 .stating.that.it.is.....released
4efa0 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e 79 20 63 6f 6e 64 .under.this.License.and.any.cond
4efc0 69 74 69 6f 6e 73 20 61 64 64 65 64 20 75 6e 64 65 72 20 73 65 63 74 69 6f 6e 0a 20 20 20 20 37 itions.added.under.section.....7
4efe0 2e 20 20 54 68 69 73 20 72 65 71 75 69 72 65 6d 65 6e 74 20 6d 6f 64 69 66 69 65 73 20 74 68 65 ...This.requirement.modifies.the
4f000 20 72 65 71 75 69 72 65 6d 65 6e 74 20 69 6e 20 73 65 63 74 69 6f 6e 20 34 20 74 6f 0a 20 20 20 .requirement.in.section.4.to....
4f020 20 22 6b 65 65 70 20 69 6e 74 61 63 74 20 61 6c 6c 20 6e 6f 74 69 63 65 73 22 2e 0a 0a 20 20 20 ."keep.intact.all.notices"......
4f040 20 63 29 20 59 6f 75 20 6d 75 73 74 20 6c 69 63 65 6e 73 65 20 74 68 65 20 65 6e 74 69 72 65 20 .c).You.must.license.the.entire.
4f060 77 6f 72 6b 2c 20 61 73 20 61 20 77 68 6f 6c 65 2c 20 75 6e 64 65 72 20 74 68 69 73 0a 20 20 20 work,.as.a.whole,.under.this....
4f080 20 4c 69 63 65 6e 73 65 20 74 6f 20 61 6e 79 6f 6e 65 20 77 68 6f 20 63 6f 6d 65 73 20 69 6e 74 .License.to.anyone.who.comes.int
4f0a0 6f 20 70 6f 73 73 65 73 73 69 6f 6e 20 6f 66 20 61 20 63 6f 70 79 2e 20 20 54 68 69 73 0a 20 20 o.possession.of.a.copy...This...
4f0c0 20 20 4c 69 63 65 6e 73 65 20 77 69 6c 6c 20 74 68 65 72 65 66 6f 72 65 20 61 70 70 6c 79 2c 20 ..License.will.therefore.apply,.
4f0e0 61 6c 6f 6e 67 20 77 69 74 68 20 61 6e 79 20 61 70 70 6c 69 63 61 62 6c 65 20 73 65 63 74 69 6f along.with.any.applicable.sectio
4f100 6e 20 37 0a 20 20 20 20 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 2c 20 74 6f 20 74 68 65 n.7.....additional.terms,.to.the
4f120 20 77 68 6f 6c 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 2c 20 61 6e 64 20 61 6c 6c 20 69 74 73 20 .whole.of.the.work,.and.all.its.
4f140 70 61 72 74 73 2c 0a 20 20 20 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f 77 20 74 68 65 parts,.....regardless.of.how.the
4f160 79 20 61 72 65 20 70 61 63 6b 61 67 65 64 2e 20 20 54 68 69 73 20 4c 69 63 65 6e 73 65 20 67 69 y.are.packaged...This.License.gi
4f180 76 65 73 20 6e 6f 0a 20 20 20 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 6c 69 63 65 6e 73 65 ves.no.....permission.to.license
4f1a0 20 74 68 65 20 77 6f 72 6b 20 69 6e 20 61 6e 79 20 6f 74 68 65 72 20 77 61 79 2c 20 62 75 74 20 .the.work.in.any.other.way,.but.
4f1c0 69 74 20 64 6f 65 73 20 6e 6f 74 0a 20 20 20 20 69 6e 76 61 6c 69 64 61 74 65 20 73 75 63 68 20 it.does.not.....invalidate.such.
4f1e0 70 65 72 6d 69 73 73 69 6f 6e 20 69 66 20 79 6f 75 20 68 61 76 65 20 73 65 70 61 72 61 74 65 6c permission.if.you.have.separatel
4f200 79 20 72 65 63 65 69 76 65 64 20 69 74 2e 0a 0a 20 20 20 20 64 29 20 49 66 20 74 68 65 20 77 6f y.received.it.......d).If.the.wo
4f220 72 6b 20 68 61 73 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 72 20 69 6e 74 65 72 66 61 63 rk.has.interactive.user.interfac
4f240 65 73 2c 20 65 61 63 68 20 6d 75 73 74 20 64 69 73 70 6c 61 79 0a 20 20 20 20 41 70 70 72 6f 70 es,.each.must.display.....Approp
4f260 72 69 61 74 65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 3b 20 68 6f 77 65 76 65 72 2c 20 69 66 riate.Legal.Notices;.however,.if
4f280 20 74 68 65 20 50 72 6f 67 72 61 6d 20 68 61 73 20 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 .the.Program.has.interactive....
4f2a0 20 69 6e 74 65 72 66 61 63 65 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 64 69 73 70 6c 61 79 20 .interfaces.that.do.not.display.
4f2c0 41 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c 20 4e 6f 74 69 63 65 73 2c 20 79 6f 75 72 0a Appropriate.Legal.Notices,.your.
4f2e0 20 20 20 20 77 6f 72 6b 20 6e 65 65 64 20 6e 6f 74 20 6d 61 6b 65 20 74 68 65 6d 20 64 6f 20 73 ....work.need.not.make.them.do.s
4f300 6f 2e 0a 0a 20 20 41 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 64 o.....A.compilation.of.a.covered
4f320 20 77 6f 72 6b 20 77 69 74 68 20 6f 74 68 65 72 20 73 65 70 61 72 61 74 65 20 61 6e 64 20 69 6e .work.with.other.separate.and.in
4f340 64 65 70 65 6e 64 65 6e 74 0a 77 6f 72 6b 73 2c 20 77 68 69 63 68 20 61 72 65 20 6e 6f 74 20 62 dependent.works,.which.are.not.b
4f360 79 20 74 68 65 69 72 20 6e 61 74 75 72 65 20 65 78 74 65 6e 73 69 6f 6e 73 20 6f 66 20 74 68 65 y.their.nature.extensions.of.the
4f380 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 0a 61 6e 64 20 77 68 69 63 68 20 61 72 65 20 6e 6f 74 .covered.work,.and.which.are.not
4f3a0 20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 69 74 20 73 75 63 68 20 61 73 20 74 6f 20 66 6f 72 .combined.with.it.such.as.to.for
4f3c0 6d 20 61 20 6c 61 72 67 65 72 20 70 72 6f 67 72 61 6d 2c 0a 69 6e 20 6f 72 20 6f 6e 20 61 20 76 m.a.larger.program,.in.or.on.a.v
4f3e0 6f 6c 75 6d 65 20 6f 66 20 61 20 73 74 6f 72 61 67 65 20 6f 72 20 64 69 73 74 72 69 62 75 74 69 olume.of.a.storage.or.distributi
4f400 6f 6e 20 6d 65 64 69 75 6d 2c 20 69 73 20 63 61 6c 6c 65 64 20 61 6e 0a 22 61 67 67 72 65 67 61 on.medium,.is.called.an."aggrega
4f420 74 65 22 20 69 66 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 61 6e 64 20 69 74 73 20 72 te".if.the.compilation.and.its.r
4f440 65 73 75 6c 74 69 6e 67 20 63 6f 70 79 72 69 67 68 74 20 61 72 65 20 6e 6f 74 0a 75 73 65 64 20 esulting.copyright.are.not.used.
4f460 74 6f 20 6c 69 6d 69 74 20 74 68 65 20 61 63 63 65 73 73 20 6f 72 20 6c 65 67 61 6c 20 72 69 67 to.limit.the.access.or.legal.rig
4f480 68 74 73 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 27 73 20 75 73 65 72 73 0a 62 hts.of.the.compilation's.users.b
4f4a0 65 79 6f 6e 64 20 77 68 61 74 20 74 68 65 20 69 6e 64 69 76 69 64 75 61 6c 20 77 6f 72 6b 73 20 eyond.what.the.individual.works.
4f4c0 70 65 72 6d 69 74 2e 20 20 49 6e 63 6c 75 73 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 permit...Inclusion.of.a.covered.
4f4e0 77 6f 72 6b 0a 69 6e 20 61 6e 20 61 67 67 72 65 67 61 74 65 20 64 6f 65 73 20 6e 6f 74 20 63 61 work.in.an.aggregate.does.not.ca
4f500 75 73 65 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 74 6f 20 61 70 70 6c 79 20 74 6f 20 74 68 65 use.this.License.to.apply.to.the
4f520 20 6f 74 68 65 72 0a 70 61 72 74 73 20 6f 66 20 74 68 65 20 61 67 67 72 65 67 61 74 65 2e 0a 0a .other.parts.of.the.aggregate...
4f540 20 20 36 2e 20 43 6f 6e 76 65 79 69 6e 67 20 4e 6f 6e 2d 53 6f 75 72 63 65 20 46 6f 72 6d 73 2e ..6..Conveying.Non-Source.Forms.
4f560 0a 0a 20 20 59 6f 75 20 6d 61 79 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 ....You.may.convey.a.covered.wor
4f580 6b 20 69 6e 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 66 6f 72 6d 20 75 6e 64 65 72 20 74 68 65 20 k.in.object.code.form.under.the.
4f5a0 74 65 72 6d 73 0a 6f 66 20 73 65 63 74 69 6f 6e 73 20 34 20 61 6e 64 20 35 2c 20 70 72 6f 76 69 terms.of.sections.4.and.5,.provi
4f5c0 64 65 64 20 74 68 61 74 20 79 6f 75 20 61 6c 73 6f 20 63 6f 6e 76 65 79 20 74 68 65 0a 6d 61 63 ded.that.you.also.convey.the.mac
4f5e0 68 69 6e 65 2d 72 65 61 64 61 62 6c 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 hine-readable.Corresponding.Sour
4f600 63 65 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e ce.under.the.terms.of.this.Licen
4f620 73 65 2c 0a 69 6e 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 77 61 79 73 3a 0a 0a 20 20 20 20 61 se,.in.one.of.these.ways:......a
4f640 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e 2c 20 6f 72 20 ).Convey.the.object.code.in,.or.
4f660 65 6d 62 6f 64 69 65 64 20 69 6e 2c 20 61 20 70 68 79 73 69 63 61 6c 20 70 72 6f 64 75 63 74 0a embodied.in,.a.physical.product.
4f680 20 20 20 20 28 69 6e 63 6c 75 64 69 6e 67 20 61 20 70 68 79 73 69 63 61 6c 20 64 69 73 74 72 69 ....(including.a.physical.distri
4f6a0 62 75 74 69 6f 6e 20 6d 65 64 69 75 6d 29 2c 20 61 63 63 6f 6d 70 61 6e 69 65 64 20 62 79 20 74 bution.medium),.accompanied.by.t
4f6c0 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 69 78 65 he.....Corresponding.Source.fixe
4f6e0 64 20 6f 6e 20 61 20 64 75 72 61 62 6c 65 20 70 68 79 73 69 63 61 6c 20 6d 65 64 69 75 6d 0a 20 d.on.a.durable.physical.medium..
4f700 20 20 20 63 75 73 74 6f 6d 61 72 69 6c 79 20 75 73 65 64 20 66 6f 72 20 73 6f 66 74 77 61 72 65 ...customarily.used.for.software
4f720 20 69 6e 74 65 72 63 68 61 6e 67 65 2e 0a 0a 20 20 20 20 62 29 20 43 6f 6e 76 65 79 20 74 68 65 .interchange.......b).Convey.the
4f740 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 6e 2c 20 6f 72 20 65 6d 62 6f 64 69 65 64 20 69 6e 2c .object.code.in,.or.embodied.in,
4f760 20 61 20 70 68 79 73 69 63 61 6c 20 70 72 6f 64 75 63 74 0a 20 20 20 20 28 69 6e 63 6c 75 64 69 .a.physical.product.....(includi
4f780 6e 67 20 61 20 70 68 79 73 69 63 61 6c 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 6d 65 64 69 75 ng.a.physical.distribution.mediu
4f7a0 6d 29 2c 20 61 63 63 6f 6d 70 61 6e 69 65 64 20 62 79 20 61 0a 20 20 20 20 77 72 69 74 74 65 6e m),.accompanied.by.a.....written
4f7c0 20 6f 66 66 65 72 2c 20 76 61 6c 69 64 20 66 6f 72 20 61 74 20 6c 65 61 73 74 20 74 68 72 65 65 .offer,.valid.for.at.least.three
4f7e0 20 79 65 61 72 73 20 61 6e 64 20 76 61 6c 69 64 20 66 6f 72 20 61 73 0a 20 20 20 20 6c 6f 6e 67 .years.and.valid.for.as.....long
4f800 20 61 73 20 79 6f 75 20 6f 66 66 65 72 20 73 70 61 72 65 20 70 61 72 74 73 20 6f 72 20 63 75 73 .as.you.offer.spare.parts.or.cus
4f820 74 6f 6d 65 72 20 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68 61 74 20 70 72 6f 64 75 63 74 0a 20 tomer.support.for.that.product..
4f840 20 20 20 6d 6f 64 65 6c 2c 20 74 6f 20 67 69 76 65 20 61 6e 79 6f 6e 65 20 77 68 6f 20 70 6f 73 ...model,.to.give.anyone.who.pos
4f860 73 65 73 73 65 73 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 65 69 74 68 65 72 20 28 31 sesses.the.object.code.either.(1
4f880 29 20 61 0a 20 20 20 20 63 6f 70 79 20 6f 66 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e ).a.....copy.of.the.Correspondin
4f8a0 67 20 53 6f 75 72 63 65 20 66 6f 72 20 61 6c 6c 20 74 68 65 20 73 6f 66 74 77 61 72 65 20 69 6e g.Source.for.all.the.software.in
4f8c0 20 74 68 65 0a 20 20 20 20 70 72 6f 64 75 63 74 20 74 68 61 74 20 69 73 20 63 6f 76 65 72 65 64 .the.....product.that.is.covered
4f8e0 20 62 79 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 6f 6e 20 61 20 64 75 72 61 62 6c 65 20 70 .by.this.License,.on.a.durable.p
4f900 68 79 73 69 63 61 6c 0a 20 20 20 20 6d 65 64 69 75 6d 20 63 75 73 74 6f 6d 61 72 69 6c 79 20 75 hysical.....medium.customarily.u
4f920 73 65 64 20 66 6f 72 20 73 6f 66 74 77 61 72 65 20 69 6e 74 65 72 63 68 61 6e 67 65 2c 20 66 6f sed.for.software.interchange,.fo
4f940 72 20 61 20 70 72 69 63 65 20 6e 6f 0a 20 20 20 20 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 72 20 r.a.price.no.....more.than.your.
4f960 72 65 61 73 6f 6e 61 62 6c 65 20 63 6f 73 74 20 6f 66 20 70 68 79 73 69 63 61 6c 6c 79 20 70 65 reasonable.cost.of.physically.pe
4f980 72 66 6f 72 6d 69 6e 67 20 74 68 69 73 0a 20 20 20 20 63 6f 6e 76 65 79 69 6e 67 20 6f 66 20 73 rforming.this.....conveying.of.s
4f9a0 6f 75 72 63 65 2c 20 6f 72 20 28 32 29 20 61 63 63 65 73 73 20 74 6f 20 63 6f 70 79 20 74 68 65 ource,.or.(2).access.to.copy.the
4f9c0 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 66 72 6f 6d 20 61 .....Corresponding.Source.from.a
4f9e0 20 6e 65 74 77 6f 72 6b 20 73 65 72 76 65 72 20 61 74 20 6e 6f 20 63 68 61 72 67 65 2e 0a 0a 20 .network.server.at.no.charge....
4fa00 20 20 20 63 29 20 43 6f 6e 76 65 79 20 69 6e 64 69 76 69 64 75 61 6c 20 63 6f 70 69 65 73 20 6f ...c).Convey.individual.copies.o
4fa20 66 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 69 74 68 20 61 20 63 6f 70 79 20 6f 66 f.the.object.code.with.a.copy.of
4fa40 20 74 68 65 0a 20 20 20 20 77 72 69 74 74 65 6e 20 6f 66 66 65 72 20 74 6f 20 70 72 6f 76 69 64 .the.....written.offer.to.provid
4fa60 65 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e 20 20 54 68 69 e.the.Corresponding.Source...Thi
4fa80 73 0a 20 20 20 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20 61 6c 6c 6f 77 65 64 20 6f 6e 6c s.....alternative.is.allowed.onl
4faa0 79 20 6f 63 63 61 73 69 6f 6e 61 6c 6c 79 20 61 6e 64 20 6e 6f 6e 63 6f 6d 6d 65 72 63 69 61 6c y.occasionally.and.noncommercial
4fac0 6c 79 2c 20 61 6e 64 0a 20 20 20 20 6f 6e 6c 79 20 69 66 20 79 6f 75 20 72 65 63 65 69 76 65 64 ly,.and.....only.if.you.received
4fae0 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 69 74 68 20 73 75 63 68 20 61 6e 20 6f 66 .the.object.code.with.such.an.of
4fb00 66 65 72 2c 20 69 6e 20 61 63 63 6f 72 64 0a 20 20 20 20 77 69 74 68 20 73 75 62 73 65 63 74 69 fer,.in.accord.....with.subsecti
4fb20 6f 6e 20 36 62 2e 0a 0a 20 20 20 20 64 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f 62 6a 65 63 74 on.6b.......d).Convey.the.object
4fb40 20 63 6f 64 65 20 62 79 20 6f 66 66 65 72 69 6e 67 20 61 63 63 65 73 73 20 66 72 6f 6d 20 61 20 .code.by.offering.access.from.a.
4fb60 64 65 73 69 67 6e 61 74 65 64 0a 20 20 20 20 70 6c 61 63 65 20 28 67 72 61 74 69 73 20 6f 72 20 designated.....place.(gratis.or.
4fb80 66 6f 72 20 61 20 63 68 61 72 67 65 29 2c 20 61 6e 64 20 6f 66 66 65 72 20 65 71 75 69 76 61 6c for.a.charge),.and.offer.equival
4fba0 65 6e 74 20 61 63 63 65 73 73 20 74 6f 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 70 6f 6e 64 ent.access.to.the.....Correspond
4fbc0 69 6e 67 20 53 6f 75 72 63 65 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 72 6f 75 ing.Source.in.the.same.way.throu
4fbe0 67 68 20 74 68 65 20 73 61 6d 65 20 70 6c 61 63 65 20 61 74 20 6e 6f 0a 20 20 20 20 66 75 72 74 gh.the.same.place.at.no.....furt
4fc00 68 65 72 20 63 68 61 72 67 65 2e 20 20 59 6f 75 20 6e 65 65 64 20 6e 6f 74 20 72 65 71 75 69 72 her.charge...You.need.not.requir
4fc20 65 20 72 65 63 69 70 69 65 6e 74 73 20 74 6f 20 63 6f 70 79 20 74 68 65 0a 20 20 20 20 43 6f 72 e.recipients.to.copy.the.....Cor
4fc40 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 responding.Source.along.with.the
4fc60 20 6f 62 6a 65 63 74 20 63 6f 64 65 2e 20 20 49 66 20 74 68 65 20 70 6c 61 63 65 20 74 6f 0a 20 .object.code...If.the.place.to..
4fc80 20 20 20 63 6f 70 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 69 73 20 61 20 6e 65 74 ...copy.the.object.code.is.a.net
4fca0 77 6f 72 6b 20 73 65 72 76 65 72 2c 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 work.server,.the.Corresponding.S
4fcc0 6f 75 72 63 65 0a 20 20 20 20 6d 61 79 20 62 65 20 6f 6e 20 61 20 64 69 66 66 65 72 65 6e 74 20 ource.....may.be.on.a.different.
4fce0 73 65 72 76 65 72 20 28 6f 70 65 72 61 74 65 64 20 62 79 20 79 6f 75 20 6f 72 20 61 20 74 68 69 server.(operated.by.you.or.a.thi
4fd00 72 64 20 70 61 72 74 79 29 0a 20 20 20 20 74 68 61 74 20 73 75 70 70 6f 72 74 73 20 65 71 75 69 rd.party).....that.supports.equi
4fd20 76 61 6c 65 6e 74 20 63 6f 70 79 69 6e 67 20 66 61 63 69 6c 69 74 69 65 73 2c 20 70 72 6f 76 69 valent.copying.facilities,.provi
4fd40 64 65 64 20 79 6f 75 20 6d 61 69 6e 74 61 69 6e 0a 20 20 20 20 63 6c 65 61 72 20 64 69 72 65 63 ded.you.maintain.....clear.direc
4fd60 74 69 6f 6e 73 20 6e 65 78 74 20 74 6f 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 73 61 tions.next.to.the.object.code.sa
4fd80 79 69 6e 67 20 77 68 65 72 65 20 74 6f 20 66 69 6e 64 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 ying.where.to.find.the.....Corre
4fda0 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e 20 20 52 65 67 61 72 64 6c 65 73 73 20 6f 66 20 sponding.Source...Regardless.of.
4fdc0 77 68 61 74 20 73 65 72 76 65 72 20 68 6f 73 74 73 20 74 68 65 0a 20 20 20 20 43 6f 72 72 65 73 what.server.hosts.the.....Corres
4fde0 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 2c 20 79 6f 75 20 72 65 6d 61 69 6e 20 6f 62 6c 69 67 ponding.Source,.you.remain.oblig
4fe00 61 74 65 64 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 69 74 20 69 73 0a 20 20 20 20 61 76 ated.to.ensure.that.it.is.....av
4fe20 61 69 6c 61 62 6c 65 20 66 6f 72 20 61 73 20 6c 6f 6e 67 20 61 73 20 6e 65 65 64 65 64 20 74 6f ailable.for.as.long.as.needed.to
4fe40 20 73 61 74 69 73 66 79 20 74 68 65 73 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 2e 0a 0a 20 20 .satisfy.these.requirements.....
4fe60 20 20 65 29 20 43 6f 6e 76 65 79 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 75 73 69 6e ..e).Convey.the.object.code.usin
4fe80 67 20 70 65 65 72 2d 74 6f 2d 70 65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f 6e 2c 20 70 72 6f g.peer-to-peer.transmission,.pro
4fea0 76 69 64 65 64 0a 20 20 20 20 79 6f 75 20 69 6e 66 6f 72 6d 20 6f 74 68 65 72 20 70 65 65 72 73 vided.....you.inform.other.peers
4fec0 20 77 68 65 72 65 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 61 6e 64 20 43 6f 72 72 65 .where.the.object.code.and.Corre
4fee0 73 70 6f 6e 64 69 6e 67 0a 20 20 20 20 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 sponding.....Source.of.the.work.
4ff00 61 72 65 20 62 65 69 6e 67 20 6f 66 66 65 72 65 64 20 74 6f 20 74 68 65 20 67 65 6e 65 72 61 6c are.being.offered.to.the.general
4ff20 20 70 75 62 6c 69 63 20 61 74 20 6e 6f 0a 20 20 20 20 63 68 61 72 67 65 20 75 6e 64 65 72 20 73 .public.at.no.....charge.under.s
4ff40 75 62 73 65 63 74 69 6f 6e 20 36 64 2e 0a 0a 20 20 41 20 73 65 70 61 72 61 62 6c 65 20 70 6f 72 ubsection.6d.....A.separable.por
4ff60 74 69 6f 6e 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 2c 20 77 68 6f 73 65 20 73 tion.of.the.object.code,.whose.s
4ff80 6f 75 72 63 65 20 63 6f 64 65 20 69 73 20 65 78 63 6c 75 64 65 64 0a 66 72 6f 6d 20 74 68 65 20 ource.code.is.excluded.from.the.
4ffa0 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 61 73 20 61 20 53 79 73 74 65 6d Corresponding.Source.as.a.System
4ffc0 20 4c 69 62 72 61 72 79 2c 20 6e 65 65 64 20 6e 6f 74 20 62 65 0a 69 6e 63 6c 75 64 65 64 20 69 .Library,.need.not.be.included.i
4ffe0 6e 20 63 6f 6e 76 65 79 69 6e 67 20 74 68 65 20 6f 62 6a 65 63 74 20 63 6f 64 65 20 77 6f 72 6b n.conveying.the.object.code.work
50000 2e 0a 0a 20 20 41 20 22 55 73 65 72 20 50 72 6f 64 75 63 74 22 20 69 73 20 65 69 74 68 65 72 20 .....A."User.Product".is.either.
50020 28 31 29 20 61 20 22 63 6f 6e 73 75 6d 65 72 20 70 72 6f 64 75 63 74 22 2c 20 77 68 69 63 68 20 (1).a."consumer.product",.which.
50040 6d 65 61 6e 73 20 61 6e 79 0a 74 61 6e 67 69 62 6c 65 20 70 65 72 73 6f 6e 61 6c 20 70 72 6f 70 means.any.tangible.personal.prop
50060 65 72 74 79 20 77 68 69 63 68 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 75 73 65 64 20 66 6f 72 20 erty.which.is.normally.used.for.
50080 70 65 72 73 6f 6e 61 6c 2c 20 66 61 6d 69 6c 79 2c 0a 6f 72 20 68 6f 75 73 65 68 6f 6c 64 20 70 personal,.family,.or.household.p
500a0 75 72 70 6f 73 65 73 2c 20 6f 72 20 28 32 29 20 61 6e 79 74 68 69 6e 67 20 64 65 73 69 67 6e 65 urposes,.or.(2).anything.designe
500c0 64 20 6f 72 20 73 6f 6c 64 20 66 6f 72 20 69 6e 63 6f 72 70 6f 72 61 74 69 6f 6e 0a 69 6e 74 6f d.or.sold.for.incorporation.into
500e0 20 61 20 64 77 65 6c 6c 69 6e 67 2e 20 20 49 6e 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 77 68 65 .a.dwelling...In.determining.whe
50100 74 68 65 72 20 61 20 70 72 6f 64 75 63 74 20 69 73 20 61 20 63 6f 6e 73 75 6d 65 72 20 70 72 6f ther.a.product.is.a.consumer.pro
50120 64 75 63 74 2c 0a 64 6f 75 62 74 66 75 6c 20 63 61 73 65 73 20 73 68 61 6c 6c 20 62 65 20 72 65 duct,.doubtful.cases.shall.be.re
50140 73 6f 6c 76 65 64 20 69 6e 20 66 61 76 6f 72 20 6f 66 20 63 6f 76 65 72 61 67 65 2e 20 20 46 6f solved.in.favor.of.coverage...Fo
50160 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 70 72 6f 64 75 63 74 20 72 65 63 65 69 76 65 64 20 r.a.particular.product.received.
50180 62 79 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65 72 2c 20 22 6e 6f 72 6d 61 6c 6c 79 20 by.a.particular.user,."normally.
501a0 75 73 65 64 22 20 72 65 66 65 72 73 20 74 6f 20 61 0a 74 79 70 69 63 61 6c 20 6f 72 20 63 6f 6d used".refers.to.a.typical.or.com
501c0 6d 6f 6e 20 75 73 65 20 6f 66 20 74 68 61 74 20 63 6c 61 73 73 20 6f 66 20 70 72 6f 64 75 63 74 mon.use.of.that.class.of.product
501e0 2c 20 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 74 68 65 20 73 74 61 74 75 73 0a 6f 66 20 74 68 ,.regardless.of.the.status.of.th
50200 65 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65 72 20 6f 72 20 6f 66 20 74 68 65 20 77 61 79 20 e.particular.user.or.of.the.way.
50220 69 6e 20 77 68 69 63 68 20 74 68 65 20 70 61 72 74 69 63 75 6c 61 72 20 75 73 65 72 0a 61 63 74 in.which.the.particular.user.act
50240 75 61 6c 6c 79 20 75 73 65 73 2c 20 6f 72 20 65 78 70 65 63 74 73 20 6f 72 20 69 73 20 65 78 70 ually.uses,.or.expects.or.is.exp
50260 65 63 74 65 64 20 74 6f 20 75 73 65 2c 20 74 68 65 20 70 72 6f 64 75 63 74 2e 20 20 41 20 70 72 ected.to.use,.the.product...A.pr
50280 6f 64 75 63 74 0a 69 73 20 61 20 63 6f 6e 73 75 6d 65 72 20 70 72 6f 64 75 63 74 20 72 65 67 61 oduct.is.a.consumer.product.rega
502a0 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72 20 74 68 65 20 70 72 6f 64 75 63 74 20 68 61 rdless.of.whether.the.product.ha
502c0 73 20 73 75 62 73 74 61 6e 74 69 61 6c 0a 63 6f 6d 6d 65 72 63 69 61 6c 2c 20 69 6e 64 75 73 74 s.substantial.commercial,.indust
502e0 72 69 61 6c 20 6f 72 20 6e 6f 6e 2d 63 6f 6e 73 75 6d 65 72 20 75 73 65 73 2c 20 75 6e 6c 65 73 rial.or.non-consumer.uses,.unles
50300 73 20 73 75 63 68 20 75 73 65 73 20 72 65 70 72 65 73 65 6e 74 0a 74 68 65 20 6f 6e 6c 79 20 73 s.such.uses.represent.the.only.s
50320 69 67 6e 69 66 69 63 61 6e 74 20 6d 6f 64 65 20 6f 66 20 75 73 65 20 6f 66 20 74 68 65 20 70 72 ignificant.mode.of.use.of.the.pr
50340 6f 64 75 63 74 2e 0a 0a 20 20 22 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f 72 6d 61 74 oduct....."Installation.Informat
50360 69 6f 6e 22 20 66 6f 72 20 61 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 6d 65 61 6e 73 20 61 6e ion".for.a.User.Product.means.an
50380 79 20 6d 65 74 68 6f 64 73 2c 0a 70 72 6f 63 65 64 75 72 65 73 2c 20 61 75 74 68 6f 72 69 7a 61 y.methods,.procedures,.authoriza
503a0 74 69 6f 6e 20 6b 65 79 73 2c 20 6f 72 20 6f 74 68 65 72 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 tion.keys,.or.other.information.
503c0 72 65 71 75 69 72 65 64 20 74 6f 20 69 6e 73 74 61 6c 6c 0a 61 6e 64 20 65 78 65 63 75 74 65 20 required.to.install.and.execute.
503e0 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 modified.versions.of.a.covered.w
50400 6f 72 6b 20 69 6e 20 74 68 61 74 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 66 72 6f 6d 0a 61 20 ork.in.that.User.Product.from.a.
50420 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 69 74 73 20 43 6f 72 72 65 73 70 6f modified.version.of.its.Correspo
50440 6e 64 69 6e 67 20 53 6f 75 72 63 65 2e 20 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6d nding.Source...The.information.m
50460 75 73 74 0a 73 75 66 66 69 63 65 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 63 ust.suffice.to.ensure.that.the.c
50480 6f 6e 74 69 6e 75 65 64 20 66 75 6e 63 74 69 6f 6e 69 6e 67 20 6f 66 20 74 68 65 20 6d 6f 64 69 ontinued.functioning.of.the.modi
504a0 66 69 65 64 20 6f 62 6a 65 63 74 0a 63 6f 64 65 20 69 73 20 69 6e 20 6e 6f 20 63 61 73 65 20 70 fied.object.code.is.in.no.case.p
504c0 72 65 76 65 6e 74 65 64 20 6f 72 20 69 6e 74 65 72 66 65 72 65 64 20 77 69 74 68 20 73 6f 6c 65 revented.or.interfered.with.sole
504e0 6c 79 20 62 65 63 61 75 73 65 0a 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 68 61 73 20 62 65 65 6e ly.because.modification.has.been
50500 20 6d 61 64 65 2e 0a 0a 20 20 49 66 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 6e 20 6f 62 6a 65 63 .made.....If.you.convey.an.objec
50520 74 20 63 6f 64 65 20 77 6f 72 6b 20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 69 t.code.work.under.this.section.i
50540 6e 2c 20 6f 72 20 77 69 74 68 2c 20 6f 72 0a 73 70 65 63 69 66 69 63 61 6c 6c 79 20 66 6f 72 20 n,.or.with,.or.specifically.for.
50560 75 73 65 20 69 6e 2c 20 61 20 55 73 65 72 20 50 72 6f 64 75 63 74 2c 20 61 6e 64 20 74 68 65 20 use.in,.a.User.Product,.and.the.
50580 63 6f 6e 76 65 79 69 6e 67 20 6f 63 63 75 72 73 20 61 73 0a 70 61 72 74 20 6f 66 20 61 20 74 72 conveying.occurs.as.part.of.a.tr
505a0 61 6e 73 61 63 74 69 6f 6e 20 69 6e 20 77 68 69 63 68 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 ansaction.in.which.the.right.of.
505c0 70 6f 73 73 65 73 73 69 6f 6e 20 61 6e 64 20 75 73 65 20 6f 66 20 74 68 65 0a 55 73 65 72 20 50 possession.and.use.of.the.User.P
505e0 72 6f 64 75 63 74 20 69 73 20 74 72 61 6e 73 66 65 72 72 65 64 20 74 6f 20 74 68 65 20 72 65 63 roduct.is.transferred.to.the.rec
50600 69 70 69 65 6e 74 20 69 6e 20 70 65 72 70 65 74 75 69 74 79 20 6f 72 20 66 6f 72 20 61 0a 66 69 ipient.in.perpetuity.or.for.a.fi
50620 78 65 64 20 74 65 72 6d 20 28 72 65 67 61 72 64 6c 65 73 73 20 6f 66 20 68 6f 77 20 74 68 65 20 xed.term.(regardless.of.how.the.
50640 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 63 68 61 72 61 63 74 65 72 69 7a 65 64 29 2c 20 74 transaction.is.characterized),.t
50660 68 65 0a 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 63 6f 6e 76 65 79 65 64 he.Corresponding.Source.conveyed
50680 20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 61 63 63 6f .under.this.section.must.be.acco
506a0 6d 70 61 6e 69 65 64 0a 62 79 20 74 68 65 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f mpanied.by.the.Installation.Info
506c0 72 6d 61 74 69 6f 6e 2e 20 20 42 75 74 20 74 68 69 73 20 72 65 71 75 69 72 65 6d 65 6e 74 20 64 rmation...But.this.requirement.d
506e0 6f 65 73 20 6e 6f 74 20 61 70 70 6c 79 0a 69 66 20 6e 65 69 74 68 65 72 20 79 6f 75 20 6e 6f 72 oes.not.apply.if.neither.you.nor
50700 20 61 6e 79 20 74 68 69 72 64 20 70 61 72 74 79 20 72 65 74 61 69 6e 73 20 74 68 65 20 61 62 69 .any.third.party.retains.the.abi
50720 6c 69 74 79 20 74 6f 20 69 6e 73 74 61 6c 6c 0a 6d 6f 64 69 66 69 65 64 20 6f 62 6a 65 63 74 20 lity.to.install.modified.object.
50740 63 6f 64 65 20 6f 6e 20 74 68 65 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 28 66 6f 72 20 65 78 code.on.the.User.Product.(for.ex
50760 61 6d 70 6c 65 2c 20 74 68 65 20 77 6f 72 6b 20 68 61 73 0a 62 65 65 6e 20 69 6e 73 74 61 6c 6c ample,.the.work.has.been.install
50780 65 64 20 69 6e 20 52 4f 4d 29 2e 0a 0a 20 20 54 68 65 20 72 65 71 75 69 72 65 6d 65 6e 74 20 74 ed.in.ROM).....The.requirement.t
507a0 6f 20 70 72 6f 76 69 64 65 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 6e 66 6f 72 6d 61 74 69 o.provide.Installation.Informati
507c0 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 61 0a 72 65 71 75 69 72 65 6d 65 6e on.does.not.include.a.requiremen
507e0 74 20 74 6f 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 70 72 6f 76 69 64 65 20 73 75 70 70 6f 72 74 t.to.continue.to.provide.support
50800 20 73 65 72 76 69 63 65 2c 20 77 61 72 72 61 6e 74 79 2c 20 6f 72 20 75 70 64 61 74 65 73 0a 66 .service,.warranty,.or.updates.f
50820 6f 72 20 61 20 77 6f 72 6b 20 74 68 61 74 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 or.a.work.that.has.been.modified
50840 20 6f 72 20 69 6e 73 74 61 6c 6c 65 64 20 62 79 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 2c 20 .or.installed.by.the.recipient,.
50860 6f 72 20 66 6f 72 0a 74 68 65 20 55 73 65 72 20 50 72 6f 64 75 63 74 20 69 6e 20 77 68 69 63 68 or.for.the.User.Product.in.which
50880 20 69 74 20 68 61 73 20 62 65 65 6e 20 6d 6f 64 69 66 69 65 64 20 6f 72 20 69 6e 73 74 61 6c 6c .it.has.been.modified.or.install
508a0 65 64 2e 20 20 41 63 63 65 73 73 20 74 6f 20 61 0a 6e 65 74 77 6f 72 6b 20 6d 61 79 20 62 65 20 ed...Access.to.a.network.may.be.
508c0 64 65 6e 69 65 64 20 77 68 65 6e 20 74 68 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 69 74 73 denied.when.the.modification.its
508e0 65 6c 66 20 6d 61 74 65 72 69 61 6c 6c 79 20 61 6e 64 0a 61 64 76 65 72 73 65 6c 79 20 61 66 66 elf.materially.and.adversely.aff
50900 65 63 74 73 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6e 65 74 77 6f 72 ects.the.operation.of.the.networ
50920 6b 20 6f 72 20 76 69 6f 6c 61 74 65 73 20 74 68 65 20 72 75 6c 65 73 20 61 6e 64 0a 70 72 6f 74 k.or.violates.the.rules.and.prot
50940 6f 63 6f 6c 73 20 66 6f 72 20 63 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e 20 61 63 72 6f 73 73 20 74 ocols.for.communication.across.t
50960 68 65 20 6e 65 74 77 6f 72 6b 2e 0a 0a 20 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 he.network.....Corresponding.Sou
50980 72 63 65 20 63 6f 6e 76 65 79 65 64 2c 20 61 6e 64 20 49 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 49 rce.conveyed,.and.Installation.I
509a0 6e 66 6f 72 6d 61 74 69 6f 6e 20 70 72 6f 76 69 64 65 64 2c 0a 69 6e 20 61 63 63 6f 72 64 20 77 nformation.provided,.in.accord.w
509c0 69 74 68 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 6d 75 73 74 20 62 65 20 69 6e 20 61 20 66 6f ith.this.section.must.be.in.a.fo
509e0 72 6d 61 74 20 74 68 61 74 20 69 73 20 70 75 62 6c 69 63 6c 79 0a 64 6f 63 75 6d 65 6e 74 65 64 rmat.that.is.publicly.documented
50a00 20 28 61 6e 64 20 77 69 74 68 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 76 61 .(and.with.an.implementation.ava
50a20 69 6c 61 62 6c 65 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20 69 6e 0a 73 6f 75 72 63 65 20 63 ilable.to.the.public.in.source.c
50a40 6f 64 65 20 66 6f 72 6d 29 2c 20 61 6e 64 20 6d 75 73 74 20 72 65 71 75 69 72 65 20 6e 6f 20 73 ode.form),.and.must.require.no.s
50a60 70 65 63 69 61 6c 20 70 61 73 73 77 6f 72 64 20 6f 72 20 6b 65 79 20 66 6f 72 0a 75 6e 70 61 63 pecial.password.or.key.for.unpac
50a80 6b 69 6e 67 2c 20 72 65 61 64 69 6e 67 20 6f 72 20 63 6f 70 79 69 6e 67 2e 0a 0a 20 20 37 2e 20 king,.reading.or.copying.....7..
50aa0 41 64 64 69 74 69 6f 6e 61 6c 20 54 65 72 6d 73 2e 0a 0a 20 20 22 41 64 64 69 74 69 6f 6e 61 6c Additional.Terms....."Additional
50ac0 20 70 65 72 6d 69 73 73 69 6f 6e 73 22 20 61 72 65 20 74 65 72 6d 73 20 74 68 61 74 20 73 75 70 .permissions".are.terms.that.sup
50ae0 70 6c 65 6d 65 6e 74 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 0a 4c 69 63 65 6e 73 plement.the.terms.of.this.Licens
50b00 65 20 62 79 20 6d 61 6b 69 6e 67 20 65 78 63 65 70 74 69 6f 6e 73 20 66 72 6f 6d 20 6f 6e 65 20 e.by.making.exceptions.from.one.
50b20 6f 72 20 6d 6f 72 65 20 6f 66 20 69 74 73 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a 41 64 64 69 74 or.more.of.its.conditions..Addit
50b40 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 74 68 61 74 20 61 72 65 20 61 70 70 6c 69 ional.permissions.that.are.appli
50b60 63 61 62 6c 65 20 74 6f 20 74 68 65 20 65 6e 74 69 72 65 20 50 72 6f 67 72 61 6d 20 73 68 61 6c cable.to.the.entire.Program.shal
50b80 6c 0a 62 65 20 74 72 65 61 74 65 64 20 61 73 20 74 68 6f 75 67 68 20 74 68 65 79 20 77 65 72 65 l.be.treated.as.though.they.were
50ba0 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 6f 20 74 68 .included.in.this.License,.to.th
50bc0 65 20 65 78 74 65 6e 74 0a 74 68 61 74 20 74 68 65 79 20 61 72 65 20 76 61 6c 69 64 20 75 6e 64 e.extent.that.they.are.valid.und
50be0 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 6c 61 77 2e 20 20 49 66 20 61 64 64 69 74 69 6f 6e 61 er.applicable.law...If.additiona
50c00 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 0a 61 70 70 6c 79 20 6f 6e 6c 79 20 74 6f 20 70 61 72 74 l.permissions.apply.only.to.part
50c20 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 74 68 61 74 20 70 61 72 74 20 6d 61 79 20 62 .of.the.Program,.that.part.may.b
50c40 65 20 75 73 65 64 20 73 65 70 61 72 61 74 65 6c 79 0a 75 6e 64 65 72 20 74 68 6f 73 65 20 70 65 e.used.separately.under.those.pe
50c60 72 6d 69 73 73 69 6f 6e 73 2c 20 62 75 74 20 74 68 65 20 65 6e 74 69 72 65 20 50 72 6f 67 72 61 rmissions,.but.the.entire.Progra
50c80 6d 20 72 65 6d 61 69 6e 73 20 67 6f 76 65 72 6e 65 64 20 62 79 0a 74 68 69 73 20 4c 69 63 65 6e m.remains.governed.by.this.Licen
50ca0 73 65 20 77 69 74 68 6f 75 74 20 72 65 67 61 72 64 20 74 6f 20 74 68 65 20 61 64 64 69 74 69 6f se.without.regard.to.the.additio
50cc0 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 2e 0a 0a 20 20 57 68 65 6e 20 79 6f 75 20 63 6f 6e nal.permissions.....When.you.con
50ce0 76 65 79 20 61 20 63 6f 70 79 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 79 6f vey.a.copy.of.a.covered.work,.yo
50d00 75 20 6d 61 79 20 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 0a 72 65 6d 6f 76 65 20 61 6e 79 20 u.may.at.your.option.remove.any.
50d20 61 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 66 72 6f 6d 20 74 68 61 74 additional.permissions.from.that
50d40 20 63 6f 70 79 2c 20 6f 72 20 66 72 6f 6d 20 61 6e 79 20 70 61 72 74 20 6f 66 0a 69 74 2e 20 20 .copy,.or.from.any.part.of.it...
50d60 28 41 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 6d 61 79 20 62 65 20 77 (Additional.permissions.may.be.w
50d80 72 69 74 74 65 6e 20 74 6f 20 72 65 71 75 69 72 65 20 74 68 65 69 72 20 6f 77 6e 0a 72 65 6d 6f ritten.to.require.their.own.remo
50da0 76 61 6c 20 69 6e 20 63 65 72 74 61 69 6e 20 63 61 73 65 73 20 77 68 65 6e 20 79 6f 75 20 6d 6f val.in.certain.cases.when.you.mo
50dc0 64 69 66 79 20 74 68 65 20 77 6f 72 6b 2e 29 20 20 59 6f 75 20 6d 61 79 20 70 6c 61 63 65 0a 61 dify.the.work.)..You.may.place.a
50de0 64 64 69 74 69 6f 6e 61 6c 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 6f 6e 20 6d 61 74 65 72 69 61 dditional.permissions.on.materia
50e00 6c 2c 20 61 64 64 65 64 20 62 79 20 79 6f 75 20 74 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 l,.added.by.you.to.a.covered.wor
50e20 6b 2c 0a 66 6f 72 20 77 68 69 63 68 20 79 6f 75 20 68 61 76 65 20 6f 72 20 63 61 6e 20 67 69 76 k,.for.which.you.have.or.can.giv
50e40 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 63 6f 70 79 72 69 67 68 74 20 70 65 72 6d 69 73 73 69 e.appropriate.copyright.permissi
50e60 6f 6e 2e 0a 0a 20 20 4e 6f 74 77 69 74 68 73 74 61 6e 64 69 6e 67 20 61 6e 79 20 6f 74 68 65 72 on.....Notwithstanding.any.other
50e80 20 70 72 6f 76 69 73 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 66 6f 72 20 .provision.of.this.License,.for.
50ea0 6d 61 74 65 72 69 61 6c 20 79 6f 75 0a 61 64 64 20 74 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f material.you.add.to.a.covered.wo
50ec0 72 6b 2c 20 79 6f 75 20 6d 61 79 20 28 69 66 20 61 75 74 68 6f 72 69 7a 65 64 20 62 79 20 74 68 rk,.you.may.(if.authorized.by.th
50ee0 65 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 73 20 6f 66 0a 74 68 61 74 20 6d 61 74 65 e.copyright.holders.of.that.mate
50f00 72 69 61 6c 29 20 73 75 70 70 6c 65 6d 65 6e 74 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 rial).supplement.the.terms.of.th
50f20 69 73 20 4c 69 63 65 6e 73 65 20 77 69 74 68 20 74 65 72 6d 73 3a 0a 0a 20 20 20 20 61 29 20 44 is.License.with.terms:......a).D
50f40 69 73 63 6c 61 69 6d 69 6e 67 20 77 61 72 72 61 6e 74 79 20 6f 72 20 6c 69 6d 69 74 69 6e 67 20 isclaiming.warranty.or.limiting.
50f60 6c 69 61 62 69 6c 69 74 79 20 64 69 66 66 65 72 65 6e 74 6c 79 20 66 72 6f 6d 20 74 68 65 0a 20 liability.differently.from.the..
50f80 20 20 20 74 65 72 6d 73 20 6f 66 20 73 65 63 74 69 6f 6e 73 20 31 35 20 61 6e 64 20 31 36 20 6f ...terms.of.sections.15.and.16.o
50fa0 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 3b 20 6f 72 0a 0a 20 20 20 20 62 29 20 52 65 71 75 69 f.this.License;.or......b).Requi
50fc0 72 69 6e 67 20 70 72 65 73 65 72 76 61 74 69 6f 6e 20 6f 66 20 73 70 65 63 69 66 69 65 64 20 72 ring.preservation.of.specified.r
50fe0 65 61 73 6f 6e 61 62 6c 65 20 6c 65 67 61 6c 20 6e 6f 74 69 63 65 73 20 6f 72 0a 20 20 20 20 61 easonable.legal.notices.or.....a
51000 75 74 68 6f 72 20 61 74 74 72 69 62 75 74 69 6f 6e 73 20 69 6e 20 74 68 61 74 20 6d 61 74 65 72 uthor.attributions.in.that.mater
51020 69 61 6c 20 6f 72 20 69 6e 20 74 68 65 20 41 70 70 72 6f 70 72 69 61 74 65 20 4c 65 67 61 6c 0a ial.or.in.the.Appropriate.Legal.
51040 20 20 20 20 4e 6f 74 69 63 65 73 20 64 69 73 70 6c 61 79 65 64 20 62 79 20 77 6f 72 6b 73 20 63 ....Notices.displayed.by.works.c
51060 6f 6e 74 61 69 6e 69 6e 67 20 69 74 3b 20 6f 72 0a 0a 20 20 20 20 63 29 20 50 72 6f 68 69 62 69 ontaining.it;.or......c).Prohibi
51080 74 69 6e 67 20 6d 69 73 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6f 72 ting.misrepresentation.of.the.or
510a0 69 67 69 6e 20 6f 66 20 74 68 61 74 20 6d 61 74 65 72 69 61 6c 2c 20 6f 72 0a 20 20 20 20 72 65 igin.of.that.material,.or.....re
510c0 71 75 69 72 69 6e 67 20 74 68 61 74 20 6d 6f 64 69 66 69 65 64 20 76 65 72 73 69 6f 6e 73 20 6f quiring.that.modified.versions.o
510e0 66 20 73 75 63 68 20 6d 61 74 65 72 69 61 6c 20 62 65 20 6d 61 72 6b 65 64 20 69 6e 0a 20 20 20 f.such.material.be.marked.in....
51100 20 72 65 61 73 6f 6e 61 62 6c 65 20 77 61 79 73 20 61 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 .reasonable.ways.as.different.fr
51120 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 76 65 72 73 69 6f 6e 3b 20 6f 72 0a 0a 20 20 20 om.the.original.version;.or.....
51140 20 64 29 20 4c 69 6d 69 74 69 6e 67 20 74 68 65 20 75 73 65 20 66 6f 72 20 70 75 62 6c 69 63 69 .d).Limiting.the.use.for.publici
51160 74 79 20 70 75 72 70 6f 73 65 73 20 6f 66 20 6e 61 6d 65 73 20 6f 66 20 6c 69 63 65 6e 73 6f 72 ty.purposes.of.names.of.licensor
51180 73 20 6f 72 0a 20 20 20 20 61 75 74 68 6f 72 73 20 6f 66 20 74 68 65 20 6d 61 74 65 72 69 61 6c s.or.....authors.of.the.material
511a0 3b 20 6f 72 0a 0a 20 20 20 20 65 29 20 44 65 63 6c 69 6e 69 6e 67 20 74 6f 20 67 72 61 6e 74 20 ;.or......e).Declining.to.grant.
511c0 72 69 67 68 74 73 20 75 6e 64 65 72 20 74 72 61 64 65 6d 61 72 6b 20 6c 61 77 20 66 6f 72 20 75 rights.under.trademark.law.for.u
511e0 73 65 20 6f 66 20 73 6f 6d 65 0a 20 20 20 20 74 72 61 64 65 20 6e 61 6d 65 73 2c 20 74 72 61 64 se.of.some.....trade.names,.trad
51200 65 6d 61 72 6b 73 2c 20 6f 72 20 73 65 72 76 69 63 65 20 6d 61 72 6b 73 3b 20 6f 72 0a 0a 20 20 emarks,.or.service.marks;.or....
51220 20 20 66 29 20 52 65 71 75 69 72 69 6e 67 20 69 6e 64 65 6d 6e 69 66 69 63 61 74 69 6f 6e 20 6f ..f).Requiring.indemnification.o
51240 66 20 6c 69 63 65 6e 73 6f 72 73 20 61 6e 64 20 61 75 74 68 6f 72 73 20 6f 66 20 74 68 61 74 0a f.licensors.and.authors.of.that.
51260 20 20 20 20 6d 61 74 65 72 69 61 6c 20 62 79 20 61 6e 79 6f 6e 65 20 77 68 6f 20 63 6f 6e 76 65 ....material.by.anyone.who.conve
51280 79 73 20 74 68 65 20 6d 61 74 65 72 69 61 6c 20 28 6f 72 20 6d 6f 64 69 66 69 65 64 20 76 65 72 ys.the.material.(or.modified.ver
512a0 73 69 6f 6e 73 20 6f 66 0a 20 20 20 20 69 74 29 20 77 69 74 68 20 63 6f 6e 74 72 61 63 74 75 61 sions.of.....it).with.contractua
512c0 6c 20 61 73 73 75 6d 70 74 69 6f 6e 73 20 6f 66 20 6c 69 61 62 69 6c 69 74 79 20 74 6f 20 74 68 l.assumptions.of.liability.to.th
512e0 65 20 72 65 63 69 70 69 65 6e 74 2c 20 66 6f 72 0a 20 20 20 20 61 6e 79 20 6c 69 61 62 69 6c 69 e.recipient,.for.....any.liabili
51300 74 79 20 74 68 61 74 20 74 68 65 73 65 20 63 6f 6e 74 72 61 63 74 75 61 6c 20 61 73 73 75 6d 70 ty.that.these.contractual.assump
51320 74 69 6f 6e 73 20 64 69 72 65 63 74 6c 79 20 69 6d 70 6f 73 65 20 6f 6e 0a 20 20 20 20 74 68 6f tions.directly.impose.on.....tho
51340 73 65 20 6c 69 63 65 6e 73 6f 72 73 20 61 6e 64 20 61 75 74 68 6f 72 73 2e 0a 0a 20 20 41 6c 6c se.licensors.and.authors.....All
51360 20 6f 74 68 65 72 20 6e 6f 6e 2d 70 65 72 6d 69 73 73 69 76 65 20 61 64 64 69 74 69 6f 6e 61 6c .other.non-permissive.additional
51380 20 74 65 72 6d 73 20 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 22 66 75 72 74 68 65 72 0a 72 .terms.are.considered."further.r
513a0 65 73 74 72 69 63 74 69 6f 6e 73 22 20 77 69 74 68 69 6e 20 74 68 65 20 6d 65 61 6e 69 6e 67 20 estrictions".within.the.meaning.
513c0 6f 66 20 73 65 63 74 69 6f 6e 20 31 30 2e 20 20 49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 61 of.section.10...If.the.Program.a
513e0 73 20 79 6f 75 0a 72 65 63 65 69 76 65 64 20 69 74 2c 20 6f 72 20 61 6e 79 20 70 61 72 74 20 6f s.you.received.it,.or.any.part.o
51400 66 20 69 74 2c 20 63 6f 6e 74 61 69 6e 73 20 61 20 6e 6f 74 69 63 65 20 73 74 61 74 69 6e 67 20 f.it,.contains.a.notice.stating.
51420 74 68 61 74 20 69 74 20 69 73 0a 67 6f 76 65 72 6e 65 64 20 62 79 20 74 68 69 73 20 4c 69 63 65 that.it.is.governed.by.this.Lice
51440 6e 73 65 20 61 6c 6f 6e 67 20 77 69 74 68 20 61 20 74 65 72 6d 20 74 68 61 74 20 69 73 20 61 20 nse.along.with.a.term.that.is.a.
51460 66 75 72 74 68 65 72 0a 72 65 73 74 72 69 63 74 69 6f 6e 2c 20 79 6f 75 20 6d 61 79 20 72 65 6d further.restriction,.you.may.rem
51480 6f 76 65 20 74 68 61 74 20 74 65 72 6d 2e 20 20 49 66 20 61 20 6c 69 63 65 6e 73 65 20 64 6f 63 ove.that.term...If.a.license.doc
514a0 75 6d 65 6e 74 20 63 6f 6e 74 61 69 6e 73 0a 61 20 66 75 72 74 68 65 72 20 72 65 73 74 72 69 63 ument.contains.a.further.restric
514c0 74 69 6f 6e 20 62 75 74 20 70 65 72 6d 69 74 73 20 72 65 6c 69 63 65 6e 73 69 6e 67 20 6f 72 20 tion.but.permits.relicensing.or.
514e0 63 6f 6e 76 65 79 69 6e 67 20 75 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 2c 20 79 6f conveying.under.this.License,.yo
51500 75 20 6d 61 79 20 61 64 64 20 74 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 6d 61 74 65 u.may.add.to.a.covered.work.mate
51520 72 69 61 6c 20 67 6f 76 65 72 6e 65 64 20 62 79 20 74 68 65 20 74 65 72 6d 73 0a 6f 66 20 74 68 rial.governed.by.the.terms.of.th
51540 61 74 20 6c 69 63 65 6e 73 65 20 64 6f 63 75 6d 65 6e 74 2c 20 70 72 6f 76 69 64 65 64 20 74 68 at.license.document,.provided.th
51560 61 74 20 74 68 65 20 66 75 72 74 68 65 72 20 72 65 73 74 72 69 63 74 69 6f 6e 20 64 6f 65 73 0a at.the.further.restriction.does.
51580 6e 6f 74 20 73 75 72 76 69 76 65 20 73 75 63 68 20 72 65 6c 69 63 65 6e 73 69 6e 67 20 6f 72 20 not.survive.such.relicensing.or.
515a0 63 6f 6e 76 65 79 69 6e 67 2e 0a 0a 20 20 49 66 20 79 6f 75 20 61 64 64 20 74 65 72 6d 73 20 74 conveying.....If.you.add.terms.t
515c0 6f 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 6e 20 61 63 63 6f 72 64 20 77 69 74 68 20 o.a.covered.work.in.accord.with.
515e0 74 68 69 73 20 73 65 63 74 69 6f 6e 2c 20 79 6f 75 0a 6d 75 73 74 20 70 6c 61 63 65 2c 20 69 6e this.section,.you.must.place,.in
51600 20 74 68 65 20 72 65 6c 65 76 61 6e 74 20 73 6f 75 72 63 65 20 66 69 6c 65 73 2c 20 61 20 73 74 .the.relevant.source.files,.a.st
51620 61 74 65 6d 65 6e 74 20 6f 66 20 74 68 65 0a 61 64 64 69 74 69 6f 6e 61 6c 20 74 65 72 6d 73 20 atement.of.the.additional.terms.
51640 74 68 61 74 20 61 70 70 6c 79 20 74 6f 20 74 68 6f 73 65 20 66 69 6c 65 73 2c 20 6f 72 20 61 20 that.apply.to.those.files,.or.a.
51660 6e 6f 74 69 63 65 20 69 6e 64 69 63 61 74 69 6e 67 0a 77 68 65 72 65 20 74 6f 20 66 69 6e 64 20 notice.indicating.where.to.find.
51680 74 68 65 20 61 70 70 6c 69 63 61 62 6c 65 20 74 65 72 6d 73 2e 0a 0a 20 20 41 64 64 69 74 69 6f the.applicable.terms.....Additio
516a0 6e 61 6c 20 74 65 72 6d 73 2c 20 70 65 72 6d 69 73 73 69 76 65 20 6f 72 20 6e 6f 6e 2d 70 65 72 nal.terms,.permissive.or.non-per
516c0 6d 69 73 73 69 76 65 2c 20 6d 61 79 20 62 65 20 73 74 61 74 65 64 20 69 6e 20 74 68 65 0a 66 6f missive,.may.be.stated.in.the.fo
516e0 72 6d 20 6f 66 20 61 20 73 65 70 61 72 61 74 65 6c 79 20 77 72 69 74 74 65 6e 20 6c 69 63 65 6e rm.of.a.separately.written.licen
51700 73 65 2c 20 6f 72 20 73 74 61 74 65 64 20 61 73 20 65 78 63 65 70 74 69 6f 6e 73 3b 0a 74 68 65 se,.or.stated.as.exceptions;.the
51720 20 61 62 6f 76 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 61 70 70 6c 79 20 65 69 74 68 65 72 .above.requirements.apply.either
51740 20 77 61 79 2e 0a 0a 20 20 38 2e 20 54 65 72 6d 69 6e 61 74 69 6f 6e 2e 0a 0a 20 20 59 6f 75 20 .way.....8..Termination.....You.
51760 6d 61 79 20 6e 6f 74 20 70 72 6f 70 61 67 61 74 65 20 6f 72 20 6d 6f 64 69 66 79 20 61 20 63 6f may.not.propagate.or.modify.a.co
51780 76 65 72 65 64 20 77 6f 72 6b 20 65 78 63 65 70 74 20 61 73 20 65 78 70 72 65 73 73 6c 79 0a 70 vered.work.except.as.expressly.p
517a0 72 6f 76 69 64 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 41 6e 79 rovided.under.this.License...Any
517c0 20 61 74 74 65 6d 70 74 20 6f 74 68 65 72 77 69 73 65 20 74 6f 20 70 72 6f 70 61 67 61 74 65 20 .attempt.otherwise.to.propagate.
517e0 6f 72 0a 6d 6f 64 69 66 79 20 69 74 20 69 73 20 76 6f 69 64 2c 20 61 6e 64 20 77 69 6c 6c 20 61 or.modify.it.is.void,.and.will.a
51800 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 74 65 72 6d 69 6e 61 74 65 20 79 6f 75 72 20 72 69 67 68 utomatically.terminate.your.righ
51820 74 73 20 75 6e 64 65 72 0a 74 68 69 73 20 4c 69 63 65 6e 73 65 20 28 69 6e 63 6c 75 64 69 6e 67 ts.under.this.License.(including
51840 20 61 6e 79 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 73 20 67 72 61 6e 74 65 64 20 75 6e 64 .any.patent.licenses.granted.und
51860 65 72 20 74 68 65 20 74 68 69 72 64 0a 70 61 72 61 67 72 61 70 68 20 6f 66 20 73 65 63 74 69 6f er.the.third.paragraph.of.sectio
51880 6e 20 31 31 29 2e 0a 0a 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 79 6f 75 20 63 65 61 73 65 20 n.11).....However,.if.you.cease.
518a0 61 6c 6c 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 all.violation.of.this.License,.t
518c0 68 65 6e 20 79 6f 75 72 0a 6c 69 63 65 6e 73 65 20 66 72 6f 6d 20 61 20 70 61 72 74 69 63 75 6c hen.your.license.from.a.particul
518e0 61 72 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 69 73 20 72 65 69 6e 73 74 61 74 65 ar.copyright.holder.is.reinstate
51900 64 20 28 61 29 0a 70 72 6f 76 69 73 69 6f 6e 61 6c 6c 79 2c 20 75 6e 6c 65 73 73 20 61 6e 64 20 d.(a).provisionally,.unless.and.
51920 75 6e 74 69 6c 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 65 78 70 6c 69 until.the.copyright.holder.expli
51940 63 69 74 6c 79 20 61 6e 64 0a 66 69 6e 61 6c 6c 79 20 74 65 72 6d 69 6e 61 74 65 73 20 79 6f 75 citly.and.finally.terminates.you
51960 72 20 6c 69 63 65 6e 73 65 2c 20 61 6e 64 20 28 62 29 20 70 65 72 6d 61 6e 65 6e 74 6c 79 2c 20 r.license,.and.(b).permanently,.
51980 69 66 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 0a 68 6f 6c 64 65 72 20 66 61 69 6c 73 20 74 6f if.the.copyright.holder.fails.to
519a0 20 6e 6f 74 69 66 79 20 79 6f 75 20 6f 66 20 74 68 65 20 76 69 6f 6c 61 74 69 6f 6e 20 62 79 20 .notify.you.of.the.violation.by.
519c0 73 6f 6d 65 20 72 65 61 73 6f 6e 61 62 6c 65 20 6d 65 61 6e 73 0a 70 72 69 6f 72 20 74 6f 20 36 some.reasonable.means.prior.to.6
519e0 30 20 64 61 79 73 20 61 66 74 65 72 20 74 68 65 20 63 65 73 73 61 74 69 6f 6e 2e 0a 0a 20 20 4d 0.days.after.the.cessation.....M
51a00 6f 72 65 6f 76 65 72 2c 20 79 6f 75 72 20 6c 69 63 65 6e 73 65 20 66 72 6f 6d 20 61 20 70 61 72 oreover,.your.license.from.a.par
51a20 74 69 63 75 6c 61 72 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 69 73 0a 72 65 69 6e ticular.copyright.holder.is.rein
51a40 73 74 61 74 65 64 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20 69 66 20 74 68 65 20 63 6f 70 79 72 69 stated.permanently.if.the.copyri
51a60 67 68 74 20 68 6f 6c 64 65 72 20 6e 6f 74 69 66 69 65 73 20 79 6f 75 20 6f 66 20 74 68 65 0a 76 ght.holder.notifies.you.of.the.v
51a80 69 6f 6c 61 74 69 6f 6e 20 62 79 20 73 6f 6d 65 20 72 65 61 73 6f 6e 61 62 6c 65 20 6d 65 61 6e iolation.by.some.reasonable.mean
51aa0 73 2c 20 74 68 69 73 20 69 73 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 20 79 6f 75 20 68 61 s,.this.is.the.first.time.you.ha
51ac0 76 65 0a 72 65 63 65 69 76 65 64 20 6e 6f 74 69 63 65 20 6f 66 20 76 69 6f 6c 61 74 69 6f 6e 20 ve.received.notice.of.violation.
51ae0 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 28 66 6f 72 20 61 6e 79 20 77 6f 72 6b 29 20 66 of.this.License.(for.any.work).f
51b00 72 6f 6d 20 74 68 61 74 0a 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 2c 20 61 6e 64 20 79 rom.that.copyright.holder,.and.y
51b20 6f 75 20 63 75 72 65 20 74 68 65 20 76 69 6f 6c 61 74 69 6f 6e 20 70 72 69 6f 72 20 74 6f 20 33 ou.cure.the.violation.prior.to.3
51b40 30 20 64 61 79 73 20 61 66 74 65 72 0a 79 6f 75 72 20 72 65 63 65 69 70 74 20 6f 66 20 74 68 65 0.days.after.your.receipt.of.the
51b60 20 6e 6f 74 69 63 65 2e 0a 0a 20 20 54 65 72 6d 69 6e 61 74 69 6f 6e 20 6f 66 20 79 6f 75 72 20 .notice.....Termination.of.your.
51b80 72 69 67 68 74 73 20 75 6e 64 65 72 20 74 68 69 73 20 73 65 63 74 69 6f 6e 20 64 6f 65 73 20 6e rights.under.this.section.does.n
51ba0 6f 74 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 0a 6c 69 63 65 6e 73 65 73 20 6f 66 20 70 61 72 ot.terminate.the.licenses.of.par
51bc0 74 69 65 73 20 77 68 6f 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 63 6f 70 69 65 73 20 6f 72 ties.who.have.received.copies.or
51be0 20 72 69 67 68 74 73 20 66 72 6f 6d 20 79 6f 75 20 75 6e 64 65 72 0a 74 68 69 73 20 4c 69 63 65 .rights.from.you.under.this.Lice
51c00 6e 73 65 2e 20 20 49 66 20 79 6f 75 72 20 72 69 67 68 74 73 20 68 61 76 65 20 62 65 65 6e 20 74 nse...If.your.rights.have.been.t
51c20 65 72 6d 69 6e 61 74 65 64 20 61 6e 64 20 6e 6f 74 20 70 65 72 6d 61 6e 65 6e 74 6c 79 0a 72 65 erminated.and.not.permanently.re
51c40 69 6e 73 74 61 74 65 64 2c 20 79 6f 75 20 64 6f 20 6e 6f 74 20 71 75 61 6c 69 66 79 20 74 6f 20 instated,.you.do.not.qualify.to.
51c60 72 65 63 65 69 76 65 20 6e 65 77 20 6c 69 63 65 6e 73 65 73 20 66 6f 72 20 74 68 65 20 73 61 6d receive.new.licenses.for.the.sam
51c80 65 0a 6d 61 74 65 72 69 61 6c 20 75 6e 64 65 72 20 73 65 63 74 69 6f 6e 20 31 30 2e 0a 0a 20 20 e.material.under.section.10.....
51ca0 39 2e 20 41 63 63 65 70 74 61 6e 63 65 20 4e 6f 74 20 52 65 71 75 69 72 65 64 20 66 6f 72 20 48 9..Acceptance.Not.Required.for.H
51cc0 61 76 69 6e 67 20 43 6f 70 69 65 73 2e 0a 0a 20 20 59 6f 75 20 61 72 65 20 6e 6f 74 20 72 65 71 aving.Copies.....You.are.not.req
51ce0 75 69 72 65 64 20 74 6f 20 61 63 63 65 70 74 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 69 6e 20 uired.to.accept.this.License.in.
51d00 6f 72 64 65 72 20 74 6f 20 72 65 63 65 69 76 65 20 6f 72 0a 72 75 6e 20 61 20 63 6f 70 79 20 6f order.to.receive.or.run.a.copy.o
51d20 66 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 20 20 41 6e 63 69 6c 6c 61 72 79 20 70 72 6f 70 61 67 f.the.Program...Ancillary.propag
51d40 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 6f 63 63 75 72 72 69 6e ation.of.a.covered.work.occurrin
51d60 67 20 73 6f 6c 65 6c 79 20 61 73 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 6f 66 20 75 73 69 g.solely.as.a.consequence.of.usi
51d80 6e 67 20 70 65 65 72 2d 74 6f 2d 70 65 65 72 20 74 72 61 6e 73 6d 69 73 73 69 6f 6e 0a 74 6f 20 ng.peer-to-peer.transmission.to.
51da0 72 65 63 65 69 76 65 20 61 20 63 6f 70 79 20 6c 69 6b 65 77 69 73 65 20 64 6f 65 73 20 6e 6f 74 receive.a.copy.likewise.does.not
51dc0 20 72 65 71 75 69 72 65 20 61 63 63 65 70 74 61 6e 63 65 2e 20 20 48 6f 77 65 76 65 72 2c 0a 6e .require.acceptance...However,.n
51de0 6f 74 68 69 6e 67 20 6f 74 68 65 72 20 74 68 61 6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 67 othing.other.than.this.License.g
51e00 72 61 6e 74 73 20 79 6f 75 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 70 72 6f 70 61 67 61 74 rants.you.permission.to.propagat
51e20 65 20 6f 72 0a 6d 6f 64 69 66 79 20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2e 20 20 54 e.or.modify.any.covered.work...T
51e40 68 65 73 65 20 61 63 74 69 6f 6e 73 20 69 6e 66 72 69 6e 67 65 20 63 6f 70 79 72 69 67 68 74 20 hese.actions.infringe.copyright.
51e60 69 66 20 79 6f 75 20 64 6f 0a 6e 6f 74 20 61 63 63 65 70 74 20 74 68 69 73 20 4c 69 63 65 6e 73 if.you.do.not.accept.this.Licens
51e80 65 2e 20 20 54 68 65 72 65 66 6f 72 65 2c 20 62 79 20 6d 6f 64 69 66 79 69 6e 67 20 6f 72 20 70 e...Therefore,.by.modifying.or.p
51ea0 72 6f 70 61 67 61 74 69 6e 67 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 79 6f 75 20 69 ropagating.a.covered.work,.you.i
51ec0 6e 64 69 63 61 74 65 20 79 6f 75 72 20 61 63 63 65 70 74 61 6e 63 65 20 6f 66 20 74 68 69 73 20 ndicate.your.acceptance.of.this.
51ee0 4c 69 63 65 6e 73 65 20 74 6f 20 64 6f 20 73 6f 2e 0a 0a 20 20 31 30 2e 20 41 75 74 6f 6d 61 74 License.to.do.so.....10..Automat
51f00 69 63 20 4c 69 63 65 6e 73 69 6e 67 20 6f 66 20 44 6f 77 6e 73 74 72 65 61 6d 20 52 65 63 69 70 ic.Licensing.of.Downstream.Recip
51f20 69 65 6e 74 73 2e 0a 0a 20 20 45 61 63 68 20 74 69 6d 65 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 ients.....Each.time.you.convey.a
51f40 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 74 68 65 20 72 65 63 69 70 69 65 6e 74 20 61 75 74 .covered.work,.the.recipient.aut
51f60 6f 6d 61 74 69 63 61 6c 6c 79 0a 72 65 63 65 69 76 65 73 20 61 20 6c 69 63 65 6e 73 65 20 66 72 omatically.receives.a.license.fr
51f80 6f 6d 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 6c 69 63 65 6e 73 6f 72 73 2c 20 74 6f 20 72 75 om.the.original.licensors,.to.ru
51fa0 6e 2c 20 6d 6f 64 69 66 79 20 61 6e 64 0a 70 72 6f 70 61 67 61 74 65 20 74 68 61 74 20 77 6f 72 n,.modify.and.propagate.that.wor
51fc0 6b 2c 20 73 75 62 6a 65 63 74 20 74 6f 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 59 6f 75 k,.subject.to.this.License...You
51fe0 20 61 72 65 20 6e 6f 74 20 72 65 73 70 6f 6e 73 69 62 6c 65 0a 66 6f 72 20 65 6e 66 6f 72 63 69 .are.not.responsible.for.enforci
52000 6e 67 20 63 6f 6d 70 6c 69 61 6e 63 65 20 62 79 20 74 68 69 72 64 20 70 61 72 74 69 65 73 20 77 ng.compliance.by.third.parties.w
52020 69 74 68 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 41 6e 20 22 65 6e 74 69 74 79 20 ith.this.License.....An."entity.
52040 74 72 61 6e 73 61 63 74 69 6f 6e 22 20 69 73 20 61 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 74 72 transaction".is.a.transaction.tr
52060 61 6e 73 66 65 72 72 69 6e 67 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 61 6e 0a 6f 72 67 61 6e 69 7a ansferring.control.of.an.organiz
52080 61 74 69 6f 6e 2c 20 6f 72 20 73 75 62 73 74 61 6e 74 69 61 6c 6c 79 20 61 6c 6c 20 61 73 73 65 ation,.or.substantially.all.asse
520a0 74 73 20 6f 66 20 6f 6e 65 2c 20 6f 72 20 73 75 62 64 69 76 69 64 69 6e 67 20 61 6e 0a 6f 72 67 ts.of.one,.or.subdividing.an.org
520c0 61 6e 69 7a 61 74 69 6f 6e 2c 20 6f 72 20 6d 65 72 67 69 6e 67 20 6f 72 67 61 6e 69 7a 61 74 69 anization,.or.merging.organizati
520e0 6f 6e 73 2e 20 20 49 66 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 6f 66 20 61 20 63 6f 76 65 72 65 ons...If.propagation.of.a.covere
52100 64 0a 77 6f 72 6b 20 72 65 73 75 6c 74 73 20 66 72 6f 6d 20 61 6e 20 65 6e 74 69 74 79 20 74 72 d.work.results.from.an.entity.tr
52120 61 6e 73 61 63 74 69 6f 6e 2c 20 65 61 63 68 20 70 61 72 74 79 20 74 6f 20 74 68 61 74 0a 74 72 ansaction,.each.party.to.that.tr
52140 61 6e 73 61 63 74 69 6f 6e 20 77 68 6f 20 72 65 63 65 69 76 65 73 20 61 20 63 6f 70 79 20 6f 66 ansaction.who.receives.a.copy.of
52160 20 74 68 65 20 77 6f 72 6b 20 61 6c 73 6f 20 72 65 63 65 69 76 65 73 20 77 68 61 74 65 76 65 72 .the.work.also.receives.whatever
52180 0a 6c 69 63 65 6e 73 65 73 20 74 6f 20 74 68 65 20 77 6f 72 6b 20 74 68 65 20 70 61 72 74 79 27 .licenses.to.the.work.the.party'
521a0 73 20 70 72 65 64 65 63 65 73 73 6f 72 20 69 6e 20 69 6e 74 65 72 65 73 74 20 68 61 64 20 6f 72 s.predecessor.in.interest.had.or
521c0 20 63 6f 75 6c 64 0a 67 69 76 65 20 75 6e 64 65 72 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 70 .could.give.under.the.previous.p
521e0 61 72 61 67 72 61 70 68 2c 20 70 6c 75 73 20 61 20 72 69 67 68 74 20 74 6f 20 70 6f 73 73 65 73 aragraph,.plus.a.right.to.posses
52200 73 69 6f 6e 20 6f 66 20 74 68 65 0a 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 sion.of.the.Corresponding.Source
52220 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 66 72 6f 6d 20 74 68 65 20 70 72 65 64 65 63 65 73 73 6f .of.the.work.from.the.predecesso
52240 72 20 69 6e 20 69 6e 74 65 72 65 73 74 2c 20 69 66 0a 74 68 65 20 70 72 65 64 65 63 65 73 73 6f r.in.interest,.if.the.predecesso
52260 72 20 68 61 73 20 69 74 20 6f 72 20 63 61 6e 20 67 65 74 20 69 74 20 77 69 74 68 20 72 65 61 73 r.has.it.or.can.get.it.with.reas
52280 6f 6e 61 62 6c 65 20 65 66 66 6f 72 74 73 2e 0a 0a 20 20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 69 onable.efforts.....You.may.not.i
522a0 6d 70 6f 73 65 20 61 6e 79 20 66 75 72 74 68 65 72 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 6f mpose.any.further.restrictions.o
522c0 6e 20 74 68 65 20 65 78 65 72 63 69 73 65 20 6f 66 20 74 68 65 0a 72 69 67 68 74 73 20 67 72 61 n.the.exercise.of.the.rights.gra
522e0 6e 74 65 64 20 6f 72 20 61 66 66 69 72 6d 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 nted.or.affirmed.under.this.Lice
52300 6e 73 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 79 6f 75 20 6d 61 79 0a 6e 6f 74 20 69 nse...For.example,.you.may.not.i
52320 6d 70 6f 73 65 20 61 20 6c 69 63 65 6e 73 65 20 66 65 65 2c 20 72 6f 79 61 6c 74 79 2c 20 6f 72 mpose.a.license.fee,.royalty,.or
52340 20 6f 74 68 65 72 20 63 68 61 72 67 65 20 66 6f 72 20 65 78 65 72 63 69 73 65 20 6f 66 0a 72 69 .other.charge.for.exercise.of.ri
52360 67 68 74 73 20 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c ghts.granted.under.this.License,
52380 20 61 6e 64 20 79 6f 75 20 6d 61 79 20 6e 6f 74 20 69 6e 69 74 69 61 74 65 20 6c 69 74 69 67 61 .and.you.may.not.initiate.litiga
523a0 74 69 6f 6e 0a 28 69 6e 63 6c 75 64 69 6e 67 20 61 20 63 72 6f 73 73 2d 63 6c 61 69 6d 20 6f 72 tion.(including.a.cross-claim.or
523c0 20 63 6f 75 6e 74 65 72 63 6c 61 69 6d 20 69 6e 20 61 20 6c 61 77 73 75 69 74 29 20 61 6c 6c 65 .counterclaim.in.a.lawsuit).alle
523e0 67 69 6e 67 20 74 68 61 74 0a 61 6e 79 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 20 69 73 20 69 6e ging.that.any.patent.claim.is.in
52400 66 72 69 6e 67 65 64 20 62 79 20 6d 61 6b 69 6e 67 2c 20 75 73 69 6e 67 2c 20 73 65 6c 6c 69 6e fringed.by.making,.using,.sellin
52420 67 2c 20 6f 66 66 65 72 69 6e 67 20 66 6f 72 0a 73 61 6c 65 2c 20 6f 72 20 69 6d 70 6f 72 74 69 g,.offering.for.sale,.or.importi
52440 6e 67 20 74 68 65 20 50 72 6f 67 72 61 6d 20 6f 72 20 61 6e 79 20 70 6f 72 74 69 6f 6e 20 6f 66 ng.the.Program.or.any.portion.of
52460 20 69 74 2e 0a 0a 20 20 31 31 2e 20 50 61 74 65 6e 74 73 2e 0a 0a 20 20 41 20 22 63 6f 6e 74 72 .it.....11..Patents.....A."contr
52480 69 62 75 74 6f 72 22 20 69 73 20 61 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 77 68 ibutor".is.a.copyright.holder.wh
524a0 6f 20 61 75 74 68 6f 72 69 7a 65 73 20 75 73 65 20 75 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 o.authorizes.use.under.this.Lice
524c0 6e 73 65 20 6f 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 6f 72 20 61 20 77 6f 72 6b 20 6f 6e 20 nse.of.the.Program.or.a.work.on.
524e0 77 68 69 63 68 20 74 68 65 20 50 72 6f 67 72 61 6d 20 69 73 20 62 61 73 65 64 2e 20 20 54 68 65 which.the.Program.is.based...The
52500 0a 77 6f 72 6b 20 74 68 75 73 20 6c 69 63 65 6e 73 65 64 20 69 73 20 63 61 6c 6c 65 64 20 74 68 .work.thus.licensed.is.called.th
52520 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 22 63 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 e.contributor's."contributor.ver
52540 73 69 6f 6e 22 2e 0a 0a 20 20 41 20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 22 65 73 73 65 6e sion".....A.contributor's."essen
52560 74 69 61 6c 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 73 22 20 61 72 65 20 61 6c 6c 20 70 61 74 65 tial.patent.claims".are.all.pate
52580 6e 74 20 63 6c 61 69 6d 73 0a 6f 77 6e 65 64 20 6f 72 20 63 6f 6e 74 72 6f 6c 6c 65 64 20 62 79 nt.claims.owned.or.controlled.by
525a0 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 2c 20 77 68 65 74 68 65 72 20 61 6c 72 65 61 64 .the.contributor,.whether.alread
525c0 79 20 61 63 71 75 69 72 65 64 20 6f 72 0a 68 65 72 65 61 66 74 65 72 20 61 63 71 75 69 72 65 64 y.acquired.or.hereafter.acquired
525e0 2c 20 74 68 61 74 20 77 6f 75 6c 64 20 62 65 20 69 6e 66 72 69 6e 67 65 64 20 62 79 20 73 6f 6d ,.that.would.be.infringed.by.som
52600 65 20 6d 61 6e 6e 65 72 2c 20 70 65 72 6d 69 74 74 65 64 0a 62 79 20 74 68 69 73 20 4c 69 63 65 e.manner,.permitted.by.this.Lice
52620 6e 73 65 2c 20 6f 66 20 6d 61 6b 69 6e 67 2c 20 75 73 69 6e 67 2c 20 6f 72 20 73 65 6c 6c 69 6e nse,.of.making,.using,.or.sellin
52640 67 20 69 74 73 20 63 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2c 0a 62 75 74 20 64 g.its.contributor.version,.but.d
52660 6f 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 63 6c 61 69 6d 73 20 74 68 61 74 20 77 6f 75 6c 64 20 o.not.include.claims.that.would.
52680 62 65 20 69 6e 66 72 69 6e 67 65 64 20 6f 6e 6c 79 20 61 73 20 61 0a 63 6f 6e 73 65 71 75 65 6e be.infringed.only.as.a.consequen
526a0 63 65 20 6f 66 20 66 75 72 74 68 65 72 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6f 66 20 74 68 ce.of.further.modification.of.th
526c0 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2e 20 20 46 6f 72 0a 70 75 72 70 e.contributor.version...For.purp
526e0 6f 73 65 73 20 6f 66 20 74 68 69 73 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 22 63 6f 6e 74 72 6f oses.of.this.definition,."contro
52700 6c 22 20 69 6e 63 6c 75 64 65 73 20 74 68 65 20 72 69 67 68 74 20 74 6f 20 67 72 61 6e 74 0a 70 l".includes.the.right.to.grant.p
52720 61 74 65 6e 74 20 73 75 62 6c 69 63 65 6e 73 65 73 20 69 6e 20 61 20 6d 61 6e 6e 65 72 20 63 6f atent.sublicenses.in.a.manner.co
52740 6e 73 69 73 74 65 6e 74 20 77 69 74 68 20 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 6f nsistent.with.the.requirements.o
52760 66 0a 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 45 61 63 68 20 63 6f 6e 74 72 69 62 75 f.this.License.....Each.contribu
52780 74 6f 72 20 67 72 61 6e 74 73 20 79 6f 75 20 61 20 6e 6f 6e 2d 65 78 63 6c 75 73 69 76 65 2c 20 tor.grants.you.a.non-exclusive,.
527a0 77 6f 72 6c 64 77 69 64 65 2c 20 72 6f 79 61 6c 74 79 2d 66 72 65 65 0a 70 61 74 65 6e 74 20 6c worldwide,.royalty-free.patent.l
527c0 69 63 65 6e 73 65 20 75 6e 64 65 72 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 6f 72 27 73 20 65 icense.under.the.contributor's.e
527e0 73 73 65 6e 74 69 61 6c 20 70 61 74 65 6e 74 20 63 6c 61 69 6d 73 2c 20 74 6f 0a 6d 61 6b 65 2c ssential.patent.claims,.to.make,
52800 20 75 73 65 2c 20 73 65 6c 6c 2c 20 6f 66 66 65 72 20 66 6f 72 20 73 61 6c 65 2c 20 69 6d 70 6f .use,.sell,.offer.for.sale,.impo
52820 72 74 20 61 6e 64 20 6f 74 68 65 72 77 69 73 65 20 72 75 6e 2c 20 6d 6f 64 69 66 79 20 61 6e 64 rt.and.otherwise.run,.modify.and
52840 0a 70 72 6f 70 61 67 61 74 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 69 74 73 20 63 .propagate.the.contents.of.its.c
52860 6f 6e 74 72 69 62 75 74 6f 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 49 6e 20 74 68 65 20 66 6f ontributor.version.....In.the.fo
52880 6c 6c 6f 77 69 6e 67 20 74 68 72 65 65 20 70 61 72 61 67 72 61 70 68 73 2c 20 61 20 22 70 61 74 llowing.three.paragraphs,.a."pat
528a0 65 6e 74 20 6c 69 63 65 6e 73 65 22 20 69 73 20 61 6e 79 20 65 78 70 72 65 73 73 0a 61 67 72 65 ent.license".is.any.express.agre
528c0 65 6d 65 6e 74 20 6f 72 20 63 6f 6d 6d 69 74 6d 65 6e 74 2c 20 68 6f 77 65 76 65 72 20 64 65 6e ement.or.commitment,.however.den
528e0 6f 6d 69 6e 61 74 65 64 2c 20 6e 6f 74 20 74 6f 20 65 6e 66 6f 72 63 65 20 61 20 70 61 74 65 6e ominated,.not.to.enforce.a.paten
52900 74 0a 28 73 75 63 68 20 61 73 20 61 6e 20 65 78 70 72 65 73 73 20 70 65 72 6d 69 73 73 69 6f 6e t.(such.as.an.express.permission
52920 20 74 6f 20 70 72 61 63 74 69 63 65 20 61 20 70 61 74 65 6e 74 20 6f 72 20 63 6f 76 65 6e 61 6e .to.practice.a.patent.or.covenan
52940 74 20 6e 6f 74 20 74 6f 0a 73 75 65 20 66 6f 72 20 70 61 74 65 6e 74 20 69 6e 66 72 69 6e 67 65 t.not.to.sue.for.patent.infringe
52960 6d 65 6e 74 29 2e 20 20 54 6f 20 22 67 72 61 6e 74 22 20 73 75 63 68 20 61 20 70 61 74 65 6e 74 ment)...To."grant".such.a.patent
52980 20 6c 69 63 65 6e 73 65 20 74 6f 20 61 0a 70 61 72 74 79 20 6d 65 61 6e 73 20 74 6f 20 6d 61 6b .license.to.a.party.means.to.mak
529a0 65 20 73 75 63 68 20 61 6e 20 61 67 72 65 65 6d 65 6e 74 20 6f 72 20 63 6f 6d 6d 69 74 6d 65 6e e.such.an.agreement.or.commitmen
529c0 74 20 6e 6f 74 20 74 6f 20 65 6e 66 6f 72 63 65 20 61 0a 70 61 74 65 6e 74 20 61 67 61 69 6e 73 t.not.to.enforce.a.patent.agains
529e0 74 20 74 68 65 20 70 61 72 74 79 2e 0a 0a 20 20 49 66 20 79 6f 75 20 63 6f 6e 76 65 79 20 61 20 t.the.party.....If.you.convey.a.
52a00 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 6b 6e 6f 77 69 6e 67 6c 79 20 72 65 6c 79 69 6e 67 20 covered.work,.knowingly.relying.
52a20 6f 6e 20 61 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 2c 0a 61 6e 64 20 74 68 65 20 43 6f 72 on.a.patent.license,.and.the.Cor
52a40 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 6f 66 20 74 68 65 20 77 6f 72 6b 20 69 73 responding.Source.of.the.work.is
52a60 20 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 61 6e 79 6f 6e 65 0a 74 6f 20 63 6f 70 .not.available.for.anyone.to.cop
52a80 79 2c 20 66 72 65 65 20 6f 66 20 63 68 61 72 67 65 20 61 6e 64 20 75 6e 64 65 72 20 74 68 65 20 y,.free.of.charge.and.under.the.
52aa0 74 65 72 6d 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 68 72 6f 75 67 68 20 61 terms.of.this.License,.through.a
52ac0 0a 70 75 62 6c 69 63 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 6e 65 74 77 6f 72 6b 20 73 65 72 76 .publicly.available.network.serv
52ae0 65 72 20 6f 72 20 6f 74 68 65 72 20 72 65 61 64 69 6c 79 20 61 63 63 65 73 73 69 62 6c 65 20 6d er.or.other.readily.accessible.m
52b00 65 61 6e 73 2c 0a 74 68 65 6e 20 79 6f 75 20 6d 75 73 74 20 65 69 74 68 65 72 20 28 31 29 20 63 eans,.then.you.must.either.(1).c
52b20 61 75 73 65 20 74 68 65 20 43 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 6f 75 72 63 65 20 74 6f ause.the.Corresponding.Source.to
52b40 20 62 65 20 73 6f 0a 61 76 61 69 6c 61 62 6c 65 2c 20 6f 72 20 28 32 29 20 61 72 72 61 6e 67 65 .be.so.available,.or.(2).arrange
52b60 20 74 6f 20 64 65 70 72 69 76 65 20 79 6f 75 72 73 65 6c 66 20 6f 66 20 74 68 65 20 62 65 6e 65 .to.deprive.yourself.of.the.bene
52b80 66 69 74 20 6f 66 20 74 68 65 0a 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 66 6f 72 20 74 68 fit.of.the.patent.license.for.th
52ba0 69 73 20 70 61 72 74 69 63 75 6c 61 72 20 77 6f 72 6b 2c 20 6f 72 20 28 33 29 20 61 72 72 61 6e is.particular.work,.or.(3).arran
52bc0 67 65 2c 20 69 6e 20 61 20 6d 61 6e 6e 65 72 0a 63 6f 6e 73 69 73 74 65 6e 74 20 77 69 74 68 20 ge,.in.a.manner.consistent.with.
52be0 74 68 65 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 the.requirements.of.this.License
52c00 2c 20 74 6f 20 65 78 74 65 6e 64 20 74 68 65 20 70 61 74 65 6e 74 0a 6c 69 63 65 6e 73 65 20 74 ,.to.extend.the.patent.license.t
52c20 6f 20 64 6f 77 6e 73 74 72 65 61 6d 20 72 65 63 69 70 69 65 6e 74 73 2e 20 20 22 4b 6e 6f 77 69 o.downstream.recipients..."Knowi
52c40 6e 67 6c 79 20 72 65 6c 79 69 6e 67 22 20 6d 65 61 6e 73 20 79 6f 75 20 68 61 76 65 0a 61 63 74 ngly.relying".means.you.have.act
52c60 75 61 6c 20 6b 6e 6f 77 6c 65 64 67 65 20 74 68 61 74 2c 20 62 75 74 20 66 6f 72 20 74 68 65 20 ual.knowledge.that,.but.for.the.
52c80 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 2c 20 79 6f 75 72 20 63 6f 6e 76 65 79 69 6e 67 20 74 patent.license,.your.conveying.t
52ca0 68 65 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 69 6e 20 61 20 63 6f 75 6e 74 72 79 2c 20 6f 72 he.covered.work.in.a.country,.or
52cc0 20 79 6f 75 72 20 72 65 63 69 70 69 65 6e 74 27 73 20 75 73 65 20 6f 66 20 74 68 65 20 63 6f 76 .your.recipient's.use.of.the.cov
52ce0 65 72 65 64 20 77 6f 72 6b 0a 69 6e 20 61 20 63 6f 75 6e 74 72 79 2c 20 77 6f 75 6c 64 20 69 6e ered.work.in.a.country,.would.in
52d00 66 72 69 6e 67 65 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 69 64 65 6e 74 69 66 69 61 62 6c 65 20 fringe.one.or.more.identifiable.
52d20 70 61 74 65 6e 74 73 20 69 6e 20 74 68 61 74 0a 63 6f 75 6e 74 72 79 20 74 68 61 74 20 79 6f 75 patents.in.that.country.that.you
52d40 20 68 61 76 65 20 72 65 61 73 6f 6e 20 74 6f 20 62 65 6c 69 65 76 65 20 61 72 65 20 76 61 6c 69 .have.reason.to.believe.are.vali
52d60 64 2e 0a 0a 20 20 49 66 2c 20 70 75 72 73 75 61 6e 74 20 74 6f 20 6f 72 20 69 6e 20 63 6f 6e 6e d.....If,.pursuant.to.or.in.conn
52d80 65 63 74 69 6f 6e 20 77 69 74 68 20 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 61 63 74 69 6f 6e ection.with.a.single.transaction
52da0 20 6f 72 0a 61 72 72 61 6e 67 65 6d 65 6e 74 2c 20 79 6f 75 20 63 6f 6e 76 65 79 2c 20 6f 72 20 .or.arrangement,.you.convey,.or.
52dc0 70 72 6f 70 61 67 61 74 65 20 62 79 20 70 72 6f 63 75 72 69 6e 67 20 63 6f 6e 76 65 79 61 6e 63 propagate.by.procuring.conveyanc
52de0 65 20 6f 66 2c 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 61 6e 64 20 67 72 61 6e 74 20 e.of,.a.covered.work,.and.grant.
52e00 61 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 74 6f 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 a.patent.license.to.some.of.the.
52e20 70 61 72 74 69 65 73 0a 72 65 63 65 69 76 69 6e 67 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f parties.receiving.the.covered.wo
52e40 72 6b 20 61 75 74 68 6f 72 69 7a 69 6e 67 20 74 68 65 6d 20 74 6f 20 75 73 65 2c 20 70 72 6f 70 rk.authorizing.them.to.use,.prop
52e60 61 67 61 74 65 2c 20 6d 6f 64 69 66 79 0a 6f 72 20 63 6f 6e 76 65 79 20 61 20 73 70 65 63 69 66 agate,.modify.or.convey.a.specif
52e80 69 63 20 63 6f 70 79 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 74 68 65 ic.copy.of.the.covered.work,.the
52ea0 6e 20 74 68 65 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 0a 79 6f 75 20 67 72 61 6e 74 20 69 n.the.patent.license.you.grant.i
52ec0 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 65 78 74 65 6e 64 65 64 20 74 6f 20 61 6c 6c 20 s.automatically.extended.to.all.
52ee0 72 65 63 69 70 69 65 6e 74 73 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 0a 77 6f 72 6b 20 61 recipients.of.the.covered.work.a
52f00 6e 64 20 77 6f 72 6b 73 20 62 61 73 65 64 20 6f 6e 20 69 74 2e 0a 0a 20 20 41 20 70 61 74 65 6e nd.works.based.on.it.....A.paten
52f20 74 20 6c 69 63 65 6e 73 65 20 69 73 20 22 64 69 73 63 72 69 6d 69 6e 61 74 6f 72 79 22 20 69 66 t.license.is."discriminatory".if
52f40 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 65 20 77 69 74 68 69 6e 0a 74 68 65 20 .it.does.not.include.within.the.
52f60 73 63 6f 70 65 20 6f 66 20 69 74 73 20 63 6f 76 65 72 61 67 65 2c 20 70 72 6f 68 69 62 69 74 73 scope.of.its.coverage,.prohibits
52f80 20 74 68 65 20 65 78 65 72 63 69 73 65 20 6f 66 2c 20 6f 72 20 69 73 0a 63 6f 6e 64 69 74 69 6f .the.exercise.of,.or.is.conditio
52fa0 6e 65 64 20 6f 6e 20 74 68 65 20 6e 6f 6e 2d 65 78 65 72 63 69 73 65 20 6f 66 20 6f 6e 65 20 6f ned.on.the.non-exercise.of.one.o
52fc0 72 20 6d 6f 72 65 20 6f 66 20 74 68 65 20 72 69 67 68 74 73 20 74 68 61 74 20 61 72 65 0a 73 70 r.more.of.the.rights.that.are.sp
52fe0 65 63 69 66 69 63 61 6c 6c 79 20 67 72 61 6e 74 65 64 20 75 6e 64 65 72 20 74 68 69 73 20 4c 69 ecifically.granted.under.this.Li
53000 63 65 6e 73 65 2e 20 20 59 6f 75 20 6d 61 79 20 6e 6f 74 20 63 6f 6e 76 65 79 20 61 20 63 6f 76 cense...You.may.not.convey.a.cov
53020 65 72 65 64 0a 77 6f 72 6b 20 69 66 20 79 6f 75 20 61 72 65 20 61 20 70 61 72 74 79 20 74 6f 20 ered.work.if.you.are.a.party.to.
53040 61 6e 20 61 72 72 61 6e 67 65 6d 65 6e 74 20 77 69 74 68 20 61 20 74 68 69 72 64 20 70 61 72 74 an.arrangement.with.a.third.part
53060 79 20 74 68 61 74 20 69 73 0a 69 6e 20 74 68 65 20 62 75 73 69 6e 65 73 73 20 6f 66 20 64 69 73 y.that.is.in.the.business.of.dis
53080 74 72 69 62 75 74 69 6e 67 20 73 6f 66 74 77 61 72 65 2c 20 75 6e 64 65 72 20 77 68 69 63 68 20 tributing.software,.under.which.
530a0 79 6f 75 20 6d 61 6b 65 20 70 61 79 6d 65 6e 74 0a 74 6f 20 74 68 65 20 74 68 69 72 64 20 70 61 you.make.payment.to.the.third.pa
530c0 72 74 79 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 65 78 74 65 6e 74 20 6f 66 20 79 6f 75 72 20 rty.based.on.the.extent.of.your.
530e0 61 63 74 69 76 69 74 79 20 6f 66 20 63 6f 6e 76 65 79 69 6e 67 0a 74 68 65 20 77 6f 72 6b 2c 20 activity.of.conveying.the.work,.
53100 61 6e 64 20 75 6e 64 65 72 20 77 68 69 63 68 20 74 68 65 20 74 68 69 72 64 20 70 61 72 74 79 20 and.under.which.the.third.party.
53120 67 72 61 6e 74 73 2c 20 74 6f 20 61 6e 79 20 6f 66 20 74 68 65 0a 70 61 72 74 69 65 73 20 77 68 grants,.to.any.of.the.parties.wh
53140 6f 20 77 6f 75 6c 64 20 72 65 63 65 69 76 65 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b o.would.receive.the.covered.work
53160 20 66 72 6f 6d 20 79 6f 75 2c 20 61 20 64 69 73 63 72 69 6d 69 6e 61 74 6f 72 79 0a 70 61 74 65 .from.you,.a.discriminatory.pate
53180 6e 74 20 6c 69 63 65 6e 73 65 20 28 61 29 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 nt.license.(a).in.connection.wit
531a0 68 20 63 6f 70 69 65 73 20 6f 66 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 0a 63 6f 6e h.copies.of.the.covered.work.con
531c0 76 65 79 65 64 20 62 79 20 79 6f 75 20 28 6f 72 20 63 6f 70 69 65 73 20 6d 61 64 65 20 66 72 6f veyed.by.you.(or.copies.made.fro
531e0 6d 20 74 68 6f 73 65 20 63 6f 70 69 65 73 29 2c 20 6f 72 20 28 62 29 20 70 72 69 6d 61 72 69 6c m.those.copies),.or.(b).primaril
53200 79 0a 66 6f 72 20 61 6e 64 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 73 70 65 y.for.and.in.connection.with.spe
53220 63 69 66 69 63 20 70 72 6f 64 75 63 74 73 20 6f 72 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 73 20 74 cific.products.or.compilations.t
53240 68 61 74 0a 63 6f 6e 74 61 69 6e 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 2c 20 75 6e hat.contain.the.covered.work,.un
53260 6c 65 73 73 20 79 6f 75 20 65 6e 74 65 72 65 64 20 69 6e 74 6f 20 74 68 61 74 20 61 72 72 61 6e less.you.entered.into.that.arran
53280 67 65 6d 65 6e 74 2c 0a 6f 72 20 74 68 61 74 20 70 61 74 65 6e 74 20 6c 69 63 65 6e 73 65 20 77 gement,.or.that.patent.license.w
532a0 61 73 20 67 72 61 6e 74 65 64 2c 20 70 72 69 6f 72 20 74 6f 20 32 38 20 4d 61 72 63 68 20 32 30 as.granted,.prior.to.28.March.20
532c0 30 37 2e 0a 0a 20 20 4e 6f 74 68 69 6e 67 20 69 6e 20 74 68 69 73 20 4c 69 63 65 6e 73 65 20 73 07.....Nothing.in.this.License.s
532e0 68 61 6c 6c 20 62 65 20 63 6f 6e 73 74 72 75 65 64 20 61 73 20 65 78 63 6c 75 64 69 6e 67 20 6f hall.be.construed.as.excluding.o
53300 72 20 6c 69 6d 69 74 69 6e 67 0a 61 6e 79 20 69 6d 70 6c 69 65 64 20 6c 69 63 65 6e 73 65 20 6f r.limiting.any.implied.license.o
53320 72 20 6f 74 68 65 72 20 64 65 66 65 6e 73 65 73 20 74 6f 20 69 6e 66 72 69 6e 67 65 6d 65 6e 74 r.other.defenses.to.infringement
53340 20 74 68 61 74 20 6d 61 79 0a 6f 74 68 65 72 77 69 73 65 20 62 65 20 61 76 61 69 6c 61 62 6c 65 .that.may.otherwise.be.available
53360 20 74 6f 20 79 6f 75 20 75 6e 64 65 72 20 61 70 70 6c 69 63 61 62 6c 65 20 70 61 74 65 6e 74 20 .to.you.under.applicable.patent.
53380 6c 61 77 2e 0a 0a 20 20 31 32 2e 20 4e 6f 20 53 75 72 72 65 6e 64 65 72 20 6f 66 20 4f 74 68 65 law.....12..No.Surrender.of.Othe
533a0 72 73 27 20 46 72 65 65 64 6f 6d 2e 0a 0a 20 20 49 66 20 63 6f 6e 64 69 74 69 6f 6e 73 20 61 72 rs'.Freedom.....If.conditions.ar
533c0 65 20 69 6d 70 6f 73 65 64 20 6f 6e 20 79 6f 75 20 28 77 68 65 74 68 65 72 20 62 79 20 63 6f 75 e.imposed.on.you.(whether.by.cou
533e0 72 74 20 6f 72 64 65 72 2c 20 61 67 72 65 65 6d 65 6e 74 20 6f 72 0a 6f 74 68 65 72 77 69 73 65 rt.order,.agreement.or.otherwise
53400 29 20 74 68 61 74 20 63 6f 6e 74 72 61 64 69 63 74 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 ).that.contradict.the.conditions
53420 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2c 20 74 68 65 79 20 64 6f 20 6e 6f 74 0a 65 78 .of.this.License,.they.do.not.ex
53440 63 75 73 65 20 79 6f 75 20 66 72 6f 6d 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 6f 66 20 cuse.you.from.the.conditions.of.
53460 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 49 66 20 79 6f 75 20 63 61 6e 6e 6f 74 20 63 6f 6e this.License...If.you.cannot.con
53480 76 65 79 20 61 0a 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 73 6f 20 61 73 20 74 6f 20 73 61 74 69 vey.a.covered.work.so.as.to.sati
534a0 73 66 79 20 73 69 6d 75 6c 74 61 6e 65 6f 75 73 6c 79 20 79 6f 75 72 20 6f 62 6c 69 67 61 74 69 sfy.simultaneously.your.obligati
534c0 6f 6e 73 20 75 6e 64 65 72 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 20 61 6e 64 20 61 6e 79 20 6f ons.under.this.License.and.any.o
534e0 74 68 65 72 20 70 65 72 74 69 6e 65 6e 74 20 6f 62 6c 69 67 61 74 69 6f 6e 73 2c 20 74 68 65 6e ther.pertinent.obligations,.then
53500 20 61 73 20 61 20 63 6f 6e 73 65 71 75 65 6e 63 65 20 79 6f 75 20 6d 61 79 0a 6e 6f 74 20 63 6f .as.a.consequence.you.may.not.co
53520 6e 76 65 79 20 69 74 20 61 74 20 61 6c 6c 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 nvey.it.at.all...For.example,.if
53540 20 79 6f 75 20 61 67 72 65 65 20 74 6f 20 74 65 72 6d 73 20 74 68 61 74 20 6f 62 6c 69 67 61 74 .you.agree.to.terms.that.obligat
53560 65 20 79 6f 75 0a 74 6f 20 63 6f 6c 6c 65 63 74 20 61 20 72 6f 79 61 6c 74 79 20 66 6f 72 20 66 e.you.to.collect.a.royalty.for.f
53580 75 72 74 68 65 72 20 63 6f 6e 76 65 79 69 6e 67 20 66 72 6f 6d 20 74 68 6f 73 65 20 74 6f 20 77 urther.conveying.from.those.to.w
535a0 68 6f 6d 20 79 6f 75 20 63 6f 6e 76 65 79 0a 74 68 65 20 50 72 6f 67 72 61 6d 2c 20 74 68 65 20 hom.you.convey.the.Program,.the.
535c0 6f 6e 6c 79 20 77 61 79 20 79 6f 75 20 63 6f 75 6c 64 20 73 61 74 69 73 66 79 20 62 6f 74 68 20 only.way.you.could.satisfy.both.
535e0 74 68 6f 73 65 20 74 65 72 6d 73 20 61 6e 64 20 74 68 69 73 0a 4c 69 63 65 6e 73 65 20 77 6f 75 those.terms.and.this.License.wou
53600 6c 64 20 62 65 20 74 6f 20 72 65 66 72 61 69 6e 20 65 6e 74 69 72 65 6c 79 20 66 72 6f 6d 20 63 ld.be.to.refrain.entirely.from.c
53620 6f 6e 76 65 79 69 6e 67 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 31 33 2e 20 55 73 65 onveying.the.Program.....13..Use
53640 20 77 69 74 68 20 74 68 65 20 47 4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 .with.the.GNU.Affero.General.Pub
53660 6c 69 63 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 4e 6f 74 77 69 74 68 73 74 61 6e 64 69 6e 67 20 lic.License.....Notwithstanding.
53680 61 6e 79 20 6f 74 68 65 72 20 70 72 6f 76 69 73 69 6f 6e 20 6f 66 20 74 68 69 73 20 4c 69 63 65 any.other.provision.of.this.Lice
536a0 6e 73 65 2c 20 79 6f 75 20 68 61 76 65 0a 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 6c 69 6e 6b nse,.you.have.permission.to.link
536c0 20 6f 72 20 63 6f 6d 62 69 6e 65 20 61 6e 79 20 63 6f 76 65 72 65 64 20 77 6f 72 6b 20 77 69 74 .or.combine.any.covered.work.wit
536e0 68 20 61 20 77 6f 72 6b 20 6c 69 63 65 6e 73 65 64 0a 75 6e 64 65 72 20 76 65 72 73 69 6f 6e 20 h.a.work.licensed.under.version.
53700 33 20 6f 66 20 74 68 65 20 47 4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 3.of.the.GNU.Affero.General.Publ
53720 69 63 20 4c 69 63 65 6e 73 65 20 69 6e 74 6f 20 61 20 73 69 6e 67 6c 65 0a 63 6f 6d 62 69 6e 65 ic.License.into.a.single.combine
53740 64 20 77 6f 72 6b 2c 20 61 6e 64 20 74 6f 20 63 6f 6e 76 65 79 20 74 68 65 20 72 65 73 75 6c 74 d.work,.and.to.convey.the.result
53760 69 6e 67 20 77 6f 72 6b 2e 20 20 54 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 69 73 0a 4c 69 63 ing.work...The.terms.of.this.Lic
53780 65 6e 73 65 20 77 69 6c 6c 20 63 6f 6e 74 69 6e 75 65 20 74 6f 20 61 70 70 6c 79 20 74 6f 20 74 ense.will.continue.to.apply.to.t
537a0 68 65 20 70 61 72 74 20 77 68 69 63 68 20 69 73 20 74 68 65 20 63 6f 76 65 72 65 64 20 77 6f 72 he.part.which.is.the.covered.wor
537c0 6b 2c 0a 62 75 74 20 74 68 65 20 73 70 65 63 69 61 6c 20 72 65 71 75 69 72 65 6d 65 6e 74 73 20 k,.but.the.special.requirements.
537e0 6f 66 20 74 68 65 20 47 4e 55 20 41 66 66 65 72 6f 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 of.the.GNU.Affero.General.Public
53800 20 4c 69 63 65 6e 73 65 2c 0a 73 65 63 74 69 6f 6e 20 31 33 2c 20 63 6f 6e 63 65 72 6e 69 6e 67 .License,.section.13,.concerning
53820 20 69 6e 74 65 72 61 63 74 69 6f 6e 20 74 68 72 6f 75 67 68 20 61 20 6e 65 74 77 6f 72 6b 20 77 .interaction.through.a.network.w
53840 69 6c 6c 20 61 70 70 6c 79 20 74 6f 20 74 68 65 0a 63 6f 6d 62 69 6e 61 74 69 6f 6e 20 61 73 20 ill.apply.to.the.combination.as.
53860 73 75 63 68 2e 0a 0a 20 20 31 34 2e 20 52 65 76 69 73 65 64 20 56 65 72 73 69 6f 6e 73 20 6f 66 such.....14..Revised.Versions.of
53880 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 0a 0a 20 20 54 68 65 20 46 72 65 65 20 53 6f 66 74 77 .this.License.....The.Free.Softw
538a0 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 20 6d 61 79 20 70 75 62 6c 69 73 68 20 72 65 76 69 73 are.Foundation.may.publish.revis
538c0 65 64 20 61 6e 64 2f 6f 72 20 6e 65 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 0a 74 68 65 20 47 4e ed.and/or.new.versions.of.the.GN
538e0 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 72 6f 6d 20 74 69 U.General.Public.License.from.ti
53900 6d 65 20 74 6f 20 74 69 6d 65 2e 20 20 53 75 63 68 20 6e 65 77 20 76 65 72 73 69 6f 6e 73 20 77 me.to.time...Such.new.versions.w
53920 69 6c 6c 0a 62 65 20 73 69 6d 69 6c 61 72 20 69 6e 20 73 70 69 72 69 74 20 74 6f 20 74 68 65 20 ill.be.similar.in.spirit.to.the.
53940 70 72 65 73 65 6e 74 20 76 65 72 73 69 6f 6e 2c 20 62 75 74 20 6d 61 79 20 64 69 66 66 65 72 20 present.version,.but.may.differ.
53960 69 6e 20 64 65 74 61 69 6c 20 74 6f 0a 61 64 64 72 65 73 73 20 6e 65 77 20 70 72 6f 62 6c 65 6d in.detail.to.address.new.problem
53980 73 20 6f 72 20 63 6f 6e 63 65 72 6e 73 2e 0a 0a 20 20 45 61 63 68 20 76 65 72 73 69 6f 6e 20 69 s.or.concerns.....Each.version.i
539a0 73 20 67 69 76 65 6e 20 61 20 64 69 73 74 69 6e 67 75 69 73 68 69 6e 67 20 76 65 72 73 69 6f 6e s.given.a.distinguishing.version
539c0 20 6e 75 6d 62 65 72 2e 20 20 49 66 20 74 68 65 0a 50 72 6f 67 72 61 6d 20 73 70 65 63 69 66 69 .number...If.the.Program.specifi
539e0 65 73 20 74 68 61 74 20 61 20 63 65 72 74 61 69 6e 20 6e 75 6d 62 65 72 65 64 20 76 65 72 73 69 es.that.a.certain.numbered.versi
53a00 6f 6e 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 0a 50 75 62 6c 69 63 20 4c 69 63 on.of.the.GNU.General.Public.Lic
53a20 65 6e 73 65 20 22 6f 72 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 22 20 61 70 70 6c ense."or.any.later.version".appl
53a40 69 65 73 20 74 6f 20 69 74 2c 20 79 6f 75 20 68 61 76 65 20 74 68 65 0a 6f 70 74 69 6f 6e 20 6f ies.to.it,.you.have.the.option.o
53a60 66 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 74 65 72 6d 73 20 61 6e 64 20 63 6f 6e 64 69 74 f.following.the.terms.and.condit
53a80 69 6f 6e 73 20 65 69 74 68 65 72 20 6f 66 20 74 68 61 74 20 6e 75 6d 62 65 72 65 64 0a 76 65 72 ions.either.of.that.numbered.ver
53aa0 73 69 6f 6e 20 6f 72 20 6f 66 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 20 70 75 62 sion.or.of.any.later.version.pub
53ac0 6c 69 73 68 65 64 20 62 79 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 0a 46 6f 75 6e lished.by.the.Free.Software.Foun
53ae0 64 61 74 69 6f 6e 2e 20 20 49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 64 6f 65 73 20 6e 6f 74 dation...If.the.Program.does.not
53b00 20 73 70 65 63 69 66 79 20 61 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 .specify.a.version.number.of.the
53b20 0a 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2c 20 79 6f 75 .GNU.General.Public.License,.you
53b40 20 6d 61 79 20 63 68 6f 6f 73 65 20 61 6e 79 20 76 65 72 73 69 6f 6e 20 65 76 65 72 20 70 75 62 .may.choose.any.version.ever.pub
53b60 6c 69 73 68 65 64 0a 62 79 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e lished.by.the.Free.Software.Foun
53b80 64 61 74 69 6f 6e 2e 0a 0a 20 20 49 66 20 74 68 65 20 50 72 6f 67 72 61 6d 20 73 70 65 63 69 66 dation.....If.the.Program.specif
53ba0 69 65 73 20 74 68 61 74 20 61 20 70 72 6f 78 79 20 63 61 6e 20 64 65 63 69 64 65 20 77 68 69 63 ies.that.a.proxy.can.decide.whic
53bc0 68 20 66 75 74 75 72 65 0a 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e h.future.versions.of.the.GNU.Gen
53be0 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 63 61 6e 20 62 65 20 75 73 65 64 2c eral.Public.License.can.be.used,
53c00 20 74 68 61 74 20 70 72 6f 78 79 27 73 0a 70 75 62 6c 69 63 20 73 74 61 74 65 6d 65 6e 74 20 6f .that.proxy's.public.statement.o
53c20 66 20 61 63 63 65 70 74 61 6e 63 65 20 6f 66 20 61 20 76 65 72 73 69 6f 6e 20 70 65 72 6d 61 6e f.acceptance.of.a.version.perman
53c40 65 6e 74 6c 79 20 61 75 74 68 6f 72 69 7a 65 73 20 79 6f 75 0a 74 6f 20 63 68 6f 6f 73 65 20 74 ently.authorizes.you.to.choose.t
53c60 68 61 74 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 74 68 65 20 50 72 6f 67 72 61 6d 2e 0a 0a 20 20 hat.version.for.the.Program.....
53c80 4c 61 74 65 72 20 6c 69 63 65 6e 73 65 20 76 65 72 73 69 6f 6e 73 20 6d 61 79 20 67 69 76 65 20 Later.license.versions.may.give.
53ca0 79 6f 75 20 61 64 64 69 74 69 6f 6e 61 6c 20 6f 72 20 64 69 66 66 65 72 65 6e 74 0a 70 65 72 6d you.additional.or.different.perm
53cc0 69 73 73 69 6f 6e 73 2e 20 20 48 6f 77 65 76 65 72 2c 20 6e 6f 20 61 64 64 69 74 69 6f 6e 61 6c issions...However,.no.additional
53ce0 20 6f 62 6c 69 67 61 74 69 6f 6e 73 20 61 72 65 20 69 6d 70 6f 73 65 64 20 6f 6e 20 61 6e 79 0a .obligations.are.imposed.on.any.
53d00 61 75 74 68 6f 72 20 6f 72 20 63 6f 70 79 72 69 67 68 74 20 68 6f 6c 64 65 72 20 61 73 20 61 20 author.or.copyright.holder.as.a.
53d20 72 65 73 75 6c 74 20 6f 66 20 79 6f 75 72 20 63 68 6f 6f 73 69 6e 67 20 74 6f 20 66 6f 6c 6c 6f result.of.your.choosing.to.follo
53d40 77 20 61 0a 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 31 35 2e 20 44 69 73 63 6c 61 w.a.later.version.....15..Discla
53d60 69 6d 65 72 20 6f 66 20 57 61 72 72 61 6e 74 79 2e 0a 0a 20 20 54 48 45 52 45 20 49 53 20 4e 4f imer.of.Warranty.....THERE.IS.NO
53d80 20 57 41 52 52 41 4e 54 59 20 46 4f 52 20 54 48 45 20 50 52 4f 47 52 41 4d 2c 20 54 4f 20 54 48 .WARRANTY.FOR.THE.PROGRAM,.TO.TH
53da0 45 20 45 58 54 45 4e 54 20 50 45 52 4d 49 54 54 45 44 20 42 59 0a 41 50 50 4c 49 43 41 42 4c 45 E.EXTENT.PERMITTED.BY.APPLICABLE
53dc0 20 4c 41 57 2e 20 20 45 58 43 45 50 54 20 57 48 45 4e 20 4f 54 48 45 52 57 49 53 45 20 53 54 41 .LAW...EXCEPT.WHEN.OTHERWISE.STA
53de0 54 45 44 20 49 4e 20 57 52 49 54 49 4e 47 20 54 48 45 20 43 4f 50 59 52 49 47 48 54 0a 48 4f 4c TED.IN.WRITING.THE.COPYRIGHT.HOL
53e00 44 45 52 53 20 41 4e 44 2f 4f 52 20 4f 54 48 45 52 20 50 41 52 54 49 45 53 20 50 52 4f 56 49 44 DERS.AND/OR.OTHER.PARTIES.PROVID
53e20 45 20 54 48 45 20 50 52 4f 47 52 41 4d 20 22 41 53 20 49 53 22 20 57 49 54 48 4f 55 54 20 57 41 E.THE.PROGRAM."AS.IS".WITHOUT.WA
53e40 52 52 41 4e 54 59 0a 4f 46 20 41 4e 59 20 4b 49 4e 44 2c 20 45 49 54 48 45 52 20 45 58 50 52 45 RRANTY.OF.ANY.KIND,.EITHER.EXPRE
53e60 53 53 45 44 20 4f 52 20 49 4d 50 4c 49 45 44 2c 20 49 4e 43 4c 55 44 49 4e 47 2c 20 42 55 54 20 SSED.OR.IMPLIED,.INCLUDING,.BUT.
53e80 4e 4f 54 20 4c 49 4d 49 54 45 44 20 54 4f 2c 0a 54 48 45 20 49 4d 50 4c 49 45 44 20 57 41 52 52 NOT.LIMITED.TO,.THE.IMPLIED.WARR
53ea0 41 4e 54 49 45 53 20 4f 46 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 41 4e 44 20 46 49 ANTIES.OF.MERCHANTABILITY.AND.FI
53ec0 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 0a 50 55 52 50 4f 53 45 2e 20 TNESS.FOR.A.PARTICULAR.PURPOSE..
53ee0 20 54 48 45 20 45 4e 54 49 52 45 20 52 49 53 4b 20 41 53 20 54 4f 20 54 48 45 20 51 55 41 4c 49 .THE.ENTIRE.RISK.AS.TO.THE.QUALI
53f00 54 59 20 41 4e 44 20 50 45 52 46 4f 52 4d 41 4e 43 45 20 4f 46 20 54 48 45 20 50 52 4f 47 52 41 TY.AND.PERFORMANCE.OF.THE.PROGRA
53f20 4d 0a 49 53 20 57 49 54 48 20 59 4f 55 2e 20 20 53 48 4f 55 4c 44 20 54 48 45 20 50 52 4f 47 52 M.IS.WITH.YOU...SHOULD.THE.PROGR
53f40 41 4d 20 50 52 4f 56 45 20 44 45 46 45 43 54 49 56 45 2c 20 59 4f 55 20 41 53 53 55 4d 45 20 54 AM.PROVE.DEFECTIVE,.YOU.ASSUME.T
53f60 48 45 20 43 4f 53 54 20 4f 46 0a 41 4c 4c 20 4e 45 43 45 53 53 41 52 59 20 53 45 52 56 49 43 49 HE.COST.OF.ALL.NECESSARY.SERVICI
53f80 4e 47 2c 20 52 45 50 41 49 52 20 4f 52 20 43 4f 52 52 45 43 54 49 4f 4e 2e 0a 0a 20 20 31 36 2e NG,.REPAIR.OR.CORRECTION.....16.
53fa0 20 4c 69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 4c 69 61 62 69 6c 69 74 79 2e 0a 0a 20 20 49 4e 20 .Limitation.of.Liability.....IN.
53fc0 4e 4f 20 45 56 45 4e 54 20 55 4e 4c 45 53 53 20 52 45 51 55 49 52 45 44 20 42 59 20 41 50 50 4c NO.EVENT.UNLESS.REQUIRED.BY.APPL
53fe0 49 43 41 42 4c 45 20 4c 41 57 20 4f 52 20 41 47 52 45 45 44 20 54 4f 20 49 4e 20 57 52 49 54 49 ICABLE.LAW.OR.AGREED.TO.IN.WRITI
54000 4e 47 0a 57 49 4c 4c 20 41 4e 59 20 43 4f 50 59 52 49 47 48 54 20 48 4f 4c 44 45 52 2c 20 4f 52 NG.WILL.ANY.COPYRIGHT.HOLDER,.OR
54020 20 41 4e 59 20 4f 54 48 45 52 20 50 41 52 54 59 20 57 48 4f 20 4d 4f 44 49 46 49 45 53 20 41 4e .ANY.OTHER.PARTY.WHO.MODIFIES.AN
54040 44 2f 4f 52 20 43 4f 4e 56 45 59 53 0a 54 48 45 20 50 52 4f 47 52 41 4d 20 41 53 20 50 45 52 4d D/OR.CONVEYS.THE.PROGRAM.AS.PERM
54060 49 54 54 45 44 20 41 42 4f 56 45 2c 20 42 45 20 4c 49 41 42 4c 45 20 54 4f 20 59 4f 55 20 46 4f ITTED.ABOVE,.BE.LIABLE.TO.YOU.FO
54080 52 20 44 41 4d 41 47 45 53 2c 20 49 4e 43 4c 55 44 49 4e 47 20 41 4e 59 0a 47 45 4e 45 52 41 4c R.DAMAGES,.INCLUDING.ANY.GENERAL
540a0 2c 20 53 50 45 43 49 41 4c 2c 20 49 4e 43 49 44 45 4e 54 41 4c 20 4f 52 20 43 4f 4e 53 45 51 55 ,.SPECIAL,.INCIDENTAL.OR.CONSEQU
540c0 45 4e 54 49 41 4c 20 44 41 4d 41 47 45 53 20 41 52 49 53 49 4e 47 20 4f 55 54 20 4f 46 20 54 48 ENTIAL.DAMAGES.ARISING.OUT.OF.TH
540e0 45 0a 55 53 45 20 4f 52 20 49 4e 41 42 49 4c 49 54 59 20 54 4f 20 55 53 45 20 54 48 45 20 50 52 E.USE.OR.INABILITY.TO.USE.THE.PR
54100 4f 47 52 41 4d 20 28 49 4e 43 4c 55 44 49 4e 47 20 42 55 54 20 4e 4f 54 20 4c 49 4d 49 54 45 44 OGRAM.(INCLUDING.BUT.NOT.LIMITED
54120 20 54 4f 20 4c 4f 53 53 20 4f 46 0a 44 41 54 41 20 4f 52 20 44 41 54 41 20 42 45 49 4e 47 20 52 .TO.LOSS.OF.DATA.OR.DATA.BEING.R
54140 45 4e 44 45 52 45 44 20 49 4e 41 43 43 55 52 41 54 45 20 4f 52 20 4c 4f 53 53 45 53 20 53 55 53 ENDERED.INACCURATE.OR.LOSSES.SUS
54160 54 41 49 4e 45 44 20 42 59 20 59 4f 55 20 4f 52 20 54 48 49 52 44 0a 50 41 52 54 49 45 53 20 4f TAINED.BY.YOU.OR.THIRD.PARTIES.O
54180 52 20 41 20 46 41 49 4c 55 52 45 20 4f 46 20 54 48 45 20 50 52 4f 47 52 41 4d 20 54 4f 20 4f 50 R.A.FAILURE.OF.THE.PROGRAM.TO.OP
541a0 45 52 41 54 45 20 57 49 54 48 20 41 4e 59 20 4f 54 48 45 52 20 50 52 4f 47 52 41 4d 53 29 2c 0a ERATE.WITH.ANY.OTHER.PROGRAMS),.
541c0 45 56 45 4e 20 49 46 20 53 55 43 48 20 48 4f 4c 44 45 52 20 4f 52 20 4f 54 48 45 52 20 50 41 52 EVEN.IF.SUCH.HOLDER.OR.OTHER.PAR
541e0 54 59 20 48 41 53 20 42 45 45 4e 20 41 44 56 49 53 45 44 20 4f 46 20 54 48 45 20 50 4f 53 53 49 TY.HAS.BEEN.ADVISED.OF.THE.POSSI
54200 42 49 4c 49 54 59 20 4f 46 0a 53 55 43 48 20 44 41 4d 41 47 45 53 2e 0a 0a 20 20 31 37 2e 20 49 BILITY.OF.SUCH.DAMAGES.....17..I
54220 6e 74 65 72 70 72 65 74 61 74 69 6f 6e 20 6f 66 20 53 65 63 74 69 6f 6e 73 20 31 35 20 61 6e 64 nterpretation.of.Sections.15.and
54240 20 31 36 2e 0a 0a 20 20 49 66 20 74 68 65 20 64 69 73 63 6c 61 69 6d 65 72 20 6f 66 20 77 61 72 .16.....If.the.disclaimer.of.war
54260 72 61 6e 74 79 20 61 6e 64 20 6c 69 6d 69 74 61 74 69 6f 6e 20 6f 66 20 6c 69 61 62 69 6c 69 74 ranty.and.limitation.of.liabilit
54280 79 20 70 72 6f 76 69 64 65 64 0a 61 62 6f 76 65 20 63 61 6e 6e 6f 74 20 62 65 20 67 69 76 65 6e y.provided.above.cannot.be.given
542a0 20 6c 6f 63 61 6c 20 6c 65 67 61 6c 20 65 66 66 65 63 74 20 61 63 63 6f 72 64 69 6e 67 20 74 6f .local.legal.effect.according.to
542c0 20 74 68 65 69 72 20 74 65 72 6d 73 2c 0a 72 65 76 69 65 77 69 6e 67 20 63 6f 75 72 74 73 20 73 .their.terms,.reviewing.courts.s
542e0 68 61 6c 6c 20 61 70 70 6c 79 20 6c 6f 63 61 6c 20 6c 61 77 20 74 68 61 74 20 6d 6f 73 74 20 63 hall.apply.local.law.that.most.c
54300 6c 6f 73 65 6c 79 20 61 70 70 72 6f 78 69 6d 61 74 65 73 0a 61 6e 20 61 62 73 6f 6c 75 74 65 20 losely.approximates.an.absolute.
54320 77 61 69 76 65 72 20 6f 66 20 61 6c 6c 20 63 69 76 69 6c 20 6c 69 61 62 69 6c 69 74 79 20 69 6e waiver.of.all.civil.liability.in
54340 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 69 74 68 20 74 68 65 0a 50 72 6f 67 72 61 6d 2c 20 75 6e .connection.with.the.Program,.un
54360 6c 65 73 73 20 61 20 77 61 72 72 61 6e 74 79 20 6f 72 20 61 73 73 75 6d 70 74 69 6f 6e 20 6f 66 less.a.warranty.or.assumption.of
54380 20 6c 69 61 62 69 6c 69 74 79 20 61 63 63 6f 6d 70 61 6e 69 65 73 20 61 0a 63 6f 70 79 20 6f 66 .liability.accompanies.a.copy.of
543a0 20 74 68 65 20 50 72 6f 67 72 61 6d 20 69 6e 20 72 65 74 75 72 6e 20 66 6f 72 20 61 20 66 65 65 .the.Program.in.return.for.a.fee
543c0 2e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4e 44 20 4f 46 20 54 ........................END.OF.T
543e0 45 52 4d 53 20 41 4e 44 20 43 4f 4e 44 49 54 49 4f 4e 53 0a 0a 20 20 20 20 20 20 20 20 20 20 20 ERMS.AND.CONDITIONS.............
54400 20 48 6f 77 20 74 6f 20 41 70 70 6c 79 20 54 68 65 73 65 20 54 65 72 6d 73 20 74 6f 20 59 6f 75 .How.to.Apply.These.Terms.to.You
54420 72 20 4e 65 77 20 50 72 6f 67 72 61 6d 73 0a 0a 20 20 49 66 20 79 6f 75 20 64 65 76 65 6c 6f 70 r.New.Programs....If.you.develop
54440 20 61 20 6e 65 77 20 70 72 6f 67 72 61 6d 2c 20 61 6e 64 20 79 6f 75 20 77 61 6e 74 20 69 74 20 .a.new.program,.and.you.want.it.
54460 74 6f 20 62 65 20 6f 66 20 74 68 65 20 67 72 65 61 74 65 73 74 0a 70 6f 73 73 69 62 6c 65 20 75 to.be.of.the.greatest.possible.u
54480 73 65 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 2c 20 74 68 65 20 62 65 73 74 20 77 61 79 20 74 se.to.the.public,.the.best.way.t
544a0 6f 20 61 63 68 69 65 76 65 20 74 68 69 73 20 69 73 20 74 6f 20 6d 61 6b 65 20 69 74 0a 66 72 65 o.achieve.this.is.to.make.it.fre
544c0 65 20 73 6f 66 74 77 61 72 65 20 77 68 69 63 68 20 65 76 65 72 79 6f 6e 65 20 63 61 6e 20 72 65 e.software.which.everyone.can.re
544e0 64 69 73 74 72 69 62 75 74 65 20 61 6e 64 20 63 68 61 6e 67 65 20 75 6e 64 65 72 20 74 68 65 73 distribute.and.change.under.thes
54500 65 20 74 65 72 6d 73 2e 0a 0a 20 20 54 6f 20 64 6f 20 73 6f 2c 20 61 74 74 61 63 68 20 74 68 65 e.terms.....To.do.so,.attach.the
54520 20 66 6f 6c 6c 6f 77 69 6e 67 20 6e 6f 74 69 63 65 73 20 74 6f 20 74 68 65 20 70 72 6f 67 72 61 .following.notices.to.the.progra
54540 6d 2e 20 20 49 74 20 69 73 20 73 61 66 65 73 74 0a 74 6f 20 61 74 74 61 63 68 20 74 68 65 6d 20 m...It.is.safest.to.attach.them.
54560 74 6f 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 65 61 63 68 20 73 6f 75 72 63 65 20 66 69 6c 65 to.the.start.of.each.source.file
54580 20 74 6f 20 6d 6f 73 74 20 65 66 66 65 63 74 69 76 65 6c 79 0a 73 74 61 74 65 20 74 68 65 20 65 .to.most.effectively.state.the.e
545a0 78 63 6c 75 73 69 6f 6e 20 6f 66 20 77 61 72 72 61 6e 74 79 3b 20 61 6e 64 20 65 61 63 68 20 66 xclusion.of.warranty;.and.each.f
545c0 69 6c 65 20 73 68 6f 75 6c 64 20 68 61 76 65 20 61 74 20 6c 65 61 73 74 0a 74 68 65 20 22 63 6f ile.should.have.at.least.the."co
545e0 70 79 72 69 67 68 74 22 20 6c 69 6e 65 20 61 6e 64 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 77 pyright".line.and.a.pointer.to.w
54600 68 65 72 65 20 74 68 65 20 66 75 6c 6c 20 6e 6f 74 69 63 65 20 69 73 20 66 6f 75 6e 64 2e 0a 0a here.the.full.notice.is.found...
54620 20 20 20 20 3c 6f 6e 65 20 6c 69 6e 65 20 74 6f 20 67 69 76 65 20 74 68 65 20 70 72 6f 67 72 61 ....<one.line.to.give.the.progra
54640 6d 27 73 20 6e 61 6d 65 20 61 6e 64 20 61 20 62 72 69 65 66 20 69 64 65 61 20 6f 66 20 77 68 61 m's.name.and.a.brief.idea.of.wha
54660 74 20 69 74 20 64 6f 65 73 2e 3e 0a 20 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 3c 79 t.it.does.>.....Copyright.(C).<y
54680 65 61 72 3e 20 20 3c 6e 61 6d 65 20 6f 66 20 61 75 74 68 6f 72 3e 0a 0a 20 20 20 20 54 68 69 73 ear>..<name.of.author>......This
546a0 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3a 20 79 6f 75 20 63 .program.is.free.software:.you.c
546c0 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 an.redistribute.it.and/or.modify
546e0 0a 20 20 20 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 .....it.under.the.terms.of.the.G
54700 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 NU.General.Public.License.as.pub
54720 6c 69 73 68 65 64 20 62 79 0a 20 20 20 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 lished.by.....the.Free.Software.
54740 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 Foundation,.either.version.3.of.
54760 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 20 20 20 20 28 61 74 20 79 6f 75 72 20 6f 70 74 the.License,.or.....(at.your.opt
54780 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 20 20 20 20 54 68 69 ion).any.later.version.......Thi
547a0 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 s.program.is.distributed.in.the.
547c0 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 20 20 20 hope.that.it.will.be.useful,....
547e0 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f .but.WITHOUT.ANY.WARRANTY;.witho
54800 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a ut.even.the.implied.warranty.of.
54820 20 20 20 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 ....MERCHANTABILITY.or.FITNESS.F
54840 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 OR.A.PARTICULAR.PURPOSE...See.th
54860 65 0a 20 20 20 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 e.....GNU.General.Public.License
54880 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 20 20 20 20 59 6f 75 20 73 68 6f 75 .for.more.details.......You.shou
548a0 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 ld.have.received.a.copy.of.the.G
548c0 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 20 20 20 20 61 6c NU.General.Public.License.....al
548e0 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 ong.with.this.program...If.not,.
54900 73 65 65 20 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 see.<https://www.gnu.org/license
54920 73 2f 3e 2e 0a 0a 41 6c 73 6f 20 61 64 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 68 6f s/>...Also.add.information.on.ho
54940 77 20 74 6f 20 63 6f 6e 74 61 63 74 20 79 6f 75 20 62 79 20 65 6c 65 63 74 72 6f 6e 69 63 20 61 w.to.contact.you.by.electronic.a
54960 6e 64 20 70 61 70 65 72 20 6d 61 69 6c 2e 0a 0a 20 20 49 66 20 74 68 65 20 70 72 6f 67 72 61 6d nd.paper.mail.....If.the.program
54980 20 64 6f 65 73 20 74 65 72 6d 69 6e 61 6c 20 69 6e 74 65 72 61 63 74 69 6f 6e 2c 20 6d 61 6b 65 .does.terminal.interaction,.make
549a0 20 69 74 20 6f 75 74 70 75 74 20 61 20 73 68 6f 72 74 0a 6e 6f 74 69 63 65 20 6c 69 6b 65 20 74 .it.output.a.short.notice.like.t
549c0 68 69 73 20 77 68 65 6e 20 69 74 20 73 74 61 72 74 73 20 69 6e 20 61 6e 20 69 6e 74 65 72 61 63 his.when.it.starts.in.an.interac
549e0 74 69 76 65 20 6d 6f 64 65 3a 0a 0a 20 20 20 20 3c 70 72 6f 67 72 61 6d 3e 20 20 43 6f 70 79 72 tive.mode:......<program>..Copyr
54a00 69 67 68 74 20 28 43 29 20 3c 79 65 61 72 3e 20 20 3c 6e 61 6d 65 20 6f 66 20 61 75 74 68 6f 72 ight.(C).<year>..<name.of.author
54a20 3e 0a 20 20 20 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 63 6f 6d 65 73 20 77 69 74 68 20 41 42 >.....This.program.comes.with.AB
54a40 53 4f 4c 55 54 45 4c 59 20 4e 4f 20 57 41 52 52 41 4e 54 59 3b 20 66 6f 72 20 64 65 74 61 69 6c SOLUTELY.NO.WARRANTY;.for.detail
54a60 73 20 74 79 70 65 20 60 73 68 6f 77 20 77 27 2e 0a 20 20 20 20 54 68 69 73 20 69 73 20 66 72 65 s.type.`show.w'......This.is.fre
54a80 65 20 73 6f 66 74 77 61 72 65 2c 20 61 6e 64 20 79 6f 75 20 61 72 65 20 77 65 6c 63 6f 6d 65 20 e.software,.and.you.are.welcome.
54aa0 74 6f 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 0a 20 20 20 20 75 6e 64 65 72 20 63 65 72 to.redistribute.it.....under.cer
54ac0 74 61 69 6e 20 63 6f 6e 64 69 74 69 6f 6e 73 3b 20 74 79 70 65 20 60 73 68 6f 77 20 63 27 20 66 tain.conditions;.type.`show.c'.f
54ae0 6f 72 20 64 65 74 61 69 6c 73 2e 0a 0a 54 68 65 20 68 79 70 6f 74 68 65 74 69 63 61 6c 20 63 6f or.details...The.hypothetical.co
54b00 6d 6d 61 6e 64 73 20 60 73 68 6f 77 20 77 27 20 61 6e 64 20 60 73 68 6f 77 20 63 27 20 73 68 6f mmands.`show.w'.and.`show.c'.sho
54b20 75 6c 64 20 73 68 6f 77 20 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 0a 70 61 72 74 73 20 6f uld.show.the.appropriate.parts.o
54b40 66 20 74 68 65 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 2e 20 20 4f f.the.General.Public.License...O
54b60 66 20 63 6f 75 72 73 65 2c 20 79 6f 75 72 20 70 72 6f 67 72 61 6d 27 73 20 63 6f 6d 6d 61 6e 64 f.course,.your.program's.command
54b80 73 0a 6d 69 67 68 74 20 62 65 20 64 69 66 66 65 72 65 6e 74 3b 20 66 6f 72 20 61 20 47 55 49 20 s.might.be.different;.for.a.GUI.
54ba0 69 6e 74 65 72 66 61 63 65 2c 20 79 6f 75 20 77 6f 75 6c 64 20 75 73 65 20 61 6e 20 22 61 62 6f interface,.you.would.use.an."abo
54bc0 75 74 20 62 6f 78 22 2e 0a 0a 20 20 59 6f 75 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 67 65 74 20 ut.box".....You.should.also.get.
54be0 79 6f 75 72 20 65 6d 70 6c 6f 79 65 72 20 28 69 66 20 79 6f 75 20 77 6f 72 6b 20 61 73 20 61 20 your.employer.(if.you.work.as.a.
54c00 70 72 6f 67 72 61 6d 6d 65 72 29 20 6f 72 20 73 63 68 6f 6f 6c 2c 0a 69 66 20 61 6e 79 2c 20 74 programmer).or.school,.if.any,.t
54c20 6f 20 73 69 67 6e 20 61 20 22 63 6f 70 79 72 69 67 68 74 20 64 69 73 63 6c 61 69 6d 65 72 22 20 o.sign.a."copyright.disclaimer".
54c40 66 6f 72 20 74 68 65 20 70 72 6f 67 72 61 6d 2c 20 69 66 20 6e 65 63 65 73 73 61 72 79 2e 0a 46 for.the.program,.if.necessary..F
54c60 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 74 68 69 73 2c 20 61 6e 64 or.more.information.on.this,.and
54c80 20 68 6f 77 20 74 6f 20 61 70 70 6c 79 20 61 6e 64 20 66 6f 6c 6c 6f 77 20 74 68 65 20 47 4e 55 .how.to.apply.and.follow.the.GNU
54ca0 20 47 50 4c 2c 20 73 65 65 0a 3c 68 74 74 70 73 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c .GPL,.see.<https://www.gnu.org/l
54cc0 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 20 20 54 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 icenses/>.....The.GNU.General.Pu
54ce0 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 64 6f 65 73 20 6e 6f 74 20 70 65 72 6d 69 74 20 69 6e 63 blic.License.does.not.permit.inc
54d00 6f 72 70 6f 72 61 74 69 6e 67 20 79 6f 75 72 20 70 72 6f 67 72 61 6d 0a 69 6e 74 6f 20 70 72 6f orporating.your.program.into.pro
54d20 70 72 69 65 74 61 72 79 20 70 72 6f 67 72 61 6d 73 2e 20 20 49 66 20 79 6f 75 72 20 70 72 6f 67 prietary.programs...If.your.prog
54d40 72 61 6d 20 69 73 20 61 20 73 75 62 72 6f 75 74 69 6e 65 20 6c 69 62 72 61 72 79 2c 20 79 6f 75 ram.is.a.subroutine.library,.you
54d60 0a 6d 61 79 20 63 6f 6e 73 69 64 65 72 20 69 74 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 74 6f 20 .may.consider.it.more.useful.to.
54d80 70 65 72 6d 69 74 20 6c 69 6e 6b 69 6e 67 20 70 72 6f 70 72 69 65 74 61 72 79 20 61 70 70 6c 69 permit.linking.proprietary.appli
54da0 63 61 74 69 6f 6e 73 20 77 69 74 68 0a 74 68 65 20 6c 69 62 72 61 72 79 2e 20 20 49 66 20 74 68 cations.with.the.library...If.th
54dc0 69 73 20 69 73 20 77 68 61 74 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 64 6f 2c 20 75 73 65 20 74 is.is.what.you.want.to.do,.use.t
54de0 68 65 20 47 4e 55 20 4c 65 73 73 65 72 20 47 65 6e 65 72 61 6c 0a 50 75 62 6c 69 63 20 4c 69 63 he.GNU.Lesser.General.Public.Lic
54e00 65 6e 73 65 20 69 6e 73 74 65 61 64 20 6f 66 20 74 68 69 73 20 4c 69 63 65 6e 73 65 2e 20 20 42 ense.instead.of.this.License...B
54e20 75 74 20 66 69 72 73 74 2c 20 70 6c 65 61 73 65 20 72 65 61 64 0a 3c 68 74 74 70 73 3a 2f 2f 77 ut.first,.please.read.<https://w
54e40 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 77 68 79 2d 6e 6f 74 2d 6c 67 70 6c ww.gnu.org/licenses/why-not-lgpl
54e60 2e 68 74 6d 6c 3e 2e 0a 50 4b 01 02 14 03 14 00 00 00 00 00 f2 3b 3d 57 45 cf 6c e9 01 00 00 00 .html>..PK...........;=WE.l.....
54e80 01 00 00 00 27 00 00 00 00 00 00 00 00 00 00 00 ed 81 00 00 00 00 70 6c 75 67 69 6e 2d 69 6d 70 ....'.................plugin-imp
54ea0 6f 72 74 2d 6e 61 6d 65 2d 63 6f 6d 6d 65 6e 74 73 5f 63 6c 65 61 6e 65 72 2e 74 78 74 50 4b 01 ort-name-comments_cleaner.txtPK.
54ec0 02 14 03 14 00 00 00 00 00 f4 80 93 5b bc be e0 e2 a8 71 00 00 a8 71 00 00 13 00 00 00 00 00 00 ............[.....q...q.........
54ee0 00 00 00 00 00 ed 81 46 00 00 00 63 6f 6d 6d 65 6e 74 73 5f 63 6c 65 61 6e 65 72 2e 70 79 50 4b .......F...comments_cleaner.pyPK
54f00 01 02 14 03 14 00 00 00 00 00 72 51 1c 5b c6 fa b9 86 20 50 00 00 20 50 00 00 09 00 00 00 00 00 ..........rQ.[.....P...P........
54f20 00 00 00 00 00 00 ed 81 1f 72 00 00 63 6f 6e 66 69 67 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 .........r..config.pyPK.........
54f40 00 f2 76 35 5c fd bd 42 c8 be 31 00 00 be 31 00 00 09 00 00 00 00 00 00 00 00 00 00 00 a4 81 66 ..v5\..B..1...1................f
54f60 c2 00 00 61 63 74 69 6f 6e 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 ea 6e 3f 5c 39 de 95 48 ...action.pyPK...........n?\9..H
54f80 f3 0c 00 00 f3 0c 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 a4 81 4b f4 00 00 5f 5f 69 6e 69 74 ......................K...__init
54fa0 5f 5f 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 f6 93 8c 59 04 15 ac d4 f6 05 00 00 f6 05 00 __.pyPK.............Y...........
54fc0 00 1d 00 00 00 00 00 00 00 00 00 00 00 ed 81 67 01 01 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f ...............g...common_utils/
54fe0 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 54 63 35 5a compatibility.pyPK..........Tc5Z
55000 55 00 bd df b7 18 00 00 b7 18 00 00 18 00 00 00 00 00 00 00 00 00 00 00 ed 81 98 07 01 00 63 6f U.............................co
55020 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6c 69 62 72 61 72 79 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 mmon_utils/librarys.pyPK........
55040 00 00 8d 5d 35 5a 03 4b 8a c7 b9 17 00 00 b9 17 00 00 15 00 00 00 00 00 00 00 00 00 00 00 ed 81 ...]5Z.K........................
55060 85 20 01 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 6d 65 6e 75 73 2e 70 79 50 4b 01 02 14 03 14 ....common_utils/menus.pyPK.....
55080 00 00 00 00 00 97 a5 38 5a 0f 3e 42 c6 57 07 00 00 57 07 00 00 1a 00 00 00 00 00 00 00 00 00 00 .......8Z.>B.W...W..............
550a0 00 ed 81 71 38 01 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 73 61 76 65 64 5f 63 6f 64 65 2e 70 ...q8..common_utils/saved_code.p
550c0 79 50 4b 01 02 14 03 14 00 00 00 00 00 8d 5d 35 5a 1d cb 38 46 1f 0e 00 00 1f 0e 00 00 19 00 00 yPK...........]5Z..8F...........
550e0 00 00 00 00 00 00 00 00 00 ed 81 00 40 01 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 74 65 6d 70 ............@..common_utils/temp
55100 6c 61 74 65 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 a4 64 35 5a 4b fb 3b 6c 00 6c 00 00 lates.pyPK...........d5ZK.;l.l..
55120 00 6c 00 00 17 00 00 00 00 00 00 00 00 00 00 00 ed 81 56 4e 01 00 63 6f 6d 6d 6f 6e 5f 75 74 69 .l................VN..common_uti
55140 6c 73 2f 77 69 64 67 65 74 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 91 9e 3d 5b 99 eb 7d ls/widgets.pyPK............=[..}
55160 f7 aa 52 00 00 aa 52 00 00 17 00 00 00 00 00 00 00 00 00 00 00 a4 81 8b ba 01 00 63 6f 6d 6d 6f ..R...R....................commo
55180 6e 5f 75 74 69 6c 73 2f 64 69 61 6c 6f 67 73 2e 70 79 50 4b 01 02 14 03 14 00 00 00 00 00 b3 48 n_utils/dialogs.pyPK...........H
551a0 37 5c f8 69 b9 05 7d 4f 00 00 7d 4f 00 00 18 00 00 00 00 00 00 00 00 00 00 00 a4 81 6a 0d 02 00 7\.i..}O..}O................j...
551c0 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 5f 5f 69 6e 69 74 5f 5f 2e 70 79 50 4b 01 02 14 03 14 00 common_utils/__init__.pyPK......
551e0 00 00 00 00 89 6e 3f 5c 71 18 f6 65 4b 66 00 00 4b 66 00 00 17 00 00 00 00 00 00 00 00 00 00 00 .....n?\q..eKf..Kf..............
55200 a4 81 1d 5d 02 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 63 6f 6c 75 6d 6e 73 2e 70 79 50 4b 01 ...]..common_utils/columns.pyPK.
55220 02 14 03 14 00 00 00 00 00 f2 3b 3d 57 23 88 10 4a 22 27 00 00 22 27 00 00 10 00 00 00 00 00 00 ..........;=W#..J"'.."'.........
55240 00 00 00 00 00 ed 81 9d c3 02 00 69 6d 61 67 65 73 2f 6e 6f 74 65 73 2e 70 6e 67 50 4b 01 02 14 ...........images/notes.pngPK...
55260 03 14 00 00 00 00 00 f2 3b 3d 57 f0 03 44 86 9b 27 00 00 9b 27 00 00 11 00 00 00 00 00 00 00 00 ........;=W..D..'...'...........
55280 00 00 00 ed 81 ed ea 02 00 69 6d 61 67 65 73 2f 70 6c 75 67 69 6e 2e 70 6e 67 50 4b 01 02 14 03 .........images/plugin.pngPK....
552a0 14 00 00 00 00 00 80 51 1c 5b 2c f9 0a 7c 56 26 00 00 56 26 00 00 18 00 00 00 00 00 00 00 00 00 .......Q.[,..|V&..V&............
552c0 00 00 ed 81 b7 12 03 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 64 65 66 61 75 6c 74 2e 70 6f 74 ........translations/default.pot
552e0 50 4b 01 02 14 03 14 00 00 00 00 00 3b 70 3f 5c a2 36 7e f4 cc 28 00 00 cc 28 00 00 12 00 00 00 PK..........;p?\.6~..(...(......
55300 00 00 00 00 00 00 00 00 ed 81 43 39 03 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 65 73 2e 6d 6f ..........C9..translations/es.mo
55320 50 4b 01 02 14 03 14 00 00 00 00 00 3b 70 3f 5c 0f f0 30 db 45 2a 00 00 45 2a 00 00 12 00 00 00 PK..........;p?\..0.E*..E*......
55340 00 00 00 00 00 00 00 00 ed 81 3f 62 03 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 66 72 2e 6d 6f ..........?b..translations/fr.mo
55360 50 4b 01 02 14 03 14 00 00 00 00 00 87 51 1c 5b ce fd 47 4a 2f 37 00 00 2f 37 00 00 12 00 00 00 PK...........Q.[..GJ/7../7......
55380 00 00 00 00 00 00 00 00 ed 81 b4 8c 03 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 65 73 2e 70 6f ..............translations/es.po
553a0 50 4b 01 02 14 03 14 00 00 00 00 00 84 51 1c 5b 98 fd de 24 ac 38 00 00 ac 38 00 00 12 00 00 00 PK...........Q.[...$.8...8......
553c0 00 00 00 00 00 00 00 00 ed 81 13 c4 03 00 74 72 61 6e 73 6c 61 74 69 6f 6e 73 2f 66 72 2e 70 6f ..............translations/fr.po
553e0 50 4b 01 02 14 03 14 00 00 00 00 00 c8 6e 3f 5c 79 3c aa cf 00 15 00 00 00 15 00 00 0c 00 00 00 PK...........n?\y<..............
55400 00 00 00 00 00 00 00 00 ed 81 ef fc 03 00 63 68 61 6e 67 65 6c 6f 67 2e 6d 64 50 4b 01 02 14 03 ..............changelog.mdPK....
55420 14 00 00 00 00 00 f0 52 1c 5b 65 51 35 14 7b 14 00 00 7b 14 00 00 09 00 00 00 00 00 00 00 00 00 .......R.[eQ5.{...{.............
55440 00 00 ed 81 19 12 04 00 52 45 41 44 4d 45 2e 6d 64 50 4b 01 02 14 03 14 00 00 00 00 00 33 56 2e ........README.mdPK..........3V.
55460 59 28 a2 e5 a0 4e 07 00 00 4e 07 00 00 16 00 00 00 00 00 00 00 00 00 00 00 ed 81 bb 26 04 00 63 Y(...N...N..................&..c
55480 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 52 45 41 44 4d 45 2e 6d 64 50 4b 01 02 14 03 14 00 00 00 00 ommon_utils/README.mdPK.........
554a0 00 7c 6e 3f 5c 64 96 e1 57 17 0d 00 00 17 0d 00 00 19 00 00 00 00 00 00 00 00 00 00 00 a4 81 3d .|n?\d..W......................=
554c0 2e 04 00 63 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 63 68 61 6e 67 65 6c 6f 67 2e 6d 64 50 4b 01 02 ...common_utils/changelog.mdPK..
554e0 14 03 14 00 00 00 00 00 f2 3b 3d 57 00 3d 67 97 4d 89 00 00 4d 89 00 00 07 00 00 00 00 00 00 00 .........;=W.=g.M...M...........
55500 00 00 00 00 ed 81 8b 3b 04 00 4c 49 43 45 4e 53 45 50 4b 01 02 14 03 14 00 00 00 00 00 11 3c 05 .......;..LICENSEPK...........<.
55520 59 93 f3 07 4f 39 89 00 00 39 89 00 00 14 00 00 00 00 00 00 00 00 00 00 00 ed 81 fd c4 04 00 63 Y...O9...9.....................c
55540 6f 6d 6d 6f 6e 5f 75 74 69 6c 73 2f 4c 49 43 45 4e 53 45 50 4b 05 06 00 00 00 00 1b 00 1b 00 eb ommon_utils/LICENSEPK...........
55560 06 00 00 68 4e 05 00 00 00 ...hN....