From a12107aa09130af6f9a482ef49faf8015d2ed6d9 Mon Sep 17 00:00:00 2001 From: Mathias Markl Date: Wed, 26 Jul 2017 23:20:58 +0200 Subject: [PATCH] Update --- muk_web_export_attachment/LICENSE | 619 + muk_web_export_attachment/README.md | 3 + muk_web_export_attachment/__init__.py | 22 + muk_web_export_attachment/__manifest__.py | 62 + .../controllers/__init__.py | 22 + muk_web_export_attachment/controllers/main.py | 149 + .../static/description/banner.png | Bin 0 -> 40827 bytes .../static/description/icon.png | Bin 0 -> 7867 bytes .../static/description/index.html | 35 + .../static/description/logo.png | Bin 0 -> 38064 bytes .../static/description/screenshot.png | Bin 0 -> 8003 bytes .../static/src/js/sidebar_export.js | 68 + .../static/src/less/sidebar_export.less | 41 + .../static/src/xml/sidebar_preview.xml | 31 + .../template/assets.xml | 18 +- muk_web_preview/__manifest__.py | 2 +- muk_web_preview/static/description/demo.gif | Bin 419599 -> 0 bytes muk_web_preview/static/lib/PDFjs/LICENSE | 177 + muk_web_preview/static/lib/PDFjs/build/pdf.js | 9052 +++ .../static/lib/PDFjs/build/pdf.worker.js | 50501 ++++++++++++++++ .../static/lib/PDFjs/web/cmaps/78-EUC-H.bcmap | Bin 0 -> 2404 bytes .../static/lib/PDFjs/web/cmaps/78-EUC-V.bcmap | Bin 0 -> 173 bytes .../static/lib/PDFjs/web/cmaps/78-H.bcmap | Bin 0 -> 2379 bytes .../lib/PDFjs/web/cmaps/78-RKSJ-H.bcmap | Bin 0 -> 2398 bytes .../lib/PDFjs/web/cmaps/78-RKSJ-V.bcmap | Bin 0 -> 173 bytes .../static/lib/PDFjs/web/cmaps/78-V.bcmap | Bin 0 -> 169 bytes .../lib/PDFjs/web/cmaps/78ms-RKSJ-H.bcmap | Bin 0 -> 2651 bytes .../lib/PDFjs/web/cmaps/78ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes .../lib/PDFjs/web/cmaps/83pv-RKSJ-H.bcmap | Bin 0 -> 905 bytes .../lib/PDFjs/web/cmaps/90ms-RKSJ-H.bcmap | Bin 0 -> 721 bytes .../lib/PDFjs/web/cmaps/90ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes .../lib/PDFjs/web/cmaps/90msp-RKSJ-H.bcmap | Bin 0 -> 715 bytes .../lib/PDFjs/web/cmaps/90msp-RKSJ-V.bcmap | Bin 0 -> 291 bytes .../lib/PDFjs/web/cmaps/90pv-RKSJ-H.bcmap | Bin 0 -> 982 bytes .../lib/PDFjs/web/cmaps/90pv-RKSJ-V.bcmap | Bin 0 -> 260 bytes .../static/lib/PDFjs/web/cmaps/Add-H.bcmap | Bin 0 -> 2419 bytes .../lib/PDFjs/web/cmaps/Add-RKSJ-H.bcmap | Bin 0 -> 2413 bytes .../lib/PDFjs/web/cmaps/Add-RKSJ-V.bcmap | Bin 0 -> 287 bytes .../static/lib/PDFjs/web/cmaps/Add-V.bcmap | Bin 0 -> 282 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-0.bcmap | Bin 0 -> 317 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-1.bcmap | Bin 0 -> 371 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-2.bcmap | Bin 0 -> 376 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-3.bcmap | Bin 0 -> 401 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-4.bcmap | Bin 0 -> 405 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-5.bcmap | Bin 0 -> 406 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-6.bcmap | Bin 0 -> 406 bytes .../lib/PDFjs/web/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 0 -> 41193 bytes .../lib/PDFjs/web/cmaps/Adobe-GB1-0.bcmap | Bin 0 -> 217 bytes .../lib/PDFjs/web/cmaps/Adobe-GB1-1.bcmap | Bin 0 -> 250 bytes .../lib/PDFjs/web/cmaps/Adobe-GB1-2.bcmap | Bin 0 -> 465 bytes .../lib/PDFjs/web/cmaps/Adobe-GB1-3.bcmap | Bin 0 -> 470 bytes .../lib/PDFjs/web/cmaps/Adobe-GB1-4.bcmap | Bin 0 -> 601 bytes .../lib/PDFjs/web/cmaps/Adobe-GB1-5.bcmap | Bin 0 -> 625 bytes .../lib/PDFjs/web/cmaps/Adobe-GB1-UCS2.bcmap | Bin 0 -> 33974 bytes .../lib/PDFjs/web/cmaps/Adobe-Japan1-0.bcmap | Bin 0 -> 225 bytes .../lib/PDFjs/web/cmaps/Adobe-Japan1-1.bcmap | Bin 0 -> 226 bytes .../lib/PDFjs/web/cmaps/Adobe-Japan1-2.bcmap | Bin 0 -> 233 bytes .../lib/PDFjs/web/cmaps/Adobe-Japan1-3.bcmap | Bin 0 -> 242 bytes .../lib/PDFjs/web/cmaps/Adobe-Japan1-4.bcmap | Bin 0 -> 337 bytes .../lib/PDFjs/web/cmaps/Adobe-Japan1-5.bcmap | Bin 0 -> 430 bytes .../lib/PDFjs/web/cmaps/Adobe-Japan1-6.bcmap | Bin 0 -> 485 bytes .../PDFjs/web/cmaps/Adobe-Japan1-UCS2.bcmap | Bin 0 -> 40951 bytes .../lib/PDFjs/web/cmaps/Adobe-Korea1-0.bcmap | Bin 0 -> 241 bytes .../lib/PDFjs/web/cmaps/Adobe-Korea1-1.bcmap | Bin 0 -> 386 bytes .../lib/PDFjs/web/cmaps/Adobe-Korea1-2.bcmap | Bin 0 -> 391 bytes .../PDFjs/web/cmaps/Adobe-Korea1-UCS2.bcmap | Bin 0 -> 23293 bytes .../static/lib/PDFjs/web/cmaps/B5-H.bcmap | Bin 0 -> 1086 bytes .../static/lib/PDFjs/web/cmaps/B5-V.bcmap | Bin 0 -> 142 bytes .../static/lib/PDFjs/web/cmaps/B5pc-H.bcmap | Bin 0 -> 1099 bytes .../static/lib/PDFjs/web/cmaps/B5pc-V.bcmap | Bin 0 -> 144 bytes .../lib/PDFjs/web/cmaps/CNS-EUC-H.bcmap | Bin 0 -> 1780 bytes .../lib/PDFjs/web/cmaps/CNS-EUC-V.bcmap | Bin 0 -> 1920 bytes .../static/lib/PDFjs/web/cmaps/CNS1-H.bcmap | Bin 0 -> 706 bytes .../static/lib/PDFjs/web/cmaps/CNS1-V.bcmap | Bin 0 -> 143 bytes .../static/lib/PDFjs/web/cmaps/CNS2-H.bcmap | Bin 0 -> 504 bytes .../static/lib/PDFjs/web/cmaps/CNS2-V.bcmap | 3 + .../lib/PDFjs/web/cmaps/ETHK-B5-H.bcmap | Bin 0 -> 4426 bytes .../lib/PDFjs/web/cmaps/ETHK-B5-V.bcmap | Bin 0 -> 158 bytes .../lib/PDFjs/web/cmaps/ETen-B5-H.bcmap | Bin 0 -> 1125 bytes .../lib/PDFjs/web/cmaps/ETen-B5-V.bcmap | Bin 0 -> 158 bytes .../lib/PDFjs/web/cmaps/ETenms-B5-H.bcmap | 3 + .../lib/PDFjs/web/cmaps/ETenms-B5-V.bcmap | Bin 0 -> 172 bytes .../static/lib/PDFjs/web/cmaps/EUC-H.bcmap | Bin 0 -> 578 bytes .../static/lib/PDFjs/web/cmaps/EUC-V.bcmap | Bin 0 -> 170 bytes .../static/lib/PDFjs/web/cmaps/Ext-H.bcmap | Bin 0 -> 2536 bytes .../lib/PDFjs/web/cmaps/Ext-RKSJ-H.bcmap | Bin 0 -> 2542 bytes .../lib/PDFjs/web/cmaps/Ext-RKSJ-V.bcmap | Bin 0 -> 218 bytes .../static/lib/PDFjs/web/cmaps/Ext-V.bcmap | Bin 0 -> 215 bytes .../static/lib/PDFjs/web/cmaps/GB-EUC-H.bcmap | Bin 0 -> 549 bytes .../static/lib/PDFjs/web/cmaps/GB-EUC-V.bcmap | Bin 0 -> 179 bytes .../static/lib/PDFjs/web/cmaps/GB-H.bcmap | 4 + .../static/lib/PDFjs/web/cmaps/GB-V.bcmap | Bin 0 -> 175 bytes .../lib/PDFjs/web/cmaps/GBK-EUC-H.bcmap | Bin 0 -> 14692 bytes .../lib/PDFjs/web/cmaps/GBK-EUC-V.bcmap | Bin 0 -> 180 bytes .../static/lib/PDFjs/web/cmaps/GBK2K-H.bcmap | Bin 0 -> 19662 bytes .../static/lib/PDFjs/web/cmaps/GBK2K-V.bcmap | Bin 0 -> 219 bytes .../lib/PDFjs/web/cmaps/GBKp-EUC-H.bcmap | Bin 0 -> 14686 bytes .../lib/PDFjs/web/cmaps/GBKp-EUC-V.bcmap | Bin 0 -> 181 bytes .../lib/PDFjs/web/cmaps/GBT-EUC-H.bcmap | Bin 0 -> 7290 bytes .../lib/PDFjs/web/cmaps/GBT-EUC-V.bcmap | Bin 0 -> 180 bytes .../static/lib/PDFjs/web/cmaps/GBT-H.bcmap | Bin 0 -> 7269 bytes .../static/lib/PDFjs/web/cmaps/GBT-V.bcmap | Bin 0 -> 176 bytes .../lib/PDFjs/web/cmaps/GBTpc-EUC-H.bcmap | Bin 0 -> 7298 bytes .../lib/PDFjs/web/cmaps/GBTpc-EUC-V.bcmap | Bin 0 -> 182 bytes .../lib/PDFjs/web/cmaps/GBpc-EUC-H.bcmap | Bin 0 -> 557 bytes .../lib/PDFjs/web/cmaps/GBpc-EUC-V.bcmap | Bin 0 -> 181 bytes .../static/lib/PDFjs/web/cmaps/H.bcmap | Bin 0 -> 553 bytes .../lib/PDFjs/web/cmaps/HKdla-B5-H.bcmap | Bin 0 -> 2654 bytes .../lib/PDFjs/web/cmaps/HKdla-B5-V.bcmap | Bin 0 -> 148 bytes .../lib/PDFjs/web/cmaps/HKdlb-B5-H.bcmap | Bin 0 -> 2414 bytes .../lib/PDFjs/web/cmaps/HKdlb-B5-V.bcmap | Bin 0 -> 148 bytes .../lib/PDFjs/web/cmaps/HKgccs-B5-H.bcmap | Bin 0 -> 2292 bytes .../lib/PDFjs/web/cmaps/HKgccs-B5-V.bcmap | Bin 0 -> 149 bytes .../lib/PDFjs/web/cmaps/HKm314-B5-H.bcmap | Bin 0 -> 1772 bytes .../lib/PDFjs/web/cmaps/HKm314-B5-V.bcmap | Bin 0 -> 149 bytes .../lib/PDFjs/web/cmaps/HKm471-B5-H.bcmap | Bin 0 -> 2171 bytes .../lib/PDFjs/web/cmaps/HKm471-B5-V.bcmap | Bin 0 -> 149 bytes .../lib/PDFjs/web/cmaps/HKscs-B5-H.bcmap | Bin 0 -> 4437 bytes .../lib/PDFjs/web/cmaps/HKscs-B5-V.bcmap | Bin 0 -> 159 bytes .../static/lib/PDFjs/web/cmaps/Hankaku.bcmap | Bin 0 -> 132 bytes .../static/lib/PDFjs/web/cmaps/Hiragana.bcmap | Bin 0 -> 124 bytes .../lib/PDFjs/web/cmaps/KSC-EUC-H.bcmap | Bin 0 -> 1848 bytes .../lib/PDFjs/web/cmaps/KSC-EUC-V.bcmap | Bin 0 -> 164 bytes .../static/lib/PDFjs/web/cmaps/KSC-H.bcmap | Bin 0 -> 1831 bytes .../lib/PDFjs/web/cmaps/KSC-Johab-H.bcmap | Bin 0 -> 16791 bytes .../lib/PDFjs/web/cmaps/KSC-Johab-V.bcmap | Bin 0 -> 166 bytes .../static/lib/PDFjs/web/cmaps/KSC-V.bcmap | Bin 0 -> 160 bytes .../lib/PDFjs/web/cmaps/KSCms-UHC-H.bcmap | Bin 0 -> 2787 bytes .../lib/PDFjs/web/cmaps/KSCms-UHC-HW-H.bcmap | Bin 0 -> 2789 bytes .../lib/PDFjs/web/cmaps/KSCms-UHC-HW-V.bcmap | Bin 0 -> 169 bytes .../lib/PDFjs/web/cmaps/KSCms-UHC-V.bcmap | Bin 0 -> 166 bytes .../lib/PDFjs/web/cmaps/KSCpc-EUC-H.bcmap | Bin 0 -> 2024 bytes .../lib/PDFjs/web/cmaps/KSCpc-EUC-V.bcmap | Bin 0 -> 166 bytes .../static/lib/PDFjs/web/cmaps/Katakana.bcmap | Bin 0 -> 100 bytes .../static/lib/PDFjs/web/cmaps/LICENSE | 36 + .../static/lib/PDFjs/web/cmaps/NWP-H.bcmap | Bin 0 -> 2765 bytes .../static/lib/PDFjs/web/cmaps/NWP-V.bcmap | Bin 0 -> 252 bytes .../static/lib/PDFjs/web/cmaps/RKSJ-H.bcmap | Bin 0 -> 534 bytes .../static/lib/PDFjs/web/cmaps/RKSJ-V.bcmap | Bin 0 -> 170 bytes .../static/lib/PDFjs/web/cmaps/Roman.bcmap | Bin 0 -> 96 bytes .../lib/PDFjs/web/cmaps/UniCNS-UCS2-H.bcmap | Bin 0 -> 48280 bytes .../lib/PDFjs/web/cmaps/UniCNS-UCS2-V.bcmap | Bin 0 -> 156 bytes .../lib/PDFjs/web/cmaps/UniCNS-UTF16-H.bcmap | Bin 0 -> 50419 bytes .../lib/PDFjs/web/cmaps/UniCNS-UTF16-V.bcmap | Bin 0 -> 156 bytes .../lib/PDFjs/web/cmaps/UniCNS-UTF32-H.bcmap | Bin 0 -> 52679 bytes .../lib/PDFjs/web/cmaps/UniCNS-UTF32-V.bcmap | Bin 0 -> 160 bytes .../lib/PDFjs/web/cmaps/UniCNS-UTF8-H.bcmap | Bin 0 -> 53629 bytes .../lib/PDFjs/web/cmaps/UniCNS-UTF8-V.bcmap | Bin 0 -> 157 bytes .../lib/PDFjs/web/cmaps/UniGB-UCS2-H.bcmap | Bin 0 -> 43366 bytes .../lib/PDFjs/web/cmaps/UniGB-UCS2-V.bcmap | Bin 0 -> 193 bytes .../lib/PDFjs/web/cmaps/UniGB-UTF16-H.bcmap | Bin 0 -> 44086 bytes .../lib/PDFjs/web/cmaps/UniGB-UTF16-V.bcmap | Bin 0 -> 178 bytes .../lib/PDFjs/web/cmaps/UniGB-UTF32-H.bcmap | Bin 0 -> 45738 bytes .../lib/PDFjs/web/cmaps/UniGB-UTF32-V.bcmap | Bin 0 -> 182 bytes .../lib/PDFjs/web/cmaps/UniGB-UTF8-H.bcmap | Bin 0 -> 46837 bytes .../lib/PDFjs/web/cmaps/UniGB-UTF8-V.bcmap | Bin 0 -> 181 bytes .../lib/PDFjs/web/cmaps/UniJIS-UCS2-H.bcmap | Bin 0 -> 25439 bytes .../PDFjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap | Bin 0 -> 119 bytes .../PDFjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap | Bin 0 -> 680 bytes .../lib/PDFjs/web/cmaps/UniJIS-UCS2-V.bcmap | Bin 0 -> 664 bytes .../lib/PDFjs/web/cmaps/UniJIS-UTF16-H.bcmap | Bin 0 -> 39443 bytes .../lib/PDFjs/web/cmaps/UniJIS-UTF16-V.bcmap | Bin 0 -> 643 bytes .../lib/PDFjs/web/cmaps/UniJIS-UTF32-H.bcmap | Bin 0 -> 40539 bytes .../lib/PDFjs/web/cmaps/UniJIS-UTF32-V.bcmap | Bin 0 -> 677 bytes .../lib/PDFjs/web/cmaps/UniJIS-UTF8-H.bcmap | Bin 0 -> 41695 bytes .../lib/PDFjs/web/cmaps/UniJIS-UTF8-V.bcmap | Bin 0 -> 678 bytes .../PDFjs/web/cmaps/UniJIS2004-UTF16-H.bcmap | Bin 0 -> 39534 bytes .../PDFjs/web/cmaps/UniJIS2004-UTF16-V.bcmap | Bin 0 -> 647 bytes .../PDFjs/web/cmaps/UniJIS2004-UTF32-H.bcmap | Bin 0 -> 40630 bytes .../PDFjs/web/cmaps/UniJIS2004-UTF32-V.bcmap | Bin 0 -> 681 bytes .../PDFjs/web/cmaps/UniJIS2004-UTF8-H.bcmap | Bin 0 -> 41779 bytes .../PDFjs/web/cmaps/UniJIS2004-UTF8-V.bcmap | Bin 0 -> 682 bytes .../PDFjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap | Bin 0 -> 705 bytes .../PDFjs/web/cmaps/UniJISPro-UCS2-V.bcmap | Bin 0 -> 689 bytes .../PDFjs/web/cmaps/UniJISPro-UTF8-V.bcmap | Bin 0 -> 726 bytes .../PDFjs/web/cmaps/UniJISX0213-UTF32-H.bcmap | Bin 0 -> 40517 bytes .../PDFjs/web/cmaps/UniJISX0213-UTF32-V.bcmap | Bin 0 -> 684 bytes .../web/cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 0 -> 40608 bytes .../web/cmaps/UniJISX02132004-UTF32-V.bcmap | Bin 0 -> 688 bytes .../lib/PDFjs/web/cmaps/UniKS-UCS2-H.bcmap | Bin 0 -> 25783 bytes .../lib/PDFjs/web/cmaps/UniKS-UCS2-V.bcmap | Bin 0 -> 178 bytes .../lib/PDFjs/web/cmaps/UniKS-UTF16-H.bcmap | Bin 0 -> 26327 bytes .../lib/PDFjs/web/cmaps/UniKS-UTF16-V.bcmap | Bin 0 -> 164 bytes .../lib/PDFjs/web/cmaps/UniKS-UTF32-H.bcmap | Bin 0 -> 26451 bytes .../lib/PDFjs/web/cmaps/UniKS-UTF32-V.bcmap | Bin 0 -> 168 bytes .../lib/PDFjs/web/cmaps/UniKS-UTF8-H.bcmap | Bin 0 -> 27790 bytes .../lib/PDFjs/web/cmaps/UniKS-UTF8-V.bcmap | Bin 0 -> 169 bytes .../static/lib/PDFjs/web/cmaps/V.bcmap | Bin 0 -> 166 bytes .../lib/PDFjs/web/cmaps/WP-Symbol.bcmap | Bin 0 -> 179 bytes .../static/lib/PDFjs/web/compatibility.js | 639 + .../static/lib/PDFjs/web/debugger.js | 616 + .../lib/PDFjs/web/images/annotation-check.svg | 11 + .../PDFjs/web/images/annotation-comment.svg | 16 + .../lib/PDFjs/web/images/annotation-help.svg | 26 + .../PDFjs/web/images/annotation-insert.svg | 10 + .../lib/PDFjs/web/images/annotation-key.svg | 11 + .../web/images/annotation-newparagraph.svg | 11 + .../PDFjs/web/images/annotation-noicon.svg | 7 + .../lib/PDFjs/web/images/annotation-note.svg | 42 + .../PDFjs/web/images/annotation-paragraph.svg | 16 + .../web/images/findbarButton-next-rtl.png | Bin 0 -> 199 bytes .../web/images/findbarButton-next-rtl@2x.png | Bin 0 -> 304 bytes .../PDFjs/web/images/findbarButton-next.png | Bin 0 -> 193 bytes .../web/images/findbarButton-next@2x.png | Bin 0 -> 296 bytes .../web/images/findbarButton-previous-rtl.png | Bin 0 -> 193 bytes .../images/findbarButton-previous-rtl@2x.png | Bin 0 -> 296 bytes .../web/images/findbarButton-previous.png | Bin 0 -> 199 bytes .../web/images/findbarButton-previous@2x.png | Bin 0 -> 304 bytes .../static/lib/PDFjs/web/images/grab.cur | Bin 0 -> 326 bytes .../static/lib/PDFjs/web/images/grabbing.cur | Bin 0 -> 326 bytes .../lib/PDFjs/web/images/loading-icon.gif | Bin 0 -> 2545 bytes .../lib/PDFjs/web/images/loading-small.png | Bin 0 -> 7402 bytes .../lib/PDFjs/web/images/loading-small@2x.png | Bin 0 -> 16131 bytes ...ondaryToolbarButton-documentProperties.png | Bin 0 -> 403 bytes ...aryToolbarButton-documentProperties@2x.png | Bin 0 -> 933 bytes .../secondaryToolbarButton-firstPage.png | Bin 0 -> 179 bytes .../secondaryToolbarButton-firstPage@2x.png | Bin 0 -> 266 bytes .../secondaryToolbarButton-handTool.png | Bin 0 -> 301 bytes .../secondaryToolbarButton-handTool@2x.png | Bin 0 -> 583 bytes .../secondaryToolbarButton-lastPage.png | Bin 0 -> 175 bytes .../secondaryToolbarButton-lastPage@2x.png | Bin 0 -> 276 bytes .../secondaryToolbarButton-rotateCcw.png | Bin 0 -> 360 bytes .../secondaryToolbarButton-rotateCcw@2x.png | Bin 0 -> 731 bytes .../secondaryToolbarButton-rotateCw.png | Bin 0 -> 359 bytes .../secondaryToolbarButton-rotateCw@2x.png | Bin 0 -> 714 bytes .../static/lib/PDFjs/web/images/shadow.png | Bin 0 -> 290 bytes .../static/lib/PDFjs/web/images/texture.png | Bin 0 -> 2417 bytes .../web/images/toolbarButton-bookmark.png | Bin 0 -> 174 bytes .../web/images/toolbarButton-bookmark@2x.png | Bin 0 -> 260 bytes .../web/images/toolbarButton-download.png | Bin 0 -> 259 bytes .../web/images/toolbarButton-download@2x.png | Bin 0 -> 425 bytes .../web/images/toolbarButton-menuArrows.png | Bin 0 -> 107 bytes .../images/toolbarButton-menuArrows@2x.png | Bin 0 -> 152 bytes .../web/images/toolbarButton-openFile.png | Bin 0 -> 295 bytes .../web/images/toolbarButton-openFile@2x.png | Bin 0 -> 550 bytes .../web/images/toolbarButton-pageDown-rtl.png | Bin 0 -> 242 bytes .../images/toolbarButton-pageDown-rtl@2x.png | Bin 0 -> 398 bytes .../web/images/toolbarButton-pageDown.png | Bin 0 -> 238 bytes .../web/images/toolbarButton-pageDown@2x.png | Bin 0 -> 396 bytes .../web/images/toolbarButton-pageUp-rtl.png | Bin 0 -> 245 bytes .../images/toolbarButton-pageUp-rtl@2x.png | Bin 0 -> 405 bytes .../PDFjs/web/images/toolbarButton-pageUp.png | Bin 0 -> 246 bytes .../web/images/toolbarButton-pageUp@2x.png | Bin 0 -> 403 bytes .../images/toolbarButton-presentationMode.png | Bin 0 -> 321 bytes .../toolbarButton-presentationMode@2x.png | Bin 0 -> 586 bytes .../PDFjs/web/images/toolbarButton-print.png | Bin 0 -> 257 bytes .../web/images/toolbarButton-print@2x.png | Bin 0 -> 464 bytes .../PDFjs/web/images/toolbarButton-search.png | Bin 0 -> 309 bytes .../web/images/toolbarButton-search@2x.png | Bin 0 -> 653 bytes ...olbarButton-secondaryToolbarToggle-rtl.png | Bin 0 -> 246 bytes ...arButton-secondaryToolbarToggle-rtl@2x.png | Bin 0 -> 456 bytes .../toolbarButton-secondaryToolbarToggle.png | Bin 0 -> 243 bytes ...oolbarButton-secondaryToolbarToggle@2x.png | Bin 0 -> 458 bytes .../toolbarButton-sidebarToggle-rtl.png | Bin 0 -> 225 bytes .../toolbarButton-sidebarToggle-rtl@2x.png | Bin 0 -> 344 bytes .../images/toolbarButton-sidebarToggle.png | Bin 0 -> 225 bytes .../images/toolbarButton-sidebarToggle@2x.png | Bin 0 -> 331 bytes .../images/toolbarButton-viewAttachments.png | Bin 0 -> 384 bytes .../toolbarButton-viewAttachments@2x.png | Bin 0 -> 859 bytes .../images/toolbarButton-viewOutline-rtl.png | Bin 0 -> 177 bytes .../toolbarButton-viewOutline-rtl@2x.png | Bin 0 -> 394 bytes .../web/images/toolbarButton-viewOutline.png | Bin 0 -> 178 bytes .../images/toolbarButton-viewOutline@2x.png | Bin 0 -> 331 bytes .../images/toolbarButton-viewThumbnail.png | Bin 0 -> 185 bytes .../images/toolbarButton-viewThumbnail@2x.png | Bin 0 -> 219 bytes .../PDFjs/web/images/toolbarButton-zoomIn.png | Bin 0 -> 136 bytes .../web/images/toolbarButton-zoomIn@2x.png | Bin 0 -> 160 bytes .../web/images/toolbarButton-zoomOut.png | Bin 0 -> 88 bytes .../web/images/toolbarButton-zoomOut@2x.png | Bin 0 -> 109 bytes .../web/images/treeitem-collapsed-rtl.png | Bin 0 -> 143 bytes .../web/images/treeitem-collapsed-rtl@2x.png | Bin 0 -> 167 bytes .../PDFjs/web/images/treeitem-collapsed.png | Bin 0 -> 128 bytes .../web/images/treeitem-collapsed@2x.png | Bin 0 -> 149 bytes .../PDFjs/web/images/treeitem-expanded.png | Bin 0 -> 125 bytes .../PDFjs/web/images/treeitem-expanded@2x.png | Bin 0 -> 172 bytes muk_web_preview/static/lib/PDFjs/web/l10n.js | 1034 + .../PDFjs/web/locale/ach/viewer.properties | 181 + .../lib/PDFjs/web/locale/af/viewer.properties | 182 + .../lib/PDFjs/web/locale/ak/viewer.properties | 132 + .../lib/PDFjs/web/locale/an/viewer.properties | 182 + .../lib/PDFjs/web/locale/ar/viewer.properties | 182 + .../lib/PDFjs/web/locale/as/viewer.properties | 173 + .../PDFjs/web/locale/ast/viewer.properties | 182 + .../lib/PDFjs/web/locale/az/viewer.properties | 182 + .../lib/PDFjs/web/locale/be/viewer.properties | 179 + .../lib/PDFjs/web/locale/bg/viewer.properties | 182 + .../PDFjs/web/locale/bn-BD/viewer.properties | 182 + .../PDFjs/web/locale/bn-IN/viewer.properties | 182 + .../lib/PDFjs/web/locale/br/viewer.properties | 182 + .../lib/PDFjs/web/locale/bs/viewer.properties | 182 + .../lib/PDFjs/web/locale/ca/viewer.properties | 182 + .../lib/PDFjs/web/locale/cs/viewer.properties | 182 + .../PDFjs/web/locale/csb/viewer.properties | 134 + .../lib/PDFjs/web/locale/cy/viewer.properties | 182 + .../lib/PDFjs/web/locale/da/viewer.properties | 182 + .../lib/PDFjs/web/locale/de/viewer.properties | 182 + .../lib/PDFjs/web/locale/el/viewer.properties | 182 + .../PDFjs/web/locale/en-GB/viewer.properties | 174 + .../PDFjs/web/locale/en-US/viewer.properties | 182 + .../PDFjs/web/locale/en-ZA/viewer.properties | 174 + .../lib/PDFjs/web/locale/eo/viewer.properties | 182 + .../PDFjs/web/locale/es-AR/viewer.properties | 182 + .../PDFjs/web/locale/es-CL/viewer.properties | 182 + .../PDFjs/web/locale/es-ES/viewer.properties | 115 + .../PDFjs/web/locale/es-MX/viewer.properties | 182 + .../lib/PDFjs/web/locale/et/viewer.properties | 182 + .../lib/PDFjs/web/locale/eu/viewer.properties | 182 + .../lib/PDFjs/web/locale/fa/viewer.properties | 182 + .../lib/PDFjs/web/locale/ff/viewer.properties | 182 + .../lib/PDFjs/web/locale/fi/viewer.properties | 180 + .../lib/PDFjs/web/locale/fr/viewer.properties | 176 + .../PDFjs/web/locale/fy-NL/viewer.properties | 182 + .../PDFjs/web/locale/ga-IE/viewer.properties | 182 + .../lib/PDFjs/web/locale/gd/viewer.properties | 182 + .../lib/PDFjs/web/locale/gl/viewer.properties | 173 + .../PDFjs/web/locale/gu-IN/viewer.properties | 168 + .../lib/PDFjs/web/locale/he/viewer.properties | 182 + .../PDFjs/web/locale/hi-IN/viewer.properties | 182 + .../lib/PDFjs/web/locale/hr/viewer.properties | 182 + .../lib/PDFjs/web/locale/hu/viewer.properties | 182 + .../PDFjs/web/locale/hy-AM/viewer.properties | 182 + .../lib/PDFjs/web/locale/id/viewer.properties | 182 + .../lib/PDFjs/web/locale/is/viewer.properties | 182 + .../lib/PDFjs/web/locale/it/viewer.properties | 115 + .../lib/PDFjs/web/locale/ja/viewer.properties | 167 + .../lib/PDFjs/web/locale/ka/viewer.properties | 174 + .../lib/PDFjs/web/locale/kk/viewer.properties | 182 + .../lib/PDFjs/web/locale/km/viewer.properties | 182 + .../lib/PDFjs/web/locale/kn/viewer.properties | 175 + .../lib/PDFjs/web/locale/ko/viewer.properties | 182 + .../lib/PDFjs/web/locale/ku/viewer.properties | 148 + .../lib/PDFjs/web/locale/lg/viewer.properties | 113 + .../PDFjs/web/locale/lij/viewer.properties | 174 + .../lib/PDFjs/web/locale/locale.properties | 312 + .../lib/PDFjs/web/locale/lt/viewer.properties | 182 + .../lib/PDFjs/web/locale/lv/viewer.properties | 182 + .../PDFjs/web/locale/mai/viewer.properties | 174 + .../lib/PDFjs/web/locale/mk/viewer.properties | 134 + .../lib/PDFjs/web/locale/ml/viewer.properties | 174 + .../lib/PDFjs/web/locale/mn/viewer.properties | 83 + .../lib/PDFjs/web/locale/mr/viewer.properties | 182 + .../lib/PDFjs/web/locale/ms/viewer.properties | 182 + .../lib/PDFjs/web/locale/my/viewer.properties | 182 + .../PDFjs/web/locale/nb-NO/viewer.properties | 182 + .../lib/PDFjs/web/locale/nl/viewer.properties | 182 + .../PDFjs/web/locale/nn-NO/viewer.properties | 182 + .../PDFjs/web/locale/nso/viewer.properties | 132 + .../lib/PDFjs/web/locale/oc/viewer.properties | 176 + .../lib/PDFjs/web/locale/or/viewer.properties | 173 + .../PDFjs/web/locale/pa-IN/viewer.properties | 174 + .../lib/PDFjs/web/locale/pl/viewer.properties | 129 + .../PDFjs/web/locale/pt-BR/viewer.properties | 182 + .../PDFjs/web/locale/pt-PT/viewer.properties | 182 + .../lib/PDFjs/web/locale/rm/viewer.properties | 174 + .../lib/PDFjs/web/locale/ro/viewer.properties | 182 + .../lib/PDFjs/web/locale/ru/viewer.properties | 115 + .../lib/PDFjs/web/locale/rw/viewer.properties | 83 + .../PDFjs/web/locale/sah/viewer.properties | 172 + .../lib/PDFjs/web/locale/si/viewer.properties | 173 + .../lib/PDFjs/web/locale/sk/viewer.properties | 182 + .../lib/PDFjs/web/locale/sl/viewer.properties | 182 + .../PDFjs/web/locale/son/viewer.properties | 182 + .../lib/PDFjs/web/locale/sq/viewer.properties | 182 + .../lib/PDFjs/web/locale/sr/viewer.properties | 182 + .../PDFjs/web/locale/sv-SE/viewer.properties | 182 + .../lib/PDFjs/web/locale/sw/viewer.properties | 130 + .../PDFjs/web/locale/ta-LK/viewer.properties | 77 + .../lib/PDFjs/web/locale/ta/viewer.properties | 179 + .../lib/PDFjs/web/locale/te/viewer.properties | 182 + .../lib/PDFjs/web/locale/th/viewer.properties | 182 + .../lib/PDFjs/web/locale/tl/viewer.properties | 95 + .../lib/PDFjs/web/locale/tn/viewer.properties | 86 + .../lib/PDFjs/web/locale/tr/viewer.properties | 182 + .../lib/PDFjs/web/locale/uk/viewer.properties | 182 + .../lib/PDFjs/web/locale/ur/viewer.properties | 182 + .../lib/PDFjs/web/locale/vi/viewer.properties | 174 + .../lib/PDFjs/web/locale/wo/viewer.properties | 125 + .../lib/PDFjs/web/locale/xh/viewer.properties | 182 + .../PDFjs/web/locale/zh-CN/viewer.properties | 182 + .../PDFjs/web/locale/zh-TW/viewer.properties | 182 + .../lib/PDFjs/web/locale/zu/viewer.properties | 133 + .../static/lib/PDFjs/web/viewer.css | 2165 + .../static/lib/PDFjs/web/viewer.html | 363 + .../static/lib/PDFjs/web/viewer.js | 7517 +++ .../static/lib/printThis/printThis.js | 304 + .../static/src/js/preview_dialog.js | 25 + .../static/src/js/preview_generator.js | 2 +- .../static/src/js/preview_handler.js | 2 +- .../static/src/js/preview_widgets.js | 60 +- .../static/src/less/preview_content.less | 11 +- .../static/src/less/preview_dialog.less | 3 +- .../static/src/less/preview_widgets.less | 2 +- .../static/src/xml/preview_content.xml | 7 + .../static/src/xml/preview_dialog.xml | 1 + muk_web_preview/template/assets.xml | 2 + muk_web_preview_attachment/__manifest__.py | 10 +- .../static/description/index.html | 6 +- .../static/src/less/sidebar_preview.less | 20 +- .../static/src/xml/sidebar_preview.xml | 18 +- muk_web_preview_image/__manifest__.py | 2 +- .../static/src/xml/preview_content.xml | 5 +- muk_web_preview_mail/__manifest__.py | 2 +- muk_web_preview_mail/controllers/main.py | 33 +- muk_web_preview_markdown/LICENSE | 619 + muk_web_preview_markdown/README.md | 3 + muk_web_preview_markdown/__init__.py | 20 + muk_web_preview_markdown/__manifest__.py | 59 + .../static/description/banner.png | Bin 0 -> 43606 bytes .../static/description/icon.png | Bin 0 -> 9474 bytes .../static/description/index.html | 40 + .../static/description/logo.png | Bin 0 -> 38064 bytes .../static/description/screenshot.png | Bin 0 -> 37869 bytes .../static/lib/showdown/license.txt | 34 + .../static/lib/showdown/showdown.js | 2928 + .../static/src/js/preview_generator.js | 41 + .../static/src/js/preview_handler.js | 60 + .../static/src/less/preview_content.less | 30 + .../static/src/xml/preview_content.xml | 33 + muk_web_preview_markdown/template/assets.xml | 30 + muk_web_preview_msoffice/README.md | 17 +- muk_web_preview_msoffice/controllers/main.py | 16 +- .../static/src/js/preview_handler.js | 12 +- muk_web_preview_text/__manifest__.py | 2 +- .../static/src/css/preview_print.css | 22 + .../static/src/less/preview_content.less | 1 - .../static/src/xml/preview_content.xml | 6 +- 426 files changed, 95558 insertions(+), 130 deletions(-) create mode 100644 muk_web_export_attachment/LICENSE create mode 100644 muk_web_export_attachment/README.md create mode 100644 muk_web_export_attachment/__init__.py create mode 100644 muk_web_export_attachment/__manifest__.py create mode 100644 muk_web_export_attachment/controllers/__init__.py create mode 100644 muk_web_export_attachment/controllers/main.py create mode 100644 muk_web_export_attachment/static/description/banner.png create mode 100644 muk_web_export_attachment/static/description/icon.png create mode 100644 muk_web_export_attachment/static/description/index.html create mode 100644 muk_web_export_attachment/static/description/logo.png create mode 100644 muk_web_export_attachment/static/description/screenshot.png create mode 100644 muk_web_export_attachment/static/src/js/sidebar_export.js create mode 100644 muk_web_export_attachment/static/src/less/sidebar_export.less create mode 100644 muk_web_export_attachment/static/src/xml/sidebar_preview.xml rename muk_web_preview/static/src/xml/preview_widgets.xml => muk_web_export_attachment/template/assets.xml (67%) delete mode 100644 muk_web_preview/static/description/demo.gif create mode 100644 muk_web_preview/static/lib/PDFjs/LICENSE create mode 100644 muk_web_preview/static/lib/PDFjs/build/pdf.js create mode 100644 muk_web_preview/static/lib/PDFjs/build/pdf.worker.js create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78-RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78ms-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/78ms-RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/83pv-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/90ms-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/90ms-RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/90msp-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/90msp-RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/90pv-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/90pv-RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Add-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Add-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Add-RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Add-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-0.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-1.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-3.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-4.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-5.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-6.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-CNS1-UCS2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-GB1-0.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-GB1-1.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-GB1-2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-GB1-3.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-GB1-4.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-GB1-5.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-GB1-UCS2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-0.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-1.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-3.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-4.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-5.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-6.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Japan1-UCS2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Korea1-0.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Korea1-1.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Korea1-2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Adobe-Korea1-UCS2.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/B5pc-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/B5pc-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/CNS-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/CNS-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/CNS1-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/CNS1-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/CNS2-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/CNS2-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/ETHK-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/ETHK-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/ETen-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/ETen-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/ETenms-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/ETenms-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Ext-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Ext-RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Ext-RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Ext-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GB-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GB-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GB-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GB-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBK-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBK-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBK2K-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBK2K-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBKp-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBKp-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBT-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBT-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBT-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBT-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBTpc-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBTpc-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBpc-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/GBpc-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKdla-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKdla-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKdlb-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKdlb-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKgccs-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKgccs-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKm314-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKm314-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKm471-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKm471-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKscs-B5-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/HKscs-B5-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Hankaku.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Hiragana.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSC-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSC-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSC-Johab-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSC-Johab-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSCms-UHC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSCms-UHC-HW-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSCms-UHC-HW-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSCms-UHC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSCpc-EUC-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/KSCpc-EUC-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Katakana.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/LICENSE create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/NWP-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/NWP-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/RKSJ-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/RKSJ-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/Roman.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UCS2-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UCS2-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UTF16-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UTF16-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UTF32-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UTF32-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UTF8-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniCNS-UTF8-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UCS2-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UCS2-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UTF16-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UTF16-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UTF32-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UTF32-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UTF8-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniGB-UTF8-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UCS2-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UCS2-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UTF16-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UTF16-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UTF32-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UTF32-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UTF8-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS-UTF8-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS2004-UTF16-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS2004-UTF16-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS2004-UTF32-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS2004-UTF32-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS2004-UTF8-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJIS2004-UTF8-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJISPro-UCS2-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJISPro-UTF8-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJISX0213-UTF32-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJISX0213-UTF32-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UCS2-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UCS2-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UTF16-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UTF16-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UTF32-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UTF32-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UTF8-H.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/UniKS-UTF8-V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/V.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/cmaps/WP-Symbol.bcmap create mode 100644 muk_web_preview/static/lib/PDFjs/web/compatibility.js create mode 100644 muk_web_preview/static/lib/PDFjs/web/debugger.js create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-check.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-comment.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-help.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-insert.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-key.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-newparagraph.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-noicon.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-note.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/annotation-paragraph.svg create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-next-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-next-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-next.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-next@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-previous-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-previous-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-previous.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/findbarButton-previous@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/grab.cur create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/grabbing.cur create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/loading-icon.gif create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/loading-small.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/loading-small@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-documentProperties.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-documentProperties@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-firstPage.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-firstPage@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-handTool.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-handTool@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-lastPage.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-lastPage@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-rotateCcw.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-rotateCcw@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-rotateCw.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/secondaryToolbarButton-rotateCw@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/shadow.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/texture.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-bookmark.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-bookmark@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-download.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-download@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-menuArrows.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-menuArrows@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-openFile.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-openFile@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageDown-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageDown-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageDown.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageDown@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageUp-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageUp-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageUp.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-pageUp@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-presentationMode.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-presentationMode@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-print.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-print@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-search.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-search@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-secondaryToolbarToggle-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-secondaryToolbarToggle.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-secondaryToolbarToggle@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-sidebarToggle-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-sidebarToggle-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-sidebarToggle.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-sidebarToggle@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewAttachments.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewAttachments@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewOutline-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewOutline-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewOutline.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewOutline@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewThumbnail.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-viewThumbnail@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-zoomIn.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-zoomIn@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-zoomOut.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/toolbarButton-zoomOut@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/treeitem-collapsed-rtl.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/treeitem-collapsed-rtl@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/treeitem-collapsed.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/treeitem-collapsed@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/treeitem-expanded.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/images/treeitem-expanded@2x.png create mode 100644 muk_web_preview/static/lib/PDFjs/web/l10n.js create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ach/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/af/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ak/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/an/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ar/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/as/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ast/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/az/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/be/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/bg/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/bn-BD/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/bn-IN/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/br/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/bs/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ca/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/cs/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/csb/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/cy/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/da/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/de/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/el/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/en-GB/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/en-US/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/en-ZA/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/eo/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/es-AR/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/es-CL/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/es-ES/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/es-MX/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/et/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/eu/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/fa/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ff/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/fi/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/fr/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/fy-NL/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ga-IE/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/gd/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/gl/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/gu-IN/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/he/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/hi-IN/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/hr/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/hu/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/hy-AM/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/id/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/is/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/it/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ja/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ka/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/kk/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/km/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/kn/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ko/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ku/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/lg/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/lij/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/locale.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/lt/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/lv/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/mai/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/mk/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ml/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/mn/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/mr/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ms/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/my/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/nb-NO/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/nl/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/nn-NO/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/nso/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/oc/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/or/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/pa-IN/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/pl/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/pt-BR/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/pt-PT/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/rm/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ro/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ru/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/rw/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/sah/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/si/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/sk/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/sl/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/son/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/sq/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/sr/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/sv-SE/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/sw/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ta-LK/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ta/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/te/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/th/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/tl/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/tn/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/tr/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/uk/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/ur/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/vi/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/wo/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/xh/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/zh-CN/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/zh-TW/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/locale/zu/viewer.properties create mode 100644 muk_web_preview/static/lib/PDFjs/web/viewer.css create mode 100644 muk_web_preview/static/lib/PDFjs/web/viewer.html create mode 100644 muk_web_preview/static/lib/PDFjs/web/viewer.js create mode 100644 muk_web_preview/static/lib/printThis/printThis.js create mode 100644 muk_web_preview_markdown/LICENSE create mode 100644 muk_web_preview_markdown/README.md create mode 100644 muk_web_preview_markdown/__init__.py create mode 100644 muk_web_preview_markdown/__manifest__.py create mode 100644 muk_web_preview_markdown/static/description/banner.png create mode 100644 muk_web_preview_markdown/static/description/icon.png create mode 100644 muk_web_preview_markdown/static/description/index.html create mode 100644 muk_web_preview_markdown/static/description/logo.png create mode 100644 muk_web_preview_markdown/static/description/screenshot.png create mode 100644 muk_web_preview_markdown/static/lib/showdown/license.txt create mode 100644 muk_web_preview_markdown/static/lib/showdown/showdown.js create mode 100644 muk_web_preview_markdown/static/src/js/preview_generator.js create mode 100644 muk_web_preview_markdown/static/src/js/preview_handler.js create mode 100644 muk_web_preview_markdown/static/src/less/preview_content.less create mode 100644 muk_web_preview_markdown/static/src/xml/preview_content.xml create mode 100644 muk_web_preview_markdown/template/assets.xml create mode 100644 muk_web_preview_text/static/src/css/preview_print.css diff --git a/muk_web_export_attachment/LICENSE b/muk_web_export_attachment/LICENSE new file mode 100644 index 0000000..faf7bf4 --- /dev/null +++ b/muk_web_export_attachment/LICENSE @@ -0,0 +1,619 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/muk_web_export_attachment/README.md b/muk_web_export_attachment/README.md new file mode 100644 index 0000000..ca1f062 --- /dev/null +++ b/muk_web_export_attachment/README.md @@ -0,0 +1,3 @@ +# MuK Export Attachment + +Adds a button to the Attachment Sidebar to export the content directly in the browser. \ No newline at end of file diff --git a/muk_web_export_attachment/__init__.py b/muk_web_export_attachment/__init__.py new file mode 100644 index 0000000..3c3d6e6 --- /dev/null +++ b/muk_web_export_attachment/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# Copyright (C) 2017 MuK IT GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +import controllers \ No newline at end of file diff --git a/muk_web_export_attachment/__manifest__.py b/muk_web_export_attachment/__manifest__.py new file mode 100644 index 0000000..1329fa4 --- /dev/null +++ b/muk_web_export_attachment/__manifest__.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# Copyright (C) 2017 MuK IT GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + "name": "MuK Export Attachment", + "summary": """Export Odoo Attachments to PDF""", + "description": """ + Adds a button to the Attachment Sidebar to + export Odoo Attachment to PDF. + """, + "version": "10.0.1.0.0", + "category": "Extra Tools", + "license": "AGPL-3", + "website": "http://www.mukit.at", + "author": "MuK IT", + "contributors": [ + "Mathias Markl ", + ], + "depends": [ + "base", + ], + "data": [ + "template/assets.xml", + ], + "demo": [ + ], + "qweb": [ + "static/src/xml/*.xml", + ], + "images": [ + 'static/description/banner.png' + ], + "external_dependencies": { + "python": [ + 'requests', + 'cachetools', + 'pdfconv' + ], + "bin": [], + }, + "application": False, + "installable": True, + +} \ No newline at end of file diff --git a/muk_web_export_attachment/controllers/__init__.py b/muk_web_export_attachment/controllers/__init__.py new file mode 100644 index 0000000..fa6e444 --- /dev/null +++ b/muk_web_export_attachment/controllers/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# Copyright (C) 2017 MuK IT GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +from . import main \ No newline at end of file diff --git a/muk_web_export_attachment/controllers/main.py b/muk_web_export_attachment/controllers/main.py new file mode 100644 index 0000000..6e81975 --- /dev/null +++ b/muk_web_export_attachment/controllers/main.py @@ -0,0 +1,149 @@ +# -*- coding: utf-8 -*- + +################################################################################### +# +# Copyright (C) 2017 MuK IT GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +import os +import sys +import json +import uuid +import base64 +import urllib +import urllib2 +import logging +import tempfile +import urlparse +import cStringIO +import mimetypes +import collections + +import werkzeug.exceptions +from contextlib import closing + +from odoo import _ +from odoo import tools +from odoo import http +from odoo.http import request +from odoo.http import Response + +_logger = logging.getLogger(__name__) + +try: + import requests +except ImportError: + _logger.warn('Cannot `import requests`.') + +try: + from cachetools import TTLCache + pdf_cache = TTLCache(maxsize=25, ttl=1200) +except ImportError: + _logger.warn('Cannot `import cachetools`.') + +try: + import pdfconv +except ImportError: + _logger.warn('Cannot `import pdfconv`.') + +class ExportAttachmentController(http.Controller): + + @http.route('/web/export/pdf/check/filename', auth="user", type='http') + def check_filename(self, filename, **kw): + return self.check_mimetype(mimetypes.guess_type(urllib.pathname2url(filename))[0]) + + @http.route('/web/export/pdf/check/mimetype', auth="user", type='http') + def check_mimetype(self, mimetype, **kw): + if mimetype in ['application/msword', + 'application/ms-word', + 'application/vnd.ms-word.document.macroEnabled.12', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'application/vnd.oasis.opendocument.text', + 'application/vnd.mspowerpoint', + 'application/vnd.ms-powerpoint', + 'application/vnd.ms-powerpoint.addin.macroEnabled.12', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'application/vnd.oasis.opendocument.presentation', + 'application/vnd.msexcel', + 'application/vnd.ms-excel', + 'application/vnd.ms-excel.sheet.macroEnabled.12', + 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'application/vnd.oasis.opendocument.spreadsheet']: + return Response(json.dumps(True), mimetype='application/json;charset=utf-8') + else: + return Response(json.dumps(False), mimetype='application/json;charset=utf-8') + + @http.route('/web/export/pdf', auth="user", type='http') + def export(self, url, filename=None, force_compute=False, **kw): + try: + response = pdf_cache[url] if pdf_cache and not force_compute else None + except KeyError: + response = None + if not response: + return self._get_response(url, filename) + return response + + def _get_response(self, url, filename): + if not bool(urlparse.urlparse(url).netloc): + method, params = self._get_route(url) + response = method(**params) + if not response.status_code == 200: + return self._make_error_response(response.status_code,response.description if hasattr(response, 'description') else _("Unknown Error")) + else: + content_type = response.headers['content-type'] + data = response.data + else: + try: + response = requests.get(url) + content_type = response.headers['content-type'] + data = response.content + except requests.exceptions.RequestException as exception: + return self._make_error_response(exception.response.status_code, exception.response.reason or _("Unknown Error")) + try: + response = self._make_pdf_response(pdfconv.converter.convert_binary2pdf(data, content_type, None, format='binary'), filename or uuid.uuid4()) + pdf_cache[url] = response + return response + except KeyError: + return werkzeug.exceptions.UnsupportedMediaType(_("The file couldn't be converted. Unsupported mine type.")) + except (ImportError, IOError, WindowsError) as error: + _logger.error(error) + return werkzeug.exceptions.InternalServerError(_("An error occurred during the process. Please contact your system administrator.")) + + def _get_route(self, url): + url_parts = url.split('?') + path = url_parts[0] + query_string = url_parts[1] if len(url_parts) > 1 else None + router = request.httprequest.app.get_db_router(request.db).bind('') + match = router.match(path, query_args=query_string) + method = router.match(path, query_args=query_string)[0] + params = dict(urlparse.parse_qsl(query_string)) + if len(match) > 1: + params.update(match[1]) + return method, params + + def _make_error_response(self, status, message): + exception = werkzeug.exceptions.HTTPException() + exception.code = status + exception.description = message + return exception + + def _make_pdf_response(self, file, filename): + headers = [('Content-Type', 'application/pdf'), + ('Content-Disposition', 'attachment;filename={};'.format(filename)), + ('Content-Length', len(file))] + return request.make_response(file, headers) diff --git a/muk_web_export_attachment/static/description/banner.png b/muk_web_export_attachment/static/description/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc4be82b7e0d1e1b4470d9a68a1a91e2b162a07 GIT binary patch literal 40827 zcmeFZWmH!0);Vo?Kcne-bpV#aO3ZmtZ1b<9oSD@HJLZl?9RZPmG~jS zM1cMC;U7T_%=CtHB^c#LAq4-&^AY-En=SGG8W8xljC7fqw1etbny28KU25c5nA$VGl31hUt&{TJy~Q z2%DNymFDpFm+*!Z|BuHv(K`n^IWPjp2}9&6LC5u7a$qrtfj1YrgfA?O3BE1L+pSvO zAu#=PGM3up^3egl7V}=kc|&p_U$}Ad@DZD@EIwD}V0Qrl^j+fIX0J3L zrd6aUC?3_8N>ElfCc(DeQ54+RnX`=WpSR$R3oZpAi>_XQFcO93y7^Nw-)YLy*|?K@ zfik6$Z5}E)!I4`eTlmX`xw6zuNj}A_BG>q%@Uh47f?Tcetgv`Zp;I_9#GokV1TW?C zHR69sTa`>#qD|t9Or{0#m&Hf3H9C*h8%fljNimW+bS;`jSay)F#QOmg+!k1NrTvF5 z%Vj0(XBQR(P{|VoeXgYZ5dZnaLM8{2%?PTpt0)`d=9pKYC^`2&aoHYz-^8Yu+g1Xn zm?IP8){s*mbp5ec=xwg^gm2iGQ(K&T9qThDQm&?oRcqo;KuB(L_!2snoV3(xllLzbk{Ri#^s!W4v!Lm(viV*u^kMt7MxK z#7)(@n)kHu)`r+_;|XMgdP3n5sH#wk`4K8vxdLrP2pn_#2qTo_A4WL$yaD3(21(h_ z>{BMm!WqINpt6YkB)2bvz}htwEz=*dEv^!z;6+y4(QTfzl_GxX8_8hXN6ycnxn+ky zzgIE=d87WM#-`agc`u9XV0I~av30nrxZwK3YGoZma&C(gm-IhZ^ogL*Rc`~0M2a=1 zN!Q@_IZ7ZieQy#Dg)LBl$xomhgl4ZNkwN!H$zZnIsV;?(<$1N`nLE7j%Pd!tied__ z&ba>ky{w9nx`ea=P0q1GCn1z(Ppihef13ZaY+IE#>SrPiaKpPa?%i0)8?RGqP-=bZ z+Nb_Rbeob4uq;_t%a zy=xL}1sCgEu3IbnZ*6`DG>Ck9q#I?IASPzbS0mSApturglelXa=wfJBRjm_crCPQ~ z+q3wm;t8gDQ-MFEj=fN_?1gUHDFi>nH&Z{URJABgV7=5$!@I}8r zCy`c|uC#_kP@;xhGFH@KFPF;&*^4-EJ^WVOtJrKI=R6~3a5U;oj`l-ej;#s^g019r zgml#Jnn2Fx%Z2WuAi*0A3l%SV*7}MFQcA$7x@1{mhtHgRySG>e`%fnceEtFxk78pW z@eh~q>>l2-L!jCC=ntpYrKwL>9=e{EGaphI#+#VgB_w z7v^JIf@l})fB(;0tmlPRhP40JLhr$0*~fZReg0{}-jEPN-VpSR^D{L6^f6#C@#OsA z#yHqC|0}}j0)Y?e8AZkLxgTvOf*%+7p_il9)`4vmG zn_E6;1*894l7x`ZA-HUZM1DqgJO*#kf+GPz#PTZ+r}C7(nS{KQ{kL=+ny*;ijo!BD@EIJy^W%+kBbMHvkMu^Z42~7C6T=aMmIGFbn^`LLh_&>&lw|Dow?DD5HAe#7Qp*di(qPOYZm4cxTFY^le0`rR3fkc655>E(-3IZeeC9r(O z08Tt|idhWE=vWq5l#3+x1wKH_19wEU%bq9$L7Fb%4G|XQ_p%=gU_buF<{XSDfvUi_ zkoQ~>lmGl@dm6Cd^<6v(sgF1bKRBi-{+9EfTPE}cu0$lFl0y+C@a^-kRTIRhKf{P4 zfnlVsDf;9-$H0wZE)pSx7Rmodhw!VurIgQv48mma>{qR^nDHIUlMCp?;($i60dy-FHG1X^ zpp{X8ypppATb}Q%jnJpTVJ}lQg|jx=^K6jKcDW7Queb~g5HZxdEkM%$z7S-AbeFSD z)h1^qdYzVc$ZMe;0-xGMGN(9cXft7ZtFeBtyjMg z#oHtxDyn4{({9eTglfi4VB`SZSlLkt>vI7<46zu80~h>A_LdQx&1#r;NNjsn@^@~R z(!g#AAOt9uopZbS!i)+t;|wMgZdS*<%Ed zXgsfi53KTY4NiSk45H$IQK!Yd_MA`yN$B%khO2`&2C@iv1a1_?BJ!#QwzPZ~h ze5Ar420XqG7%Cu|vRBj1ERcd~ZKibV3%!;z6;Ks1zlXXJPYlIy9mA*;XMqF?UC#eo z3NZFw7~B{d74F%kCjx#cou};)?|;@Dn*diI*>CyO_CLeIq`wpHeTAU!d55yP`LPY# zju0xDNSam{P+1e;@IIGdcTQjV^I_SG3tv^G&v@i^{y!eJ-lWkThG+em0{a6Qtnrk7 zz;#6yLSq-Ie+sT!#OwM+C^4 z|5?^mZ>C#GAO&UGOttWAHu})vao%sgu3Y&QK%&*~rIs<8Yh~SvU59|HBM#5}|{yOrWZ>~^_dJ54vYPTF2!K1EMMp7eu+HIVL9tSg;Y zuX0*90MBST5XpQz-}V>&1R^q>*|>y-L#Q-5vGHsOoV1 zt4k1VTFLpls6evZJbrJGF4;@Z_wCdA)#rtU@p;{+N!YHO1|)Hf7DW=cn8idW8?NZi z1QyXb*zzyJ>ctojj+<`}8(LW)r1v9v$6KrKKZ~{%z>i;zSIg{(@lq5C8!Rl5n5ty9 z9a@JS}5@uYtGqhkm(<<3+XJft&rPm-$pal@vf3!=gHqy?;oGv z37Ch~+oRnX4D7l`4%3i?Q?&Lbs9jO0@;!xwj7le*taXcF)5?Jxzo45D81@@~yWMdr zjeK!Qhbb}7f?ftDIgO!p%<5!Z=0^Uv@`QTr50N5av^83DEI6Qu%k}Ws=`ROTvvK}| zfb}ELeGl@I!kvH5crP7UeVmsRT5Ia%FF4OVYybb ztAk>(`ou^h&BcbjSmuw^4iGZ9@i(79u$yE?YKRVAIrni=&eJo%t5fTQINue0=dI?= z>hNM#wzdpJ%E3DcpBXlF(&^m_JvTQv6xX8JALk7fZW&;VxT$bFP}h2`4igsA60f`j zo^`;b6$UY6y1E|@1id9lU)i=9j%Dp;*M;B7i_PkXb7M_2#KCcs#Tst3O20{|9YY@#39bl;r zq0n(bwK-KIe>ZSRWpDD+7wX%h9341?4rz~ZTEZ~(XNHF#_R|Ag2YsJrBZpOJkVSSB z?$>vu*hn6~^OAug5?U@GligE$SxrdN%u6nN-H{1QW(2^UD%q%(Lk6s3pQ8mC1Tw{P z2Zw7gU$IC39I)Y~X0Nt6X=H*Og4Da*daUGqVS8@v8(uHuUuV*9xVDP|tG{Y0+Q z8FKq>6H*1Kwq99O8VF6itZ63KbCYnvWC-Ba`WkyV0dJQfL`V#kTqj1;N7RaD_<8LB zK1|tT>OkahjNjar9u7Q9!zDzTj)qv4f!Q=$u2>{?)ISUZS1r4jZBw*0Ls?-zU>8D^ zh6=6h32O3vaga{3YFy>X1EJ<3kawuvCd{`sA$(zMMuh14NZ$)(f!b<_UlY2))25xJvi zE#7h0*3erSb6K1O+{I0M#)o9&I^EOPmcVtC`SEwava7i}94#)aF&JA1YqM-EYNlk9 zeX4p_K>kKP>Pru?u$H3p9KOjWW*PDcc`)?_W2?J8ElA1W^V-gF>z#8*cGZ*~iM~@f zbOX7;TfRPJDk0Seyl>)5+l)mY<_bXt@~45Q>C>+3Z-+x29PDbe_m%gJ;XwfI`t28 zix!u{!a}z>)Q@mdsOxtlI?BDTO&kzDqAk{j6g&8p^!DTMQiJsdOQVwf!s9{9f%+l{ zgHGKAILh@aw>pr;?Qk&2J4$4!$>r=zmbd884{SBf zZA&QhxlRlT-t<}}2@LFt1t}>-95qTDGm$wQ*DHbxC~F9Sl;BnRJ)PKO`udb4HT8Tsq+ax7$<3d>KtaNIn^>B5RV1kLv8 zhr#wV5JNpK3dP$+(}yx(J231dXOiZ!jdm<3y}xn%B8$`2S>q)%b7H{y#h(@-lOydN zTw&@$t_7TNC35xFJrFyAb7gFQm<5nux)|X$WOCj*!Q+>VMHhA_jrF*EVeo-uHx`=Z z5LzS6x$)psmtay!E?0R35;!##jdKk1MT-;i<$>8%USmOl=YXwyo-%^MAqrVF$z>F9 zeOissd|-`I9^up_-Tsb8faG1%;D=@g+krrcn0jhjTa&-@6To(IkKpI$I(c@IrzlP5V{Ajm024J*5M{4Zp<1qwoJsL%fW9Y$-s-$WbR?+7 zMWf9%sY)G=u9<1KoT*ZEyn=2TDtR&v+Q>g{(sv@{Ej%l@@%blv>$Be%TPPE#o2iHR zV@Xfyf^(9>-AT=^fR6YsGvni=ylCi!yZ1EiCB5u6iuMCyZU~V zYE!%UE*+c`$)HHN+|+E_Hw=KPe`B+|;a9Gsl+Cn}MlHP)s8q@r1|?Bq=ASdFZQ>5n zE4&@NxV8AL9KY|91x8xm@mOO1)+4zD;9E}-Ol>rh5qKV(<5mB1vrm}@^c@Zls+)(Y z&|dR<*F&-JxJf-#xi&Qrgv(jNJYMfEj*RJUHN>~kZ}{x^)t}1(*+KZwRbK&%}g^FhY2ZS>h|3|E=OJufU5jIE z<1NWKjLf40o_mMZtdCYp(5P~T=Ou_`v$@(lm66(&!A5c(cfY^oxtOUaDodrCz>pT( zPG95%aBG$&)h@I_{Y&Dl`?wwKf&AsS~b` zs~ZN5Xg0FHjdXy3Df^t4^Q#@bi$tq!@aT{8FN*Bd70teO`%HU@NWgm^dthn=m8><2 zz+w?nR+AN??dr}odo})T2FN_(D_g2oOj8rlGhAtb8Z=#bu|vt23V}MZrcpQb#s!M* z*9z}5$EU>7N83^WcCyLe&1QL5hLdSLCj*E;MumT$9+xp>b}rL!@_gh56U**1GGsznVevm__L#n z)~Rsg;t(~e1FMC%y~_Dywf4QfQDG6D=SdEN7Xv47reXsYqhWNM3mT~82MAe5uy^b> zZTWE0F&g!DIo+p@!=DQe)QXK^1tTzWz2QD}kI(|w*$-45=0|oGn%C9G`zCpd{fj2D zArH0L>|YO!G1xa&?j#_CT4+y02RvC;C&k@bVn^q4&8K3yiwlW697(Q3B{;b5SEX=` zHY3o};*o6};i#=IXBX09E(KlSa`Ncrm06r!&tevb4=`kv=PK2QNu;^X+F9zT`sU%IweYXc0QXzvTiI7H?H4_o)~7{wCcEEs`W=OLfEou@QLqut}+Lu601Fv~na<R_vo0;%o(%;Q4*0wat}rzz7)RN$0_X-I!aE7EcR*%WSDrZGkbjHfSFoz zV>T#X9GI(h!~m82sA1uV?{XVbsc`RhHz4n2^+%^gyRip0fb@5Ut11-0?yx|j`IK)e zLOostQs;|1L#x3?$4x!DxxE<*;$*(x{c}@=ATBCAK`0Bp$ zo7ENx6K?y*!3>rrBFzKZ0n4T#>b*hdi^e=Bbb{jh6?+-pjS1N^F4^cimlsmhO4t3y zg~|SxoA!pD+0T}O+>zCFvCb8?)6VrjUdL7EZW0l(3e&g&WA=k8+7g3#& zp?S)JW5Q}@h5~ysf)=jwwtq6*hn3x{&@G1Y3B;dCB#|dC?oRTKV#T0U1p{?qdl(QA z!NC@@xS|M*yJnYIz(~c>FVKk;1+w#;Y#!``N`u|4n|wvuOf7#_p4pkn(N=xWb)Ks+ z1@6;Q$XZ(sS!VHY=?p`DDySXC$;D{{?-C=%_Ch{|(;@oc`yr-)LfZ}fG7+?i`QKiE zs?F4xVfErA%-^x@H@Ve0zpYjbs(A`8nmlU0wF8k^@TXK&B%p!tKIy17C^;PN*JTMz zCb8(F>16rmU&9wOm5;t#7Y2X60`KtCH1VKxJV4YnF0g6g)LsV7U$~P0+^{|RR+4hf=HCR)wYKV@y7ZBdO7JRTQeY- zvAb2F*%+wi={09gtS{8rKQ3P6%DW_6i*TVn3Mq__;!v+PQ`$(e)$#7XJH+?7 zBwxh_CFeLeAx`!bqW+!x6x;T8sjpYPavv| z>(Y7>Pe8VVSj^-NQ?q{&?JSZo6Hqc}) z+L=^k`p0`3)j^u80RiL!{s4%~Ws-!MkjdILqSjke+~AXq>TOXGr!^7iwmbb0LN#C# z=flzvP*=9Sj^fC6E$#}Iq%28pt&7vDDa(tHnWHAb3=eyQTr9*>m_Qowg^mcYHK4%g zu)jFu>AJRlD-xQ=@OfYe#>HBsqaIGc+Oh6Y6Y^)efS=Wmc2aUS)GB@a-bR4$tVo&M z)xWf#{9|85cCfjwfT-3HW(6Tgb>H{|qS&Zk@nUmyr$cG%G3!ztdDbRHLIu(?8Wbjx zYB1i4zZXDU!);cb)M(W6OVs^2P&+|9Z(zGm=i-<57+Q8>RJ%C*3fpHa7{}C7>)f!& z)!~A8B(>&ob_J7b_V_(HGJE^v_PdxXgV9V8HcOXEp|*k=5S`uRP)G#oN>K~Tp-$7s zwi$+H&DIg*79)4ViL)?d%gyv= zBXGPc1r)6^BIa^jnCx)t%lLjGGwaml;Iu_mQJ;)OoPWiho|+5>kt4K_wHnyPZM37| z$=>7i2j1dKt*t`rx3a3HfFG|s zn=Ek}CO8uxR$0YO5OY22?rGfKaY|vZA24%M-owV$FN*^TwT?)mya4Q}goFU{P8=M> zjX~%-8!U$Izdb516=>i~jQ}E>kx|U!fn|U5xsnF>&GQ2Wa2KY3X}Wjklu*fjWi#l1 zC_I1=M0_R$i2y43O^PJ=7NLcs$RAShFYhM~kevc~pV~N}leGSFe}A|sEEE7-j})NU zAhsK+0CDAi9`Jv$g5Ln7_U;Sy|NEDlsW23p_@QLIV+$0k**$Kn{9?=g3O5iQVy!zo zoSFUi-s}GIXVwk|G8$k(_)jYB|HvOmK>#V8QE1fwS}oZ^km&tT-_5H(a@V_{-qahKLH9M z*r)YA76{>Bz@o1rRKNbErU~BzC-u)=GWh@iIe`0PA3}WDPZ>ZRV%C&ww22ey0pAiS z+T*bKyWlgGxN@W)76C~d3Wz=1C3)>n4}%XhK-ysn3~hdtAQXJ&(gU+Nr2h;H6b6Px zZaah}K(;3V!<_Hpvi=CiC-9ll89m%umLQ~k-cybS2j$#NL;5~jOqq-DQtH>QkOQeaxb<*oUC{|gD=DBXM%#OK>3Bx)f`WpK5AkoSl_Ae5 z(%ge)&iKSKAa0I({I0Sz>+R~CPxJ!ADDMY={G2b%PWVNApPpS)alvs1s+?|58M1SW z246Cl7xvpKw(#-BfK1fWYp3CoV-<40^nG#`3bJEuGT)y+7BjfA?S};>BO!IPQ zhW5N$E7hPKj$wI&G3cSd5q>>uUg|&6(>|sMTX%d;Blb6dlY#-B=sHgTXs#%~FDyOo z>^oxe8vP{WcedUKni4~7M=EUT0?;8AOhs=s%0%*G7d)v<{5K`@N%NZ9j~8an7dOVo z>rpc0#>4nYuEs3NfE!iI=z6At{`C+6>PcU>fQE|d2jnJioRo_~5P9A#w|7c4ypE$( z$0BH90{453*b#!w;_GHZq^s59ep6;Ns4nfg#Zz?eNmruNT4L&;sEBs!co;}~!e41L zD5(2o#he)Ein@&@d2z`UfJ>fNNC%o^;yKJQI4=moctNFm3rIMc=*p(4_%ZcBJq2MT0xZnvmu>j;gitcW3$OpLVNB#cT ze+SIx&agJbksV%6P8{>eqMv;i8pkVn!SJ{^sHmZ_GB_D)m4heK`r)4e6!2}YV!0KP z)O29J-aeAdSo@rS1K)T!jqR&wrcLPXL|6athwiL!-XM>=OY9%rf|mdQsEnh~_;&y% z29_6ChsRVf*aOs$M7~hgqv^L3gBwd*-Fb&X#G50bzm$d+SS#edq3h?=YIL@g??p|zorbb!5E#$)A8CUsnxo>#Lagw zN1l=7(3eJWbvz2{493(j^NT5Z#u7teA713pNCm+%pl-4 zSh|CAUM3d|1SUV`kRs+EuJJ%VaD#8V3C8qbEt4)l!Qx4O(-nsAf3U$muBTNQK*tsjDNX7wzi%r5?r=b%g1DQ z3QtNwF~_`l?{c=h(3>@yeX@3aV{ESR*^-I09Vf#(m@&Y+0LJdyJqP%a?f?SM z!13uX+k9re#k~xqS%v{ysiMDTKa6BcpzhDtvpB!T*Ofv+K{=k(uqN^vMR9g$vmwpP zo;H&IqKG!jGY2tJT?=IN1B~el=mnoo;Ymj6MZ)W9kAgvW zkM`;{JfYJZ%+f3&RPw8c8K@W8{i|)X(XF&I2>qAbT+Qd>>8Wz}i7QVQYI8jdGM0_r zEUyfQy~#S872l;>SpRQxwbtPo62C?YbWl8J)>^sdPB(f(>q}d|b>n{M2*cwN1eXz? z69>oqeVBFf;$>U`$wBb(F&p-MO<*x5mMUr5PI>=Yr9}IpP+kOfv%6|k==kK#k^Xeq zXU_wv!V@3>ujRyPw+ErqL{}P5mFhUnhwV-jt_{{M{k&#d>YNSLxL;k#x#* zJeWmhNPa*_f*4x*I>Y;Nwl=`oLBT(ShV4xh2B;mi1iKEVbx)X2y<^JPZQ+i;n%pzF zkd`8|Y*B!qmWrj_9?L`0KAe5kUD8Qx?2g0xV1syjaS+U6JVZ!0c%L()>>Wd;@OrMs z^4Gf4rtV}w8awl&g&OL~PSK9D*N_D~KKFEax%vv~t^*Jg7W}Hx{(=VnD8K}CDFO`m zG#f0i7w;^nFzB9Une^B9r}Q1nJ{zp7XWVO@?b7h@iR6YAbwhYee}N|*k=Uj0K{bH0|nmhR}M#%+Qivdpc*FpLHWdBuZiZWIN&YnpH+6zAI|7>s9B`bx>!^E z4VXcphMv{qhd=Qm5P*lh83BLKwusM%a@2J5np`#+>n$>Ngb&v=)ju-c2=7W@%gGxD zvq|%vtoDmr*Qa|&5XO++vXdqQbUcb&lDxDc~2$kpp#Y3}S_*qO+u1Mi#1;>H1V$ z{0iT{NWq zLU4oWWUK#rb@|CUE`;w4v*Mj>EJsB*Kx*HV_#TBhQq^mU#)-0HQSLl{10 zwH_Js_)waZZs9dAx#;$D^}*A3yi|uE&GVKj)usN8LBJtq>enu+exZconbht`Fn`j9dK=@4up@gP#BHAU zL@^JK1;+n%zT9nYMe=YiA~8a(AexsIcI~kLYnMpoN#`94ljFYX{moXIHi?Rz<W;dq;~H8vBe&<*L5_^+0V9z#-s9 z-1CW%vu7{xJ82%it*++u^H!~={rEnGRFJ?#Q4P9Hq&=ja; z+j%^BNTX^`deg;Gd;YX9u$sEjW3!GaoTpwF&rOY^Vi(iC!-cb|m(dr5Fe=Z#p;>OC z#EG|?!xb`&;rT;TxWvJT0YGf=AIvdMF{p#A{KQuG>(3s2HiZgp%geF2>KMZATL|zt zzZ_?fDLVkd?Y{YoO-bL@0Q%k3sQkNGE{PQ(jzOm@M=CDbUKNvG^W)>(g|*z1T%Tk; zP*u(ZQW4cU8zMm8{T-5O7OP@L&T<8(h^MS)ohdQ3(^_>8xZ`V)DLT6K1wZkv_r{8V z;OkSlf*?g?BhCZ`(x>1*70X5g9DErBK>O;)lQbYo@l(Iy`E~{#(DL4 zQEgb=-z|yU`Uhj4*rgFomv{5c9olUT_`nF=eO_xI7^yZ_F>JF7*Vr0LInmA9jCWwf zIXYoMS8;YDb`RTQ6E>@={eG`;@Byz$91k%=CbAxx>Dqc3a@L6TIAm)I3mVhiDvMmkLnU20Y`&Mnc&pwnpG?mE z)zg#4O{td{=EYKL78s}lv@I#~;5AxUb7QSxmh{8`$@6f3cho8tMJ{8rIe4_v@N=G&u0Cc!;p#|ZU@(^KU4FOiyC$mOiwQ}l9wLC z*0x-nfFR(DEmL54s7S-LDrrY2p_V4lyS(w#N#r3&yQ;4jLAar(|M=kI{%$pAoLbc1?9)3sZgg9K-rP5UZ1SxYt~oTu`>Q9fUOfx1AoW& z2MK)z3V!TsL!ls$k3~N&qb}Hxmc-90hN-n$FVezH`*7%Ab@3)u9(AyXtyz?lmbWk- z-@O=3PQy#z-Sp8N^I?}Pj4#>&t$fW>hcIFwJ5h`h(~7^pc)0k9bVE3 zU!YMvnd7Qwwb|)t5sOI=GAyO}>r`A(XJpjYzz02{ooV1mrCvyfbXr(6EgF6;BwedO zQp;N9ZjVZgMNoHSMT$V+(}fk1^*o*$y@5CZ|%C7fii&x zRWGxw*@e~O!IA2Fm)u3LGb*Q3EWQ5>fOw@7nDr<72B*ueA`a$5->Ww2NmLc7A$LFC z;D+L|b;Z(YgeV3F0^MrJD@KTaeK9cr29sS{^Q7Wr>jO1v6!Gux&~h0TyivFAqdp1` zH@s70PFL`|`^atWIB;(RPTu?hx3~8Z^wnYSnA?oi9Yx0YA+V5UiGNa*GC4G5-D z`MSI>pGDf9JkBXo-3~c`zxUOj1VDxIAdj^{xvy#Lt^SGU6wGA1{sESLW52@?9*mH5-Fe zv|XTp+TVpT8L=0@%tu;n0dJ1|kJBb(26B&^%`Kp~K;zW$!F&>)%kv4>+T(&`NUOre zw%Xcg`BJccv{>Fjv(XVYyFR|N z3=3wLu##^Sq^kO%1k?KH2%U0=&{^90^m!O;LEUupnu&X&4&0R@^k-@7!(klnIZjM| zd|*%3)4N~Cpt1Y!J}kVvh&(!;$d-w0O5Z02R3AygQfwdh(?|;i%C|@}T1*i5fuyATW zJP@W^Wwu5z&av2becUBPs}3iRL9@oX0?UHRZ4-X`Mpy=|ClV@4G_?J>?&reN26T6W zkzxQn(SI&h2DsSE8#*E)@Iqye;5jP>zvnFVCcN=@BX=Rpm^vglRG|M2b*7{L_dbkn z`d8mp_Brm3%%#%k!4*Ui1uV%fop%SLsx1Cbv2r6wGX4$Z*a~j zeWHKi0j0h-fd@A?6yG<+?MlBRd*^j=rFM~g^DGuiK2qw@>>EC-g~K=|2?CP4tG0`L z6HNo*yHO!FreZP&?yz0F0-{b-SmJtuhc@D8-^3o(IM=9yuj+-dX~%8UX5`P-zb%+r4c7NOF>H00N79j`o4BeI{XSa57 z+NVo5>6Dw)g99l)L+e%<5IIIq943p3ReQriE6In02A$jAW{Sjlcza91l4PfAb02U= zyvCiAxjjS^9l%x(0SU^WepTFGgxkglK$Ktk@8KNxCJ_eH zTo8-3cWkAwC8|!k;sM-7v0Plrs@MP6>V7n000+YU{kfy^B7#f^;ybx?=RHGR%uDNUh5UO~I`K zpG(ZTS1<1A5ujSPaOdt08#RFdm$evRCoYoq`G$!30N#yB>Rgu4XSyu24353pRuuv0SrhI`MI zQJeE~7kGRYwb~3B1F!=Mj58ssJtwiRfbz6H) z6Ci{@M2k;?#_~qJ)*;h|eo1r`0Qmp-92Mb2@5-}p!O@ZLJI9xmBGbBJVOxvECyHFJ zdi)`)M99ocZ}O{{Uu#$MK1)y6aB@!DKaR&-Q!TEcZ(C=PZ_YM;`NIt@Ng3B7-H+l! zCG+K1$h@TD=|C0Bcmd&Hu2!sDg>$WbsM&Voho@ZxkZ)C4o{+janUxxRaM#~?eQ!IT z3LTSxJWj0wF=(#bwh@du(y|41U*VRPu=}kKgFXVuItWpmI^juA zUu{;Ux^2K6S*;b1$_RBiQ=QMYX*;iuHcVf1Gd0~zgtL3~K9Vvl?iabKP;o0YL(prp zhle%4UdzL4{8DHz6pgGPhVXO9QiE{Li9yHl(Ua3!ANCw*gM&B#zkG3t|HJ%GjsPut zZ|7>BLbQK%=^k{^eZv8PKmv`*av9xH4AdIuz@L+W=pLSJCHpuWznxF{zPa@s&Z3qm zsBOaIM>WyhAO`g(M!s0j_iziZLp!FHNP_T zEu8OhyErNEjsr@wqdxf+`M;u#PY*z+8!t{(IM@O26V}=BynZDr)Ak_>nVf@SvcW~+ z9j^nTLTr(}W=Ah;ca6i3bfcNo>1roF&I{Zi5>|3NdC;UwI;U&%Z`t~Fw{HBk$QGaw zuX`9>e(iYhS~{Mo|GkbievHX>@bG(}<6gUMC2EV&YQ-$MVc8vR?{E$_!{MMWP*O_d z>LzMGelNJk3iMjG5;b2E48-jL5_h1q&S-aT zZgML~k<8ch$3Az3rF#vZWRNT^AtUeDI} zdG$)aD^uICz2H*?p>~lI+wacK<$4uYy|GIjX`KY}rjQt6@-*Rl?|dzA@3{|8PN$w_ zv0;DOo6IXvPg3%6sOWlmjNv)ZdLm0R%W~9yaBqLV-XDeQa<<+fRh%YplId@IJD}F| zu*kjtxa3J@ZaDV(;$y*lO3*TwvAu8D_O?k+JtuPD7K6^Oz2GT5FR<^u^YWBzoV@A? zFr#hhOi}I)(M_u@P>q0YEW!9wsJcoDZA$>8mY`9s-<>&%d6HI-pNydGN|oB5R2^) z9=LU7Vcjq1E6icb3f}1bCW~++Rziy%`Q8(DlR@2xqc?bV%3kin&sR$QYd(n|njHw3 z`0~7iu~h8S|586LfX;;6H5vBD#&cTYB({uTd*N}IHD$_5fI2)l?Q!}Rm5A7nu4&nd44A>X1lLbE+Igw$lzcyXmu$tICecD&N3{*uJ>n= zDuKeoyW1VO$}Re}HSUdbBYingM@!Y{NIOKI0R;L_i|!~oCS;Z_^3T0na7^ykHfbeR zWxrB&P5dC}v6}dCUuwYjf&h5IQUi0(V<)3m+w>};Q_P@pSBhshPU-^yRMV(0Luyv5bs6W66{I#Sz`vY}mQJDlE zBt9*JOc8yNU<~>|wl2~P)s^<^)ov}-CfnNbAlBIL2S1t-Acs82--&hsWMoQxe2hHWBbGr;h!Xzhg!C5s+%J$mQIEHS&QQSp!vez_CgTZ=F$p^N>H^KkrtRO`o|?^ePz)FNUuEVzPpW%0cG*0$ z5dp>>R982R%NG?~iAn!|@%5EqQAX{$G7K_EgMgHDm(mT=jkL5ucXtgcA>GnQN_W>N z-O|!XBPrdS#s2m_*R{`&^KXcG-xW_k_qvyEq#sSs+@i6P68AQuau7!K(}`JJao*o@1hAg^5gJLS?!O-;P?i0e-);Xry|_5$P_C?1Z_xag{pM_xRocSm z=GLubenafXR-Y)YBX&F+d~-+h$Ebf~j&hO_zsHs;i{xkt4Yi%cfzD|5zYqKu*AyOg z8meSMj$>1zxs__S>)HFV6$giCN=7w=No7XWt=O%PKbxu#G%?09kowIuqK>qTk?Y*r zNVcL{zXiqDdGCYP-)+9lIjflYAPNlZBdwvMh8eW8r!w97t_{9Q<}`g>q{(D5kf?lV zFWQZko1ee3(iO(UC^76L0+mX8l1yv&Qc`=R?WP?O-m7kld)&cgOh3W!px1jVfTRtUj_d zQ>GqkWHoBlJia8OXV}0YKHcT){X)?bp+4=|stpqbkNGh z?~mUk0o3^rVhhuUQ2!Rb^}PAlqn0CsDKmew=GkZu4ybb}NU5;jbNTNkw`kl#J8Jp$!B~bFE&H}ioP)v=%6b+XYjd0cDuRb8#8b#yzur44cR&Q?aOG) zof(_pbZ8ytz&3LSWp|6r+5gD%!n0G{KwhP5f^MhcoWs2RyHZG)boJl$*Y#tzzx@y0 zxxK$}u^Y9SY~oJk=5QCr1N=`EO|3LZ*Io86L7;I_rgHjEv2=y8rZ~d<)?iXa$Hlbv7S~DP{EbQ z1|&e9sUKX!1DI!}5Pfx`xb{cxpiTL&pQW4vgxyFuIyYyIB|5YkJ9kfyWapTML2grS?$g$)0&Mc-XdXT3KvMFuDNTz5H3yS zgU=tk(w#QN#;@uG=P2f(uSwK*gVNLKlOW}f)z9GL&j73yyVjd29>PMU!#$k$rDa8ak4ur$qXb}!yUDbyT2>5{w23#ehWC} zdsj!H2A%Jk17Hv;e-qNo8xcSk@|5v4W%gI-+*=Ogwh|wWdb6RFw_Fit0QY$Te}pnW z^cv`Dm|A(ntD&AuH&*K`wfeK2G2D@Qo1nN&j_jTi(@6hOZBAn>3@bJL%h+1ep0eM& z4)2Ln)1Iu41Pf^NWWT<<0f{#+>yp($tE-HUhOj*rhV5kqr!no^8o)AyYdYsD`52Hb zriwmqzqRMc@cLVrl{$VG2*i`4%7$+R_PtNRWbQMGD}H6x9WGM6%?u|kEv*z;>RYnI zpP$h|v86lYvI1L%;urmY(G<6I6H<~Fs+}zM9 z>9%NxJ{7#2VAaPM5q^WVIg;Kn;QM%W)6hG8_b$J!%B(N&0bb^-b?~!Zi~@1PBer_P zvq_yFOWCac@5Tf0N`l<}v1E_(k1q#)uxHq%k@hTV7~?Wn5}PXJZ-EHEGS3vl$o?-* zBjOn7#8#?J>eEX4pL=6@iv2(Icp&w53xal;7_l={qA}Q4;1I`4Io51q5O3XqtnQp+ z^6S@U>&N@$s|CO8J3VrtGsGN|=MN3T*&Qw6(~F#o(_Xaj`(0E6r`I)|QnKIvESUaU zYje7|{_QwnIYpuapd~#M6Sf+$Ex92Kewh57)D+c}4%z()}a3%psE?TGfsn?0d7Vs+7?h7fv8 z(vV;)&5nJss6XlDyeku*2mE&bP332n>EgOFC;YSzzC(m9T>t4^8cr{dm0Jt(TNo|* zL-X5l%f97yQYNi=tt5msgHPy++ZV^Okm;+SHM^Pbv-$JVha?TOkbbI?PJc5W$xv8n zaPR|MUNg;PsUM&ddvQl_DhXw3d(bjP0OqI!|FEn$+XS)uo9Yj|l{6oq&qBGnL-XV) zH37sK34n`!w|Zm8(hniJGwXssu>fcIZx*rWQKG_TBjh24>qt~);5>MC0TOIb?%QYA z!YQ7%l?paOCJ){HzEW!W(Tm@2A5Vt;g3z49$kAqgOf91%`B#p-@>+iyQruF;N4`zJ zHH&*~Ar}9hy{|&17%9BAUlLe!^la&A|AK_)Q>ukY1-`?AC{v)gRB8wxpukL2z;zdL z+kL?uAIG4Y4Ky>TKS+b>&(_rgDE8N3ZU$@(U@ivqHR z@0P9OB>tYizc$y;k|?D1*sbgdr0*zVqcE|H0F3}pcn{}?6b0bpQUQw4wnB(Xwo_HB z6R4F2{SFBz)+$c?R`tz5j=;tWs?oi|yb}JT0dV%@=#(4vqt-bnf(SN3TIwvx*sqVv zF~6@8f(GS-%Mm#M)?8MwBAN!dvSH`jz_9xrDkg{(gKY)Xy%ovsj*_E3L(R zr6L#PYoe%M9|@hI@D2ROWp=6jtT(aG4?uaZPKe`sQ^$#1H-}TuI7FN{zJMG_;8?Wd z_qIJ14^K_md|$Mv$RZgZnPU5!kQf?Sy<{gUHQ;Y)=cQ;qrU!&zomSZi9MD5RYUAAA}u1Y2MWN2#D&nKokSFjJT@trT4{BU%EY0NMa05V!;Tw@tkT%qo z%+5||NTMY>L+x4Nbt~iYSLmruxj?<8pU^9(d{TGUMie6lqvqKUKGSM4aSW#zBRV=y z0wwTcOre;Sw=Ul;_HDL6q|}@675Af2>L=C2UJ=)`klucRer7a&z~=MCy?rJSw5F0@ ztvb(?B#*6L1{Y^ZRQkNBv*LLinXxrpnk`DYn}?Kqjoj4sDJ^;I8$hKiNHjWl|A*>N zRU8I5AZ8?(0*Ai@SOe^*c=w8CLD}ZxN$+D#73#IYCk?32J(lzLlIRrT5r8X%ReB}& z9;AODpu$x7^HvPlYCme6LP#0-g~xpd_GrGd{qFqE&HBilgL#Yu$_w{?{b&8t}cDrc2}{7|68Lovt@_5|p5yqk*kr070M3zs|1Vs$k9*ee?A_tcB`cBE}f zp1($ENqGhcd#Y=hU-|X86TiUF_vdx1TNuCiLdYDz*ApTBClIB=Wc<0$znn@#K^a|7 zmL$+`VzbhI$O|h>udz-@&h&m6zx-pXR3=t#cr1!>aLa5Zb`t%E*2!!Z+XS3Ad^mpm zP7*-@QHgZ|Y)ac>&NC~N?{$WLGeJha2WX67DCDaaZh94@+7zUTc=J}74Ox*Cgz)P^ zU*egQkh4UK|H288LgI5+78lk$P-~fYw|KJ{OlST_)Z+s+r}=QMRH^m>|JIgIvEesb zy~!qYe{#{lq$`Z>yN~Uu`(pHhB**3|(wCfhm3{|QgL;iKqio-t-g$z2>+8)- zqxX~w2y%Zg`xm=!BojDbl5oF{?ef5L#0&KX&_+uCfkh9lD4POo-Y}q==+O=TN;;roMRIVnyXTO-I)rjFR;=? z{Gst@iRpBhG20oYk-T#GdVjVfMDzfonFgPpo@aEii zWqOQ|9sdsMO5R5OUBXwUC=T`wj{5L7_B7JyHTyitf-`EycQ=N+iyfHJ?i6+LZCE^ey8XP7_831*>sqsLQQT8R(_gln$ zv8dusMnsB=>j*knJ(bl&hf_xpkzX1BOk*WM_CWey%gn!RFr$~3m{IatYlHeb8_J`l zlKMA}yBPUwhUFpr1nw33#h8ZA=tS?w^ObRrG5L(0@L;Bp7|P|9m6Zy!J-v7q9rk#`^+~sxJBHDC zP|zK!Vi-2;?BtkQF30b#6(B2lg01uz4!dD?}D2T%8E*+B`(1!SJQ*hvn;B&^_1TNxcvWlF17i# zhQ%=d4;Fv`iD6|ZB&2yYQYfCwQJcn*MW@W}xTD8_s zG^If$%8oTeA{rQUYPA!2T<@>KWIiA@C~z9zpNZd^A{^lIuQJ6jqs@W%0aD?1?>NX* z9q$L)#bHE$wWT8miMg*6O5?f23 zl>83C^uDhUbWuE2SR0DWP<|eeHa+fTGGGg;RvjA<`%*`v_KcwR^MjvV<2`JZ82JkS zInIq&1>Gg24M!x0A<)Wmb7`d!$pm2EQ@Jhio)EHHc-@7*F`*si=GCS|l0}pH5`h1` zF>E1{wegsAL%+1&aBHsdMwYCA9sa44Z0~k-@UkHY`eS+(5WsrQ0y+3Ri)Nt zKnk6fxnp^K8<}mP(fnj(^=_$dZ9>zh$qlt_wh4PWf;U%9rR))7G!3rP+3*}bDf#E_ z^Tkk!#*>3rB0eV+X(F5Ro&d2#dV3k4>g3tIV(&V+bh}5kV$!B-1Sq zxbip~l)t`s)wnyi+p!yO7FsEc#xF}53pH?2!Z=#cM%u34k~Pr0+J~^S?FrW1yFvSy zEQbXcVP5^wIKi=(&Xm4BWbDSu-Tk)L|JrGK9GAD444SOi^u|lP1SZ;xxu*_9KApEO z1X(jV>8Cf!*1abjh%>w#-^$?Zjin-w)fhkQsT}8bWN#TMYK;352`O6C-paqXl|keg zv<6DH--PT~{&`u?v^?0V$f^u^4idfO)Mt0gbP$#2r?Zbla2bf4trzgm_nQx>LExQ8 z?dYUB4+xEaiiRZ#*jIBu(0tRP@l&P0)K^(+F1@+0b*F!;u4Vr7&Z}@gUzZ@-H%9t3 zAxf7ibvA$UE`72^H?5$f%+NvXvxw-1Z#mCGr6S~LEy7j8@ifCJNlr!r+ex^yvjTdl znIRE@HmzeU_s0uoHTA{y`dan-SBpJfMcbn1tOxD`8|y-0G+TX;0wG$J>xJr!GE(P> zQC1>_we`NN#Rb#BWznN`d>MUW_M!Q`-x|yZi9YX5H`EOk3sRG}hNG;-F64@=)aU+H zybv>1A$8A9^O&F{{$1TXNf9v=X5Y?HZg=rZ&@Zc`NN_+iP^;Ap&)>ak#u9ygADg!y z9+l(#Rscd&vKhDdDPElS(l%a?}|P8vosEDnPP??cujX51Y8Gkw%yt3p=Y5*|U4NQP~W`!!cwNY(>U&~v@d_bts=jQlQ5r~Q8v z$Rv;91O(uPLXwggqwjJe6MhaG&V3F=2>4HN3!VA5dBmQGwKPAa zKPvH`pR26bygM&19|&$f8~8CRC>xkX8n%U%Aky@7z+FX1n;wJWt*eAPVqQa=Da^=- zhK0}GeX;UuypqoH$pK_;s*RpUYcU;dOIi+xpM!B+W)01QidHRfivWyKh08IFkS%s) zr4C!nmV+G>U+bni9bY|y+~I;nWZLVv!cNHe7)0g3F6PywZ8sn7$LZ+dPdrs$;JPta zhP+)Q7*ZQAR7}P;FD^8{(QQ0`5HPV>8jkkcw%QK5BxlGr%-}L3YJC+rp}|ok zH$7O|v3YPTjzwI+v;^MS>x&-)?2cZa0`?^en`MgLXlZNf9b9eJ(W(?^3@3BR%7j0Q zIqIe-<+F>Tnq{&-_1uLE<4h-X=D%_ zRA?+RVxFdg>FQh$JQw)B)9qvet-SV&tmjMq?c*!)A0I&tsBz5U8lSwLr)8i|&q_ZY z&I=B=s#2lUg3tXsBURV(qujYYDn^11a~#!>GC};F$Ul2^H3WuED(2TRm@cH_b^3Sx znZK`Z>q8^2%65*o=lnGe1gAGmd>%yw?TnPiNbua^@}33Ce!Lk*(n1ye1)-I&A4h&r za+d!=v^EfN3C%Fekw(~4p^*+z9s-LMghg&;x&nyWclq%PbRUWi;v^)$9a(KgSZ^^o zkf16hJPseb(;1t%@@^%Te}e0gN;g$dRQ&7xkABb#R9MUA;!-)pU~zmr{vwX^sk6AU zX;kI4hbgloK7&dPFR#GOVF&rUQDr5++a2QpP;^@RF8rDD5quDh(jfxlI{X=pq4(LV zWlsOx?>|r>Dkx=bb=`W``3GukI1P-lNtK>5l#CK9GXY#SjB+iU2@MCn2i{IYJkxS^ zLgsA51}UEURVJY&Zz`!J1Lv`jVEl9e2%gx#K5y)|h2ASwJOAlL2>5vkf4{9z-CUs9A-DGyZ#j4Kp8;Fu zR1k=t8CbcbAL%u_mF5h+Qny}M8WTLrygMnl za|@iJ!l40wKYqJOMA#QFichOHQTQ1#IWalFk>T;Gzqshb$)^_+FK~KCMiS=kj>CqU zyoLs6j@GJ2^c5-UN_~~BikN@Cc&c+1f@lnkQCLwy6h`w8F~-2H2N9(Pjp|>*!f4Jt zlru#|oIbo4$AK{;LCZ`{ys${vgHI{OB$fk7B(G55Q?O@nmg_Z|OOJu8H?Jg?-xJt9 zPGx%-w+R?`lS?56DKBenzvOEYIQpyTt@kECEZ8KIf%633sZXcv0wwvrc*eF{Fg@a1 z_R;d%`g*MZ^4jX{dX>{Lucd{>d<6eEOH2|A@Jp;B&2=}ZinqSHI>sDF+rvG{bp&av;XbcL_ntzC*0z4tf5#PH<_!DZZlde*%3Jc3(Xa9awH*YN}>1de4Z+N}jtImMizzWZs^#CJQ z535g~2KNfEIcmUJI5?8}`}^tPsr-)FgQTQBddNr|5eO7vaTgACC=S1UM{;T^ zL*wOTY-(n7i?HuVQp-)Jxl__Oqi5pQ`kI`^Wy`0vZQsnroTcf^RHq`iKqIff;8Dd% z_=tVxscGX~zhYiiR$iyp^iyZOXAleLYF-tE<(0Z((K=$rX@Gn%5p!h|KU zyWDx-rF#WsTiZn0Yu!_3okVVO!IK$p$&VA$)AEvr>D+G)ng(CB+r?L!nVz-?0yt9_qB#>kru#4X|M_ZY#QVOc?tbOc3z2K(WPoFDrN%Y)6;MlmGGA|+FX#dQx z%11JkjFBxNt%;h`YNcHcF}M(aCdb)6)?dpZUktaZ9vs&a9xb)w#H^AO8k)sUwy zi8QDuG3DW;lpn88WBRL*IXCx>`{t|{uehDhEbj(IB{jQBm}<`o=ks{1?3_M6f^0sP z{u?5K1ZA(4756Mm+t!pHLTG7fa^v%h@Xz_ZIZMznVgi>V7@6>LzgkxJHe$qtD*??) z{)N8Z3c{^8boK^u(euWUzP0iE-X(08xOSWJg!MUV6Itnx6aLH;%&wl3d9gZ%^q#1S zbO&#fPhIV7^VTM&5gSMLL$`dZA5VWFK+HGa8);7zN21n#yp7r{WY{K) z`Nd@0_#4E_1lrzQ5ljtS`L{6wN|M;2RK9`XbfHpzrS&HiVBdXS=JX)Z0+A1kj93s8BT7eV>48mb~%?9IEJ$=sH)yUc$X+C2-5wD-yq*zz#dZO5D}BR8&d z!c6wp%EoGecH7>s1vN-CPwqNkwh6b6`zT#9r%19xsa4xcmL_%=sUB&wpJ+>%&3^@v*Ukd`5k__VYVfAZ8BAWCBk8w_t_E!JImaX=6jl^bD}c`Z6D2{Bqg69V<$`EN+mI34UYId#sW`D}R&(4bB4>JSPA8bKpCF zOxgIVR>9DTa9Gu|+8i=8eRe?QP$-5xkA%blRMY4+mK!PHYDq}7Z_~|JNoN+h#)=l2 znjFwLnCzXZ@+vHP&qG(K`qE7GKmm)LQzr^+_o}^Bl z?}plp$0<2COBEV75}f2u-v}(kYgF6jc&!bre+XMkMc!Fka9>J5K_~1j_rJBa=0(@x z22saoI7`maS0M4v9pXNZE2YNpC-B|oeaKgvt#Ii085qtfiRM@*b02Y-gXXit&H>T7HFa_Hy?+Uc{%t$iVzq)}ym zwji$}Ol|D7>#ak`?jfaJX28VJe#5y!m?6u#mqG1dnX@Vb^N|4xeqi}Rm%o}OPa(~0 zaZr)Vf!X1VoN3&e>9#p`edwg`WI*Yk)bg15U^-4OJ=mL6mkz^o_x5W;7B0S%UYhkr z?47k)odMGhP#Bud86v~5Rk;7edaDqnJ>6NlRHwM_d1Y#iUsl}aR}{XxRID4(#JM~* z%~CR?omP`4q+|8dUOn^Eyt5S%@wnt#1m9vsehA>iNX7C}j9~;EMMzmsMaU5nw-fYGS_gb8w8L z=y`S%oA*w)o$(0#`tX(Yek=OM(>kJL(U763QBFTe<=xF$h(xl#7vFY9O=alaorh^h zuzGYR14B63?~*T7DUwIWe9R_ie-%WKn-_`|sb%TUReRg9n4`J8rxmvo`Ak6%_2{9L zFegfX1MFF+RwwjJtok~tUTJpj9q(_D$J(@J5%K+mLr)6kbEm+f;_QUyYF zZrjj)dEcY;%W`shkteCD1rtJgDiu$yTj$7&=awp@J|BALd|7K+6;f35Ou;;fjvEcg1WM^+ zKVL%jg;6IUNPIvM?Z(254Ii8|m1Iz_=Vm&Cx&Hw~;PdbQ6M2#1VZW^gm13#o`3SMvR|t@1 zq@{AN8tN3Nq_6!%=ZLQ!7F6t}@GfboXfGD7YU~zd^wH7!==$hfSJKtJzf7BV$iQoV zzJ!m2%ie37J@!^`vky&nZJ;X$-NfL1d5KZ$?CjlrC__d?{)Y3bED;EdYy=f*KpB8& zd{mjve1pR`P96sz$5aGS9A3dVBW}ZPcg8GLG!qa)>2zwv~Q?SXMHx&*M6ehOL1SCdcriEa5URJICtZ!r5>O3p){%4M2Uge-y@Rj z_es#a|B~<2tGS)&@_OFx70?<1)5KSZhl`^Ek9ht(2HX%buqk%$Ni6Equ+{FC7$4tj ze0M~oTW^={9g+JwF0}M6>^pA5*qA!YLu~mdHXG+K6bL^4#WNluaDikpKsBfN9Q7Tk zsqkH17Fo%!ZSnWpd zmbsV=UfUEpd#~=4GSBPLD8IGu@*H$naObCZPhL@002_q}3W@|ZPD?!TRLW%P{U=-MegH#4Fc@v z!i??L3kML~66X;SoulL9(vKBU0vpd7{{)ea?I%4i60u(to@sP0DDD9@5X<0Cq*Q=v z7A)^iaRx9xA|TD|KXZ#N@L*L4Vk9+qaambnf4_n!pgfzyNPM1nJE5W4_*`iye0^g> zk0YTjFc9*fYqWT1ip$`PG7Xp6VDI+@8#y3`YH|(4kTxKOKG;a)0bu3mf$hME|GOej zi2*4Xf68;Mt)@m5C3=MyPmOouA3MUr!b+3wbT1pJ90VEb zfeeLhny0AAf*6u0{S7A`Ogt;*5u_&$j2iao)w0V~ZojgpXX92rg{>j81Bl11^c2n3 zSTvOAkqc({XdJvk8d8b*$7T7zlLokt=CP6d!EEo23S4302wz}Vu9XU320;Va9nMbe zO-)U+W2dH0FIJ-lIQ%aat&4JIa5^zVtI-YKz57N7*m1s%-))mLC>6Y(?O96%d;Ri8 zoNG-Egb>sODvyzoVA1eZ;(!1l=uc_~dgSR01e;!s+{R$?htLGW6$~Z@&H~}xB;O}_ z`+}Zh@(g{S(C|%qqp7C271+c8l4dkKEj20foUi>-d3-;9dm;jnCmHeoic&P(Ihdxl zGfg}mx)138;=$?Aky(>YxwN3^(1zOcXG(x5{vk;1A$L#P$(}N5P6pP2=op)?1N$K> zJ)tsr1nR+fNYF@G2!tIcBo?ua6^|`)63x@9HeF!Z&AL!M89(s5^22)S(oKH&vzI?n z#)7}#{HI%o6Lr}MYXXaplT z3E&!pBHm~5VeCzESLX*5-^KH3z%#NW{Z#$27CL>5yEsamO>+; zLEpYrtEjkGXg&=EzAA|YcK|~FlU&RT8wpke(!YP24;EXEfS-Vqfta600Kg~ETUwGG zl7O>nJzt#r1{RdvNBlbkA_{Dx&nMM!ur1nPFuFe!@*HVEDSfXnu32 z1`F_ALcyHsS0GRTNhBng6o^5IYC|}m8^ffOmrq{UFLdVSV5G&=gXUkpw&r zv%p~tS-1W9nGH{OSQ-Zf6UpZQYhZh(U#sInDRFRs^$>@=;`^ygSq9NDHs%1-IX+>LQZw8OtZxUut)Km%bohqOMjj;21>y;8DEK-L`1%BOzlRSM4j-IL zJqP0cP}c(li~H#3E~HwX4{ZH5OKq)|MHbXC7CaA5Trv5Y5(fi(@5PEZ2QXUaV5#;i zbMv3!homC5YvdE^@l}Oiy3Ft;)B{hZ=dzdjJmFWKBGJyE;Ly+QZ|i;Li$GoP-g2GD zfhrRV$RDxx~qS_zp%cMYLBJt zpta~yFj#9nt=DW_)R3HHwv5y8>r-r`1SK7qi$Vh<1`_O30NBSs%F(W6{E#>V2=j*8 ze0TJhVwp7Zp&;TjcZjz;bauAFZXkBmJE#=aXaYL016g(C_(>B{}bc^uBr;fkMmO{s8% z!GI3mOGE*OI|$YVTv}-ddjnmeb}&1RwOeTF0}_Eu;oID@%^ufxWX5T4yC-h>zIe5) zw6vDfbA5eXT~Ci0SWtB>ExO6c$!sy>I-BH&`>t^DMfjr7AvlLYV8t-a^?*NZ0h;F7 zlaffSM2Q74ACXFT8IyMcRf7WZQ9y6g57-gbL7lAfuLr>GnXGh%I*o{&=Ng(HMeOyZ znk^`8D6cD5+x0c8rd;(R8VT{30|PjKY#LXLGeRk&A0jQnKkBYNuukb^m*d!!6q3uk z^L7qq$3g?IjoA-TBJ`kB_I8|vt9nZ5GTn0{82}d3G>dGiOEf&kKOmnR?$@m;lZr1J zprIv*Blv)kv){6O1{zVoYO*W7E#x(VX0tmm>j}y%v`7_TEP_!+PPbdu*)Fzt9@V$s z4&m`#4`i$hu7-210qDc<#Sce~MVyB4j#nr+hv{GuykT39K+^*lvSHIKO(Io@BM$$y zUFdLOOzIZYe7yS}maMwyMR7xle*b7Z+x zk()D^YRImOoTT>V!S6m;k}lO%U`YrcEJ=Vu!ao`uSNM1cNhmR|%~u28)5*QZo`A02 z39N5F2%}54LuC?A3=7!k%LT>@lfgNyD!}zDloPyJR9qHIWbC81OPaXlh}DCahgkaz=D*5 z?q0q8{GcFL0`u)`3#c5WvABc7UjrllcgHmp)I*CRS6ex3YkS#Y?6G3^mm?3k?i(>h zX|QTF9X~(>gaKCm#kVXP5CJKIolX*0S8hR*(p}c{2uEx`?RrRi+O8(c>qrhk^rZ3J z@8X?eZ20%>8Ea;hjRjbGtI@(U>8`^>eLMM`R|<)IBF~orJ0)QPU+V)!k>bkkk(pRY zbF0iuCv9o813nZY`3R1##JB|my973Um@Zlq-~M5j3?=g+=jjJNvcSd8vMyiUDzZ09 zE&3b}nXTj#3ls49>V$IX^3$lBeR$e>zm*e}m}=L=w2msjz6THqmR7RUjoUSSVH|A@ zh3o|UA_YUDuJ~|8Vjezm%6JeYzYdB}0rBb{Fi;-CAPIzjN1F#$jS5^tTi2;*s@P+W zRn>MjYi-&Yf;;s6_8d^N(b?-w!BQ8kjm~yc&6WpM;>`@xpNEKm+c_VCKlLv`F?HAQF+hPM>T6~5lq>|QI3OF`jEdXiS?4yp)DXa-d+$(C_q z7eBD|gws=e^#RD%dii2rf-(q9?AhaVDoM%}@F@iK>mN@^%6>?}&%9NQ(V~))8d@+j zj-iR|;TZbke7wA){DZ!u#FpdScV zO#)_f{`W5~m^dZKR1Li58_*$@eTc%{uS&^J<^ioVD_kG&G1ijismOxUNZv>Jrh{d1 zkJAj7YZlvlulqUt{)J&>mQ1ZFSNo>Cv)&maXFPp|w3p+{(2qrmU%8gxyqp%DjR6gm z2hw0>utfljizpC8U$=QQI6Xvd1W}04)X~u=ZUE$RODPJTKTwF?Y_@=UB1#cBE8O3f z>}qdTFYjG9U_+MO5{pt+QZgv`Se&l7R1q5|lg~bb?w#3}{Js+qBz_;d*4zgPh!~G4 z%HGbQpjS9dK3I-K6&M{x_=> z+Gon93SC1=={9>6yHjpHnoQj01BK6u5Zmt-!HEz1Q#5bjM%H@7?i|rQx%R-pLw}p& zKA)@Yf^`r_+TbZcBe7pXSAgV)sg@8kL02TeC&gT1b8R$WN4byPh6Ofz0S~fyUs7M& z%)0XD;Xb!pnPnGuMH&at5T{qdS(rQmiB#45I`;!3z{RUFPEQM_Up=g1s>Ct0SnFDd zunbbE{v>mewl5|Bn7x>SoH>YR2cT*ue{_9bg$#V9k zfQcrK1qhFNod2IV$#8j)o?b9Q-I!U)>?&8FWUfshXOqS!B@zq%9X$<~E`iSQ zI)9Z1V!mWMR@h?c+b5(}RAagEP{yvyGmR}!O$pBwxy~Ou2ZZEQ4x^WHFY#avARl(d zq$2=HI1*^cq0r*E(9A=#Ssj=aypnmWuga2iQ_V6Xw@ehWMaF_sXClUwMkkaqpQIUq zObW!&fIT>i+~A6)vnJM~b&6>s1Lh+qmV_!?zGvj@r<*VXZc(vt2xJEM9@98> zS70~&z|!Ajsielx;LySKE8lq zb-H$j&h49vklq9;{1ANmCq9eU69BXT+bOUr#RRKSq*QPzz`N5EuXg*fcJc zc#tdneDDyeC0mvOKz@<1B11qH5sBUUQJfe2Jd>-q0OXkh%uMY2xY-)8sz0!p{#%bt z;y~qCxoH9u33l=75&Zb0psh^ggOW$Hzo`%hL^||cU0qY~<+B`Y!M}~&yq+ELppeDH z!csk4GJfiQlyJ%dH-%Im1U|>RCf-+SX z_aVld;X{!|eO|U4u+(+2u)|z;h&cnAHR^5j5qY z=1C1y=b?$8O{mtriVn|0PxHl0!fiM@aw;q-iH9Sj_AmeVnA$*>dA))D>nW+SsHDpJ zV47)xE?)v)GhzlCdhnfz(}5g!WfKSXkYxV;_st!IL4SeEnMig-h3ese+6xFvL(P_% znVCy4z;(~FvwEYM+s{rocYdaoV59%cd3$Ah(5~>k%z1n_8@GYout^S-RdchlvMllO z8E$2l(_TL~14XdDb~anYz!^LTFA}kvM}eC?6qZg;Pp2Y7Q(QrwkmP5mp)szs?85pk zh7bRf$>juwK6Ok5RHZ<|W@Fw%|6((E;Bmt_B|D6P^VWdG`;$>^l zY5nHL2bSmH$~>W&5tbIIwXS5GVmZDYo8k(FY&+5>FvLmi(B_kC@f1=9Hp4(tUK%W- zIFMf?H0T115B>s{ww=@0S=f+#YOjXN9|z~MUe^2_-fJnto`Bpkgdd9dd|fSn01V7O z4Dm-0HK0h+Y}w&GM37fR{BfVTZYOL~%~k;l;E3=uQ#?I-K~>_7g6Usc$mW1-s0`II z=xYqS=4yiaz=aaf4S`486qt~AIQ-3>$shx_%M>JbgO9&VVNGizeaAJVr~e)Vknb#<459`;N%K^N4`@7yB8{V4vf^UUl7@q>)u5kTz2VlFB^F#UnB-iX zk{`&&a%W%$80$XJ|M@?1Y%dvb=;2)76o%`hsjkhs%|>eS;#_HvK?#MsBkC#GarHkY zFMxIr^MVtmdaK*50O2P-3;oIHV2RCZ#up0@(?t;5J?MN4IupPR?E-^P=?{Ih{20s) z^UIHtj!tbp-_abR{(*tKni@?2`bfc&n0EaH2n6C@eS9oH(g`k#Ay3G`0TLzv-sc=N z@lfjs12&?><5y}lo`e4KiBBEKDTCr=YMN{_^=4-`IIf(1l~cI;1YgYeeg02;)BsG> zL#+tR?Z<<~XCOSG?S#$~HsIuB?O=iNVNt3I=x*HJn4x zsN8(%kOK1JDiu(I6?{(;g8Tqbd*AhBd$HA z4%Z?DB$dKI*gS($g0hve*x=)An=C9WsnC5{v8xyZpMPCSIpIegzlMLiT&;m3DZ@Y# zM-&rM5GK+A*q%kM0%;ImHG|ph9_5{V#i>9~%OJ=fUwdd(^6>CzKQ04QuvHeL)Z5^2 zzf$iDB_Sk&E1~@cNnlGJfwG?m05KfHxQD<}XMpt-mQREYciG1Hy)?w@!5`puj<=X}ri@j2henKLjXxLGe z%So<1M9Gh+$*)xQ{W5l4Uoy>Se6aH&+)$l&ac`7S?ttO)$d`tl<*X}kp2sN2PDg9_ z46w#9Kmfay9mqc-mhYTPtya&Vo};sAOd6Y(BTB``4>@sT8q%wXw?(-ktoSLzi^JihJjSsTo9l2INbFVs>La|D;8>hNlU-}QlH)1q z$e_e*ttR+-m+SgF@T`^SV=Q3`A*M50s`9JhveNp7@_yHS%|6{8Gyj+lC&UheKx=df zk&vhw{EH`F$uy)@98!17CA~)s6~PJz~{mdMtc?0))IK* z2|8U`!JH49G#Wch@|cFsNTbyHdrhdI;l42ro+zRKhZY9 z+8}&D=po17qck*6I^;mntM)d42V@FyWqD4?e5^1NiL)4@ zJ`T$%F67Xd1io!(=4L&sZyc(1fN+Z?`3P1^T?+`O+{&?NHS#7~R$GQROV5=0-Ratp z0pJ=i{?3n=>_#!j0P6|5chUr~%zxsIjE* zEzmKL5?Wz2O=H4h6|82i>3;H?I2-1gv$%{1p09Ye_jA}`F-&E#MZePFvjB^R<9b1dlv-XXIrg7ye;GI9f)3ZYx4;3x58*JJM?}HN!FzR9s5i2F)sWH2I)(QX7ormT2}2)PA->QKjdS-*S#?*<=Cr1~-69b@3@|;LD z)Pv@#lNa}WnrM!hau*9K7V>Y-8Us}Go6XG| zhs6-ad^WEh+rP!u(aURwT`@X7Sv7WxdHZkZGuqhGn?1#~8*AtqX|ovE%{v(MW?ArP zj`1HKwx?rPhsx`%3X6*Q0g)~$8>q71?z~{|>!K_V%QpdCeLHp2rB3o}XE#x^|4Jf0B=X7l`)ipc#*Lv75{*D{**^`Jzy7_u%_{TN`;AOtl>6@9 zyh717YlJ!}8hBBBw0^LzTDW-GJV0dy{#{*IHjrDmyXMflv#IGvrjA)K<6=+YAFf|8M&3+Tiytrbs3-jUz6FrG|3H;0m-n0I|*gp=U1i!2#uMLs*-LVBc4 zs{B1XjN2Gde&~y<`x-af&qQ?mYX=T8H6i`>y9=r3ic=p2k6$S9 z%Ys*u;&^JU_ph7D8FuG4UkE`D3eJJ*toV;BDH&UkBYJQaiNZB&W=4*dR<*zB7y8%G zQ|Mmw(5kQrWWcx6EW3hv9LnI*;*Xv!GqI1XjA?kP)D&uNzt9ot>4gs_LRR4q3T%rs zGZ@Xq2P%uBb-Ml-6in}#%prG7#OohQW1Sw~9#-D=#@z8^R*IY3=6#13BbKVm*T+Ky z@?V=UMR-5wd-$ce_U#)JIlx0t8qu_U9`=tnj8dg2%LxY zk`3SiD+mdEsZh3ie|Z1Uf>qaBSwSSB8zK1D=;;!XW8t~`{_UQaku z1fQ$bHz!AUGij=;y80@$%eH%ldeo}q`S8aM=QDbwiwK#5{NTiD*3=j7*w04Xz>aB% zzt-uVzgkb=_k4?3{qkdzgO+ETM#eKu&K2z?T{^WUh~c>KX2|~bZGFUuMT;PDm3w)h zjd=g%`ks(TpTYxo+eMa<=3*ZWqW@T$1HZ;`gWG3(0OzvlMt)ryiy4{PnPD7p;==SQ z&%UO3bH<|cAxN{&UHWC~fNqn!9F_K!#)2(G?%}SEM!t0;vGtT_+bbdzYX2A!1WpFM zTX)62?;>pzi-gD7__i1b6^s=gxd>4r;(z@l@6H~)x!{+F^Vgj%3^?Cmz4oT~sgO_6 zF^uk<^zPPqIO;liZ5J`RUug86lW?)1$&E;3wC9#=_ZnzpMG2U6rQ%ZlZ&}lwQ@>?w z6c6RU=dThqJiXJaT(H!%Wb4Gox6Ns0r&s;(Xi)!K)84(hn@p34RkDkasT*t zf*E)|+;q?cfka{rbud<8&fhabOZhtayAnjt#EMzG-REV?fv^h7MvH+Zh90`!*MU7@ zI*sH^VjdLi`3;ETo| z^uf^70qq}tukNnYtoHZ6k{|8u>pL>nkOCWtjc^z0QRT~AY?8PG#nIGBPAM=OFkZNR zxx|2l6ITm1YJ&hHTU!5l3kWRpb_{nV8UmYzNYp$|17SRc$S~Oy5T*{@Q+h@Mn9ltF zr~hBMF6KG;X#4XO)q(Lsb8T#3J5#ZBiA{0T;Xdopzy~Kt^x+Ok4bLdt|J5Zr+7fy2 zg+ALjDjNOQEeiU=SO+o|BNy1`0-CM8?HK(1{dn<%lS0Klqs0jo5PAmNjy|2hWlFVn}$UQ@n45c29YaWwoG)cS9~1bVPC@Ot#?hlI0pPe=(* z(YG-C^u!7|S-ws_20czK!>Z@(IKXPg~~OwAbfm$da+jx zR;_KZ9#%@%;%5$*QR*S$Hkx)J2r8fc%qu9$Mu`03*#`MT?}xJa+S{+6ii7baIc#EY zenX0g;3k4cuh|%Lv{sP)rPA$#)gFBo)i7FOd$H2)=YO9x)ZI8_)#lkQGf`ljbp3@%2x#7U zfj>IjgSzywHA$qXQr(8O2}wuEdha3+LUMOO)CdO6%}S{(9@o8m_E9TDGfMeAjb3iL zF;+JErO0yB-ZPWWPJ=r7m`}!Q5_)a$2K8$T^zS9|-uG!`J#*4rnRvZHvIws#_&1px zN}p*M&iJjmnvpvf_U*~_ubkMKHQ+s6~YDencvHOq?*qnZ&bN(9ADiiUYiqD zTsn?Zq;+!Ng2X3zkh;_FOYVZr_?@8go!G-1qFm6-Z@njiOh`n*9E4ap%mix&(Y|#h zbNEH(6rFulvNN=MuZGvHOToW+#|DmD+gPpHyx>@C^;vT-L+x9l{M8<0?yn!sdm{WD zFu(K1lX)af*`)??yr1D}r41iZ_n9IW+6WELW8+<0e=ib8-+7N%jpUm^*%H526LeRc zfZ7g2Su<}|gAAPZ3Tt?^AF%fjk|Or)cUAAM6e2G;+^^m|K{}-6CckXzNQsCwrQQYW znPWt??$yiRxY!qW=o&EJ(wwdpN%5JfuX4M4SRs&V3*$M3k)%}-w0youd2({Rm^rD= zO#AsdV*O<9ue+;*)+Xr+Z#+0Y`ICoXndB~r+AZl%iKo7`Z89}#U8(q7llwU-a1zK? zCZ8rL<39g$mw{c~p^-E7cal00P<2`LSf396{Prcjc!DGirl~}gG=7X+liMd&nk&*Z=NV;!BeYw80d{5@1eM|`OrR@^P6@%wO&Ix*L!5BUtYZ^zWnnY z?H#Sk5y$0iH8K6pJNKMPI`8>#CiibFl&8uDM3I4n8K;R(cn?PCi}!q+m;a%4gtq8hAS*f|9s(@Z?k9IU(nb$q#SyuI_<-ze}2BZGIUU zizD+ebkNDrT`BLPlqGH~=>FnV7$+_^OMn*dsxMX2ays93>oKtEr2%-dE0A(ZL4zK} z&JL@tP8xA{{w!@M3I?!7OuVyF52fR_2ByQPIU_leK0}AhG~5JRnI}i;3)bA9#|8CZ z??+uyFmRp{7;Z$X(Pir~*}Ev@`_!^saO6(L$uB&(SZ5D%7x+Me8bvgqknr>T;$w(s_LfmOG9Ior{m9iPhMsn9|Jlc5ZV1wR!ArT=xtRFO<{LlsO*-p9fwj(5_>i6;DNnE z@sA!kA&uVrmm3s?lj z+jRz`UL$~Wl|fObYtQN>RzAAR+#lxs8Z3Xr+;3%NC2%q*?~!2rU!W-jraP-{H4XzV z;(tebtsH=OucHvuC%bjBy2;XCYlsVQ0VmGSKCx5WUi}2#NKtSPsjWnz3#fL9`0da6 zPMGiJzxHQUOn2@zc|;~vhp;vYVL0+tu+A^D$CT|qX1q6cJH5s3mLI$^c5*j{`=SZ; zniIykLZ2EZZMqcCU$+NeZhvE7?@1_wj6sP3nR7Y}G zSJKMWAy(r1>>ddSRB`1|I8d|WGz)dE@i4fp6X$)oa93EY|6$Pyy6`U`6#d}oS^bP? zHd+h{zSv!r+M6bAX=QJ3zh0(};TUr^%2xmm$;u+iL<=1GS`H1$s6Hp$x@LniE3__o zu|CsKb9Ejyjmi#NeAF)D^l=#IPYSy#C-7W+=KYR5jD=xcQDHISfm|gU4X-BoNPqm> zaNL#uvSga(mcQ4{hcul`jU&G{D1!BIG8T-6W<${zBGTDtf%6^=Eb=uh+K3^;NG2j0 z*paQc2<5)5-ko5mwZ8T1DgHPQ zYK*7r0+fC1m15-D*8hxo7)q5k$etV+w^io8VI2SQMqk8Yp3@AJ zQeD^qYsZ=rO^N;sde>ZROY8pGMwJx*Q=QXY`3qKE+4pF1VP~R-1=4SJ6@i*VLIL%rk*TtIj#7{pElDeEI(n5OjIOEX=%!3lShEq z)BoFV#kaKI9|PNMONZhzV6($cRFBH{YR6f zM?_*@lj=S#a28CFZ97eaVNXv>3dUy{5VmRYLd?}YGZ89v@CApGq76A0#j3$`V^)o z<%=Dm=oNuAsQdh{_BgnZCU>Q~@7WkNuJ+gP=YIY_#wRGU{cVp+0NAE=Z2jSO-E4lbZ3R6hX({=v zeiD1I?Z@+CN9wV@DF&AZ?`w@5ho1nYyIqT-zjuZo!}T! zazT&TwtiaC=Sv_uU?l&EprVh}+f^hqBv!;wVz3jYiJ?l^2=&SG%i1jzHOI5@7eC^W z{N%&uQ7)7M^@Gt|<(V^n2ek3RX@yoZl|VtyN{xXp#7ux)$x6$qG)CP!V zrtwS1-&LkOhPR4VxdKs(4PJalvnWt;J8rp(umFrS>BPlw@1i!JA}}(ctk7Uj9uW?FtaMDq1|+rTXTh^#9x+K*@+kt1%dUZ~xA0 zaF^5pfYZwd)qiNf{p){7%~!f8uuAisE+*0$lW(HZ`mgRuPvNP0~ z^E##lw`QT}IVkK|Y3v%xY;{IXtX;_n+ZbZ~eY(y}p+)Qb@xGqJIqn}(V5z{8q38!p z2%(1%gUU}$F0E0f4}Gms=B|>oq4#=3=U8OqpRMJ=LJj8LkHv5%tW#)zs=MV!3zd!z zAOd`o$s{qF0X@b%oRRsT7xSLx2^t70$|7smF1T%>*3ouslR_p*(TMyP2MLIAEc5bT zE4h^U=%Ygkctg_x0Sf;D0O8Dq)2VmhvGjuAqj?rQOI*}ekL0Q>qMs<8gVkX;i!dlJDfc#!RmV6N_m9hRZAcnL_hs&nC*Rs!#3xdr|lQl6&DPElRhUG2;d09GM@pa z_(G6`d^1EswlFS68k6EshT;JVm38MNNhG-()CP>b7M zY`^Th`$U`)2Cd~q72E0LcTsuagdWcYvEZ*4?UN*F(oih(!b0_UiLKd_Q}Ul&`XnqM zDekw(IXNA#OkyNRJV)GQat9zV7XMZ30%IDSb& zsq;Sb0ywWyx4Iah2JHwBPHar2|XS>+6P!cX4hNd^zI)_WZ>+8Geo7MHoHZ3Nv zl?L`&qL}DS+oqm4?2lAs@8OS=^CqHU+cisD!Vb7Aj}DGZsg@8mXG^qxwZ6^^J~gdF zhNU8ocKujzC^(Y2Zm7|Kcol=|(;(t#{i8bl zWRYS3R))_DH%wF#auIdLF5n>5U}AAJ`co20sMrI%1-N(g)%nzzmvhY#GUz0Cpm!iP z_wSl)b#gJTudC3{#AcnLdZg;f8g}Zj?-Mvc%rl?{y8yK0LQiWjQ4V@<3*7#XX2-(M z=!UD#?0})nOa4sM{|@uaa=94fX9$<9<6Q2B$n>0cV;WL?8otDJR!_JtWx2eO9<dHzkp!NK1JIG~Q`W^F70=@*W`%-cHm=^rbx{>c73qC9`&e@P^ z2~%773|{JfdRB&@6}gY=x;=K9bdqj zQw*_pd+J>g9w?2Gj@DY;Uu!?yh(HP4>0+d}WM@SDdOZFfHft-;pPBCdLK=@B^+wJ369!egi4P2dVB`P!{% zvXDME&Lt@lz*D>gxwu;|<-1zJATgc=P)bCP=NoBR6z(4S=ATtSoyaT)uY5OW-fM&F zCOA<}Y-yzJK(X1E-)_+RZj}O#GD4HuRqB7JfRP~H-;AY`@iW2A6#T>`EfJ6~65t4V z`lrH^=5#svg+)P4LUU{H$DOzRGV&YNw`XIJnrhoHO$qX~Hg;K65X=eWures2O_W|L ztj#h(l0Q6#2F>Q=CTbO5^d{eA2=BG)!^^Mi;`Y=|;Bj`jGX!!03UWK{1v zArKTPhpL3y^-RTj_S_Xuvk~*yPFvRGTM#}y@$|grb zIUx+OC5#IBQ@Nn5nJk1!e(e6M9B3FIY-s_b1YBT;dqq^jiY+QmNW8!{F;}fDQZ{_2 zmtWBtrm*HPvR<=1<|2lwe0%CGXNHB>DmPfu2THBr-;fjK-fNx(%Ym?F0r48!o4H*@ zPk+;Osn<9ezrQ%Dg)SCGjIPHXlXeF&jG0b<76*XEHJ>64s61Tqm@e8S=9jer^Zw#@ zN?Bj4+{rPwZ@v15+ZHKUzt!j>7_I+B_?cPvgU9`l*QH4Bp_1;LWYH^HB#krn&us@r zD$Qm{E>W+bnN{?jbpqLziw00JtL5e89-qd?S+&07a`DZB$LydlPM?};&5SV3&n(Z9kpjP$ck;2V(!d|SmN(^E=v(M@qsb(I&$xRoEHn?^3!{9vF73x-aND zh=Wsn$%@13zj(2R{KZ4@@BqylW;SDPT!}HxfW|yC=ZhC8b3xS`kD6UQ1}`wo_y`6Z zWRG~9S5R$XoY3hKnP=H?IL9r-K|N-npbE(Zg_F|~w4ohiDh~*iOs#3?4!Um7%}V{n zg+5jBbA(oGx`J4IR4+fmy5#KE96y&t)*nY5LvPIcF@!i`Sa?T7C_pcW1f=MDZW>u(h2eY4#^V0M1ubMcc}`G0EgtCt;>e zD=c8IUUNh@)Wxw5<5=*V-pd!S5wpm;<8I>@n%YFMnR$2N1gu%2n_4fuoC$ywwz1Ak zq_c8F_BV)u7uza`DCbTWS+6Y#kU< z!v}i~fVz=emvd$wbIVG+`g%wjL04ZEa!bx@h)sq-j_8JO&j32Ju75{U^CK7o+gNVKElHec~u(af4KQa&1C0T>m`{^DR8Vv?xoZwK8%^g)LJwWV^)MP!6c|BsbWQT zjX?CHpI<+eamNHl;+BjnY%8*?jc$3!Tm!|00W$o1BiUEX*lb^bONe{;P1lzF?>}7u zy66Mwq&ANvw#gekC{9PMu%E7qu5BO*A%2Iv+csmb9sp=8)1fu0*?PEJoc4@lGOTEb zu%@IcrJYz{vkj&kc~vrGw@(Ym2PX+V&pGfern@ z#0%l;DJk3qn|lw^Y#?}sWc~)?6%<>y{-?TZ-3Aaau}?-fZo3UJ;m}DnHf0Wo1xSP4 zU7^{K?hBS=;sIh}NOZiW41%`{SEk+9oUPpGk?OpyZ{(d=*Ui$M7vR4kV7!7pwg`#2 z&_>)y0;^|0RNc%ZH}RD7AXzfhuPv!Ha9rZRFNJqxE$!i+BjCwXH&g#nZaO@lS)-Sh z*jpAp*%`tDvW|B?Q=lV!fl-@cNDZEl=qtASC3_3|p3A?eX1bW@L290TYbK%?fSvNl zum=n}Gf6YpbM1eKAw5EQ-M23lW(OJ&$-2DHpQ9G zYfXSlN~I??EjC6mWXGZqn<*vW7IRu*aNj{19P6JqW$!%=Tyx$YQQ7d#gPr()ei6bE aRDNag%0tf6Yrv&6$WYf*r~ImG?EeB2W!94b literal 0 HcmV?d00001 diff --git a/muk_web_export_attachment/static/description/index.html b/muk_web_export_attachment/static/description/index.html new file mode 100644 index 0000000..f564ccf --- /dev/null +++ b/muk_web_export_attachment/static/description/index.html @@ -0,0 +1,35 @@ +
+
+

Export Odoo Attachments

+

Converting Odoo Attachments to PDF

+

MuK IT GmbH - + www.mukit.at

+
+ +
+
+
+ +
+
+
+

Overview

+

Adds a button to the Attachment Sidebar to + export the Odoo Attachment.

+
+
+
+ +
+

Help and Support

+ + +
\ No newline at end of file diff --git a/muk_web_export_attachment/static/description/logo.png b/muk_web_export_attachment/static/description/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9427ce33ea36c2ec961356d01d612bae02d48ce2 GIT binary patch literal 38064 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 literal 0 HcmV?d00001 diff --git a/muk_web_export_attachment/static/description/screenshot.png b/muk_web_export_attachment/static/description/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..59bb6502367b830b441633fec2eab84abca596a5 GIT binary patch literal 8003 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 JK`7eB{12s(jcxz{ literal 0 HcmV?d00001 diff --git a/muk_web_export_attachment/static/src/js/sidebar_export.js b/muk_web_export_attachment/static/src/js/sidebar_export.js new file mode 100644 index 0000000..16bffba --- /dev/null +++ b/muk_web_export_attachment/static/src/js/sidebar_export.js @@ -0,0 +1,68 @@ +/********************************************************************************** +* +* Copyright (C) 2017 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +odoo.define('muk_export_attachment.SidebarPreview', function (require) { +"use strict"; + +var core = require('web.core'); +var session = require('web.session'); +var Sidebar = require('web.Sidebar'); +var Model = require("web.Model"); + +var PreviewGenerator = require('muk_preview.PreviewGenerator'); +var PreviewDialog = require('muk_preview.PreviewDialog'); + +var Attachment = new Model('ir.attachment', session.user_context); + +var QWeb = core.qweb; +var _t = core._t; + +Sidebar.include({ + on_attachments_loaded: function(attachments) { + var exportable = false; + _.each(attachments , function(attachment) { + if(['doc', 'docx', 'docm', 'odt', 'xls', 'xlsx', 'xlsm', 'ods', + 'ppt', 'pptx', 'pptm', 'odp'].includes((/(?:\.([^.]+))?$/).exec(attachment.name)[1])) { + attachment.exportable = 'exportable'; + exportable = true; + } else { + attachment.exportable = 'unexportable'; + } + }); + if(!exportable) { + _.each(attachments , function(attachment) { + attachment.exportable = 'nothing-exportable'; + }); + } + this._super(attachments); + this.$el.find('.o_sidebar_export_attachment').click(this.on_attachment_export); + }, + on_attachment_export: function(e) { + e.preventDefault(); + e.stopPropagation(); + var $target = $(e.currentTarget); + var filename = $target.data("name"); + window.location.href = '/web/export/pdf?' + $.param({ + 'url': $target.data("url"), + 'filename': filename.substr(0, filename.lastIndexOf('.')) + ".pdf", + }); + } +}); + +}); \ No newline at end of file diff --git a/muk_web_export_attachment/static/src/less/sidebar_export.less b/muk_web_export_attachment/static/src/less/sidebar_export.less new file mode 100644 index 0000000..ffb6532 --- /dev/null +++ b/muk_web_export_attachment/static/src/less/sidebar_export.less @@ -0,0 +1,41 @@ +/********************************************************************************** +* +* Copyright (C) 2017 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +.o_cp_sidebar { + .o_sidebar_export_attachment { + right: -12px; + position: relative; + } + + .unexportable { + visibility: hidden; + } + + .nothing-exportable { + display: none; + } + + .open .dropdown-menu > li > a { + display: inline-block; + } + + .o_sidebar_delete_attachment { + top: 3px; + } +} diff --git a/muk_web_export_attachment/static/src/xml/sidebar_preview.xml b/muk_web_export_attachment/static/src/xml/sidebar_preview.xml new file mode 100644 index 0000000..39a89e7 --- /dev/null +++ b/muk_web_export_attachment/static/src/xml/sidebar_preview.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/muk_web_preview/static/src/xml/preview_widgets.xml b/muk_web_export_attachment/template/assets.xml similarity index 67% rename from muk_web_preview/static/src/xml/preview_widgets.xml rename to muk_web_export_attachment/template/assets.xml index 5d9ba14..8ef8c2f 100644 --- a/muk_web_preview/static/src/xml/preview_widgets.xml +++ b/muk_web_export_attachment/template/assets.xml @@ -17,13 +17,11 @@ along with this program. If not, see . --> - - - -
- - -
-
-
-
\ No newline at end of file + +